《图解密码技术》笔记

对称密码

对称密码是一种用相同的密钥进行加密和解密的技术,用于确保信息的机密性。主要是用AES。尽管对称密码能够确保消息的机密性,但需要解决将解密密钥配送给接收者的密钥配送问题。

分组密码

ECB

优点:

1. 简单

2. 快速

3. 支持并行

缺点:

1. 明文中的重复排列会反映在密文中

2. 通过删除、替换密文分组可以对明文进行操作

3. 对包含某些比特错误的密文进行解密时,对应的分组会出错;不能抵御重放攻击

备注:不应使用

CBC

优点:

1. 明文的重复排列不会反映在密文中

2. 支持并行(仅解密)

3. 能够解密任意密文分组

缺点:

1. 对包含某些错误比特的密码进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错

2. 加密不支持并行计算

备注:

CRYPTREC推荐;《实用密码学》推荐

CFB

优点:

1. 不需要填充

2. 支持并行计算 (仅解密)

3. 能够解密任意密文分组

缺点:

1. 加密不支持并行计算

2. 对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错

3. 不能抵御重放攻击

备注:

CRYPTREC推荐;

OFB

优点:

1. 不需要填充

2. 可事先进行加密、解密的准备

3. 加密、解密使用相同结构

4. 对包含某些错误比特的密文进行解密时,只有明文中相应的比特会出错

缺点:

1. 不支持并行计算

2. 主动攻击者反转密文分组中的某些比特时,明文分组中相应的比特也会被反转

备注:

CRYPTREC推荐

CTR

优点:

1. 不需要填充

2. 可事先进行加密、解密的准备

3. 加密、解密使用相同结构

4. 对包含某些错误比特的密文进行解密时,只有明文中想对应的比特会出错

5. 支持并行计算(加密、解密)

缺点:

1. 主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转

备注:

CRYPTREC推荐;《实用密码学》推荐

公钥密码

公钥密码是一种用不同的密钥进行加密和解密的技术,和对称密码一样用于确保信息的机密性。使用最广泛的一种公钥密码算法时RSA,除此之外还有E1Gamal和Rabin算法,以及与其相关Diffie-Hellman密钥交换(DH)和椭圆曲线Diffie-Hellman密钥交换(ECDH)等技术。和对称密码相比,公钥密码的速度非常慢,因此一般都会和对称密码一起组成混合密码系统来使用。公钥密码能够解决对称密码中的密钥交换问题,但存在通过中间人攻击被伪装的风险,因此需要对带有数字签名的公钥进行认证。

RSA算法:

Encrypt = Plaintext^E mod N

Plaintext = Encrypt ^ D mod N

公钥:E,N

私钥:D,N

生成E,D,N步骤

解释用到的函数

getRandomPrimeNumber():随机得到一个质数

lcm(x, y): x, y的最小公倍数

gcd(x, y): x, y的最大公约数

1. 得到N

p,q = getRandomPrimeNumber()

N = p * q

2. 得到L

L = lcm(p - 1, q - 1)

3. 得到E

随机生成E,满足条件:

1 < E < L

gcd(E, L) = 1

4. 得到D

1 < D < L

E * D mod L = 1

单向散列函数

单向散列函数是一种将长消息转换为短散列值的技术,用于确保消息的完整性。SHA-1曾被广泛使用,但由于人们已经发现了一些针对该算法的理论上可行的攻击方式,因此该算法不应再被用于新的用途。目前已经在广泛使用的SHA-2 (SHA-224、SHA-256、SHA-384、SHA-512),以及具有全新结构的SHA-3(Keccak)算法。单向散列函数可以单独使用,也可以作为消息认证码、数字签名以及伪随机数生成器等技术的组成元素来使用。

消息认证码

消息认证码是一种能够识别通信对象发送的消息是否被篡改的认证技术,用于验证消息的完整性,以及对消息进行认证。消息认证码的算法中,最常用的是利用单向散列函数的HMAC。HMAC的构成不依赖于某一种具体的单向散列函数算法。消息认证码能够对通信对象进行认证,但无法对第三方进行认证。此外,它也无法防止否认。消息认证码也可以用来实现认证加密。


数字签名

数字签名是一种能够对第三方进行消息认证,并能够防止通信对象做出否认的认证技术。数字签名的算法包括RSA、E1Gamal、DSA、椭圆曲线DSA(ECDSA)、爱德华兹曲线DSA (EDDSA)等。公钥基础设置(PKI)中使用的证书,就是对公钥加上认证机构的数字签名所构成的。要验证公钥的数字签名,需要通过某种途径获取认证机构自身的合法公钥。


数字签名


证书

伪随机数生成器

伪随机数生成器是一种能够生成具备不可预测性的比特系列的技术,由密码和单向散列函数等技术构成。伪随机数生成器用于生成密钥、初始化向量和nonce等。

1. 线性同余

M = 正整数;

A = 大于0且小于M的整数;

C = 大于0且小于M的整数;

内部状态 = 伪随机数的种子;

while (true) {

    伪随机数 = (A * 内部状态 + C) mod M;

    内部状态 = 伪随机数;

    输出伪随机数;

}

密码学家的工具箱

密码学家的工具箱

参考

1. 《图解密码技术》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352