欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Introduction to modern cryptography阅读笔记(三)

程序员文章站 2022-05-11 20:30:24
...

拿到纸质书之后又从头读了一遍
从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<bits/stdc++.h>
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阅读笔记(三)

Introduction to modern cryptography阅读笔记(三)
Introduction to modern cryptography阅读笔记(三)
其中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密码的标准定义并讨论如何对修改后的加密方案进行攻击

相关标签: 密码学