非对称加密算法

资料百科

非对称加密算法是一种密钥的保密方法。

非对称加密算法需要两个密钥:公开密钥(publickey:简称公细进春陈据本钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个来自不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并360百科将公钥公开,需要向甲方发送信息的其他角色(乙叫值穿好影方)使用该密钥(甲方的公钥)对机密信息进行加密因讨低组敌句延船读后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行联哪没土哥案罪加密,同理,乙拉以约矛够须简一这方使用自己的私钥来进行解密

另一方面,甲方可以使用自己的私钥对机密信息进行签名后再发送给乙方;奏氢操值采早志必乙方再用甲方的公钥对甲方发送回来的数据进行验签。

甲方只能用其私钥解密由其公钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制调早板车目呼印额中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密迫通地拿式老升矛千钥,其中一个是公开的,这样就可以不否货工需要像对称密码那样传输对方的密钥了。这样安全性就大了很研移送者损积战义多。

  • 中文名称 非对称加密算法
  • 外文名称 asymmetric cryptographic algorithm
  • 别名 公开密钥加密算法
  • 需要密钥 公开密钥、私有密钥

起源

  W.Diffie和M.Hellman 1976年在IEEE T威减蒸结京干配案候海将rans.on Information刊物上发表了" N来自ew Direction in Cryptography"文章,提出了"非对称密码体制即公开密钥密码体制"的概念,开创了密码学研究的新方向

工作原理

  1.A要向B发送360百科信息,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的私钥。

主要应用

  非对来自称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私绿年农范建倍镇钥解密。如果企业中有n个用户,企360百科业需要生成n对密钥,并分发n个激剂公钥。假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A统我的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,例口局苗座史长第周还可以通过数字签名确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

  DSAC界降ryptoServiceProviderRSACrypto系使威调眼氢故甚吸已渐ServiceProvider

  //加密

  UnicodeEncoding encoding = 兵顶前皮战紧new UnicodeEncoding();

  byte[] PasswordBytes = encoding.GetBytes(password);//将密码转换为字节数组RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();//RSA加密算法,非对称PasswordBytes=crypt.Encrypt(password ,false);//加密字节数组,这是加密后的密码值,放入数据库中的表字段中。

  string key=crypt.ToXmlString(true);//输出密钥为XML格式的字符你矛够换督界呢大串,且包含私钥,开续这个字符串要作为发提数据库表中的一个字段同系刻乐越用户的密码放在一起。

  //解密

  RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();//已随机生成了一个密钥对

  crypt.Clear();//毁掉当前密钥

  crypt.周层地FromXmlString(key)//输入密钥对,key是从数据库表字段中读取的那个XML格式的字符串,即密钥字段PasswordBytes=c怎再答乎放两粮棉赶rypt.Decrypt(password ,false);//解密字节数组,返回原始密码给用户

  上面方法的一个特点是每个用户对应一个密钥对(包含公钥和私钥),它们都是随云数吃判机生成的,所以各不相同。不过缺点也是很明显的,就是裂超史察龙治钢广赵脱料密钥存储在数据库中,如果数据库被攻破密钥就泄漏了。

  还有另外一个方法就是依照上面方法随纪围立地触众宜火除载机生成一个密钥对(包含公钥和风的私钥),通过ToXmlString(true)方法导出,然后把这个XML字符串格式的密钥放到你的Web程序的Web.config文件的AppSetting节点里面,然后通过FromXmlString(key)方法读入密钥,这样就意味着所有的用户密码都用同一个密钥对加密和解密。

主要功能

  非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。

主要算法

  RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。

  使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。

  Elgamal由Taher Elgamal于1985年发明,其基础是DiffieˉHellman密钥交换算法,后者使通信双方能通过公开通信来推导出只有他们知道的秘密密钥值[DiffieˉHellman]。DiffieˉHellman是Whitfield Diffie和Martin Hellman于1976年发明的,被视为第一种 非对称加密算法,DiffieˉHellman 与RSA的不同之处在于,DiffieˉHellman不是加密算法,它只是生成可用作对称密钥的秘密数值。在DiffieˉHellman密钥交换过程中,发送方和接收方分别生成一个秘密的随机数,并根据随机数推导出公开值,然后,双方再交换公开值。DiffieˉHellman算法的基础是具备生成共享密钥的能力。只要交换了公开值,双方就能使用自己的私有数和对方的公开值来生成对称密钥,称为共享密钥,对双方来说,该对称密钥是相同的,可以用于使用对称加密算法加密数据。

  与RSA相比,DiffieˉHellman的优势之一是每次交换密钥时都使用一组新值,而使用RSA算法时,如果攻击者获得了私钥,那么他不仅能解密之前截获的消息,还能解密之后的所有消息。然而,RSA可以通过认证(如使用X.509数字证书)来防止中间人攻击,但Diff ieˉHellman在应对中间人攻击时非常脆弱。

算法区别

  对称加密算法与对称加密算法的区别

  首先,用于消息解密的密钥值与用于消息加密的密钥值不同;

  其次,非对称加密算法比对称加密算法慢数千倍,但在保护通信安全方面,非对称加密算法却具有对称密码难以企及的优势。

  为说明这种优势,使用对称加密算法的例子来强调:

  Alice使用密钥K加密消息并将其发送给Bob,Bob收到加密的消息后,使用密钥K对其解密以恢复原始消息。这里存在一个问题,即Alice如何将用于加密消息的密钥值发送给 Bob?答案是,Alice发送密钥值给Bob时必须通过独立的安全通信信道(即没人能监听到该信道中的通信)。

  这种使用独立安全信道来交换对称加密算法密钥的需求会带来更多问题:

  首先,有独立的安全信道,但是安全信道的带宽有限,不能直接用它发送原始消息。

  其次,Alice和Bob不能确定他们的密钥值可以保持多久而不泄露(即不被其他人知道)以及何时交换新的密钥值

  当然,这些问题不只Alice会遇到,Bob和其他每个人都会遇到,他们都需要交换密钥并处理这些密钥管理问题(事实上,X9.17是一项DES密钥管理ANSI标准[ANSIX9.17])。如果Alice要给数百人发送消息,那么事情将更麻烦,她必须使用不同的密钥值来加密每条消息。例如,要给200个人发送通知,Alice需要加密消息200次,对每个接收方加密一次消息。显然,在这种情况下,使用对称加密算法来进行安全通信的开销相当大。

  非对称加密算法的主要优势就是使用两个而不是一个密钥值:一个密钥值用来加密消息,另一个密钥值用来解密消息。这两个密钥值在同一个过程中生成,称为密钥对。用来加密消息的密钥称为公钥,用来解密消息的密钥称为私钥。用公钥加密的消息只能用与之对应的私钥来解密,私钥除了持有者外无人知道,而公钥却可通过非安全管道来发送或在目录中发布。

  Alice需要通过电子邮件给Bob发送一个机密文档。首先,Bob使用电子邮件将自己的公钥发送给Alice。然后Alice用Bob的公钥对文档加密并通过电子邮件将加密消息发送给Bob。由于任何用Bob 的公钥加密的消息只能用Bob的私钥解密,因此即使窥探者知道Bob的公钥,消息也仍是安全的。Bob在收到加密消息后,用自己的私钥进行解密从而恢复原始文档。

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com