??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一区在线观看,亚洲熟妇无码av另类vr影视,亚洲美女在线国产http://www.tkk7.com/errorfun/articles/86562.htmlerrorfunerrorfunSat, 09 Dec 2006 10:06:00 GMThttp://www.tkk7.com/errorfun/articles/86562.htmlhttp://www.tkk7.com/errorfun/comments/86562.htmlhttp://www.tkk7.com/errorfun/articles/86562.html#Feedback0http://www.tkk7.com/errorfun/comments/commentRss/86562.htmlhttp://www.tkk7.com/errorfun/services/trackbacks/86562.html [出处:http://www.yesky.com/ServerIndex/77131904641400832/20040426/1791610.shtml]

密钥密码pȝ介绍

  q篇文章向大安qCNetscape公司是如何用RSA的公用密钥密码系l来实现因特|安全的。Netscape的安全套接层的实现就利用了这文章中所讨论的技术?br />  RSA的公用密钥密码系l广泛地应用于计机工业的认证和加密斚w。Netscape得到RSA数据安全公司的许可可以用公用密钥密码系l以及其它品,其是认证方面的产品?br />  公用密钥加密技术用不对称的密钥来加密和解密,每对密钥包含一个公钥和一个私钥,公钥是公开Q而且q泛分布的,而私钥从来不公开Q只有自q道?br />  用公钥加密的数据只有U钥才能解密Q相反的Q用U钥加密的数据只有公钥才能解密,正是q种不对U性才使得公用密钥密码pȝ那么有用?/font>

使用公用密钥密码pȝq行认证

  认证是一个验证n份的q程Q目的是使一个实体能够确信对Ҏ(gu)他所声称的实体。下面的例子包括Alice和BobQƈ且向我们演示了如何用公用密钥密码系l来L的验证n份。下面的 {something}key 表示something 已经用密?key 加密或解密?br />  假设Alice要认证BobQBob有一个密钥对Q即一个公钥和一个私钥,Bob透露lAlice他的公钥Q至于他是怎么做的在以后讨论Q。然后Alice产生一D随机的消息Q然后把它发lBob?br />   A-->B random--message

  Bob用自qU钥来加密这D|息,然后把加密后的消息返回给Alice?br />  
B-->A {random--message}bobs--private--key

  Alice接到了这D|息,然后用Bob以前发过来的公钥来解密。她把解密后的消息和原始的消息做比较Q如果匹配的话,她就知道自己正在和Bob通信。一个入侵者应该不知道Bob的私钥,因此׃能正的加密那段A(ch)lice要检查的随机消息?br />  但是Q等一下,q有......
  除非你确切的知道你在加密什么,否则用你的私钥加密一些东西,然后发给别h永远不是一件好事。这是因为加密后的数据可能会(x)背叛你(CQ只有你能加密,因ؓ(f)只有你才有密钥)?br />  所以,我们不加密Alice发送的原始消息Q取而代之的是,由Bob构造一个消息信息段Q然后加密它。消息信息段是从随机消息中以某种方式提取出来的,q且h以下特点Q?br />  
信息D很N{QQ何假冒Bob的h不能从信息段得到原始消息
      假冒者无法找到具有相同信息段的不同消?/u>

  
通过使用信息D,Bob能够保护自己。他首先计算出Alice发给他的随机消息的信息段q加密,然后把加密后的信息段q回lAliceQAlice可以计算出相同的信息D,通过解密Bob的消息然后对比一下就可以认证Bob的n份?br />
      q一?.....
  刚才描述的技术称为数字签名。Bob为Alice产生的消息签名,q样做其实和加密Alice产生的随机消息一样危险。因此我们的认证协议需要一ơ以上的变Ş。部分(或者全部)的数据需要由Bob产生?br />  
A-->B hello,are you bob?
  B-->A Alice,This Is bob{digest[Alice,This Is Bob]}bobs-private-key

  当Bob使用q个协议的时候,他知道自己发lAlice的是什么消息,q且不介意签名。他首先发送没有加密的消息“Alice,This Is Bob。”然后发送加密的信息DcAlice能够L的判断Bob是BobQƈ且Bob没有{Q何他不愿意签的东ѝ?/font>


分发公钥

  Bob如何以一U可信赖的方式分发他的公钥呢Q我们假设认证协议是q个样子的:(x)
  
A-->B hello
  B-->A Hi, I'm Bob, bobs-public-key
  A-->B prove it
  B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key

  如果使用q个协议的话QQ何h都可以是Bob。你需要的只是一个公钥和U钥Q你跟Alice慌称你是BobQ接着你用自己的公钥代替Bob的公钥,然后你通过用你的私钥加密的东西来证明,q样Alice׃能分辨出你不是Bob?br />  Z解决q个问题Q标准化l织发明了一个叫做证书的东西Q一个证书包括下面的一些内容:(x)
  
证书发行者的名字
  
证书发送给的团?
  
主题的公?
  旉?/u>


  证书是由证书发行者的U钥{֐的,每个人都知道证书发行者的公钥Q即证书发行者有一个证书,{等Q。证书是一U把公钥l定到名字的标准方式?br />  通过使用证书q种技术,每个人都可以通过查Bob的证书来判断Bob是不是伪造的。假设Bob严格的控制着他的U钥Qƈ且的是Bob得到了他的证书,那么一切都好。下面是修订后的协议Q?br />  
A-->B hello
  B-->A Hi, I'm Bob, bobs-certificate
  A-->B prove it
  B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key

  当Alice收到Bob的第一条消息,她可以检查证书,核实{֐Q如上,使用信息D和公钥加密Q,然后Q核实主题(Bob的名字)来判断那是不是真的Bob。这样她q信公钥是Bob的公钥,然后要求Bob证明他的w䆾。Bob则重新进行一ơ上面的相同q程Q计消息的信息D,{֐之后发给AliceQAlice可以用从证书得到的公钥检查Bob的消息信息段Q从而判断Bob的n份?br />
一个坏家伙 - 我们不妨叫他Mallet - 可以做下面的事情Q?br />  
A-->M hello
  M-->A Hi, I'm Bob, bobs-certificate
  A-->M prove it
  M-->A 不能建立一个o(h)甲相信的从乙的消息?br />

  但是Mallet在最后的消息中不能满Alice。Mallet没有Bob的私钥,所以他无法构造一条Alice怿来自Bob的消息?/font>

交换密码

  一旦Alice认证了BobQ她可以做另外一件事-她能发给一条只有Bob才能解码的消息:(x)
  
A-->B {secret}bobs-public-key

  发现q个U密的唯一Ҏ(gu)是用Bob的私钥来解密上面的消息,交换U密是公用密钥密码系l的另一U强大的用法。即使Alice和Bob之间的通信被监视,除了BobQ也没有够得到秘密?br />  q项技术加Z因特|的安全性,它把q个密码当作另一个密钥,但是q时它是对称性密码系l算法的密钥Q如DESQRC4QIDEAQ。Alice知道q个U密Q因是自己在发送给Bob之前产生的。Bob知道q个U密Q因为Bob有私钥,能够解密Alice的消息。因Z们都知道q个U密Q所以他们就可以初始化一个对U的密码法然后开始传输用它加密的消息。下面是订正的协议:(x)
  
A-->B hello
  B-->A Hi, I'm Bob, bobs-certificate
  A-->B prove it
  B-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
  A-->B ok bob, here is a secret {secret} bobs-public-key
  B-->A {some message}secret-key


  secret-key 的计取决于协议的定义,但是它可以简化成一?secret 的副本?br />  你说什么?
  Mallet的袋子里有很多诡计。虽然Mallet不能发现Alice和Bob交换的秘密,但是他可以干预ƈ且破坏他们的对话。D例来_(d)如果Mallet位于Alice和BobQ他可以选择让大多数的消息返回以及向前l传输没有改变,但是破坏了特定位的消息(q对他来说很Ҏ(gu)Q因Z知道Alice和Bob之间通信的协议)?br />  
A-->M hello
  M-->B hello
B-->M Hi, I'm Bob, bobs-certificate
  M-->A Hi, I'm Bob, bobs-certificate
  A-->M prove it
  M-->B prove it
  B-->M Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
  M-->A Alice, This Is bob{ digest[Alice, This Is Bob] } bobs-private-key
  A-->M ok bob, here is a secret {secret} bobs-public-key
  M-->B ok bob, here is a secret {secret} bobs-public-key
  B-->M {some message}secret-key
  M-->A Garble[ {some message}secret-key ]


  Mallet一直让数据没有改变的通过Q直到Alice和Bob分n一个秘密。然后Mallet通过改变Bob发送给Alice的消息来q入q个方式中。这时候Alice是相信Bob的,因此她就可能怿q个改变的消息,然后按照它来做。注意Malletq不知道q个U密-他能做的所有事是破坏用这个秘密的密钥加密的数据。他可能不能利用q个协议刉出一条有效的消息Q但是下一ơ,他可能幸q一炏V?br />  Z防止q种破坏QAlice和Bob在他们的协议中引入了一U消息认证码QMACQ。MAC是根据秘密的密钥和传输的数据计算出来的,上面描述的信息段法的属性正好可以用于构造抵抗Mallet的MAC功能?br />  MAC := Digest[ some message, secret ]

  因ؓ(f)Mallet不知道这个秘密的密钥Q所以他无法计算个信息段的正数倹{即使Mallet随机的改变消息,如果信息D|据很大的话,他成功的可能性也很小。D例来_(d)通过使用MD5QRSA公司发明的一U很好的密码信息D늮法)QAlice和Bob能和他们的消息一起发?28位的MAC倹{Mallet猜中q个正确的MAC值的几率?/18Q?46Q?44Q?73Q?09Q?51Q?16Q约{于零?br />  下面是样本协议,又订正了一ơ:(x)
  A-->B hello
  B-->A Hi, I'm Bob, bobs-certificate
  A-->B prove it
  B-->A {digest[Alice, This Is Bob] } bobs-private-key
 ok bob, here is a secret {secret} bobs-public-key
  {some message,MAC}secret-key

  Mallet现在有麻烦了QMallet可以改变M的消息,但是MAC的计将揭露他的行ؓ(f)。Alice和Bob能发C造的MAC值ƈ停止?x)话QMallet׃能伪造Bob的消息了?/font>

  q是什么时候的事?

  最后的Q但是同样重要的是要防范Mallet鹦鹉学舌。如果Mallet记录了会(x)话的q程Q他虽然可能不知道会(x)话的内容Q但是他可以重放q些?x)话。实际上QMallet能在Alice和Bob之间做一些真正龌龊的事。解决的办法是从会(x)话的双方因如随机因素?br />



errorfun 2006-12-09 18:06 发表评论
]]>
[转]SSL、TLS、WTLS原理http://www.tkk7.com/errorfun/articles/86561.htmlerrorfunerrorfunSat, 09 Dec 2006 10:05:00 GMThttp://www.tkk7.com/errorfun/articles/86561.htmlhttp://www.tkk7.com/errorfun/comments/86561.htmlhttp://www.tkk7.com/errorfun/articles/86561.html#Feedback0http://www.tkk7.com/errorfun/comments/commentRss/86561.htmlhttp://www.tkk7.com/errorfun/services/trackbacks/86561.html[出处Q?a >http://www.chinaitlab.com/www/news/article_show.asp?id=7319]

一 前言
  
  首先要澄清一下名字的hQ?
  1 SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议。这U协议在WEB上获得了q泛的应用?
  2 IETF(www.ietf.org)SSL作了标准化,即RFC2246,q将其称为TLSQTransport Layer SecurityQ,从技术上ԌTLS1.0与SSL3.0的差别非常微。由于本文中没有涉及两者间的细差别,本文中这两个名字{h(hun)?
  3 在WAP的环境下Q由于手机及手持讑֤的处理和存储能力有限Qwap论坛Qwww.wapforum.orgQ在TLS的基上做?..S协议QWireless Transport Layer SecurityQ,以适应无线的特D环境?
  
  我们从各式各L(fng)文章中得知,SSL可以用于保密的传输,q样我们与web server之间传输的消息便是“安全的”?
  而这U“安全”究竟是怎么实现的,最l有能实现多大程度的保密Q本文希望能用通俗的语a阐明其实现原理?
  
  
?整体l构概览
  
  SSL是一个介于HTTP协议与TCP之间的一个可选层Q其位置大致如下Q?
  
  Q-Q-Q-Q-Q?
  | HTTP |
  Q-Q-Q-Q-Q?
  | SSL |
  Q-Q-Q-Q-Q?
  | TCP |
  Q-Q-Q-Q-Q?
  | IP |
  Q-Q-Q-Q-Q?
  
  如果利用SSL协议来访问网,其步骤如下:(x)
  用户Q在览器的地址栏里输入https://www.sslserver.com
  HTTP层:(x)用户需求翻译成HTTPhQ如
  GET /index.htm HTTP/1.1
  Host http://www.sslserver.com

  
  SSL层:(x)借助下层协议的的信道安全的协商出一份加密密钥,q用此密钥来加密HTTPh?
  TCP层:(x)与web server?43端口建立q接Q传递SSL处理后的数据?
  
  接收端与此过E相反?
  
  SSL在TCP之上建立了一个加密通道Q通过q一层的数据l过了加密,因此辑ֈ保密的效果?
  
  SSL协议分ؓ(f)两部分:(x)Handshake Protocol和Record Protocol,。其中Handshake Protocol用来协商密钥Q协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥?Record Protocol则定义了传输的格式?
  
  
?需要的加密斚w的基知识

  了解SSL原理需要一点点加密的概念,q里把需要的概念做一下简单阐qͼ(x)
  
  加密一般分Zc,对称加密Q非对称加密及单向散列函数?
  
  对称加密Q又分分l密码和序列密码?
  分组密码是将明文按一定的位长分组Q明文组l过加密q算得到密文l,密文l经q解密运?
  Q加密运的逆运)Q还原成明文l?
  序列密码是指利用量的密钥(制ؕ元素Q通过某种复杂的运(密码法Q生大量的伪随Z,用于Ҏ(gu)文位的加密?
  解密是指用同L(fng)密钥和密码算法及与加密相同的伪随Z,用以q原明文位流?
  
  CBC(Cipher Block Chaining)模式q个词在分组密码中经怼(x)用到Q它是指一个明文分l在被加密之前要与前一个的密文分组q行异或q算。当加密法用于此模式的时候除密钥外,q需协商一个初始化向量QIVQ,q个IV没有实际意义Q只是在W一ơ计的时候需要用到而已。采用这U模式的话安全性会(x)有所提高?
  
  分组密码的典型例子ؓ(f)DES,RC5,IDEA?
  序列密码的典型例子ؓ(f)RC4?
  
  公钥加密Q?/strong>
  单的说就是加密密钥与解密密钥不同Q分U钥和公钥。这U方法大多用于密钥交换,RSA便是一个我们熟知的例子?
  q有一个常用的UCDHQ它只能用于密钥交换Q不能用来加密?
  
  单向散列函数Q?
  ׃信道本n的干扰和Zؓ(f)的破坏,接受到的信息可能与原来发出的信息不同Q一个通用的办法就是加入校验码?
  单向散列函数便可用于此用途,一个典型的例子是我们熟知的MD5,它?28位的摘要Q在现实中用的更多的是安全散列算法(SHAQ,SHA的早期版本存在问题,目前用的实际是SHAQ?Q它可以产生160位的摘要Q因此比128位散列更能有效抵抗穷举攻凅R?
  
  ׃单向散列的算法都是公开的,所以其它h可以先改动原文,再生成另外一份摘要。解册个问题的办法可以通过HMACQRFC 2104Q?它包含了一个密钥,只有拥有相同密钥的h才能鉴别q个散列?
  
  
?密钥协商q程
  
  ׃对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥法协商Z份密钥,然后通过对称加密来通信Q当ӞZ保证数据的完整性,在加密前要先l过HMAC的处理?
  
  
  SSL~省只进行server端的认证Q客L(fng)的认证是可选的。以下是其流E图Q摘自TLS协议Q?
  
  
  Client Server
  
  Clienth*llo -------->
  Serverh*llo
  Certificate*
  ServerKeyExchange*
  CertificateRequest*
  <-------- Serverh*lloDone
  Certificate*
  ClientKeyExchange
  CertificateVerify*
  [ChangeCipherSpec]
  Finished -------->
  [ChangeCipherSpec]
  <-------- Finished
  Application Data <-------> Application Data
  
  单的说便是:(x)SSL客户端(也是TCP的客L(fng)Q在TCP链接建立之后Q发Z个Clienth*llo来发h手,q个消息里面包含了自己可实现的算法列表和其它一些需要的消息QSSL的服务器端会(x)回应一个Serverh*lloQ这里面定了这ơ通信所需要的法Q然后发q去自己的证书(里面包含了n份和自己的公钥)。Client在收到这个消息后?x)生成一个秘密消息,用SSL服务器的公钥加密后传q去QSSL服务器端用自qU钥解密后,?x)话密钥协商成功Q双方可以用同一份会(x)话密钥来通信了?
  
  
?密钥协商的Ş象化比喻
  
  如果上面的说明不够清晎ͼq里我们用个形象的比喻,我们假设A与B通信QA是SSL客户端,B是SSL服务器端Q加密后的消息放在方括号[]里,以突出明文消息的区别。双方的处理动作的说明用圆括PQ括赗?
  
  AQ我惛_你安全的通话Q我q里的对U加密算法有DES,RC5,密钥交换法有RSA和DHQ摘要算法有MD5和SHA?
  
  BQ我们用DESQRSAQSHAq对l合好了?
  q是我的证书Q里面有我的名字和公钥,你拿去验证一下我的n份(把证书发lAQ?
  目前没有别的可说的了?
  
  AQ(查看证书上B的名字是否无误,q过手头早已有的CA的证书验证了B的证书的真实性,如果其中一Ҏ(gu)误,发出警告q断开q接Q这一步保证了B的公钥的真实性)
  Q生一份秘密消息,q䆾U密消息处理后将用作加密密钥Q加密初始化向量和hmac的密钥。将q䆾U密消息-协议中称为per_master_secret-用B的公钥加密,装成称作ClientKeyExchange的消息。由于用了B的公钥,保证了第三方无法H听Q?
  我生成了一份秘密消息,q用你的公钥加密了,l你Q把ClientKeyExchange发给BQ?
  注意Q下面我p用加密的办法l你发消息了Q?
  Q将U密消息q行处理Q生成加密密钥,加密初始化向量和hmac的密钥)
  [我说完了]
  
  BQ(用自qU钥ClientKeyExchange中的U密消息解密出来Q然后将U密消息q行处理Q生成加密密钥,加密初始化向量和hmac的密钥,q时双方已经安全的协商出一套加密办法了Q?
  注意Q我也要开始用加密的办法给你发消息了!
  [我说完了]
  
  A: [我的U密?..]
  
  B: [其它Z?x)听到?..]
  
  
?加密的计?

  上一步讲了密钥的协商Q但是还没有阐明是如何利用加密密钥,加密初始化向量和hmac的密钥来加密消息的?
  其实其过E不q如此:(x)
  1 借助hmac的密钥,Ҏ(gu)文的消息做安全的摘要处理Q然后和明文攑ֈ一赗?
  2 借助加密密钥Q加密初始化向量加密上面的消息?
  
  
?安全?/font>

  SecurityPortal?000q底有一份文章《The End of SSL and SSH?》激起了很多的讨论,
  目前也有一些成熟的工具如dsniffQhttp://www.monkey.org/~dugsong/dsniff/Q可?
  通过man in the middled来截获https的消息?
  
  从上面的原理可知QSSL的结构是严}的,问题一般出现在实际不严谨的应用中。常见的d是
  middle in the middledQ它是指在A和B通信的同Ӟ有第三方C处于信道的中_(d)可以完全
  听到A与B通信的消息,q可拦截Q替换和dq些消息?
  
  1 SSL可以允许多种密钥交换法Q而有些算法,如DHQ没有证书的概念Q这样A便无法验证B的公?
  和n份的真实性,从而C可以L的冒充,用自q密钥与双斚w信Q从而窃听到别h谈话的内宏V?
  而ؓ(f)了防止middle in the middledQ应该采用有证书的密钥交换算法?
  2 有了证书以后Q如果C用自q证书替换掉原有的证书之后QA的浏览器?x)弹Z个警告框q行警告Q但又有多少Z(x)注意q个警告呢?
  3 ׃国密码出口的限ӞIEQnetscape{浏览器所支持的加密强度是很弱的,如果只采用浏览器自带的加密功能的话,理论上存在被破解可能?
  
  
?代理

  下面探讨一下SSL的代理是怎样工作?可参见[6])。这可能与你开始想的不太一P(x)Q?
  当在览器里讄了https的代理,而且在浏览器里输入了https://www.example.com之后Q?
  览器会(x)与proxy建立tcp链接Q然后向其发么一D|息:(x)
  CONNECT server.example.com:443 HTTP/1.1
  Host: server.example.com:443

  
  然后proxy?x)向webserver端徏立tcpq接,之后Q这个代理便完全成了个内容{发装|。浏览器
  与web server?x)徏立一个安全通道Q因此这个安全通道是端到端的,管所有的信息过了proxy,
  但其内容proxy是无法解密和改动的(当然要由证书的支持,否则q个地方便是个man in the middled的好场所Q见上面的讨论)?
  
  
?关于证书
  
  注意Q如果对于一般的应用Q管理员只需生成“证书请求”(后缀大多?csrQ,它包含你的名字和公钥Q然后把q䆾h交给诸如verisign{有CA服务公司Q当Ӟq同几百金Q,
  你的证书hl验证后QCA用它的私钥签名,形成正式的证书发q给你。管理员再在web server上导入这个证书就行了。如果你不想花那W钱Q或者想了解一下原理,可以自己做CA?
  从ca的角度讲Q你需要CA的私钥和公钥。从惌证书的服务器角度,需要把服务器的证书h交给C(j)A.
  
  如果你要自己做CAQ别忘了客户端需要导入CA的证书(CA的证书是自签名的Q导入它意味着你“信仠Z这个CA{v的证书)?
  而商业CA的一般不用,因ؓ(f)它们已经内置在你的浏览器中了?
  
  
?wtls
  
  在WAP的环境中Q也有安全加密的需求,因此wapforum参照在WWW世界里最为流行的SSL协议设计了WTLS.从原理上_(d)q䆾协议与SSL是基本相同的Q但在具体的地方作了许多改动。这些改动的大多没有什么技术上的需要,而是׃考虑到手持设备运与存储的局限而尽量做了简化。不q我的感觉是q些改动意义实在不大Q其获得的计和存储上节省出来的旉和空间ƈ不多。在g速度H飞猛进的时代,q种改动能获得的好处也许q不很多Q一个新的协议便需要大量新的投入,而且与原有体制ƈ不兼容,关于q点有文章[7]做了_ֽ阐述Q可参看Q?
  
  q里我简单D一些SSL与WTLS的差别?
  
  1 WTLS在一般udpq类不可靠信道之上工作,因此每个消息里要有序列号Q协议里也要靠它来处理丢包,重复{情c?
  此外Q拒l服务攻M因此变得更加Ҏ(gu)?
  2 WTLS建立的安全连接是在wap|关和手持设备之_(d)wap|关和web server之间如果也要保密Q便要采再用SSLQ即在这U模型中无法实现端到端的加密?
  
  ---------- ------------- ---------
  | Mobile |----------->| WAP |---------->| WEB |
  | Device |<-----------| Gateway |<----------|Server |
  | | WTLS | | SSL | |
  ---------- ------------- ---------
  
  3 WTLS协议里加了一U成为key_refresh的机?当传递了一定数量数据包后,双方通过同样的算法将自己的密钥做一下更新。付Z很小的代P安全性得以增强?



errorfun 2006-12-09 18:05 发表评论
]]>
[转]防火墙的工作原理http://www.tkk7.com/errorfun/articles/86560.htmlerrorfunerrorfunSat, 09 Dec 2006 10:03:00 GMThttp://www.tkk7.com/errorfun/articles/86560.htmlhttp://www.tkk7.com/errorfun/comments/86560.htmlhttp://www.tkk7.com/errorfun/articles/86560.html#Feedback0http://www.tkk7.com/errorfun/comments/commentRss/86560.htmlhttp://www.tkk7.com/errorfun/services/trackbacks/86560.html 什么是防火?br />
      
防火墙就是一U过滤塞Q目前你q么理解不算错)Q你可以让你喜欢的东襉K过q个塞子Q别的玩意都l统qo(h)掉。在|络的世界里Q要由防火墙qo(h)的就是承载通信数据的通信包?

    天下的防火墙臛_都会(x)说两个词QYes或者No。直接说是接受或者拒l。最单的防火墙是以太|桥。但几乎没有Z(x)认ؓ(f)q种原始防火墙能多大用。大多数防火墙采用的技术和标准可谓五花八门。这些防火墙的Ş式多U多P(x)有的取代pȝ上已l装备的TCP/IP协议栈;有的在已有的协议栈上建立自己的Y件模块;有的q脆是独立的一套操作系l。还有一些应用型的防火墙只对特定cd的网l连接提供保护(比如SMTP或者HTTP协议{)。还有一些基于硬件的防火墙品其实应该归入安全\由器一cR以上的产品都可以叫做防火墙Q因Z们的工作方式都是一L(fng)Q分析出入防火墙的数据包Q决定放行还是把他们扔到一辏V?

    所有的防火墙都hIP地址qo(h)功能。这Q务要查IP包头Q根据其IP源地址和目标地址作出放行/丢弃军_。看看下面这张图Q两个网D之间隔了一个防火墙Q防火墙的一端有台UNIX计算机,另一边的|段则摆了台PC客户机?/font>

    当PC客户机向UNIX计算机发起telnethӞPC的telnet客户E序׃生一个TCP包ƈ把它传给本地的协议栈准备发送。接下来Q协议栈这个TCP包“塞”到一个IP包里Q然后通过PC机的TCP/IP栈所定义的\径将它发送给UNIX计算机。在q个例子里,q个IP包必ȝq横在PC和UNIX计算Z的防火墙才能到达UNIX计算机?

    现在我们“命令”(用专业术语来说就是配Ӟ防火墙把所有发lUNIX计算机的数据包都l拒了,完成q项工作以后Q“心肠”比较好的防火墙q会(x)通知客户E序一声呢Q既然发向目标的IP数据没法转发Q那么只有和UNIX计算机同在一个网D늚用户才能讉KUNIX计算Z?


q有一U情况,你可以命令防火墙专给那台可怜的PC机找茬,别h的数据包都让q就它不行。这正是防火墙最基本的功能:(x)Ҏ(gu)IP地址做{发判断。但要上了大场面q种伎俩就玩不转了Q由于黑客们可以采用IP地址ƺ骗技术,伪装成合法地址的计机可以穿信任这个地址的防火墙了。不q根据地址的{发决{机制还是最基本和必需的。另外要注意的一Ҏ(gu)Q不要用DNSL名徏立过滤表Q对DNS的伪造比IP地址ƺ骗要容易多了。?br />

服务器TCP/UDP 端口qo(h)

    仅仅依靠地址q行数据qo(h)在实际运用中是不可行的,q有个原因就是目标主Z往往q行着多种通信服务Q比方说Q我们不惌用户采用 telnet的方式连到系l,但这l不{于我们非得同时止他们使用SMTP/POP邮g服务器吧Q所以说Q在地址之外我们q要Ҏ(gu)务器的TCP/ UDP端口q行qo(h)?

比如Q默认的telnet服务q接端口h23。假如我们不许PC客户机徏立对UNIX计算机(在这时我们当它是服务器)的telnetq接Q那么我们只需命o(h)防火墙检查发送目标是UNIX服务器的数据包,把其中具?3目标端口L(fng)包过滤就行了。这P我们把IP地址和目标服务器TCP/UDP端口l合h不就可以作ؓ(f)qo(h)标准来实现相当可靠的防火墙了吗?不,没这么简单。?br />

客户Z有TCP/UDP端口

    TCP/IP是一U端对端协议Q每个网l节炚wh唯一的地址。网l节点的应用层也是这P处于应用层的每个应用E序和服务都h自己的对应“地址”,也就是端口号。地址和端口都具备了才能徏立客h和服务器的各U应用之间的有效通信联系。比如,telnet服务器在端口23侦听入站q接。同时telnet客户Z有一个端口号Q否则客h的IP栈怎么知道某个数据包是属于哪个应用E序的呢Q?

    ׃历史的原因,几乎所有的TCP/IP客户E序都用大?023的随机分配端口号。只有UNIX计算Z的root用户才可以访?024以下的端口,而这些端口还保留为服务器上的服务所用。所以,除非我们让所有具有大?023端口L(fng)数据包进入网l,否则各种|络q接都没法正常工作?br />

    q对防火墙而言可就ȝ了,如果d入站的全部端口,那么所有的客户机都没法使用|络资源。因为服务器发出响应外部q接h的入站(是q入防火墙的意思)数据包都没法l过防火墙的入站qo(h)。反q来Q打开所有高?023的端口就可行了吗Q也不尽然。由于很多服务用的端口都大?023Q比如X client、基于RPC的NFS服务以及为数众多的非UNIX IP产品{(NetWare/IPQ就是这L(fng)。那么让辑ֈ1023端口标准的数据包都进入网l的话网l还能说是安全的吗?q这些客L(fng)序都不敢说自己是_安全的?
双向qo(h)

    OKQ咱们换个思\。我们给防火墙这样下命o(h)Q已知服务的数据包可以进来,其他的全部挡在防火墙之外。比如,如果你知道用戯讉KWeb服务器,那就只让h源端口号80的数据包q入|络Q?

不过新问题又出现了。首先,你怎么知道你要讉K的服务器h哪些正在q行的端口号呢? 象HTTPq样的服务器本来是可以L配置的,所采用的端口也可以随意配置。如果你q样讄防火墙,你就没法讉K哪些没采用标准端口号的的|络站点了!反过来,你也没法保证q入|络的数据包中具有端口号80的就一定来自Web服务器。有些黑客就是利用这一点制作自q入R工具Qƈ让其q行在本机的80端口Q?br />

查ACK?

    源地址我们不相信,源端口也信不得了Q这个不得不与黑客共舞的疯狂世界上还有什么值得我们信Q呢?q好Q事情还没到走投无\的地步。对{还是有的,不过q个办法只能用于TCP协议?

    TCP是一U可靠的通信协议Q“可靠”这个词意味着协议h包括U错机制在内的一些特D性质。ؓ(f)了实现其可靠性,每个TCPq接都要先经q一个“握手”过E来交换q接参数。还有,每个发送出ȝ包在后箋的其他包被发送出M前必获得一个确认响应。但q不是对每个TCP包都非要采用专门的ACK包来响应Q实际上仅仅在TCP包头上设|一个专门的位就可以完成q个功能了。所以,只要产生了响应包p讄ACK位。连接会(x)话的W一个包不用于确认,所以它?yu)没有设|ACK位,后箋?x)话交换的TCP包就要设|ACK位了?

举个例子QPC向远端的Web服务器发起一个连接,它生成一个没有设|ACK位的q接h包。当服务器响应该hӞ服务器就发回一个设|了ACK位的数据包,同时在包里标C客户机所收到的字节数。然后客hq自己的响应包再响应该数据包,q个数据包也讄了ACK位ƈ标记了从服务器收到的字节数。通过监视ACK位,我们可以将q入|络的数据限制在响应包的范围之内。于是,q程pȝҎ(gu)无法发vTCPq接但却能响应收到的数据包了?

    q套机制q不能算是无懈可击,单地举个例子Q假设我们有台内部Web服务器,那么端口80׃得不被打开以便外部h可以q入|络。还有,对UDP包而言没法监视ACK位了Q因为UDP包压根就没有ACK位。还有一些TCP应用E序Q比如FTPQ连接就必须p些服务器E序自己发v。?br />

FTP带来的困?

    一般的Internet服务Ҏ(gu)有的通信都只使用一对端口号QFTPE序在连接期间则使用两对端口受第一对端口号用于FTP的“命令通道”提供登录和执行命o(h)的通信链\Q而另一对端口号则用于FTP的“数据通道”提供客h和服务器之间的文件传送?

    在通常的FTP?x)话q程中,客户机首先向服务器的端口21Q命令通道Q发送一个TCPq接hQ然后执行LOGIN、DIR{各U命令。一旦用戯求服务器发送数据,FTP服务器就用其20端口 (数据通道)向客L(fng)数据端口发vq接。问题来了,如果服务器向客户机发起传送数据的q接Q那么它?yu)׃?x)发送没有设|ACK位的数据包,防火墙则按照刚才的规则拒l该数据包同时也意味着数据传送没戏了。通常只有高的、也是够聪明的防火墙才能看出客h刚才告诉服务器的端口Q然后才许可对该端口的入站连接?


UDP端口qo(h)

    好了Q现在我们回q头来看看怎么解决UDP问题。刚才说了,UDP包没有ACK位所以不能进行ACK位过滤。UDP 是发出去不管的“不可靠”通信Q这U类型的服务通常用于q播、\由、多媒体{广播Ş式的通信d。NFS、DNS、WINS、NetBIOS-over-TCP/IP?NetWare/IP都用UDP?

    看来最单的可行办法是不允许徏立入站UDPq接。防火墙讄为只许{发来自内部接口的UDP包,来自外部接口的UDP包则不{发。现在的问题是,比方_(d)DNS名称解析h׃用UDPQ如果你提供DNS服务Q至得允许一些内部请求穿防火墙。还有IRCq样的客L(fng)序也使用UDPQ如果要让你的用户用它Q就同样要让他们的UDP包进入网l。我们能做的是寚w些从本地到可信Q站点之间的连接进行限制。但是,什么叫可信任!如果黑客采取地址ƺ骗的方法不又回到老\上去了吗Q?

    有些新型路由器可以通过“记忆”出站UDP包来解决q个问题Q如果入站UDP包匹配最q出站UDP包的目标地址和端口号p它进来。如果在内存中找不到匚w的UDP包就只好拒绝它了Q但是,我们如何信产生数据包的外部L是内部客户机希望通信的服务器呢?如果黑客诈称DNS服务器的地址Q那么他在理Z当然可以从附着DNS的UDP端口发vd。只要你允许DNS查询和反馈包q入|络q个问题必然存在。办法是采用代理服务器?

    所谓代理服务器Q顾名思义是代表你的|络和外界打交道的服务器。代理服务器不允许存在Q何网l内外的直接q接。它本n提供公共和专用的DNS、邮件服务器{多U功能。代理服务器重写数据包而不是简单地其转发了事。给人的感觉是|络内部的主机都站在了网l的边缘Q但实际上他们都w在代理的后面,露面的不q是代理q个假面兗?/font>




 
  IP地址可能是假的,q是
׃IP协议的源路有机制所带来的,q种机制告诉路由器不要ؓ(f)数据包采用正常的路径Q而是按照包头内的路径传送数据包。于是黑客就可以使用pȝ的IP地址获得q回的数据包。有些高U防火墙可以让用L(fng)止源路由。通常我们的网l都通过一条\径连接ISPQ然后再q入Internet。这时禁用源路由׃(x)q数据包必L着正常的\径返回?

    q有Q我们需要了解防火墙在拒l数据包的时候还做了哪些其他工作。比如,防火墙是否向q接发vpȝ发回了“主Z可到䏀的ICMP消息Q或者防火墙真没再做其他事?q些问题都可能存在安全隐(zhn)。ICMP“主Z可达”消息会(x)告诉黑客“防火墙专门d了某些端口”,黑客立即可以从q个消息中闻C点什么气呟뀂如果ICMP“主Z可达”是通信中发生的错误Q那么老实的系l可能就真的什么也不发送了。反q来Q什么响应都没有却会(x)使发起通信的系l不断地试建立q接直到应用E序或者协议栈时Q结果最l用户只能得C个错误信息。当然这U方式会(x)让黑客无法判断某端口到底是关闭了q是没有使用?br />

附录:Windows XP SP2防火墙的工作原理 

    对于只用浏览、电(sh)子邮件等pȝ自带的网l应用程序,W(xu)indows防火墙根本不?x)生媄响。也是_(d)用IE、OutlookExpress{系l自带的E序q行|络q接Q防火墙是默认不q预的。微软在讄防火墙内|规则时Q已lؓ(f)自家的应用程序开了“绿色通道”,所以装上SP2后,即打开光火墙q且启用“不允许例外”,无需IE加到“例外”就能上|,而防火墙也不?x)询问是否要允许IE通过?


SP2防火墙与W三斚w火墙软g的区?/font>

  仅就防火墙功能而言QW(xu)indows防火墙只L所有传入的未经h的流量,对主动请求传出的量不作理会(x)。而第三方病毒防火墙Y件一般都?x)对两个方向的访问进行监控和审核Q这一Ҏ(gu)它们之间最大的区别。如果入侵已l发生或间谍软g已经安装Qƈdq接到外部网l,那么Windows防火墙是束手无策的。不q由于攻d来自外部Q而且如果间谍软g偷偷自动开攄口来让外部请求连接,那么Windows防火墙会(x)立刻Lq接q弹出安全警告,所以普通用户不必太q担心这炏V这好像宾馆里的房门一样——外面的q入必须用钥匙开门,而屋里的出门Q只要拉一下门把手可以了?/font>



errorfun 2006-12-09 18:03 发表评论
]]>
վ֩ģ壺 СƵ| ˳77777ɫ| eeussӰԺwww| һ| ƷһƵ| һ| ŮڵƵվ | һng| ޾ƷĻ鶹 | 97þþƷĻ| ѻ߹ۿ| ͵Ƶѹۿ| ˾þ¶ۺ| ޹ƷAVþۺӰԺ| þùƷһ| ߹ۿAVÿո| ޸avվ| 41515hh| ձѾƷһ| ޾ѡ߹ۿ| ˳Ƶ߹ۿ| ߾Ʒһ| ˿wwwƵ| 2017һ| Ʒާv벥| ձһߵӰ| ѹۿ㶮| ޾ƷƵ | ˾ƷѾþþþ| ߹ۿר| һ| ľƷAVƬ | ŵ| ޾Ʒþþþ66| պѸƵվ| ѹۿڵwwwСƵ| Ƭ߹ۿ| ŮҼxx00Ƶ| ŷ޿l| Ƶ߲| AVһ|