文章横幅PC版
文章横幅iPad版
文章横幅手机版

密码安全中的随机数的特点

TIME:2019-03-20 16:58  click: 217 次 来源: 未知

在网络安全的各种应用里,随机数在加密算法里扮演重要的角色。大量的基于密码学的网络安全算法和协议都使用了二进制随机数。例如:

密钥分发和相互认证方案,例如通信的双方通过交换信息共同合作分发密钥和或互相认证对方。许多时候需要使用时变值进行握手以防止重放攻击。时变值使用随机数可以防止攻击者判断或者猜测出时变值。

会话密钥的产生。大量的协议,需要为对称加密产生一个短时间内使用的秘密密钥。这个密钥通常称为会话密钥。

RSA公钥加密算法中密钥的产生。

用于对称流密码加密的位流的产生。

这些应用对随机数序列产生提出了两个不同且未必兼容的要求:随机性和不可预测性。

随机性

一般认为随机序列应有良好的统计特性。下面是两个评价标准:

分布均匀性:序列中的位分布应是均匀的,即0和1出现的频率大约相等。

独立性:序列中任何子序列不能由其他子序列推导出。

尽管有一些成熟的测试来判断位序列是否符合某个特定的分布,比如均匀性分布,然而还没有某种方法可以表明一个序列的独立性好。相反,却有很多测试可以证明一个序列不具有独立性。通常的策略是多进行一些测试直至可认为它的独立性足够强。

密码学中算法的设计经常使用这种“似乎随机”的数序列。比如RSA公开密钥加密方案的一个基本要求就是产生素数的能力。一般来说,判断一个给定的大数是否是素数很难的。采用穷举测试的方法需要把N除以N的1/2次方以内的奇数。如果N是10的150次方这种数量级的,这种大数在公钥密码中并非罕见,用穷举测试它是否为素数则超出了人和计算机的实际能力。然而,有许多有效的算法,可以随机地选择一些随机数来进行相对简单的运算,只要随机数足够多,就几乎可判定这个大数是否为素数。这类方法称为不确定性方法,在算法设计中经常用到。本质上说,若某问题的精确求解很难或很耗时,可以采用简单、简短、不确定性方法来取得某种可信程度的解。

不可预测性

在相互认证、会话密钥生成以及流密码之类的应用中,对随机数的要求不能仅仅停留在序列是统计随机的,而是要求随机数序列是不可预测的。所谓的“真随机数序列”是每个数都统计独立于其他数,因而不可预测。不过,马上就可以看到,真正的随机数序列很少用;一般看上去随机的随机数序列是由算法产生的。此时,必须要注意对手不能够从先前的随机数推导出后面的随机数。

 

上一篇:解决无线安全传输的方法 下一篇:盘点无线安全威胁有哪些?