流密码、伪随机数发生器

合集下载

应用密码学-2016-(第11讲)-流密码

应用密码学-2016-(第11讲)-流密码
r b
n
r
n -1
… …
r b
2
r b
1
n
b
n -1
2
1
输出位
o
i
反馈函数
f
基于移位寄存器的流密码算法
• 线性反馈移位寄存器LFSR(linear feedback shift register)的反馈函数为线性函数 • 作为密钥流的序列{ai}的周期一定要大 否则密钥流的空间太小,利用穷举搜索可以 得到密钥流{ai} • n级LFSR输出的序列的周期r不依赖于寄存器 的初始值,而依赖于特征多项式p(x)
流密码技术的发展及分类
k k
密钥流 生成器 z i E(z ,m ) i i c i 信道 c i
密钥流 生成器 z E(z ,m ) i i
i
m i
• 自同步流密码的优点是即使接收端和发送端不同步,只要 接收端能连续地正确地接受到n个密文符号,就能重新建 立同步。因此自同步流密码具有有限的差错传播 ,且分析 较同步流密码的分析困难得多
流密码技术的发展及分类
k k
密钥流 生成器 z i c i c i
密钥流 生成器 z i E(z ,m ) i i m i 信道
m i
E(z ,m ) i i
• 在同步流密码中,密(明)文符号是独立的,一个错误传输 只会影响一个符号,不影响后面的符号。 • 缺点:一旦接收端和发送端的种子密钥和内部状态不同步, 解密就会失败,两者必须立即借助外界手段重新建立同步。

伪随机数法

伪随机数法

伪随机数法

一、什么是伪随机数法?

伪随机数法(Pseudo Random Number Generator, PRNG)是一种通过计算机算法生成的数字序列,看起来像是随机的,但实际上是有

规律的。这种方法可以用于模拟随机事件,例如在游戏中模拟掷骰子

或抽奖等。

二、PRNG的原理

PRNG的原理基于一个起始值称为“种子”,通过一定的算法对种子

进行运算得到下一个数字。这个过程不断重复,每次都以前一个数字

作为输入,输出下一个数字。由于计算机算法具有确定性,所以PRNG生成的数字序列虽然看起来像是随机的,但实际上是可预测的。

三、PRNG与真随机数

与PRNG相对应的是真随机数发生器(True Random Number Generator, TRNG)。TRNG通过物理过程如放射性衰变或热噪声等

方式产生真正意义上的随机数。相比之下,PRNG生成的数字序列虽

然看起来像是随机的,但实际上存在规律可循。

四、常见PRNG算法

1. 线性同余发生器(Linear Congruential Generator, LCG)

LCG是最早也是最简单的PRNG算法之一。它基于以下公式:

Xn+1 = (aXn + c) mod m

其中,Xn为当前数字,a为乘数,c为增量,m为模数。LCG的随机性基于选择合适的参数a、c、m以及种子值。

2. 梅森旋转算法(Mersenne Twister, MT)

MT是一种高质量的PRNG算法,它可以产生高质量的随机数字序列。MT算法基于一个大质数2^19937-1,并且具有良好的统计特性。

rc4算法密钥长度

rc4算法密钥长度

RC4算法密钥长度

1. 什么是RC4算法?

RC4(Rivest Cipher 4)是一种流密码(stream cipher)算法,由罗纳德·李维斯特(Ron Rivest)于1987年设计。它以其简单、高效和快速的特性而闻名,被广泛应用于网络通信、加密协议和安全通信等领域。

RC4算法基于一个伪随机数生成器(PRNG),通过使用一个变换后的秘钥流来对明文进行加密。其核心思想是使用一个可变长度的秘钥来生成一个伪随机的字节流,并将该字节流与明文进行异或运算,从而实现加密和解密操作。

2. RC4算法密钥长度的意义

在RC4算法中,密钥长度是非常重要的参数,它直接影响到加密的安全性。较短的密钥长度容易受到暴力破解、穷举攻击等攻击手段的威胁,而较长的密钥长度则可以提供更好的保护。

具体来说,RC4算法使用一个变长的秘钥作为输入,并通过一系列置换和混淆操作生成一个内部状态数组S。该数组被用作伪随机数生成器的初始状态。密钥长度越长,生成的伪随机数序列就越复杂,从而提高了加密的安全性。

3. RC4算法密钥长度的要求

在实际应用中,RC4算法密钥长度需要满足一定的要求,以确保加密的强度和安全性。

3.1 密钥长度不宜过短

如果密钥长度过短,容易受到暴力破解和穷举攻击的风险。攻击者可以通过尝试所有可能的密钥值来解密加密文本,从而获取明文信息。因此,为了抵抗这种攻击手段,RC4算法中推荐使用至少128位(16字节)以上的密钥长度。

3.2 密钥长度不宜过长

虽然较长的密钥可以提供更好的安全性,但也会带来一些问题。首先是性能问题,较长的密钥会增加加解密操作所需的计算量和时间消耗。其次是秘钥管理问题,在实际应用中管理和传输较长的秘钥可能会增加复杂性和风险。

chap7-伪随机数和流密码

chap7-伪随机数和流密码

线性同余发生器
• 线性同余伪随机数缺乏不可预测性
10
Pseudorandom Numbers
• Xn+1 = (aXn+c) mod m ; Xn si < m • Choice of a, c and m are critical • a = c = X0 = 1 and m = 8 produces random numbers {2, 3, 4, 5, 6, 7, 0, 1}. This set is not random at all. • n = 7, c = 0, m = 32 and s0 = 1 produces the set {7, 17, 23, 1, 7, 17, 23, 1, …}. This set has a period 4, meaning that after the 4th number there is repetition in the sequence
Chap7 伪随机数和流密码
讨论议题
• 随机数的产生 • 流密码
7.1 随机数(Random number)
• 随机数用途,重要的角色,例如 – 认证过程中,避免重放攻击 – 会话密钥 – RSA公钥算法 • 随机数的基本特点 – 随机性 • 均匀分布,有大量的测试方案 • 独立性,难以测试,只能测试足够独立 – 不可预测性
7.2 伪随机数的产生:

大学安全工程之密码学5第五章 流密码

大学安全工程之密码学5第五章 流密码

回忆:Vigenère密码

•加密消息:

INDIVIDUAL CHARACTER

密钥:HOST

m=I ND I V I DU ALCH ARAC TER

k=HOST HOST HOST HOST HOS

E k(m)=P BV B C W VN HZUA HFSV ASJ

1

One-Time Pad

•用和明文一样长的随机密钥流K •加密:M = C = K = Z2n

c i = m

i

⊕k

i

OTP: 安全性分析

•定理:OTP is Unconditional Security

3

第五章流密码

•流密码总览

•伪随机序列发生器(Pseudorandom Number Generation)

•PRNGs

-Linear Feedback Shift Register (LFSR)

-Blum Blum Shub(BBS)

•流密码

4

流密码

•一次一密(OTP): C=P⊕K ,K 是随机密钥流•流密码:

–思想: 代替“随机”为“伪随机”

–用Pseudorandom Number Generator (PRNG)–PRNG: {0,1}s→{0,1}n

–种子是秘密密钥

•C=M⊕PRNG(seed)

5

6

回忆分组密码

•加密消息的方式

–分组密码

•c=(c 1c 2…)(c i c i+1…)... = e K (m 1m 2...) e K (c i c i+1…)…–流密码

•c=c 1c 2…=e k1(m 1)e k2(m 2)…

•密钥流(k 1,k 2,…)

流密码:性质

•数学性较好

–OTP 绝对保密

–伪随机有很长的研究历史

lfsr流密码加密原理

lfsr流密码加密原理

lfsr流密码加密原理

线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)是一种基于电子数

字逻辑电路的序列发生器。它通过一个特殊的算法生成一个伪随机序列,在通信、加密和

校验等领域有着广泛应用。

LFSR的工作原理是将一个N位的寄存器初始化为一个给定的值,每当时钟信号到来时,寄存器内的每一位都向右移动一位,并由一个线性组合计算其新值。这个线性组合由寄存

器内的若干位进行异或运算而得,这些位被称作“反馈位”(Feedback Bits)。这样,就可以形成一个周期为2^N-1的伪随机序列。

LFSR的加密原理是利用伪随机序列来对原始数据进行异或操作,从而实现加密。具体来说,将明文数据与伪随机序列按位异或,得到的结果就是密文数据。解密时,只需将密

文数据再次与同一个伪随机序列进行异或操作即可还原成明文数据。

LFSR加密的安全性与伪随机序列的质量有关。理论上,如果伪随机序列的周期足够长,那么将用它加密的数据破解起来将是非常困难的。然而,在实际应用中,LFSR加密还是存在一些问题的。由于其使用的算法比较简单,一旦有人掌握了加密算法及其密钥,就可以

轻松地破解出原始数据。因此,LFSR加密只适用于某些基础加密需求,而对于高安全级别的需求则不太适用。

除了加密之外,LFSR还可以用于数据校验。在通信传输过程中,由于信号干扰等原因,会产生一些误码。LFSR可以通过对伪随机序列的预测,检测出接收到的数据是否有误,并对错误的数据进行纠正。

流密码中伪随机序列发生器的构造与应用

流密码中伪随机序列发生器的构造与应用
p o o e o a od rp sd t v i m- e u n es w a n s ih h s lwe ie o lxt d s e sl en t c e .T e rt a n sq e c ’ e k es whc a o rl r cmpe i a i ai b ig at k d h oeil a d n y n y a c ep r na eut idc t a i n w RNG a o dl ercmpei ih r efr a c. x e me t rsl iaet ths e P i l sn h t h sg o n a o lxt a cp e r m n e i y nd p o Ke rs :te ih r RB ywo d Sra cp e;P G;n nie p m o l a ma nr
二 、 密码原 理 与密钥 流 的伪 随机 性 流 1 密码原 理[ . 流 3 1 在 流密码 中 ,明文 按一 定长 度分组 后被 表示
流密码应用 于 G M移动通信 、码 分多址通 信【 S 】 (D A 、 P 卫 星定位等通信系统 中。流密码系 C M )G S 统的核心设计部件是伪随机序列发生器 f 以下简


引 言
流密码又称序列密码 ,是对称加密体制分组 密码 的一种重要加密技术 。由于其软硬件易于实 现、 加密 速度 快 , 到 了广 泛 的关 注和应 用 。 目前 受

基于伪随机数生成器的信息安全技术研究

基于伪随机数生成器的信息安全技术研究

基于伪随机数生成器的信息安全技术研究

伪随机数生成器是一种关键的信息安全技术,其作用是生成安

全的随机数序列,以保障各种加密算法的安全性。伪随机数生成

器具有不可预测性、不可复制性等重要特性,能够有效保护不同

类型的信息通信过程中的数据安全。

随机数生成器的作用

在进行信息通信过程中,我们常常需要使用随机数序列。比如,在密钥交换、数字签名、加密解密等过程中都需要使用随机数序列。这些随机数序列必须在一定程度上满足随机性,否则就会被

黑客或其他恶意攻击者所破解,导致交换的密钥或签名被伪造、

解密被破解等问题。

由于真随机数比较稀缺,且真随机数无法被预测和控制,所以

我们使用伪随机数来代替真随机数。伪随机数是一种由计算机程

序生成的随机数序列,看起来具备随机性,但其实是通过特定算

法和种子值来生成的。

伪随机数生成器的算法种类

当前伪随机数生成器的算法种类有很多。其中最常见的算法包

括线性同余发生器、LFSR、流密码等。线性同余发生器是一种简

单的伪随机数算法,通过一个递推公式生成随机数序列。LFSR则

是一种比较强大的伪随机数算法,能够生成高质量的随机数序列。

而流密码则是一种和LFSR类似的伪随机数算法,也能够生成高质量的随机数序列。

伪随机数生成器的安全性问题

尽管伪随机数生成器能够生成高质量的随机数序列,但其安全性问题也是不容忽视的。伪随机数生成器的安全性关键取决于其算法的复杂度和种子值的选择。如果算法复杂度较低,种子值较为简单,那么伪随机数序列就可能会被攻击者所破解,进而导致信息安全问题。

除此之外,还有一些和伪随机数生成器的安全性相关的实际问题。例如,伪随机数序列的周期性问题,如果算法中周期过短,那么将会导致随机数序列周期的重复,进而被黑客所破解。还有就是种子值安全性的问题,如果种子值被泄露,那么随机数序列也将失去安全保障。

随机数生成器原理

随机数生成器原理

随机数生成器原理

随机数生成器是计算机科学中一个非常重要的概念,它在密码学、模拟实验、统计学等领域都有着广泛的应用。随机数生成器的原理是如何产生一系列看似无规律、不可预测的数字序列,这些数字序列被认为是随机的。在现代计算机系统中,随机数生成器是一个至关重要的组成部分,它为计算机提供了随机性,使得计算机能够执行各种复杂的任务。本文将介绍随机数生成器的原理及其在计算机科学中的应用。

随机数生成器的原理可以分为伪随机数生成器和真随机数生成器两种。伪随机数生成器是通过一定的算法产生一系列近似随机的数字序列,这些数字序列在一定程度上具有随机性,但是其实质是确定性的。真随机数生成器则是通过一些物理过程产生真正的随机性,比如利用量子力学的原理来产生随机数。在实际应用中,由于真随机数生成器的成本较高,大部分情况下我们使用的是伪随机数生成器。

伪随机数生成器的原理是基于一个种子(seed)和一个确定性的算法来产生随机数序列。种子是一个初始值,通过对种子进行一系列的数学运算,比如加法、乘法、取模等,就可以产生一系列的伪

随机数。在计算机中,通常使用当前的系统时间作为种子,以保证

每次生成的随机数序列都是不同的。当然,在一些特定的应用中,

我们也可以自己指定种子来产生确定的随机数序列。

随机数生成器在计算机科学中有着广泛的应用。在密码学中,

随机数生成器被用来产生加密密钥,以保证数据的安全性。在模拟

实验中,随机数生成器可以用来模拟各种随机事件,比如赌博游戏、天气模拟等。在统计学中,随机数生成器可以用来进行抽样调查,

以获取一定的样本数据。总的来说,随机数生成器在计算机科学中

17伪随机数发生器的设计

17伪随机数发生器的设计
其算法规则如下所示:
⎧⎨⎩ QQin
= =
CiQ1 Q1

Qi
+1
(0 < i < n)
(4)
伽罗华 LFSR 的特征多项式和递推公式以及 m 序列的性质都与斐波那契 LFSR
相同。定义其所有寄存器状态为 G(Qn, , Qn-1 …Q1)。对于同样的特征多项式,虽 然两种结构 LFSR 的递推公式相同,产生的状态序列却不同。但是,若二者具有
实验中搭建一个伪随机数发生器。 3. 掌握建模、设计输入、调试仿真、综合、管脚分配及下载验证这一 FPGA
系统设计流程。
二、 实验器件
ALTERA DE2 仿真板、quartusII 集成开发环境、modelsim 仿真平台。
三、 基本知识
1.随机数 随机数是较短的随机位序列,在密码学中是非常重要的,主要应用于数字签
“镜像” 状态为 Fk′(Qik, Q2k, …Qnk),只要 Fm=Fk′,则有 Fm+i=Fk-i′。也即本
原多项式和其对偶多项式所对应产生的寄存器状态序列也具有镜像对称性。
Fk-i′
Fm+i
图 2 寄存器状态序列也具有镜像对称性
此外,可以生成 m 序列的 LFSR 具有以下性质: (1) 仅仅当分支数目是偶数时,LFSR 为最大长度的 m 序列;仅 2 或 4

rabbit加密原理

rabbit加密原理

rabbit加密原理

Rabbit加密算法是一种流密码算法,它的设计目的是为了提供高效的

加密速度和安全性。Rabbit算法由两个部分组成:一个密钥调度算法

和一个伪随机数生成器。

密钥调度算法通过将用户提供的密钥转换为多个轮次的子密钥来初始

化Rabbit加密系统。这些子密钥使用了一种称为“扩展欧几里得算法”的技术,它允许在不需要存储所有子密钥的情况下快速生成它们。

一旦子密钥被生成,伪随机数生成器就可以开始工作了。伪随机数生

成器使用了一个称为“非线性反馈移位寄存器”的结构来产生伪随机

数流。这个结构包括一个状态向量和两个指针,其中一个指向状态向

量中当前要修改的位,另一个指向下一个要输出的位。

当需要加密数据时,Rabbit算法会使用伪随机数流对数据进行异或运算。这个过程可以看作是把数据和伪随机数流混合在一起,从而产生

出加密后的数据。

要解密数据,只需再次对加密后的数据进行异或运算即可得到原始数据。因为Rabbit算法使用了强大的密码学技术来生成伪随机数流,所以只有知道正确的密钥才能够成功解密数据。

总之,Rabbit加密算法是一种高效而安全的流密码算法,它通过密钥调度算法和伪随机数生成器来保护用户的数据安全。它可以用于各种应用场景,例如网络通信、数据存储等等。

scrambler工作原理

scrambler工作原理

scrambler工作原理

Scrambler工作原理

Scrambler是一种用于数字通信中的加密技术,它的作用是通过改变信号的频率、相位和幅度等特征,使得原始信息在传输过程中变得难以识别和解读。Scrambler的工作原理可以简单描述为将输入的数据流通过特定的算法进行处理,从而改变信号的特征,使得传输的信息变得混乱和不可预测。

在数字通信中,数据以二进制的形式进行传输,即由一串0和1组成的比特流。传输过程中,为了提高信号的可靠性和抗干扰能力,通常会采用差分编码的方式。差分编码是一种将连续的比特之间的差异作为编码的方法,它可以减少传输过程中的信号衰减和噪声干扰对数据的影响。

然而,差分编码并不能提供数据的保密性,因此需要通过加密技术来保护数据的机密性。Scrambler就是一种常用的加密技术之一,它可以将原始的差分编码数据进行处理,使得数据的特征发生变化,从而实现对数据的加密。

Scrambler的基本原理是通过一个特定的伪随机数发生器(PRBS)生成一个伪随机序列,然后将该序列与输入的数据流进行异或运算。这样,原始的差分编码数据就会被伪随机序列“扰乱”,从而改变信号的特征。在接收端,通过使用相同的伪随机序列对接收到的信

号进行异或运算,就可以恢复出原始的差分编码数据。

Scrambler的工作原理可以用以下步骤来描述:

1. 生成伪随机序列:Scrambler使用一个特定的算法生成一个伪随机序列,该序列的长度与输入数据的长度相匹配。

2. 异或运算:将生成的伪随机序列与输入的数据流进行异或运算。异或运算的结果将会改变数据流的特征,使其变得难以识别和解读。

rc4算法原理

rc4算法原理

rc4算法原理

RC4算法原理

什么是RC4算法?

RC4是一种流加密算法,也称为Ron’s Code,由Ron Rivest在1987年设计。它广泛应用于网络通信、数据加密等领域,成为一种流行的对称加密算法。

RC4算法原理

RC4算法主要包含以下几个步骤:

1.初始化:根据输入的密钥生成S盒和T盒。

2.伪随机数生成器:通过对S盒进行置换,生成密钥流。

3.密钥流加密:将明文与密钥流进行异或操作,得到密文。

RC4密钥生成算法

RC4的密钥生成算法如下所示:

1.密钥初始化:将S盒初始化为0到255的正序排列,同时用长度

为N的密钥打乱S盒的顺序。

2.打乱S盒顺序:使用密钥字节序列对S盒进行打乱,打乱的方式

是将S盒中的元素与密钥字节进行异或操作,然后交换位置。

3.生成密钥流:通过对S盒的重新排列生成伪随机数序列,作为密

钥流。

RC4加密过程

RC4加密的过程如下:

1.使用RC4密钥生成算法生成密钥流。

2.将明文与密钥流进行异或操作,得到密文。

3.将密文发送给接收方。

RC4解密过程

RC4解密的过程与加密过程相同,只需将密文与密钥流进行异或操作,得到明文。

RC4的安全性

尽管RC4算法简单高效,但它存在一些安全性问题。由于密钥是用于打乱S盒的,所以当密钥的长度较短时,可能会导致S盒的周期较短,进而影响密钥流的随机性。因此,使用较长的密钥可以提高RC4算法的安全性。

此外,RC4算法的S盒初始化过程是固定的,不涉及随机性,使得一些攻击者能够通过破解S盒的初始状态来获得密钥流。因此,在实际应用中,建议增加密钥初始化的随机性,以增强RC4算法的安全性。

区块链中的密码学06-(3)流密码讲义_16

区块链中的密码学06-(3)流密码讲义_16

流密码陆军工程大学

学习目标

一、流密码的基本原理

二、密钥流的产生器

一、流密码

流密码:

也称序列密码 (Stream Cipher) ,是指

明文消息按字符(如二元数字)逐位地、对应

地加密的一类密码算法。

加密:C i = (M i ) M i K i 解密:M i = (C i ) C i

K i ⊕明文序列M=M 1,M 2,...

密钥序列K=K 1K 2....⊕

密文序列C=C 1,C 2,...明文序列M=M 1,M 2,...密钥序列K=K 1K 2....≡⊕≡⊕i K E i K D

Alice Bob A 6510=10000012

m=1101101

M 1,...M 7=1000001

⊕K 1,...K 7=0101100

C 1,...C 7=1101101=m M 1,...M 7=1000001=A ⊕

K 1,...K 7=0101100C 1,...C 7=1101101Mary (窃听者)

不可预测性:不能从过去的数列推测出下一个出现的数。

不可重现性:除非保存数列本身,否则不能重现相同的数列。

可用于密码技术

流密码的密钥序列应该是变长、

伪随机序列随机、不可预测的。

关键技术:通信双方的精确同步。

伪随机数生成器内部状态初始化内部状态伪随机数列

二、密钥流生成器

线性同余法伪随机数发生器线性反馈移位寄存器

要生成的伪随机数列R1,R2,R3.... R1=(A×种子+C) mod M

A、C、M是常量, A和C小于M R2=(A×R1+C) mod M

.........

R n+1=(A×R n+C) mod M

两种常见的伪随机数算法

两种常见的伪随机数算法

两种常见的伪随机数算法

伪随机数是计算机生成的一系列看似随机的数字序列。虽然伪随机数

并不是真正的随机数,但它们的使用仍然非常广泛,并且在计算机科学和

密码学等领域都有重要的应用。

在本文中,我将介绍两种常见的伪随机数算法:线性同余生成器和梅

森旋转算法。

1. 线性同余生成器(Linear Congruential Generator,LCG):

线性同余生成器是一种简单的伪随机数生成器,它的计算公式为:

X_{n+1} = (a * X_n + c) mod m

其中,X_n是当前伪随机数,X_{n+1}是下一个伪随机数,a、c和m

是预先设定的常数。

LCG算法的优点是简单易实现,并且具有较好的随机性。通过选择合

适的参数值,它可以产生高质量的伪随机数。然而,LCG算法也有一些缺点。当参数选择不当时,会导致周期较短或重复出现相同的伪随机数序列。此外,在密码学等关键领域中,LCG算法的安全性较低,易受到攻击。

2. 梅森旋转算法(Mersenne Twister):

梅森旋转算法通过一个大型的位向量来保存当前状态,并通过一系列

数学计算来生成下一个伪随机数。为了提高性能,它使用了位操作和快速

模运算等技术。

梅森旋转算法在实践中表现出色,具有较好的均匀性、分布特性和随

机性。目前,它广泛应用于计算机图形学、模拟与建模、游戏开发和密码

学等领域。

总结:

线性同余生成器和梅森旋转算法是两种常见的伪随机数生成算法。线

性同余生成器简单易实现,但有一定的局限性。梅森旋转算法复杂、高效,并具有优秀的随机性能。在选择伪随机数算法时,应根据具体应用需求和

随机序列的产生方法

随机序列的产生方法

随机序列的产生方法

产生随机序列的方法有很多种,下面我将从多个角度来介绍几

种常见的方法。

1. 伪随机数生成器,计算机通常使用伪随机数生成器来产生随

机序列。这些生成器会根据一个种子(seed)生成看似随机的数字序列。常见的伪随机数生成算法包括线性同余法、梅森旋转算法等。

2. 物理过程,利用物理过程来产生随机序列也是一种方法,比

如利用放射性元素的衰变、热噪声等物理现象来获取随机数。

3. 随机抽样,在统计学中,随机抽样也可以用来产生随机序列。通过从一个给定的总体中随机抽取样本,可以得到一个随机序列。

4. 混沌系统,混沌理论认为某些非线性动力系统可能表现出随机、不可预测的行为。利用混沌系统的特性可以产生随机序列。

5. 加密哈希函数,加密哈希函数可以将输入的数据转换成固定

长度的输出,看起来是随机的。这种方法也常被用来产生随机序列。

总的来说,产生随机序列的方法多种多样,选择合适的方法取决于具体的应用场景和需求。希望以上介绍对你有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
6
线性同余发生器
线性同余发生器由如下递推关系定义:
X n 1 ( aX n c )mod m
其中 X :为伪随机序列值; m , 0 m : 为模数 a , 0 a m :系数 c , 0 c m :为增量
令 E :{0,1}k {0,1}n {0,1}n 表示一个分组密码,定义算法:
algorithm G ( St ) ( K , S ) St X EK ( S ) ; S EK ( X ) return ( X ,( K , S ))
状态为 ( K , S ) , K 是加密的密钥, S {0,1}n
状态为 ( K , i ) , K 是加密的密钥, i 为 n 位的整数 ( 0 i 2n ) ;
$ 初始状态为 ( K , 0) ,其中 K {0,1}k
23
前向安全性?
令 E :{0,1}k {0,1}n {0,1}n 表示一个分组密码,定义算法:
algorithm G ( St ) ( K , S ) St X EK ( S ) ; S EK ( X ) return ( X ,( K , S ))
维基百科
12
基于LFSR的流密码:A5/1
The operation of the keystream generator in A5/1, a LFSR-based stream cipher used to encrypt mobile phone conversations.
13
RC4
The lookup stage of RC4. The output byte is selected by looking up the values of S(i) and S(j), adding them together modulo 256, and then using the sum as an index into S; S(S(i) + S(j)) is used as a byte of the key stream, K.
X 0 , 0 X 0 m :为种子
多数编译器的库中使用了该理论实现其伪随机数发生器 rand()
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
7
线性同余发生器
Hyperplanes of a linear congruential generator in three dimensions
3
用于加密
Alice 维护状态 St A ,Bob 维护状态 St B 初始时: St A = St B ,为一随机的种子。
( M [1] M [m ])
( X [1] X [m ], St A ) G ( St A , m ) ( X [1] X [m ], St B ) G ( St B , m ) for i 1,, m do C [i ] X [i ] M [i ] for i 1,, m do M [i ] X [i ] C [i ]
(C [1]C [m ])
注意: Alice 和 Bob 的状态必须同步。
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
4
用于伪随机位生成器
状态发生器的输出可以用于需要随机位的场合 • 密钥 • 分组密码的IV • Nonces • 仿真
流密码、伪随机数发生器
裴士辉 QQ:1628159305
状态发生器(Stateful Generators)
最初,状态 St 是一个随机的种子
操作:
X [1] X [ 2] X [3]为输出序列,并且应该具有伪随机性。
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件 2
状态为 ( K , S ) , K 是加密的密钥, S {0,1}n
$ $ 初始状态为 ( K , S ) ,其中 K {0,1}k , S {0,1}n
24
前向安全性?
令 E :{0,1}n {0,1}n {0,1}n 表示一个分组密码,定义算法:
algorithm G ( K ) X E K ( 0) ; K E K (1) return ( X , K )
procedure Inialize
$ $ {0,1}s ; b {0,1} St
procedure Next( m ) ( X1[1] X 1[m ], St ) G ( St , m )
$ {0,1}nm X 0 [1] X 0 [m ]
procedure Finalize(b ') return( b b ')
维基百科 8
线性反馈移位寄存器
• 4-bit Fibonacci LFSR • 16-bit Fibonacci LFSR • 16-bit Galois LFSR.
9
4-bit Fibonacci LFSR
A 4-bit Fibonacci LFSR with its state diagram. The XOR gate provides feedback to the register that shifts bits from left to right. The maximal sequence consists of every possible state except the "0000" state.
return X b [1] X b [m ]
攻击者 A 的和随机数不可区分的优势为: indr A AdvG ( A) 2 Pr INDR G true 1
17
通过分组密码构建流密码/伪随机数发生器
令 E :{0,1}k {0,1}n {0,1}n 表示一个分组密码,定义算法:
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
5
状态发生器
• 线性同余发生器
– LCGs (Linear Congruential Generatots)
• 线性反馈移位寄存器
– LFSRs (Linear Feedback Shift Registers)
维基百科
10
16-bit Fibonacci LFSR
A 16-bit Fibonacci LFSR. The feedback tap numbers in white correspond to a primitive polynomial in the table so the register cycles through the maximum number of 65535 states excluding the all-zeroes state. The state shown, 0xACE1 (hexadecimal) will be followed by 0x5670
18
CTR模式的PRG的安全性
Fact:如果E是一个安全的 PRF(伪随机函数), 那么G是一个INDR安全的 PRG.
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
19
ANSI X9.17 PRG
$ $ 初始状态为 ( K , S ) ,其中 K {0,1}k , S {0,1}n
20
其他标准
• FIPS-186定义了基于DES和SHA-1的PRGs • NIST SP 8000-90定义了基于hash、HMAC、 CTR、ECC的生成器 • ANSI X9.31和ANSI X9.62 • OpenSSl定义了基于SHA-1的PRG
维基百科 11
16-bit Galois LFSR
A 16-bit Galois LFSR. The register numbers in white correspond to the same primitive polynomial as the Fibonacci example but are counted in reverse to the shifting direction. This register also cycles through the maximal number of 65535 states excluding the allzeroes state. The state ACE1 hex shown will be followed by E270 hex.
14
关于LCG和LFSR
LCG和LFSR • 具有很好的统计特性 • 但是是可以预测的:根据以往的输出可以预测出新 的输出 可预测性可以用来对加密过程进行选择明文攻击
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
algorithm G ( St ) ( K , i ) St X E K ( i 1) return ( X ,( K , i 1))
状态为 ( K , i ) , K 是加密的密钥, i 为 n 位的整数 ( 0 i 2n ) ;
$ 初始状态为 ( K , 0) ,其中 K {0,1}k
A
b'
A要计算出 b 如果 A的优势是可以忽略不计的,G 是安全的。
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件 16
正式定义
令G 表示状态生成器, 其种子的长度为 s , 输出的分组的长度为 n Βιβλιοθήκη Baiduame INDR G
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
21
前向安全性
假设攻击者得到了 St[ 2],那么: 1、它可以计算出 X [3] X [ 4] 2、当时他能否计算出 X [1] X [ 2]? 前向安全性要求第 2 个问题的答案为 No. 前向安全的目的是为了保证系统在受到恶意软件攻击的情况下 的安全性。
状态发生器的符号表示
( X [1] X [ m ], St ) G ( St , m )
表示: 运行G ,其初始状态是 St ,运行 m 步 X [1] X [ m ]表示输出序列 St 表示修改后的状态
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件
Mihir Bellare and Phillip Rogaway, Introduction to Modern Cryptography课件 22
前向安全性?
令 E :{0,1}k {0,1}n {0,1}n 表示一个分组密码,定义算法:
algorithm G ( St ) ( K , i ) St X E K ( i 1) return ( X ,( K , i 1))
15
理论上的安全需求
和随机数的不可区分 INDR (Indistinguishability from random) 选一个随机的种子 St ( X 1[1] X 1[ m ], St ) G ( St , m ) 随机地选取 X 0 [1] X 0 [ m ] 随即的选取位 b
X b [1] X b [ m ]
相关文档
最新文档