区块链入门笔记(四)—— 密码学

密码学

密码学是研究编制密码和破译密码的技术科学。密码学分为对称密码和哈希密码。

一、对称密码

        

对称密码体系中,相同的密码用来加密和解密报文。加密和解密过程如下:

M表示明文

K表示秘钥

C表示密文

E

D表


对称密码又包含分组密码和序列密码

(一)分组密码

分组密码以一个数据块为单位进行加密,将明文消息编码表示后的数字序列,划分成长度为n的组,每组分别在密钥的控制下变换成等长的输出数字序列。

1. Feistel 密码

在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 为名,而Horst Feistel 本人是一位物理学家兼密码学家,在他为 IBM 工作的时候,为Feistel 密码结构的研究奠定了基础。很多密码标准都采用了Feistel 结构,其中包括DES。Feistel 的优点在于:由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。这就使得在实施的过程中,对编码量和线路传输的要求就减少了几乎一半

2. DES (Data Encryption Standard) 数据加密标准

数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。

3. AES (Advanced Encryption Standard) 高级加密标准

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

分组密码几种模式

1. 电子密码本(ECB)

2. 密码块链接(CBC)

3. 填充密码块链接(PCBC)

4. 密文反馈(CFB)

5. 计数器模式(CTR)

(二)序列密码

序列密码,一次只对明文中的某个比特运算的算法,而且密码要不断变化中。

常见的序列加密算法

1. 线性反馈寄存器

线性反馈移位寄存器(linear feedback shift register, LFSR)是指,给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位

2. 内容扰乱系统

内容扰乱系统(Content Scrambling System) 是一种防止直接从盘片上复制视频文件的数据加密和鉴定方法。每个获得许可的人都能得到一把密钥,它从加密光盘上的密钥组成的母集中取出来。 只要在以后的光盘上去除该密钥,许可就失效了

3. A5/1算法

该方案用于GSM蜂窝电话网络中的数据机密性加密

4. RC5算法

分组密码算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析。不像许多方案,RC5具有可变块大小(32,64或128位),密钥大小(0到2040位)和轮回数(0到255)。参数的原始建议选择分别为64位,128位密钥和12轮的块大小。12轮的RC5(64位块)易受使用244选择明文差分攻击。18-20轮被认为是足够的安全保护

二、哈希密码

        

哈希密码独立于对称密码体系,因为他不需要解密。不同于编程中的哈希函数,编程中的哈希函数主要用来做地址的映射,密码学中指散列函数具有的特征:

    1. 输入长度可以是任意长度

    2. 输出是固定长度

    3. 给出任意的报文可以很轻松的算出哈希函数

    4. 哈希函数是个不可逆的过程,就是给出一个YY, 其中Y = H(x), 你完全不能通过Y去推算x

    5. 哈希函数不存在碰撞

(一)用途

1. 文件校验

    MD5 Hash算法的“数字指纹”特性,使他成为目前应用最广泛的一种文件完整性校验和算法。

2. 数字签名

    由于飞对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色,对Hash值,又称“数字摘要”进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。

(二)常见算法

1. MD4

MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现–它是基于 32位操作数的位操作来实现的

2. MD5

MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好

3. SHA1

SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于2^64位的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法

猜你喜欢

转载自blog.csdn.net/tzy3013218117/article/details/80981912
今日推荐