公钥密码学与伪随机数

公钥算法是基于数学函数而不是基于替换和置换
公钥密码是非对称的
公钥密码仅用于密钥管理和签名

关于公钥密码的误解:

  • 从密码分析的角度看,公钥密码比传统密码更安全
  • 公钥密码是一种通用的方法,所以传统密码已经过时
  • 用公钥密码实现密钥分配更简单
    公钥密码学与伪随机数_第1张图片

一、公钥密码体制的基本原理

公钥密码学的概念是为了解决传统密码中两个问题提出来的:密钥分配和数字签名
公钥密码体制的6个组成部分:明文、加密算法、公钥、私钥、密文、解密算法
公钥密码学与伪随机数_第2张图片
公钥密码学与伪随机数_第3张图片
公钥密码学与伪随机数_第4张图片
公钥密码学与伪随机数_第5张图片
公钥密码学与伪随机数_第6张图片
公钥密码学与伪随机数_第7张图片
公钥密码体制的应用:

  • 加密、解密:发送方用接收方的公钥对消息加密用接收方的私钥解密
  • 数字签名发送方用自己的私钥对消息进行签名用发送方的公钥验证签名
  • 密钥交换:通信双方交换会话密钥
    公钥密码学与伪随机数_第8张图片
    对公钥密码的要求:
    公钥密码学与伪随机数_第9张图片

公钥密码分析:

  • 公钥密码也易受穷举攻击,解决方法是使用长密钥
    为了抵抗穷举攻击,密钥必须足够长,为了方便加解密,密钥又必须足够短。
  • 另一种攻击:找出一种从给定的公钥计算出私钥的方法。目前还没有在数学上证明对一特定公钥算法这种攻击不可行
  • 公钥体制特有的攻击:本质上是穷举消息攻击,解决方法:在要发送的消息后附加上一个随机数

二、RSA算法

自诞生之日起就成为被广泛接受且被实现的通用公钥加密算法
RSA体制是一种分组密码,其明文和密文均是0至某n-1之间的整数,通常n的大小为1024位二进制数或309位十进制数。
公钥密码学与伪随机数_第10张图片
公钥密码学与伪随机数_第11张图片
公钥密码学与伪随机数_第12张图片
公钥密码学与伪随机数_第13张图片
在这里插入图片描述
公钥密码学与伪随机数_第14张图片
公钥密码学与伪随机数_第15张图片


一、随机数

大量的基于密码学的网络安全算法和协议都使用了二进制随机数。

  • 密钥分发和相互认证方案
  • 会话密钥的产生
  • RSA公钥加密算法中密钥的产生
  • 用于对称流密码加密的位流的产生

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

随机性:一般认为随机序列应有良好的统计特性

  • 分布均匀性:序列中的位分布应是均匀的,即0和1出现的概率大约相等
  • 独立性:序列中任何子序列不能由其他子序列推导出

不可预测性:对随机数的要求不能仅仅停留在序列是统计随机的,而且要求随机数序列是不可预测的
所谓的“真随机数序列”是每个数都统计独立于其他数,因而不可预测
真正的随机数序列很少用, 一般看上去随机的随机数序列是由算法产生的
要是算法好,产生的序列可以经受住随机性检测,这样的数一般称为伪随机数。

二、TRNG、PRNG、PRF

1.真随机数发生器(True Random Number Generator,TRNG)
TRNG把一个很随机的源作为输入,这个源常称为熵源,本质上,熵源是从计算机的物理环境抽取的,可能包括键盘敲击时间模式、磁盘的电活动、鼠标移动、系统时间的瞬时值等。
TRNG也许仅仅是把模拟信号源转化为二元输出
TRNG也可能会做额外的处理以消除源中的不平衡。

2.伪随机数发生器(Pseudorandom Number Generator,PRNG)
PRNG取一个固定值,成为种子作为输入,用一个确定性的算法产生位输出序列。这个种子有可能是由TRNG产生的。
输出位流仅仅由输入值决定,知道算法和种子的对手可以重现整个位流。
两种不同形式的PRNG:

  • 伪随机数发生器(PRNG):用于生产不限长位流,不限长位流通常作为对称流密码的输入
  • 伪随机函数(PRF):用于产生固定长度的伪随机位串,如对称加密密钥和时变值

除了产生位的数量外,两种形式没有差别。
公钥密码学与伪随机数_第16张图片
3. 对PRNG的需求
当PRNG或PRF用于密码学应用时,基本要求是不知道种子的对手不能决定伪随机串。
对PRNG或PRF输出保密性的这个通用要求导致对随机性、不可预测性以及种子特性的特定要求。
就随机性而言,对PRNG的要求是生成的位流尽管是确定性的但要显示随机。
没有单个的测试可以判定一个PRNG生成的数据具有随机的特性。要进行一系列的测试。
NIST SP 800-22规定了这些测试应建立的三个特征:均匀性、可伸缩性、一致性
NIST SP 800-22列出了15种单独的随机性测试,如频率测试、游程测试、Maurer通用统计测试
随机位流应具备两种形式的不可预测性:前向不可预测性、后向不可预测性

4.种子的要求
作为PRNG输入的种子必须安全
种子必须不可预测
种子本身必须是随机数或伪随机数
种子由TRNG产生
公钥密码学与伪随机数_第17张图片
5.PRNG算法设计
特意构造的算法:为了生产伪随机位流而特意或专门设计的
基于现存密码算法的算法:三种密码学算法常用来产生PRNG

  • 对称分组密码
  • 非对称密码
  • Hash函数和消息认证码

三、伪随机数发生器

1.线性同余发生器

公钥密码学与伪随机数_第18张图片
在这里插入图片描述
2.BBS发生器
选择两个大素数p和q且要求p ≡ q ≡ 3 (mod 4)
n = p × q
选择一个随机数s,要求s与n互素,即p或q都不是s的因子
公钥密码学与伪随机数_第19张图片
公钥密码学与伪随机数_第20张图片
BBS被称为密码安全伪随机位发生器(CSPRBG)
BBS的安全性是基于对n的因子分解的困难性上的,即给定n,不能确定它的素因子p和q。

两种使用分组密码构建PRNG的方法获得了广泛的接收:CTR、OFB模式
基于分组密码的PRNG机制:
公钥密码学与伪随机数_第21张图片

四、流密码

公钥密码学与伪随机数_第22张图片
一次一密使用的是真正的随机数流,流密码使用的是伪随机数流。

  • 加密序列的周期要长
  • 密钥流应该尽可能地接近于真正随机数流的特征
  • 密钥长度至少为128位

在使用合适伪随机数发生器的情况下,流密码与密钥长度的的分组密码一样安全。
流密码的潜在优势在于流密码不使用块密码作为构建块,比分组密码会更快,代码更短。
分组密码的优势之一是可以重复使用密钥

五、RC4算法

是一个可变密钥长度、面向字节操作的流密码
以随机置换作为基础
每输出一字节的结果仅需8到16条机器操作指令
软件实现的该密码运行很快
被用于为网络浏览器和服务器间通信而制定的SSL/TLS(安全套接字协议/传输层安全协议)标准中,也应用于作为IEEE 802.11无线局域网标准一部分的WEP协议和新的WiFi受保护访问协议(WPA)中
RSA算法非常简单,易于描述

六、真随机数发生器

真随机数发生器(TRNG)使用不可预测源来产生随机数,大多数是通过测量不可预测的自然过程来实现的。
公钥密码学与伪随机数_第23张图片

你可能感兴趣的:(密码学)