区块链入门笔记—— 密码学
Posted 说到做到_我的忍道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链入门笔记—— 密码学相关的知识,希望对你有一定的参考价值。
密码学
密码学是研究编制密码和破译密码的技术科学。密码学分为对称密码和哈希密码。
一、对称密码
对称密码体系中,相同的密码用来加密和解密报文。加密和解密过程如下:
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相同原理,并且模仿了该算法
以上是关于区块链入门笔记—— 密码学的主要内容,如果未能解决你的问题,请参考以下文章