以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 安全理论 』  (http://bbs.xml.org.cn/list.asp?boardid=65)
----  密码技术 (连载)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=65&rootid=&id=69204)


--  作者:卷积内核
--  发布时间:11/6/2008 3:55:00 PM

--  密码技术 (连载)
2.1 对称密码
对称密码技术也叫做单钥或常规密码技术,其包括分组密码技术和流密码技术这两个重要的分支。在公钥密码技术出现之前,它是惟一的加密类型。

2.1.1 基本原理

前不久,美国计算机安全专家又提出了一种新的安全框架,除机密性、完整性、可用性、真实性之外,又增加了实用性和占有性,认为这样才能解释各种网络安全问题。实用性是指信息加密密钥不可丢失(不是泄密),丢失了密钥的信息也就丢失了信息的实用性,成为垃圾。占有性是指存储信息的节点、磁盘等信息载体不被盗用,即对信息的占用权不能丧失。保护信息占有性的方法有使用版权、专利、商业秘密性,提供物理和逻辑的存取限制方法;维护和检查有关盗窃文件的审计记录、使用标签等。

点击开新窗口欣赏该FLASH动画![全屏欣赏]

对于分析者来说,可以得到加密、解密算法和从不安全的信道上得到密文C,而不能得到的是通过安全信道传输的密钥K。这样,对称密码必须满足如下要求:

● 算法要足够强大。就是说,从截获的密文或某些已知明文密文对时,计算出密钥或明文是不可行的。

● 不依赖于算法的保密,而依赖于密钥。这就是著名的Kerckhoff原则。

● 密钥空间要足够大,且加密和解密算法适用于密钥空间所有的元素。

这也是非对称密码技术必须满足的条件。除此之外,在实际运用中,发送方和接收方必须保证用安全的方法获得密钥的副本。


--  作者:卷积内核
--  发布时间:11/6/2008 4:00:00 PM

--  
2.1.2 分组密码
分组密码(BlockCipher)是一个明文分组被作为一个整体来产生一个等长的密文分组密码,通常使用的是64bit的分组大小。当前使用的许多分组加密算法几乎都基于Feistel分组密码结构。

2.1.2.1 基本原理


扩散(Diffusion)和扰乱(Confusion)是由香农引进描述任意密码系统的两个基本组成模块时提出的两个术语。这两种方法是为了挫败基于统计分析的密码破译。

扩散,就是把明文的统计结构扩散消失到密文的长程统计特性中。做到这一点的方法是让明文的每个数字影响许多密文数字的取值,也就是说,每个密文数字被许多明文数字影响。其结果是在密文中各种字母的出现频率比在明文中更接近平均;双字母组合的出现频率也更接近平均。所有分组密码都包含从明文分组到密文分组的变换,具体如何变换则依赖于密钥。扩散机制使得明文和密文之间的统计关系尽量复杂,以便挫败推测密钥的尝试。

扰乱试图使得密文的统计特性与加密密钥取值之间的关系尽量复杂,同样是为了挫败发现密钥的尝试。这样一来,即使攻击者掌握了密文的某些统计特性,由于密钥产生密文的方式非常复杂,攻击者也难于从中推测出密钥。要实现这个目的,可以使用一个复杂的替代算法,而一个简单的线性函数就起不到多少作用。

2.1.2.2 常见的分组加密算法

本节介绍经典的 “数据加密标准”(DataEncryptionStandard,DES)和抛弃了Feistel网络结构的 “高级加密算法”(AES),同时也简要介绍了其他常见的分组加密算法。

1.数据加密标准DES

1973年5月15日,美国国家标准局NBS(NationalBureauOfStandard,现在的美国国家标准与技术局——NIST)在联邦记录(Federal Register)上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。IBM提交了一个候选算法,它是由IBM内部开发的,名为LUCIFER。在美国国家安全局NSA (NationalSecurityAgency)的协助下完成了算法评估之后,1977年7月15日,NBS采纳了LUCIFER算法的修正版作为数据加密标准DES。1994年,NIST把联邦政府使用DES的有效期延长了5年,还建议把DES用于政府或军事机密信息防护以外的其他应用。

DES是一种对二元数据进行加密的算法,将明文消息分成64bit(8B)一组进行加密。密文分组的长度也是64bit,没有数据扩展。DES使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是8B(或64bit)。但是,由于某些原因,DES算法中每逢第8bit就被忽略,这造成密钥的实际大小变成56bit。DES的整个体制是公开的,系统的安全性完全依赖密钥的保密。DES算法主要包括:初始置换p,16轮迭代的乘积变换,逆初始置换ip-1以及16个密钥产生器。


--  作者:卷积内核
--  发布时间:11/6/2008 4:01:00 PM

--  
如下动画所示,在DES加密算法的一般描述的左边部分,可以看到明文的处理经过了3个阶段:第一个阶段,64bit的明文经过一个初始置换Ⅲ后,比特重排产生经过置换的输出。第二个阶段,由同一个函数的16次循环构成,这个函数本身既有置换又有替代功能。最后一个循环(第16个)的输出由64bit组成,其输出的左边和右边两个部分经过交换后就得到预输出。最后,在第三阶段,预输出通过逆初始置换ip-l生成64bit的密文。除了初始置换和逆初始置换之外,DES具有严格的Feistel密码结构。


点击开新窗口欣赏该FLASH动画![全屏欣赏]

动画的右半部分给出了56bit密钥的使用方式。密钥首先通过一个置换函数,接着于16个循环的每一个,都通过一个循环左移操作和一个置换操作的组合产生一个子密钥KI。对于每一个循环来说,置换函数是相同的,但由于密钥比特的重复移动,产生的子密钥并不相同。

DES的解密和加密使用相同的算法,只是将子密钥的使用次序反过来。

DES具有雪崩效应:明文或密钥的lbit的改变引起密文许多Bit的改变。如果密文的变化太小,就可能找到一种方法减小要搜索的明文和密钥空间。当密钥不变,明文产生lbit变化,在3次循环后,两个分组有21bit不同,而整个加密过程结束后,两个密文有34个位置不同。作为对比,明文不变,密钥发生lbit变化时,密文中有大约一半的Bit不同。因此,DES具有一种很强的雪崩效应,这是一个非常好的特性。

DES的强度依赖于算法自身和其使用的56bit密钥。一种攻击利用DES算法的特点使分析密码成为可能。多年来,DES已经经历了无数次寻找和利用算法弱点的尝试,成了当今研究得最多的加密算法。即使这样,仍然没有人公开宣称成功地发现了DES的致命弱点。


--  作者:卷积内核
--  发布时间:11/6/2008 4:03:00 PM

--  
然而,密钥长度是更严峻的问题。DES的密钥空间为256,如假设仅一半的密钥空间需要搜索,则一台1us完成一次DES加密的机器需要1000年才能破译DES密钥。事实却没有这么乐观,早在1977年,Diffie和Hellman就设想有一种技术可以制造出具有100万个加密设备的并行机,其中的每一个设备都可以在1lls之内完成一次加密。这样平均搜索时间就减少到lOh。在1977年,这两位作者估计这种机器在当时约价值2000万美元。到1998年7月,EFF(Electronic FrontierFoundation)宣布攻破了DES算法,他们使用的是不到25万美元的特殊“DES破译机”,这种攻击只需要不到3天的时间。

在已知密文/明文对时,密钥搜索攻击就是简单地搜索所有可能的密钥;如果没有已知的密文/明文对时,攻击者必须自己识别明文。这是一个有相当难度的工作。如果报文是以普通英语写成的,可以使用程序自动完成英语的识别。如果明文报文在加密之前做过压缩,那么识别工作就更加困难。如果报文是某种更一般的类型,如二进制文件,那么问题就更加难以自动化。因此,穷举搜索还需要一些辅助信息,这包括对预期明文的某种程度的了解和自动区分明文与乱码的某种手段。

2.三重DES
    三重DES(Triple-DES)是人们在发现DES密钥过短,易于受到蛮力攻击而提出的一种替代加密算法。三重DES最初由Tuchman提出,在1985年的ASNI标准X9.17中第一次针对金融应用进行了标准化。在1999年,三重DES合并入数据加密标准中。


    三重DES使用3个密钥,执行3次DES算法,如下动画所示。加密过程为加密一解密一加密(EDE),可表述为如下的公式:


C = EK3(DK2(EK1(M)))


解密时按密钥相反次序进行同样的操作,表述为:


M = DK1(EK2(DK3(C)))


    其中,C表示密文,M表示明文,EK(X)表示使用密钥K对X进行加密,DK(X)表示使用密钥K对X进行解密。
    为了避免三重DES使用3个密钥进行三阶段加密带来的密钥过长的缺点(56X3=168bit),Tuchman提出使用两个密钥的三重加密方法,这个方法只要求112bit密钥,即令其K1=K3:C = EK1(DK2(EK1(M)))
    三重DES的第二阶段的解密并没有密码编码学上的意义。它的惟一优点是可以使用三重DES解密原来的单次DES加密的数据,即:K1=K2=K3。


C=EK1(DKl(EKl(M)))=EKl(M)

点击开新窗口欣赏该FLASH动画![全屏欣赏]


--  作者:卷积内核
--  发布时间:11/6/2008 4:04:00 PM

--  
3.国际数据加密算法IDEA

国际数据加密算法IDEA(InternationalDataEncryptionAlgorithm)是由瑞士联邦理工学院的Xuejia Lai和James Massey开发出来的一个对称分组密码。IDEA使用的是128bit密钥。IDEA与DES的明显区别在于循环函数和子密钥生成函数的不同。对循环函数来说,IDEA不使用S盒子,而且IDEA依赖于3种不同的数学运算:XOR、16位整数的二进制加法、16位整数的二进制乘法。这些函数结合起来可以产生复杂的转换,这些转换很难分析,因此也很难进行密码分析。子密钥生成算法完全依赖于循环移位的使用,但使用方式复杂,对IDEA的8个循环中的每一个都会生成6个子密钥。

IDEA是DES最早的128bit替换中的一个,已经经历了大量的详细的审查,其安全性主要体现在:

穷举搜索破译,要求进行2128约为1038次尝试,对每秒完成100万次加密的机器,需 要1013年;能抗差分分析和相关分析攻击;没有DES意义下的弱密钥。

有关对IDEA的分析有:Daeman识别了IDEA的几类弱密钥;Meier分析IDEA后认 为没有捷径破译8轮IDEA;Harpes等的分析也表明IDEA在线性和差分攻击下是安全的。

4.高级加密标准AES

1997年4月15日美国国家标准技术研究所(NIST)发起征集AES(Advanced Encrypfion Standard)算法的活动,并专门成立了AES工作组,目的是为了确定一个非保密的、公开披露的、全球免费使用的分组密码算法,用于保护21世纪政府的敏感信息,也希望能够成为秘密和公开部门的数据加密标准(DES)。1997年9月12日在联邦登记处公布了征集AES候选算法的通告。AES的基本要求是,比三重DES快而且至少和三重DES一样安全。AES分组长度为128bit,密钥长度为128/192/256bit。1998年8月20日NIST召开了第一次AES候选会议,并公布了15个AES候选算法。经过一年的考察,MARS,RC6,Riindael,Serpent,Twofish共5种算法通过了第二轮的选拔。2000年10月,NIST选择由两位比利时科学家JoanDaemen和VincentRiimen提出的Riindael作为AES的算法。

Riindael算法是一种分组长度和密钥长度均可变的分组密码算法。其分组长度和密钥长度都分别可为128,192或256bit。

数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行、片6列,其中Nb等于数据块长除以32,即Nb的可能取值为4,6或8, Nb=6的状态分配如表2.1所示。

表2.1 Nb=6的状态分配表

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
    a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
    a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
    a3,0 a3,1 a3,2 a3,3 a3,4 a3,5


--  作者:卷积内核
--  发布时间:11/6/2008 4:05:00 PM

--  
数据块按…的顺序映射为状态中的字节,a0,0,a1,0,a2,0,a3,0,a0,1,a1,1,a2,1,a3,1,a0,2……即以列方式映射。在加密操作结束时,密文按同样的顺序从状态中抽取。

密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除以32。即Nk的可能取值为4,6或8。

D算法变换的圈数Nr由付D和Nl共同决定,具体值如表2.2所示:

表2.1 Nb=6的状态分配表

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
    a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
    a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
    a3,0 a3,1 a3,2 a3,3 a3,4 a3,5

图2.4是AES加密算法流程图。AES加密算法包括以下几步:

● 对圈密钥的初始化
    ● Nr-1圈变换
    ● 最后一圈变换


按此在新窗口浏览图片


--  作者:卷积内核
--  发布时间:11/6/2008 4:09:00 PM

--  
算法描述为:
    Rijndael(State,CipherKey){
    KeyExpansion(CipherKey,ExpandKey);
    AddRoundKey(State,ExpandedKey);
    for(i=1; i <N; i ++) Round(State,ExpandedKey + Nb*i);
    FinalRound(State,ExpandedKey + Nb * Nr); }

密钥扩展KeyExpansion:利用外部输入密钥K(密钥串的字数为Nk),通过密钥扩展程序得到共4×(Nr+1)字的扩展密钥w[4×(Nr+1)]。

圈密钥加法AddRoundKey:圈密钥被简单地使用异或操作按位应用到状态中。圈密钥通过密钥编制得到,圈密钥长等于分组长度。

密钥编制:圈密钥通过密钥编制得到,密钥编制有两部分:密钥选择和圈密钥选择。

2.1.2.3 分组加密算法对比

表2.4列出了上一节中提到的4种算法的对比情况。

表2.4 性能对比

算法         密钥长度                 分组长度                        循环次数
DES          56                                64                                 6
三重DES    112、168                      64                                48
IDEA         128 64 8
AES         128、192、256              128                            10、12、14


--  作者:卷积内核
--  发布时间:11/6/2008 4:10:00 PM

--  
2.1.3 流密码

流密码是密码体制中一个重要分支。20世纪50年代,数字电子技术的发展使密钥可以方便地利用以移位寄存器为基础的电路来产生,这促使线性和非线性移位寄存器理论迅速发展。有效的数学工具,如代数和谱分析理论的引入,使得流密码理论迅速发展和走向较成熟的阶段。同时,由于实现简单、速度快、没有或只有有限的错误传播,使流密码在实际应用,特别是在专用和机密机构中仍保持着优势。目前,已提出多种类型的流密码,但大多是以硬件实现的专用算法,尚无标准化的流密码算法。

2.1.3.1 基本概念

流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0、1数字),字符分别与密钥流作用,进行加密,解密时以同步产生相同的密钥流实现,’其基本框图如下动画所示。图中,KG为密钥流生成器,A/为初始密钥。流密码强度完全依赖于密钥流产生器生成序列的随机性和不可预测性,其核心问题是密钥流生成器的设计。保持收发两端密钥的精确同步是实现可靠解密的关键技术。

点击开新窗口欣赏该FLASH动画![全屏欣赏]


--  作者:卷积内核
--  发布时间:11/6/2008 4:10:00 PM

--  
2.2 公钥密码
公钥密码技术是在试图解决常规加密面临的两个最突出的问题:密钥分配和数字签名的过程中发展起来的,它的发展是整个密码学历史上最大的而且也许是惟一真正的革命。

1976年,WDJf-fie和M.Heliman创造性地提出了公开密码体制。这一体制的最大特点是采用两个密钥将加密和解密分开:一个公开作为加密密钥,叫做公钥(Public Key);一个为用户专用,作为解密密钥,叫做私钥(PrivateKey),通信双方无须事先交换密钥就可进行保密通信。要从公钥或密文分析出明文或私钥,在计算上是不可行的。若以公钥作为加密密钥,私钥作为解密密钥,则可实现多个用户加密的消息只能由一个用户解读;反之,以私钥作为加密密钥,而以公钥作为解密密钥,则可实现由一个用户加密的消息可使多个用户解读。前者可用于保密通信,后者可用于数字签名。

公钥密码体制提出以后,人们基于不同的计算问题,提出了大量的公钥密码算法。最具代表意义的有RSA算法、DH算法、EIGammal算法和目前被视为可以代替RSA算法的椭圆曲线算法(ECC)。本节将介绍Diffie-Hellman密钥交换、RSA算法和椭圆曲线算法。

2.2.2 基本原理

公开密钥密码系统的理论基础是数论。在公开密钥算法中,加密/解密是整个算法方案的核心。Diffie和Hellman设想出了这个系统,但是却没有表明这种算法的存在性。他们给出了一个公开密钥密码系统必须满足的条件:

通信双方A和B容易通过计算产生出一对密钥(公钥KU,私钥KR)。

在知道公钥KU和待加密报文M的情况下,对于发送方A,很容易通过计算产生对应的密文:

C = EKU(M)

接收方B使用私有密钥容易通过计算解密所得的密文,以便恢复原来的报文:

M=DKR(C)=DKR[EKU(M)]

除A和B以外的其他人即使知道公钥KU,要确定私钥KR在计算上也是不可行的。

除A和B以外的其他人即使知道公钥KU和密文巴要想恢复原来的明文M在计算上
也是不可行的。

这些要求最终可以归结到设计一个单向陷门函数(Trapdoor One-way Function)。

单向函数·(Onc-Way Function)是满足下列条件的函数:它将一个定义域映射到值域,使得每个函数值有一个惟一的原像,同时还要满足下列条件;函数值计算很容易,而逆计算是不可行的。

在密码学中,“容易”是指一个问题可以在多项式函数时间内解决,这个多项式函数是输入长度的函数。不可行是指将一个问题的土作量作为一个函数的输入,函数值的增长速度超过多项式时间。

单项陷门函数,即除非知道某种附加的信息,否则这样的函数在一个方向上容易计算,而在另外的方向上的计算是不可行的。有了附加的信息,函数的逆就可以在多项式时间内计算出来,即有如下式子:

                     Y =fk(X) 容易,知道了K和X
                     X =f-1k(Y) 容易,知道了K和Y
                     X =f-1k(Y) 不可行,如果知道y而不知道K


--  作者:卷积内核
--  发布时间:11/6/2008 4:11:00 PM

--  
2.3 消息验证和数字签名
如果说密码技术在信息系统安全中的作用是防止对手破译系统中的机密信息,抵抗对手的被动攻击:那么,信息系统安全的另一重要方面是防止对手对系统主动攻击,如伪装、纂改、抵赖等,其中包括对消息内容、顺序和时间的伪装、篡改以及重发等。消息验证和数字签名技术是防止主动攻击的重要技术,它对于开放环境中的各种信息系统的安全性有重要作用。消息验证和数字签名技术的主要目的是:第一,验证信息的完整性,信息在传送或存储过程中未被篡改、重放或延迟等;第二,验证信息的发送者的真实性,而不是冒充的,此为实体验证,使用的主要技术为数字签名,包括信源、信宿等的认证和识别等。本节介绍消息验证和数字签名技术。

2.3.1 消息验证

可以使用如下的技术来实现消息验证技术:

● 消息加密:以整个消息的密文作为它的验证码。

● 消息验证码(MAC):以一个消息的公共函数和一个密钥作用于消息,产生一个定长数据分组,即消息验证码,并将其附加在报文中。

● 散列函数:一个将任意长度的消息映射为定长的散列值的公共函数,以散列值作为验证码。

2.3.2 数字签名

消息验证用来保护通信双方免受第三方的攻击。然而,它无法防止通信双方的互相攻 击。通信双方可能存在欺骗和抵赖。最吸引人的解决方案是数字签名。数字签名是笔迹签名的模拟。它具有如下性质:

(1)必须能够证实是作者本人的签名以及签名的日:期和时间

(2)在签名时必须能对内容进行鉴别

(3)签名必须能被第三方证实以便解决争端

数字签名有两种:一种是对整体消息的签名,它是消息经过密码变换后被签名的消息 整体;另一种是对压缩消息的签名,它是附加在被签名消息之后或某一特定位置上的一段. 签名信息。若按明文和密文的对应关系划分,以上每一种中又可以分为两个子类:—类是确定性(Deterministic)数字签名,其明文与密文一一对应,对一个特定消息的签名,签名保持不变,如RSA,Rabin签名;另一类是随机化(Randomized)的或概率式数字签名,它对同一消息的签名是随机变化的,取决于签名算法中的随机参数的取值。—个明文可能有多个合法数字签名,如E1Gamal签名。一个签名体制一般包含两个组成部分,即签名算法(SignatureAlgorithm)和验证算法(VerificationAleorithm)。

数字签名和消息加密有所不同,消息加密和解密可能是一次性的,它要求在解密之前是安全的;而一个签名的消息可能会作为一个法律上的文件,如合同等,很可能在对消息签署多年之后才验证其签名,且可能需要多次验证此签名。因此,对签名的安全性和防伪造要求更高,并且要求验证速度比签名速度要快,特别是联机在线实时验证。


--  作者:卷积内核
--  发布时间:11/6/2008 4:13:00 PM

--  
2.3.2.1 RSA签名体制

在RSA签名体制中,把需要签名的消息M作为一个散列函数的输入,由此输出一个定长的安全散列码。发送方用自己的私钥KR。将这个散列码进行加密就形成签名。此后,将消息M和签名传送出去。接收方接收到消息M,根据消息M计算一个散列码,同时使用发送方的公钥KUa对签名解密。若解密后的散列码和计算得出的散列码一致,则签名是有效的。因为只有发送方知道自己的私钥,所以,只有发送方才能生成合法的签名。RSA签名体制参见下动画。

点击开新窗口欣赏该FLASH动画![全屏欣赏]


2.3.2.2 数字签名标准

美国国家标准技术研究所(MST)已经公布了联邦信息处理标准FIPSPUBl86,即所谓的数字签名标准(DSS)。DSS利用了前面介绍的安全散列算法(SHA)并提出了一种新的数字签名技术,即数字签名算法。DSS最早发表于1991年,并于1993年、1996年进行了修改。

DSS是一种基于公开密钥技术的算法,用来提供惟一的数字签名函数。与RSA不同,它不能用作加密或密钥交换。

DSS方法首先对报文M通过一个散列函数计算其散列值,然后将该散列值、一个用做这个特殊签名的随机数k,发送者的kRa私钥及一个全局公钥KUG作为签名函数的输入,函数的输出签名由两个分量组成,记为s和r。将M,s,r分别发送给接收方。

点击开新窗口欣赏该FLASH动画![全屏欣赏]

在接收方,首先计算所收到消息M的散列值,然后将该散列值、签名(s,r)、发送者的公钥以及全局公钥作为验证函数的输入,如果签名是有效的,则验证函数的输出值就等于签名分量r。算法保证只有发送方用自己的私钥才能产生有效的签名。



--  作者:卷积内核
--  发布时间:11/6/2008 4:14:00 PM

--  
2.3.2.3 不可否认签名

1989年由Chaum和Antwerpen引入不可否认签名,这类签名有一些特殊性质,其中最核心的是在无签名者合作的条件下不可能验证签名,从而可以防止复制或散布其所签文件的可能性,这一性质使产权拥有者可以控制产品的散发。这在电子出版系统,知识产权保护中将有用武之地。

普通数字签名,可以精确地对其进行复制,这对于散发如公开声明之类的文件是必须的,但对另一些文件如个人或公司信件特别是有价值文件的签名,如果也可以随意复制和散发,就会造成灾难。这时就需要不可否认签名。

在签名者合作下才能验证签名,这会给签名者一种机会,在不利于他时他拒绝合作,以否认他曾签署的文件。为了防止此类事件,不可否认签名除了一般签名体制中的签名算法和验证算法(协议)以外,还需要第三个组成部分,即否认协议(DisavowalProtoc01)。签名者可利用否认协议向法庭或公众证明一个伪造签名的确是假的;如果签名者拒绝参与执行否认协议,就表明签名事实上是真的由他签署的。

2.3.2.4 防失败签名

防失败(Fail-stop)签名由B.Pfitzmanrl和M.Waldner引入。这是一种强化安全性的数字签名,可防范有充足计算资源的攻击者。当A的签名受到攻击,甚至在分析出A的私钥条件下,也难以伪造A的签名,A亦难以对自己的签名进行抵赖。

防失败签名是一种一次性签名方案,即给定密钥只能签署一个消息,由三部分,即由签名、验证和“证实伪造”(Proof of Forgery)算法组成。

2.3.2.5 盲签名

一般数字签名中,总是要先知道文件内容后才签署,这正是通常所需要的。但有时我们需要某人对一个文件签名,但又不让他知道文件内容,这就叫做盲签名(BlindSignature),它是由Chaum最先捉出的。在选举投票和数字货币协议中将会碰到这类要求。

B是一位仲裁者,A要求B签署一个文件,但不想让他知道所签的是什么内容,而B并不关心所签的内容,他只是要确保在需要时可以对此进行仲裁。可通过下述协议实现。

完全盲签名协议:

● A取一文件并以一个随机值乘之,称此随机值为盲因子(Blinding Factor),乘以 盲因子的文件为盲文件
    ● A将此盲文件送给B
    ● B对盲文件签名
    ● A以盲因子除之,得到B对原文件的签名

若签名函数和乘法函数是可换的,则上述做法成立;否则,要采用其他方法(而不是乘法)修改原文件。

安全性讨论:

B可以欺诈吗?是否可以获取有关文件的信息?若盲因子完全随机,则可保证B不能由第二步中所看到的盲文件得出原文件的信息。即使B将第三步中所签盲文件复制,他也不能(对任何人)证明在此协议中所签的真正文件,而只是知道其签名成立,并可证实其签名。即使他签了100万个文件,也无从得到所签文件的信息。

完全盲签名应具有如下特点;

● B对文件的签名合法,它证明B签了文件,且具有以前介绍过的普通签名的属性。

● B不能将所签文件与实际所签的文件联系起来,即使他保存所有曾签过的文件,
也不能决定所签文件的真实内容,窃听者所得信息更少。

● 完全盲签名使A可以让B签任何他所想要的文件。例如,“B欠A1 000万”等,因而这种协议不可能真正实用。

● 采用分割一选择(Cut-and-Choose)技术,可使B知道他所签的,但仍可保留盲签名的一些有用特征。


--  作者:卷积内核
--  发布时间:11/6/2008 4:15:00 PM

--  
2.4 信息隐藏
2.4.1.1 模型

信息隐藏系统的一般模型可以用下面动画来表示。包括了一个嵌入过程和一个提取过程。
下面对这个模型中的各个部分做详细的说明:

● 嵌入对象:指需要被隐藏在其他载体中的秘密信息。嵌入对象将在提取过程中被 恢复出来,但是由于隐藏对象在传输过程中可能被恶意攻击者篡改,提取过程通常只能正确恢复出原始嵌入对象的一部分。
    ● 掩体对象:指用于隐蔽嵌入对象的载体。一些特定的提取过程需要掩体对象的参 与。例如在同一个掩体对象分别用于隐藏多个嵌入对象的时候,为了考虑合谋攻 击,提取过程就需要掩体对象的参与。
    ● 隐藏对象:指将嵌入对象隐藏到掩体对象中后得到的结果。隐藏对象和掩体对象 应该具有相同的形式,而且通常要求两者之间的差异是不可感知的。
    ● 密钥:在隐藏过程中需要的附加秘密数据。通常在提取过程中使用的密钥应该与 在嵌入过程中使用的密钥相同或者相关。
    ● 恶意攻击者:恶意攻击者通常位于隐藏对象的传输信道上。恶意攻击者的目的一 般有:检测出隐藏对象的存在;查找出嵌入对象:证明嵌入对象的存在和内容; 在不影响隐藏对象外观的情况下删除嵌入对象等。

点击开新窗口欣赏该FLASH动画![全屏欣赏]



--  作者:卷积内核
--  发布时间:11/6/2008 4:15:00 PM

--  
2.4.2 信息隐藏分类

2.4.2.1 匿名通信

匿名通信是采用各种方法来隐藏通信主体——信息的发送者和接受者——的一种信息隐藏技术。匿名通信的典型例子包括邮件匿名重发器和“洋葱”路由,其构想是:只要中间参与者不相互串通勾结,通过使用一组邮件重发器或路由器,人们就可以将通信主体的踪迹隐蔽起来,因此信任是这些工具的基础。根据被隐藏主体的不同,匿名通信又分为几种不同类型。比如,Web应用强调接受者的匿名性,而电子邮件应用更关心发送者的匿名性。

2.4.2.2 隐写术

隐写术是信息隐藏学的一个重要的分支。密码学研究如何保护信息内容,而隐写术专门研究如何隐藏实际存在的信息。隐写术的英文名词Steganographia,其含义为“被掩盖的笔迹”,可以理解为将一个秘密信息隐藏在其他信息中。这方面的例子包括使用特殊墨水给报纸上的文字做标记以及在录音带的某些位置加上一些不易察觉的回声等。

2.4.2.3 数字水印

数字水印技术和隐写术有着一个根本的不同点,即数字水印系统所隐藏的信息总是与蔚保护的数字对象有关,而.隐写术则可以隐藏任何信息。同时,“健壮性”的评价标准也不同,因为隐写术主要关注隐藏信息被检测出来的可能性,而数字水印技术则关注隐藏信息被盗版者擦除的可能性。另外,隐写术一般用在点对点的场景下,例如在发送者和接受者之间建立伪装通信。而数字水印通常是用在一点对多点的场景。

与隐写术相比较,数字水印技术要求增加健壮性要求,以对抗各种可能的攻击。在该领域中,“健壮性”的含义取决于应用的场合,但一个成功的攻击只需要使数字水印标记不能被检测即可。健壮性在整个数字水印系统设计中占有非常重要的分量。

数字水印并不总是需要隐藏起来,例如一些系统需要可见的数字水印,但是在绝大多数情况下还是更强调不可察觉的数字水印(或称为不可见、透明的数字水印)。


--  作者:卷积内核
--  发布时间:11/6/2008 4:17:00 PM

--  
2.5数字水印
2.5.1术语

可视水印:正如字面意思一样,可视水印是可视的图案,与货币上的水印很相似。可视水印主要应用于图像,比如用来可视性地标志那些可在Web上得到的图像,来防止这些图像被用于商业用途。可视水印当然也可以应用在视频中,在有些情况下,我们也可以考虑在音频中嵌入可听的水印。

数字水印:与隐写术相比,数字水印要求有更强的健壮性以抵御攻击,即使知道隐藏信息的存在,不知道密钥(参见2.5.1.3小节中的Kercldaoffs准则)的攻击者也很难破坏掉嵌入的数字水印。

数字指纹:是表示数字水印一些特定应用的术语。例如,当数字产品作者的信息被作为数字水印而嵌入到产品中时,如果嵌入的信息是标志载体数据的作者或发明人的一个惟一代码,则这样的数字水印就称为数字指纹。

2.5.2模型

所有嵌入数字水印的方法都包含一些基本的构造模块,即一个数字水印嵌入系统和一个数字水印提取系统。

下面动画描述了数字水印的嵌入过程。该系统的输入是水印、载体数据和一个可选的公钥或私钥。水印可以是任何形式的数据,比如数值、文本、图像等等。密钥可用来加强安全性,以避免未授权方恢复和篡改数字水印。所有的实用数字水印系统至少应该使用一个蜜钥,有的甚至是几个密钥的组合。当数字水印与私钥或公钥结合时,嵌入水印的技术通常分别称为私钥数字水印技术和公钥数字水印技术,数字水印嵌入系统的输出称为添加了水印的数据。

点击开新窗口欣赏该FLASH动画![全屏欣赏]

下面动画描述了数字水印的检测过程。该系统的输入是已嵌入水印的数据、私钥或公钥,以及原始数据和原始水印(取决于添加水印的方法),输出的是水印W,或者是某种可信度的值,它表明了所考察数据I’中存在给定水印的可能性。

点击开新窗口欣赏该FLASH动画![全屏欣赏]


--  作者:卷积内核
--  发布时间:11/6/2008 4:18:00 PM

--  
2.5.3数字水印分类

2.5.3.1 版权保护

版权保护是数字水印最主要的应用。其目的是嵌入数据的来源信息以及比较有代表性的版权所有者的信息,从而防止其他团体对该数据宜称拥有版权。这样,数字水印就可以用来公正地解决所有权问题。这种数字水印除了要求非常高的健壮性以外还要考虑其他的问题,例如,数字水印必须是清晰的,应该能够保证当其他人嵌入另外的水印后仍然能够确认真正的原始所有者。

2.5.3.2 拷贝保护

还有其他的一些数字水印,它们的目的是标志合法接收者的信息,主要用来识别数据的单个发行拷贝。这很像软件产品的序列号,对监控和跟踪流通数据的非法拷贝非常有用。这一类应用在发行的每个拷贝中嵌入不同的水印,通常称之为“数字指纹”。数字指纹应用中的水印也需要很高的健壮性,不仅要能抵抗恶意的攻击,还要能抵抗一些标准数据处理。

2.5.3.3 盗版跟踪

在多媒体发行体系中,希望存在这样的一个拷贝保护机制,即它不允许未授权的媒体拷贝。在开放系统中很难实现拷贝状况。这种情况的一个例子是DVD系统,在该系统中,数据中的水印含有拷贝信息。一个符合要求的;DVD播放器不允许重放或拷贝带有“禁止拷贝”水印的数据,而带有“一次拷贝"水印的数据可以被拷贝;但不允许从该拷贝再进一步制作拷贝。

2.5.4数字水印设计准则

2.5.4.1 不可感知性

对数字水印系统的一个最重要的要求就是数字水印的不可感知性,它与数字水印系统的应用和目,的无关。因此,设计这样的水印方法是重要的,它利用人的视觉和听觉系统的有效性,在不超出可感知门限的约束下,使水印的能量取得最大值。与此相关的有两个问题,第一个问题是对所引入的失真进行可靠的评估。第二个问题是在对水印数据进行处理的时候,例如,在图像水印中,如果图像按比例缩放,那么水印的可视度将可能会增加。

2.5.4.2 健壮性

数字水印嵌入方法最终应该抵抗由标准的或恶意的数据处理所引入的任何类型的失真。迄今为止,还没有提出这样的完美的方法,甚至到底存在不存在一种完全安全的水印嵌入方法也未可知。因此,实际系统应在健壮性和诸如不可感知性、信息速率之类的相互冲突的要求之间进行折中。根据水印嵌入方法的应用目的,它所要求的健壮性会影响设计的过程。例如在图像水印中,如果需要一种能容忍压缩比很高的JPEG压缩的水印嵌入方法,那么使用变换域的方法可能要比使用空间域的方法更有效。同样,如果所有方法要适应一般的几何变换(旋转、缩放、剪切等),那么使用空间域的水印嵌入方法可能会更合适。


--  作者:卷积内核
--  发布时间:11/6/2008 4:18:00 PM

--  
2.5.4.3 安全性

大多数应用,比如版权保护,要确保嵌入信息的保密性。通常称这种问题及其他相关的问题为“数字水印的安全性”。图像数据库的索引是一个不考虑安全问题的应用。如果保密性是一个要求,那么嵌入和提取水印过程中就要使用密钥。可将保密等级分为两级。在保密的最高等级,·一个未授权用户既不能读或解码所嵌入水印,也不能检测一个给定的数据集是否包含水印。:第二等级允许任何用户检测数据是否嵌入水印,但没有密钥不能读取嵌入的信息。举例来说,这种方案对图像的版权保护很有用,一旦一个有版权保护的图像在一个图像编辑软件中打开,一个信息将通知用户该图像是被保护的。这种方案可以包含多重水印,这些水印使用公钥和私钥。也可以是将一个(或几个)公钥与一个私钥组合起来,嵌入一个公钥/私钥的联合水印。

2.5.5数字水印评估

2.5.5.1 性能评价和表示方式

数字水印的评估与应用目的和数据类型无关,取决于以下几个方面:

● 嵌入信息的数量:直接影响水印的健壮性,是一个重要的参数。一般嵌入的信息 越多,水印的健壮性就越低。
    ● 水印嵌入强度:在水印嵌入强度(对应于水印的健壮性)和水印可感知性之间有 一个均衡。高健壮性需要更强的嵌入,这反过来增大了水印的可感知性。
    ● 数据的大小和种类:通常,数据的尺寸大小对嵌入水印的健壮性有直接的影响。除了数据的大小,数据的种类同样也对水印的健壮性有影响。采用图像水印作为 例子,有的方法在扫描自然图像方面具有很高的健壮性,但它们在合成图像(如 计算机生成的图像)中的健壮性却很低。
    ● 密钥:尽管秘密信息的数量对水印的可感知性、健壮性没有直接的影响,但在系 统的安全性方面充当了重要的角色。密钥空间,也就是秘密信息所有可能的取值 范围要足够大,从而使穷举搜索攻击不可行。

考虑到这些因素,要想得到合适的基准和性能评估,水印嵌入方法必须要针对不同的数据集进行测试。此外,为了得到统计上的有效效果,必须使用很多不同的密钥和多样化的水印来评估这些方法。嵌入信息的数量通常是确定的,并且取决于具体的应用。

2.5.5.2 基准测试程序

与条件访问和版权保护机制类似,数字水印技术的存在及其潜在的应用可能性促使很多人试图擦除数字水印,很多公开可获得的测试图像水印技术的工具就是实例。

Unzign是一个用于/PEG格式图像的实用程序。Unzign引入了与微小图像变换相结合的像素抖动技术。根据目前研究的水印嵌入技术,该工具能有效地擦除或破坏嵌入的水印。

StirMark是一个用于测试图像水印技术健壮性的工具。它给图像带来较小的几何失真,应用一次StirMark,仅给图像引入几乎注意不到的质量损失。基于StirMark实用程序,给圈像水印系统提出了一个一般基准程序。该基准程序向已嵌入水印的图像发起多种攻击;然后,对抵抗各种攻击的能力进行比较。


--  作者:秋十三
--  发布时间:1/4/2009 6:26:00 PM

--  

很好!!!
--  作者:myendless
--  发布时间:1/13/2009 10:59:00 AM

--  
非常感谢!
--  作者:lck353349757
--  发布时间:4/29/2009 4:59:00 PM

--  
好啊
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
171.875ms