1、对称密钥和非对称密钥

对称密钥

对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。对称密钥加密算法主要包括:DES、3DES、IDEA、FEAL、BLOWFISH等。

   DES .DES是美国国家标准和技术局(NIST)在1977年才有的数据加密标准,文件编号为FIPS PUB46。 算法本身称为DEA(数据加密算法)。DES是最常用的对称加密算法。DES密匙长度为56位,分组长度为64位。
   TDEA(3DES)(三重DEA) 最初是由Tuchman 提出的,在1985年的ANSI标准X9.17中第一次为金融应用进行了标准化。1999年,TDEA合并到数据加密标准中,文献编号问哦FIPS PUB46-3 ,TDEA使用三个密匙,并执行三次DES算法。TDEA密匙长度是168比特。
   IDEA .  IDEA是在1991年由瑞士联邦技术协会的Xuejia Lai和James Massey开发的。IDEA以64位的明文块进行分组,密匙长度为128位,主要采用3种运算:异或、模加、模乘。
  对称密钥是双方使用相同的密钥,在网络条件下就存在相应的不安全性。
   对称加密的要求
  (1)需要强大的加密算法。算法至少应该满足:即使分析人员知道了算法并能访问一些或者更多的密文,也不能译出密文或得出密匙。通常,这个要求以更强硬的形式表达出来,那就是:即使分析人员拥有一些密文和生成密文的明文,也不能译出密文或者发现密匙。即,加密算法应足以抵抗已知明文类型的破译。
  (2)发送方和接收方必须用安全的方式来获得保密密匙的副本,必须保证密匙的安全。如果有人发现了密匙,并知道了算法,则使用此密匙的所有通信便都是可读取的。

从数学角度理解

  以一个具体例子来说明有助于真正理解对称加密这概念。假设A需要把一份明文为M的资料发给B,但是因为怕资料在传输的中途被窃听或者篡改,A用了对称加密法将M经过一个加密函数Fk处理后生成M'加密文,而B接受到加密文后通过事先商定好的Fk再次处理M'便可以还原成明文M,从而达到安全传输信息的目的。
  A处: M' = Fk(M)

  B处: M = Fk(M')


对称加密算法

对称加密算法(asymmetric cryptographic algorithm)又名公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。


asymmetric encoding algorithm

  非 对称加密算法 需要两个密钥: 公开密钥 (publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对 密钥 并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
   非对称加密算法

非对称加密算法

另一方面,甲方可以使用乙方的公钥对机密信息进行加密后再发送给乙方;乙方再用自己的私匙对加密后的信息进行解密。 [1]
  甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
  非对称 密码体制 的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

编辑本段起源

  W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上发表了“ New Direction in Cryptography”文章,提出了“非对称 密码体制 公开密钥密码体制 ”的概念,开创了密码学研究的新方向。

编辑本段工作原理

  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的私钥。

编辑本段主要应用

  非对称加密(公钥加密):指加密和解密使用不同 密钥 的加密算法,也称为公 私钥 加密。假设两个用户要加密交换数据,双方交换 公钥 ,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。
  DSACryptoServiceProvider
   非对称加密算法

非对称加密算法

RSACryptoServiceProvider
  //加密
  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=crypt.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在收到加密消息后,用自己的私钥进行解密从而恢复原始文档。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值