Lauren与密码学5,对称密码系统

来源:互联网 发布:淘宝网包包 编辑:程序博客网 时间:2024/05/22 09:39

Haorui:  对称密码系统也称单密码系统,就也就是说,加解密使用同一密钥。比如我们之前所说的平移法,就是对称密码系统。 见下图5.1:

Alice用Key与加密算法对消息明文进行加密,消息以密文的形式在Internet上传送。Bob收到密文后使用相同的Key与解密算法进行解密,从而得到明文。

Lauren: 也就是说,在通信开始前,Alice与Bob要事先知道使用的密钥。

Haorui: 对的。


Lauren: 密钥是不是越长越好。

Haorui:  密钥越长,则组合方式就越多,专业的说法是密钥空间越大。比如我们的银行一般是六位数字,则密钥空间只有999999种。如果能用更多数位或是可更多的符号,比如字母、符合等。密钥空间就很大了。密钥空间越大,破解难度就越高。也不是越长越好,密码学的目标是使你破解的成本高于消息本身的价值。

Lauren: 明白,比如一个商业消息价值100万,破解它的成本超过100万,则攻击者会放弃破解了。

Haorui:  对的。时间成本也包括在内。据说二战的时候,美军在开战一小时后才破解日军偷袭珍珠港的情报。显然这个破解就没有价值了。


Lauren: 明白。前面说了,加密与解密使用的是同一算法。这个是怎么做到的?

Haorui: 这主要是密码算法大量使用了异或运算。它的特点是,计算机采用二进制,二进制比特通过两次异或运算后又回到原来的值。见下面的异或二进制运算。

1  Ꚛ 1 Ꚛ 1 = 1

1  Ꚛ 0 Ꚛ 0 = 1

0  Ꚛ 1 Ꚛ 1 = 0

0  Ꚛ 0 Ꚛ 0 = 0

无论1与0异或两次,又回到原值。还有一个事实是,在计算机密码学中,对于密码算法都是公开的。我们要求保密的是密钥。

Lauren: 不能理解,这样不是使破解的难度降低了。

Haorui: 恰好相反。理由是公开的密码算法会得到广泛的社会上的专业人士的验证与测试,而保密的算法则无法获得足够的社会资源做验证。我们要求的重点是在密钥的传输与存储。


Lauren: 明白了,哪密码算法长啥样呢?

Haorui: 密码算法有很多种,每种都不一样,而且还很复杂。如果你要进行更专业的学习以便从事这方面的工作,可以加深学习,网上有许多标准算法的资料。为了便于理解,我们可以把密码算法简单认为一个异或运算。

    加密:明文 Ꚛ 密钥 = 密文

    解密:密文 Ꚛ 密钥 = 明文

Lauren: 如果要加密的信息有100KB,而密钥才128比特,这个怎么做异或运算?

Haorui: 其实很简单,把100KB的信息分成很多个128比特的小块,最后一块不足128比特的补零。然后一块一块的与密钥进行异或运算。这种加密算法,我们称之为分组加密。还有一种叫做流密码,比如用密钥作为随机数函数的种子产生一个100KB长的随机数,再与消息作异或运算得到密文。

当然正真的密码算法不仅仅只是简单的异或运算。这里只是简化而已。

Lauren: 我有一个好主意,比如加密长度为100KB的信息。我生成一个100KB长度的密钥与之异或。只要密钥保密,信息是永远无法破解的。

Haorui: 对的,这个方式称之为一次性密码本,一次性密码本是无法被破解的。但是问题又来了,你要保密的是100KB的信息变成的保密100KB的密钥,相当于转换了问题,所以说一次性密码本是不可能实现的。

我们常用的对称加密算法有:

    DES(DataEncryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

    3DES(TripleDES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

    AES(AdvancedEncryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

    RC4加密算法:密钥长度可变的流加密算法簇。该算法的速度可以达到DES加密的10倍左右。