2第2章数字加密与认证本章要点公钥和私钥密码体制数字签名数字证书身份认证32.1密码学基础密码学是一门既古老又新兴的学科,自古以来就在军事和外交舞台上担当着重要角色。长期以来,密码技术作为一种保密手段,本身也处于秘密状态,只被少数人或组织掌握。随着计算机网络和计算机通信技术的发展,计算机密码学得到了前所未有的重视并迅速普及和发展起来,成为计算机安全领域的主要研究方向。42.1.1加密的起源早在4000多年以前,在古埃及的尼罗河畔,一位擅长书写者在贵族的墓碑上撰写铭文时有意用加以变形的象形文字而不是普通的象形文字,这是史载的最早的密码形式。密码学的发展大致可分为以下几个阶段。第一阶段从古代到1949年,这一时期,密码学家往往凭直觉设计密码,缺少严格的推理证明。这一阶段设计的密码称为古典密码。第二阶段从1949—1975年,这一时期发生了两个比较大的事件。第三阶段从1976年至今。52.1.2密码学的基本概念图2-1给出密码通信的基本过程。密钥明文密钥明文密文加密算法解密算法62.1.2密码学的基本概念密码通信过程中涉及的基本概念如下。明文消息(plaintext):需要变换的原消息。简称明文。密文消息(ciphertext):明文经过变换成为的一种隐蔽形式。简称密文。加密(encipher、encode):完成明文到密文的变换过程。解密(decipher、decode):从密文恢复出明文的过程。加密算法(cipher):对明文进行加密时所采用的一组规则的集合。解密算法(cipher):对密文进行解密时所采用的一组规则的集合。密码算法强度:对给定密码算法的攻击难度。密钥(key):加解密过程中只有发送者和接收者知道的关键信息。72.1.2密码学的基本概念密码算法是指用于加密和解密的一对数学函数E(x)和D(x)。研究如何构造密码算法,使窃听者在合理的时间和代价下不能破译密文以获取原始明文消息的理论和方法称为密码编码学。定义2.1一个密码体制是满足以下条件的五元组(P,C,K,E,D),满足条件:(1)P是所有可能的明文组成的有限集(明文空间);(2)C是所有可能的密文组成的有限集(密文空间);(3)K是所有可能的密钥组成的有限集(密钥空间);(4)任意k∈K,有一个加密算法e∈E和相应的解密算法d∈D,使得e和d分别为加密和解密函数,满足d(e(x))=x,这里x∈P。82.1.2密码学的基本概念密码体制2.1移位密码令P=C=K={1,2,3,…,25,26}。对0≤k≤25,任意x,y∈{1,2,3,…,25,26},定义e(x)=(x+k)mod26以及d(y)=(y-k)mod26密码体制2.2希尔密码设m≥2为正整数,P=C={1,2,3,…,25,26}m,且K={定义在{1,2,3,…,25,26}上的m×m可逆矩阵}92.1.3对称密钥算法对称密钥算法又称为传统密钥算法,加密密钥能够从解密密钥中推算出来,反过来也成立。图2-2表示了对称密钥算法的基本原理。明文密文明文密文解密密钥:abchappy加密密钥:abchappy102.1.3对称密钥算法1998年7月1日,密码学研究会花了不到250000美元构造了一个称为DES解密高手的密钥搜索机,仅仅搜索了56小时就成功地找到了DES的密钥。2000年10月2日,美国国家标准局宣布选中了Rijndael作为高级加密标准(AES)取代DES,从此DES作为一项标准正式结束,但是在许多非机密级的应用中,DES仍在广泛使用。112.1.4公开密钥算法公开密钥算法于1976年由Diffie和Hellman提出。这一体制的最大特点是采用两个密钥将加密和解密能力分开:一个公开作为加密密钥;一个为用户专用,作为解密密钥,通信双方无须先交换密钥就可以进行通信。公钥密码的思想如图2-6所示。122.1.4公开密钥算法自1976年公钥密码体制被提出之后,MIT三位年青数学家R.L.Rivest、A.Shamir和L.Adleman发现了一种用数论构造双钥的方法,称作MIT体制,后来被广泛称为RSA体制。RSA密码体制,其安全性基于分解大整数的困难性;ElGamal密码体制,其安全性基于离散对数问题。密码体制2.3RSA密码体制设n=pq。其中p和q为素数。定义:K={(n,p,q,a,b):ab≡1(modΦ(n))}对于k=(n,p,q,a,b),定义:ek(x)=xbmodn和dk(y)=yamodn值n和b组成了公钥,且值p、q和a组成了私钥。132.1.5密钥管理密钥是加密算法中的可变部分。密码体制可以公开,但是密钥绝对不可以被破坏、丢失或泄漏,否则安全将不复存在。密钥管理是指对所用密钥生命周期的全过程(产生、存储、分配、使用、废除、归档、销毁)实施的安全保密管理。密钥管理方法因所使用的密码体制(对称密码体制和公钥密码体制)不同而不同。142.1.5密钥管理1.密钥的生成2.密钥的分配1)利用安全信道实现密钥拆分成几部分分别递送,如图2-7所示。2)通过可信赖密钥管理中心进行密钥分配3)利用物理现象实现k1k2k3k4k5k1k2k3k4k5k1k2k3k4k5发送方分解密钥信使挂号信特快专递电话信鸽接收方组合密钥152.1.6密码分析密码学包含两个分支——密码编码学和密码分析学。密码编码学(Cryptography)是对信息进行编码实现隐蔽信息的一门学问,密码分析学(Cryptanalysis)是研究分析破译密码的学问。1.攻击类型攻击类型攻击者拥有的资源唯密文攻击加密算法截获的部分密文已知明文攻击加密算法截获的部分密文和相应的明文选择明文攻击加密算法加密黑盒子,可加密任意明文得到相应的密文选择密文攻击加密算法解密黑盒子,可解密任意密文得到相应的明文162.1.6密码分析2.密码分析的方法1)穷举破译法2)分析法包括确定性分析法和统计分析法。许多密码分析方法都是利用英文字母的统计特性,如图2-8所示。172.1.6密码分析密码体制2.4仿射密码体制字母表中的字母被赋予一个数字,如a=0,b=1,…,z=25。密钥为0~25的数字对(a,b),则加密函数为:ek(x)=(ax+b)(mod26)解密函数为:dk(y)=a-1(y-b)(mod26)其中,gcd(a,26)=1。182.2数字签名与数字证书当我们进入电子世界中,我们在不能看到对方,或是听到对方,或是收到对方签名的情况下怎么辨别和信任对方呢?怎么保证我们的交易是秘密进行的呢?怎么知道我们指定的人得到的消息是未经篡改的呢?数字签名与数字证书给我们提供了一个真正安全的电子世界。192.2.1电子签名为了解决网络环境下交易当事人的身份确认问题,人们从技术上发展出了多种手段,如计算机口令、数字签名、生物技术(指纹、掌纹、视网膜纹、脑电波、声波、DNA等)签名等。上述这些手段,我们统称为电子签名。1.电子签名的概念2.电子签名立法3.电子签名模式4.电子签名的技术实现202.2.2认证机构(CA)CA(CertificationAuthority)是认证机构的国际通称,是PKI的主要组成部分,它是对数字证书的申请者发放、管理、取消数字证书的机构,是PKI应用中权威的、可信任的、公开的第三方机构。CA的结构如图2-9所示。根RootCA政策PCA运营OCA运营OCA运营OCA212.2.2认证机构(CA)CA认证系统是PKI的信任基础,因为它管理公钥的整个生命周期。CA的作用如下。(1)发放证书,用数字签名绑定用户或系统的识别号和公钥。(2)规定证书的有效期。(3)通过发布证书废除列表(CRL),确保必要时可以废除证书。222.2.3数字签名数字签名是电子签名的一种,即是指采用非对称密钥加密技术实现的电子签名。数字签名技术已经比较成熟,目前在国内外电子签名中广泛使用。1.什么是数字签名2.数字签名的特征(1)与所签文件的关系不同。(2)验证方法不同。(3)防复制能力的差别。232.2.3数字签名3.消息摘要——一个与数字签名密切相关的概念一个好的消息摘要算法具有下列几种性质。(1)消息中的任何一点微小变化,将导致摘要的大面积变化即雪崩效应。(2)试图从摘要中恢复消息是不可能的。(3)找到两条具有相同摘要值的消息在计算上是不可行的。目前比较流行的Hash算法有MD4、MD5、SHA-1算法等。4.数字签名方案一个数字签名方案包括两个部分:签名算法和验证算法。242.2.4公钥基础设施(PKI)PKI体系是计算机软硬件、权威机构及应用系统的结合。一个典型的PKI系统如图2-10所示,其中包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用。252.2.5数字证书数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。1.证书格式2.CRL格式3.证书的存放262.2.6数字时间戳技术数字时间戳服务(DTS)是网上安全服务项目,由专门的机构提供。时间戳(Time-stamp)是一个经加密后形成的凭证文档,它包括三个部分。(1)需加时间戳的文件的摘要(Digest)。(2)DTS收到文件的日期和时间。(3)DTS的数字签名。时间戳产生的过程为:用户首先将需要加时间戳的文件用HASH编码加密形成摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。272.3认证技术认证(Authentication)则是防止主动攻击的重要技术,它对开放的网络中的各种信息系统的安全性有重要作用。认证的目的有两个方面:一是验证信息的发送者是合法的,而不是冒充的;二是验证信息的完整性,以及数据在传输和存储过程中没有被篡改。认证技术一般可以分为以下两种。身份认证:鉴别用户的身份是否是合法用户。消息认证:用于保证信息的完整性和抗否认性。在很多情况下,用户要确认网上信息是不是假的,信息是否被第三方篡改或伪造,这就需要消息认证。282.3.1身份认证的重要性身份认证是指计算机及网络系统确认操作者身份的过程。如何保证以数字身份进行操作的访问者就是这个数字身份的合法拥有者,即如何保证操作者的物理身份与数字身份相对应,就成为一个重要的安全问题。身份认证技术的诞生就是为了解决这个问题。如果没有有效的身份认证手段,访问者的身份就很容易被伪造,使得未经授权的人仿冒有权限人的身份,这样,任何安全防范体系就都形同虚设,所有安全投入就都被无情地浪费了。292.3.2身份认证的方式1.用户名/密码方式2.IC卡认证3.动态口令4.智能卡技术5.生物特征认证6.USBKey认证302.3.3消息认证消息认证实际上是对消息本身产生一个冗余的信息——MAC(消息认证码),MAC全称为MessageAuthenticationCode(消息认证码),是用来保证数据完整性的一种工具。消息认证码的原理如图2-11所示。MCMCCompareC(K,M)SourceADestinationBKK312.3.3消息认证实现消息认证可以有多种途径1.校验码方案2.消息摘要方案3.安全性分析322.3.4认证技术的实际应用以北京飞天公司的ePass1000为例,说明使用USBKey进行身份认证的过程。USBKey身份认证过程Server=X?HMAC-MD5(R,Key)RUSBKeyHMAC-MD5(R,Key)RRX332.4应用实例2.4.1加密应用加密技术的应用方式很多,包括前面所介绍的数字签名、数字证书、身份认证,还包括文件加密、电子邮件加密、加密磁碟机、USBKey等。本节主要是以PGP软件为例,介绍通过一个加密软件PGP加密文件和加密电子邮件的方法。PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的密钥,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。PGP采用的传统加密技术部分所使用的密钥称为会话密钥。PGP核心功能是:文件加密、通信加密、数字签名以及