解析公开密钥算法
袁家驹 发表于:13年06月28日 10:43 [原创] DOIT.com.cn
提到密钥,首先要了解什么是密钥。密钥就是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。说的直白一点,其实密钥就是一个处理数据的转换公式。使用密钥可以保护文件在传输过程中的隐私保密,让数据更安全。
密钥可以从明文转换成密文,也可以将密文转换成明文。有个问题是总要有人去使用密钥来对数据转换,密钥还是需要人为的传递。所以,分发密钥往往是大多数密码系统中最薄弱的环节。不管是再强大的密码系统,总会有可能被入侵者攻破。如果密钥系统被入侵者得到了密钥,那么这一整套系统将变得毫无意义。因此产生了一个很矛盾的问题:密钥必须被保护起来,防止被偷,但又要将密钥都发布给用户。所以要采取一种安全有效的方法来发布和使用密钥。
在1976年,斯坦福大学的两位研究人员Diffie和Hellman就提出了一种全新的密码系统。在这个系统中,加密密钥和解密密钥是不相同的,而且不能很轻松的从加密密钥推算出解密密钥。还有在他们的提案中,加密算法E和解密算法D必须满足三个要求。下面是这三个要求的简述:
1、D(E(P))=P
2、从E推算出D非常困难
3、E不可能被选择明文攻击破解
第一个要求的意思是,如果将D作用在一条被加密的消息E(P)上,而可以恢复原来的明文信息P。如果没有这条特性,合法的接受者也无法解密其密文了。第二个要求就更加易懂,这也是这套密文的关键,加密密钥和解密密钥必须有着隔离性。第三个要求也是必不可少的,这确保了解密密钥的安全性。如果加密密钥E被选择性明文攻击,攻击者就会得到解密密钥,那解密密钥D就变得失去了意义。
下面举例说明这种这套密码系统的应用。假如有一个人A想要接受秘密消息,他首先要制作两个满足上面要求的两个密钥。然后通过公开密钥系统来公开他的加密密钥EA,得知他公开的加密密钥的人就可以给A发送加密文件了。
这里涉及到了公开密钥密码系统。公开密钥密码系统就是要求用户要有两把密钥:一个公开密钥和一个私有密钥。当有人需要给该用户发送信息时就需要用公开密钥对其内容进行加密,在用户收到信息并想阅读该信息的时候就用自己的私有密钥对其解密。
继续上面的例子,另一个人B也同样制作两个密钥EB和DB,并公开EB,保密DB。现在就可以来看看A和B如何通过加密系统来建立一条安全的对话通道。假设A的加密密钥EA和B的加密密钥都位于某些公开可读的文件中。现在,A取出他的一个信息P,并计算EB(P),然后将EB(P)发送给B。B接受到了信息之后,利用他的解密密钥DB来对EB(P)解密,也就是DB(EB(P))=P。因为B所制定的密钥具有从E推算出D非常困难和E不可能被选择明文攻击破解两条特性,所以其他人没有B的解密密码DB就无法得出A所发出的明文信息P,因此A所发给B的信息具有相当高的安全性。同样,B可以发送一个加密回复信息EA(R),A再利用解密密钥DA来解读EA(R),即DA(EA(R))=R。这样A和B就可以利用公开密钥密码系统来安全的进行通信了。
公开密钥算法的原理看似简单,但其中的密钥结构却是深奥的,想要了解具体的这套密码系统还需要更多的学习。