加密解密学习分享

来源:互联网 发布:office for mac 下载 编辑:程序博客网 时间:2024/04/29 13:47
现行秘钥体系,根据加密与解密的秘钥是否相同可以分成对称加密和非对称加密。
加密解密秘钥相同或者虽然不同但是可以从其中一个很容易推导出另外一个的称为对称加密;加密与解密秘钥不同,并且不能从一个推导出另外一个的称为非对称加密。在非对称秘钥体系中,从算法角度,使用公钥加密的必须使用对应的私钥解密,使用私钥加密的必须使用对应的公钥解密,公钥与私钥必须成对使用。
但是实际使用的时候,还是有规范的,一般公钥用于加密和认证,私钥用于解密和签名。
为了达到浅显易懂的目的,这里直接从案例讲起,在解读案例的时候穿插讲解具体的安全术语。
由于对称秘钥使用简单,这里就不再具体描述,下面用例子说明下非对称秘钥具体使用

老师有两把钥匙,一把公钥A,一把私钥a
老师把公钥A群发给三个学生 小明 小刚 小丽
1)小丽给老师写信打小报告,又怕小明、小刚看到信件内容,于是在发信时候用公钥A加密信件
老师收到小丽的信件后,用私钥a解密信件,就看到了信件的内容。
小明小刚由于没有私钥a,所以小丽的信件是不会被看到的,所以这里保证了信件不会被第三者看到
2)老师收到了小丽的信件,写完回信
这里有两个问题
问题a  老师回信内容是否要加密
由于小明、小刚都有老师的公钥,所以如果他们偷偷下载了小丽的邮件后,然后用私钥a解密老师的邮件是可以发现小丽在打小报告
所以此时的信件内容就算加密,也只能防止没有公钥A的人看到信件内容。
目前看到的技术资料,这里都没有详细说明,从数字签名的来源来看,及秘钥使用惯例来看老师不用私钥加密自己的信件
问题b 如何保证小丽的收老师的邮件的完整性 
老师给小丽回信时候,突然想要保证邮件的完整性和不可抵赖性,于是又对信件使用Hash函数MD5算法生成信息摘要,接着用自己的私钥a加密信息摘要做成数字签名附在信件上发给小丽,并告诉小丽以后自己的信件都有数字签名
3)小丽收到老师的回信,用公钥A解密数字签名,如果得到信息摘要,说明信件确实是老师私钥a加密发出的(假设老师的私钥是绝对安全的则说明信件确实是老师发出的);如果得不到信息摘要,说明信件不是老师私钥a加密发出的
然后小丽再用和老师一样的hash函数MD5算法加密信件内容生成信息摘要与老师的信息摘要做比对,如果一致说明信件没有被篡改
注意:这里的私钥只是加密信息摘要

4)小明由于被小丽打小报告后收到老师的严厉批评,心里闷闷不乐,心想一定要做整治下小丽,于是自己做了一对公钥B和私钥b
然后,偷偷的把小丽电脑里的老师公钥A替换成了自己的公钥B
接着小明盗用老师的邮箱给小丽发信件,同时对信件使用hash函数MD5生成信息摘要,用自己的私钥b做数字签名同时发给小丽。
由于小丽的老师公钥A已经被换成了小明的公钥B,小丽收到小明的假冒信件后,用“老师的公钥A”顺利解开了电子签名得到信息摘要,同时有用hash函数MD5加密信件生成信息摘要与“老师”的信息摘要做比对,发现一模一样。于是小丽就以为自己还是在和老师通信。
这里有一个问题需要注意:hash函数,由于目前常见的信息摘要算法就是MD5和SHA,所以比较容易被猜到。

5)终于,小丽发现了问题报告了老师。聪明的老师果断把自己的秘钥更换为公钥C和私钥c,同时去证书中心申请数字证书,自己不再分发公钥C给三个学生。
证书中心用自己的私钥d,对老师的公钥C和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
老师每次给小丽写信用私钥c签名,同时附上CA颁发的数字证书。
小丽收到邮件后用CA的公钥D解开数字证书(同时验证证书的真实性),获得老师的公钥C,这样就防止老师的公钥被其他人偷偷替换了。
数字证书说白了,就是每次通信通过第三方来分发公钥,以保证公钥不被他人替换。

6)案例延伸
小丽也可以做一对秘钥,公钥发给老师,每次自己回复老师邮件时候用自己的私钥加密。老师收到小丽的邮件后,用小丽的公钥解密。
从看问题的角度而言,此延伸其实只是观察者角度不同而已,实质是没有变化的,故不用考虑。
公钥私钥只是一个相对的概念,一般自己保留的叫私钥,分发给其他人的叫公钥。秘钥使用,也是要遵循大家的使用习惯。
一般公钥用于加密和认证,私钥用于解密和签名。如果不按规范使用,会造成人与人沟通的障碍。

具体术语解释:
对称加密
1)加密和解密的秘钥一样
2)使用简单,加密解密快捷高效 多用于存储用户密码
3)加密强度不高,秘钥分发困难
4)常见加密算法 DES 3DES RC-5 IDEA
目前已经确定DES,可以被穷举法破解,按目前的硬件并行处理速度,DES已经极不安全,建议升级3DES

非对称加密
1)加密和解密的秘钥不一样 但是只能成对使用
2)加密速度极慢,一般用于极小的数据加密如信息摘要加密 或加密对称秘钥
3)加密强度高,秘钥分发容易可以适应开放性的使用环境,可以实现数字签名和验证
4)常见加密算法RSA ECC

hash函数与数字签名
Hash函数计算过程是输入一个变长字符串,返回定长字符串(简称Hash值)
对于特定文件,由于单向hash的算法特征,Hash值是唯一的,这里把Hash值称为这份文件的信息摘要。
如果两个人对两份文件使用同样的hash函数进行处理后得到的Hash值是一样的,则可以说明这两份文件是同一个文件。
如果用私钥加密信息摘要,则生成的是数字签名。
常见信息摘要算法 MD5、SHA

数字证书
从上面的例子可以看出,数字证书就是证书权威机构CA用证书机构的私钥加密申请证书用户的公钥和其他信息生成的。
如果用CA的公钥可以解开数字证书便能得到证书用户的公钥。简单理解,就是 证书用户通过CA来分发自己的公钥。
0 0