非对称密码体制
- 格式:ppt
- 大小:554.00 KB
- 文档页数:10
对称密码体制和⾮对称密码体制⼀、对称加密 (Symmetric Key Encryption)对称加密是最快速、最简单的⼀种加密⽅式,加密(encryption)与解密(decryption)⽤的是同样的密钥(secret key)。
对称加密有很多种算法,由于它效率很⾼,所以被⼴泛使⽤在很多加密协议的核⼼当中。
⾃1977年美国颁布DES(Data Encryption Standard)密码算法作为美国数据加密标准以来,对称密码体制迅速发展,得到了世界各国的关注和普遍应⽤。
对称密码体制从⼯作⽅式上可以分为分组加密和序列密码两⼤类。
对称加密算法的优点:算法公开、计算量⼩、加密速度快、加密效率⾼。
对称加密算法的缺点:交易双⽅都使⽤同样钥匙,安全性得不到保证。
此外,每对⽤户每次使⽤对称加密算法时,都需要使⽤其他⼈不知道的惟⼀钥匙,这会使得发收信双⽅所拥有的钥匙数量呈⼏何级数增长,密钥管理成为⽤户的负担。
对称加密算法在分布式⽹络系统上使⽤较为困难,主要是因为密钥管理困难,使⽤成本较⾼。
⽽与公开密钥加密算法⽐起来,对称加密算法能够提供加密和认证却缺乏了签名功能,使得使⽤范围有所缩⼩。
对称加密通常使⽤的是相对较⼩的密钥,⼀般⼩于256 bit。
因为密钥越⼤,加密越强,但加密与解密的过程越慢。
如果你只⽤1 bit来做这个密钥,那⿊客们可以先试着⽤0来解密,不⾏的话就再⽤1解;但如果你的密钥有1 MB⼤,⿊客们可能永远也⽆法破解,但加密和解密的过程要花费很长的时间。
密钥的⼤⼩既要照顾到安全性,也要照顾到效率,是⼀个trade-off。
分组密码:也叫块加密(block cyphers),⼀次加密明⽂中的⼀个块。
是将明⽂按⼀定的位长分组,明⽂组经过加密运算得到密⽂组,密⽂组经过解密运算(加密运算的逆运算),还原成明⽂组,有 ECB、CBC、CFB、OFB 四种⼯作模式。
序列密码:也叫流加密(stream cyphers),⼀次加密明⽂中的⼀个位。
⾮对称加密算法(RSA、DSA、ECC、DH)⾮对称加密算法 (RSA、DSA、ECC、DH)1.1 概念⾮对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。
公钥和私钥是⼀对,如果⽤公钥对数据加密,那么只能⽤对应的私钥解密。
如果⽤私钥对数据加密,只能⽤对应的公钥进⾏解密。
因为加密和解密⽤的是不同的密钥,所以称为⾮对称加密。
⾮对称加密算法的保密性好,它消除了最终⽤户交换密钥的需要。
但是加解密速度要远远慢于对称加密,在某些极端情况下,甚⾄能⽐对称加密慢上1000倍。
1.2 特点算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对称加密解密的速度快。
对称密码体制中只有⼀种密钥,并且是⾮公开的,如果要解密就得让对⽅知道密钥。
所以保证其安全性就是保证密钥的安全,⽽⾮对称密钥体制有两种密钥,其中⼀个是公开的,这样就可以不需要像对称密码那样传输对⽅的密钥了。
这样安全性就⼤了很多。
1.3 ⼯作原理(1) A 要向 B 发送信息,A 和 B 都要产⽣⼀对⽤于加密和解密的公钥和私钥。
(2) A 的私钥保密,A 的公钥告诉 B;B 的私钥保密,B 的公钥告诉 A。
(3) A 要给 B 发送信息时,A ⽤ B 的公钥加密信息,因为 A 知道 B 的公钥。
(4) A 将这个消息发给 B (已经⽤ B 的公钥加密消息)。
(5) B 收到这个消息后,B ⽤⾃⼰的私钥解密 A 的消息。
其他所有收到这个报⽂的⼈都⽆法解密,因为只有 B 才有 B 的私钥。
1.4 主要算法RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。
使⽤最⼴泛的是 RSA 算法,Elgamal 是另⼀种常⽤的⾮对称加密算法。
1.5 应⽤场景(1) 信息加密收信者是唯⼀能够解开加密信息的⼈,因此收信者⼿⾥的必须是私钥。
发信者⼿⾥的是公钥,其它⼈知道公钥没有关系,因为其它⼈发来的信息对收信者没有意义。
密码基础知识(2)以RSA为例说明加密、解密、签名、验签⼀、RSA加密简介 RSA加密是⼀种⾮对称加密。
是由⼀对密钥来进⾏加解密的过程,分别称为公钥和私钥。
具体查看⼆,公钥加密算法和签名算法我们从公钥加密算法和签名算法的定义出发,⽤⽐较规范的语⾔来描述这⼀算法,以RSA为例。
2.1,RSA公钥加密体制RSA公钥加密体质包含如下3个算法:KeyGen(密钥⽣成算法),Encrypt(加密算法)以及Decrypt(解密算法)。
1)密钥⽣成算法以安全常数作为输⼊,输出⼀个公钥PK,和⼀个私钥SK。
安全常数⽤于确定这个加密算法的安全性有多⾼,⼀般以加密算法使⽤的质数p的⼤⼩有关。
越⼤,质数p⼀般越⼤,保证体制有更⾼的安全性。
在RSA中,密钥⽣成算法如下:算法⾸先随机产⽣两个不同⼤质数p和q,计算N=pq。
随后,算法计算欧拉函数接下来,算法随机选择⼀个⼩于的整数e,并计算e关于的模反元素d。
最后,公钥为PK=(N, e),私钥为SK=(N, d)。
2)加密算法以公钥PK和待加密的消息M作为输⼊,输出密⽂CT。
在RSA中,加密算法如下:算法直接输出密⽂为3)解密算法以私钥SK和密⽂CT作为输⼊,输出消息M。
在RSA中,解密算法如下:算法直接输出明⽂为。
由于e和d在下互逆,因此我们有: 所以,从算法描述中我们也可以看出:公钥⽤于对数据进⾏加密,私钥⽤于对数据进⾏解密。
当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了⼤家才能⽤它来加密数据。
私钥是私有的密钥,谁有这个密钥才能够解密密⽂。
否则⼤家都能看到私钥,就都能解密,那不就乱套了。
2.2,RSA签名体制签名体制同样包含3个算法:KeyGen(密钥⽣成算法),Sign(签名算法),Verify(验证算法)。
1)密钥⽣成算法同样以安全常数作为输⼊,输出⼀个公钥PK和⼀个私钥SK。
在RSA签名中,密钥⽣成算法与加密算法完全相同。
2)签名算法以私钥SK和待签名的消息M作为输⼊,输出签名。