密码学基础总结-01
这个学期我选了密码学基础这门课,按照老师所说,这门课是密码学1还有密码学2这种怪物,所以叫密码学基础,在受尽折磨后我完成了考试,还不知道结果,现在把我写的总结放在这里,万一有后进遇到这些问题,可能会有些收获。这是一系列文章的第一篇,将覆盖基础的密码学知识。
密码学基础的用途
这个是很简单的,我们都知道密码学的重要性,最基础的问题在于解决在一个不安全的被攻击者监视的信道上如何成功保密传输信息,整个密码学基础部分就是为了解决这个问题,你作为发送方思考保护信息,你也会站在攻击者的角度上来分析某个加密算法,尽吾辈之力得到信息,这就是攻防模型。
四种基本攻击
唯密文攻击(Ciphertext-only attack)
分析者通过同一密钥加密的密文,恢复出明文或者密钥。(COA)
已知明文攻击(Known-plaintext attack)
分析者通过同一密钥加密的明文/密文对,恢复出其他密文的明文或者密钥。(KPA)
选择明文攻击(Chosen-plaintext attack)
分析者可以根据破解需要,选择系列明文并获得对应的密文,恢复出其他密文的明文或者密钥。(CPA)
选择密文攻击(Chosen-ciphertext attack)
分析者可以根据破解需要,选择系列密文并获得对应的明文,恢复出其他密文的明文或者密钥。(CCA)
上述四种基本攻击,假设攻击者已知加密算法的实现细节,在未知密钥的情况下,攻 击密码系统的强度由弱到强,下面着重介绍唯密文攻击和选择明文攻击。
唯密文攻击实验
- 运行密钥生成算法Gen,确定密钥k。
- 随机加密若干明文,并将密文发送给攻击者。
- 攻击者发送明文空间中的两条消息m0和m1。
- 随机加密其中一条明文,并将对应密文发送给攻击者。
- 随机加密若干明文,并将密文发送给攻击者。
- 攻击者根据密文猜测对应的明文是m0还是m1。
选择明文攻击实验
- 运行密钥生成算法Gen,确定密钥k。
- 攻击者选择明文空间中的明文,将明文加密后生成并发送给攻击者。这步可以执行安全参数的多项式时间次。
- 攻击者发送明文空间中的两条消息m0和m1。
- 随机加密其中一条明文,并将对应密文发送给攻击者。
- 攻击者选择明文空间中的明文,将明文加密后生成并发送给攻击者。这步可以执行安全参数的多项式时间次。
- 攻击者根据密文猜测对应的明文是m0还是m1。
确定性密码的问题
在了解上面的选择明文攻击之后,已经有一类加密算法不满足安全需求了,这里还有一个故事,二战时,美军猜测日军将进攻中途岛或者塞班岛,但是不知道具体是那个,这时候美军密码分析者发现日军的电报总总会出现AF这个单词,这时候,美军就放出中途岛缺少淡水,这个时候日军的电报又被截获了,写着AF缺少淡水,这个时候美军大概率确定是中途岛。这个故事我不知道是不是真实的,但是这里告诉我们一个很重要的事实,确定性的算法无法抵御选择明文攻击,确定性算法就是一个确定明文不管加密多少次都是一样的结果。
上面的文字已经介绍了攻击方法,下一篇文章将介绍一些古典密码学的事情和完善保密。