《密码软件实现与密钥安全》林璟锵,郑昉昱,王伟,刘哲,王琼霄作|(epub+azw3+mobi+pdf)电子书下载

图书名称:《密码软件实现与密钥安全》

【作 者】林璟锵,郑昉昱,王伟,刘哲,王琼霄作
【丛书名】网络空间安全学科系列教材
【页 数】 205
【出版社】 北京:机械工业出版社 , 2021.05
【ISBN号】978-7-111-67957-8
【价 格】79.00
【分 类】计算机网络-网络安全-高等学校-教材
【参考文献】 林璟锵,郑昉昱,王伟,刘哲,王琼霄作. 密码软件实现与密钥安全. 北京:机械工业出版社, 2021.05.

图书封面:

图书目录:

《密码软件实现与密钥安全》内容提要:

本书从密码算法、计算机存储单元、操作系统内存管理等方面入手,介绍了密码软件实现的原理,重点阐述了密钥安全的重要性。然后,介绍用户态、内核态、虚拟机监控器等典型密码软件实现,并总结了它们可能面临的安全威胁。最后,针对这些安全威胁,本书详细介绍了多种前沿的密码软件实现密钥安全方案,给出了深入的分析和探讨。

《密码软件实现与密钥安全》内容试读

Chapter

1010101

密码技术是实现网络空间安全的关键核心技术,密码算法是密码技术的基础理论。密码算法不仅可以提供包括数据机密性、数据完整性、消息起源鉴别和不可否

第1章

认性等多种基础安全服务,也是密钥管理的基础工具。密钥是密码算法的关键数据,密码算法又用于密钥管理。在密钥管理中,有多种密钥生成和建立方法是在密码算法的基础上设计的。

本章从三个方面分别介绍密码算法和密码软件实现的相关基础知识。首先,简要说明密码杂凑算法、对称密码算法和公钥密码算法三类密码算法。然后,阐述密钥管理的基本概念和各种密码算法实现中需要重点保护的密钥等敏感数据。最后,简单介绍密码算法的实现形

密码算法和密钥

态和密码软件实现所面临的攻击威胁。

1.1密码算法

密码算法是密码技术的核心,各种基于密码技术的安全功能都需要密码算法的支持。密码算法可以实现数据机密性(data confidentiality)、数据完整性(dataintegrity)、消息起源鉴别(source authentication)、不可否认性(non-repudiation)等基础安全功能。

口数据机密性是指保证数据不会泄露给未获授权的个人、计算机等实体。利用密码算法的加密和解密操作,可以实现数据机密性。

口数据完整性是指保证数据在传输、存储和处理过程中不会遭到未经授权的篡改。利用消息鉴别码或数字签名算法可以实现数据完整性。密码杂凑算法只能防范无意的传输错误,不能防范攻击者恶意的篡改,除非它产生的消息摘要无法被修改。

2

密码软件实现与密钥安全

口消息起源鉴别是指保证消息来自于特定的个人、计算机等实体,且没有未经授权的篡改或破坏。利用消息鉴别码或者数字签名算法,可以实现消息起源鉴别。

口不可否认性也称为抗抵赖性,是指实体不能否认自己曾经执行的操作或者行为。利用数字签名算法可以实现不可否认性。

本节主要为读者介绍密码算法的基础知识,包括密码算法的分类以及各种密码算法所能实现的安全功能。

1.1.1密码算法和数据安全

常用的密码算法包括密码杂凑算法、对称密码算法和公钥密码算法三类。

1.密码杂凑算法

密码杂凑算法也称为密码杂凑函数,其作用是为任意长度的消息计算生成定长的消息摘要。密码杂凑算法的计算是单向的,从给定的消息摘要计算输入的消息在计算上是不可行的。输入消息的微小变化会导致密码杂凑算法输出的巨大变化。密码杂凑算法的计算过程一般不需要密钥,但是它可以应用在多种带密钥的密码算法或者密码协议中。在数据安全保护中,密码杂凑算法有以下作用:

I)作为消息鉴别码(Message Authentication Code,MAC)的基础函数,实现数据完整性和消息起源鉴别,例如带密钥的杂凑消息鉴别码(Keyed--Hash MAC,HMAC)。

2)配合数字签名算法(例如RSA算法、SM2算法等),用于压缩消息、产生消息摘要,

作为数字签名算法的计算输入。

2.对称密码算法

对称密码算法用于明密文数据的可逆变换,且变换和逆变换的密钥是相同的。明文到密文的变换称为加密,密文到明文的变换称为解密。加/解密的秘密参数称为密钥。对称密码算法中的“对称”是指加密密钥和解密密钥是相同的。在不知道密钥的情况下,从明文获得密文的有关信息或者从密文获得明文的有关信息,在计算上是不可行的。在数据安全保护中,对称密码算法有以下作用:

1)用于加/解密数据,实现数据机密性保护。

2)用于构建消息鉴别码,实现数据完整性和消息起源鉴别,例如CBC-MAC(Cipher

Block Chaining MAC,密文分组链接MAC)、CMAC(Cipher-based MAC,基于对称加密算

法的MAC)等。

3)使用专门的对称密码算法工作模式,在实现数据机密性的同时,提供MAC类似功

能的数据完整性和消息起源鉴别,例如GCM(Galois/Counter Mode,Galois/计数器模式)和CCM(Counter with CBC-MAC,带CBC-MAC的计数器模式)。

3.公钥密码算法

公钥密码算法也称为非对称密码算法。它同样可以用于明密文数据的变换,且变换和逆

第1章密码算法和密钥3

变换的密钥是不同的,分为用于加密的公开密钥(简称公钥)和用于解密的私有密钥(简称私钥)。任何人都可以使用公钥来加密数据,拥有对应私钥的实体才可以解密,而且从公钥不能获得私钥的任何有关信息。除了公钥加密算法,公钥密码算法还包括数字签名算法。拥有私钥的实体可以对消息计算数字签名,任何人都可以使用公钥来验证数字签名的有效性。总的来说,在数据安全保护中,公钥密码算法有以下作用:

1)直接用于加/解密数据,实现数据机密性。由于公钥密码算法的计算效率低,因此这种方法一般只用于少量数据(如对称密钥)的加/解密。

2)用于计算数字签名和验证数字签名,实现数据完整性保护、消息起源鉴别和抗抵赖。相同的密码算法可以选择不同的密钥长度,例如AES(Advanced Encryption Standard,高级加密标准)对称密码算法的密钥长度可以是128位、192位或者256位。密码算法的安全强度与密钥长度相关,对于相同的密码算法,密钥长度越大则安全强度越高。密码算法安全强度是指破解密码算法所需的计算量,它的单位是位(bt)。n位的安全强度表示破解该密码算法需要2"次计算。按照目前的技术发展水平,80位安全强度及以下的密码算法

(例如RSA-1024算法)是不安全的,112位安全强度的密码算法(例如RSA-2048算法)在

2030年后是不安全的。

密码算法的安全强度并不等于密钥长度。一般来说,对称密码算法的安全强度与密钥长

度相当,公钥密码算法的安全强度显著小于密钥长度。例如,RSA算法密钥包括两个大素数

因子,密钥空间并不等于密钥长度确定的全部取值空间。同时,由于密码算法存在各种破解方法,也会导致安全强度小于密钥长度。例如,3Key-TDEA(3-Key Triple Data Encryption

Algorithm,三密钥的三重数据加密算法)的密钥长度是168位,但是由于存在中间相遇攻击,3Key-TDEA的安全强度只有II2位;2Key-TDEA(2-Key Triple Data Encryption

Algorithm,两密钥的三重数据加密算法)的密钥长度是112位,其安全强度只有80位;由

于存在各种大整数分解方法,因此RSA-1024、RSA-2048算法的安全强度分别只有80位、

112位;256位素域的SM2算法的安全强度只有128位。

接下来,本节将具体介绍密码杂凑算法、对称密码算法和公钥密码算法三类密码算法。

1.1.2密码杂凑算法

密码杂凑算法通常表示为h=H(),M是任意长度的消息,h是计算输出的定长消息摘要。一般来说,密码杂凑算法应该具有如下性质:

1)单向性(抗原像攻击)对于输入消息M,计算摘要h=H(M是容易的;但是给定输出的消息摘要h,找出能映射到该输出的输入消息M满足h=H(),在计算上是困难的、不可行的。

2)弱抗碰撞性(抗第二原像攻击)给定消息M,找出能映射到相同消息摘要输出的

另一个输人消息M2,满足H(M2)=H(M),在计算上是困难的、不可行的。

4

密码软件实现与密钥安全

3)强抗碰撞性找到能映射到相同消息摘要输出的两个不同的消息M,和M2,满足

H(M2)=HM),在计算上是困难的、不可行的。

1.常用的密码杂凑算法

常用的密码杂凑算法包括MD5(Message Digest5)算法、SHA(Secure Hash Algorithm,

安全密码杂凑算法)系列算法和中国国家标准SM3算法。SHA系列算法包括SHA-1、SHA-2

和SHA-3。

(1)MD5算法

MD5算法是20世纪90年代初由美国麻省理工学院的Rivest设计的。MD5算法将输入消息划分成若干个512位的消息分组,经过逐分组的一系列变换后,输出128位的消息摘要。大量的密码杂凑算法也是采取类似的设计,将输入消息划分成若干定长的消息分组,然

后进行逐分组的一系列变换。因为王小云院士的原创研究成果以及后续研究进展,MD5算

法的碰撞消息已经能够很容易找到,而且也能够构造满足语义要求的碰撞消息,所以MD5

算法已经不能满足现有信息系统的安全要求。

(2)SHA-1算法

SHA-l算法是20世纪90年代初由美国国家安全局(National Security Agency,NSA)和美国国家标准技术研究院(National Institute of Standards and Technology,NIST)设计

的美国国家标准密码杂凑算法。SHA-1输出的消息摘要长度是160位。与MD5算法一样,

SHA-1算法也因为王小云院士的原创成果而被找到碰撞实例,继续使用SHA-1算法存在安

全风险,所以SHA-1算法也在逐步停止使用。

(3)SHA-2算法

SHA-2算法是由美国NSA和NIST于2001年公开的一系列美国国家标准密码杂凑算

法。SHA-2算法支持224位、256位、384位和512位4种不同长度的消息摘要输出。它包

含6个算法:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。其

中,SHA-256和SHA-512是主要算法,其他算法都是在这两个算法的基础上使用不同的初

始值并截断计算输出而得到的。目前还没有发现对SHA-2算法的公开有效攻击。

(4)SHA-3算法

因为MD5和SHA-1算法相继出现安全问题,引发了人们对已有密码杂凑算法安全性的

担忧。2007年,美国NIST宣布公开征集新一代美国国家标准密码杂凑算法。经过层层筛选,

2012年10月,NIST宣布Keccak算法成为新的美国国家标准密码杂凑算法,即SHA-3算

法。与SHA-2算法类似,SHA-3算法也是系列算法,包含SHA3-224、SHA3-256、SHA3-

384、SHA3-512共4种不同长度摘要输出的密码杂凑算法,以及SHAKE128、SHAKE256这

两种可拓展输出函数(eXtendable Output Function,XOF)。可拓展输出函数与传统密码杂凑

算法的区别在于,可拓展输出函数的输出长度不固定。由于这个特性,直接将XOF作为密

码杂凑算法用于HMAC、密钥派生函数(Key Derivation Function,KDF)等有一定的安全

第1章密码算法和密钥

风险。更多信息可以参考美国国家标准FIPS PUB202。

(5)SM3算法

SM3算法是中国国家标准密码杂凑算法。SM3算法于2012年发布为密码行业标准GM/

T0004-2012《SM3密码杂凑算法》,于2016年升级为国家标准GB/T32905-2016《信息安

全技术SM3密码杂凑算法》。SM3算法输出的消息摘要长度是256位。SM3算法使用了多

种创新性的设计技术,能够有效抵抗多种攻击方法。目前没有发现对SM3算法的有效攻击。

(6)小结

在应用中,密码杂凑算法的主要参数是输出长度、消息分组长度和安全强度。例如,将

密码杂凑算法用于HMAC算法时,ISO/IEC9797-2:2011国际标准要求密钥的长度大于或者

等于密码杂凑算法的输出长度且小于等于消息分组长度。

常用密码杂凑算法的主要安全参数如表1-1所示。

表11常用密码杂凑算法的主要安全参数

密码杂凑算法

输出长度(位)

消息分组长度(位)

安全强度(位)

MD5

128

512

发现碰撞,不安全

SHA-1

160

512

发现碰撞,不安全

SHA-224

224

112

512

SHA-256

256

128

SHA-384

384

192

SHA-2

SHA-512

512

256

1024

SHA-512/224

224

112

SHA-512/256

256

128

SHA3-224

224

1152

112

SHA3-256

256

1088

128

SHA3-384

384

832

192

SHA-3

SHA3-512

512

576

256

SHAKE128

任意长度(d)

1344

Min(d/2,128)9

SHAKE256

任意长度(d)

1088

Min(d/2,256)

SM3

256

512

128

2.带密钥的杂凑消息鉴别码

密码杂凑算法可用于压缩消息、产生消息摘要,通过对比消息摘要,可以实现数据完整性校验,防范传输和存储中的随机错误。但是,由于任何人都可以对消息进行密码杂凑计

算,因此它不能防范对消息的恶意篡改。利用HMAC,可以防范对消息的恶意篡改,同时

实现数据完整性和消息起源鉴别。例如,IPSec(Internet Protocol Security,互联网协议安全)和SSL/TLS(Secure Sockets Layer/Transport Layer Security,安全套接层/传输层安全)协

议均使用了HMAC,用于数据完整性和消息起源鉴别。

⊙Min(a,b)函数返回a和b中的较小值。

6

密码软件实现与密钥安全

国际标准ISO/IEC9797-2:2011、美国国家标准FIPS PUB198-1和国际互联网工程任务

组IETF RFC21O4都对HMAC算法进行了规范。HMAC利用密码杂凑算法,将密钥和消息

作为输人,计算消息鉴别码。对于密钥K、消息D,HMAC的计算公式如下:

HMAC(K,D)=MSB(HK④OPAD)IH区⊕IPAD)ID》e

其中,密钥K的长度为k位。ISO/IEC9797-2:2011中要求L1≤k≤L2(L1是密码杂凑算法

的输出长度,L2是密码杂凑算法的消息分组长度),FIPS PUB198-1和IETF RFC2104则无

此要求。

下面以ISO/IEC9797-2:2011为例介绍HMAC的计算流程。首先对密钥进行填充,在

密钥K的右侧填充(L,一k)个0,得到长度为L1的比特串K。将十六进制值0x36(二进制表

示为O0110110)重复L,/8次连接起来,得到比特串IPAD,然后将R和比特串IPAD异或,

将异或结果和消息D连接起来,并将连接后的数据输入第一次密码杂凑计算。将十六进制

值0x5C(二进制表示为01011100)重复L,/8次连接起来,得比特串OPAD,然后将R和比

特串OPAD异或,将异或结果与第一次密码杂凑计算的结果连接起来,并将连接后的数据

输入第二次密码杂凑计算;取计算输出的最左侧m位作为HMAC计算结果。

1.1.3对称密码算法

对称密码算法的加/解密计算过程如图1-1所示。发送方使用加密算法将明文变换为密文,密文计算结果由明文和密钥共同确定。接收方使用解密算法将密文变换为明文,加密过程和解密过程必须使用相同的密钥。

明文

加密算法

密文

解密算法

明文

密钥

图1-1对称密码算法的加/解密过程

对称密码算法分为两种:一是序列密码算法,也称为流密码算法,二是分组密码算法。序列密码算法和分组密码算法的区别如下:

1)序列密码算法将密钥和初始向量(Initial Vector,.IV)作为输入,计算输出得到密钥流;然后将明文和密钥流进行异或计算,得到密文。密钥流由密钥和初始向量确定,与明文无关;明文对应的密文不仅与密钥相关,还与明文的位置相关。序列密码算法的执行速度快、计算资源占用少,常用于资源受限系统(例如嵌人式系统、移动终端),或者用于实时性要求高的场景(例如语音通信、视频通信的加/解密)。

2)分组密码算法每次处理一个分组长度(例如,128位)的明文,将明文和密钥作为输

⊙MSB(s)函数返回比特串s的最左侧高位m位。

···试读结束···

阅读剩余
THE END