请问可以告诉我你的密码吗

谈及密码,大家都觉得十分常见,比如解锁手机的密码、微信微博的登录密码等。但是,这些我们平日里使用的密码,并不是真正的密码,仅仅是一种用来验证其所有权的口令。这篇文章要介绍的“密码”是一个非常庞大而复杂的信息处理体系,涉及信息的机密性、完整性、认证等。近年来大火的区块链技术中便采用密码学的方式来保证数据传输和访问的安全。

 

 

我们想象一个Alice向Bob发送电子邮件的场景。

 

 

由于邮件通过互联网发送,途中会经过其它计算机和通信设备进行中转,在这个过程中,就可能存在被恶意“窃听者”偷看到消息。Alice不想被别人看到邮件的具体内容,就决定把邮件进行加密后再发送给Bob。我们将加密前的消息称作明文,加密后的消息称作密文。Bob收到Alice的加密邮件后,需要进行解密才可以读懂消息。

 

 

消息加密后,即使被窃听,在不知道如何解密的情况下,便无法得知消息的具体内容,由此保证了邮件的机密性。

 

加密的步骤称为加密算法,解密的步骤称为解密算法。密码算法和密钥共同完成加解密。例如恺撒密码,通过将明文中使用的字母按照一定字数平移来加密。比如,平移4个字母,a加密变为E,b加密变为F,……以此类推,w变为A,x变为B,y变为C,z变为D。

 

 

假设我们要对明文trias进行加密,按照平移4位字母来加密,则密文为XVMEW。这样,我们就完成了加密过程,其中的加密算法就是平移操作,密钥就是4。对应的解密过程就是使用加密时的密钥进行反向的平移操作。

 

 

根据密钥的使用方法,密码可以分为对称密码和非对称密码,其中,对称密码又称为私钥密码、公共密钥密码、传统密码、共享密钥密码等,非对称密码又称为公钥密码。对称密码是指在加密和解密时使用同一个密钥的方式,而非对称密码则是在加密和解密时使用不同密钥的方式。还有一种混合密码系统,是将对称密码和非对称密码的优势结合使用的方法,通常先用对称密码对消息进行加密,保证机密性,然后用非对称密码对该对称密码的密钥进行加密。

 

对称密码和非对称密码通常保证了消息的机密性,我们又如何检验消息是否被篡改呢?假设我们从网络上下载了一款软件,那么我们所下载的软件,又是否是软件作者所发布的软件?软件内又是否被植入了恶意程序呢?

 

一些软件发布者会在发布软件的同时提供该软件的散列值,散列值就是利用单向散列函数计算出的数值,根据散列值是否一致,来检测数据是否被篡改。

 

在保证了消息未被篡改后,我们还希望知道消息是否来自正确的发送者,即需要对消息进行认证,判断消息是否是其他人伪装成发送者发出的,这时,就需要消息验证码来进行验证。消息验证码可以理解为一种与密钥相关联的单向散列函数,既可以用来确认消息的完整性,也可以进行认证。

 

如果我们在确认了消息未被篡改,同时也不存在伪装的情况下,为了防止发送者事后否认消息的行为,我们采用数字签名来验证消息到底是谁写的。数字签名类似于生活中的签名和盖章,既能够确保完整性、提供认证,又能够防止否认。

 

综上,我们提到了五种密码技术,各自发挥着极其重要的作用。对称密码和非对称密码保证了消息的机密性,防止消息泄露;单向散列函数、消息认证码、数字签名保证了消息的完整性,防止信息被篡改;消息认证码和数字签名又能够对消息进行认证,防止他人伪装成真正的发送者;数字签名又可以保证消息的不可否认性,防止发送者事后否认自己的消息。

猜你喜欢

转载自blog.csdn.net/triaslab/article/details/83589091