1、第1章 算机信息安全概述 1.1 威胁计算机信息安全的因素威胁计算机信息安全的因素 1.2 计算机信息安全研究的内容计算机信息安全研究的内容 1.3 OSI信息安全体系信息安全体系 1.4 计算机系统的安全策略计算机系统的安全策略 1.5 计算机系统的可靠性计算机系统的可靠性 1.1 威胁计算机信息安全的因素威胁计算机信息安全的因素 对计算机信息系统的威胁三个方面:1直接对计算机系统的硬件设备进行破坏;2对存放在系统存储介质上的信息进行非法获取、篡改和破坏等;3在信息传输过程中对信息非法获取、篡改和破坏等。影响计算机信息安全的因素:影响计算机信息安全的因素:1自然环境 2人为失误 3人为恶意破
2、坏 4软件设计等不完善。1.2 计算机信息安全研究的内容计算机信息安全研究的内容 计算机外部安全;计算机信息在存储介质上的安全;计算机信息在传输过程中的安全,即计算机网络安全。1.2.1 计算机外部安全计算机外部安全 计算机外部安全包括计算机设备的物理安全、与信息安全有关的规章制度的建立和法律法规的制定等。它是保证计算机设备的正常运行,确保系统信息安全的前提。1.安全规章制度 安全规章制度是计算机安全体系的基础。2.设备的物理安全 包括对计算机设备和工作环境的防护措施,如防火、防盗、防水、防尘、防地震等措施。3.防电磁波辐射 (1)计算机系统受到外界电磁场的干扰,使得计算机系统不能正常工作;(
3、2)计算机系统本身向外界所产生的包含有用信号的电磁波,造成信息泄漏,为攻击者提供了信息窃取的可能性。TEMPEST技术的主要目的是防止计算机系统中因电磁辐射而产生的信息泄密。TEMPEST包括抑源法、电磁屏蔽法和噪声干扰法。1.2.2 1.2.2 计算机内部安全计算机内部安全 计算机内部安全是计算机信息在存储介质上的安全,包括计算机软件保护、软件安全、数据安全等。研究的内容包括软件的防盗版,操作系统的安全性问题,磁盘上的数据防破坏、防窃取以及磁盘上的数据恢复与拯救技术等问题。计算机的信息安全还可以从信息的完整性、可用性、保密性等属性加以说明。1完整性技术是保护计算机系统内软件和数据不被偶然或人
4、为蓄意地破坏、篡改、伪造等。2可用性技术是在用户授权的条件下,信息必须是可用的。3保密性技术是防止信息失窃和泄露的技术,信息必须按照信息拥有者的要求保持一定的秘密性。1.2.3 1.2.3 计算机网络安全计算机网络安全 计算机网络安全是指信息在通过网络系统交换数据时确保信息的完整性、可靠性和保密性。从建立网络信息安全保障体系来看,可以从边界防卫、入侵检测和安全反应等环节进行。1边界防卫技术通常将安全边界设在需要保护的信息周边,重点阻止诸如病毒入侵、黑客攻击等试图“越界”的行为。2入侵检测技术是对网络系统运行状态进行监视,发现各种企图攻击行为和攻击结果,并及时作出反应的技术。3安全反应技术是将破
5、坏所造成的损失降低到最小限度的技术。1.3 OSI信息安全体系信息安全体系 ISO7498-2标准包括了五类安全服务以及提供这些服务所需要的八类安全机制。1.3.1 安全服务安全服务 1鉴别服务鉴别服务 鉴别服务可以鉴别参与通信的对等实体和数据源的合法性。2访问控制服务访问控制服务 访问控制服务能够防止未经授权而利用OSI可访问的资源。3数据保密性数据保密性 这种安全服务是防止数据未经授权而泄露或被截获。4数据完整性数据完整性 这种安全服务是用来防止在系统之间交换数据时,数据被修改、插入,或造成数据丢失。5禁止否认服务禁止否认服务 这种安全服务是防止通信双方否认发送或接收数据的行为。1.3.2
6、 安全机制 1加密机制加密机制 加密机制包括加密的保密性、加密算法、密钥管理等。2.数字签名机制数字签名机制 数字签名主要用来解决通信双方发生否认、伪造、篡改和冒充等问题。3访问控制机制访问控制机制 访问控制机制是按照事先制定的规则决定主体对客体的访问是否合法,防止未经授权的用户非法访问系统资源。4.鉴别交换机制鉴别交换机制 这种机制是以交换信息的方式来确认对方身份的机制。可用于鉴别交换的技术有口令、密码技术、实体的特征或占有物、时钟标志和同步时钟、双向和三向握手(分别用于单方和双方鉴别)、数字签名或公证机构等。5数据完整性机制数据完整性机制 (1)单个的数据单元或字段的完整性;(2)数据单元
7、串或字段串的完整性,即要求数据编号的连续性和时间标记的正确性等。6业务填充机制业务填充机制 通过造假通信实例,产生欺骗性数据单元,用来抵抗在通信线路监听数据并对其业务流量和流向进行分析。7路由控制机制路由控制机制 路由控制机制是使发送信息者可以选择特殊安全的线路发送信息。8公证机制公证机制 多个实体间进行通信时,数据的安全性都由公证机制来保证。1.4 计算机系统的安全策略计算机系统的安全策略 1.4.1 安全策略安全策略 计算机系统的安全策略是指在特定的环境下,为保证一定级别的安全要求所提出的一系列条例、规则和方法。安全策略可分为政策法规层、安全管理层、安全技术层三个层次。1政策法规层是为建立
8、安全规章制度和合理使用安全技术提供的法律保护,同时通过立法和政策导向来提高人的职业道德,对人进行伦理教育,净化社会环境。2安全管理层将涉及到具体单位和个人,为实施安全技术提供具体保护。包括组织管理机构、人事管理和计算机系统管理。3安全技术层可以通过物理方法和逻辑方法(或软件方法)来实现。(1)物理安全策略是保护计算机等硬件实体免受破坏和攻击;(2)逻辑方法是通过访问控制、加密、防火墙等方法以阻挡非法侵入。1.4.2 人、制度和技术之间的关系人、制度和技术之间的关系 规章制度是计算机安全体系的基础,是安全的最重要的因素。第二个重要因素就是人,任何保护措施没有人的参与都是毫无意义的。从这个意义上来
9、说,人是对计算机信息安全最大的威胁。安全技术的本身实际上只是用来帮助人们实现安全防护的手段,提高安全防护的能力。它确实没有比强化规章制度执行,提高人们的安全防范意识,提高人们的道德水准更重要。1.5 计算机系统的可靠性计算机系统的可靠性 计算机系统的可靠性是指在给定的时间内,在一定的条件下,计算机系统能完成应有功能的能力。从宏观上来说可靠性可以分为硬件可靠性、软件可靠性、人员可靠性、环境可靠性等方面。就硬件来说,使用时间越长,“磨损”越大,就越容易出故障。软件则相反,使用时间越长越可靠,软件没有“磨损”等问题。1.5.1 避错和容错避错和容错 提高计算机系统的可靠性可以采取避错和容错两项措施。
10、避错是由产品的生产商通过元器件的精选、严格的工艺和精心的设计来提高产品的硬件的质量,减少故障的发生。容错是指在计算机系统内部出现故障的情况下,利用冗余的资源,使计算机系统仍能正确地运行,提供可靠的服务。容错系统工作过程包括自动检测、自动切换和自动恢复部分。1.5.2 容错设计容错设计 容错主要依靠冗余资源设计来实现系统的可靠性。冗余设计技术分为:1.硬件冗余设计 通过增加硬件资源来获得容错能力的。2信息冗余设计 在数据中外加一部分信息位来检测或纠正信息在运算或传输中的错误而达到容错功能。3软件冗余设计 用多个不同软件,采用不同的算法,执行同一功能,及时发现程序设计错误,提高系统的可靠性。1.5
11、.3 故障恢复策略故障恢复策略 故障恢复策略有前向恢复和后向恢复两种。前向恢复是指在发生故障时,当前的任务继续进行,同时把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况,这种方法适合实时处理。后向恢复是指在发生故障时,系统恢复到前一个正确状态,再继续执行,这种方法不能用于实时处理。本章教学要求:本章教学要求:(1)了解计算机信息系统面临的威胁和产生的原因;(2)掌握计算机信息安全技术研究的内容;(3)了解OSI信息安全服务机制;(4)知道计算机系统的安全策略;(5)知道提高计算机系统可靠性的方法。第2章 密码与隐藏技术 2.1 密码技术概述密码技术概述 2.2 古典加密方法古典加密方法 2
12、.3 数据加密标准数据加密标准DES 2.4 高级加密标准高级加密标准AES 2.5 公开密钥体制公开密钥体制 2.6 RSA算法算法 2.7 NTRU公开密钥体制公开密钥体制 2.8 对称加密体制与公开密钥体制比较对称加密体制与公开密钥体制比较 2.9 信息隐藏技术信息隐藏技术 2.10 数字水印数字水印2.1 密码技术概述密码技术概述 密码技术是防止信息泄露的技术,是信息安全技术中最重要和最基本的安全技术。密码技术中常用的一些术语:1明文P(Plaintext):可以理解的信息原文。2加密E(Encryption):用某种方法伪装明文以隐藏它的内容的过程。3密文C(Ciphertext):
13、经过加密后将明文变换成不容易理解的信息。4解密D(Decryption):将密文恢复成明文的过程。5算法(algorithm):就是用于加密或解密的方法,在现代密码学中算法就是一个用于加密和解密的数学函数。6密钥K(key):是用来控制加密和解密算法的实现。典型的加密和解密过程可以用图2.1来描述。如果将加密过程看成是一个数学函数F的话,则密文C可以表示为:C=F(P,K)这个函数具有两个自变量P和K,在函数F的作用下得到密文。在已知密钥K1、K2、加密算法E和解密算法D时,则加密和解密过程可以表示如下:EK1(P)=C D K2(C)=P 显然为使明文加密后能被解密必须有:P=D K2(E
14、K1(P)=P 在实际加密和解密时,根据加密算法的特点,K1与K2的值可以不同,也可以相同。例:设明文是一串二进制序列,加密和解密算法都采用模2运算,即异或运算,加密密钥和解密密钥也相同。若明文 P=1 1 0 0 1 1 0 0加密和解密密钥 K=1 1 0 0 0 1 1 1则加密后的密文 C=P K=0 0 0 0 1 0 1 1解密后的密文 P=C K=1 1 0 0 1 1 0 0 现代密码学已发展成两个重要的研究分支:(1)对称加密方法,其典型代表是数据加密标准DES(数据加密标准)、IDEA(国际数据加密算法)、AES(高级加密标准)等算法。(2)公开密钥算法,其典型代表是RSA
15、、椭圆曲线加密、NTRU算法等。2.2 古典加密方法古典加密方法 2.2.1 代替密码代替密码 代替密码又称替换密码,就是按照一定要求,将明文中的每个字符替换成另一个字符,明文中字符的位置保持不变,但其本身改变了。如移位密码。2.2.2 换位密码换位密码 换位密码也可称为置换密码,它是改变明文中字母的位置,明文中的字母不变。也就是明文中的字母保持不变,但顺序被打乱了。例如可以将明文the变换成het。2.2 对称加密体制对称加密体制 对称加密算法,有时又叫传统密码算法,它的典型特点是:1采用的解密算法就是加密算法的逆运算,或者解密算法与加密算法完全相同;2加密密钥和解密密钥相同,或者加密密钥能
16、够从解密密钥中推算出来,反过来也成立。对称算法要求发送者和接收者在安全通信之前,商定一个密钥。它的安全性依赖于密钥的保密性。对称算法可分为两类:分组密码和序列密码或流密码。1分组密码是将明文分成固定长度的组或块(如64比特为一组),然后用同一密钥和算法对每一块进行加密,输出密文的长度也是固定的,如图2.3所示。2序列密码(stream cipher)的主要原理是通过伪随机序列发生器产生性能优良的随机序列,使用该序列与明文序列叠加来输出密文序列。解密时,再用同一个随机序列与密文序列进行叠加来恢复明文,如图2.4所示。2.3.1 DES算法描述算法描述 DES 是分组加密算法,它以64位(二进制)
17、为一组,对称数据加密,64位明文输入,64位密文输出。密钥长度为56位,但密钥通常表示为64位,并分为8组,每组第8位作为奇偶校验位,以确保密钥的正确性,这样对用户来说每组密钥仍是56位。利用密钥,通过传统的换位、替换和异或等变换,实现二进制明文的加密与解密。DES算法概要:1对输入的明文从右向左按顺序每64位分为一组(不足64位时,在高位补0),并按组进行加密或解密。2进行初始换位。3将换位后的明文分成左、右两个部分,每部分为32位长。4进行16轮相同的变换,包括密钥变换。5将变换后左右两部分合并在一起。6逆初始变换,输出64位密文。对应S盒的(3,5)元素为9,将9转换为二进制数1001。
18、所以,当S盒的输入为101011时,S盒的输出为1001。S盒代替是DES算法的核心部分,整个变换过程是非线性的(而DES算法的其他变换都是线性的),提供很好的混乱数据效果,比DES算法的其他步骤都提供了更好的安全性。9.P盒置换:将S盒输出的32位二进制数据按P盒置换表2.7进行置换。2.4 高级加密标准高级加密标准AES 2.4.2 AES算法概述算法概述 AES算法是一种可变数据块长Nb和可变密钥长Nk的迭代分组加密算法,其数据块长和密钥长度可分别为128、192和256比特。AES算法以字节(8比特)和字(32比特)为处理单位,将明文分成Nb个字,密钥分成Nk个字,每个字为四个字节。令
19、变换轮数 Nr maxNb,Nk+6,则算法共进行一个初始轮(初始化),Nr-1轮变换及最后一轮变换,即AES算法共进行Nr+1轮变。当AES的输入明文分组长度为128位时,经AES加密或解密处理后,得到的输出也是128位。在AES中,各种运算是以字节为基本单位进行处理的。在一个字节中,最右边的位是字节低位,最左边的位是字节高位。对明文数据块加密或解密时,要经过多次的数据变换操作,每一次变换操作都产生一个中间结果,我们将这个中间结果称为状态(state)。状态可以用二维字节数组表示,它有4行Nb列,其中数组中元素单位为字节,Nb的单位为字。可以用字节代替变换SubBytes()对各种可能字节的
20、变换结果排成一个表,如表2.10所示,该表称为AES的S盒。我们可以通过查表直接得到Subbytes()的输出。这样可以加快程序执行速度。如果状态中的一个字节为xy,则S盒中第x行第y列的字节就是SubBytes()的输出。例:设有状态中的一个字节为C4H,则SubBytes()的输出为S盒中第C行第4列的字节值为1CH。可以看出AES的S盒具有一定的代数结构,而DES中S盒是人为构造的。4扩展密钥 AES算法利用外部输入字数为Nk的密钥串K,通过扩展密钥程序得到共Nb*(Nr+l)字的扩展密钥串。对扩展密钥按每组为Nb个字分组,我们将每组的密钥称为圈密钥。这样就可以产生Nr+1个圈密钥,每个
21、圈密钥由Nb个字组成。每个字用wi表示,其中i=0,1,2,Nb*(Nr1)-1。扩展密钥算法见教材。扩展密钥程序涉及三个RotWord()、SubWord()和Rcon 模块。它们的工作方式如下:(l)位置变换RotWord():把一个四个字节的输入序列(a0,al,a2,a3)循环左移一个字节后输出。如将(a0,al,a2,a3)循环左移一个字节后输出为(al,a2,a3,a0)。(2)SubWord():把一个四字节的输入序列(a0,al,a2,a3)的每一个字节进行S盒变换,然后作为输出。(3)变换Rcon:Rcon 是一个10个字的常值数组,Rconi是一个32比特字符串(xi-1,
22、00,00,00)。这里x(02),xi-1是x (02)的(i-1)次幂的十六进制表示,即:x0(01),x(02),xi=02 xi-1 这里表示有限域GF(28)中的乘法。扩展密钥扩展前Nk个字就是外部密钥CipherKey,以后的字wi等于它前一个字wi-1与前第Nk个字wi-Nk的异或,即wiwi-1 wi-Nk。但是若i=Nk的倍数,则wiwi Nk Sub Word(RotWord(wi-1)Rconi/Nk。5圈密钥加法变换AddRoundKey()圈密钥加法变换AddRoundKey()是将一个圈密钥按位异或到一个状态上,如图2.10所示,圈密钥的长度为Nb个字。圈密钥按顺序
23、取自扩展密钥ExpandedKey,扩展密钥是由原始密钥经过扩展后得到的,扩展密钥的长度为Nb(Nr十1)个字。例:(S0j,S1j,S2j,S3j)=(S0j,S1j,S2j,S3j)(k0 j,k1 j,k2 j,k3 j),0 j 3。其中(k0j,k1j,k2j,k3j)表示扩展密钥中的第r*Nb+j个字,0 r Nr。圈密钥按列S00,S10,S20,S30,S03,S13,S23,S33顺序与状态上各元素进行异或运算。在AES加密过程中,r=0时,是第一轮变换之前的初始圈密钥加法变换;r=Nr时,是输出之前的最后一轮密钥加法变换。1逆行移位变换InvShiftRows()InvSh
24、iftRows()是ShiftRows()的逆变换,是对一个状态的每一行循环右移不同的位移量。第0行不移位,保持不变,第1行移动C1个字节,第2行移动C2个字节,第3行移动C3个字节。C1,C2,C3值依赖于分组长度Nb的大小,见2.11表所示。2.逆S盒变换InvSubBytes()InvSubBytes()是SubBytes()的逆变换,它将状态中的每一个字节非线性地变换为另一个字节。同样,可以将逆S盒变换对各种可能结果排成一个表,如表 2.12所示。表2.12称为AES的逆S盒变换表或逆字节代替表。如果状态中的一个字节为xy,则逆S盒中第x行,第y列的字节就是InvSubBytes()的
25、返回值。3逆列混合变换InvMixColumns()InvMixColumns()是MixColumns()的逆变换。InvMixColumns()对一个状态逐列进行变换,它将一个状态的每一列视为有限域GF(28)上的一个多项式,InvMixColumns()将状态的每一列所对应的GF(28)上的多项式模x4+1乘以多项式。4圈密钥的使用 AES解密时的扩展密钥程序与加密时的扩展密钥程序相同,但解密时圈密钥的使用顺序与加密过程相反。同时,除第一个和最后一个圈密钥外,其余圈密钥需要进行逆混合列变换。例:如果加密时圈密钥为:k0,k1,kNr,那么,解密时密钥为:kNr,InvMixColumns
26、(kNr-1),InvMixColumns(k2),k0。2.5 公开密钥体制公开密钥体制 公开密钥算法的典型特点是:1在公开密钥算法中,有一对密钥(pk,sk),其中pk(public-key)是公开的,即公开密钥,简称公钥。另一个密钥sk(private key)是保密的,这个保密密钥称为私人密钥,简称私钥。2在公开密钥算法中,进行加密和解密时,使用不同的加密密钥和解密密钥。而且不能从加密密钥或解密密钥相互推导出来,或者很难推导出来。3在公开密钥算法中,公开密钥和私人密钥必须配对使用。也就是说如果使用公开密钥加密时,就必须使用相应的私人密钥解密;如果使用私人密钥加密时,也必须使用相应的公开
27、密钥解密。4一般来说,公开密钥算法都是建立在严格的数学基础上,公开密钥和私人密钥的产生也是通过数学方法来产生的。公开密钥算法的安全性是依赖于某个数学问题很难解决的基础上。2.6 RSA算法算法 2.6.1 RSA算法数学基础算法数学基础 定义1:对一个自然数P,如果P只能被1和自身除尽时,则称P为素数(或质数),否则为合数。定义2:如果整数a与整数b的最大公约数是1,则称a与b是互为质数。例如:2和3,7和11等都是互为质数。定义3:欧拉函数定义为:=r(11/P)(11/P)(11/P)P、PP是r的质因子,即公约数。欧拉函数是用来计算1、2、3、r 中有多个数与r互为质数的。例如:当r=2
28、0时,由于r=2 2 5,即20的公约数是2和5 所以:=20(1-1/2)(1-1/5)=8 即在120个整数中有8个与20互质的数,它们是1,3,7,9,11,13,17,19。定义4:两个整数a、b分别被m除,如果所得余数相同,则称a与b对模m是同余的,记作:a b(mod m)2.6.2 RSA算法基础算法基础 1产生素数 产生素数的方法很多,这里介绍的方法是:(1)凡素数n必不能被2 (实际上一个数的最大公约数小于或等于)之间的所有素数整除。(2)除2以外所有素数为奇数,由素数的定义决定算法。判断1N个数中的n是否为素数时具体算法是:(1)令n从3开始(3是素数);(2)每次增加2,
29、n=n+2(排除了偶数);(3)n被所有小于等于 的素数整除 (4)若不存在被整除的数,则n为素数 2求最大公约数算法 设b、c为整数,b 0,c 0,b c(使用这个条件不影响算法,但可避免符号问题),b、c的最大公约数记为gcd(b、c)。我们可以利用欧几里德算法,即重复使用带余数除法求最大公约数。欧几里德算法:每次的余数为除数,除上一次的除数,直到余数为0时为止,则上次余数为最大公约数。可以先设b为上次的除数,c为余数,按欧几里德算法求出gcd(b、c)3求乘逆算法 设 已知a,求b,称求a对于模r的乘逆b,并称a与b对r 互为乘逆。也可以写成:b=a-1 mod r 求乘逆时也可以利用
30、欧几里德算法,即重复使用带余数除法。但与求最大公约数不同,即每次的余数为除数,除上次除数,直到余数为1时为止。2.6.4 RSA算法安全性算法安全性 RSA算法的安全性取决于p、q的保密性,以及分解大数的难度,即:已知r=pq,分解出p、q的困难性,所以在计算出r后要立即彻底删除p、q值。为了提高分解大数难度,在选p、q时,还要注意如下几点:1要使p、q是强素数;2p与q的值必须相差很大,有人建议至少要在10倍左右;3p-1与q-1的最大公因子应很小。2.8 对称加密体制与公开密钥体制比较对称加密体制与公开密钥体制比较 1对称算法 (1)在对称算法体制中,如果有N个成员,就需要N(N-1)/2
31、个密钥,这巨大的密钥量给密钥的分配和安全管理带来了困难。(2)在对称算法体制中,知道了加密过程可以很容易推导出解密过程,知道了加密密钥就等于知道了解密密钥,可以用简单的方法随机产生密钥。(3)多数对称算法不是建立在严格意义的数学问题上,而是基于多种“规则”和可“选择”假设上。(4)用对称算法传送信息时,通信双方在开始通信之前必须约定使用同一密钥,这就带来密钥在传递过程中的安全问题,所以必须建立受保护的通道来传递密钥。(5)对称算法不能提供法律证据,不具备数字签名功能。(6)对称算法加密速度快,这也是对称算法唯一的重要优点,通常用对称算法加密大量的明文。2公开密钥算法 (1)在公开密钥体制中,每
32、个成员都有一对密钥(pk、sk)。如果有N个成员,只需要2N个密钥,需要的密钥少,密钥的分配和安全管理相对要容易一些。(2)知道加密过程不能推导出解密过程,不能从 pk推导出sk,或从sk推导出pk。或者说如果能推导出来也是很难的,要花很长的时间和代价。(3)容易用数学语言描述,算法的安全性建立在已知数学问题求解困难的假设上。(4)需要一个有效的计算方法求解一对密钥 pk、sk,以确保不能从pk、sk中相互推导。(5)用公开密钥算法传送信息时,无需在通信双方传递密钥。也就不需要建立受保护的信息通道。这是公开密钥算法最大的优势,使得数字签名和数字认证成为可能。公开密钥算法有着更广阔的应用范围。(
33、6)就目前来看,公开密钥算法加密的速度要比对称算法慢的多。一般只用公开密钥算法加密安全要求高,信息量不大的场合。2.9 信息隐藏技术信息隐藏技术 信息隐藏主要研究如何将某一机密信息隐藏于另一公开的信息中,然后通过公开信息的传输来传递机密信息。对信息隐藏而言,攻击者难以从众多的公开信息中判断是否存在机密信息,增加截获机密信息的难度,从而保证机密信息的安全。信息隐藏基本思想起源于古代的伪装术(密写术)。如牛奶、明矾、果汁等都曾充当过密写药水的角色。信息隐藏的通用模型如图2.11所示。我们称被隐藏的信息为秘密信息,如版权信息、秘密数据、软件序列号等。而用于隐藏秘密信息的公开信息称为隐藏载体,如视频、
34、图片、音频,文本文件等。信息的隐藏过程一般由密钥控制,通过嵌入算法将秘密信息隐藏于公开信息中。再将隐藏有秘密信息的公开信息通过网络等信道传递到对方,对方通过检测器利用密钥从隐藏载体中恢复出秘密信息。信息隐藏技术主要由下述两部分组成:1信息嵌入算法,它利用密钥来实现秘密信息的隐藏;2隐藏信息检测与提取算法,它利用密钥从隐藏载体中检测和提取出秘密信息。2.10 数字水印数字水印 数字水印技术就是将指定的数字、序列号、文字、图像标志等版权信息嵌入到数据产品中,以起到版权保护、秘密通信、数据文件的真伪鉴别和产品标识等作用。2.10.1 数字水印的通用模型数字水印的通用模型 数字水印技术包括嵌入、检测和
35、提取3个过程。嵌入模型的功能是要将水印信号加入到原始数据中,如图2.12所示。嵌入阶段的设计主要解决两个问题:一是数字水印的生成,可以是一串伪随机数,也可以是指定的字符串、图标等。并经过加密后产生的信息;二是嵌入算法,嵌入方案的目标是使数字水印在不可见性和鲁棒性之间找到一个较好的折中。水印信号检测模型是用来判断某一数据中是否含有指定的水印信号,如图2.13所示。检测阶段主要是设计一个对应于嵌入过程的检测算法。检测的结果用来判断是否存在原水印,检测方案的目标是使错判与漏判的概率尽量小,为了给攻击者增加去除水印的难度,目前大多数水印制作方案都在加入、提取时采用了密钥,只有掌握密钥的人才能读出水印。
36、提取数字水印设备只需要有打印机、扫描仪、计算机等设备。2.10.2 数字水印主要特性数字水印主要特性 1鲁棒性。是指水印信息能够抵抗应用过程中的各种破坏程度。比如对信息的传输、压缩、滤波、几何变换等处理后,数字水印不会被破坏,仍能从数字信息中提取出水印信息。2水印容量。是指在数字信息中加入的水印数量。水印容量和鲁棒性之间是相互矛盾的,水印容量的增加会带来鲁棒性的下降,对不可见性也有影响,鲁棒性不好就会导致检测结果的不可靠。3安全性。是指加入水印和检测水印的方法对没有授权的第三方应是绝对保密的,而且不可轻易破解。数字水印系统一般使用一个或多个密钥来确保水印安全。4自恢复性。是指数字水印在原始数据
37、经过较大的破坏或变换后,仍能从原数据中恢复出隐藏的水印。5不可见性。不对可感知的数字水印来说,是指数字信息加入水印后不会改变其感知效果,即看不到数字水印的存在。2.10.3 数字水印分类数字水印分类 1按照水印的可见性分类,数字水印可以分为可感知的和不易感知的两种。2按照水印的载体分类,数字水印可分为图像水印、视频水印、音频水印、文本水印和印刷水印等。3按照检测方法分类,数字水印可分为明水印和盲水印。4按照内容可分为内容水印和标志水印。5按照用途来分类时,数字水印可分为版权保护水印、票据防伪水印、身份认证水印等。2.10.4 典型数字水印算法典型数字水印算法 1空域算法 该算法首先把一个密钥输
38、入到一个m-序列发生器来产生水印信号,在将此m-序列重新排列成2维水印信号,按像素点逐一插入到原始声音、图像或视频等信号中作为水印,即将数字水印通过某种算法直接叠加到图像等信号的空间域中。由于水印信号被安排在了最低位上,所以不会被人的视觉或听觉所察觉。典型空域方法有最低有效位方法LSB(Least Significant Bits)、Patchwork法和文档结构微调方法。(1)LSB方法是将水印直接嵌入到原始信号表示数据的最不重要的位置(最低有效位)中,这可保证嵌入的水印是不可见的。该算法的鲁棒性差,水印信息很容易被滤波、图像量化、几何变形的操作破坏。(2)Patchwork方法是一种基于统
39、计的数据水印嵌入方案,其过程是用密钥和伪随机数发生器来选择N对像素点(ai,bi),然后将每个ai点的亮度值加,每个bi点的亮度值减,这样使得整个图像的平均亮度保持不变,而这里的值就是在图像中嵌入的水印信息。(3)文档结构微调方法是在通用文档中隐藏特定二进制信息的技术。如轻微改变文档的字符或图像行距,水平间距,或改变文字特性等来完成水印嵌入。空域数字水印技术的优点是算法简单、速度快、容易实现,几乎可以无损的恢复载体图像和水印信息。其缺点是太脆弱,常用的信号处理过程,如信号的缩放、剪切等,都可以破坏水印。2变换域算法 该类算法的基本思想是先对图像或声音信号等信息进行某种变换(如正交变换),在变换
40、域上内嵌入水印,然后经过反变换而成为含水印的输出。在检测水印时,也要首先对信号作相应的数学变换,然后通过相关运算检测水印。3压缩域算法 水印检测与提取直接在压缩域数据中进行。2.10.5 数字水印应用数字水印应用 数字水印技术并不能用来直接阻止非法拷贝行为,而是通过验证产品的所有权来揭露非法拷贝、传播行为,用法律的手段对其进行制裁,间接地打击盗版者、非法复制等企图,起到保护知识产权的作用。2.10.6 数字水印攻击数字水印攻击 目前已出现的攻击数字水印方法大约可分为5类。1简单攻击。也可称为波形攻击或噪声攻击,就是通过对水印图像进行某种操作,削弱或删除嵌入的水印。2同步攻击。试图使水印的相关检
41、测失效,或使恢复嵌入的水印成为不可能。这类攻击的一个特点是水印实际上还存在于图像中,但水印检测函数已不能提取水印或不能检测到水印的存在。3迷惑攻击。就是试图通过伪造原始图像和原始水印来迷惑版权保护。4删除攻击。就是针对某些水印方法通过分析水印数据,穷举水印密钥,估计图像中的水印,然后将水印从图像中分离出来,并使水印检测失效。5协议攻击。协议攻击的基本思想是盗版者在已加入水印版权的图像中加入自己的水印,并声称该图像的所有权是属于他的。本章教学要求:(1)掌握密码技术基本概念;(2)知道古典加密方法;(3)掌握对称加密体制基本原理;(4)掌握DES算法过程;(5)知道AES算法数学基础;(6)知道
42、AES算法加密与解密过程;(7)掌握公开密钥体制基本原理;(8)掌握RAS算法数学基础;(9)掌握RAS算法实现的过程;(10)了解NTRU算法;(11)掌握信息隐藏技术原理;(12)知道数字水印原理通用模型;(13)知道数字水印主要特性;(14)了解数字水印分类、应用等。(15)知道数字水印典型算法和数字水印的攻击。第3章 数字签名与认证 3.1 数字签名概述数字签名概述 3.2 单向散列函数单向散列函数 3.3 Kerberos 身份验证身份验证 3.4 公开密钥基础设施公开密钥基础设施PKI 3.5 用户用户ID与口令机制与口令机制 3.6 生物特征识别技术生物特征识别技术 3.7 智能
43、卡智能卡 3.1 数字签名概述数字签名概述 在网络通信和电子商务中很容易发生如下问题。1否认,发送信息的一方不承认自己发送过某一信息。2伪造,接收方伪造一份文件,并声称它来自某发送方的。3冒充,网络上的某个用户冒充另一个用户接收或发送信息。4篡改,信息在网络传输过程中已被篡改,或接收方对收到的信息进行篡改。用数字签名(Digital Signature)可以有效地解决这些问题。数字签名就是主要用于对数字信息进行的签名,以防止信息被伪造或篡改等。3.1.1 数字签名原理数字签名原理 公开密钥体制可以用来设计数字签名方案。设用户Alice发送一个签了名的明文M给用户Bob的数字签名一般过程如下:1
44、Alice用信息摘要函数hash从M抽取信息摘要M;2Alice用自己的私人密钥对M加密,得到签名文本S,即Alice在M上签了名;3Alice用Bob的公开密钥对S加密得到S;4Alice将S和M发送给Bob;5Bob收到S和M后,用自己的私人密钥对S解密,还原出S;6Bob用Alice的公开密钥对S解密,还原出信息摘要M;7Bob用相同信息摘要函数从M抽取信息摘要M”;8Bob比较M与M”,当M与M”相同时,可以断定Alice在M上签名。由于Bob使用Alice的公开密钥才能解密M,可以肯定Alice使用了自己的私人密钥对M进行了加密,所以Bob确信收到的M是Alice发送的,并且M是发送
45、给Bob的。有关hash函数的作用将在下一节介绍。3.1.3 PGP电子邮件加密电子邮件加密 PGP混合使用RSA、IDEA、MD5、PKZIP、和PEM等算法。PGP能够提供数据加密、数字签名和密钥管理等服务。用户Alice使用PGP方法向用户Bob发送电子信息M过程大概如下:1Alice用hash函数(如MD5算法)从明文M中抽取信息文摘D;2Alice用RSA算法和自己的私人密钥对信息文摘D进行加密得到签名C;3Alice对信息M进行压缩得到ZM;4Alice用IDEA算法和随机密钥K对ZM进行加密得到密文M;5Alice使用Bob的公开密钥对K进行加密,得到K;6Alice将K、M、C
46、发送给Bob;7Bob用自己的私人密钥解密K 还原出K;8Bob使用K对加密信息M进行解密,还原出ZM;9Bob对ZM解压缩得到M 10Bob用Alice的公开密钥对C进行解密得到D;11Bob用相同的hash函数从明文M中抽取信息文摘D;12Bob比较D和D,如D与D相同,就可以判定是Alice的签名,并且M在传输过程中没有被篡改。3.2单向散列函数单向散列函数 单向散列函数,也称hash函数,它可以提供判断电子信息完整性的依据,是防止信息被篡改的一种有效方法。单向散列函数在数据加密、数据签名和软件保护等领域中有着广泛的应用。3.2.1 单向散列函数特点 hash函数的作用是当向hash函数
47、输入一任意长度的的信息M时,hash函数将输出一固定长度为m的散列值h。即:h =h(M)安全的hash函数的特点是:1hash函数能从任意长度的M中产生固定长度的散列值h。2已知M时,利用h(M)很容易计算出h。3 已 知 M 时,要 想 通 过 控 制 同 一 个 h(M),计算出不同的h是很困难的。4已知h时,要想从h(M)中计算出M是很困难的。5已知M时,要找出另一信息M,使h(M)=h(M)是很困难的。最常用的hash算法有MD5、SHA算法等。下面介绍一个利用hash函数实现报文鉴别(证实)实例。如果Alice发送了信息给Bob,Bob收到信息后需要证实:1Bob收到的明文是否肯定
48、由Alice发送的。2Bob收到的明文是否被篡改。鉴别过程:1Alice用单向散列函数h 从明文M中抽取信息文摘X,并利用RSA算法和Alice的私人密钥sk对X加密,得到密文E(X)。这个过程相当于数字签名。2Alice将M、E(X)发送给Bob 3Bob收到M、E(X)后,用Alice的公开密钥pk对E(X)解密,即:D(E(X)X,还原出X 4Bob用相同的单向散列函数h从收到的明文M中抽取信息文摘X1 5Bob比较X1和X,如果X1=X时,则证实:M是Alice发送的,并且明文在传输过程中没有被篡改;否则,证实:M不是Alice发送的,或者明文在传输过程中已经被篡改。3.2.2 MD5
49、算法算法 在对输入的明文初始化之后,MD5是按每组512位为一组来处理输入的信息,每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,把这四个32位分组串联(级联)后将生成一个128位散列值。MD5的算法步骤如下:1数据填充与分组 (1)将输入信息M按顺序每512位长度为一组进行分组,即:M=M1,M2,Mn-1,Mn (2)将信息M的Mn长度填充为448位。当Mn长度L(bit为单位)448时,在信息Mn后加一个“1”,然后再填充512-L+447个“0”,使最后的信息Mn长度为512位,Mn+1长度为448位 2初始化散列值 在MD5算法中要用到4个
50、变量,分别为A、B、C、D,均为32位长。初始化值为:A=0 x01234567 B=0 x89abcdef C=0 xfedcba98 D=0 x76543210 在MD5算法过程中,这四个32位变量被称为链接变量(chaining variable),它们始终参与运算并形成最终的散列值。3计算散列值 (1)将填充后的信息按每512位分为一块(Block),每块按32位为一组划分成16个分组,即 Mi=Mi0,Mi2,Mi15,i=1 n。(2)分别对每一块信息进行4轮计算(即主循环),每轮计算基本相同。每一轮定义一个非线性函数,它们分别是:F(X,Y,Z)=(X&Y)|(X)&Z)G(X,