益友软件工作室

加密金刚锁相关技术 → 加密类技术文章 → 加密算法及实现

加密算法及实现

文章作者:fnlq

【声明】

一、本文实用于初学者,目的在于帮助大家熟悉一些系统底层的知识。

二、本文只是为了让广大网友共同提高一些基础知识,本人决无卖弄之意,只供需要这方面知识的读者阅读,如果你是高手,或者不需要这方面知识,请跳过。

三、本文是一篇翻译文章,如有雷同,敬请谅解。

四、本文欢迎传抄转载,但是不要用于任何商业用途。请尊重作者劳动,也欢迎来信交流 fnlq@263.net

=======================================================================

【正文】

公开密钥算法

隐秘密钥算法

块密码模式

密文暗码函数

随机数字发生器

公开密钥算法

公开密钥算法使用不同的密钥进行加密和解密运算,并且解密密钥不能从加密密钥变换获得。公开密钥算法通常都非常慢,因此公开密钥算法很多时候被应用到加密一组由其他途径产生的密钥,并通过公众网路进行传送,然后接受方用私钥解密后,在以后的对称算法里应用此传送过来的密钥。

RSA(Rivest-Shamir-Adelman)是使用最多的公开密钥算法,能够被应用在加密和数字签名中。大家普遍接受当足够长的密钥被使用后,RSA是足够安全的(512比特是不安全的,768比特是中等安全的,1024比特足够保障一般的安全传输。) RSA的安全依赖于大整数因数分解的难度。因数分解的快速发展将导致RSA出现问题。不过,目前RSA是这个世界上最重要的公开密钥算法。RSA的专利权将在今年失效(2000年),并且将可以被自由使用。

Bruce Schneier有专门的论文讨论使用RSA密钥推荐的长度,按现状而言,512比特是不足够的,1024比特可以被认为是很安全的,如果使用2048比特,应该可以保障今后十年的安全。值得一提的是,RSA对于Chosen Plaintext attack非常脆弱,并且新近发展的Timing Attack能够用来破解很多RSA的具体实现。如果对RSA进行正确的应用,可以缔造一个很安全的系统,但是一定要注意避免上述这两类攻击。

很多RSA的实现可以被自由获取,例如 PGP,SSH。

Diffie-hellman 是一个被普遍应用在密钥交换的公开密钥算法。当采用了足够长度的密钥和合适的发生因子时候,这个加密算法很安全。Diffie-hellman算法依赖于离散对数的困难度(这和大整数分解因数一样,都非常困难)。 Diffie-hellman的专利权保护已经在1997年4月29日过期。

Diffie-hellman 算法对于强的素数和发生因子非常敏感,在Photuris草案里推荐了一对可行的素数/发生因子。同样,隐秘的指数的大小也对此算法的安全性非常重要。保守的建议生成长度是已建立的会话密钥长度两倍的随机指数。

椭圆曲线公开密钥密码系统是逐渐浮出水面。这个方法非常缓慢,但是随着计算机的发展,逐渐成为可行。他们被认为很安全,但是尚没有经过类似RSA经历过的详细审查。
可以参考 IEEE P1363关于椭圆曲线密码系统和相关模式的标准草案

DSS (Digital Signature Standard)

美国政府认可了一种只用于签名的机制,它的设计想请并没有被公布,但是很多人已经发觉其中很多潜在的问题(例如泄漏签名中的隐藏数据,还有如果签署两个不同的消息采用同一个随机数,将会泄漏隐秘密钥),美国政府已经对其进行了专利保护,使用这一算法将需要花费25美元以上给美国政府。几乎没有理由采用DSS,因为有更多更好的方法可以取代这一算法。

ElGamal公开密钥密码系统

LUC 是另一个公开密钥的加密系统。

隐秘密钥算法 (对称密码体制,又称单钥加密体制)

DES (US Federal Data Encryption Standard)
DES是最著名的采用对称密码体制的算法,作为美国政府的数据加密标准,其被应用到非常广泛的范围中。

IDEA (International Data Encryption Algorithm)

这是在瑞士苏黎世开发的一种算法,这个算法被认为非常安全。这是目前世界上最好的公开的加密算法,这也是一种比较新的算法,在已经使用过的这些年里,没有关于这种算法的弱点的报告,尽管有无数人对其进行了分析和攻击。
IDEA在美国和大多数欧洲国家得到专利保护。专利的持有者是Ascom-Tech,非商业性的IDEA的使用是免费的。要获得IDEA的商业使用许可请和idea@ascom.ch 联系
很多IDEA的实现可以被自由得获得。例如 PGP SSH idea86 等

RC4 是RSA数据安全公司开发的一种密码算法。它过去一直是商业机密,直到某个人在Usenet的新闻组贴了一个源代码,声称等价于RC4算法。很明显的是,这个被贴出的源代码确实等价于RC4。这个算法非常快,但是破解这个算法也并不是非常简单。因为其得快捷,很多应用都使用了这个算法。RC4本质上是一个伪随机数生成器,并且生成算法的输出与数据流进行异或运算。因此,非常重要的是,绝对不应当对两个不同的数据流采用同一个RC4密钥进行加密。
RC4算法可以从这里获得。

美国政府宣布40位密钥RC4的应用可用于出口,如此短的密钥可以被军事情报、科研院所和业余团体轻易破解。曾经有报道采用RC4-40的Netscape SSL被两个独立组织在几天内破解。

SAFER 是J.L.Massey(同时也是IDEA的研究者之一)发明的一种算法。关于描述这种算法的论文已经公开,这种算法提供安全而又快捷的软件实现甚至可以在8位处理器上实现。概算法目前有两个变种,一个是64bits密钥的算法,另一个是128位的密钥算法。

暗码变换的密码函数

任何强加密的暗码生成算法都可以转换成密码。有几种可能采用的方式,通常的办法是暗码生成结果作为一个随机数生成器,并且把生成的暗码与数据进行异或运算加密。当所有的暗码的字节都被使用以后,一个新的暗码通过修改密钥来获得,并且重新进行暗码计算。进行暗码运算的数据必须还要包括一个密钥,如前一次的暗码,一个序列号,或者一个明文字符串等。

Enigma

这是德军在二战中使用的密码系统,用现代的计算机可以轻而易举地对付它。现代的应用不应该采用这类算法。类似的还有Vigenere等。

分块加密模式

大多数经常使用的密码算法(如DES,IDEA ,BlowFish)都是分块加密的。这是指他们都采用一个固定长度的数据块——通常是64比特——并且通过密钥选择移动到另一个64位的块中。
如果同样的块通过同样的密钥进行加密,那么结果的加密文本也将是相同的。这个加密模式被称为ECB 电子代码书。 这个信息对攻击这很有用。

暗码加密函数

MD5 (Message Digest Algorithm 5)是RSA数据安全公司开发的一种安全暗码算法。可以用来把不同长度的数据块进行暗码运算成一个128位的数值。 MD5被广泛使用,并且可以被认为是很安全。不过已经有能够破解MD5的报道,据称,一个价值几百万美元的计算机系统可以在几周内寻找出已被暗码处理的原文。

MD2 MD4都是旧的加密算法,现在不应该继续使用了。其中Windows NT由于采用MD4,因此L0phtcrack等工具可以进行比较快地破解。

SHA (Secure Hash Algorithm) 这是一个美国政府公布的暗码生成算法,可以对任意长度的数据运算生成一个160位的数值,很多人认为这个比较新的算法是一个好的算法。 fnlq

上一篇:ElGamal算法

特别申明

本栏目的文章都是本人从网上搜集而来,仅供大家学习研究之用,请不要用于商业目的!其中署名“佚名”的,意思是作者不详。如果某些文章未署你的名字,请来信告知,我会补上的。如果你认为某些文章侵犯了你的正当权宜,也请来信,我会将它删除。