vlambda博客
学习文章列表

【新手入门】对称加密与非对称加密的概念

点击蓝字


什么是对称加密?


加密算法就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
在密码学中,纵然采用的加密方式不同,其最终目的都是为了以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了信息,但因不知解密的方法无法了解信息的内容,从而保证被传输信息的安全。 
在1976年以前,几乎所有的加密采用的都是“对称加密”这一方式。其中的“对称”,指的是加密(encryption)与解密(decryption)过程中使(secret key)或加密的规则。 
对称加密的机制的加密过程为 :秘钥+原文 ▶(加密生成)密文
解密过程为:密文-密钥 ▶(解密输出)原文
作一个类比:如果使用对称加密给电脑上的文档加密。如果在加密的时候设置的密码是“123456”,那么,在需要解密文档的时候,也要输入密码“123456”。 
但是,在存在接收双方的网络传输环境中,假设A希望B发送一个文件,使用了对称加密,A也必须将密钥随密文同步发送给B。在发送方和接受方共享一个密钥的情况下,密钥的安全也就无从得到保证。

什么是非对称加密?

正是基于对称加密的局限性,1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。
在这一算法中,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。 
非对称加密即加密和解密的过程中使用的不同密钥。具体来说,在非对称加密机制中,存在着一对密钥。分别是公开密钥(Public Key,简称公钥)和私有密钥(Private Key,简称私钥)密钥总是成对存在,私钥生成对应的公钥。 
例如,在BFT软件中,通常用户需要先生成一个私钥(由主密码生成),然后会自动生成一个相对应的公钥(继而通过公钥会生成相对应的地址)。这也是为什么在BFT输入的主密码错误时,进入了一个截然不同的账户(新的私钥生成了一个新的公钥,进而生成了一个新的账户地址)。 
非对称加密最核心的原理是:发送方用接收方的公钥对原文进行加密,接受方可用自己的私钥对原文进行解密。 
这一设计完美地解决了密钥的安全问题,让发送双方在安全保存自己密钥的情况下进行信息的传输。 
其运行机制如下:
(1)A生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)B获取A的公钥,然后用它对信息加密。
(3)A得到加密后的信息,用私钥解密。 
但是,仅仅是解决了密钥的安全还远远不够——在这个过程中还无法验证发送方的身份。由于B的公钥是对大众公开的,所有人都可以获取到B的公钥并给B发送消息,B收到的消息无法确认是否是A发送的。此外,也无法确定在传输过程中信息是否被进行过篡改。 
因此,在非对称加密中,还有一个很重要的设计是:
发送方用自己的私钥对原文进行签名,接收方可根据发送方的公钥解开签名,得到原文。
这里涉及到的数字签名Digital Signature的概念,为发送方身份的验证与信息的一致性提供了可能。



更多区块链知识 请下载链学院APP