1、数字加密算法简介常见的加密算法分类u对称算法对称算法u非非对称算法对称算法uHashHash算法(散列算法)算法(散列算法)对称加密算法u(也叫私钥加密也叫私钥加密)指加密和解密使用相同密钥的加密算法。指加密和解密使用相同密钥的加密算法。u 或者加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从或者加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。加密密钥中推算出来。u 安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。接收的消息解密,所以密钥的
2、保密性对通信的安全性至关重要。u 优点优点l 算法公开、计算量小、加密速度快、加密效率高u 缺点缺点l 交易双方都使用同样密钥,安全性得不到保证l 每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担常用的对称加密算法uDESDESl DES(Data Encryption Standard数据加密标准)是一种使用密钥加密的块密码 l IBM公司于1975年研究成功并公开发表的,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来u3DES3DESl 3DES(或称
3、为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。l 相当于是对每个数据块应用三次DES加密算法uAESAES(Rijndael)l 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准,Rijndael被选中成为将来的AES(Advanced Encryption Standard)l 高级加密标准算法基于排列和置换运算对称加密算法的比较名称密钥长度密钥长度运算速度运算速度安全性安全性资源消耗资源消耗DES56位较快低中3DES112位或168位慢中高AES
4、128、192、256位快高低AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准DES算法简单模型DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。64bit 密钥64bit 明文/密文Mode(加密/解密)64bit 密文/明文DES 算法函数非对称加密算法u 加密算法需要两个密钥:加密算法需要两个密钥:公开密钥公开密钥和和私有密钥私有密钥两个不同的密钥,所两个不同的密钥,所以这种算法叫作非对称加密以这种算法叫
5、作非对称加密算法算法u 公私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才公私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密解密u 特点:算法强度复杂、安全性依赖于算法与特点:算法强度复杂、安全性依赖于算法与密钥密钥u 优点优点l 密钥管理便于管理,安全性更好u 缺点缺点l 加密和解密花费时间长、速度慢,只适合对少量数据进行加密常见的非对称加密算法uRSARSAl RSA算法的可靠性基于分解极大的整数是很困难的uElGamalElGamall 一种较为常见的加
6、密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系uECCECC(椭圆曲线加密算法(椭圆曲线加密算法)l 最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。RSA算法简介uRSARSA是是19771977年年由由R Ron on R Rivestivest、AdiAdi S Shamirhamir、Leonard Leonard A Adlemandleman一起一起提提出的出
7、的。RSARSA就是他们三人姓氏开头字母拼在一起组成的。就是他们三人姓氏开头字母拼在一起组成的。uRSARSA算法的算法的可靠性基于分解极大的整数是很困难的可靠性基于分解极大的整数是很困难的。只要。只要其钥其钥匙的长度足够长,用匙的长度足够长,用RSARSA加密的信息实际上是不能被解破的。加密的信息实际上是不能被解破的。u RSARSA算法利用两个很大的质数相乘所产生的乘积来加密。这两算法利用两个很大的质数相乘所产生的乘积来加密。这两个质数无论哪一个先与原文件编码相乘,对文件加密,均可由个质数无论哪一个先与原文件编码相乘,对文件加密,均可由另一个质数再相乘来解密另一个质数再相乘来解密。因此。因
8、此将这一对质数称为密钥对将这一对质数称为密钥对(Key(Key Pair)Pair)。RSA算法原理uRSARSA算法的安全性基于数论中大整数分解的困难性算法的安全性基于数论中大整数分解的困难性uRSARSA算法使用了乘方运算。算法使用了乘方运算。u要求:要求:明文M经过加密得到密文C:C=Me mod n 密文C经过解密得到明文M:Cd mod n=(Me mod n)d mod n=Med mod n=M即:必须存在e,d,n,使Med mod n=M成立(可行性不在此证明)n n,e e为公钥,d d为私钥u密钥长度应该介于密钥长度应该介于1024bit1024bit到到2048bit2
9、048bit之间(长度之间(长度768768位目前已被攻位目前已被攻破)破)RSA用于加解密模型User AUser BPub-key A用Pub-key A加密消息M被公钥加密的密文消息M用Pri-key A解密密文消息M公钥暴露于公网中,没关系,它只用于加密密文消息暴露于公网没关系,因为只有私钥可以解密用户User B需要发送私密消息给User A的模型时序图私钥只有自己知道,不需要告诉他人Hash算法u 在密码学中在密码学中,HashHash算法算法的作用主要是用于的作用主要是用于消息消息摘要摘要u 一一种单向算法,可以通过种单向算法,可以通过HashHash算法对目标信息生成一段特定长
10、度的算法对目标信息生成一段特定长度的唯一的唯一的HashHash值,却不能通过这个值,却不能通过这个HashHash值重新获得目标信息。值重新获得目标信息。u HashHash算法常用在不可还原的密码存储、信息完整性校验等算法常用在不可还原的密码存储、信息完整性校验等u 最重要的两条性质,就是最重要的两条性质,就是不可逆不可逆和和无冲突无冲突。u 常用的常用的HashHash算法:算法:l SHA-1(Secure SHA-1(Secure Hash AlgorithmHash Algorithm)l MD5(MD Standards for Message Digest)MD5(MD Sta
11、ndards for Message Digest)Hash算法任意长度的信息固定长度的信息数字签名u 数字签名,即只有信息的发送者才能产生的别人无法伪造的一段数数字签名,即只有信息的发送者才能产生的别人无法伪造的一段数字串字串,这段数字串同时,这段数字串同时也是对信息的发送者发送信息真实性的一个也是对信息的发送者发送信息真实性的一个有效证明有效证明u 数字签名是非对称密钥加密技术与数字摘要技术的应用数字签名是非对称密钥加密技术与数字摘要技术的应用l 签名不是对报文签名不是对报文的原始内容的原始内容进行加密,而是对报文的数字摘要进行进行加密,而是对报文的数字摘要进行加密(因为加密(因为非对称加
12、非对称加解密对解密对较长的数据比较耗费资源)较长的数据比较耗费资源)u 数字签名达到了发送者事后不抵赖报文的签名,接受者不能篡改报数字签名达到了发送者事后不抵赖报文的签名,接受者不能篡改报文内容和伪造对报文的签名的效果文内容和伪造对报文的签名的效果l 发送者事后不抵赖报文的签名:只有发送者的私钥才能签名发送者事后不抵赖报文的签名:只有发送者的私钥才能签名l 接受者不能篡改报文内容和伪造对报文的签名的效果:接受者无法获取发送者的私钥所以无法接受者不能篡改报文内容和伪造对报文的签名的效果:接受者无法获取发送者的私钥所以无法生成发送者的签名生成发送者的签名数字签名的原始模型User A要给User
13、B写一封电子邮件,并使用数字签名证明这封信确实是User A写的如果信件内容想保密的话,还可以加入RSA加密传输User AUser B信件内容M+数字签名S+Pub-KeyA即使信件内容被修改,但是签名无法篡改,因为私钥不会暴露在外对信件内容M进行Hash运算(获取数字摘要H1),然后使用Pri-keyA对数字摘要进行加密得到签名(S)使用Pub-Key A对签名S进行解密,得到数字摘要H1,然后信件内容进行Hash运算,得到数字摘要H2,最后比对H1和H2是否相等风险:复杂情况下,假如User C使用自己的公私钥也给User B发了一封邮件,也声称自己是User A,User B无法通过对
14、比数字摘要区分谁是APKI公钥基础设施(PublicKeyInfrastructure)u PKIPKI采用证书进行公钥管理,通过第三方的可信任机构(认证中心,采用证书进行公钥管理,通过第三方的可信任机构(认证中心,即即CACA),把用户的公钥和用户的其他标识信息捆绑在一起,其中包),把用户的公钥和用户的其他标识信息捆绑在一起,其中包括用户名和电子邮件地址等信息,以在括用户名和电子邮件地址等信息,以在InternetInternet网上验证用户的身份。网上验证用户的身份。u 是网络安全建设的基础与核心,是电子商务安全实施的基本保障是网络安全建设的基础与核心,是电子商务安全实施的基本保障u 基于
15、基于PKIPKI公钥基础设施,数字证书认证技术采用了加密传输和数字签公钥基础设施,数字证书认证技术采用了加密传输和数字签名,能够保证网络通信双方的身份信息的真实有效性,因此在国内名,能够保证网络通信双方的身份信息的真实有效性,因此在国内外电子商务中,都得到了广泛的应用。外电子商务中,都得到了广泛的应用。数字证书的使用原理User AUser BUser A的数字证书CertACAPub-key A+其他身份信息CA使用自己的私钥对UserA提供的信息进行签名,生成证书CertAUser A的数字证书CertAUser B向CA主动请求获取Pub-Key CA用 Pub-key CA验证Cert
16、 A的合法性,并获取Pub-key A建立在身份明确的基础上的通信证明User A确实是User A的过程,引入第三方权威机构CA(Certification Center)BrowerWebsite发送支持的加密规则1.选择加密算法与Hash算法2.提供Website证书Cert1返回证书Cert1(包含公钥Puk-W等)1.验证证书Cert1的合法性2.生成随机对称密钥K1,并用Puk-W加密3.产生随机数R1并计算签名S1(可选)发送K1密文+R1+S1+Brower证书Cert21.验证Cert2和S1合法性2.使用Prk-W解密出K1明文1.通信双方确定了对方的合法身份2.并确立了后续通信的会话密钥K13.后续的业务通信都是用K1加密报文HTTPS一般使用的加密与HASH算法如下:非对称加密算法:RSA,DSA/DSS对称加密算法:AES,RC4,3DESHASH算法:MD5,SHA1,SHA256数字加密算法在https中应用的简化模型