荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (清风浮云 人生), 信区: Security
标  题: [转载] openssl简介--加密算法(转寄)
发信站: BBS 荔园晨风站 (Sat Nov 11 13:43:24 2000), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@smth.org 所发表 】
发信人: xgh (小丙), 信区: Security
标  题: openssl简介--加密算法
发信站: BBS 水木清华站 (Fri Nov 10 20:24:10 2000)

引用请指明原作/译者 fordesign@21cn.com

                       一 加密算法的一些常识

  要理解ssl先要知道一些加密算法的常识.

  加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的
送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如
果密文给人家截获而泄密。

  加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign"
这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样
的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,
现在应该没人用这么搞笑的加密算法了吧。

  不基于KEY的加密算法好象一直用到了计算机出现。我记得古中国军事机密都是用这
种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式
加密的。这种算法的安全性以保持算法的保密为前提。

  这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。日本
中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用
了,这也忑浪费。

  我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用
这个key来对明文进行加密。这样的算法即使一次被破,下次改个key,还可以继续用。
key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,
只要你用的算法认为你选来做key的那玩意合法就行。

  这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说
应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。其实现在常用
的基于KEY的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解

  基于key的加密算法又包括俩类:对称加密和不对称加密。对称加密指的是双方使用
完全相同的key, 最常见的是DES. DES3, RC4等。对称加密算法的原理很容易理解,
通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。

  不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和
私有密钥。 举个例子比较容易理解, 我们们假设通信双方分别是A, B.
A, 拥有 KEY_A1, KEY_A2, 其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
B, 拥有KEY_B1, KEY_B2, 其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。

  公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把
才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。

  通信过程如下:
             A-------->KEY_A2------------>B
             A<--------KEY_B2<------------A
这个过程叫做公共密钥交换,老外管这叫key exchange.
之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。

   一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的
公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。

  常用的不对称加密一般有RSA, DSA, DH等。我们一般使用RSA.

  数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这
里一起介绍一下。

  签名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。
看看那些重要文件都要头头签名。数字签名就是数字化的签名了。记得公用密钥和私有
密钥的特征吗?只有你一个人有你自己的私有密钥。而你的公用密钥是其他人都知道的
了。那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,接收人用你的公
共密钥解开一看,哦,是你发的。这就是你的数字签名过程了。

    上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,
知道数字签名是这么一回事就可以了。

  还有一种我们需要知道的加密算法,其实我不觉得那是加密算法 ,应该叫哈希算法,
英文是message digest, 是用来把任何长度的一串明文以一定规则变成固定长度的一
串字符串。它在SSL中的作用也很重要,以后会慢慢提及的。一般使用的是MD5, SHA.

  base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码
和二进制码转来转去的。

  具体的加密解密过程我们不需要了解,因为SSL根本不关心。但了解加密算法的一些
基本原理是必要的,否则很难理解SSL。

  对加密算法的细节有兴趣的同志,可以去网络上找这些加密算法的原理的文章和实现
的程序来研究,不过先学数论吧。不懂数论看那玩意还是一头雾水。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.38.248.1]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店