密码学基础

 一、概述

1.1密码学的概念

密码学是研究如何保护信息安全和通信安全的学科。它涉及使用密码算法来加密和解密数据,以确保只有授权的人可以访问和理解这些数据。密码学的主要目标是保护数据的机密性、完整性和可用性。

在密码学中,加密是将原始数据转换为不可读的密文的过程,而解密是将密文转换回原始数据的过程。密码算法是用于执行加密和解密操作的数学算法。常见的密码算法包括对称加密算法(如DES、AES)和非对称加密算法(如RSA、ECC)。

密码学还涉及其他概念,如哈希函数、数字签名和公钥基础设施(PKI)。哈希函数用于将任意长度的数据转换为固定长度的哈希值,常用于验证数据的完整性。数字签名是一种用于验证数据来源和完整性的技术。公钥基础设施是一套用于管理和分发公钥的体系结构,为实现安全通信提供了基础。

密码学在信息安全领域起着重要作用,应用于网络通信、电子商务、电子支付、数据存储等众多领域。

1.2密码学的基本属性

        1.信息的机密性

        2.信息的真实性

        3.数据的完整性

        4.行为的不可否认性

1.3密码体制分类

1.3.1对称密码体制

对称密码体制又称为单钥体制,是加密和解密使用相同密钥的密码算法。

对称密码算法有:祖冲之算法(ZUC)、DES、AES、SM4、RC4

祖冲之算法(ZUC):ZUC算法是一个基于字设计的同步序列密码算法,种子密钥SK和初始向量IV的长度均为128比特。

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

IP初始置换、16轮迭代变换、加密函数f、逆初始置换

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,对4×4的字节数组上进行操作。众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计。AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)达到十亿量级。同样,其也适用于RFID系统。

轮密钥加、字节代替、行移位、列混合

RC4(Rivest Cipher 4)是一种对称密钥流密码算法,由Ron Rivest于1987年设计。它使用一个变长密钥(通常为8至256位)以及一个伪随机生成的密钥流来对数据进行加密。RC4算法的核心是状态向量(state vector)和密钥调度算法。状态向量是一个256个元素的字节数组,用于存储0到255的所有可能值。密钥调度算法根据输入的密钥将状态向量初始化为初始状态。在加密过程中,RC4算法通过对明文逐字节和密钥流逐字节进行异或运算来生成密文。密钥流是RC4算法根据当前状态向量生成的一个伪随机序列,它与明文的长度相同。生成密文后,状态向量会根据已经处理的明文和密文进行更新。

SM4:SM4算法是一种对称加密算法,也是中国国家密码管理局发布的商用密码算法之一。它使用32轮迭代结构,每轮包含四个不同的代替操作,包括字节替代、行移位、列混淆和轮密钥加。SM4算法的密钥长度为128位,支持电子密码本模式和密码分组链接模式等多种工作模式。

1.3.2非对称密码体制

非对称密码体制又称为公钥密码体制,在加密和解密过程中使用不同的密钥。

应用:短消息加密、数字签名、身份认证

非对称密码算法有:RSA、ECC、SM2、EIGamal

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。

ECC(Elliptic Curves Cryptography):ECC算法(Elliptic Curve Cryptography,椭圆曲线密码学)是一种公钥加密算法和数字签名算法,用于保护数据的机密性和完整性。它基于椭圆曲线上的数学原理,具有与传统RSA算法相比,相同安全强度下更短的密钥长度和更高的计算效率。ECC算法的基本原理涉及椭圆曲线上的点运算。椭圆曲线是由形如y^2 = x^3 + ax + b的方程定义的曲线,其中a和b是曲线的参数。椭圆曲线上的点加法和乘法运算是其核心操作

SM2:SM2算法是国家密码管理局(中国)发布的一种非对称加密算法。它基于椭圆曲线密码学理论,在数字签名和密钥交换等领域广泛应用。SM2算法具有高效性、安全性和国产化等特点。

ElGamal:ElGamal公钥密码算法是1985年由塔希尔·盖莫尔提出,是一个基于迪菲-赫尔曼密钥交换的非对称加密算法,是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性。它至今仍是一个安全性良好的公钥密码算法,是一种既可用于加密又可用于数字签名的公钥密码算法。
ElGamal加密过程需要两次模指数运算和一次模乘积运算,解密过程需要模指数运算,求逆运算和模乘积运算各一次。每次加密运算需要选择一个随机数,所以密文既依赖于明文,又依赖于选择的随机数,故对于同一个明文,不同的时刻生成的密文不同。另外,El-Gamal加密使得消息扩展了两倍,即密文的长度是对应明文长度的两倍。

散列算法,又称哈希函数,是一种单向加密算法。

应用:完整性校验

散列算法(签名算法)有:MD5、SM3、SHA1、HMAC、CRC

MD5:MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。

SM3:SM3适用于商用密码应用中的数字签名和验证,是在[SHA-256]基础上改进实现的一种算法,其安全性和SHA-256相当。SM3和MD5的迭代过程类似,也采用Merkle-Damgard结构。消息分组长度为512位,摘要值长度为256位。

整个算法的执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。

SHA1:是由NISTNSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的Hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。

HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。

CRC:(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。

1.4对称加密的总流程

如果Alice向Bob发送数据,Alice首先需要先用Bob的公钥把原始数据加密,再计算加密数据的哈希值,然后用自己的私钥将这串哈希值加密,这串被Alice私钥加密的哈希值就是数字签名,最后将签名放在加密的数据后并打包发送给Bob.

当Bob收到数据以后,用自己的私钥解密得到明文,同时他还有Alice的公钥将签名解密后再跟收到数据的哈希值进行比较,就可以判断消息来自Alice.

二、分组密码的工作模式

2.1电码本模式(ECB)

​ 直接利用分组密码对明文的各分组进行加密

原理:这种模式是将整个明文分成若干相同的小段,对每一小段进行加密 

2.2密文反馈链接模式(CBC)

为了解决ECB模式的安全隐患,可以让重复的明文分组产生不同的密文分组。CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或

2.3输出反馈模式(OFB)

OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。

2.4 密码反馈模式(CFB)

CFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,再采用个密文流通过加密器生成新的密钥流,再将密钥流与明文流异或得到密文流

2.5CTR模式 

计算器模式不常见,在CTR模式中,有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。

三、数字签名

3.1 基本概念

数字签名是指签名者使用私钥对签名的杂凑值进行密码运算得到的结果,并且该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名者行为的抗抵赖性。

为了满足在网络环境中身份认证、数据完整性和不可否认性等需求,数字签名应具有以下特点:

        可信性:签名使文件的接收者相信是签名者在文件上签名的。
        不可重用性:签名不可重用,即同一消息在不同时刻的签名是有区别的。
        不可改变性:在文件签名后,文件不能改变。
        不可伪造性:签名能够证明是签名者而不是其他人在文件上签名,任何人都不能伪造签名。
        不可否认性:在签名者否认自己的签名时,签名接收者可以请求可信第三方进行仲裁。

 发送方A将消息用Hash算法产生一个消息摘要(Message Digest)
发送方A用自己的私钥对消息摘要进行加密,这个加密后的息摘要就是数字签名
发送方A将消息与签名发给接收方B
接收方B接收到消息及其名后,用发送方A的公钥解密这个签名,获得由发送方A生成的消息摘要
接收方B用发送方A所用Hash算法重新生成所获得消息的摘要,对比这两个摘要。若相同说明签名是发送方A针对这个消息的有效签名,否则签名无效。


3.2基于RSA的签名方案

3.3 基于离散对数的签名方案

基于离散对数问题的签名方案是数字签名方案中较常用的一类,包括ElGamal签名方案、Schnorr签名方案、DSA签名方案等。

3.4 离散对数签名体制

3.5基于椭圆曲线的签名方案

四、身份认证

4.1身份认证与数字签名的区别

数字签名是防止他人对传输的文件进行破坏,以及确定发信人的身份的手段。而身份认证是确认用户是否为这个用户的手段。(仔细品,不一样)
举个例子,A向B发送一条消息,说我下午五点去你家。数字签名可以保证消息是A发送的,且消息内容没有被改变过。下午五点钟,A到B家门口敲门,通过身份认证证实确实是A在敲门,那B就给A开门。如果没有身份认证的话,B能在五点钟直接开门吗?
学术点讲,身份认证的目的是鉴别通信中另一端的真实身份,防止伪造和假冒等情况发生。进行身份认证的技术方法主要是密码学方法,包括使用对称加密算法、公开密钥密码算法、数字签名算法等。
4.2基于口令的身份认证(相当于账号密码)

口令保持方案:
存放在一个受保护的文件(文件内容容易泄露)
以密文形式保存(加密的密钥管理保存困难)
基于单向函数的口令加密

口令认证的安全威胁
一个实体如果可以获知(如猜测)出另一个实体的口令,那么就可以冒充他人。

4.3基于Challenge/Response的身份认证

Challenge/Response认证本质:
改变每次传输的口令

假设条件:用户U与系统S预先协商好一个秘密函数f——通信证算法
S发送一个随机消息m(挑战)给U
U计算r’ = f(m‘)(回答),并发送给S
S独立计算r = f(m)来验证r’
注意:通信证算法f应该是U和S独有的
验证码可以理解为一个简单的challenge/response。

4.4基于对某种东西持有性的身份认证

某种东西通常为磁卡(用磁卡中的PIN码)或智能卡(带智能化的微处理器和存储器)

磁卡的缺点是依赖于磁条,而磁条又很容易损坏。智能卡好像目前用的更为广泛,但是成本偏高。

4.5基于生物特征的身份认证

实际的生物特征识别系统应满足的条件
在合理的资源需求下实现可接受的识别准确性和速度
对人没有伤害而且可为人们所接受
对各种欺诈方法有足够的鲁棒性

常用的生物特征识别技术
人脸识别、眼睛识别、手形识别、指纹识别、掌纹识别、声音识别

4.6基于行为特征的身份认证

手写签字
离线认证:通过扫描仪获得签名的数字图像
在线认证:利用数字写字板或压敏笔来记录书写签名的过程
击键行为特征(铠甲勇士那个系统hh)
 

五、密钥管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值