信息安全基础综合实验讲义(伪随机数产生器)-2012版
信息安全基础(习题卷52)

信息安全基础(习题卷52)第1部分:单项选择题,共57题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]VPN是指A)虚拟的专用网络B)虚拟的协议网络C)虚拟的包过滤网络答案:A解析:2.[单选题]数据隔离组件依据用户通过维护终端设置的( )规则,对内外网间的数据流作报文识别后进行双向线速过滤,有效保证配电业务报文的访问控制和数据交换。
A)访问控制B)数字签名C)编码转换D)协议隔离答案:A解析:3.[单选题]对于获准认可的认证机构,认可机构证明( )A)认证机构能够开展认证活动B)其在特定范围内按照标准具有从事认证活动的能力C)认证机构的每张认证证书都符合要求D)认证机构具有从事相应认证活动的能力答案:B解析:4.[单选题]DOS是()。
A)拒绝服务攻击B)信息收集C)隐身巩固D)信息篡改答案:A解析:5.[单选题]( )可用来保护信息的真实性、完整性A)数字签名B)恶意代码C)风险评信D)容灾和数据备份答案:A解析:6.[单选题]Windows操作系统每个月都会发布一些漏洞更新修复程序,也被称为系统补丁。
请问,微软公司通常在哪一C)美国时间周一早八点D)美国当地时间,每个月第二个星期的星期二答案:D解析:7.[单选题]为增强访问网页的安全性,可以采用( )协议。
A)TelnetB)POP3C)HTTPSD)DNS答案:C解析:8.[单选题]struts2的任意代码执行,在国内引起了很多问题,下面对于代码执行漏洞说法错误的是( )A)代码执行时通过web语句执行一些os命令B)代码执行的防护中,可以利用“白名单”和“黑名单”的方式来清除url和表单中的无效字符C)代码执行的防护需要特别注意几个函数,例如system等D)攻击者可以利用代码执行执行任意命令,而与web应用本身权限无关答案:D解析:9.[单选题]负责安全在线监测的运行统计分析和报送工作的部门是( )。
A)国网信通产业集团B)南瑞集团C)中国电科院D)全球能源互联网研究院答案:A解析:10.[单选题]各单位按照“( )”的原则以及“管专业必须管安全、管业务必须管安全、管生产经营必须管安全”的网络安全工作原则,推进“三无七边”系统网络安全管控工作。
密码学中随机数发生器的安全性评估与优化

密码学中随机数发生器的安全性评估与优化一、概述密码学中的随机数发生器(Random Number Generator,RNG)被广泛应用于加密协议、数字签名和密钥协商等领域。
由于其关键作用,安全性评估和优化便成为了密码学中的研究热点之一。
本文将围绕密码学中随机数发生器的安全性评估和优化展开讨论。
二、随机数发生器的安全性评估随机数发生器在密码学中的作用是产生高质量的随机数,保证密码系统的安全性。
因此,评估随机数发生器的安全性显得非常重要。
目前,主流的评估方法如下:1. 统计测试法统计测试法是一种较为简单和有效的评估方法。
它通过对随机数序列的一系列统计特性进行检测,来评估随机数发生器的质量。
统计测试法最经典的就是美国国家标准局(NIST)发布的随机数检测工具集(NIST SP800-22),其中包括15种统计测试算法,覆盖了各种统计特性。
2. 线性复杂度检测法线性复杂度检测法是基于线性反馈移位寄存器(LFSR)的原理,利用数据的线性性质来对随机数序列进行检测。
它的优点是运算速度快,但是只能检测线性关系,容易被攻击者破解。
3. 非线性复杂度检测法非线性复杂度检测法是一种完全独立于序列产生器中任何特定数字序列产生技巧的检测方法。
它利用随机比特生成函数检测随机序列中比特的非线性特点,能够较好地检测出攻击者对序列的破解行为。
三、随机数发生器的优化随机数发生器的应用要求高质量、大数量的随机数序列。
因此,如何优化随机数发生器的质量和效率成为了该领域中的热点问题。
下面主要从以下几个方面阐述:1. 基础随机数生成器的优化基础随机数生成器通常是一个伪随机数生成器,因此为了保证其生成的随机数序列的质量,需要对其进行优化。
主要优化方法包括改进基础随机数生成器的算法和参数选择等。
2. 硬件实现随机数发生器的优化硬件实现的随机数发生器通常使用的是物理原理产生的随机数(如热噪声、光噪声、放电噪声等)。
其中,量子随机数发生器是当前安全性最高的随机数发生器,它基于量子力学原理,生成真正的随机比特序列。
网络信息安全综合实验系统v3.5(原理篇)资料

信息安全实验系列之网络信息安全综合实验教程Composite Experimental System of Network andInformation Security(原理篇)目录第1部分社会工程学 (1)实验1 敏感信息搜集 (2)练习一敏感信息搜集 (2)实验2 钓鱼式攻击手法 (4)练习一钓鱼式攻击手法 (4)实验3 密码心理学攻击 (9)练习一密码心理学攻击 (9)实验4 安全细节问题 (14)练习一安全细节问题 (14)第2部分密码学及应用 (20)实验1 古典密码算法 (21)练习一 Caesar密码 (21)练习二单表置换密码 (22)练习三仿射密码 (23)练习四维吉尼亚密码 (24)实验2 对称密码算法 (26)练习一 DES算法 (26)练习二 3DES加密算法 (36)练习三 AES算法 (37)练习四 IDEA算法 (46)练习五 RC4算法 (50)练习六 SMS4加密算法 (51)实验3 非对称密码算法 (53)练习一 RSA算法 (53)练习二 ELGamal算法 (56)练习三 DSA签名算法 (56)练习四大整数运算 (58)练习五 ECC签名算法 (59)实验4 Hash算法 (61)练习一 MD5算法 (61)练习二 SHA1算法 (67)实验5 密码应用 (71)练习一文件安全传输 (71)练习二 PGP应用 (72)练习三加密编程(一) (74)练习四加密编程(二) (74)练习五基于USBKey的软件授权编程 (75)实验6 PKI技术 (76)练习一证书应用 (76)练习二证书管理 (80)练习三信任模型 (81)练习四 PKI应用 (84)练习四 PMI应用 (86)实验7 信息隐藏 (89)练习一信息隐藏位图法 (89)练习二 LSB水印算法 (93)练习三 DCT水印算法 (95)练习四主动水印攻击 (96)第3部分主机安全 (101)实验1 系统安全 (102)练习一 Windows2003系统安全 (102)任务一用户权限管理 (102)任务二审核策略设置 (104)任务三注册表安全设置 (105)任务四 TCP/IP筛选 (107)任务五主机安全加固 (107)练习二 Linux FC5系统安全 (112)任务一权限模型 (112)任务二安全访问 (121)任务三 SELinux (126)任务四安全审计 (130)任务五配置Linux系统进行主动防御 (134)练习三主机审计 (135)实验2 口令安全 (136)练习一 Windows口令破解 (136)练习二 Linux口令破解 (137)实验3 Web安全 (140)练习一 Web脚本攻击 (140)任务一认识XSS (140)任务二盗取Cookie (144)任务三脚本攻击 (144)任务四 DOM-Based XSS挖掘 (144)练习二 Web服务器安全设置 (144)任务一 IIS安全设置 (144)任务二 Apache安全设置 (146)练习三 FTP安全配置实验 (153)练习四日志审计 (155)练习五网络事件审计 (162)实验4 数据库安全 (174)练习一 SQL注入 (174)练习二防范SQL注入 (181)练习三 SQL Server安全 (185)任务一 SQL Server 2000数据库安全配置 (185)任务二 SQL Server 2000数据库备份与恢复 (186)练习四 Mysql数据库安全 (189)任务一 MySQL数据库安全配置 (189)任务二 MySQL数据库备份与恢复 (189)实验5 软件安全 (192)练习一软件漏洞利用 (192)实验6 协议脆弱性分析 (195)练习一 SNMP协议脆弱性分析 (195)实验7 安全协议 (206)练习一 IPSec—IP安全协议 (206)练习二 SSL—安全套接层协议 (212)练习三 Kerberos—安全认证协议 (222)第4部分网络攻防 (236)实验1 信息搜集 (237)练习一信息搜集 (237)练习二主机发现 (240)任务一 ARP主机发现 (240)任务二 NetBIOS主机发现 (244)练习三端口扫描 (245)任务一 TCP端口扫描 (245)任务二 UDP端口扫描 (252)实验2 漏洞扫描 (254)练习一综合扫描与安全评估 (254)练习二模拟攻击方法 (255)练习三 Web漏洞扫描器 (261)练习四 FTP弱口令扫描器 (262)实验3 网络嗅探 (266)练习一明文嗅探 (266)练习二原始套接字嗅探器 (268)练习三 Winpcap嗅探器 (272)练习四 Wireshark工具的使用与TCP数据包分析 (279)练习五使用微软网络监视器来嗅探FTP会话 (281)实验4 缓冲区溢出 (283)练习一缓冲区溢出攻击 (283)练习二本地缓冲区溢出 (285)任务一利用跳转指令实现缓冲区溢出 (285)任务二定位参数地址实现缓冲区溢出 (289)练习三远程溢出与后门植入 (291)练习四 DNS溢出实验 (293)实验5 拒绝服务攻击 (296)练习一洪泛攻击 (296)练习二 DDos攻击 (297)练习三 Smurf攻击 (299)实验6 欺骗攻击 (301)练习一 ARP欺骗 (301)练习二 ICMP重定向 (303)实验7 网络后门 (307)练习一 Shell后门 (307)练习二无端口后门 (309)练习三后门启动技术 (310)任务一 Windows自启动技术 (310)任务二 Linux自启动技术 (314)练习四后门监听程序设计 (316)练习五后门驻留程序设计 (317)实验8 特洛伊木马 (318)任务一木马生成、植入与功能 (318)任务二木马删除 (322)练习二 Webshell (322)练习三 ARP木马与ARP防火墙 (326)练习四木马捆绑与隐藏 (328)练习五木马免杀 (329)实验9 防火墙 (333)练习一 Windows2003防火墙应用 (333)练习二 iptables应用 (337)任务一 iptables包过滤 (337)任务二 iptables事件审计与状态审计 (341)任务三 iptables NAT转换 (341)任务四 iptables应用代理 (344)实验10 入侵检测 (350)练习一基于网络入侵检测系统 (350)任务一数据包嗅探、记录与简单报警 (350)任务二字符串匹配与端口扫面攻击 (355)任务三 IP分片重组检测 (355)任务四误报漏报分析 (355)练习二 NIDS与防火墙联动 (357)任务一利用Guardian实现snort与iptables联动 (357)任务二利用SnortSam插件实现snort与iptables联动 (357)练习三 NIDS开发 (358)任务一开发实现TCP数据流重组 (358)任务二开发实现TCP端口扫面检测 (365)任务三开发实现特征匹配的NIDS (368)任务四开发实现NIDS与防火墙联动 (369)练习四自建实用IDS (370)练习五主机入侵检测 (375)实验11 VPN (377)练习一利用IPSec构建企业VPN (377)练习二利用PPTP构建企业VPN (382)练习三利用OpenVPN构建企业VPN (386)任务一使用Linux服务器构建企业VPN (386)任务二使用Windows服务器构建企业VPN (389)练习四利用SSL构建企业VPN (389)实验12 蜜罐蜜网 (392)练习一蜜罐引入 (392)练习二 DMZ区部署蜜罐 (394)练习三局域网络部署蜜罐 (398)练习四自制蜜罐 (404)练习五蜜网仿真 (408)任务一仿真单台路由器的网络 (408)任务二仿真多台路由器的网络 (411)任务三仿真网络宽带、延迟及网络丢包 (411)任务四仿真多入口路由 (411)练习六部署蜜网 (411)第5部分病毒攻防 (412)实验1 引导区病毒 (413)练习一 DOS引导区病毒 (413)实验2 文件型病毒 (416)练习一 PE病毒 (416)练习二 DLL注入型病毒 (432)练习三 COM病毒 (432)实验3 宏病毒 (441)练习一 Word宏病毒 (441)实验4 脚本病毒 (448)练习一 Java脚本病毒 (448)练习二 VB脚本病毒 (452)练习三 Linux恶意脚本 (456)练习四批处理脚本 (456)实验5 邮件型病毒 (457)练习一 Outlook邮件病毒 (457)实验6 蠕虫病毒 (459)练习一蠕虫仿真 (459)实验7 病毒行为分析 (462)练习一病毒行为分析 (462)练习二 Linux反病毒 (466)第6部分容灾备份 (467)实验1 文件恢复 (468)练习一 FAT32文件恢复 (468)练习二 Ext2文件恢复 (476)实验2 RAID磁盘阵列 (479)练习一 RAID基础 (479)练习二 RAID应用 (484)实验3 热备份 (487)练习一双机热备 (487)第7部分无线安全 (493)实验1 Wi-Fi基础应用 (494)练习一 WLAN通信 (494)练习二 AP安全措施 (500)实验2 Wi-Fi安全方案 (506)练习一 WEP安全模式 (506)第8部分身份验证 (514)实验1 面部识别 (515)练习一面部识别检测 (515)练习二面部识别登录系统 (520)实验2 动态令牌应用 (523)第1部分社会工程学著名黑客KevinMitnick在上世纪90年代让“黑客社会工程学”这个术语流行了起来,不过这个简单的概念本身(引诱某人去做某事,或者泄露敏感信息)却早有年头了。
南开大学22春“信息安全”《密码学》期末考试高频考点版(带答案)试卷号3

南开大学22春“信息安全”《密码学》期末考试高频考点版(带答案)一.综合考核(共50题)1.数据加密标准DES的迭代轮数是()A.8B.12C.16D.64参考答案:C2.一次字典攻击能否成功,很大因素上决定于()A.字典文件B.计算机速度C.网络速度D.黑客学历参考答案:A3.若有一个序列的周期为63,则至少需要()级的线性反馈移位寄存器才能产生该序列A.3B.4C.5D.6参考答案:D4.高级数字加密标准算法AES是在下面哪个加密算法的基础上改进而来的()A.RC4B.RijndaelC.LucifferD.IDEA参考答案:B5.下列关于密码学的讨论中,不正确的是()。
A.密码学是研究与信息安全相关的方面如机密性、完整性、可用性、抗否认等的综合技术B.密码学的两大分支是密码编码学和密码分析学C.密码并不是提供安全的单一的手段,而是一组技术D.密码学中存在可用的一次一密密码体制,它是绝对安全的参考答案:D6.在RSA密码算法中,选加密密钥e=139,若欧拉函数φ(n)的值为220,则解密密钥d为()A.11B.19C.23D.253参考答案:B7.不可能存在理论上安全的密码体质。
()T.对F.错参考答案:F8.现代分组密码都是乘法密码,分为Feistel密码和非Feistel密码两类,非Feistel密码只可以运用不可逆成分。
()A.正确B.错误参考答案:B9.在Hash函数MD5中,对一个明文块进行处理的主要是压缩函数f,则该函数需要的输入参数包括哪些()C.128比特的链接变量D.一个处理密钥参考答案:BC10.暴力破解与字典攻击属于同类网络攻击方式,其中暴力破解中所采用的字典要比字典攻击中使用的字典范围要大。
()T.对F.错参考答案:T11.在分组加密的4种工作模式中,最适合用来加密较短消息的是哪种工作模式()A.输出反馈模式B.电子密码本模式C.密码反馈模式D.密码分组链接模式参考答案:B12.下列哪些方法可用以生成密码上安全的伪随机数()A.DES的输出反馈(OFB)模式B.ANSI X 9.17的伪随机数产生器C.Rabin产生器D.离散指数比特产生器参考答案:ABCD13.数字证书不包含()A.颁发机构的名称B.证书的有效期C.证书持有者的私有密钥信息D.签发证书时所使用的签名算法14.加密的强度主要取决于()。
真随机数生成器原理-概述说明以及解释

真随机数生成器原理-概述说明以及解释1.引言1.1 概述在引言部分的概述中,我们将介绍真随机数生成器的原理。
随机数在许多领域中起着重要的作用,如密码学、模拟实验和数据加密等。
然而,传统的伪随机数生成器在生成随机数时存在一定的规律性和可预测性,这可能会导致数据的不安全性和模拟实验的误差。
因此,为了解决这一问题,真随机数生成器应运而生。
本文将深入探讨真随机数的定义、真随机数的重要性以及真随机数生成器的原理。
首先,我们将介绍真随机数的定义,即无法以任何方式预测或确定的数值。
接着,我们将探讨真随机数在密码学、模拟实验和数据加密等领域的重要性,说明为什么需要使用真随机数生成器。
随后,我们将详细讨论真随机数生成器的原理。
真随机数生成器是一种能够利用物理或环境噪声生成真正随机数的设备或算法。
我们将介绍一些常见的真随机数生成器方法,例如基于硬件设备的真随机数生成器和基于环境噪声的真随机数生成器。
我们将探究它们的工作原理和优缺点,并讨论如何确保生成的随机数具有高度的真实性和随机性。
最后,我们将总结本文的主要内容,并展望真随机数生成器的应用前景。
真随机数生成器在密码学中的应用可以加强数据的安全性,而在模拟实验中的应用可以提高结果的准确性。
此外,真随机数生成器还有望在数据加密、随机抽样和随机算法等领域发挥更重要的作用。
综上所述,真随机数生成器具有广泛的应用前景,值得进一步研究和探索。
通过本文的阅读,读者将能够了解到真随机数生成器的原理和应用,进一步认识到真随机数的重要性,并对相关领域的发展和应用提供有益的参考。
1.2 文章结构本文将从引言、正文和结论三个部分来探讨真随机数生成器的原理。
具体来说,文章结构如下:引言部分将简要介绍本文的背景和目的。
首先,我们会概述真随机数的定义以及其在各个领域的重要性。
接下来,我们会明确文章的结构,并简要介绍各个章节的内容。
正文部分将详细探讨真随机数生成器的原理。
首先,我们会对真随机数的定义进行进一步解释,包括其与伪随机数的区别和随机性的特征。
随机信号分析实验:随机序列的产生及数字特征估计

实验一 随机序列的产生及数字特征估计实验目的1. 学习和掌握随机数的产生方法。
2. 实现随机序列的数字特征估计。
实验原理1.随机数的产生随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。
进行随机信号仿真分析时,需要模拟产生各种分布的随机数。
在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。
伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。
伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。
(0,1)均匀分布随机数是最最基本、最简单的随机数。
(0,1)均匀分布指的是在[0,1]区间上的均匀分布,即U(0,1)。
实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:Ny x N ky y y nn n n ===-) (mod ,110 (1.1)序列{}n x 为产生的(0,1)均匀分布随机数。
下面给出了(1.1)式的3组常用参数:① 1010=N ,7=k ,周期7105⨯≈;②(IBM 随机数发生器)312=N ,3216+=k ,周期8105⨯≈; ③(ran0)1231-=N ,57=k ,周期9102⨯≈;由均匀分布随机数,可以利用反函数构造出任意分布的随机数。
定理1.1 若随机变量X 具有连续分布函数)(x F X ,而R 为(0,1)均匀分布随机变量,则有)(1R F X X -= (1.2)由这一定理可知,分布函数为)(x F X 的随机数可以由(0,1)均匀分布随机数按(1.2)式进行变换得到。
2.MATLAB 中产生随机序列的函数 (1)(0,1)均匀分布的随机序列函数:rand用法:x = rand(m,n)功能:产生m ×n 的均匀分布随机数矩阵。
(2)正态分布的随机序列 函数:randn用法:x = randn(m,n)功能:产生m ×n 的标准正态分布随机数矩阵。
rc4加密算法流程 -回复

rc4加密算法流程-回复RC4加密算法流程RC4(Rivest Cipher 4)是一种对称加密算法,由罗纳德·李维斯特(Ron Rivest)在1987年设计,在数据传输、网络通信和信息安全领域广泛使用。
RC4加密算法由一个伪随机数生成器(PRNG)和一个密钥调度算法组成,它以密钥和明文作为输入,在XOR运算下生成密文。
1. 密钥和密钥调度算法:RC4算法使用一个可变长度的密钥,长度为1到256字节。
首先将密钥以字节为单位保存起来,并将其作为初始的S盒。
S盒用于混淆密钥和明文产生伪随机的密钥流,在加密和解密过程中保持不变。
密钥调度算法使用S盒,将其进行打乱和置换操作,产生初始状态的S 盒。
S盒的置换操作通过将字节与特定索引对应的字节交换位置来实现。
2. 伪随机数生成器:RC4算法的核心是伪随机数生成器,它以初始的S盒作为输入,不断生成密钥流。
密钥流由RC4的核心异或算法所生成。
伪随机数生成器的处理步骤如下:- 初始化:置换S盒并初始化两个指针i和j为0。
- 加密循环:循环处理明文中的每个字节- 交换S盒中两个字节的位置:使用i和j的值作为索引,将S[i]和S[j]交换位置。
- 计算密钥流中的伪随机字节:通过将第一个字节与当前字节所在索引指向的字节进行交换,并将它们的和作为新的索引更新。
- 生成密文:将密钥流字节与明文字节进行异或运算,得到密文字节。
- 重置状态:RC4算法可以通过简单的重新初始化来重置状态。
3. 加密流程:RC4的加密流程可以描述如下:- 输入密钥:选择一个合适的密钥,并将其转化为二进制格式。
- 密钥调度算法:使用密钥调度算法生成初始的S盒。
- 伪随机数生成器:根据密钥流生成密文。
- 异或运算:将密钥流与明文进行异或运算,得到相应的密文。
- 输出密文:将密文作为输出,发送给接收方。
4. 解密流程:RC4的解密流程与加密流程相似,只需使用相同的密钥和密钥调度算法即可。
将密文与密钥流进行异或运算,得到明文信息。
《计算机信息安全》实验指导书

实验一对称密钥密码加密解密实验实验学时:2学时实验类型:设计实验要求:必修一实验目的1、掌握对称密钥密码体制的基本概念;2、掌握对称密钥密码体制加密/解密的工作原理;3、重点掌握DES密码算法加密/解密的基本原理;4、通过用DES算法对实际的数据进行加密/解密运算来深刻了解DES的运行原理。
二实验内容1、根据DES密码算法原理,用Turbo C2.0或Visual C++6.0设计编写符合DES密码算法思想的加密/解密程序。
三实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:Turbo C2.0或Visual C++6.0四实验原理1、DES算法工作的基本原理:DES是基于Feistel密码结构的分组密码,其入口参数有三个:key、data、mode。
其中,key为加密/解密时使用的密钥;data为加密/解密的数据;mode为其工作模式:当模式为加密模式时,明文按照64位进行分组,形成明文分组,此时key用于对数据加密;当模式为解密模式时,key用于对64位的密文分组进行解密,以恢复明文。
2、DES算法共进行16轮迭代操作,每轮中都使用相同的轮函数F,如下:F(Ri-1,Ki)=p_box(S_boxes(Expand(Ri-1) ⊕ Ki))整个算法的流程如图所示:DES加密算法流程图(一)、密钥生成1、生成种子密钥K使用密钥流生成器生成64位(8个字节)的种子密钥K,每个字节的第8位作为奇偶校验位,不参与实际运算中子密钥的生成过程。
2、生成每一轮迭代中使用的子密钥ki。
(1) 根据PC-1置换进行种子密钥K的变换,舍弃64位种子密钥K中的8个奇偶校验位,得到56位的密钥。
(2) 将变换后的密钥分为左右两部分各28位,分别称为C0和D,即PC-1(K)=C 0D0。
(3) 生成16个子密钥ki,1≤i≤16。
(i) 将Ci 、Di循环左移1位或2位,根据i值由“循环左移表”决定循环左移的位数,即计算C i=LS i(C i-1)和D i=LS i(D i-1),其中,LS表示循环左移。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二部分 伪随机数产生器实验
在密码技术中,建立单个数是“随机的”并没有意义。
对随机性的要求总是基于数的序列而言。
真正的随机数符合均匀分布且其生成不能重现。
计算机通过算法产生的随机数并不是真正意义上的随机数序列,只能称为伪随机数序列。
产生伪随机数序列的算法称为伪随机数产生器。
产生高质量的伪随机数序列对信息的安全性具有十分重要的作用,比如密钥产生、数字签名、身份认证和众多的密码学协议等都要用到随机序列。
一、实验目的
熟悉常用的伪随机数产生器算法。
运用高级程序设计语言实现一种伪随机数产生器算法的程序,加深对伪随机数产生器算法的理解。
二、实验原理
计算机产生的随机数是使用确定的算法计算出来的。
一旦知道了随机数算法和初始种子,就能够知道随机序列中任何一个随机数的值,因此,计算机产生的随机数是一种伪随机数。
伪随机数的生成算法称为伪随机数产生器。
伪随机数有多种生成算法。
1. 线性同余算法
到目前为止,使用最为广泛的随机数产生技术是由Lehmer 首先提出的称为线性同余算法,即使用下面的线性递推关系产生一个伪随机数列x 1,x 2,x 3,…
这个算法有四个参数,分别是:
a 乘数 0 ≤ a < m
c 增量 0 ≤ c < m
m 模数 m > 0
x 0 初始种子(秘密) 0
≤ x 0 < m 伪随机数序列{ x n }通过下列迭代方程得到:
1()mod n n x ax c m +=+
如果m 、a 、c 和x 0都是整数,那么通过这个迭代方程将产生一系列的整数,其中每个数都在0 ≤ x n < m 的范围内。
数值m 、a 和c 的选择对于建立一个好的伪随机数产生器十分关键。
为了形成一个很长的伪随机数序列,需要将m 设置为一个很大的数。
一个常用准则是将m 选为几乎等于一个给定计算机所能表示的最大非负整数。
因而,在一个32位计算机上,通常选择的m 值是一个接近或等于231的整数。
此外,为了使得随机数列不易被重现,
可以使用当前时间的毫秒数作为初始种子的设置。
2. Blum Blum Shub算法
Blum Blum Shub(BBS)算法是一个流行的产生安全的伪随机数的方法,由Lenore Blum、Manuel Blum和Michael Shub在1986年提出。
BBS的安全性基于对n的因子分解的困难性,即给定n,不能确定它的素因子p和q。
BBS算法过程描述如下:
输入:无
输出:生成一个长度为l的伪随机比特序列b1, b2, b3…, b l。
(1)选择两个大素数p和q作为随机种子,要求它们被4除时都余3。
即p≡q≡ 3 mod
4。
(2)令n = p x q,选择一个随机数s,使得gcd(s,n) =1。
(3)x0 = s2 mod n。
(4)i从1开始,不断重复以下操作,直到i经过逐次加1后超过l:
(4.1) x i= x i-12 mod n。
(4.2) b i = x i mod 2。
//每次迭代都取出x i最低位的比特。
(4.3) 输出b i。
美国NIST(美国标准与技术研究院)提供15项最新随机数测试标准,每项的测试结果均转换为p-value值进行判断,若p-value>=0.01,则说明该随机数序列具有随机性,否则不具有随机性。
这15项测试如表2-1所示:
表2-1美国NIST15提供的最新随机数测试标准
序号名称说明
Test 频率测试
(Monobit)
1 Frequency
2 Frequency Test within a Block 块内频率测试
Test 流程测试
3 Runs
4 Test for the Longest Run of Ones in a Block块内最长游程测试
5 Binary Matrix Rank Test 二进制矩阵测试
Transform (Spectral) Test 离散付利叶测试
6 Discrete
Fourier
非重叠模板匹配测试
Template
7 Non-overlapping
Test
Matching
Test 重叠模板匹配测试
Matching
8 overlapping
Template
9 Maurer’s “Universal Statistical” Test Maurer's普通统计测试
Complexity
Test 线性复杂性测试
10 Linear
Test 连续测试
11 Serial
Test 近似熵测试
12 Approximate
Entropy
13 Cumulative Sums (Cusum) Test 累积和测试
14 Random
Test 自由游程测试
Excursions
Test 自由变量测试
Variant
15 Random
Excursions
三、实验环境
操作系统:Windows 2000/XP/2003或以上版本。
应用软件:VC++ 6.0或以上版本。
四、实验内容和任务
本实验要求学生在掌握常用的伪随机数产生器算法的基础上,运用高级程序设计语言实现一种伪随机数产生器的算法,并通过具体运算测试函数的功能。
表2-2给出伪随机数产生器算法的函数接口定义,作为编程实现参考。
表2-2 伪随机数产生器函数接口
函数unsigned long randLCG(unsigned long a, unsigned long c, unsigned
long m)
功能线性同余伪随机数产生器函数
输入a、c、m
输出长整型伪随机数
函数unsigned long randBBS(unsigned long n, unsigned int bitCount)
功能Blum Blum Shub伪随机数产生器函数
(两个模4余3的素数的乘积), bitCount (限定伪随机数的bit个数。
输入 n
例如,要产生32bits的随机数就将bitCount设置为32))
输出长整型伪随机数
线性同余伪随机数产生器的界面实例如图2-1所示。
点击“线性同余产生器”按钮,选择伪随机数产生器算法产生伪随机数。
点击“清空”按钮,可清空输入,以便重新输入测试值。
图2- 1线性同余伪随机数产生器界面
BBS伪随机数产生器的界面实例如图2-2所示。
点击“BBS产生器”按钮,选择BBS 伪随机数产生器算法产生伪随机数。
点击清空按钮,可“清空”输入,以便重新输入测试值。
图2- 1 BBS伪随机数产生器界面
【验证1】线性同余伪随机数产生器的缺省设置为a = 69069,c = 5和m = 4294967295。
点击“线性同余产生器”按钮产生第一个随机数。
不断点击该按钮将会生成一个伪随机数序列,记录产生的第一个~第五个数,记录下来。
点击“清空”按钮后,使用相同的参数设置,点击“线性同余产生器”按钮。
观察产生的数列,并与前一次生成的数列进行对比,是否一致。
【验证2】BBS伪随机数产生器的缺省设置为p=383,q=503。
种子s为随机选择的与n= 383*503=192649互素的整数。
点击“BBS产生器”按钮产生第一个随机数。
不断点击该按钮将会生成一个伪随机数序列,记录产生的第一个~第五个数,记录下来。
点击“清空”按钮后,使用相同的参数设置,点击“BBS产生器”按钮。
观察产生的数列,并与前一次生成的数列进行对比,是否一致。
五、实验报告
1. 写出伪随机数产生器的设计思路。
2. 写出线性同余伪随机数产生器函数randLCG的程序流程图和实现的代码。
3. 写出伪随机数产生器的实例,验证randLCG函数的功能。
4. 写出Blum Blum Shub产生器函数randBBS的程序流程图和实现的代码。
5. 写出伪随机数产生器的实例,验证randBBS函数的功能。