安全第1讲——关于密码学

这两个月一直在从事计算机安全的开发工作,因此,在工作的同时,也一边写一些关于计算机安全的文章。

今天介绍一下密码学的入门知识。

1、经典密码学和现代密码学

经典密码学,是指编码和解码的艺术。经典密码学主要用于军事领域的秘密通信。

现代密码学指安全地进行数字信息处理、事务处理、分布式计算的技术。现代密码学不仅仅用于军事领域,而是深入到我们普通人的日常生活,例如网上购物,手机支付等等。

2、密钥

密钥的英语是key,可以被认为是一段密码信息。

发送方使用密钥,对消息进行加密操作,然后将得到的数据发送出去。

接收方使用密钥,对收到的数据进行解密,恢复发送方原始的消息。

未经加密的消息称为明文,英语为plain text。

经过加密的消息成为密文,英语为cipher text。

3、对称加密

如果消息发送方和消息接收方使用同一个密钥进行加密和解密,则我们称该加密方式为对称加密

对称加密中使用的密钥,被称为对称密钥,英语为symmetric key。

对称加密方案使用了三个算法:

(1)密钥产生算法Gen:用于生成密钥;

(2)加密算法Enc:根据密钥和明文,生成密文;

(3)解密算法Dec:根据密钥和密文,生成明文;

4、柯克霍夫原则

19世纪,Augueste Kerckhoffs提出,一个安全的加密解密系统,即使被其他人知道系统的运作步骤,仍然是安全的。这是现代密码学遵守的原则,被称为Kerckhoffs原则,即柯克霍夫原则

根据柯克霍夫原则,我们只要保护好密钥,就能保证系统的安全性。

我们不建议使用专利的加密算法,而建议使用公开的算法,这样的系统安全更加有保证,不会导致灾难性后果。

5、古老的凯撒加密

凯撒加密,指对原文的每个组成字符位移一个固定值,得到密文,导致密文不可读。

例如,如果我们的原文只包括字母0-9,A-Z,a-z,总共62个字符,我们加密的算法是每次将字符向后移动2个位置:

原文为Hello时,密文为Jgnnq。

对于凯撒加密,我们可以认为字符位移的字符数是密钥,由于总共的字符数只有62个,则凯撒加密的最大密钥数也只有62,最大密钥数也叫密钥空间。

由于凯撒加密方法的密钥空间太小,攻击者只要尝试有限次,就可以知道原文,所以这种加密方法非常脆弱。

6、单字母替换加密

单字母替换加密,是凯撒加密的升级版,每个明文字母对应一个密文字母,对应的规则可以自行确定,不是固定的位移方式。

例如,原文的字母H对应密文d,e对应z,l对应a,o对应b:

原文为Hello时,密文为dzaab。

采用单字母替换加密,密钥空间非常大,采用上面的攻击凯撒加密的方式,几乎不可能成功。

但是对于可读的文本内容,字母的出现频率是可以统计的,当提供海量的密文文本,根据字母的使用频率,我们就可以确定字母的映射规则,因此,这种加密方法,并不安全。

7、Vigenere加密

Vigenere加密是多字母移位加密,也是凯撒加密的升级版。算法使用一个密钥,原文的每个字符加上密钥上对应位置的数值,得到密文。

例如,我们的密钥是32145,当原文是Hello时,H对应的密文是H+3=L,e对应的密文是e+2=g,第一个l的密文是l+1=m,第二个l的密文是l+4=p,o的密文是o+5=t:

所以原文Hello对应的密文是Lgmpt。

Vigenere加密比凯撒加密和单字母替换加密都要强大,该加密的算法在16世纪被发明,几百年后才被破解,破解的原理还是根据字符出现的统计概率。当样本足够多时,就可以实现密文的破解。

8、结束语

上面讲解凯撒加密、单字母替换加密、Vigenere加密的破解时,都基于一个前提:“碰到我们认识的原文时,破解就成功了”。

实际上,计算机不会像我们人类一样,认识可以被阅读的文字。为了达到相同的效果,计算机通过计算字符出现的统计概率来实现,例如下图是单字符移位加密的统计概率值:

另外,上面的破解过程,都是在只知道密文的情况下进行的假如破解者有加密的程序,允许破解者提供原文执行加密操作,则可以立即实现破解,破解过程变得轻而易举

(0)

相关推荐