目录
密码学
密码学发展
- 古典密码:古代----19世纪末
- 近代密码:20世纪初---1949年
- 现代密码:1949(香农发表的《保密系统的加密原理》)---1975
- 公钥密码:1976(W.Diffie和M.Hellman发表的《密码学的新方向》)--至今
对称加密体制
加密和解密秘钥相同,或者由一个能很容易的推出另一个。对称加密算法如:DES、3DES、AES等
优点:
- 效率高,算法简单,系统开销小
- 适合加密大量数据
- 明文长度和密文相同
缺点:
- 需要以安全方式进行密钥交换
- 密钥管理复杂
非对称加密体制
加密和解密秘钥不相同。其中,对外公开的秘钥,称为公钥。不对外公开的秘钥,称为私钥。对称加密算法如:RSA加密算法
优点:
- 解决密钥传递问题、密钥管理简单
- 大大减少密钥持有量
- 提供了对称密码技术无法或很难提供的服务(数字签名)
缺点:
- 计算复杂、耗用资源大
- 非对称会导致得到的密文变长
混合加密
由于对称加密体制和非对称加密体制各有优缺点。所以,在实际生活中,我们还是经常用混合加密方式来对数据进行加密的。
常见的混合加密算法主要是指RSA加密算法和DES加密算法这两种加密算法混合加密
混合加密实现方式:
- 信息(明文)采用DES密钥加密。
- 使用RSA加密前面的DES密钥信息,最终将混合信息进行传递。
接收到信息后解密:
- 用RSA解密DES密钥信息。
- 再用DES解密获取到的密钥信息解密密文信息,最终就可以得到我们要的信息(明文)。
哈希算法
哈希(Hash),一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出通常称作散列值、数字指纹 或 消息摘要。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间(不同的输入有可能会散列成相同的输出,几率非常小),而不可能从散列值来逆向推出输入值,也就是说,哈希函数是不可逆的。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
哈希函数也称为散列函数、杂凑函数等。
哈希函数的特点:不可逆性,碰撞约束
目前网上大部分的哈希破解都是利用哈希值的密码字典进行爆破。
常见的哈希算法有:MD4 、MD5 、 SHA1、 SHA224 、 SHA256 、 SHA384 、SHA 512
- MD5 , 输出128bit的散列值
- SHA1 , 输出160bit的散列值
- SHA224, 输出224bit的散列值
- SHA256, 输出256bit的散列值
- SHA384, 输出384bit的散列值
- SHA512, 输出512bit的散列值
哈希算法的用途:文件校验、数字签名、安全传输和存储口令
数字签名过程
假如小明要给小红发一个文件,那么怎样才能保证小红收到的文件是小明发的并且没有被篡改呢?
- 小明告诉小红自己的公钥,并且私钥只有小明自己一个人知道
- 小明对消息M计算摘要,得到摘要D
- 小明使用私钥对D进行签名,得到签名S
- 将M和S一起发送出去
小红收到消息后
- 小红首先对M使用跟小明一样的摘要算法计算摘要,得到D
- 使用小明的公钥对S进行解签,得到D’
- 如果D和D’相同,那么证明M确实是小明发出的,并且文件数据没有被篡改过
密码学的应用--网站认证
密码学的应用很广,在实际生活中处处可见。比如网购,网银,邮件,网页等等。今天我们讲一下密码学应用之网站认证。
比如我们打开百度,那么百度是如何保证显示在我们眼前的网页就一定是百度生成的,而没有其他人修改的呢?这就是借助数字签名来实现的。
浏览器工具->Internet选项->内容->证书,就可以看到我们浏览器上的数字证书了。所谓证书,其实是对公钥的封装,在公钥的基础上添加了诸如颁发者之类的信息。
双击对应的证书,我们可以看到该证书的详细信息。如下,我们可以看到该证书是使用 sha1算法进行摘要,然后使用RSA算法对摘要进行签名。
证书的使用者是 www.baidu.com 。公钥信息那一栏对应的就是 百度对外的公钥。