列生成序列密码密钥序列的方法

列生成序列密码密钥序列的方法
列生成序列密码密钥序列的方法

一种利用公开真随机序列生成密钥序列的方法

参赛队员:李荣莎沈峥迪

指导教师:苗金利

所在学校:北京四中

摘要:本文提出了一种生成序列密码的密钥序列的新思路:将公开的真随机序列引入密钥序列的生成过程,从而使密钥序列在公开真随机序列的影响下体现出较好的随机性,并与公开真随机序列有较低的相关性,从而具有良好的保密性。基于此思想,我们设计了两种具有良好性质的具体加密方法。

关键字:序列密码密钥序列

A method for generating encryption key stream

using a public random sequence

Abstract: In this paper, we put forward a new method for generating the encryption key streams of stream ciphers, in which a public random sequence is invited into the process, so that the encryption key stream would present comparatively good randomness under the influence of the public random sequence; at the same time, the encryption key stream would show fairly low correlation with the public random sequence, because of the effect of encryption methods, so that it would enjoy good confidentiality. Based on this thought, we have designed two specific encryption methods which have good characters mentioned above.

Key words: Stream cipher, encryption key stream

一 背景

1.1 密码体制应具备的性质

密码分析者可以对密码体制进行如下攻击:

(1) 唯密文攻击

(2) 已知明文攻击

(3) 选择明文攻击

(4) 选择密文攻击

密码系统的安全性主要由保密性和可靠性衡量。

对算法的保密性的要求主要有:

在已知与密文相对应的明文的情况下,密码分析者要从截取的密文中系统地确定解密变换,在计算上是不可行的。

密码分析者要从截获的密文中确定明文,在计算上是不可行的。

对算法的可靠性要求有:

在已知与密文相对应的明文的情况下,密码分析者要有规律的确定加密变换,在计算上是不可行的。

D C是m集合中的有效明文,

密码分析者若想有规律地求出密文C',使得(')

K

在计算上不可行的[1]。

为使密码体系具有较好保密性,加密方法须使得明文和密文间的统计规律难以得出,也就是要将明文充分混淆扩散。

1.2 常用密码体制

1.2.1序列密码

序列密码是常用加密方法之一,通信双方用一个随机序列与明文序列进行叠加来产生密文,用同一个随机序列与密文序列进行叠加来恢复明文。

在Vernam密码体制中,如果对不同的明文用不同的密钥进行加密,则这时的Vernam体制就是所谓的“一次一密”密码体制。 “一次一密”密码体制在理论上被认为是不可破译的。但在实际应用中,“一次一密”密码体制要求每传送一个明文,都必须产生一个新的密钥并通过一个安全的信道传送给接收方,这给密钥管理带来了一定的困难。因此,“一次一密”密码体制并不很实用,具有很大的局限性[2]。随着微电子技术和数学理论的发展与完善,基于伪随机序列的序列密码得到了长足的发展和应用。在序列密码中,加密和解密所用的密钥序列大都是伪随机序列[2]。

1.2.2分组密码

利用分组密码对明文进行加密时,需要首先对明文进行分组,每组的长度都相同,然后对每组明文分别加密得到等长的密文。分组密码的安全性应该主要依赖于密钥,而不依赖于对加密算法和解密算法的保密[2]。

二 空中信息加密体系

在现实世界中可以获得真随机序列(如根据放射性衰变、电子设备的热噪音、宇宙射线的触发时间等等),我们将这样的公开随机序列称为MP 序列。通信双方约定一种运算,这种运算可利用不断获取的MP 序列生成具有保密性的新序列,所生成的新序列将被作为密钥序列。我们将双方约定的这种运算叫做明序列加密,生成的新序列称为MC 序列,其中,明序列加密过程中的一些参数是保密的。发方将MC 序列与明文异或可加密,密文经信道传输至收方,收方将MC 序列与密文异或可解密。(如图2-1)

空中加密体制的关键步骤是通过明序列加密生成密钥序列。该体制的本质是序列密码,因此可将序列密码对密钥流的基本要求作为参考:

(1) 极大的周期。 (2) 良好的统计特性。

(3) 不能用级数较小的(可实现长度)线性移位寄存器近似代替,即有很高的线性复杂度。

(4) 用统计方法由密钥序列{i k }提取密钥生成器结构或密钥源的足够信息在计算上是不可能的。[3]

与上述要求中的(1)、(2)相对应,对于空中信息加密体制而言,理想的密钥流(MC 序列)应当不存在周期,其统计特性与MP 序列的统计特性正相关。

同时,空中信息加密体制良好的保密性还依赖于MC 序列与MP 序列之间较低的相关程度。

MP 序列在明序列加密过程中应被充分混淆与扩散,以降低它与MC 序列的相关程度。这与分组密码中对明文混淆与扩散的思想相类似。

空中信息加密体系与现行加密方式的主要区别在于:

(1)引入了公开随机序列MP,为通信双方不断获得随机序列创造条件。

图2-1

(2)明序列加密的算法不一定有相应的解密算法。使用现行加密方式时,发送方对信息加密,接收方则要作相应的解密运算;在明序列加密过程中,双方只需对公开序列MP进行同样的“加密”运算——这使得设计空中信息加密体制的运算方法时不必保证存在相应的解密运算,设计者有了更多可以尝试的方案。

然而应注意,由于攻击者可以获取MP序列并由此入手对密文进行分析,明序列加密方法对MC序列与MP序列间的非相关性要求非常高。也就是说,加密方法必须使分析者在已知MP序列的情况下依然很难求得MC序列。

三 公开随机序列的生成

3.1 依据物理过程

里吉雷欧(Frigerio)等人的真随机数获取 :用一个α粒子放射源和一个高分辨率的计数器做成的装置,在20 毫秒时间内平均记录了24.315个α粒子。当计数为偶数时,便在磁带上记录二进制的“1”。 这个装置每小时可以产生大约6000个31比特(bits)的真随机数。

3.2 根据人们日常生活中的行为

方案一:鼠标法

在每次开机时,用电脑生成伪随机序列列(0或1),按行将显示屏上的晶格编号。此后,追踪鼠标的移动路线,“沿途”记下晶格的号码,即生成了随机数列。可以同时追踪多个电脑的鼠标路径,存入同一存储器。

方案二:股票法

双方选取一些股票,并排序。每隔相等时间刷新一次股价,对于一支股票,股价升记为1,下降记为0。刷新后,再用约定的方式重新对股票进行排序。用此方式随时记录新生成的数列,并存入存储器。

存储器中即得到随机序列。

这里,我们只是提供了一些根据人们活动来设计生成随机序列的方法。其他人们的随机行为包括每天每辆公交车到达中间某站时间的秒数(奇数记为1偶数记为0,下同)、地铁中砖块被踩的次数(单位时间内被踩奇数次的砖标记为1,偶数次的砖标记为0,将所有砖块对应的标记数顺次排列组成序列)等。

值得一提的是,这样的选取随机数的方法还具有一定的隐写功能。MP序列的隐写功能也为空中信息加密体制增加了一定的安全性。

四 节点-网络操作法

4.1 基本结构:

4.1.1网络结构

加密机是由许多“节点”与“通道”构成的网络。一个节点J连接有若干

条输入通道和若干条输出通道。节点内存有一个多元函数F(每个节点对应的函数通常都是不同的)。在每一时刻,节点都存有一个由m 元数组构成的“状态”——12(,,)a a m ……,a 。

图4-1就是一个与两个输入通道和两个输出通道相连的节点:

4.1.2 节点操作过程:

当一个信息元k x 在某一时刻沿通道传向节点i J 时,i J 将以自身状态12(,,)a a m ……,a 和k x 为自变量,通过存储在i J 的运算法则i f 生成信息元1k x +=12(,,,)i k f a a x m ……,a 。之后,节点按照某种方向判定法来决定将1k x +沿哪一个输出通道输出。接着,节点i J 按照某种法则改变自身状态,成为12(',',')a a m ……,a 。然后,经过该节点操作的信息元就会传入另一节点进行操作。

一个网络中,MP 中的信息元i p 经过多次传输和操作,最终会由某个出口从网络中输出。此时它的取值即可作为MC 序列中相应位 i c 的值。将i p 变换为i c 的操作称为一次“一位操作”,记为()i p i F c =。

以下给出两种具体的实现方式:

4.2方案一:状态同步变换机

4.2.1网络结构:阶梯金字塔网络(如图4-2)

该网络呈阶梯金字塔形,节点分层排列,每个节点都与上层的一个节点相连,并连接下层的两个节点。整个网络有一个入口,2n 个出口(n

为网络的节点

图4-1

层数)。其中,最后一层每一个节点连接的两个出口分别对应0和1两个数值。

4.2.2运算法则:

每个节点处存有周期不同的伪随机序列生成器。明序列加密过程开始时,节点i J 以自身生成的伪随机序列i m 中的一个标记点作为起始状态。MP 序列中的一位数x 输入网络后,接收它的节点J x 将与标记点后的第一位数异或,若异或结果为0,则将x 原沿左侧通道输出该节点;若异或结果为1,将x 沿右侧通道输出该节点。一个操作完成后,所有节点的标记点沿伪随机序列后移一位。 这样,每当x 进入一个节点,系统都进行相应操作,最后,x 将从最下层的一个出口输出,将x 和这个出口对应的值异或,即为MC 序列相应位的值。(在这一步之前,x 的值一直不变。)

将MP 序列中的数逐位由上方入口输入网络,输出后,在MC 序列中记录输出值。然后,再将MC 序列中的下一位输入网络,以此类推,生成MC 序列。

4.2.3伪随机序列生成器的选取:

我们建议对大多数节点,以可生成统计平衡性良好的m 序列的布尔函数为基础,生成伪随机序列。但由于每次操作,所有序列的标记点都同步移位,因此系统会出现周期循环。为扩大系统的周期,可以将m 序列进行改造,使不同节点间周期互素。

4.2.4初始状态的保密:

0 1 0 1 0

101

……………………………………………………………………

图4-2

虽然每个节点中序列的周期长度互素,在大量加工MP 序列的情况下仍不能保证整个系统不出现周期循环。对于这个问题,我们假定单次通信所利用的MP 序列长度远小于系统周期,但长期的通信总量超过这个周期。

如图4-3,加密机的状态有很大的保密周期,且加密机只能按顺序生成序列。

在每次通信前,双方可通过不安全信道说明:以上次通信结束为起点,令加密机的状态后移状态的数目。在双方已知系统的周期的情况下,恰当设定状态后移,可以部分隐蔽因循环而造成的状态重复。

4.2.5安全性分析:

如图4-4,我们首先以两层节点的加密机为例,分析空中信息加密体制在状

态同步变换机上的保密性:

设第一层节点中的序列为p ,第二层两个节点中的序列分别为1q 和2q ,设输入的序列为A ,输出的序列为C 。

由状态同步变换机的运算法则,我们可以得到C

序列的表达式:

0 1 0 1

121212C=(p+A+1)(q +A)+(p+A)(q +A)=(p+1)q +p q +A (q +q +1)

由上式可知,输入的序列A 影响着输出序列C。为了观察A 对输出序列的影响,我们引入一个运算机制与状态同步变换机相似、但是不受MP 序列影响的加密机,比较二者在工作量相当的情况下产生的序列的复杂度。假定A 为0序列(即每一位都是0),则加密体系中输出序列不受A 的影响,那么我们就得到了一个这样的加密机。设此时输出序列为0C ,那么

012=(p+1)q +p q C

0C 序列的本质是运算量与C 相当,但没有输入的序列A 参与的一种由传统非线性序列生成器生成的序列。0C 序列的线性复杂度是有限的,然而C 序列在随机序列A 的影响下,线性复杂度大大增强。

假设序列p 、1q 、2q 和A 彼此独立,且每个序列中0和1出现的概率都是

1

/2。c 序列的值可以通过真值表表示:

p 1q 2q A C 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1

1

1

1

可以看出,C 序列中0、1出现的概率都是1/2,且当p 、1q 、2q 或A 中某一序列的取值确定时,C 序列中0和1出现的概率依然相等。因此C 序列具有良好统计特性,而且在A 的取值已被获悉的情况下,C 取0和1的可能性依然相等。即使分析者得知序列A 的取值,依然很难判断C 序列的取值。

多层的状态同步变换机中,与第一层相连的两个分支分别可以等效为两个

复杂的序列生成器(如图4-5),设其表达式

为i i P Q A + (i=1,2)

,A 为输入到该分支的MP 序列中的数值。设第一个节点内的序列为r,则整个加密机输出序列的表达式为:

1122121122(1)()()()(1)[(1)]r A P Q A r A P Q A r P r P P rQ P r B A ++++++=+++++++

本加密体系中MP 序列中一位数字的变化不会引起MC 序列中其他位数字的变化,但

由于每加密一位信息,系统都自动后移一个

状态,而系统的周期是很大且保密的,所以

在进行选择明文攻击时,很难在加密机的同一状态进行多次试验。由于初始状态不同的缘故,即使输入的MP 序列中存在大段重复段落,加密所得的MC 序列之间相似度也很低。

因此,这种方法生成的MC 序列可以作为序列密码体制中良好的密钥序列。

状态同步变换机是一项空中信息加密体制下的尝试。将明序列加密机制略作改动(例如:每次节点操作结束后,只令信息元此次通过的节点改变状态,而其他节点状态不变),还可以得到一些新方法。

4.3方案二:状态干扰机

4.3.1网络结构:三向交错网络(如图4-6)

该网络可看作三条通道交错盘结而成,两条通道的交错点即为一个节点。整个网络有三个入口,三个出口。每一个节点都与两个输入端和两个输出端相连。

4.3.2运算法则:

在任一个节点i J 中,存有一个i m 级布尔函数i f 。加密过程开始时,节点i J 处有一个i m 元数组12mi (a ,a ,,a )……。当信息元x 传入i J ,令i 12mi x'=f (a ,a ,,a )x ⊕……。设定节点的方向判定法为:若x=0,将'x 沿左侧通道输出;若x=1,将'x 沿右侧通道输出。这一过程完成后,将i J 中的i m

元数组变

4-6

图4-5

为12mi 23mi (a ',a ',,a ')=(a ,a ,,a ,x)…………。注意,信息元的值是经常变化的。 三个入口轮流接收MP 序列产生的数。当MP 序列中一个数由某个入口输入并通过网络后,记录输出值作为MC 序列相应位的值。然后将MP 序列下一位数由下一个入口(以1→2→3→1……的顺序)输入。如此进行,产生MC 序列。

4.3.3安全性分析:

如图4-7,我们以两个节点的加密机为例,对状态干扰机的安全性进行分析。 设输入的MP 序列为m,输出的MC 序列为c,其中序列m 取0和1的概率都为1/2。并假设每个布尔函数取值为0和1的概率都为1

/2。

C 序列的取值及输出数字通过的出口等情况可通过如下数表表示: 入口 m

1f 2f 经过节点c 出口 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1、2 1 3 1 1 0 1 1、2 0 3 1 1 1 0 1、2 0 2 1 1 1 1 1、2 1 2 2 0 0 0 1 0 1 2 0 0 1 1 0 1 2 0 1 0 1 1 1 2 0 1 1 1 1 1 2 1 0 0 1、2 1 3 2 1 0 1 1、2 0 3 2 1 1 0 1、2 0 2 2 1 1 1 1、2 1 2 3

2

2

3

出口1 出口2 出口3

图4-7

3 0 0 1 2 1 2 3 0 1 0 2 0 2 3 0 1 1 2 1 2 3 1 0 0 2 1 3 3 1 0 1 2 0 3 3 1 1 0 2 1 3 3

1 1 1

2 0

3 由数表我们得到如下结论:

(1) 当输入值确定时,输出值为0和1的可能性均为1/2;

(2) 节点每次改变状态后,新状态末位取值为0和1的可能性均为1/2。 (3) 将大量数据输入加密机时,经由三个出口输出的数字数量大体相同,且输出为0和1的概率也相同;

(4)将大量数据输入加密机时,任一个节点都与大约数据总量2/3的数发生

操作,平均每个数经过4

/3个节点。

虽然信息元输出经过的出口与它输入的入口位置有很大关系(例如由入口1输入的信息元有一半的可能性由出口1输出),但由于实际应用中网络的层数较多,信息元在某层中经过某个通道的概率要通过对前一层的情况进行迭代算出。因此当层数较大时,信息元经过三条通道的概率大致相等。

上述分析表明,在已知m 取值的情况下,预测c 的取值和信息元所经路径都是困难的。

另外,节点在输入数据的影响下不断改变状态,所输出的序列不是几个普通序列的简单合成,因此输出序列具有很高线性复杂度。

当输入序列中一位数字改变时,网络中有大量节点的状态被改变,将影响此后序列的输出值,达到雪崩的效果。但改变的数字不会影响此前序列的输出值。因此,建议状态干扰机的使用方法为:将MP 序列输入加密机后,再将输出序列反向输入加密机,将第二次的输出结果作为MC 序列。这样,将会达到较好雪崩效果。

当然,系统对于布尔函数的选取也有一定的要求:布尔函数不会削弱由于MP 的随机性导致的系统随机性(一个最显然的条件是,布尔函数的输出值不能为恒定值)。将系统中的布尔函数都不会削弱系统随机性的情况称为理想状态。在这种理想状态下状态干扰机会使得生成序列难预测且有较好的统计平衡性,可以作为明序列加密的方法。

五 流迭代法加密 5.1 定义和说明

(1)截取与明文字符长度n 相同的公开序列MP,设为A,设其每一位为

12,,...,n a a a

(2)取f 为一m 元函数,由消息收发双方约定且保密。在k 进制体系中,f

应有m k 种对应。

以二进制,m=3为例,取一表格:

十进制 0 1 2 3 4 5 6 7 二进制 000 001 010 011 100 101 110 111 F f(0,0,0) f(0,0,1) f(0,1,0)f(0,1,1)f(1,0,0)f(1,0,1) f(1,1,0)f(1,1,1)

将f 表示为f:f(0,0,0)f(0,0,1)f(0,1,0) f(0,1,1) f(1,0,0) f(1,0,1) f(1,1,0) f(1,1,1)

例如:若f(0,0,0)=1,f(0,0,1)=0,f(0,1,0)=0, f(0,1,1)=1, f(1,0,0)=1, f(1,0,1)=0, f(1,1,0)=1, f(1,1,1)=0,则表示为f:10011010。称表示f 的数(例如10011010)为f 数

(3)约定一取数方式12()(,,...,)m i i t i t i t g a a a a +++=

其中12,,...,m t t t 为约定的互不相等的整数且12,,...,[1,1]m t t t n n ∈?+?,且存在唯一k 使0k t =。

()i g a 中的数会通过f 影响a i 的运算结果i a ′。

说明:所有的脚标都在模n 的情况下。即:若出现k a 的脚标[1,]k n ?,则取

mod k k n ′=代替k 。

(4)以下定义操作()F A :

计算11(())f g a a ′=,并用1a ′代替1a 。(即:此后若在()k g a 中取到1a ,则应取

1

a ′的值。下同) 计算22

(())f g a a ′=,并用2a ′代替2a 。 ……

计算(())n n

f g a a ′=,并用n a ′代替n a 。 这样,整个序列A 被代替为另一序列A ′。 定义()'F A A =。称操作()F A 为一轮操作。 (5)约定()((...(())...))k A F F F A F =

(6)对于输入的(双方约定且保密的)k Z +∈,()k A B F =为密序列即B 为MC 序列。

k 个

(7)综上,双方约定的保密参数(密钥)为:()(()),,,i i a g a m k g f

5.2加解密过程概述

(1) 双方截取了同样的公开序列A,设其长度为n。

(2) 双方均用存有密钥,,(),(())i i m k g a f g a 的加密机计算密序列()k A B F = (3) 消息发送方用序列B 与明文相加取模,产生密文。消息接收方用序列B 与密文相减取模,产生明文。

5.3保密参数(密钥)分析

前面提到,双方约定的保密参数为:,,(),(())i i m k g a f g a 在以下的分析中,以二进制的情况为例。

(1)对于一定的m,(())i f g a 中有2m 种对应情况。为了使密钥保存方便,m 不应过大。

(2) 为达到完全混淆的效果(雪崩效应),应有2n

m n k m

≥=

(3) 采用在一轮操作中随时“替代原数”(即:得到1

a ′后若在()i g a 中取到1a ,则应取1a ′的值)的策略,是为了防止被取用的那段公开序列中的重复部分会被加密成同样的结果,导致B 与A 有较明显的相关性。为了更好地实现这一设想,约定()i g a 时,i t 中负数的个数应略大于正数的个数。因为两段重复部分的前面部分不同,所以对这两段重复部分的操作产生较大影响,有利于生成不同的结果。

(4) 下面重点讨论(())i f g a 的设计

定义:能使()F A 与A 一一对应的(())i f g a 称为“不重f”

鉴于对于确定的数列{t m },其中数字的不同排列顺序可通过改变f 调整至等价(例如:11()(,,)i i i i g a a a a ?+=,f:10011010与11()(,,)i i i i g a a a a +?=,f:11000110是等价的),不妨设12...m t t t <<<其中0k t =。

结论:将f 数中的数字从左至右平均分成1

2k ?组,每组1

2

m k ?+个数字。若每

组中第j 个数字与第2

m k

j ?+个数字均不同(一为0,一为1),则f 为“不重f”。

证明:考察关系12(,,...,,..)k m i t i t i t i t i f a a a a a ++++′=。同一组中,121,,...k i t i t i t a a a ?+++都

是相同的;每组中第j 个数字与第2m k

j ?+个数字所对应的12,,...k k m i t i t i t a a a +++++也是

相同的:当j 与2

m k

j ?+在同一组时,()j g a 与2()m k j g a ?+除了第k 个数不同外,

都是相同的。而0k t =,k i t i a a +=,且以i a ′代替i a 。如果2

m k j j a a ?+′′=,则代替后,仅有的原本不同的数位会变得相同,导致映射不再一一对应。而在不同的组之间,由于121,,...k i t i t i t a a a ?+++是不同的,就不必担心这样的问题。

注意:(1)“不重f”只是f 保密性良好的条件之一。“不重f”中存在使得

()F A A A ′==的f,不要选择它。

(2) 有些f 虽然不是“不重f”(在这种情况下,存在i j ≠使得()()i j F A F A =,且存在有些序列不可能由()F A 得出。

),但()F A 可取得的序列仍有可观的数目,且()F A 与()k A F (1k ≥)一一对应。这种f 也可以尝试使用。

六 展望

有一些算法可以对序列进行非常好的混淆扩散,但不具有简便的逆运算,因此在过去的密码体制中不受重视。在空中序列加密体制中这些算法将发挥很大作用,值得进行深入探究。

我们在今后将继续探究节点-网络加密法的设计。节点-网络操作法中变量和网络结构的多变性给了设计者很大的发挥空间。对于节点中不同的运算法则,应考虑与之相适应的网络,以使整个体系发挥最大的保密性。同样,不同结构的网络也应配备相应的运算法则。基于节点-网络操作法,可设计出很多风格各异的加密方法,作者认为这是一个前景广阔的课题。

七 致谢

感谢清华大学电子系的李源同学为我们提供编程上的帮助。

八 参考文献

1《密码学理论与技术》 范明钰 王光卫 清华大学出版社 2《现代密码学》(第二版)陈鲁生 沈世镒 科学出版社 3《应用密码学》 杨义先 钮心沂 北京邮电大学出版社

分组密码体制简介

分组密码体制简介 分组密码体制也具有简捷、快速的特点,并且容易标准化,使其成为软硬件加密的主流算法。目前主流的分组密码有:DES、IDEA…… . 1.分组密码的特点 与序列密码不同,分组密码是将明文序列划分成等长的分组(Block),对每一组用同一加密算法和同一密钥进行加密。 分组密码有其自身的优点,首先分组密码容易被标准化,因为在今天的数据网络通信中,信息通常是被成块的处理和传输的。其次,使用分组赌东道密码容易实现同步,因为一个密码组的传输错误不会影响到其它的分组,丢失一个密文组不会对随后组的解密产生影响。这就是说,传输错误不会扩散。而这些方面恰恰是序列密码的最大缺点。 分组密码与序列密码相比的一个缺点就是算法庞大一些,需要更多的计算资源。分组密码的另一大缺点是其安全性很难被证明。尽管“可证明安全性”的研究发展很快,但目前的分组密码大多是“看来安全的”,还没有一个分组密码被证明是真正安全的,至多证明了局部安全性。这其中的原因是:因商业化而要求分组密码算法的细节全部暴露,因此对分组密码的攻击类型很多,安全性概念也就很多,有人为了统一这些安全性概念,甚至引入了伪随机性和超伪随机性,它们是用概率图灵机来描述的,在实际设计和分析中很难应用。 2.分组密码的设计准则 一、安全性准则 对以下的安全性的描述总是基于以下的假设:加密体制(包括算法的细节)是公开的;安全性完全依赖于密钥;信道是不安全的,即攻击者可以任意的截取密文;攻击者有时也可以截取一些“废弃”的明文。 (1)分组长度和密钥长度:当明文分组长度为n比特时,至多需要2n个明文-密文对就可以彻底破解密钥。同理当密钥长度为n比特时,对一个截获的密文,至多需要试验2n个密钥就可以破解了密文。因此从安全性角度来考虑,明文分组长度的密钥长度因尽可能的大。 (2)混淆性:所设计的密码应使得明文、密文、密钥之间的依赖关系相当复杂,以至于这种依赖关系对密码分析者来说是无法利用的。密码分析者利用这种依赖关系的方法非常多,比如差分密码分析、线性密码分析等,因此混淆性也是一个非常重要的原则。 (3)扩散性:所设计的密码应使得密钥的每一位数字影响密文的许多位数字,以防止对密钥的逐段破解;明文的每一位数字也影响密文的许多位数字,以便最充分的隐藏明文的统计特征。对扩散性可以有许多种理解,比如“粘连性”指的是明文、密文、密钥每一位都互相依赖;“不连续性”或“雪崩性”指的是当改变明文的任何一个比特时,对应密文改变的比特的个数应是一个随机变量,其平均值是分组长度的一半。 (4)非线性度(抗线性密码分析强度):这一项属于混淆性。有一个基本数学原理:如果明文和密文的关系是n维线性关系,且系数是密钥,则n个明文-密文对(而不是2n个)就可以破解密钥;如果明文与密文的关系是n维r次函数关系,且系数是密钥,则n r个明文-密文对就可以破解密钥;如果虽然次数r较大,但明文与密文的关系“非常逼近”一个n

伪随机码生成器

M序列发生器 M序列是最常用的一种伪随机序列,是一种线性反馈移位寄存器序列的简称。带线性反馈逻辑的移位寄存器设定各级寄存器的初试状态后,在时钟的触发下,每次移位后各级寄存器状态都会发生变化。其中一级寄存器(通常为末级)的输出,随着移位寄存器时钟节拍的推移会产生下一个序列,称为移位寄存器序列。他是一种周期序列,周期与移位寄存器的级数和反馈逻辑有关。 以4级移位寄存器为例,线性反馈结构如下图: 4级以为寄存器反馈图 其中a4=a1+a0

信号a4:a0禁止出现全0,否则将会出现全0,序列不变化。实验仿真 Code: library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity random_4 is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC;

din : in STD_LOGIC_VECTOR (3 downto 0); dout : out STD_LOGIC_VECTOR (3 downto 0); load : in STD_LOGIC); end random_4; architecture Behavioral of random_4 is signal rfsr :std_logic_vector(3 downto 0); --signal temp:std_logic; begin process(clk,reset,load,din) begin if (reset ='1') then rfsr <=(others =>'0'); elsif (clk' event and clk='1') then if(load ='1') then ----load =1 rfsr<= din; else rfsr(3) <= rfsr(0) xor rfsr(1); rfsr(2 downto 0) <= rfsr(3 downto 1); end if; end if; end process; ------signal rename----

列生成序列密码密钥序列的方法

一种利用公开真随机序列生成密钥序列的方法 参赛队员:李荣莎沈峥迪 指导教师:苗金利 所在学校:北京四中 摘要:本文提出了一种生成序列密码的密钥序列的新思路:将公开的真随机序列引入密钥序列的生成过程,从而使密钥序列在公开真随机序列的影响下体现出较好的随机性,并与公开真随机序列有较低的相关性,从而具有良好的保密性。基于此思想,我们设计了两种具有良好性质的具体加密方法。 关键字:序列密码密钥序列 A method for generating encryption key stream using a public random sequence Abstract: In this paper, we put forward a new method for generating the encryption key streams of stream ciphers, in which a public random sequence is invited into the process, so that the encryption key stream would present comparatively good randomness under the influence of the public random sequence; at the same time, the encryption key stream would show fairly low correlation with the public random sequence, because of the effect of encryption methods, so that it would enjoy good confidentiality. Based on this thought, we have designed two specific encryption methods which have good characters mentioned above. Key words: Stream cipher, encryption key stream

伪随机序列m和M的生成算法实现

m-M 文档 1 相关概念 随机序列:可以预先确定又不能重复实现的序列 伪随机序列:具有随机特性,貌似随机序列的确定序列。 n 级线性移位寄存器,能产生的最大可能周期是21n p =-的序列,这样的序列称为m 序列。 n 级非线性移位寄存器,能产生的最大周期是2n 的序列,这样的序列称为M 序列。 图1线性移位寄存器 线性移位寄存器递推公式 11221101 n n n n n n i n i i a c a c a c a c a c a ----==++++= ∑ 线性移位寄存器的特征方程式 010 ()n n i n i i f x c c x c x c x ==+++= ∑ ,ci 取值为0或1 定义 若一个n 次多项式f (x )满足下列条件: (1) f (x )为既约多项式(即不能分解因式的多项式); (2) f (x )可整除(x p +1), p =2n -1; (3) f (x )除不尽(x q +1), q

由抽象代数理论可以证明,若α是n 次本原多项式()f x 的根,则集合2 2 {0,1,}n F α-= 可 构成一个有限的扩域(2)n G F 。F 中的任一元素都可表示为1110n n a a a αα--+++ ,这样n 个分量的有序序列110(,,,)n a a a - 就可表示F 中的任一元素。 若既约多项式()f x 的根能够形成扩域(2)n G F ,则该多项式是本原多项式,否则不是本原多项式。 2.2 二元域(2)GF 上的本原多项式算法实现 (2)GF 上n 次多项式的通式为 1 2 1210()...n n n n n f x x a x a x a x a ----=++++,系数是二元域上的元素(0,1) 既约多项式既不能整除,1x x +,0和1不可能是()f x 的根,即0a =1, ()f x 的项数一定为奇数。 另外,一个既约多项式是否能形成(2)n G F ,从而判断它是否为本原多项式。N 次多项式的扩域,其中,120,1,,,n ααα 一定在扩域中,需要判断的是12 2 ,n n αα+- 是否也在扩域 中,从而形成全部扩域(2)n G F ,若在,则该n 次既约多项式是本原多项式,否则不是。 (1)给定二元多项式 1 2 1210()...n n n n n f x x a x a x a x a ----=++++,01a = 设α是f(x)扩域中的一个元素,且f(α)=0则有: n n-1 n-11=a ++a +1αα α (1) (2)从n α开始,计算α的连续幂。在计算过程中,当遇到α的幂次为n 时,将(1)代入,一直计算到n 2 -2 α (形成GF (2n )),再计算n 2 -1 α 。若n 2-1 α =1,则证明()f x 能被n 21 x 1-+整 除,而不能整除1q x +(21n q <-),判定为本原多项式。在计算α的连续幂过程中,若 q x =1(21n q <-),则证明()f x 能被1q x +整除,判定为非本原多项式,停止计算。 在计算机实现时,n 个分量的有序序列110(,,)n a αα- 与α的任一连续幂有着一一对应的 关系,可以用有序序列110(,,)n a αα- 来表示α的任一连续幂。q α用110(,,)q q q n a αα- 来

密码体制分类及典型算法描述

.AAA密码体制分类及典型算法描述 换位与代替密码体制 序列与分组密码体制 对称与非对称密钥密码体制 BBB试对代替密码和换位密码进行安全性分析。 1.单表代替的优缺点 优点:明文字符的形态一般将面目全非 缺点: (A)明文的位置不变; (B)明文字符相同,则密文字符也相同; 从而导致: (I)若明文字符e被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数; (II)明文的跟随关系反映在密文之中. 因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中.形态变但位置不变 2.多表代替的优缺点 优点:只要 (1)多表设计合理,即每行中元互不相同,每列中元互不相同.(这样的表称为拉丁方表) (2)密钥序列是随机序列,即具有等概性和独立性。 这个多表代替就是完全保密的。 等概性:各位置的字符取可能字符的概率相同; 独立性:在其它所有字符都知道时,也判断不出未知的字符取哪个的概率更大。 2.多表代替的优缺点 密钥序列是随机序列意味着: (1)密钥序列不能周期重复; (2)密钥序列必须与明文序列等长; (3)这些序列必须在通信前分配完毕; (4)大量通信时不实用; (5)分配密钥和存储密钥时安全隐患大。 缺点:周期较短时可以实现唯密文攻击。 换位密码的优缺点 优点:明文字符的位置发生变化; 缺点:(A)明文字符的形态不变; 从而导致: (I)密文字符e的出现频次也是明文字符e的出现次数; 有时直接可破!(如密文字母全相同) 换位密码优缺点总结:位置变但形态不变. 代替密码优缺点总结:形态变但位置不变. CCC…..ADFGX密码解密过程分析。 1918年,第一次世界大战已经接近尾声。为了挽回日趋不利的局面,德军集中了500万人的兵力,向协约国发动了猛烈的连续进攻。 采用一种新密码:ADFGX密码体制。 该密码用手工加解密费时不多,符合战地密码的基本要求。 进行了两次加密,有两个密钥:一个是代替密钥(棋盘密钥)一个是换位密钥

随机数生成方法、随机数生成法比较以及检验生成的随机序列的随机性的方法讲义

摘要 摘要 本文着重讨论了随机数生成方法、随机数生成法比较以及检验生成的随机序列的随机性的方法。 在随机序列生成方面,本文讨论了平方取中法、斐波那契法、滞后斐波那契法、移位法、线性同余法、非线性同余法、取小数法等,并比较了各方法的优劣性。 在统计检验方面,介绍了统计检验的方法,并用其检验几种随机数生成器生成的随机数的随机性。 最后介绍了两种新的随机数生成法,并统计检验了生成随机序列的随机性。关键词:随机数,随机数生成法,统计检验 I

ABSTRACT ABSTRACT This article focuses on methods of random number generator, random number generation method comparison and test the randomness of the generated random sequence method. In random sequence generation, the article discusses the square method, Fibonacci method, lagged Fibonacci method, the shift method, linear congruential method, linear congruence method, taking minority law, and Comparison of advantages and disadvantages of each method. In statistical test, the introduction of the statistical test method, and used to test some random number generator random random numbers generated. Finally, two new random number generation method, and statistical tests of randomness to generate a random sequence. Key Words: random number,random number generator,statistical test II

C语言中产生随机数的方法

C语言中产生随机数的方法 引例:产生10个[100-200]区间内的随机整数。 #include #include //rand函数的头文件 #include //时间函数的头文件 int main() { int i; //循环变量 srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子) for (i=0; i<10; i++) //printf("%d\n", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数 //printf("%d\n", rand()%100); //产生0-99的随机整数 printf("%d\n", rand()%(200-100+1) + 100); //产生[100,200]内的随机整数return 0; } 在C语言中产生随机数需要以下几个函数的配合使用。 (1)rand函数——产生伪随机数 原型:int rand(void) 头文件:stdlib.h 功能:产生从0到RAND_MAX之间的随机数。RAND_MAX的值通常是0x7fff(十六进制数7FFF,也就是十进制数32767)。 例: #include #include int main() { int k; k = rand(); printf("%d\n", k); return 0; } 编译运行,发现每次运行程序产生的随机数都是一样的。 计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法中计算结果,所以叫“伪随机数”。 C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。 为上面的例子增加一个循环结构: #include #include int main() { int k,i;

一种新的混沌伪随机序列生成方式

第28卷第7期电子与信息学报V ol.28No.7 2006年7月 Journal of Electronics & Information Technology Jul.2006 一种新的混沌伪随机序列生成方式 罗启彬 张 健 (中国工程物理研究院电子工程研究所绵阳 621900) 摘要利用构造的Hybrid混沌映射,通过周期性改变混沌迭代初值来产生混沌伪随机序列。理论和统计分析可知,该混沌序列的各项特性均满足伪随机序列的要求,产生方法简单,具有较高的安全性和保密性,是一类很有应用前景的伪随机加密序列。 关键词混沌序列, 加密, Lyapunov指数,自相关 中图分类号:TN918 文献标识码:A 文章编号:1009-5896(2006)07-1262-04 A New Approach to Generate Chaotic Pseudo-random Sequence Luo Qi-bin Zhang Jian (Institute of Electronic Engineering, CAEP, Mianyang 621900,China) Abstract This paper proposes hybrid mapping to generate chaotic sequence, by altering initial value periodically. The results show that the properties of the hybrid chaotic sequence are good,and the sequence generator can be easily realized. It is a class of promising pseudo-random sequence in practical applications. Key words Chaotic sequence, Encryption, Lyapunov exponent, Auto-correlation 1 引言 混沌序列是一种性能优良的伪随机序列,其来源丰富,生成方法简单。通过映射函数、生成规则以及初始条件便能确定一个几乎无法破译的加密序列。因此,混沌加密受到越来越多的关注,近年来被广泛应用于保密通信领域[1-4]。 将混沌理论应用于流密码是1989年由Matthews[5]最先提出。迄今为止,利用混沌映射产生随机序列的理论研究很多。但是,混沌序列发生器总是用有限精度来实现,其特性由于有限精度效应会与理论结果大相径庭。因此,有限精度效应是混沌序列从理论走向应用的主要障碍。文献[6]用m 序列与产生的混沌序列“异或”来克服有限精度的影响,但由于微扰是随机的,不易产生,而且系统分布以及相关性能取决于附加的m序列而不是混沌系统本身。文献[7]通过构造变参数复合混沌系统来实现有限精度混沌系统。本文利用构造的分段非线性Hybrid映射,通过周期性地改变混沌迭代初值的办法来产生混沌序列,克服了序列有限精度效应的影响。计算机数值实验表明所产生的混沌序列的各项特性均较好,产生方法简单,具有较高的安全性,是一类很有应用前景的伪随机加密序列。 本文第2节给出了混沌随机序列发生器的产生过程,在此基础上讨论了混沌系统的扰动问题;第4节通过计算机仿真来验证所产生的混沌伪随机序列的性质;最后是结论。 2004-11-22收到,2005-08-08改回 中国工程物理研究院科学技术基金面上资助课题(20050429) 2 序列产生 由于Logistic映射和Tent映射的复杂度都不高,由此产生的混沌加密序列的安全性能都不是非常理想。本文把两者相结合,构造出一种新的混沌迭代映射——Hybrid映射: 2 1 1 2 (1)10 =()= 1, 0<1 k k k k k k b u x x x f x u x x + ???<≤ ? ? ?< ?? , (1) 该映射不但继承了Logistic映射和Tent映射容易产生的特点,而且还能增加混沌系统的安全性。 当初值x0=0.82,u1=1.8,u2=2.0,b=0.85时,此映射处于混沌态,产生的混沌序列如图1所示,其中横轴是迭代次数k,纵轴是经不断迭代得到的混沌状态空间变量x(k)。图1(a)为初值等于0.82的Hybrid混沌映射时序图,图1(b)为Hybrid映射对迭代初值高度敏感性的示意图(初值相差10-15)。 图1 (a) Hybrid mapping 的随机特性 (b) Hybrid mapping 对初值的敏感特性 Fig.1 (a) Randomicity of Hybrid mapping (b) Sensitivity of Hybrid mapping 把生成的实值混沌随机序列{x k}转化为二进制随机序列{S k},按如下方法实施:

EXCEL随机数据生成方法

求教:我的电子表格中rand()函数的取值范围是-1到1,如何改回1到0 回答:有两种修改办法: 是[1-rand()]/2, 或[1+rand()]/2。 效果是一样的,都可生成0到1之间的随机数 电子表格中RAND()函数的取值范围是0到1,公式如下: =RAND() 如果取值范围是1到2,公式如下: =RAND()*(2-1)+1 RAND( ) 注解: 若要生成a 与b 之间的随机实数: =RAND()*(b-a)+a 如果要使用函数RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按F9,将公式永久性地改为随机数。 示例 RAND() 介于0 到1 之间的一个随机数(变量) =RAND()*100 大于等于0 但小于100 的一个随机数(变量) excel产生60-70随机数公式 =RAND()*10+60 要取整可以用=int(RAND()*10+60) 我想用excel在B1单元个里创建一个50-80的随机数且这个随机数要大于A1单元个里的数值,请教大家如何编写公式! 整数:=ROUND(RAND()*(80-MAX(50,A1+1))+MAX(50,A1+1),0) 无需取整数:=RAND()*(80-MAX(50,A1))+MAX(50,A1)

要求: 1,小数保留0.1 2,1000-1100范围 3,不要出现重复 =LEFT(RAND()*100+1000,6) 至于不许重复 你可以设置数据有效性 在数据-有效性设 =countif(a:a,a1)=1 选中a列设有效性就好了 其他列耶可以 急求excel随机生成数字的公式,取值要在38.90-44.03之间,不允许重复出现,保留两位小数,不允许变藏 =round(RAND()*5+38.9,2) 公式下拉 Excel随机数 Excel具有强大的函数功能,使用Excel函数,可以轻松在Excel表格产生一系列随机数。 1、产生一个小于100的两位数的整数,输入公式=ROUNDUP(RAND()*100,0)。 RAND()这是一个随机函数,它的返回值是一个大于0且小于1的随机小数。ROUNDUP 函数是向上舍入数字,公式的意义就是将小数向上舍入到最接近的整数,再扩大100倍。 2、产生一个四位数N到M的随机数,输入公式=INT(RAND()*(M-N+1))+N。 这个公式中,INT函数是将数值向下取整为最接近的整数;因为四位数的随机数就是指从1000到9999之间的任一随机数,所以M为9999,N为1000。RAND()的值是一个大于0且小于1的随机小数,M-N+1是9000,乘以这个数就是将RAND()的值对其放大,用INT 函数取整后,再加上1000就可以得到这个范围内的随机数。[公式=INT(RAND()*(9999-1000+1))+1000] 3、Excel函数RANDBETWEEN是返回位于两个指定数之间的一个随机数。使用这一个函数来完成上面的问题就更为简单了。要使用这个函数,可能出现函数不可用,并返回错误值#NAME?。 选择"工具"菜单,单击"加载宏",在"可用加载宏"列表中,勾选"分析工具库",再单击"确定"。接下来系统将会安装并加载,可能会弹出提示需要安装源,也就是office安装盘。放入光盘,点击"确定",完成安装。 现在可以在单元格输入公式=RANDBETWEEN(1000,9999)。 最后,你可以将公式复制到所有需要产生随机数的单元格,每一次打开工作表,数据都会自动随机更新。在打开的工作表,也可以执行功能键F9,每按下一次,数据就会自动随机更新了。

序列密码

序列密码
内容提要(或本章引言)
使用流密码对某一消息 m 执行加密操作时一般是先将 m 分成连续的符 号(一般为比特串),m=m1m2m3……;然后使用密钥流 k=k1k2k3……中的第 i 个元素 ki 对明文消息的第 i 个元素 mi 执行加密变换,i=1,2,3,……;所有的 加密输出连接在一起就构成了对 m 执行加密后的密文。 序列密码以其易于实现、加解密快速、无错误传播、应用协议简单等优 点,在政府、军事、外交等重要部门的保密通信以及各种移动通信系统中被 广泛使用。
本章重点
? ? ? ? ? ? 一次一密加密体制; 线性反馈移位寄存器; 基于线性反馈移位寄存器的伪随机序列生成器; 伪随机序列的安全性; m 序列; RC4、A5 算法。

第2章
序列密码
2.1
概述
(2 级标题)
按照对明文消息加密方式的不同, 对称密码体制一般可以分为两类: 分 组密码(block cipher)和流密码(stream cipher) 分组密码:对于某一消息 m, 使用分组密码对其执行加密操作 时一般是先对 m 进行填充得到一个长度是固定分组长度 s 的 整数倍的明文串 M; 然后将 M 划分成一个个长度为 s 的分组; 最后对每个分组使用同一个密钥执行加密变换。 流密码(也称序列密码): 使用流密码对某一消息 m 执行加密操 作时一般是先将 m 分成连续的符号(一般为比特串), m=m1m2m3……; 然后使用密钥流 k=k1k2k3……中的第 i 个元素 ki 对明文消息的第 i 个元素 mi 执行加密变换, i=1,2,3,……; 所 有的加密输出连接在一起就构成了对 m 执行加密后的密文。 与分组密码相比, 序列密码受政治的影响很大, 目前应用领域主要还是 在军事、外交等部门。虽然也有公开设计和研究成果发表,但作为密码学的 一个分支,流密码的大多设计与分析成果还是保密的。目前可以公开见到、 较有影响的流密码方案包括 A5、SEAL、RC4、PIKE 等。 本章主要讨论流密码加密体制,关于分组密码的知识将在下一章给出。 容易想到,使用流密码对消息 m 执行加密时,最简单的做法就是让密钥流 中的第 i 个比特与明文串中的对应比特直接做 XOR 运算,即
图 2-1 简单的流密码加密结构 对应的解密运算即为:

随机数生成方法

University of Sydney School of Information Technologies Generating Random Variables Pseudo-Random Numbers Definition : A sequence of pseudo-random numbers ()i U is a deterministic sequence of numbers in []1,0 having the same relevant statistical properties as a sequence of random numbers. The most widely used method of generating pseudo-random numbers are the congruential generators: ()M X U M c aX X i i i i =+=?mod 1 for a multiplier a , shift c , and modulus M , all integers. The sequence is clearly periodic, with maximum period M . The values of a and c must be carefully chosen to maximise the period of the generator, and to ensure that the generator has good statistical properties. Some examples: M a c 259 1313 0 232 69069 1 231-1 630360016 0 232 2147001325 715136305 Reference: Ripley, Stochastic Simulation , Chapter 2

真随机数产生方法

ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学 ATmega1 28单片机的真随机数发生矗时间:2009-12-16 15:39:00 来源:单片机与嵌入式系统作者:刘晓旭,曹林,董秀成西华大学 引言 随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。常见的随机数发生器有两种:使用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。要获取真正随机的真随机数,常使用硬件随机数发生器的方法来获取。这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等),每次获取的真随机数都是不可测的,具有很好的随机性。 真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发生源,具有广泛的应用价值。但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。本文利用RC充放电的低稳定度,根据AVR单片机的特点设计了一种性价比极高的真随机数发生器。该随机数发生器使用元件很少,稳定性高,对一些价格敏感的特殊场合,如金融、通信、娱乐设备等有较大的应用意义。 1 基本原理和方法 1.1 基本原理 串联的RC充放电电路由于受到漏电流、电阻热噪声、电阻过剩噪声、电容极化噪声等诸多不确定性因素的影响,其充放电稳定度一般只能达到10-3。利用这种RC充放电的低稳定度特性实现廉价的真随机数发生源。 Atmel公司AVR单片机ATmega 128以其速度快、功能强、性价比高等优点广泛应用于各种嵌入式计算场合。利用AVR单片机引脚配置灵活多样的特点,使用Amnega128 两个I/O口作为真随机数的电气接口。 其原理如图1所示。主要原理是利用串联RC电路的不确定性产生真随机数源,收集数据,通过AVR单片机ATmega128和主时钟电路量化RC电路的充放电时问,获得不确定的2位二进制数据,再利用程序将每4次采集的数据综合,最后产生1个8位的真随机数。

一维正态分布随机数序列的产生方法

一维正态分布随机数序列的产生方法 一、文献综述 1.随机数的定义及产生方法 1).随机数的定义及性质 在连续型随机变量的分布中,最简单而且最基本的分布是单位均匀分布。由该分布抽取的简单子样称,随机数序列,其中每一个体称为随机数。 单位均匀分布也称为[0,1]上的均匀分布。 由于随机数在蒙特卡罗方法中占有极其重要的位置,我们用专门的符号ξ表示。由随机数序列的定义可知,ξ1,ξ2,…是相互独立且具有相同单位均匀分布的随机数序列。也就是说,独立性、均匀性是随机数必备的两个特点。 随机数具有非常重要的性质:对于任意自然数s,由s个随机数组成的 s维空间上的点(ξn+1,ξn+2,…ξn+s)在s维空间的单位立方体Gs上 均匀分布,即对任意的ai,如下等式成立: 其中P(·)表示事件·发生的概率。反之,如果随机变量序列ξ1, ξ2…对于任意自然数s,由s个元素所组成的s维空间上的点(ξn+1,…ξn+s)在Gs上均匀分布,则它们是随机数序列。 由于随机数在蒙特卡罗方法中所处的特殊地位,它们虽然也属于由具有已知分布的总体中产生简单子样的问题,但就产生方法而言,却有着本质上的差别。 2).随机数表 为了产生随机数,可以使用随机数表。随机数表是由0,1,…,9十个数字组成,每个数字以0.1的等概率出现,数字之间相互独立。这些数字序列叫作随机数字序列。如果要得到n位有效数字的随机数,只需将表中每n 个相邻的随机数字合并在一起,且在最高位的前边加上小数点即可。例如,某随机数表的第一行数字为7634258910…,要想得到三位有效数字的随机数依次为0.763,0.425,0.891。因为随机数表需在计算机中占有很大内存, 而且也难以满足蒙特卡罗方法对随机数需要量非常大的要求,因此,该方法不适于在计算机上使用。 3).物理方法

基于FPGA 的伪随机序列的生成方法及应用

摘要:通过分析各种伪随机序列生成方法,提出了一种基于M 序列的连续抽样方法,可以生成满足自适应光学系统SPGD 控制算法要求的多路、相互独立以及服从伯努利分布的伪随机序列。该方法适合于用FPGA等超大规模集成电路实现,且具有占用硬件资源较少,实现方便等优点。用FPGA 实现了用于61 单元自适应光学系统SPGD 控制算法的伪随机序列,并将此方法应用于基于SPGD 控制算法的自适应光学系统实验中,实验表明,该方法能够满足自适应光学系统SPGD 算法的需求,系统实现成功闭环。 1 引言 随机序列是一组满足特定统计学规律的数据,在信号理论分析中应用非常普遍。由于精确的随机序列生成方法较为复杂,产生的随机序列不具有可重复性等特点,在很多应用场合使用伪随机序列。伪随机序列在扩频通信、信息加密和系统测试等诸多领域中都有着广泛的应用。在自适应光学SPGD 算法中,伪随机序列亦有相当重要的作用。 Vorontsov 等人在1997 年将SPGD 算法引入到自适应光学领域[2]。国内在近几年开始了对 SPGD 算法在自适应光学系统应用的研究,并且在计算机上用软件编程实现了算法,进行了自适应光学的系统实验[3]。自适应光学SPGD 控制算法的研究趋势是使用专用的信号处理硬件电路作为算法的实现平台,以获得更高的迭代速度和更好的收敛效果。Cauwenberghs等人设计了专用的模拟超大规模集成电路实现SPGD 控制算法,并且在一些应用领域进行了实验[5]。目前自适应光学系统的规模普遍达到几十上百单元。针对多单元自适应光学系统SPGD 控制算法的特殊要求,本文提出了一种适合于用FPGA 硬件电路产生满足算法要求的多路伪随机序列的生成方法,完成了FPGA 电路的硬件实现,并将其用于实现61 单元自适应光学SPGD控制算法,同时进行自适应光学的闭环实验。 2 自适应光学 SPGD 控制算法对伪随机序列的要求 SPGD(the Stochastic Parallel Gradient Descent algorithm)算法通过对多路的控制参数加入随机并行的扰动,使用性能指标测量值的变化量与控制参数的变化量进行控制参数的梯度估计,以迭代方式在梯度下降方向上进行控制参数的搜索。在自适应光学SPGD 算法中,控制参数为变形镜的控制电压,随机并行的扰动通过多路伪随机序列模拟。SPGD 算法中随机并行扰动的特性,对伪随机序列也提出了相应的要求[5]: (1) 路数多。路数等于变形镜单元数(即变形镜上驱动单元的数目)。例如在一个61 单元的自适应光学系统中,就需要产生61 路的伪随机序列。 (2) 伪随机序列两两相互独立。相互独立可避免变形镜各驱动单元间的相互耦合。 (3) 伪随机序列符合伯努利分布,两个样本值出现的概率各为0.5。 3 硬件电路实现伪随机序列的传统方法

实验一随机序列的产生及数字特征估计

实验一随机序列的产生及数字特征估计 一、实验目的 1、学习和掌握随机数的产生方法。 2、实现随机序列的数字特征估计。 二、实验原理 1、随机数的产生 随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。进行随机信号仿真分析时,需要模拟产生各种分布的随机数。在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。(0,1)均匀分布随机数是最最基本、最简单的随机数。(0,1)均匀分布指的是在[0,1]区间上的均匀分布,即U(0,1)。实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下: y0=1,y n=ky n?1mod N(1.1) x n=y n N 序列x n为产生的(0,1)均匀分布随机数。 下面给出了(1.1)式的3 组常用参数: ①N = 1010,k = 7,周期≈5*10^7; ②(IBM随机数发生器)N = 2^31,k = 2^16 + 3,周期≈5*10^8;

③(ran0)N = 2^31 - 1,k = 7^5,周期≈2*10^9; 由均匀分布随机数,可以利用反函数构造出任意分布的随机数。 定理1.1 若随机变量X具有连续分布函数F X(X),而R为(0,1)均匀分布随机变量,则有 X=F X?1(R)(1.2) 由这一定理可知,分布函数为F X(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的标准正态分布随机数矩阵。 如果要产生服从N(μ,σ2)分布的随机序列,则可以由标准正态随机序列产生。(3)其他分布的随机序列 MATLAB 上还提供了其他多种分布的随机数的产生函数,表1.1 列出了部分函数。

一种实用的随机序列生成方法

Computer Knowledge and Technology 电脑知识与技术网络通讯及安全本栏目责任编辑:冯蕾第7卷第9期(2011年3月)一种实用的随机序列生成方法 倪安胜1,汤池2 (1.西安通信学院一系陕西西安710106;2.第四军医大学生物医学工程系,陕西西安710032) 摘要:采用PC 声卡随机噪声作为随机源,使用安全散列算法(SHA-256)对采集到的随机源序列进行处理,形成一种随机序列产生方法。依照FIPS14022标准对产生的随机序列进行测试,结果表明该随机序列的生成方法可行、实用。 关键词:PC ;随机序列;密码生成 中图分类号:TP311文献标识码:A 文章编号:1009-3044(2011)09-1991-02 A Practical Method of Random Sequences Producing NI An-sheng 1,TANG Chi 2 (1.Xi'an Communications Instutute,Xi'an 710106,China;2.The Fourth Military Medical University,Xi'an 710032,China) Abstract:Utilizing the noise of PC soundcard as random resource to obtain random sequences,which was then processed by the secure hash algorithm SHA-256.Thus a method of random sequences producinging was made.The random sequences were tested according to American standard FIPS14022.It shows that the method is feasible and practical with the testing results. Key words:PC;random sequences;password generator 随机数在密码学中发挥重要作用,如密钥管理、加密解密、数字签名、身份认证等都需要用到随机数,密码系统的安全性一般依赖于随机数的生成[1]。理想情况下,密钥应当是真正随机的。随机数是通过随机二进制序列组合而成的,目前用于产生随机二进制序列的方法主要有两类[2]:一种是通过一定的算法由软件或电路生成随机序列,称为伪随机序列,是可以重复产生的;另一种是通过物理现象,如振荡器的频率不稳定性、放射性衰减期间粒子散发的时间间隔、电阻器热噪声、混沌现象等生成随机序列,这类序列具有不可预测性,不可重复,在密码学意义上是安全的。 通过算法不能实现真正的随机数,因此一般通过使用硬件随机数生成器的方法来获取真随机数。但是这种方法增加了成本,不适合低成本应用程序开发和小型项目应用。PC 上有许多可供利用的随机源,如:硬盘磁道寻道时间、鼠标键盘响应时间、网络数据包校验码、缓冲区数据等。有关研究表明[3-4],利用PC 附带的随机源生成随机数,可以满足低成本应用程序和小型项目开发的要求。目前,PC 声卡早已经成为标准的配置,绝大部分主板都内置了声卡。因此,选用声卡噪声作为随机数发生源无需额外增加开发成本,具有较强的代表性。本文以麦克风和声卡作为随机信号的采集设备,以DirectX 中的Sound API 函数进行信号获取,采用Microsoft Visual C++.net 2005完成软件设计。 1基本原理 PC 在使用中,麦克风采集到的声音信号含有随机噪声,声卡将该信号采样后传送给主机,一般情况下采样频率为44.1KHz ,采样精度为16bits ,采样数据末若干位将由于含有噪声信号表现出随机性。因此,可以用采样信号的末若干位(一般少于等于2位)来初步组合随机序列。当随机序列达到一定长度时,使用美国国家标准和技术协会(NIST) 公布的安全散列标准算法SHA-256,对其进行散列变换,增强序列的随机性,形成一个 256位的随机序列。根据要求的随机序列长度,进行多次随机序列生成组合。随机序列 生成组合过程如图1所示。 2测试及结果 2.1测试标准 对随机序列的统计学测试方法有许多种,这些方法虽能从各个侧面统计序列的均 匀行和独立性,但没有统一的参数指标进行比较。美国NIST 在FIPS 14022中提出了基 于密码系统的安全标准[5],其中包括随机序列发生器的测试方法和合格标准,测试方法 主要有:monobit 测试、poker 测试、runs 测试及long runs 测试。要求从产生的随机序列 中选取20000位连续的0-1比特流进行实验。该测试简化了统计检验标准,更具操作性与比对性。2.1.1monobit 测试 计算比特流中1的个数。当1的个数在9725~10275范围之内时表示随机数发生器通过monobit 测试。 2.1.2poker 测试 将20000位的比特流每4位分1组共5000组,每组有16种可能取值i (i =0,1,…15),计算5000组中每组可能取值的数量f 收稿日期:2011-01-08 作者简介:倪安胜(1976-),男,安徽无为人,讲师,主要研究方向为网络信息安全。 图1随机序列生成组合示意图 E-mail:info@https://www.360docs.net/doc/112094758.html, https://www.360docs.net/doc/112094758.html, Tel:+86-551-56909635690964ISSN 1009-3044 Computer Knowledge and Technology 电脑知识与技术Vol.7,No.9,March 2011,pp.1991-19921991

相关文档
最新文档