密码学原理 01 introduction
Outline
- 密码学与现代密码学
- 私钥加密的设置
- 历史密码及其密码分析
- 现代密码学的基本原理
内容
- 密码学与现代密码学
什么是密码学?
- 密码学:从希腊克利普特,“隐藏,秘密”;和格拉芬,“写作”
- 密码学:书写或解决代码的艺术。(简明牛津词典2006)
- 代码:一种预先安排好的信号系统,特别是用来确保传送信息的保密性。(密码学中的码字)
- 20世纪80年代:从古典到现代,从军事到现代
- 现代密码学:保护数字信息、系统和分布式计算免受敌对攻击的数学技术科学研究
内容
- 私钥加密的设置
私钥加密
- 目的:构建用于在共享私钥(对称**)的两方之间提供秘密通信的密码(加密方案)
- 隐含的假设:有一些方式以秘密的方式共享**
- 磁盘加密:同一用户在不同时间点
- ** k ∈ K,明文(或消息)m ∈ M,密文c ∈ C
-
**生成算法K<- Gen
-
加密算法C := Enck (m)
-
解密算法M:= Deck (c)
-
加密方案: ∏ =(Gen,Enc,Dec)
确保**与模糊算法
- 容易维护短**的保密性
- 如果钥匙暴露了,诚实的当事人更容易改变钥匙。
- 在多对人的情况下,更容易使用相同的算法,而是不同的**。
Kerckhos原理
加密方法不能被要求是秘密的,它必须能够落入敌人的手中而不会带来不便。
为什么“开放密码设计”
- 发布的设计要经过公众审查才能更强
- 最好让“道德黑客”揭露安全漏洞
- 代码反向工程(或工业间谍泄露)对安全构成严重威胁
- 能够建立标准
攻击场景
- 只有密文:对手只是观察密文
- 已知明文:对手在同一**下学习成对的明文/密文
- 选择明文:对手有能力获得其选择的明文加密
- 被动攻击:COA KPA,因为不是所有密文都是保密的
- 主动攻击:CPA CCA什么时候加密 / 解密对手想要什么?
内容
- 历史密码及其密码分析
凯撒密码
如果他有什么机密的话要说,他就用密码写,也就是说,通过改变字母表中的字母顺序,一个字也看不出来。如果有人想破译这些字母,并理解它们的意思,他必须把字母表中的第四个字母D替换为A,以此类推。 - 苏埃托尼乌斯,《凯撒大帝的一生》
-
Enc(m) = m + 3 mod 26
-
弱点:**是什么?
移位密码
- Enck(m)= m + k mod 26
- Deck(c) = c - k mod 26
- 弱点:在蛮力攻击下脆弱(详尽搜索)
有先见之明的关键空间原则
任何安全加密方案都必须有一个**空间,不容易进行彻底搜索
重合指数(IC)法(求k)
重合指数(IC):两个随机选择的字母(pick-then-return)相同的概率。表示英文文本中第i个字母的概率。
例:‘apple’ 的重合指数是多少?
很长一段英语文本的IC ≈ 0.065,j = 0,1,…,25, qj 是密文中第 j 个字母的概率
单一字母密码
- 思想:以任意的方式将每个字符映射到一个不同的字符
- 强度:**空间 ≈ 2 ^ 88,问:如何计数?
- 缺点:每个字母的映射是固定的
统计模式攻击
- 把密文中字母的频率制成表格
- 把它和英文文本中的比较一下
- 猜测最频繁的字母对应于e,等等
- 选择 “有意义” 的纯文本(不是琐碎的)
表:英文文本的平均字母频率
频率分析示例(分析)
计数和猜测,尝试和错误。
表:分析步骤
多字母移位密码
- 思想:通过将明文中相同字母的不同实例映射到密文中的不同实例,“平滑” 密文中的分布
- 加密:ci = mi +k [ i mod t ], t为k的长度(周期)
- 密码分析:需要查找 t ; 如果已知 t ,则需要知道解密是否 “有意义” ,但是对于t > 15,暴力**(26 ^ t)是不可行的
Kasiski理论
- 识别长度为2或3的重复模式
- 这种现象之间的距离是 t 的倍数
- t 是所有距离中最大的公约数
重合指数(IC)法(寻找 t )
对于 r = 1,2,… , qi 是第 i 个字母在c1,c1+r,c1+2r,…,IC是
如果 r = t ,那 Ir ≈ ?否则 qi ≈ 1/26 且
然后重用IC方法查找 ki
任意对手原则
必须保证拥有指定权力的对手阶级内的任何对手的安全
密码分析攻击(家庭作业)
- 在COA下,对密文的要求与**空间的大小有关。多字母移位 > 单字母下标 > 移位
- 在KPA下,微不足道的破碎。
经验教训
- 有先见之明的关键空间原则
- 设计安全密码是一项艰巨的任务
- 复杂性并不意味着安全(那么什么意味着安全呢?)
- 任意对手原则
内容
现代密码学的基本原理
现代密码学的三大原理
- 安全/威胁模型的严格定义
- 当一个密码的安全性依赖于一个未经证实的假设时,这个假设必须精确地表述,并且尽可能地最小化
- 密码应附有上述定义和上述假设的严格安全性证明
Principle 1 – 精确定义的提法
Q:如何将私钥加密的安全性形式化?
- 如果给了密文,任何对手都找不到秘钥。Enck(m) = m
- 没有对手能找到与密文相对应的明文。Enck(m)= m0 || AESk(m)
- 任何对手都不能确定与密文相对应的明文的任何字符。m = 1000,有人可以知道800 < m < 1200
- 没有对手可以从密文中获得关于明文的任何有意义的信息。
你能定义所谓的 “有意义” 吗?
安全的定义应该适用于所有潜在的应用程序。
Principle 1 – 如何定义
如何定义安全 - 艾伦图灵的教训
- 什么是计算
- 直接诉诸直觉
- 证明两个定义的等价性(新定义具有更大的直观吸引力)
- 给出用定义解决的例子
- 安全的附加方法:时间测试
Principle 2 - 依赖于精确的假设
大多数密码结构不能无条件地被证明是安全的
为什么?
- 假设的验证
- 方案的比较
- 促进安全证明
如果假设是正确的,构造是安全的。
怎么做?
- 老,所以测试
- 简单、低级,易于学习、批驳、正确
Principle 3 – 安全的严格证明
- 为什么?
证明在计算机安全领域比在其他领域更受欢迎。
- 简化的方法:
定理1
假设X为真,根据给定的定义,构造Y是安全的。
证明
把X给出的问题归结为Y的断裂问题。
- 特别的方法:对于那些需要 “快速和肮脏” 的解决方案的人,或者仅仅是没有意识到的人。
总结
- 密码学保护信息、事务和计算
- Kerckhos原理&开放密码设计
- 凯撒密码、移位密码、单一字母密码、多字母移位密码
- 暴力,字母频率, Kasiski’s,IC
- 有先见之明的关键空间原则
- 任意对手原则
- 严格证明安全