对称密码,就是普通的key,两边是相等的
不管加不加密,用什么算法生成,总之两边是相等的。
非对称密码
非对称密码,典型的如公钥私钥
原理:
- 1。公钥和私钥都是SERVER自己的 。
- 2。放出公钥给client端
- 3。client端对数据用公钥加密 后,将加密数据发往SERVER
- 4。SERVER收到加密数据后用私钥解密
- 5。安全性——黑客即使截获了公钥,也不可能解密
DES算法
DES算法全称为Data Encryption Standard,即数据加密算法
DES是典型的对称密码算法 。
DES算法原理:
64位的明文输入块(DATA)----- 64位密钥 ---变为64位的密文输出块
所使用算法为初始置换或逆置换
DES算法的入口参数有三个:
Key 8字节 密钥,共64位
Data 8字节 明文数据,共64位
是要被加密或被解密的数据
Mode 工作方式,有两种:
加密或解密
RSA
RSA算法的名字 以发明者的名字命名: Ron Rivest, AdiShamir 和Leonard Adleman
RSA是一种非对称密码算法
是第一个既能用于数据加密也能用于数字签名的算法。
RSA的数学依据:大数分解
RSA的依赖于大数分解。
RSA公钥和私钥都是两个大素数( 大于 100个十进制位)的函数 。
RSA被推崇的原因: 从一个密钥和密文推断出明文的难度等同于分解两个大素数的积 。
按现在的计算机技术水平, 要破解目前采用的1024位RSA密钥,需要上千年的计算时间 。
RSA是被研究得最广泛的公钥算法, 从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受。
普遍认为是目前最优秀的公钥方案之一。
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。
RSA密钥对(公钥和似钥)的产生:
- 素数积
先选择两个大素数,p 和q 计算乘积n: n = p * q |
- 加密密钥
随机选择一个加密密钥e,要求满足: e 和 ( p - 1 ) * ( q - 1 ) 互质 |
- 解密密钥
利用Euclid 算法计算解密密钥d ,要求满足: e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) n和d也要互质。 |
- 公钥和私钥
e和n是公钥,用于加密 d是私钥,用于解密 (两个素数p和q不再需要,应该丢弃,不要让任何人知道) |
RSA的速度
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍
无论是软件还是硬件实现。速度一直是RSA的缺陷。
一般来说只用于少量数据加密(如口令加密,证书加密),无法象DES那样广泛应用于传输加密和大文件加密
有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的
什么是数字证书
是由认证中心(CA)颁发的。
- 证书所有者的信息
- 证书所有者的公钥
- 证书颁发机构的签名 (用机构的私钥(与前面的公钥没关系)制成)
一个标准的X.509数字证书包含以下一些内容:
- 序列号
- 版本
- 证书的有效期 ;
- 签名算法
- 证书使用者的名称及其公钥 的信息。
- 发行机构名称(命名规则一般采用X.500格式)及其用发行机构的私钥制成的签名 ;
数字证书颁发过程:
- 首先用户(服务器)自己产生自己的密钥对(公钥/私钥)
- 只将公钥及部分个人身份信息传送给认证中心CA。
- CA在核实身份后,CA基于收到的公钥给用户生成一个数字证书,该证书包含:
用户的个人信息
他的公钥信息
认证中心的签名信息
他的公钥信息
认证中心的签名信息
- 用户使用自己的数字证书(公钥)进行相关的各种活动(电子商务,网上银行等)
数字证书的实质就是(被CA认证和背书的)公钥
数字证书上面有数字签名,他是由CA自己的密钥生成(和用户的公钥无关), 实际是CA(相当于权威机构)对该公钥的第三方认证
客户用证书也即公钥对数据加密 ,把加密后的数据传给服务器, 服务器见到数字签名后(等于有认可了第三方认证),才去找对应的私钥,对收到的信息解密
总之,数字证书技术是普通不对称加密(公钥/私钥)的权威机构承诺版
什么是CA?
CA(Certificate Authority)————认证中心,专门负责签发和管理数字证书
CA采用PKI(Public Key Infrastructure)公钥架构技术,在PKI技术中,最常用一种算法是RSA算法
目前国内的CA认证中心主要分为区域性CA认证中心和行业性CA认证中心
实际的颁发过程
- 1。机构接受申请者的申请,审核通过,机构为申请者生成密钥对
- 2。机构用申请者的公钥 和申请者的其他个人信息,加上机构用自己密钥生成的签名 ,共同生成一个数字证书
- 3。将证书(公钥+签名)发给申请者
数字证书的使用:
- 客户端 IE支持
- 服务器端,多数服务器软件如apache、Microsoft、Oracle,以及IBM、SUN等公司提供的服务器产品都支持数字证书的应用