密码学入门及常见技术介绍

密码技术所提供的并不仅仅是基于密码的机密性,用于检验消息是否被篡改的完整性、以及用于确认对方是否是本人的认证等都是密码技术的重要组成部分。

加密与解密

小明不像让别人看到邮件的内容,于是决定将邮件进行加密后再发送出去。

加密前的消息称为明文,加密后的消息称为密文

文件加密后就会变成看不懂的密文。

而小王收到了来自小明的加密邮件,作为接收者的小王也是无法直接阅读密文的,于是小王需要对密文进行解密之后再阅读。解密就是将密文恢复成明文的过程。

将消息加密发送后,即使消息被窃听,窃听者得到的也只是密文,而无法得知密文前的明文内容。

上述情境中,晓明将邮件进行加密,而小王进行解密,这样做的目的,是为了不让窃听者读取邮件内容,小明和小王通过运用密码技术保证了邮件的机密性。

对称密码与公钥密码

  • 根据**的使用方法,可以将密码分为对称密码和公钥密码两种。

对称密码是指在加密和解密时使用同一**的方式。

公钥密码是指在加密和解密时使用不同**的方式,因此公钥密码又称为非对称密码。

将对称密码和公钥密码结合起来的密码方式称为混合密码系统,这种系统结合了对称密码和公钥密码两者的优势。

单项散列函数(hash函数,杂凑函数)

我们在互联网上下载免费软件时如何判断我们下载的软件是否和软件作者所作的东西一摸一样呢?会不会被人植入恶意程序呢?

为了防止软件被篡改,有安全意识的软件发布者会在发布软件的同时发布该软件的散列值。散列值就是用单向散列函数计算出来的数值。

下载该软件的人可以自行计算下载的文件的散列值,与软件发布者公布的散列值进行对比,如果一致,就说明下载的软件与发布者所发布文件是相同的。

单项散列函数所保证的并不是机密性,而是完整性。完整性是指“数据是正牌的而不是伪造的”这一性质。使用单项散列函数,就可以检测出数据是否被篡改过。

散列值(hash)又称哈希值、密码校验和指纹、消息摘要

消息认证码

为了确认消息是否来自所期望的通信对象,可以使用消息认证码技术。

通过消息认证码,不但可以确认消息是否被篡改,而且能够确认消息是否来自所期待的通信对象,也就是说,消息认证码不仅能够保证完整性,还能够提供认证机制

伪随机数生成器

是一种能够模拟产生随机数列的算法。随机数和密码技术有关,随机数承担着**生成的重要职责。例如在Web中进行SSL/TLS通信时,会生成一个仅用于当前通信的临时**,这个**就是基于伪随机数生成器生成的。如果生成随机数的算法不好,窃听者就能推测出**,从而带来通信机密性下降的风险。

隐写术与数字水印

可以隐藏消息本身,这种技术称为隐写术。

例如我们常见的藏头诗就是一种隐写术,可以发现下面这首《水浒传》中的一首诗还隐藏着一句话——卢俊义反

芦花丛中一扁舟,

俊杰俄从此地游,

义士若能知此理,

反躬难逃可无忧。

隐写术的目的是隐藏消息本身,但如果搞清楚了嵌入消息的方法,也就可以搞清楚消息的内容。因此隐写术并不能代替密码。

隐写术在计算机中的应用,例如数字水印技术就运用了隐写术的方法。数字水印是一种将著作权拥有者及购买者的信息嵌入文件中的技术。但仅凭数字水印技术是无法对信息进行保密的,因此需要和其他技术配合使用。

例如,将密码和隐写术结合起来的方法就很常用。

密码与信息安全常识

  • 不要使用保密的密码算法
  • 使用低强度的密码比不进行任何加密更危险
  • 任何密码总有一天都会被**
  • 密码只是信息安全的一部分
  • 密码学入门及常见技术介绍