序列密码算法的安全性主要取决于算法所产生的伪随机序列的随机性。NIST给出16种伪随机序列检测方法,但它们的适用范围是对选定的一段序列进行检测。如何对大量数据段随机性进行检测还需要系统化探讨。本文结合NIST的伪随机序列检测法辅以可视化方法,并对RC4算法产生的伪随机序列进行随机性检测。通过改变测量参数使可视化的结果更为丰富。通过比较分析,观察到使用不同的密钥长度所得到的图像结果不同,密钥越长特征图像的点聚集程度越高。 The security of stream cipher mainly depends on its randomness of pseudo-random sequence. NIST has provided 16 methods for pseudo-random sequence detection, however they are only capable of detecting one selected segment. Hence, the randomness testing method for large numbers of segments needs further systematic research. This paper discussed the detection of pseudo- random sequence generated by the RC4 algorithm. The detection was achieved by combining the NIST detection methods and visual methods. The visualization results became more abundant by changing the parameters. The research result shows that using different key lengths will result in different results and that longer key length will lead to more aggregated image.
陈河源1,郑智捷2
1云南大学软件学院信息安全系,云南 昆明
2云南省软件工程重点实验室,云南 昆明
Email: heyuanchen91@163.com
收稿日期:2015年5月19日;录用日期:2015年6月6日;发布日期:2015年6月10日
摘 要
序列密码算法的安全性主要取决于算法所产生的伪随机序列的随机性 [
关键词 :序列密码,伪随机序列,可视化,随机性检测
密码学是信息安全领域中最为重要的分支 [
RC4加密算法是Ronald Rivest在1987年设计的密钥长度可变的序列密码算法 [
本文借助NIST中的随机序列检测方法对RC4算法的密钥流进行测算、绘图、比较。在对RC4算法密钥流的绘图过程中发现改变RC4算法的密钥长度,密钥越长图像越汇集。这对序列密码研究中密钥流的研究具有一定的价值。
本文借助NIST的随机序列检测方法可以直观的得到一段数据流随机性的相关数据Pvalue,可以便利的用其与随机序列的Pvalue进行比较,判断其是否是随机的。本文主要采用了块内频数检验法,计算M位块中“1”和“0”数比例的分布情况 [
本文所做的研究主要步骤有:数据流预处理、对数据流进行分段处理、计算Pvalue、统计不同Pvalue的数据段个数、通过固定的绘图公式进行可视化。体系图如图1所示。
数据流预处理部分主要是将加密算法所产生的密钥流转化为二进制序列 [
图1. 系统体系结构
着手分析。在得到可视化结果后可以让研究人员直观的观察数据的分布情况,便于总结出图形的固定特征。
本文为伪随机序列的检测从数学计算及可视化角度给出了一种综合研究分析方法,尝试性的打开科学且便利的伪随机序列检测方法的大门。
NIST所给出的随机序列测量方法针对的是一串连续的0-1序列,所以需要先将序列密码算法所产生的伪随机序列转换为一串连续的二进制0-1序列,再作为NIST随机性检测方法的输入数据 [
NIST所给出的随机序列检测方法虽然没有明确指出所测量数据段的建议长度,不过在一段有特定含义的数据段达到一定的长度后,在某些指标上来看,它即将变为相对随机的数据段。所以我们尝试将数据流分段测量,分段后再运用NIST的随机序列检测方法进行Pvalue的计算。
我们假设初始序列长度为N,先把序列分为长度为L的数据段,不足L舍弃,则共得到⌊N/L⌋段数据段 [
NIST给出了16中随机序列检测方法,不同的检测方法所针对的检测目的不同 [
在所测量的密钥流足够的长的情况下,通过分段会得到海量的Pvalue。庞大的数据量已无法用传统的分析方法进行分析,所以本文对所得到的Pvalue进行数量统计,将相同的Pvalue数据段归为一类 [
在密钥流足够长的情况下,所得到的Pvalue的情况也是各式各样的,实际情况比图2的情况又复杂许多,所以我们还需要进行进一步的统计。统计Pvalue取0 ~ 0.1、 0.1 ~ 0.2、 0.2 ~ 0.3、……0.9 ~ 1.0的数据段的个数。再计算出Pvalue取0 ~ 0.1、 0.1 ~ 0.2、 0.2 ~ 0.3、……0.9 ~ 1.0时各组所占的百分比,分别记为p1, p2, p3……p10 [
在得到分类整理好的统计数据之后,我们需要将统计数据很好的表达在图像上,本文所采取的是二维图像的表示方法[
通过以上绘图公式,我们可以得到的图像中如图3所示。
本文中的可视化模型共涉及到四个可以改变图形的参数,即打点参数t和t’,分段参数L和S。从绘图公式中我们可以根据指数函数图像直观的估计改变参数t和t’所带来的图像变化,所以在后面我们进行测量、可视化的过程中我们优先改变t和t’。选定了合适的t和t’之后,我们再改变分段参数L和S来观察图像的变化。参数的可选范围和所选范围如表1所示。
t | t’ | L | S | |
---|---|---|---|---|
可选范围 | 1, 2, 3∙∙∙ | 1, 2, 3∙∙∙ | 1, 2, 3∙∙∙ | 1, 2, 3∙∙∙ |
所选范围 | 1, 2, 3, 4 | 1, 2, 3, 4 | 160 - 28,800 | 20 - 480 |
表1. 参数可选范围及所选范围
图2. 对Pvalue数量的统计
图3. 利用绘图公式所得到的样图
本文利用上述提到的模块方法对RC4算法所产生的密钥流进行系统化的检测,挑选其中部分特征明显的结果进行展示。在对RC4算法改变密钥长度进行绘图检测之前,本文所采用的RC4密钥长度为128bit,即一般情况下的最短密钥长度,使得改变参数t、t’、L和S的结果是可信的伪随机序列的检测结果。本文采用了控制变量法,通过一次改变一个相关变量来观察图像的变化趋势。本文优先选择了改变参数t和t’来观察图像的变化,因为通过观察绘图公式易知改变参数t和t’对图像所带来的改变,在改变参数t和t’时,在一个矩阵中纵向改变t横向改变t’,使得t和t’的综合变化结果更易于观察。其次,再尝试改变参数L和参数S,在改变参数L和参数S时,逐步加大变化的程度,呈现出渐变和极端的情况。最后探究了改变RC4算法的密钥长度对可视化结果的影响,最短采用的是1字节的密钥,最长采用的是16字节的密钥。
从图4中我们可以看到在改变参数t和t’的图形变化趋势:增大t,图形向y轴靠近,增大t’图形慢慢远离x轴。这点从观察绘图公式即可比较容易理解,t是pi的t次方,p作为概率值是一个介于0和1之间的数字,由指数函数的图像可知增大t则pi的值变小,则图形向y轴靠近;t’是pi的开t次方,由于p是一个小于1大于0的数字,由指数函数的图像可知增大t’则pi的值变大,则图形远离x轴。图4更大的意义或许在于帮助我们选择一个比较合适的t和t’为后面改变其他参数做铺垫。由于横向是增大t’,纵向是增大t,通过这个矩阵我们可以直观的看到同时增大t和t’,同时减小t和t’,单独增大t,单独增大t’等一系列的情况。最后本文选择了t = 2,t’ = 3的情况来展开后面的研究。
图4. 块内频数检测法L = 3200 S = 160
从图5中我们可以看到改变参数L的图形变化趋势:增大L,图像的点逐渐增多并且重合的点也逐渐增多,图像的分层逐渐变得明显最后又汇聚到一起。
从图6中我们可以看到改变参数S的图形变化趋势:增大S,图像逐渐开始分层最后变得越来越稀疏,图像的点在减少的同时并且重合的点也逐渐减少。
经由对图5和图6的比较,我们不难发现在块内频数检测法下增大L与缩小S效果近似,都是一个图像逐渐分层再汇聚的过程。
从图7中我们可以看到在RC4算法分别采用1至16字节密钥的情况下所产生的密钥流在块内频数检测法下L = 3200,S = 80,t = 2,t’ = 3的检测结果。我们知道RC4算法在一般情况下密钥长度超过128 bit认为是安全的,所以我们可以多留意采用16字节密钥的图像情况。从图像中看到增加密钥长度图像是一点一点变化的,总体上看是一个汇集的过程,但是在汇集的过程中更长密钥的图像也有轻微扩散的情况。
图5. 块内频数检测法S = 160 t = 2 t = 3
图6. 块内频数检测法L = 3200 t = 2 t’ = 3
比较相邻的两幅区别不大,但比较密钥长度差距大的(如密钥为1字节和密钥为16字节)图像差距较为
明显。由此我们猜测对于RC4算法在密钥长度逐渐增加的过程中,密钥流的随机性逐渐变好。这样的结果也与我们所知道的加密算法的特点相一致。
感谢国家自然科学基金、云南大学软件学院以及云南省软件工程重点实验室对信息安全研究项目的 基金支持。
图7. RC4改变密钥长度采用块内频数检测法 L = 3200 S = 80
国家自然科学基金资助项目(61362014)。
陈河源,郑智捷, (2015) 基于块内频数检测法对RC4算法产生的伪随机序列检测 The Detection of Pseudo-Random Sequence Generated by RC4 Algorithm Based on Frequency Test within a Block. 软件工程与应用,03,34-43. doi: 10.12677/SEA.2015.43005