• 山西省国家密码管理局
  • www.sxgmj.gov.cn
商密知识

说说商用密码的安全性:(一)密码算法安全性的含义

发布日期:2018-10-22  来源:山西省国家密码管理局

密码乃国之重器,是保护国家利益的战略性资源,是网络安全的核心技术和基础支撑。根据2017年4月《密码法》(草案),我国密码分为核心密码、普通密码和商用密码。核心密码、普通密码用于保护国家秘密信息;而商用密码用于保护不属于国家秘密的信息。

这样看来,是不是商用密码的安全性相对来说比较差呢?不少人有这样的疑惑。为了弄明白说清楚这个问题,让我们先从密码算法安全性的含义本身说起。

关于算法的安全性,密码学研究中主要采用以下三个术语:

1、无条件安全性(unconditionallysecure)

即使密码分析者拥有无限的计算资源和密文,都没有足够的信息恢复出明文,那么这个算法就具有无条件安全性。 事实上,只有一次一密乱码本,才是不可破的。对于实际应用的密码算法都是可破的,只要简单的一个接一个的去尝试每种可能的密钥,并检查所得明文是否有意义。这种方法称为蛮力攻击(brute-force attack)。 香农(Shannon,没错,就是那个提出信息熵的“信息论之父”,也是1949年发表现代密码学奠基之作《保密系统的通信理论》的作者,将保密通信由传统艺术演变成一门现代科学的大神,以后有空单独聊)曾经证明了一次一密乱码本(one-timepad)是不可破解的,此种情形下,密钥流是完全随机的、与明文相同长度的比特串,即使给出无限多的资源仍然不可破。虽然其具有理论上的绝对安全性,但考虑到密钥传输的代价,它又是不实用的。想想是不是这个理:既然能够安全地传输同等长度的密钥,何不直接安全地传输明文呢?所以,也可以这么说,实际上不存在不可破译的密码。 目前也有观点提出,采用量子保密通信来传输密钥,可以实现绝对安全的一次一密的密码系统,这个话题太大,暂且不表。本文的粗暴结论是这仅仅是又一个理论上的可能,实用性上还非常非常非常漫长。

2、计算安全性(computationallysecure)

在实际中,无条件安全的系统是不存在额,我们通常所说的算法安全性,就是指算法的计算安全性。如果算法用现在或者将来的可用资源都不能破译,那么,这个算法被认为是计算安全的。也就是说,算法的计算安全性是可以通过计算复杂性(或者说攻击复杂性)来衡量, 通常来讲,可以用三种方式来衡量对算法的计算复杂性:

1)数据复杂性:用于攻击算法所需要输入的数据量。

2)时间复杂性:以执行某特定的基本步骤所需时间为单元,完成攻击过程所需要的总时间单元数。

3)空间复杂性:以某特定的基本存储空间为单元,完成攻击过程所需要的总存储单元数。

拿时间复杂性举例。如果某算法的时间复杂性是2的128次方,那么破译这个算法也需要2的128次方次运算(这些运算可能非常复杂和耗时)。假设攻击者拥有足够的计算速度去完成每秒100万次的运算,并且用100万个并行处理器完成这个任务,那么仍然需要花费10的19次方年以上才能找到密钥,(而这是宇宙年龄的10亿倍)。因此,可认为该算法目前具有计算安全性。

某些时候,这三种复杂度是相关联的,比如,存储空间越大时,攻击所需的时间可能越快。由于计算能力在不断发展,因此,几年前安全的密码算法,可能会在多少年之后变得不再安全。因此,对算法定期进行安全性评估是非常有必要的。

在实际应用系统中,当破译某个密码算法的所需的计算时间或成本费用远远超过信息有用的生命周期或者信息本身的价值时,那算法破译本身就没有意义了。这时也可以认为该算法具有计算安全性。

3、可证明安全性(Provable security)

算法的安全性可规约为某个经过深入研究的数学难题(如大整数素因子分解、计算离散对数等),数学难题被证明求解困难。这个话题也比较复杂,尽管自己多次学习,但仍未能深明要义,只记得这些困难问题虽然本身的安全性并没有得到完全证明,但多数目前仍然是计算安全的,可以作为算法或协议涉及的基础,感兴趣的可以查阅“P问题、NP问题、NP-hard问题、NPC问题”等文章。

不过,当量子计算出现之后,针对目前使用的RSA、DH和ECC等公钥算法的计算安全性不再有理论保证,因此,密码界正在开展抗量子密码研究,以期在量子计算机成为现实攻击工具之前找到新的出路。

从上述分析可以看出,无论核心密码、普通密码和商用密码,其采用的密码算法的安全性都是客观的科学问题,不存在哪类算法更加安全的说法。

既然如此,为什么包括我们国家在内的很多国家都要对密码系统进行分类管理呢?其实,一个密码系统的安全性,除了密码算法的安全性之外,还涉及密钥管理、密码工程实现等诸多方面的问题。欢迎持续关注,也欢迎把你的问题、意见或建议留下来,一起来探讨。