RSA Lib Chapter 2 Cryptography (RSA实验室 第二章,密码学)

第二章 密码学


这章简述了密码学及相关领域,是下一章的背景工作。
2.1 密码学工具
2.1.1 什么是公钥算法?
在传统的密码学中,消息的发送者和接收者知道和使用相同的密钥;发送者使用密钥加密消息,接收者使用相同的密钥解密消息。这个方法被成为密钥算法或者对称算法。主要的挑战是使得发送者和接收这确定密钥并且不让其它任何人知道。如果它们处在分离的物理坐标,它们必须相信一个载体,电话系统,或者其它的中间传输系统来防止密钥的泄漏。在交互中偷听到密钥的任何人,都可以读取,修改,和使用密钥加密,以及认证消息。一般来说,密钥的传输和存储被成为密钥管理;所有的算法系统必须关注它们的密钥管理问题。因为在密钥加密系统中的所有密钥必须保证安全,密钥加密算法经常很难实现密钥管理,特别是有很多使用者的开放式系统。
为了解决密钥管理的问题,Whitfield Diffie和mARTIN hELLMAN在1976年引入了公钥算法的概念。公钥算法有两种主要用处,加密和数字签名。在它们的系统中,每个人有一对密钥,一个叫做公钥,另一个叫做私钥。公钥是公开的,然而私钥是秘密持有的。不许要发送者和接收者共享安全信息,所有的交流仅使用公钥发起,私钥永远不会传输或共享。在这个系统中,它不再需要相信通讯的安全。只需要确认与公钥绑定的用户是在可信任路径下的。任何人都可以只使用公共信息发送不同的消息,但是消息只能被私钥解密。而且,公钥算法不仅仅用作加解密,业用做鉴权和其它不同的技术。
在一个公钥算法系统,私钥总是在数学层面上和公钥链接,因此,总是有可能使用从公钥派生出来的私钥来攻击一个公钥系统。典型的防御这种攻击的方法是,从公钥派生私钥尽可能的困难。比如,一些公钥算法系统被设计为从公钥分散私钥需要因式分解一个大数字,这种分解是很困难的,这就是RSA公钥系统的原理。
加密
当Alice希望发送一个安全的消息给Bob,它在列表中查询Bob的公钥,使用它加密消息,并且发送掉。Bob使用它的私钥解密消息,并阅读。监听的人不能解密消息。任何人都可以发送一个加密的消息给Bob,但只有Bob可以读。(因为只有Bob有私钥)
数字签名
为了签署一个消息,Alic使用她的私钥和消息本身。输出被称为数字签名,并被附加到消息上。为了验证签名,Bob整理消息,并且验证使用Alice的公钥解开签名。如果结果是正确的,消息没被篡改。如果结果是错误的,签名被篡改了。
一个正确的公钥算法的历史由Diffie给出。
2.1.2 什么是密钥算法?
密钥算法有时候被成为对称算法。它是算法中比较传统的形式,同一个密钥可以用来加密和解密一个消息。密钥算法不仅仅用作加密,业用作健全。这样的技术被成为消息认证码(MACs).
密钥算法的主要问题是发送者和接受者协议一个密钥而不被其它任何人发现。这需要一个双方都不怕监听的方案。然而,密钥算法的优势是比公钥算法快很多。密钥算法中最通常的技术是块加密,流加密,和消息认证码。
2.1.3 公钥算法和密钥算法相比的优缺点?
公钥算法的主要优势是增加了安全性和方便性:私钥不许要传输或者共享给任何人。在密钥系统中,一般来说,密钥需要传送,因为相同的密钥在加密和解密中都需要。这是敌人在传输中获取密钥提供了机会。公钥算法的另一个主要优势是它可产生不可抵赖的的数字签名。通过密钥算法体系的认证需要共享一些秘密信息,有时候还需要信任第三方体系。作为结果,发送者可以抵赖之前的认证,声称共享的秘密被共享密钥的另一方泄漏了。比如,Kerberos密钥认证系统包含了一个中央数据库,保存了所有用户的密钥的备份。一个对数据库的攻击,将广受影响。另一方面,公钥认证组织了这种类型的抵赖;每个用户有责任保护他自己的私钥不被泄漏。公钥认证的这种属性通常被成为不可抵赖性。
使用公钥算法实现加密的主要缺点是速度,大多数的密钥加密方法都比当前的公钥加密算法显著的块。所以公钥算法和密钥算法可以一起使用来获得两者各自的优势。对加密来说,最好的解决方案是组合公钥和密钥体系来获得公钥算法的安全和密钥算法的速度优势。这样的协议被成为数字信封技术,在2.2.4中有详细的描述。
即使用户的私钥不可获得,公钥算法有时候也可能是脆弱的。一个身份认证的攻击将允许攻击者使用自己的公钥,并将其绑定到别人的名字上,从而获得数据。在一些情况下,公钥算法不是必须的,独自使用私钥算法就足够了。这些包括安全的密钥传输可以发生的位置。例如,用户之间的私有通讯。它业包含任何一个认证点知道和管理所有密钥的情况,比如,一个选定的英航系统。因为认证方已经知道所有人的密钥,没有必要再使用公钥和私钥。然而,这样的系统在用户数量变的很大的时候,会变得越来越难维护;这在公钥系统中则不会有任何限制。
公钥算法通常在单用户环境下没必要使用。例如,你想保证你私人文件的加密,你可以使用密钥加密算法来实现,把你私人的密码作为密钥。通常,公钥算法更适用于开放的多用户环境。
公钥算法不意味着取代密钥算法,但可以支持它,使得它更安全。公钥技术首先使用在密钥系统的密钥创建阶段;这个至今业是它的一个主要功能。密钥算法在我们过去的学习和工作中起到了重要的作用。一些过程中密钥算法使用使用块加密和流加密。
2.1.4 什么是块加密?
块加密是一种对称密钥加密算法,将固定长度块的明文数据转化为相同长度的密文数据。这个转化发生在用户提供的密钥的作用下。解密使用相同的密钥实现相反的过程。固定的长度被成为块长度,对多数块加密,块长度是64比特。在接下来的日子将会增加到128比特,因为过程越来越复杂了。
从数学背景来说:因为不同的明文块映射我ibutongd密文块(为了解密唯一),块加密对所有可能的信息提供了一个转化方案。当我们使用一个块算法来加密一个特定长度的数据,我们使用不同的模式操作。为了有用,模式必须至少在加密中是安全和有效的。模式集成了基础的块操作并增加了属性。标准的DES模式在FIPS 81和ANSI X3.106中定义。一个更通用的规范版本ISO92b整理了DES的4种模式。电子码书(ECB),加密块级联(CBC),加密反馈(CFB),和输出反馈(OFB)。关于块算法的更多信息和其它的算法可以在密码学教科书中找到。
2.1.4.1 什么是迭代块加密
迭代块加密算法使用数轮加密加密明文。在每一轮中,使用一个子密钥对数据实施相同的转化。子密钥集合通常是从用户提供的密钥通过特定的算法分散出来的。子密钥的集合被成为密钥日程。迭代的轮数依赖于特定的安全等级以及效率的考虑。在大多数场景下,增加迭代的次数将为块算法增加安全等级,但是对一些算法,循环的次数需要符合算法的限制。Feistel算法是迭代块算法的一个特定的类用来重复应用相同的转化调用。Feistel加密有时候被成为类DES的算法。
Feistel将密钥分为两组,采用异或和左右互换的方式操作。
2.1.4.2 什么是ECB模式
每块独立运算,块之间没有关系。
2.1.4.3 什么是CBC模式
上一块运算的输出作为扭转变量,和下一块的数据异或,作为下一个块运算的输入。并将结果直接输出
2.1.4.4 什么是CFB模式
上一个运算的输出异或上一个运算的数据作为扭转变量,作为下一个块运算的输入。并将结果异或当前输入数据作为输出。
2.1.4.5 什么是OFB模式
上一个运算的输出作为扭转变量,作为下一个块运算的输入。并将结果异或下一块数据作为当前输入数据作为输出。
2.1.5 什么是流算法
流算法是一类对称加密算法。流算法被设计为比块算法更快。块算法同通常操作大数据块,流算法一般操作明文的小单元,通常是比特级别的,这些小明文单元在传输和加密的时候经常是不同的。
流加密通常被成为密码流。加密是结合密钥流和明文的操作,通常是比特级别的XOR操作。密钥流的生成可以和明文以及算法无关,被成为自同步。通常流加密设计为同步的流算法。
一次性填充,当前流算法最关注的通常是理论上的一次性填充。一个一次性填充,有时候也叫做Vernam密码板,使用随机生成的比特串。密钥流的比特数和明文消息的比特数长度一致,即使攻击者看到密文,它也只能猜到特定长度的明文。
2.1.6 什么是哈希函数
哈希函数H是将输入的m转化并返回固定长度串(也被成为哈希值h)的方法,h = H(m)。哈希函数通常用来实现一些扩展的属性,对哈希函数基本的需求如下:
输入可以是任何长度
输出必须是固定长度
H(x)的计算是与给定的x相关的。
H(x)是单向的
H(x)是非碰撞的。
哈希函数H如果难于反转,就被成为单向的。难以反转就意味着对给定的哈希值h,从计算上难以发现输入值x,满足H(x) = h。如果给定一个消息x,从计算上难以发现一个消息y,使得H(x) = H(y),那么H就可以称为无碰撞的哈希函数。
哈希值标识着长消息计算的缩影,这个值业被称为消息摘要。可以认为消息摘要是某个大文档的数码指纹。比如众所周知的MD2,MD5和SHA。或许哈希函数的主要作用在于消息的数字签名。因为哈希函数比加密和数字签名算法块的多,可以用来计算大文档的数字签名或者完整性检查。
2.1.7 什么是消息认证码
消息认证码(MAC)是一个认证的标签(也被叫做校验),对消息使用特定的认证方案,密钥。和数字签名不同,MAC计算和校验都使用相同的密钥,所以它只能用作内部校验。有4种类型的MACs:
1.无安全条件。
2.基于哈希函数。
3.基于流加密。
4.基于块加密。
Simons和Stinson发表了一个无安全条件的,基于一次性填充的MAC计算。
Lai, Ruepple,和Woolven 发表了基于流算法的MAC。在它们打算发中,一个给定的流算法用来分割消息成为两个子流,每个流都做LFSR,校验码是两个LFSRs的最终状态。
消息认证码业可以从块算法中获得,DES-CBC MAC在美国和国际标准上广泛使用。基本的原理就是使用DES CBC加密消息,并且把密文中的最后一块作为校验码输出。
2.1.8 什么是交互式证明和无认知证明?
通常意义上的交互式证明是两方中的一方试图对另外一方证明一个特定的事实,一方叫做证明者,另一方叫做验证者。一个交互式证明通常采用挑战-响应的协议,证明者和验证者交换消息,验证者在协议最后输出“接受”或者“拒绝”。从理论之外讲,交互式认证通常被应用在算法和计算机安全,比如身份识别和认证中使用。在这种情况下,目的通常是为了验证验证者的身份,比如验证者的私钥。
无认知证明,验证者对要证实的事实本身没有意识(除了正确本身),也不能从证明者身上学习。在无认知交互下,验证者甚至之后都不知道如何向其它人证明。一个典型的无认知证明过程由一个验证者的消息承诺,以及验证者的挑战和验证者的响应组成。过程可以被重复许多次。基于验证者的所有轮的响应,验证者来决定是否接受或者拒绝交互。
让我们考虑一个著名的例子,叫做阿里巴巴的洞。Alice想向Bob证明她知道打开R-S洞口的密码,但是她不想把密码告诉Bob。在这种前提下,Alice走到R-S门前,而Bob走到P点的位置等待。并在R或者S两个方面叫Alice。如果Alice不知到密码(比如“芝麻开门”)那么她只有50%的机会从响应的口出来。Bob可以按他的意思重复很多次,直到他确认Alice知道密码。不管交互重复多少次,Bob始终不知到密码。
有很多的无认知和交互式协议在今天作为身份认证使用。Fiat-Shamir协议是第一个实践的无认知协议,基于因式分解的难度实现。一个更通常的基于Fiat-Shamir协议的是Feige-Fiat-Shamir过程。Guillon和Quisquater进一步发展了Fiat-Shamir的协议,节省了内存的使用,增加了交互性。
依赖于交互式认证的身份标识方案通常转化为数字签名方案。
2.1.9 什么是秘密共享方案
秘密共享的缘起是来自于密钥管理,在一些情况下,一个密钥往往需要提供来对很多重要的文件访问。如果这样的密钥丢失,那么所有的重要文件将变得不能访问。秘密分享的基本想法就是把密钥分成若干片给若干人保管,这些人中特定的组合可以一起恢复密钥。
著名的问题(n,m)问题。大门有n个钥匙孔,有m个人持有钥匙,其中任何n个人都可以在一起开门,而任何n-1的人都打不开。


2.2 密码学的简单应用
2.2.1 什么是隐私
隐私恐怕是密码学最关注的应用。密码学可以通过使用加密简单的实现隐私。某人为了阅读私有的数据,必须先解密。注意,有时候某些信息不希望被任何人看到,在这种情况下,信息必须使用反向不可逆的方式存储。比如,典型的多用户系统,没有人希望其它人知道自己的密码,通常密码表中存储的是密码的哈希值,而不是密码本身。这允许系统来验证用户密码的有效性,而不存储密钥。
2.2.2 什么是数字签名,什么是认证?
认证是一个人向人证明特定信息的过程。通常人们希望验证文档的作者,发送者的身份,文档的时间,电脑用户的身份认证等等。通过密码学的数字签名,可以达到以上的要求。文档的数字签名是依赖于文档的内容和签名者私钥实现的。它一般通过使用一个哈希函数和一个私钥签名函数来实现。但也有其它的实现。
每天,人们把它们的名字签署到信件上,信用卡收条,和其它的文档上,来标识对内容的认可。它们的验证者就是数据的发起者。这允许其他人通过签名来验证其它的消息。然而,这是可以伪造的,因为人们可以把签名从一个文档上移动下来放到另外的上面。数字签名和手写签名都依赖于很难找到有俩人拥有相同的签名。用户通过每个人的唯一信息使用公钥算法来计算数字签名。当公钥算法作为加密算法的时候,发送者使用接受者的公钥。当公钥算法使用计算数字签名的时候,发送者使用私钥对文档的数字指纹进行加密。任何有他公钥的人都可以进行校验。
加入Alice想发送一个签名的文档给Bob。首先对消息使用哈希函数,产生一个消息摘要。消息摘要可以认为是消息的短版本。事实上,哈希函数的工作也包括把消息降到指定的长度以内。为创建数字签名,用户对消息摘要签名并把它附在消息上。Alice将加密的消息摘要和消息发送给Bob,他可以选择加密或者不加密。Bob收到消息后,它必须使用相同的哈希函数对消息进行摘要,并用Alice的公钥解密消息摘要,对其进行比较。如果两者相同,成功验签,否则为伪造,或者传输有错误。
这种类型的数字签名有一个显著的问题,Alice不仅仅对特定的消息签名,也对其它的可能消息进行签名。当两个消息的哈希值相同,那么成为一个碰撞。所以对多数数字签名算法,无碰撞的哈希函数是必要的。从时间节省和其它的角度,使用哈希函数比将原有消息全部签名更好。然而有一种叫做生日攻击的攻击基于这个事实:两个有相同哈希值的消息比从哈希值中恢复数据更容易。事实上,一群超过23人的团体,两个或者更多的人有同一天生日的概率高达50%。
2.2.3 什么是密钥协商协议?
一个密钥协商协议,也被叫做密钥交换协议,是两个或者更多方在密钥加密体系协商使用密钥的一系列步骤。这些协议允许人们在不安全的通道内自由的安全的共享密钥,而不需要一个预先创建的安全通道的支持。
假如Alice和Bob希望使用一个密钥算法来安全通讯。它们首先需要觉得一个共享密钥。取代Bob打电话给Alice来确定密钥缩带来的被监听的风险,它们决定使用一个密钥协商协议。通过使用密钥协商协议,Alice和Bob可以在一个非安全的环境下交换密钥。这个协议的一个例子是Diffie-Hellman密钥协商。在许多场景下,公钥算法被密钥协商协议所采用。另外一个使用的密钥协商的例子是数字信封。
2.2.4 什么是数字信封?
当使用密钥算法系统,用户首先建立过程密钥,也就是一个密钥被用于一个消息或者通讯过程。为了降低密钥参与传输的风险。这是作为密钥管理的问题。公钥算法提供了这个问题框架上的解释方案被成为数字信封。
数字信封由使用密钥加密的数据,和一个加密的密钥组成。数字信封通常使用公钥算法加密密钥。这不是必要的,Alice和Bob如果已经建立了密钥,在数字信封中也可以使用密钥来加密过程密钥。
假设Alice想发送一个消息给Bob,使用密钥算法加密消息,使用公钥算法传输加密密钥。Alice选择了一个密钥,并且使用它加密消息,然后使用Bob的公钥加密密钥。她发送给Bob加密数据和加密密钥。当Bob想要读取消息,需要用它的私钥解密密钥,然后用密钥解密消息。如果是一个多地址的传输,比如电子邮件,可以很简单的扩展。如果Alice的消息同时发给Bob和Carol,加密的消息可以是相同的拷贝,但加密的密钥是不同的。
这个技术用在经常切换密钥的场合,经常切换密钥有助于安全。
数字信封不仅仅解决密钥管理问题,它们也提升了(相对于纯公钥系统加密)效率,而没有降低安全性。增加的效率是通过使用密钥算法加密消息带来的。
数字信封技术是一个密钥交换的方法,但是不是所有的密钥交换都用数字信封。
2.2.5 什么是身份认证
身份认证是一个人或者实体验证另外一个人或者实体的过程。在我们日常生活中,我们通过物理特性来认证我们的家人,朋友和伙伴,比如声音,脸或者其它的特质。这些特质成为生物识别,可以在计算机网络中通过特定的硬件使用。网络中的实体通常使用算法方式互相认证。
一个身份认证方案允许Alice向Bob证明自己,而另外的人即便监听业不能在后来假冒Alice。一个例子是无认知交互的身份认证。无认知交互允许人们通过它们特定的属性表明自己。比如Alice可以解开魔方,并且想向Bob证明,而不给出解决方案。它们可以如下操作,Alice把模仿给Bob,Bob打乱魔方给Alice,Alice转过身子,解开魔方交给Bob。因为Bob看到Alice解开了模仿,但是他不知到怎么解决。这个想法依赖于每个人都有“魔方”和它的答案。系统的安全依赖于解开模仿的困难程度。在上面的例子中,如果Alice是唯一能解开魔方的人,那么Bob就可以认定她是Alice了。原理是把每个人和唯一的东西关联起来;有些只能那个人解决的问题。这可以有效的替代人们的脸或者声音这种物理世界上唯一的属性。验证和身份认证是不同的。身份认证需要校验者确定和其它实体的区别。然而验证只需要当前实体的信息,而且,身份认证必须被定义为给定实体的唯一标识,验证并不需要唯一性。比如,有人登录到了一个非唯一标识的公共账户上,只需要知道共享密码就好。它们被验证作为用户账户之一。进一步说,身份认证不再需要用户通常意义的验证了。


2.3 困难问题
2.3.1 什么是困难问题?
公钥算法体系是基于一些很难解决的问题的基础上。这种情况下的困难指的是特定问题的解决非常复杂。这些问题成为困难问题。最众所周知的问题是因数分解,定理的论证和游商问题。
这种问题有两个主要的算法关注的类 - P 和 NP。 很容易实现, P的问题可以在有限的时间内解决,然而NP的问题则很难在有限的时间内解决。NP的另外一个定义在附录里。任何一个问题都有可能处在P和NP状态,但是我们不知到是否P = NP或者不等。例如,将两个数相乘是P, 相乘的两个数比特长度为k,复杂度为k^2。因式分解为NP,因为此类问题很难在特定时间解决。但是我们没法证明N = NP。因为NP往往比较困难。
2.3.2 什么是单向函数?
单向函数是数学意义的函数,从一个方向计算比较简单,而另一个方向比较难。
2.3.3 什么是因式分解问题。
将两个素数相乘是很容易的,不过将结果反向推倒两个素数是困难的。
这是RSA算法的数学原理之一。用户很难通过公钥n反推因子p,q,进而获得私钥e。
2.3.4 什么是当今使用的最好的因式分解方法?
...
2.3.5 因式分解能力有什么可能的提高?
...
2.3.6 RSA因式分解的挑战是什么?
...
2.3.7 什么是离散对数问题?
对特定的基数g和模数n,从指数x计算对数y是容易的 y = g^x mod n 。 而由对数y反向推导x是非常困难的。
这是RSA加密的数学原理之一。用户很难通过签名的数据反推私钥。
2.3.8 什么是当今使用的最好的离散对数方法?
...
2.3.9 什么是离散对数问题理论突破的前景?
总体来说,很难。
2.3.10 什么是椭圆曲线算法?
ECC作为椭圆算法,是基于近世代数和数论的椭圆曲线,原理就是通过两个点的切线查找与椭圆的交点是容易的,反之是困难的。
2.3.11 什么是基于格子的加密算法?
这个我也没看懂...
2.3.12 其它的困难问题有哪些?
...
2.4 安全性分析
2.4.1 什么是安全性分析?
    安全性分析是加密算法的反向操作:是科学的破解代码,解密密码,打破认证方案,并且通常打破算法协议。
    为了设计一个强大的加密算法或者加密协议,应该使用安全性分析来发现和修正弱点。这恰恰是为什么提供给公众监督的算法更受到信任的原因。例如,DES已经作为公开算法发布多年了,并以此受到信任,然而skipjack作为安全算法很长时间却受到很少的信任。有一个基本的共识,算法的安全性不依赖于算法的秘密性。相反的,算法应该公开,弱点应该被揭示出来。
    不同的安全性分析的技术用来解密算法系统被称为攻击。一些攻击是通用的,另外一些则对应于特定的算法体系。一些广泛认知的攻击手段在问题2.4.2中提到。
2.4.2 一些常见的安全性分析攻击基本类型
    安全性分析攻击通常分为六个大类,以区分发起攻击可能的算法。列举到这里目录中的攻击手段以密码分析的手段质量为顺序。以安全性分析的困难程度反向顺序。在所有情况下,密码分析的目标都是为了在没有扩展信息的前提下解密解密新的密文片段。密码分析的理想是获得密钥。
    一个密文攻击是分析算法在没有与它相关的明文密码分析得到的密文样本。这个数据相对是比较容易获得的,但是一个成功的密文攻击相对是困难的,需要获得非常大量的密文样本一个已知的铭文攻击是在密码分析得到的密文样本和相应的明文。
    选定明文攻击是一种在密码分析是能够选择一个明文的数量,然后获得相应的加密密文。
    一个自适应选择明文攻击是一种选择明文攻击的特殊情况,在密码分析是能够动态选择明文样品的,改变以前加密的结果,根据他或她的选择。
    一个选择密文攻击是一个在密码分析者可能会选择获得相应的解密明文的密文件和尝试。这种类型的攻击通常是最适用于公共密钥密码系统。
    一个自适应选择密文是上述攻击的自适应版本。密码分析,可以安装在一个场景中,他有一块解密硬件免费使用这种类型的攻击,但无法从中提取解密密钥。
    注:安装不仅对加密算法的密码分析攻击可以,但也类似,对数字签名算法(见2.2.2),MACing的算法(见2.1.7),伪随机数发生器(见问题2.5.2)。


2.4.3 什么是穷尽密钥搜索?
    穷尽密钥搜索,或蛮力搜索,尝试每一个可能的密钥反过来,直到正确的关键是确定的基本技术。为了确定正确的密钥,可能有必要拥有明文和其相应的密文,如果明文一些识别CH aracteristic,密文单就足够了。穷尽密钥搜索,可以安装在任何加密的密码弱点在关键的时间表(见2.1.4题)有时可以帮助改善穷尽密钥搜索攻击的效率。
    在技术和计算性能的进展将永远穷尽密钥搜索攻击越来越实际针对一个固定长度的密钥。当DES(见3.2节)的设计,它被普遍认为穷尽密钥搜索对安全没有在硬件上的一个巨大的金融投资[DH77]。然而,多年来,这样的攻击线将成为一个潜在的对手[Wie94]越来越有吸引力。穷尽密钥搜索的一个有用的文章,可以发现在1997年冬季发行CR97] CryptoBytes的。
    穷尽密钥搜索,也可以在标准桌面工作站和个人电脑上运行的软件。而DES的56位密钥空间的穷尽搜索将采取的最快的一般用途的电脑可今天数万或数百年来,互联网的发展已分区的密钥空间,可能要利用一个分布式检索上千台机器和散发了大量的计算机的每个小部分。以这种方式和使用一个特别设计的超级计算机,DES密钥确实打破于1999年1月在22小时内(见2.4.4问题)。


2.4.4 什么是RSA密钥挑战?
    RSA实验室在1997年1月开始的RSA密钥挑战。挑战的目标是量化的安全密钥密码提供各种规格的密钥(见2.1.2题)。预计从这些比赛中获得的信息,研究人员和开发人员的价值,因为他们估计打击穷尽密钥搜索算法或应用的实力。
    差分分析是一个攻击型迭代分组密码(见2.1.4.1问题上可以安装墨菲[Mur90] FeAl合金的4(见3.6.7题)的攻击,但他们首次推出的这些技术。后来改进和完善Biham和Shamir[BS91a[B S93b]谁使用他们攻击DES差分分析(见3.2节)基本上是选定明文攻击(见2.4.2题);重新在于分析演化的两个,因为它们是根据相同的密钥加密的相关明文之间的差异,通过仔细分析产品。可用的数据是,概率可以被分配到每一个可能的密钥,并最终最有可能的关键是确定正确的。
    松井和山岸[MY92]首先设计了线性密码分析的对FEAL(见3.6.7问题)的攻击。这是扩大由松井[Mat93] ATT ACK的DES(见3.2节)。线性密码分析是已知明文攻击(见2.4.2题),它采用了线性近似描述块密码的行为。给予足够的明文和对应的密文对位有关的关键信息,可以得到的,增加的数据量通常会给予更高的成功概率。
    ...
2.4.5 什么是同步块算法最重要的攻击手段?
    ...


2.4.6 针对哈希函数的技术?
    生日攻击...


2.4.7 针对流算法最主要的攻击?
    ...


2.4.8 MAC算法的最主要的攻击?
    ...


2.5 算法中需要支持的工具
2.5.1 什么是素性测试?
    素性测试是证明一个数是素数(大于1的整数是素数,如果它是只能由自己和1整除)的过程。它是依赖秘密的素数,如RSA系统,密码系统的密钥生成过程中使用。概率素性测试是一个过程,证明了一个数字,是素数或者是素数的概率高。
    为了产生一个素数,需要生成随机数,并且测试素性,直到确认其中之一为素数。
    通常建议使用概率素性测试,这样比实际证实一个数是素数更快。可以用素性测试判断是否一个数字是素数,并只有很小的可能有错误。


2.5.2 什么是随机数生成?
    随机数生成在算法操作中使用的广度很大,比如密钥生成和挑战回应过程。随机数生成器是一个函数出书一系列的0或者1的点,下一个bit不能由上一个bit决定。然而真正的随机数发生器在计算机上是很困难的,因为及栓剂是精确设备。因此,如果相同的随机数生成器运行两次,将收到相同的结果。真正的随机数发生器也在使用,不过他们很难构建。他们通常采用一些物理世界的特性作为输入,比如放射性物质或者鼠标的等待时间等。
    因为这些困难,计算机上的随机数生成通常使用伪随机数生成。伪随机数基于每个种子生成一系列表面上看起来符合描述的比特序列。伪随机数生成器经常基于算法函数比如块算法或者流算法。例如使用DES。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值