加密解码的方法
1.对称加密:加密解密的key都是一样的. 如DES
优点:简单,快速。
缺点:key distribution 是主要难题,怎么把你的key告诉收件人哪?此外,如果n个人通信,需要n(n-1)/2个key。

2.非对称加密:加密解密使用不同的key.如DSA, RSA
随即生成key pair,然后把你的public key交给别人。当对方给你写信时,用public key解密,之后只有你用其
对应的private key进行解密。
优点:安全。
缺点:慢


问题:比如Alice 在给Bob写信,之后用Bob的public key加密。
1. 对于Bob来说,如何确定这封信是由Alice发出的?即使Alice发出的,若是他抵赖怎么办?此外,如何验证信息的真实性?
解决方法:数字签名(digital signature)

数字签名(PGP/GPG)产生/使用的过程如下:
A. Alice对信息内容是用单项不可逆hash function产生固定长度的digest(摘要).
B. Alice对digest用自己的private key进行加密。连同用Bob public key加密的信息发给Bob。
C。Bob用自己的private key先将信息本身解密,获得plain text。然后用Alice的public key解密digest。
D。如果可以解密,说明该信息确实由Alice发出。
E。Bob用同样的算法计算digest,如果和解析出来的一致,则证明信息未被修改过。
(对于这B,我有点不是太确定,因为看到的例子都是说把明文和签名发送给对方,但我觉得信息如果是机密的,怎么可以明文传送?

或者说用private key对签名和明文信息加密的,那也不对?岂不是有public key 的任何人都可以看到明文信息?

比如在这个博文http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

和GPG manual里

http://www.gnupg.org/faq/GnuPG-FAQ.html#how-does-this-whole-thing-work

有人可以解释吗?我也在寻找,如果有新发现,再来更新)

2. 对于Alice和Bob来说,如何验证public确实是属于对方的?
解决方法:数字证书。
A.找一个信任的第三方认证机构(certificate authority,CA),将个人的识别信息(姓名,userid。。)与public key绑定。
生成一个数字证书。
当确认public时,对方到CA 上既可以查询。

B.对于PGP/GPG,为了确认public key是还用到了finger print。其实就是对public key做hash长生的一般124-160bit长的字符串。
这是,验证双方可以通过电话确认finger print.但如何确认对方是Alice/Bob? 除非你记得他的声音。。。

 

3.对于Alice,Bob说,他们还需要一个passphrase来保护他们的private key。

passphrase 有点像password,不过要求其要更复杂,更长,不易破解。

posted on 2012-12-13 17:26  laskfla  阅读(283)  评论(0编辑  收藏  举报