Introduction to modern cryptography阅读笔记(三)

拿到纸质书之后又从头读了一遍
从chapter one开始
ad hoc 点对点
三个原则
1、Formal Definitions
任何密码方案需要一个formal definitions也就是一个正式的定义。

A scheme satisfying a weaker definition may be more efficient than another scheme satisfying a stronger definition.

一个安全方案的定义包含两个组成部分
1、安全保障
2、威胁模型
blatantly insecure公然的不安全
安全保障所要提供的
1、恢复密钥是不可能的
2、从密文中恢复完整的明文是不可能的
3、从密文中恢复任意一个明文特征也是不可能的
例如加密的工资数据库,虽然无法恢复出具体数额
但也不能够恢复出如下信息:
A的工资比B高,这样也是不允许的
4、不能泄露额外的信息
威胁模型
威胁模型所代表的就是攻击者具有的攻击能力
plausible option 合理选择

  • 唯密文攻击
  • 已知明文攻击
  • 选择明文攻击
  • 选择密文攻击

唯密文攻击
指的是在仅知已加密文字(即密文)的情况下进行穷举攻击。只知道密文。

已知明文攻击
得到了一些给定的 明文和对应的密文,在这里可以是的任意非空子集。 已知明密文对。

选择明文攻击
攻击者除了知道加密算法外,还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和加密的密文。

选择密文攻击
攻击者掌握对解密机的访问权限,可构造任意密文所对应的明文。
off-the-cuff 现成的
第一章课后习题
1、思路统计密文中字母出现频率和图1.3对比一下找到明文和密文的对应关系
代码就是简单统计字频代码

#include
using namespace std;
int main()
{
	char arr[]="JGRMQOYGHMVBJWRWQFPWHGFFDQGFPFZRKBEEBJIZQQOCIBZKLFAFGQVFZFWWEOGWOPFGFHWOLPHLRLOLFDMFGQWBLWBWQOLKFWBYLBLYLFSFLJGRMQBOLWJVFPFWQVHQWFFPQOQVFPQOCFPOGFWFJIGFQVHLHLROQVFGWJVFPFOLFHGQVQVFILEQGIQVVOSFAFGBWQVHQWIJVWJVFPFWHGFIWIHZZRQGBABHZQOCGFHX";
	int count[26]={0};
	int len=sizeof(arr)/sizeof(char);
	for(int i=0;i<len;i++)
	{
		int index=arr[i]-'A';
		count[index]++;
	}
	for(int i=0;i<26;i++)
	{
		double x;
		x=count[i]*1.0/len;
		x*=100;
		char c='A'+i;
		printf("the %c frequency is %.1f\n ",c,x);
	}
	return 0;
}

Introduction to modern cryptography阅读笔记(三)_第1张图片

Introduction to modern cryptography阅读笔记(三)_第2张图片
Introduction to modern cryptography阅读笔记(三)_第3张图片
其中F字符出现次数最高,可以替换e,其次是Q可以替换t,(然后一一匹配即可),暂时没有想到便捷方法,因为原来字频也要排个序才好。

a b c d e f g h i j k l m n o p q r s t u v w x y z

放个破解链接可以看看
单表代换破译
2、给出单表替换密码的formal definition
Gen
Enc
Dec
3、给出Vigenere密码的formal definition
4、实现本章提出的移位密码和vigenere密码的攻击
5、恢复出密钥需要多少选择明文
6、假定一个密码攻击者知道用户的密码是abcd或bedg,用户用移位密码对pwd进行加密,并且攻击者看到了加密结果。那么攻击者如何确定用户的密码是两者中的哪个?
7、用2、3、4重复之前的Vigenere密码实验
8、提供移位、替换、Vigenere密码的标准定义并讨论如何对修改后的加密方案进行攻击

你可能感兴趣的:(密码学,密码学)