私钥与公钥
在密码学中,密钥(key,又常称金钥)是指某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。在对称密码学中,加密和解密用的是同一个钥匙,因此钥匙需要保密。而在非对称密码学中,加密和解密用的钥匙不同:通常一个是公开的,称为公钥;另一个保密,称为私钥。
对称加密
这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。
非对称加密
它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
基于公开密钥加密的特性,它还能提供数字签名的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。
加密过程
在数学上,d(c(x))=x,让我们使用典型的爱丽丝与鲍伯假设来解释:
爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息
爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x
鲍伯使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥为 c,另一个作为私钥d
鲍伯可以用任何方法发送公钥c 给爱丽丝,即使伊夫在中间窃听到 c也没问题
爱丽丝用公钥 c 把明文x进行加密,得到密文c(x)
爱丽丝可以用任何方法传输密文 c(x)给鲍伯,即使伊夫在中间窃听到密文 c(x)也没问题
鲍伯收到密文,用私钥 d对密文进行解密 ,得到爱丽丝撰写的明文 d(c(x))
由于伊夫没有得到鲍伯的私钥d ,所以无法得知明文x
如果爱丽丝丢失了她自己撰写的原文 x,在没有得到鲍伯的私钥 d的情况下,她的处境将等同伊夫,即无法透过鲍伯的公钥 c和密文c(x) 重新得到原文。