Cryptography I 斯坦福大学 Dan Boneh——学习笔记1

1、一次性密码本(One-time Pad;OTP)(Vernam 1917)

E(k,m) = m ⊕ k , D(k,c) = c ⊕ k

Given a message (m) and its OTP encryption ( c),可 compute the OTP key from m and c.
k = m ⊕ c.
OTP has perfect secrecy (i.e. no CT only attacks).
Bad news: perfect-secrecy ⇒ key-len ≥ msg-len
OTP可防止密文攻击,且key的长度需大于等于明文的长度,不实用。

2、流加密(Stream Ciphers)(making OTP practical)

Making OTP practical using a PRG: G: K ⟶ {0,1}n
Stream cipher: E(k,m) = m ⊕ G(k) , D(k,c) = c ⊕ G(k) 
Security: PRG must be unpredictable

流加密,是对称加密算法的一种,加密和解密双方使用相同伪随机加密数据流(pseudo-randomstream)作为密钥,明文数据每次与密钥数据流顺次对应加密,得到密文数据流。实践中数据通常是一个位(bit)并用异或(xor)操作加密。
流加密不具有perfect secrecy,因为the key is shorter than the message。
其安全性取决于特定的PRG伪随机数生成算法,
PRG为随机数生成算法必须为不可预测的,即已知1 ~ i位,无法预测i+1 ~ n位的具体值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在密码学中,永远不要用random()函数来生成随机数。
如libc中的random()实现为:(为Weak PRG)

r[i] ← ( r[i-3] + r[i-31] ) % 2^32
output r[i] >> 1

在这里插入图片描述
Never use stream cipher key more than once !!
一次性密码本的基本原则就是只使用一次,然后必须抛弃,这样才会提供足够的安全性和不可破译性。(维诺那计划 Venona project)

• Network traffic: negotiate new key for every session (e.g. TLS) 
• Disk encryption: typically do not use a stream cipher

3 Modern stream ciphers: eStream

增加nonce,且The pair (k,r) is never used more than once.
Nonce是或Number once的缩写,在密码学中Nonce是一个只被使用一次的任意或非重复的随机数值。在加密技术中的初始向量和加密散列函数都发挥着重要作用,在各类验证协议的通信应用中确保验证信息不被重复使用以对抗重放攻击(Replay Attack)。
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值