rainren
rainren 我不在线
注册时间2002-09-25 16:32:25 最后登录2013-05-30 23:52:50 精华11 帖子1013
用户头衔:临时退役版主
状态:我不在线
楼主
发表于 2003-11-13 18:52:47
Cryptographic Terminology 101
(密码术语101)[翻译]
原文:
作者:Dru Lavigne
翻译: rainren
本人能力有限, 很多地方自我感觉都翻译的不对, 请大家指出, 我慢慢修改。
在接下来的几篇文章中,我将介绍怎样在网络中安全的传送数据。如果你还记得IP数据包系列(查看 抓取TCP包 -- 原文: see Capturing TCP Packets)大部分网络传输都是使用明文传输, 有很多packet sniffing工具能将它们解开查看信息。如果数据包中含有usernames, passwords或其它一些敏感数据, 这将非常糟糕。幸运地, 有一些工具可以加密你的网络传输。
在配置之前, 你需要了解加密的条件和它将要使用的算法。这一篇是密码术语101, 接下来的文章将实证介绍如何在FreeBSD上配置使用。
什么是加密, 你为什么要使用它?加密工具使用组合算法, 它由下面三个部分构成:privacy, integrity, authenticity。不同的加密工具使用不同的算法, 但所有这些加密工具都需要这三个部分。每一个都很重要, 让我们分别看看每一部分:
Privacy
Privacy保证只有接收者才能明白网络传输的内容。即使是数据包被捕获, 它也不能将信息解开阅读。密码系统使用一种加密算法, 或密码, 在传输前它会将明文加密成密文。只有特定的接收都才能使用一个key将密文解密成明文。这个key存在于发送者和接收者之间,用它来加密解密文件。显然,这只能允许接收者才能有这个key, 否则任何人都可以解密文件了。
有些人没有key他可能会使用分解或猜测加密文件的key来解开这个密码。 一个强壮的加密算法应该有一个怎样解开密码的难易度。通常, 强壮的条件使用bitsize来表示。例如:解开使用56位的加密算法的时间比使用256位加密算法的时间要少。
这是否就是说我们应该使用尽可能多的位的加密算法呢?并不一定。很有代表性地, 随着bit size的增加, 加密解密数据需要的时间会越来越长。在现实中, 这个转化会发费大量CPU的工作时间和增大网络流量。根据你的硬件和网络情况选择适当的加密bit size。近几年, CPU的工作频率增加的很快。这就允许我们可以选择使用较强壮的算法。这样, 你应该过段时间就变改你的密码。很多加密系统可以自动的做这项工作。
还有一些别的因素影响到如何选择加密算法。有些算法使用需要licenses或专利; 有些算法很容易被破解;有些算法比使用同样bit size的算法快或慢。如:DES和3DES都很慢,而Blowfish尽管使用了很大的bit size, 但它还是很快速。
每个国家的法律不同, 一些国家会强行限制使用。也就是说你可以在国内使用一个很强壮的加密算法加密敏感数据但却不允许将它发送给国外的接收者。The United States限制使用40位加密算法加密的数据发送到国外, 这就是为何有些算法使用少于40位加密的原因。
如果你不确定你所在的国家对这方面的限制,在加密你的FreeBSD系统前先找找相关的资料。
下面显示一些算法的使用情况:
Algorithm: DES Bit Size: 56 comment: slow, easily cracked
Algorithm: 3DES Bit Size: 168 comment: slow
Algorithm: Blowfish Bit Size: 32- 448 Patented: no Comment: extremely fast
Algorithm: IDEA Bit Size: 128 Patented: yes
Algorithm: CAST Bit Size: 40-128 Patented: yes
Algorithm: Arcfour Bit Size: 40, 128
Algorithm: AES(Rijndael) Bit Size: 128, 192, 256 Patented: no Comment: fast
Algorithm: Twofish Bit Size: 128, 256 Patended: no Comment: fast
原始数据包在使用encryption模式时有哪些内容会被加密呢。如果加密系统使用的是传输模式, 原始数据包的报头将是明文, 只有一部分数据被加密。这就是说, 网络嗅探器截获的数据包虽然不能看到数据包里的内容但却可以知道发送者和接收者的IP地址和发送接收使用的端口。
如果使用tunnel模式, 整个数据包包括报头和内容都将被加密。数据包还需要到目的地的路由, 现在3层新的报头被创建。新的报头会包含所有到目的地的IP地址。(This is known as encapsulation, and it is quite possible that the new header contains totally different IP addresses than the original IP header)。我们将在下一篇为FreeBSD系统配置IPSEC时看到为什么会这样。
Integrity
Integrity是加密系统的第二部分。这部分保证接收到的数据包在传输过程中存在完整没有丢失。这需要一个不同的算法,如:cryptographic checksums 或 cryptographic hashes。你应该熟悉使用checksums检查对方发送过来的数据包的顺序。虽然frame和header checksums使用的算法很简单,它们只是简单的修改bits并且使用的是相同的算法。Cryptographic checksums need to be more tamper-resistant。
同加密算法一样, Cryptographic checksums有不同的用途。越长的效验和越难以改变数据和制作同样的效验和。当然,有一些checksums我们已知道它的缺陷了。如下面所示:
Cryptographic checksum: MD4
Checksum Length: 128 Known Flaws: yes
Cryptographic checksum: MD5
Checksum Length: 128 Known Flaws: theoretical
Cryptographic checksum: SHA
Checksum Length: 160 Known Flaws: theoretical
Cryptographic checksum: SHA-1 Checksum Length: 160 Known Flaws: not yet
上面是有意排列的。正如它所示:MD4是最不安全的而SHA-1是最安全的。通常应能为你的加密系统选择尽可能高的checksum级别。
在cryptographic 里还有另外一种checksum:HMAC或Hash-based Message Authentication Code。简要说明:checksum algorith (效验算法)使用checksum效验值作为算法的key。 Good, 如果不能访问这个key你将很难改变 checksum(效验值)。如果有Cryptographic checksum使用HMAC, 它将会在checksum名字前面显示出来。例如:HMAC-MD4比MD4 安全; HMAC-SHA比SHA安全。如果我们对checksum algorithm(效验算法)排序,它如下所示:
· MD4
· MD5
· SHA
· SHA-1
· HMAC-MD4
· HMAC-MD5
· HMAC-SHA
· HMAC-SHA-1
Authenticity
现在, 我们保证了数据的加密和它在传输过程中没有被改变。但是如果我们的数据, key被错误的传送给错误的接收者将怎么办? 这就是我们第三部分所要描述的:authenticity。
在一些加密算法使用前, key可能已创建和改变。在一个session中使用同样的key加密解密数据,它会知道如何对称或session key。我们应怎样安全的改变这个key呢?我们怎么能确定我们所改变的这个KEY只有接收者在使用而不会是另外的人呢?
这就需要别的算法类型来了解不对称性或公共密匙算法。这些算法具有不对称性是因为它们在发送者和接收者之间并不使用同样的KEY。Instead, 发送者和接收者之间分别创建密匙对来进行工作。接收者从发送者那里取得一份公共密匙。别的密匙, 如私匙, 必须保持隐密。如果用户的私匙已过期, 他应该立即撤回以前的key并重新创建新的密匙对。
当密匙对创建时, 它将有一个独特的string of short nonsense作为fingerprint(指纹)。这个fingerprint(指纹)给你用来检查公共密匙。在校验接收者前, 它们首先要传输一个公共密匙给你。你需要double-check the fingerprint(指纹)以让别人知道你已取得了公共密匙。在下一篇文章中我们创建密匙对, 让你看自己的fingerprint时会有更多的了解。
大多数密匙创建算法是RSA。你平常在数字证书或认证中心应该看到过RSA。数字证书包含了接收者使用的公共密匙和其它一些信息, 还有终止日期。The X.509 or PKCS #9 standard dictates the information found in a digital certificate. You can read the standard for yourself at or 。
数字证书通常作为Certificate Authority存储在计算机里。这就是说作为一个接收者你并不需要手动修改公共密匙。Instead,你的系统将会询问CN何时copy一个接收者使用的公共密匙。这需要一个可以升级证书的系统。CA为许多接收者储备了数字证书,这些接收者可以是用户或电脑。
同样可以使用DSA算法来产生数字证书。但这个算法需要专利并且比RSA慢。Here is a FAQ on the difference between RSA and DSA. (The entire RSA Laboratories' FAQ is very good reading if you would like a more in depth understanding of cryptography.)
数