密码学是一种通过使用密码来保护信息和通信的方法,这样只有信息的使用者才能阅读和处理信息。
前缀“crypt”的意思是“隐藏的”,后缀“graphy”代表“写作”。
Scytale(700BC 公元前700年)
斯巴达军队在战斗期间使用Scytale发送敏感信息。
Scytale是转位密码(transposition cipher)的一个例子
我们改变的不是字母,而是顺序。
另一类是替换密码(substitution cipher)
字母改变了,但顺序保持不变。
系统地用字母或字母组替换其他字母或字母组
例如,“fly at once”变成了“gmz bu podf”,将每个字母替换为拉丁字母中后面的字母。
明文中的每个字母都被字母表中更靠后一些固定位置的字母所取代。
考虑加密英文文本
密钥空间:k属于{0, 1, …, 25}
加密:将每个字母x替换成x+k
解密:将每个字母x替换成x-k
课文中最常见的字母
x,i,e,h
已知密文攻击
密码中的d可能是明文中的e
替换密码可以是单字母的(monoalphabetic)
Vigenère Cipher是一个多字母密码的例子
基本上,它对不同的文本位置应用不同键的移位密码。
密码学是一门艺术(启发式、特别设计和分析)
在70年代末和80年代初,密码学开始发展成为一门严谨的科学
密码学的三个步骤:
如果你不知道自己想要实现什么,你怎么可能知道自己何时(或是否)实现了呢?
开发精确的威胁模型和安全定义迫使设计师思考他们真正想要的是什么。
威胁模型和安全定义可以对方案进行有意义的评估和比较
一个清晰的威胁模型和安全定义可以让其他人理解某些方案提供的安全保证
一般来说,密码学目前需要计算假设。
对称加密使用相同的密钥进行加密和解密。
非对称加密使用不同的密钥进行加密和解密。
优缺点:
定义:定义在(k, m, c)的是:
E是加密函数,需要两个输入:密钥k和消息m。这个函数生成密文c。
D是需要两个输入的解密函数:一个密钥k和一个密文c。它产生消息m。
使用了两个不同但在数学上相关的密钥—公钥和私钥。
从一个密钥(“私钥”)计算另一个密钥(“公钥”)在计算上是不可行的,即使它们必然相关。
相反,这两个密钥都是作为相互关联的对秘密生成的。
使用一个不可预测的(通常是大而随机的)数字开始生成适合于非对称密钥算法使用的可接受的密钥对。
任何人都可以使用公钥加密消息,但只有配对私钥的持有者才能解密。安全性取决于私钥的保密性。
附在电子传输文件上的一种数字代码(由公钥加密生成并验证),用于验证文件的内容和发送人的身份。
生成数字签名:
签名验证!用私钥加密的版本附加到原始消息中。在收到消息和签名之后,Bob使用公钥来验证消息的真实性。验证是通过使用公钥解密消息并确定哈希/摘要是否与原始消息匹配来完成的。
Acknowledgements: Jiangtao Wang