加密算法常识及密码学基本知识
标题:加密算法的一些常识admin
等级:管理员
文章:94
积分:493
门派:无门无派
注册:2002年5月19日楼主 
--------------------------------------------------------------------------------
加密算法的一些常识
加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的
送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如
果密文给人家截获而泄密。
加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign"
这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样
的东西人家当然看不明白,接收方用相反的方法就可以得到原文。当然这只是个例子,
现在应该没人用这么搞笑的加密算法了吧。
不基于KEY的加密算法好象一直用到了计算机出现。我记得古中国军事机密都是用这
种方式加密的。打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式
加密的。这种算法的安全性以保持算法的保密为前提。
这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。日本
中途岛惨败好象就是密码给老米破了。设计一种算法是很麻烦的,一旦给人破了就没用
了,这也忑浪费。
我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用
这个key来对明文进行加密。这样的算法即使一次被破,下次改个key,还可以继续用。
key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,
只要你用的算法认为你选来做key的那玩意合法就行。
这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。也就是说
应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。其实现在常用
的基于KEY的加密算法在网络上都可以到,很多革命同志(都是老外)都在想办法破解
基于key的加密算法又包括俩类:对称加密和不对称加密。对称加密指的是双方使用
完全相同的key, 最常见的是DES. DES3, RC4等。对称加密算法的原理很容易理解,
通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。
不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和
有密钥。 举个例子比较容易理解, 我们们假设通信双方分别是A, B.
A, 拥有 KEY_A1, KEY_A2, 其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
B, 拥有KEY_B1, KEY_B2, 其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。
公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把
才能够解开。也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。
通信过程如下:
A-------->KEY_A2------------>B
A<--------KEY_B2<------------A
这个过程叫做公共密钥交换,老外管这叫key exchange.
之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。
一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的
公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。
常用的不对称加密一般有RSA, DSA, DH等。我们一般使用RSA.
数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这
里一起介绍一下。
签名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。
看看那些重要文件都要头头签名。数字签名就是数字化的签名了。记得公用密钥和私有
密钥的特征吗?只有你一个人有你自己的私有密钥。而你的公用密钥是其他人都知道的
了。那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,接收人用你的公
共密钥解开一看,哦,是你发的。这就是你的数字签名过程了。
上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,
知道数字签名是这么一回事就可以了。
还有一种我们需要知道的加密算法,其实我不觉得那是加密算法 ,应该叫哈希算法,
英文是message digest, 是用来把任何长度的一串明文以一定规则变成固定长度的一
串字符串。它在SSL中的作用也很重要,以后会慢慢提及的。一般使用的是MD5, SHA.
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码
和二进制码转来转去的。
具体的加密解密过程我们不需要了解,因为SSL根本不关心。但了解加密算法的一些
基本原理是必要的,否则很难理解SSL。
对加密算
法的细节有兴趣的同志,可以去网络上这些加密算法的原理的文章和实现
的程序来研究,不过先学数论吧。不懂数论看那玩意还是一头雾水。
2003-10-29 1:42:45
=====================================================================================
标题:密码学基本知识(一)admin
等级:管理员
文章:94
积分:493
门派:无门无派
注册:2002年5月19日楼主 
--------------------------------------------------------------------------------
密码学基本知识(一)
1.传统的加密方法
传统的加密方法也称为密钥或对称加密,
加密和解密过程使用同一个密钥.
数据加密标准(DES)是传统加密方法的一个实例
现在被(老美的)联邦政府广泛使用.
传统加密方法的一个极简单的例子是置换密码
(substitution cipher). 就是用一种信息替换
另一种信息.常见的用法是将字母在字母表中偏移
位置. 朱利叶.凯撒并不相信自己的信使,他把给前线
将领文书中的A全部替换成D,B全部替换成E,用
这样的方法来加密文书.以今天的标准来看这种方法
太简单了,但这对凯撒很实用.这个例子描述了传统
加密方法的原理.
1.1 密钥管理和传统的加密方法
传统加密方法是有优势的.它的速度很快,而且特别适用
于不需要移动的数据.然而,由于安全地发布密钥非常困
难,单独使用传统加密方法来安全传输数据的代价是非常
昂贵的.
在间谍影片中常可以看到这样的情节,特工将一个密码箱
用手铐和自己的手腕铐在一起.密码箱中有什么呢?多数
情况下里面不是导弹发射密码,不是化学公式,也不是入侵
计划,而是用来解密的密钥.
对于使用传统加密方法进行安全通讯的手法双方来说,
他们必须拥有相同的密钥而且不能让别人知道.如果他们
处在不同的物理位置,必须相信信使,加密电话或者其他
的安全通讯介质,防止在传输过程中泄露密钥.在传输过程
中,偷听或截获到密钥的任何人,就能够阅读,修改和伪造用
这个密钥加密或认证的所有信息. 无论DES还是凯撒,传统
加密方法的永恒问题就是密钥的发布,怎样才能使接收者
得到密钥而不被其他人截获呢?
2.公开密钥加密法
公开密钥加密法可以解决密钥发布的问题,公开密钥的概念
由Whitfield Diffie&Martin Hellman在1975年提出.(现在
有证据表明英国
情报机关先于Diffie&Hellman几年发明了
这种方法,但是却作为军事秘密,而且在这方面的工作什么也
没做)
公开密钥加密法是一种使用一对密钥的非对称加密手段.公钥
用于加密,私钥用于解密
公钥可以让所有人知道,而私钥却必须保密.任何人(甚至是你
从未见过的人)用你的公钥加密的信息只有你可以看懂.
想从公钥推导出私钥在计算上是不可行的.拥有公钥的人可以
加密信息却不能将其解密,只有拥有对应私钥的人才能解密信息.
公钥加密法的主要优势在于可以让事先没有安全通道的人安全
地交换信息.收发双方通过安全通道共享密钥的前提条件不存在
了.所有的通讯中只包含了公钥,私钥是不会传输或共享的.下面
是一些公钥密码系统的例子:
Elgamal 以其发明者Taher Elgamal的名字命名
RSA 发明者Ron Rivest, Adi Shamir, and Leonard Adleman
Diffie-Hellman 以发明者的名字命名
DSA Digital Signature Algorithm (数字签名算法)
发明者David Kravitz
上联下联怎么区分平仄
由于传统的加密方法曾经是传送秘密信息的唯一手段,保持安全
通道和发布密钥的高昂费用将其应用范围限制在能够负担得起这
些费用的用户中,比如政府或者大银行.公钥加密法是加密技术的
革命,它可以为普通人提供强加密手段.还记得将密码箱铐在自己
手腕上的特工信使吗,公钥加密法会使他失去工作(他自己可能很
高兴这样)
3.PGP如何工作
PGP综合了传统加密方法和公开密钥加密方法的优点,是一种杂交
的方法.当用户使用PGP来加密明文时,PGP首先压缩明文.数据压缩
可以节省modem的传输时间和磁盘空间.更重要的是,压缩可以加强
密文的安全性.绝大多数密码分析技术利用在明文中发现的模式
(pattern)来破解密码.压缩可以减少明文中的模式,因此极大增强
了对密码分析的抵抗力.(太短或不能被很好压缩的文件就不进行
压缩)
PGP接着生成一个会话钥(session key),这是一个一次性的密钥.
会话钥是从用户鼠标的随机移动和击键中产生的一个随机数.会话
钥和一个非常安全而快速的传统加密算法共同加密明文,结果就是
密文.一旦数据被加密之后,就用接收者的公钥来加密会话钥.被公
钥加密后的会话钥连同密文一起传送给接收者.
解密工作与此相
反.接收者的PGP工具使用他(她)自己的私钥来恢
元旦祝福语大全简短8个字
复临时的会话钥,然后PGP使用该会话钥来解密传统方法加密的密
文.
两种加密方法的组合既保留了传统方法的速度优势,又拥有公开
密钥方法的方便性.传统加密方法的速度大约是公开密钥方法的
1000倍,反过来公开密钥方法解决了密钥发布和数据传输的问题.
二者结合起来,在没有牺牲任何安全性的情况下,性能和密钥发布
都得到了提高.
4.密钥(key)
密钥是一个数值,它和加密算法一起生成特别的密文.密钥本质上
是非常非常大的数.密钥的尺寸用位(bit)来衡量,1024位密钥代表
的数是非常巨大的.在公开密钥加密方法中,密钥的尺寸越大,密文
就越安全.
然而,公钥的尺寸和传统加密方法中密钥的尺寸是不相关的.传统
80位密钥的强度等同于1024位的公钥,传统128位密钥的强度等同于
3000位的公钥.在同种加密算法中,密钥越大越安全.但是传统方法
和公开密钥方法所用的加密算法不一样,因此它们的密钥尺寸不能
直接比较.
公钥和私钥是算术相关的,仅凭公钥推算出私钥是非常困难的.然而
如果有足够的时间和计算能力,总是可能导出私钥的.这使得选择合
适尺寸的密钥变得非常重要.为了安全需要足够大的密钥,为了速度
有要足够小的密钥.而且,要考虑是谁想要读取你的文件,他有多大的
决心,多少时间和多少可以利用的资源.
京东24小时长的密钥会在很长一段时间内是安全的.如果想保密许多年,应该选择
非常长的密钥.当然,谁也不知道使用未来速度更快更有效的计算机
来测定你的密钥会花费多长时间.曾经有一段时间人们认为56位的对 腊八节喝腊八粥的寓意
称密钥是非常安全的.
密钥以加密后的形式保存.PGP在硬盘的两个文件中保存密钥,一个文
件保存公钥,另一个保存私钥.这两个文件称为钥匙环(keyrings).在
使用PGP时,用户会经常向公钥环中加入接收者的公钥.用户自己的 实施好长江几年禁渔
私钥保存在私钥环上.如果丢失了私钥环,就无法解密依赖于该环的
加密信息.
2003-10-17 0:31:47
=====================================================================================
密码学基本知识(二)5.数字签名
公开密钥加密方法的一个主要优点是提供了数字签名的实现手段.
数字签名使得信息的接收者能够验证信息来源的真实性,还能够
验证信息是否完整.因此,公钥数字签名可以提供身份验证和数据
完整性保证.数字签名还提供了不可抵赖的特性,该特性能够保证
信息的发送者无法否认自己确实发送了这个信息.这些特性如同
加密功能一样是整个密码系统的最基本功能.
数字签名的目的和手写签名一样.然而手写签名很容易仿造,数字
签名和手写签名的优势在于它几乎不可能被仿造,而且它在确认
签名者身份的同时还能保证信息内容的完整性.
有些人使用数字签名多于使用加密.比如:客户可能不在意任何人
知道他往自己的银行户头存进1000块钱,但是客户必须确保自己
在和银行的出纳员打交道,而不是其他任何人.
数字签名和加密的基本工作模式很类似,只不过在签名时用自己的
私钥加密而不是用别人的公钥.如果信息可以用你的公钥解密,那
就能确定信息是由你发出的.
5.1 哈希函数
上面所描述的数字签名系统有一些问题.它的速度非常慢,
而且会生成大量的数据--至少是原始信息的两倍.前述系统
在处理过程中可以引入一种单向哈希函数来提高性能.单向
哈希函数可以接受可变长度的输入--既然这样,输入可以是
任意长的消息,甚至成千上万位--产生固定长度的输出;比如
160位.哈希函数保证,如果信息不管以什么方式改变了--甚至
只有1位变化--输出的结果会完全不同.
PGP对用户签名的明文使用一种强哈希函数.这产生一个定长
的数据,称为消息摘要(message digest).(再次强调,信息的
任何改变都会生成完全不同的摘要.)
然后PGP使用摘要和私钥来创建"签名".PGP将签名和明文一同
传输.接收者一旦收到消息,就可以用PGP来重新计算摘要(并
用发送者的公钥来解密签名得到原始摘要),据此接收者就可以
验证签名.PGP对明文可以加密也可以不加密.对明文签名有时也
很有用处,比如接收者可能没有兴趣或者没有能力来验证签名
(这时他直接看明文就可以了).
两小儿辩日翻译
只要使用了安全哈希函数,就没办法从一篇文章上取下某人的签
名而附加到另一篇文章上,同样也无法改变签过名的消息.签过名
的文章哪怕是极小的改动,也会导致数字签名验证过程失败.
数字签名在身份验证和确认其他PGP用户密钥的过程中扮演了很
重要的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。