公开密钥基本原理 2009-03-30 软件
对于网上支付和网络银行来说需要信息安全至关重要, 目前比较流行而且成熟的是PKI(公开密钥基础设施, Public Key Infrastructure)技术。它包括公开密钥技术、数字证书、证书发放机构等内容。
本文详细介绍PKI技术的基本原理。
用户甲将把一份重要文件通过Internet发送给远方的用户乙,该文件非常重要,所以有三点要求:
1. 必须严格保密,不允许被任何第三方查看文件的内容。
2. 必须准确无误,不允许被任何第三方篡改文件的内容。
3. 必须防止冒名顶替和防止抵赖,文件确实是由甲发送的。
第一个要求:需要将文件加密才能保证不被第三方看到内容。
解决方案:采用对称加密算法如:DES、3DES等加密文件内容,加密和解密使用同一个密钥。
即使第三方截获到加密后的文件,由于不知道加密时所用的密钥,所以无法解密改文件,自然无法查看文件的内容。
该密钥在下文中称为:对称密钥。
问题1:解密时需要密钥,那么乙怎么才能安全地得到这个密钥呢?通过Internet发送密钥,可能被第三方截获;打电话,可能被窃听。所以需要对这个密钥也进行加密,如果依然采用上面的对称加密算法,又会产生一个新的密钥,新的密钥同样存在安全传送的问题。
解决方案:采用非对称加密算法,包括一对不相同的密钥:公开密钥(Public Key)和 私有密钥(Private Key)。
如果用公开密钥对数据进行加密,只有用其对应的私有密钥才能解密;如果用私有密钥对数据进行加密,只有用其对应的公开密钥才能解密。
公开密钥是公开的,私有密钥是保密的,需要自己保存。
乙持有一对公开密钥和私有密钥,乙将公开密钥发送给甲,甲使用乙的公开密钥加密对称加密时所用的密钥,因为第三方不知道乙的私有密钥,所以即使截获到加密后的对称密钥,也无法解密,从而保证对称密钥的安全性。也就保证了加密后的文件不可能被解密。
问题2:如果使用乙的公开密钥加密文件内容,乙使用私有密钥解密文件,这样就不需要使用对称加密算法了,岂不更简单?
这种做法是不可行的,因为非对称加密算法速度很慢,比对称加密算法慢10~100倍,而且加密后的密文变长。所以,采用对称加密算法加密文件内容,而采用非对称加密算法加密对称密钥。
现在已经满足了第一个要求,确保文件内容不会被任何第三方截获并查看。
第二个要求:只要文件内容被修改,乙就可以发现。
解决方案:采用数字签名技术证明身份。使用散列算法, 如 MD5、SHA-1等算法,从大量的数据中提取一个固定长度的摘要信息,而从这个摘要中不能得到任何一点原文信息;如果原文信息受到任何改动,得出的摘要信息肯定不同。因此甲可以对文件进行散列算法得到摘要,使用乙的公开密钥加密摘要,然后发送给乙,乙使用自己的私钥解密摘要,并对解密后的文件的明文生成摘要,两个摘要进行比较,如果不同,则文件内容被人修改过。加密后的摘要必须附加在文件内容中。
第三个要求:使用甲的私钥加密,然乙使用甲的公钥解密。
解决方案:将文件的摘要使用甲的私钥加密,乙使用甲的公钥可以成功解密,因为甲的私钥只有甲知道,所以就可以证明是甲发过来的,从而确保摘要是甲发过来的。加密后的摘要必须附加在文件内容中。
甲也持有一对公开密钥和私有密钥,甲将公开密钥发送给乙。
具体操作时,如果是文字性质的文件(如:txt,word,excel文档), 可将加密后的摘要插入到文件中, 否则加密后的摘要只能单独发送. 可以使用winzip软件将加密后的文件和加密后的对称密钥以及加密后摘要等信息压缩到一个zip文件中发送。






