密码学(斯坦福)
密码学笔记 \huge{密码学笔记} 密码学笔记
斯坦福大学密码学的课程笔记
课程网址:https://www.bilibili.com/video/BV1Rf421o79E/?spm_id_from=333.337.search-card.all.click&vd_source=5cc05a038b81f6faca188e7cf00484f6
概述
密码学的使用背景
安全信息保护:网络流量、无线网络流量
保护加密软件或者光盘:EFS…
内容保护:CSS(DVD)AACS(蓝光)事实证明CSS是比较容易被破解的。
用户认证等…
主机段与服务器段之间的传输协议保证了信息传输过程中不会被攻击者窃听或者篡改。
TLS协议简述
①. 传输双端的握手协议:双端握手之后,双端会获得一个只有双端知道的密钥,其他用户无法知道密钥的内容。
②. 信息记录方面:双端使用共享密钥对于传递的信息进行加密传输。
磁盘中的信息保护机制保证磁盘中的信息不会被篡改。对于磁盘来讲从Alice到Alice,不同的是访问磁盘信息的时间,这是磁盘在存储方面的问题。但是从Alice到Bob则是磁盘在信息传递方面的问题,这是两个不同层面的问题。
对称加密简图:
Alice和Bob进行信息交互的时候,Alice使用E(加密算法)对于传递信息进行加密形成密文,Bob接收到密文使用D(解密算法)来得到传递的信息。
❗❗❗对于对称加密整个过程,E.D等其他环节都是完全公开的,只有双方要传递的信息k是不公开的。而且从安全性的角度来讲选择的各种加密算法一定是社会公认的,接受了大量测试认证的加密解密算法,防止使用小众的加密算法被人简单的逆向破解。
一次性密钥:一个密钥只能加密一条信息。
多次性密钥:一个密钥可以加密多条信息。
简介
密码学的核心是两个方面
①. 信息传送双方的密钥建立
②. 双方利用密钥进行安全的信息交流
攻击者不能从截获的密文中解密出有效的消息,但是通信的双方能够通过加解密算法破解出完整且有效的消息(完整性和加密性)。
数字签名 Digital signatures
数字签名的本质是一种对应于物理对应物的数字对应物(有点绕)。现实世界中的文件签署都需要使用相同的签名作为认证,但是信息世界中的数字化使得签名可以被很简单的复制,所以数字签名需要保持变化,来防止攻击者窃取数字签名。通过将数字签名与相应文件的内容做对应,保证了双方的一致性,即使数字签名被窃取,那么在新的文件中,数字签名也是无效的。
匿名交流 anonymous communicattion
mix net:混合网络,如果Alice想要匿名联系Bob,标准的解决方法是使用混合网络。Alice发送的信息通过中间多个代理服务器,最后传递到Bob,但是Bob无从得知是谁发送的消息。这个网络具有双向性,Bob匿名向Alice交流时同理。
匿名数字现金 Anonymous digital cash
现实世界中,用户购买物品时,商家会聚焦于交易,并非用户的身份,但是如何在网络中实现匿名的支付?还有就是数字货币本身的可复制性,如何防止恶意用户的双花攻击?
同时解决这两个问题的方法:
用户使用数字货币进行交易第一次保持匿名,一旦用户自己违规复制货币第二次交易的时候就会立即暴露。
协议 Protocols
问题
选举问题:用户可以自由投票来选举支持的政党,但是希望统计票数的时候能够不记录个人的信息。
选举中心:用户将加密后的投票结果发送给选举中心,中心统计后发送出获胜者的信息,但是对于各个用户的个人信息,用户的投票结果一概不知。(六方选举系统)
拍卖问题:此处以victory auction标准拍卖流程举例(最高价者获得物品,但是实际支付的价格是第二高价)解决方法同选举问题,只不过拍卖中心需要放出胜者和第二高的价格。
Secure multi-play computation(多方安全计算):多方参与者各自持有秘密输入,使用函数进行计算:
G o a l : c o m p u t e f ( x 1 , x 2 , x 3 , . . ) Goal:compute \quad f(x_{1},x_{2},x_{3},..) Goal:computef(x1,x2,x3,..)
但是公布函数的结果的时候,不能泄露个体的投票信息。
解决方式
引入可信第三方
引入一个可信的第三方来进行计票,但是必须确保绝对可信(非常不安全)。
定理
可以消除对于第三方计票的依赖,用户无需发送信息给第三方,只需要用户间使用特殊协议进行通信,通信完成后函数结构就会立刻返回给所有的用户,也不会泄露用户个人信息。
crypto magic
Privately outsourcing computation
❗对于复杂的计算还只停留在理论阶段,但是简单计算已经能够使用了!(可行性✔)
Alice向Google发送加密的信息,Google在密文基础上进行运算,将结果发送给Alice,然后Alice进行解密,获得计算后的results。
特点:Google进行了计算,但是不知道加密前的信息是什么。
Zero knowledge (proof of knowledge)
举例:N是由p与q两个质数相乘的结果,Alice手头有这个公式 N = p × q N=p×q N=p×q,Bob手上有N,**Bob本身连因数分解的概念都不知道。**但是Alice有方法可以在Bob什么都不知道的条件下向Bob证明N可以被因数分解,同时Bob也不知道N可以被分成p与q两个数的乘积。