写在前面的话
个人笔记,仅供参考,不喜勿喷,谢谢大家。
参考资料
视频:【完整版-斯坦福-密码学】全13讲
理解密码学:如何理解"语义安全(semantic security)"?
笔记
密码学的核心:安全通信
1、安全密钥的建立
2、共享密钥,安全的通信
数字签名不可复制。
匿名通信经过一系列代理加密解密,达到匿名效果。
零信任是趋势。
安全多方计算:大家互相交换加密信息,都可以得到最终结果。
同态加密:加密数据上计算
零知识:N是两个1000位的质数乘积,如果要对N进行质数分解来找这两个质数将会很困难。A知道这其中的质数分解,B只知道N,但是A能够向B证明它知道怎么分解。就是让B相信A知道这道题的解。
1、精确描述威胁模型是什么?(比如数字签名,攻击者伪造数字签名的目的何在?)
2、提出架构。
3、证明在当前的威胁模型下破坏这个架构是一个很困难的事情。
对称加密
通信双方的密钥k相同,把加密算法和解密算法看成两个函数,这两个函数是公开的。里面的变量是明文消息,密钥以及密文消息。对于加密算法,变量是明文消息以及密钥,密钥是攻击者不知道的,明文攻击者可能知道。(对于知道明文的攻击者来说目的就是破译密钥)这样输出的就是密文消息。对于解密算法,变量就是密文消息以及密钥,输出就是明文消息。
例如替换式密码应用,这里的密钥就是字母替换规则,攻击者自然是不知道的。
但是也有不需要密钥的加密,比如凯撒加密。就是每个字母往后移动三位,与其说不需要密钥,不如说密钥是固定的,一旦攻击者知道流程就能够轻松破译。但是前面的替换式中的密钥就是随机的。
但是破解替换式也简单。利用先验知识,比如字母出现的频率来判断密钥,在英文中e出现的频率最高,那么密文中出现最高频率的字母很有可能与e相匹配,单个的频率看完看组合,he出现的频率也高,然后不断往下,这叫唯密文攻击。
到了文艺复习时期有一种密码叫Vigener密码,密钥是一组词,与明文相加取模得到密文。
假设我们知道密钥长度,看每组第一个字母,它们都被同一个字母加密了,从这里面能够推测出密钥的字母。然后看每组第二位,重复这样的操作就能解密。但是前提是知道密钥长度,就算不知道,就假设密钥长度,从1开始,一旦解出来的消息说得通就成功了,这还是唯密文攻击。
到了电气化时代出现的轴轮机,和替换式密码差不多,也可以用频率和统计的方法做唯密文攻击。
Enigma密码就是多轴轮。
机械时代结束,进入计算机时代。加密嘛,自然需要一个标准去衡量保护水平。DES作为最初的标准,虽然密钥空间减小到2的56次方,但是不像轴轮机,它一次能够加密64位,一次8个字母。但是现在由于暴力穷举的方法,DES由于密钥空间小就不再适用了。如今有了新的密码,高级加密标准,使用128位密钥。
离散概率问题
有限域就是密钥空间大小,每个密钥都有自己的权重占比,概率和为1。均匀分布就是权重都一样,分母是总数。还有就是点分布,只有一个为1,其他为0。
事件,就是有限域的子集。
并集上界,算概率上界
随机变量,就是一个映射函数,从一个域U映射到另外一个域V。注意随机变量的取值是从V中取值,事实上随机变量定义了集合V上的概率分布。
随机算法定义了一个分布以及全体可能输出的集合。举例说明就是,随机算法加密,即使我每次加密的明文都是一样的,但是每次输出的密文可能不同,这些输出的密文是遵循一个分布的并且在一个有限的空间内。
离散概率的应用
离散概率总是定义在有限集合上的。
独立性
对于事件A和事件B来说,知道A的发生不知道B有没有发生就能说明两者相互独立。对于随机变量也是一样。
异或就是模2得到的值
异或在密码学中有着重要的地位,比如Y是一个服从一个随机分布的随机变量,X是服从均匀分布的随机变量,定义一个随机变量Z为X与Y的异或,那么可以说Z是服从均匀分布的随机变量,也就是说不论Y的分布多么奇怪都会影响异或的结果。
生日悖论
如果n取了有限域大小的根号大小,很可能两次取样的结果是相等的。
所谓的生日悖论也就是当我们有多少人在一个房间里时,会存在两个人生日是同一天。