• 关于

    对称加密解密

    的搜索结果

回答

RAS:不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。 DES算法 DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。 DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。 DES工作的基本原理是,其入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。

小哇 2019-12-02 01:26:22 0 浏览量 回答数 0

回答

RAS:不对称加密算法不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加

寒凝雪 2019-12-02 01:26:23 0 浏览量 回答数 0

回答

RAS:不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加

马铭芳 2019-12-02 01:27:13 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

RAS:不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。 DES算法

晚来风急 2019-12-02 01:26:47 0 浏览量 回答数 0

回答

什么是非对称加密。所谓的非对称加密,就是指加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。

小旋风柴进 2019-12-02 01:26:25 0 浏览量 回答数 0

回答

不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。

琴瑟 2019-12-02 01:26:21 0 浏览量 回答数 0

回答

对称加密算法 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。 传统的DES由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年RSA数据安全公司发起了一项“DES挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。 AES是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替DES在各个领域中得到广泛应用。AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。假设可以制造一部可以在1秒内破解DES密码的机器,那么使用这台机器破解一个128位AES密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的AES即将作为新标准取代DES。 不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。 参考资料: http://www.williamlong.info/archives/500.html

聚小编 2019-12-02 01:26:41 0 浏览量 回答数 0

回答

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。 传统的DES由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年RSA数据安全公司发起了一项“DES挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。 AES是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替DES在各个领域中得到广泛应用。AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。假设可以制造一部可以在1秒内破解DES密码的机器,那么使用这台机器破解一个128位AES密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的AES即将作为新标准取代DES。 l 不对称加密算法 不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。

晚来风急 2019-12-02 01:26:41 0 浏览量 回答数 0

回答

(一)对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。 2000年10月2日,美国国家标准与技术研究所(NIST--American National Institute of Standards and Technology)选择了Rijndael算法作为新的高级加密标准(AES--Advanced Encryption Standard)。.NET中包含了Rijndael算法,类名叫RijndaelManaged,下面举个例子。 加密过程: private string myData = "hello"; private string myPassword = "OpenSesame"; private byte[] cipherText; private byte[] salt = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0 }; private void mnuSymmetricEncryption_Click(object sender, RoutedEventArgs e) { var key = new Rfc2898DeriveBytes(myPassword, salt); // Encrypt the data. var algorithm = new RijndaelManaged(); algorithm.Key = key.GetBytes(16); algorithm.IV = key.GetBytes(16); var sourceBytes = new System.Text.UnicodeEncoding().GetBytes(myData); using (var sourceStream = new MemoryStream(sourceBytes)) using (var destinationStream = new MemoryStream()) using (var crypto = new CryptoStream(sourceStream, algorithm.CreateEncryptor(), CryptoStreamMode.Read)) { moveBytes(crypto, destinationStream); cipherText = destinationStream.ToArray(); } MessageBox.Show(String.Format("Data:{0}{1}Encrypted and Encoded:{2}", myData, Environment.NewLine, Convert.ToBase64String(cipherText))); } private void moveBytes(Stream source, Stream dest) { byte[] bytes = new byte[2048]; var count = source.Read(bytes, 0, bytes.Length); while (0 != count) { dest.Write(bytes, 0, count); count = source.Read(bytes, 0, bytes.Length); } } 解密过程: private void mnuSymmetricDecryption_Click(object sender, RoutedEventArgs e) { if (cipherText == null) { MessageBox.Show("Encrypt Data First!"); return; } var key = new Rfc2898DeriveBytes(myPassword, salt); // Try to decrypt, thus showing it can be round-tripped. var algorithm = new RijndaelManaged(); algorithm.Key = key.GetBytes(16); algorithm.IV = key.GetBytes(16); using (var sourceStream = new MemoryStream(cipherText)) using (var destinationStream = new MemoryStream()) using (var crypto = new CryptoStream(sourceStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read)) { moveBytes(crypto, destinationStream); var decryptedBytes = destinationStream.ToArray(); var decryptedMessage = new UnicodeEncoding().GetString( decryptedBytes); MessageBox.Show(decryptedMessage); } } 对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。 (二)非对称加密(Asymmetric Cryptography) 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。 非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。 目前最常用的非对称加密算法是RSA算法,是Rivest, Shamir, 和Adleman于1978年发明,他们那时都是在MIT。.NET中也有RSA算法,请看下面的例子: 加密过程: private byte[] rsaCipherText; private void mnuAsymmetricEncryption_Click(object sender, RoutedEventArgs e) { var rsa = 1; // Encrypt the data. var cspParms = new CspParameters(rsa); cspParms.Flags = CspProviderFlags.UseMachineKeyStore; cspParms.KeyContainerName = "My Keys"; var algorithm = new RSACryptoServiceProvider(cspParms); var sourceBytes = new UnicodeEncoding().GetBytes(myData); rsaCipherText = algorithm.Encrypt(sourceBytes, true); MessageBox.Show(String.Format("Data: {0}{1}Encrypted and Encoded: {2}", myData, Environment.NewLine, Convert.ToBase64String(rsaCipherText))); } 解密过程: private void mnuAsymmetricDecryption_Click(object sender, RoutedEventArgs e) { if(rsaCipherText==null) { MessageBox.Show("Encrypt First!"); return; } var rsa = 1; // decrypt the data. var cspParms = new CspParameters(rsa); cspParms.Flags = CspProviderFlags.UseMachineKeyStore; cspParms.KeyContainerName = "My Keys"; var algorithm = new RSACryptoServiceProvider(cspParms); var unencrypted = algorithm.Decrypt(rsaCipherText, true); MessageBox.Show(new UnicodeEncoding().GetString(unencrypted)); } 虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子: (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 (3) 银行将公钥发送给Alice。 (4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。 (5) Alice的浏览器将加密后的对称密钥发送给银行。 (6) 银行使用私钥解密得到Alice浏览器的对称密钥。 (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。 (三)总结 (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

青衫无名 2019-12-02 01:26:41 0 浏览量 回答数 0

回答

  RSA和DES算法的优缺点:   DES算法:密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。 RSA算法:加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。密钥尺寸大,加解密速度慢,一般用来加密少量数据,比如DES的密钥。   DES算法定义:是对称算法,加密的密钥和解密的密钥是一样的. RSA算法定义:非对称算法, 加密密钥和解密密钥不一样,一般加密密钥称为私钥,解密密钥称为公钥,私钥加密后只能用公钥解密, 当然也可以用公钥加密,用私钥解密.

聚小编 2019-12-02 01:26:30 0 浏览量 回答数 0

回答

des算法是对称算法,加密的密钥和解密的密钥是一样的. rsa算法是非对称算法, 加密密钥和解密密钥不一样,一般加密密钥称为私钥,解密密钥称为公钥,私钥加密后只能用公钥解密, 当然也可以用公钥加密,用私钥解密.

聚小编 2019-12-02 01:26:21 0 浏览量 回答数 0

回答

des算法是对称算法,加密的密钥和解密的密钥是一样的. rsa算法是非对称算法, 加密密钥和解密密钥不一样,一般加密密钥称为私钥,解密密钥称为公钥,私钥加密后只能用公钥解密, 当然也可以用公钥加密,用私钥解密.

一键天涯 2019-12-02 01:27:11 0 浏览量 回答数 0

回答

这种情况还是用非对称加密(比如RSA)吧。一般非对称加密的密钥分为私钥和公钥,私钥自己保存,公钥公开分发。非对称加密算法的特征是:私钥加密的数据只有公钥能解密,反之亦然。服务器保留私钥,发布加密后的数据;android客户端保留公钥,可以解密服务器传过来的数据(这样,即使别人反编译了你的App,得到了公钥也没有关系)。其实HTTPS也是这个原理(准确的说HTTPS验证身份的时候是非对称加密,正常通讯时用的是对称加密:非对称加密太耗费资源)。

蛮大人123 2019-12-02 01:57:23 0 浏览量 回答数 0

回答

HTTPS 是通过了 HTTP 来传输信息,但是信息通过 TLS 协议进行了加密。 TLS 协议位于传输层之上,应用层之下。首次进行 TLS 协议传输需要两个 RTT ,接下来可以通过 Session Resumption 减少到一个 RTT。 在 TLS 中使用了两种加密技术,分别为:对称加密和非对称加密。 对称加密: 对称加密就是两边拥有相同的秘钥,两边都知道如何将密文加密解密。 这种加密方式固然很好,但是问题就在于如何让双方知道秘钥。因为传输数据都是走的网络,如果将秘钥通过网络的方式传递的话,一旦秘钥被截获就没有加密的意义的。 非对称加密: 有公钥私钥之分,公钥所有人都可以知道,可以将数据用公钥加密,但是将数据解密必须使用私钥解密,私钥只有分发公钥的一方才知道。 这种加密方式就可以完美解决对称加密存在的问题。假设现在两端需要使用对称加密,那么在这之前,可以先使用非对称加密交换秘钥。 简单流程如下:首先服务端将公钥公布出去,那么客户端也就知道公钥了。接下来客户端创建一个秘钥,然后通过公钥加密并发送给服务端,服务端接收到密文以后通过私钥解密出正确的秘钥,这时候两端就都知道秘钥是什么了。 TLS 握手过程如下图: 客户端发送一个随机值以及需要的协议和加密方式。 服务端收到客户端的随机值,自己也产生一个随机值,并根据客户端需求的协议和加密方式来使用对应的方式,并且发送自己的证书(如果需要验证客户端证书需要说明) 客户端收到服务端的证书并验证是否有效,验证通过会再生成一个随机值,通过服务端证书的公钥去加密这个随机值并发送给服务端,如果服务端需要验证客户端证书的话会附带证书 服务端收到加密过的随机值并使用私钥解密获得第三个随机值,这时候两端都拥有了三个随机值,可以通过这三个随机值按照之前约定的加密方式生成密钥,接下来的通信就可以通过该密钥来加密解密 通过以上步骤可知,在 TLS 握手阶段,两端使用非对称加密的方式来通信,但是因为非对称加密损耗的性能比对称加密大,所以在正式传输数据时,两端使用对称加密的方式通信。 PS:以上说明的都是 TLS 1.2 协议的握手情况,在 1.3 协议中,首次建立连接只需要一个 RTT,后面恢复连接不需要 RTT 了。

前端问答 2019-12-30 12:22:07 0 浏览量 回答数 0

回答

加密算法 加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术的要点是加密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类算法。 对称加密算法 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES和IDEA等。美国国家标准局倡导的AES即将作为新标准取代DES。 不对称加密算法不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。 不可逆加密算法 不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。 加密技术 加密算法是加密技术的基础,任何一种成熟的加密技术都是建立多种加密算法组合,或者加密算法和其他应用软件有机结合的基础之上的。下面我们介绍几种在计算机网络应用领域广泛应用的加密技术。 非否认(Non-repudiation)技术 该技术的核心是不对称加密算法的公钥技术,通过产生一个与用户认证数据有关的数字签名来完成。当用户执行某一交易时,这种签名能够保证用户今后无法否认该交易发生的事实。由于非否认技术的操作过程简单,而且直接包含在用户的某类正常的电子交易中,因而成为当前用户进行电子商务、取得商务信任的重要保证。 PGP(Pretty Good Privacy)技术 PGP技术是一个基于不对称加密算法RSA公钥体系的邮件加密技术,也是一种操作简单、使用方便、普及程度较高的加密软件。PGP技术不但可以对电子邮件加密,防止非授权者阅读信件;还能对电子邮件附加数字签名,使收信人能明确了解发信人的真实身份;也可以在不需要通过任何保密渠道传递密钥的情况下,使人们安全地进行保密通信。PGP技术创造性地把RSA不对称加密算法的方便性和传统加密体系结合起来,在数字签名和密钥认证管理机制方面采用了无缝结合的巧妙设计,使其几乎成为最为流行的公钥加密软件包。 数字签名(Digital Signature)技术 数字签名技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证。在公钥与私钥管理方面,数字签名应用与加密邮件PGP技术正好相反。在数字签名应用中,发送者的公钥可以很方便地得到,但他的私钥则需要严格保密。 PKI(Public Key Infrastructure)技术 PKI技术是一种以不对称加密技术为核心、可以为网络提供安全服务的公钥基础设施。PKI技术最初主要应用在Internet环境中,为复杂的互联网系统提供统一的身份认证、数据加密和完整性保障机制。由于PKI技术在网络安全领域所表现出的巨大优势,因而受到银行、证券、政府等核心应用系统的青睐。PKI技术既是信息安全技术的核心,也是电子商务的关键和基础技术。由于通过网络进行的电子商务、电子政务等活动缺少物理接触,因而使得利用电子方式验证信任关系变得至关重要,PKI技术恰好能够有效解决电子商务应用中的机密性、真实性、完整性、不可否认性和存取控制等安全问题。一个实用的PKI体系还必须充分考虑互操作性和可扩展性。PKI体系所包含的认证中心(CA)、注册中心(RA)、策略管理、密钥与证书管理、密钥备份与恢复、撤销系统等功能模块应该有机地结合在一起。 加密的未来趋势 尽管双钥密码体制比单钥密码体制更为可靠,但由于计算过于复杂,双钥密码体制在进行大信息量通信时,加密速率仅为单钥体制的1/100,甚至是 1/1000。正是由于不同体制的加密算法各有所长,所以在今后相当长的一段时期内,各类加密体制将会共同发展。而在由IBM等公司于1996年联合推出的用于电子商务的协议标准SET(Secure Electronic Transaction)中和1992年由多国联合开发的PGP技术中,均采用了包含单钥密码、双钥密码、单向杂凑算法和随机数生成算法在内的混合密码系统的动向来看,这似乎从一个侧面展示了今后密码技术应用的未来。 在单钥密码领域,一次一密被认为是最为可靠的机制,但是由于流密码体制中的密钥流生成器在算法上未能突破有限循环,故一直未被广泛应用。如果找到一个在算法上接近无限循环的密钥流生成器,该体制将会有一个质的飞跃。近年来,混沌学理论的研究给在这一方向产生突破带来了曙光。此外,充满生气的量子密码被认为是一个潜在的发展方向,因为它是基于光学和量子力学理论的。该理论对于在光纤通信中加强信息安全、对付拥有量子计算能力的破译无疑是一种理想的解决方法。 由于电子商务等民用系统的应用需求,认证加密算法也将有较大发展。此外,在传统密码体制中,还将会产生类似于IDEA这样的新成员,新成员的一个主要特征就是在算法上有创新和突破,而不仅仅是对传统算法进行修正或改进。密码学是一个正在不断发展的年轻学科,任何未被认识的加/解密机制都有可能在其中占有一席之地。 目前,对信息系统或电子邮件的安全问题,还没有一个非常有效的解决方案,其主要原因是由于互联网固有的异构性,没有一个单一的信任机构可以满足互联网全程异构性的所有需要,也没有一个单一的协议能够适用于互联网全程异构性的所有情况。解决的办法只有依靠软件代理了,即采用软件代理来自动管理用户所持有的证书(即用户所属的信任结构)以及用户所有的行为。每当用户要发送一则消息或一封电子邮件时,代理就会自动与对方的代理协商,找出一个共同信任的机构或一个通用协议来进行通信。在互联网环境中,下一代的安全信息系统会自动为用户发送加密邮件,同样当用户要向某人发送电子邮件时,用户的本地代理首先将与对方的代理交互,协商一个适合双方的认证机构。当然,电子邮件也需要不同的技术支持,因为电子邮件不是端到端的通信,而是通过多个中间机构把电子邮件分程传递到各自的通信机器上,最后到达目的地。

一键天涯 2019-12-02 01:26:21 0 浏览量 回答数 0

回答

一般来说,加密分为两个部分,一个是非对称加密,一个是对称加密,使用对称加密加密正文信息,使用非对称加密加密对称加密的密钥,然后发送加密数据(消息摘要和数字签名就不讨论了),这是正规的数据加密策略,对称加密默认支持大数据分段加密策略,你只需要从接口中完成加密即可,而且对称加密速度比非对称加密快很多,如果你需要使用这个策略建议使用AES。如果你不愿意使用对称加密,只愿意使用AES加密,那你就必须丧失速度了,而且自己处理分段加密,因为RSA加密通常是117个字节就要分段(这个长度可能和密钥长度有关,我是用的接口是117),你需要自己把数据变成N个117字节的数据段来完成加密,解密也需要自己完成字节拼装。

51干警网 2019-12-02 01:34:17 0 浏览量 回答数 0

回答

国内防泄密系统常用的加密算法有三种,IDEA 算法、RSA算法、AES算法,加密强度来讲,AES算法加密强度最高。IDEA算法IDEA算法属于对称加密算法,对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性。 目前最常见的对称加密算法为数据加密标准DES算法,但传统的DES算法由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。欧洲数据加密标准IDEA等,目前加密强度最高的对称加密算法是128位的DES加密算法。对称加密算法的主要优点是加密和解密速度快,加密效率高,且算法公开.缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于应用在网络开放的环境中。 由于加密算法是公开的,所以被破解的风险比较高。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高、被破解风险高。RSA算法RSA算法是非对称加密算法,非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。对称加密算法、非对称加密算法和不可逆加密算法可以分别应用于数据加密、身份认证和数据安全传输。RSA算法是建立在大数分解和素数检测的理论基础上。RSA密钥的产生过程:独立地选取两个互异的大素数p和q(保密)。计算n=p×q(公开),则ф(n)=(p-1)*(q-1)(保密)随机选取整数e,使得1<e<ф(n)并且gcd(ф(n),e)=1(公开)计算d,d=e-1mod(ф(n))保密。RSA私有密钥由{d,n},公开密钥由{e,n}组成RSA的加密/解密过程:首先把要求加密的明文信息M数字化,分块;然后,加密过程:C=Me(mod n)解密过程:M=Cd(mod n)非对称密钥加密体制的优点与缺点:解决了密钥管理问题,通过特有的密钥发放体制,使得当用户数大幅度增加时,密钥也不会向外扩散;由于密钥已事先分配,不需要在通信过程中传输密钥,安全性大大提高;具有很高的加密强度。与对称加密体制相比,非对称加密体制的加密、解密的速度较慢、被破解风险较小。AES加密算法AES加密算法属于对称加密算法, 对称加密算法的特征是加密过程中需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据需要密钥才能解密。1997年4月15日,美国国家标准和技术研究所NIST发起了征集AES算法的活动,并成立了专门的AES工作组,目的是为了确定一个非保密的,公开披露的,全球免费使用的分组密码算,法用于保护下一世纪政府的敏感信息,并希望成为秘密和公开部门的数据加密标准.1997年9月12日,在联邦登记处公布了征集AES候选算法的通告.AES的基本要求是比三重DES快而且至少和三重DES一样安全,分组长度128比特,密钥长度为128/192/256比特.1998年8月20日,NIST召开了第一次候选大会,并公布了15个候选算法.1999年3月22日举行了第二次AES候选会议,从中选出5个.AES将成为新的公开的联邦信息处理标准(FIPS--Federal Information Processing Standard),用于美国政府组织保护敏感信息的一种特殊的加密算法.美国国家标准技术研究所(NIST)预测AES会被广泛地应用于组织,学院及个人.入选AES的五种算法是MARS,RC6,Serpent,Twofish,Rijndael.2000年10月2日,美国商务部部长NormanY. Mineta宣布,经过世界著名密码专家之间的竞争,Rijndael数据加密算法最终获胜.为此而在全球范围内角逐了数年的激烈竞争宣告结束.这一新加密标准的问世将取代DES、RSA数据加密标准,成为21世纪保护国家敏感信息的高级算法。与DES、RSA加密算法相比,AES加密算法的优点为加解密的速度更快、加密强度最高、且不占用硬件资源。 随着信息化的高速发展,人们对信息安全的需求接踵而至,人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患。市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、杀毒软件到多元化的信息安全防护、从传统的外部网络防护到内网安全、主机安全等。传统数据加密技术分析信息安全传统的老三样(防火墙、入侵检测、防病毒)成为了企事业单位网络建设的基础架构,已经远远不能满足用户的安全需求,新型的安全防护手段逐步成为了信息安全发展的主力军。例如主机监控、慧点科技文档加密等技术。在新型安全产品的队列中,主机监控主要采用外围围追堵截的技术方案,虽然对信息安全有一定的提高,但是因为产品自身依赖于操作系统,对数据自身没有有效的安全防护,所以存在着诸多安全漏洞,例如:最基础的手段拆拔硬盘、winpe光盘引导、USB引导等方式即可将数据盗走,而且不留任何痕迹;此技术更多的可以理解为企业资产管理软件,单一的产品无法满足用户对信息安全的要求。文档加密是现今信息安全防护的主力军,采用透明加解密技术,对数据进行强制加密,不改变用户原有的使用习惯;此技术对数据自身加密,不管是脱离操作系统,还是非法脱离安全环境,用户数据自身都是安全的,对环境的依赖性比较小。市面上的文档加密主要的技术分为磁盘加密、应用层加密、驱动级加密等几种技术,应用层加密因为对应用程序的依赖性比较强,存在诸多兼容性和二次开发的问题,逐步被各信息安全厂商所淘汰。当今主流的两大数据加密技术我们所能常见到的主要就是磁盘加密和驱动级解密技术:全盘加密技术是主要是对磁盘进行全盘加密,并且采用主机监控、防水墙等其他防护手段进行整体防护,磁盘加密主要为用户提供一个安全的运行环境,数据自身未进行加密,操作系统一旦启动完毕,数据自身在硬盘上以明文形式存在,主要靠防水墙的围追堵截等方式进行保护。磁盘加密技术的主要弊端是对磁盘进行加密的时间周期较长,造成项目的实施周期也较长,用户一般无法忍耐;磁盘加密技术是对磁盘进行全盘加密,一旦操作系统出现问题。需要对数据进行恢复也是一件让用户比较头痛的事情,正常一块500G的硬盘解密一次所需时间需要3-4个小时;磁盘加密技术相对来讲真正要做到全盘加密还不是非常成熟,尤其是对系统盘的保护,至今市面上的主要做法是对系统盘不做加密防护,而是采用外围技术进行安全访问控制,大家知道操作系统的版本不断升级,微软自身的安全机制越来越高,人们对系统的控制力度越来越低,尤其黑客技术层层攀高,一旦防护体系被打破,所有一切将暴露无疑。另外,磁盘加密技术是对全盘的信息进行安全管控,其中包括系统文件,对系统的效率性能将大大影响。驱动级技术是当今信息加密的主流技术,采用进程+后缀的方式进行安全防护,用户可以根据企事业单位的实际情况灵活配置,对重要的数据进行强制加密,大大提高了系统的运行效率。驱动级加密技术与磁盘加密技术的最大区别就是驱动级技术会对用户的数据自身进行保护,驱动级加密采用透明加解密技术,用户感觉不到系统的存在,不改变用户的原有操作,数据一旦脱离安全环境,用户将无法使用,有效提高了数据的安全性;另外驱动级加密技术比磁盘加密技术管理可以更加细粒度,有效实现数据的全生命周期管理,可以控制文件的使用时间、次数、复制、截屏、录像等操作,并且可以对文件的内部进行细粒度的授权管理和数据的外出访问控制,做到数据的全方位管理。驱动级加密技术在给用户的数据带来安全的同时,也给用户的使用便利性带来一定的问题,驱动级加密采用进程加密技术,对同类文件进行全部加密,无法有效区别个人文件与企业文件数据的分类管理,个人电脑与企业办公的并行运行等问题。

聚小编 2019-12-02 01:26:37 0 浏览量 回答数 0

回答

RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。 它的原理较为简单,假设有消息发送方A和消息接收方B,通过下面的几个步骤,就可以完成消息的加密传递: 消息发送方A在本地构建密钥对,公钥和私钥; 消息发送方A将产生的公钥发送给消息接收方B; B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信; 反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。 由于公钥是消息发送方A暴露给消息接收方B的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄漏,则A通过私钥加密的数据就可能被解密。 如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。 当然,这种方式可能存在数据传递被模拟的隐患,但可以通过数字签名等技术进行安全性的进一步提升。由于存在多次的非对称加解密,这种方式带来的效率问题也更加严重。

小旋风柴进 2019-12-02 01:26:20 0 浏览量 回答数 0

回答

呵呵,你的问题意思不通,多了个字吧。。应该是:数字信封技术为什么要用对称密码DES加密数据,用非称加解密RSA算法加密密钥。 非对称加密算法对大容量数据加密时,运算速度非常慢,比对称算法差好几个数量级。。 所以用对称算法加密大容量数据,非对称算法加密密钥。

管理贝贝 2019-12-02 01:26:54 0 浏览量 回答数 0

回答

非对称加密。 密钥不是一个,而是一对,A和B。使用A加密的密文只能使用B来解密。使用B加密的密文只能使用A来解密。选择其中的一个作为公钥,另一个作为私钥,可以用于许多非对称加密应用场合。比如电子证书、电子指纹、电子签名、握手协议等传统对称加密手段无法实现的功能。 其核心是基于“大数的分解质因数非常困难”这个数学难题。使得在得知A的人无法推算出B,B也无法推算出A。

云篆 2019-12-02 01:26:27 0 浏览量 回答数 0

回答

OSS 提供服务端加密和客户端加密。 服务器端加密是将数据保存到数据中心的磁盘之前进行加密,并且在下载文件时自动进行解密。OSS 提供两种服务器端加密方式: 使用KMS托管密钥进行加解密(SSE-KMS) 上传文件时,可以使用指定的CMK ID或者默认KMS托管的CMK进行加解密操作。这种场景适合于大量的数据加解密。数据无需通过网络发送到KMS服务端进行加解密,这是一种低成本的加解密方式。 注意 使用KMS密钥功能时会产生少量的KMS密钥API调用费用,费用详情请参考KMS计费标准。 使用OSS完全托管加密(SSE-OSS) 基于OSS完全托管的加密方式,是Object的一种属性。OSS服务器端加密使用AES256加密每个对象,并为每个对象使用不同的密钥进行加密,作为额外的保护,它将使用定期轮转的主密钥对加密密钥本身进行加密。该方式适合于批量数据的加解密。 客户端加密:客户端加密是指将数据发送到OSS之前在用户本地进行加密,对于数据加密密钥的使用,目前支持如下两种方式: 使用KMS托管用户主密钥 当使用KMS托管用户主密钥用于客户端数据加密时,无需向OSS加密客户端提供任何加密密钥。只需要在上传对象时指定KMS用户主密钥ID(也就是CMK ID)。 使用用户自主管理密钥 使用用户自主管理密钥,需要用户自主生成并保管加密密钥。当用户本地客户端加密时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。

剑曼红尘 2020-03-26 17:48:19 0 浏览量 回答数 0

回答

简单的说,是一个非对称加解密算法。 基于大数分解几乎无解的这一目前公认结论,选择两个大素数,经过并不复杂的运算生成一个密钥对,一个公开public key,一个私有private key,RSA就是基于这么一对密钥的加解密算法,如果用其中一个来加密,就只能用另外一个来解密。 因为大数分解非常困难,根据public key是无法在可接受的代价范围内推算出pravate key,所以目前rsa是安全体系建设中用的最多的非对称加解密算法,如SSL协议,数字证书认证和签名等。 具体的用法: public key加密和pravate key解密主要用在定向发送,比如给特定的人发邮件,不希望被别人看到,就可以用其public key加密,邮件的收方用自己的private key才能解密,其他人即使截获了邮件也是无法解密的。 private key加密和public key解密主要用在数字签名和验证,因为只有合法用户才会拥有private key,用private key加密的生成的签名就无法伪造,public key就可用来验证签名,这种用法主要出现在身份的合法性验证、通讯的不可否认性等场合。

一键天涯 2019-12-02 01:26:25 0 浏览量 回答数 0

回答

数字签名算法分析与Hash签名 序:这篇文章我用了近一周的时间完成,其中涉及到的RSA算法已经在上一篇《公钥密码体系》中详细的介绍过,目前数字签名中人们使用很多的还是512位与1024位的RSA算法。 摘要: 数字签字和认证机构是电子商务的核心技术。数字签名作为目前Internet中电子商务重要的技术,不断地进行改进,标准化。本文从数字签名的意义出发,详细介绍了数字签名中涉及到的内容与算法,并自行结合进行改进。 关键词:Internet 公钥加密 Hash函数 电子商务 加密 数字签名 数字签名简介 我们对加解密算法已经有了一定理解,可以进一步讨论"数字签名"(注意不要与数字认证混淆)的问题了,即如何给一个计算机文件进行签字。数字签字可以用对称算法实现,也可以用公钥算法实现。但前者除了文件签字者和文件接受者双方,还需要第三方认证,较麻烦;通过公钥加密算法的实现方法,由于用秘密密钥加密的文件,需要靠公开密钥来解密,因此这可以作为数字签名,签名者用秘密密钥加密一个签名(可以包括姓名、证件号码、短信息等信息),接收人可以用公开的、自己的公开密钥来解密,如果成功,就能确保信息来自该公开密钥的所有人。 公钥密码体制实现数字签名的基本原理很简单,假设A要发送一个电子文件给B,A、B双方只需经过下面三个步骤即可: 1. A用其私钥加密文件,这便是签字过程 2. A将加密的文件送到B 3. B用A的公钥解开A送来的文件 这样的签名方法是符合可靠性原则的。即: 签字是可以被确认的, 签字是无法被伪造的, 签字是无法重复使用的, 文件被签字以后是无法被篡改的, 签字具有无可否认性, 数字签名就是通过一个单向函数对要传送的报文进行处理得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。用这几个字符串来代替书写签名或印章,起到与书写签名或印章同样的法律效用。国际社会已开始制定相应的法律、法规,把数字签名作为执法的依据。 数字签名的实现方法 实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA Data Security公司的PKCS(Public Key Cryptography Standards)、DSA(Digital Signature Algorithm)、x.509、PGP(Pretty Good Privacy)。1994年美国标准与技术协会公布了数字签名标准(DSS)而使公钥加密技术广泛应用。同时应用散列算法(Hash)也是实现数字签名的一种方法。 非对称密钥密码算法进行数字签名 算法的含义: 非对称密钥密码算法使用两个密钥:公开密钥和私有密钥,分别用于对数据的加密和解密,即如果用公开密钥对数据进行加密,只有用对应的私有密钥才能进行解密;如果用私有密钥对数据进行加密,则只有用对应的公开密钥才能解密。 使用公钥密码算法进行数字签名通用的加密标准有: RSA,DSA,Diffie-Hellman等。 签名和验证过程: 发送方(甲)首先用公开的单向函数对报文进行一次变换,得到数字签名,然后利用私有密钥对数字签名进行加密后附在报文之后一同发出。 接收方(乙)用发送方的公开密钥对数字签名进行解密交换,得到一个数字签名的明文。发送方的公钥可以由一个可信赖的技术管理机构即认证中心(CA)发布的。 ------------------------------------------------ 数字信封 这是去年十月份完成的一个练习程序: 一.原理: 用快速的对称密钥加密大量数据,然后仅仅对对称密钥作RSA加密,将对称加密后的密文和RSA加密的对称密钥发给接收方。 有效解决了: 1. PKCS#1填充方案的长度限制问题 RSA密钥长度(bit) 加密上限(byte) 1024 117 2048 245 2. RSA加密大量数据的耗时问题 二.开发: 数字信封原理简单,而且综合应用了上面提到的对称加密、非对称加密算法。对于加密算法的学习,数字信封程序是个不错的入门题材。 (1)库文件概要: clsAES.dll DESCRIPTION:AES对称算法库文件 NAMESPACE:nsAES CLASS:clsAES MEMBERS: Methods: public byte[] AESdecrypt ( System.String encryptedtext ) public byte[] AESencrypt ( System.String plaintext ) public void GenKeyIV ( ) Constructors: public clsAES ( byte[] key , byte[] IV ) public clsAES ( ) Property variables: public byte[] key public byte[] IV AESdecrypt 和AESencrypt是实现对称加密解密的方法; GenKeyIV方法生成对称密钥的密钥值和初始向量(IV:Initial Vector); 成员变量key和IV存放对称密钥的密钥值和初始向量 csRSA.dll DESCRIPTION:RSA非对称算法库文件 NAMESPACE:nsRSA CLASS:clsRSA MEMBERS: Methods: public string strEnc(System.String strToEncrypt) public string strDec(System.String strToDecrypt) public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) Constructors: public clsRSA ( ) Variable: RSACryptoServiceProvider RSA strEnc 和strDec是实现非对称加密和解密的方法,由RSA提供加密和解密的服务。 RSAEncrypt和RSADecrypt也是实现非对称加密解密的方法,必须通过RSAKeyInfo传入RSA密钥参数。 成员变量RSA保存RSA加密服务的一个实例。 clsRsaKeyMgr.dll( RSA Key Management) DESCRIPTION:RSA非对称算法密钥管理库文件 NAMESPACE:nsRsaKeyMgr CLASS:clsRsaKeyMgr MEMBERS: Methods: public void CreatePublicKeyFile(System.String ContainerName, System.String OutputFileName) public void CreatePrivateKeyFile(System.String ContainerName, System.String OutputFileName) public RSAParameters GetPublicKeyFromFile(System.String InputFileName) public RSAParameters GetPrivateKeyFromFile(System.String InputFileName) public void GenKey_SaveInContainer(System.String ContainerName) public string GetKeyFromContainer(System.String ContainerName,bool IsFullKey) public void DeleteKeyFromContainer(System.String ContainerName) Constructors: public clsRsaKeyMgr ( ) CreatePublicKeyFile和 CreatePrivateKeyFile分别从密钥容器中创建公钥和密钥并写入到指定的文件中。 GetPublicKeyFromFile和GetPrivateKeyFromFile分别从文件中获取公钥和密钥,返回RSAParameters类型的RSA参数结构体。 GenKey_SaveInContainer在指定名称的密钥容器中创建密钥。 GetKeyFromContainer从指定名称的密钥容器中获取XML格式的密钥信息。 DeleteKeyFromContainer删除指定的密钥容器。 -------------------------------------------------- 双重签名 1996年2月1日MasterCard 与Visa两大国际信用卡组织与技术合作伙伴GTE、Netscape、IBM、Terisa Systems、Verisign、Microsoft、SAIC等一批跨国公司共同开发了安全电子交易规范(Secure Electronic Transaction,简称SET)。SET是一种应用于开放网络环境下,以信用卡为基础的安全电子支付系统的协议,它给出了一套电子交易的过程规范。通过SET这一套完备的安全电子交易协议可以实现电子商务交易中的加密、认证机制、密钥管理机制等,保证在开放网络上使用信用卡进行在线购物的安全。由于SET提供商家和收单银行的认证,确保了交易数据的安全、完整可靠和交易的不可抵赖性,特别是具有保护消费者信用卡号不暴露给商家等优点,因此它成为目前公认的信用卡/借记卡的网上交易的国际标准。 SET协议采用了对称密钥和非对称密钥体制,把对称密钥的快速、低成本和非对称密钥的有效性结合在一起,以保护在开放网络上传输的个人信息,保证交易信息的隐蔽性。其重点是如何确保商家和消费者的身份和行为的认证和不可抵赖性,其理论基础是著名的非否认协议 (Non-repudiation),其采用的核心技术包括X。509电子证书标准与数字签名技术(Digital Signature)、报文摘要、数字信封、双重签名等技术。如使用数字证书对交易各方的合法性进行验证;使用数字签名技术确保数据完整性和不可否认;使用双重签名技术对SET交易过程中消费者的支付信息和定单信息分别签名,使得商家看不到支付信息,只能对用户的订单信息解密,而金融机构只能对支付和账户信息解密,充分保证消费者的账户和定货信息的安全性。 SET通过制定标准和采用各种技术手段,解决了一直困扰电子商务发展的安全问题,包括购物与支付信息的保密性、交易支付完整性、身份认证和不可抵赖性,在电子交易环节上提供了更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。-------------------------这个问题找不到吧,我想你应该自己收集的,不一定百度全知道,如果没人回答,建议找找一个一个的原理。-------------------------这东西好象不应该在这里解决的啊 你到操作系统那里 有高手的

小哇 2019-12-02 01:26:37 0 浏览量 回答数 0

回答

RSA算法是第一个能同时用于加密和数字签名的算法。RSA算法能生成公私钥对。 假设A、B要通信,那么他们需要彼此知道对方的公钥,如果a向b发送信息,a先用自己的私钥对信息进行加密(即签名),然后用b的公钥进行加密。当 b收到消息时,先用自己的私钥进行解密,然后用a的公用进行解密(即验证签名),即可看到a发送的明文信息。 若是用对称密钥进行加密,则双方公用一个密钥,这个密钥需要绝对保密,不能让别人知道。a在向b发送信息前,先用这个密钥对信息进行加密,然后把加密的信息发送给b,之后再把密钥通过另一通道发送给b(要保证密钥传输的安全,不被其他人截获),b收到密文和密钥后,再用这个密钥进行解密,就可以得到原文。 若混合使用,假设还是a向b发送信息,a先用自己的私钥进行签名,然后再用双方公用的对称密钥(即会话密钥)进行加密,得到加密后的密文,然后用b的公钥对双方的会话密钥进行加密,得到加密的会话密钥,然后把加密的密文和加密的会话密钥一起发给b,b收到后先用自己的私钥对加密的会话密钥进行解密,得到会话密钥,再用会话密钥对加密的密文进行解密,得到签名的信息,然后用a的公钥对签名进行验证,便可得到原始信息。

马铭芳 2019-12-02 01:26:37 0 浏览量 回答数 0

回答

  密钥交换算法中讲到的密钥都是一般指对称加密算法的密钥(注意区别:非对称算法自己本身的密钥),因为对于对称算法的特性来说,采取”一次一密”的话才比较安全。   RSA,可以用做密钥传输算法,即使用对端的RSA公钥对密钥进行加密,对端使用自己的私钥对其进行解密,就可以获取密钥。   RSA密钥生成步骤:   RSA加密和解密步骤:

寒凝雪 2019-12-02 01:26:34 0 浏览量 回答数 0

回答

美国数据加密标准(DES)是对称密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。 RSA是非对称算法,加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥。密钥尺寸大,加解密速度慢,一般用来加密少量数据,比如DES的密钥。 SHA1 和 MD5 是散列算法,将任意大小的数据映射到一个较小的、固定长度的唯一值。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。MD5 比 SHA1 大约快 33%。

琴瑟 2019-12-02 01:27:06 0 浏览量 回答数 0

回答

一般来说,加密分为对称加密、非对称加密(也叫公开密钥加密)。 HTTPS就是使用SSL/TLS协议进行加密传输,让客户端拿到复服务器的公钥,然后客户端随机生成一个对称加密制的秘钥,使用公钥加密,传输给服务端,后续的所有信息都通过该对称秘钥进行加密解密,完成整个HTTPS的流程,希望能帮助到你。

蚂蚁森林6 2020-05-14 17:00:58 0 浏览量 回答数 0

回答

数据保护是指数据传输(上传数据至OSS、从OSS下载数据)过程中和处于静止状态(数据存储在OSS数据中心磁盘)期间保护数据。传输中的数据可以通过SSL或者客户端加密进行保护。静态数据可以通过以下方式进行保护: 服务器端加密 OSS将数据保存到数据中心的磁盘之前进行加密,并且在下载对象时自动进行解密。 客户端加密 可以使用客户端加密SDK,在本地进行数据加密,并将加密后的数据上传到OSS。在这种场景下,用户需要管理加密过程以及加密密钥。 说明:目前只有Python SDK支持客户端加密。代码示例请参见Python SDK客户端加密。 采用客户端加密SDK保护数据 客户端加密是指将数据发送到OSS之前在用户本地进行加密,对于数据加密密钥的使用,目前支持如下两种方式: 使用KMS托管用户主密钥使用用户自主管理密钥 使用KMS托管用户主密钥 当使用KMS托管用户主密钥用于客户端数据加密时,无需向OSS加密客户端提供任何加密密钥。只需要在上传对象时指定KMS用户主密钥ID(也就是CMK ID)。其具体工作原理如下图所示。 上传对象。 通过使用CMK ID,客户端首先向KMS发送一个请求,申请1个用于加密对象的数据密钥(Data Key)。作为响应,KMS会返回一个随机生成的数据明文密钥(Data Key)以及一个数据密文密钥(Encrypted Data Key)。 本地加密数据。 本地客户端接收到KMS返回的数据明文密钥以及数据密文密钥后,将使用数据明文密钥进行本地加密,并且将加密后的对象以及数据密文密钥上传至OSS。 下载对象。 客户端首先会从OSS服务端下载加密的对象以及作为对象元数据存储的数据密文密钥。 解密数据。 客户端将数据密文密钥以及CMK ID发送至KMS服务器。作为响应,KMS将使用指定的CMK解密,并且将数据明文密钥返回给本地加密客户端。 使用用户自主管理密钥 使用用户自主管理密钥,需要用户自主生成并保管加密密钥。当用户本地客户端加密时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下图所示。 上传对象。 用户首先向本地加密客户端提供1个用户主密钥(对称密钥或者非对称密钥)。客户端只使用此主密钥加密其随机生成的数据密钥。该过程如下: OSS本地加密客户端在本地生成一个一次性的对称密钥,即数据密钥(Data Key)。它将用于加密单个对象(针对每个对象,客户端都会随机生成1个数据密钥)。 客户端使用数据密钥加密对象。 客户端使用用户提供的主密钥来加密数据密钥。 客户端将加密的数据密钥(Encrypted Data Key)作为对象元数据的一部分上传至OSS。 下载对象。 下载对象时,客户端首先从OSS下载加密的对象以及元数据。通过使用元数据中的材料,客户端将授权确定使用哪个主密钥来解密加密的数据密钥。客户端使用解密后的数据密钥来解密对象。

剑曼红尘 2020-03-26 18:26:27 0 浏览量 回答数 0

回答

公开密钥体系是非对称加密体系. 非对称包含RSA算法. SLL算法是对称加密算法. 如果是SSL是一种安全网络协议. 数字签名一个是保持消息完整性的一个是保持用于表示发送者身份的. 比如一个文件你用MD5签名后.接收方一对比.是那个MD5值说明文件没有被更改. 用发送者的私钥签名则接收方用发送者的公钥解密后还原消息就知道是谁发送的. 对称加密,非对称加密是保持消息机密性和可靠性的 对文件的签名是保持消息的完整性的.

云篆 2019-12-02 01:26:56 0 浏览量 回答数 0

回答

HTTPS基本原理 一、http为什么不安全。 http协议没有任何的加密以及身份验证的机制,非常容易遭遇窃听、劫持、篡改,因此会造成个人隐私泄露,恶意的流量劫持等严重的安全问题。 国外很多网站都支持了全站https,国内方面目前百度已经在年初完成了搜索的全站https,其他大型的网站也在跟进中,百度最先完成全站https的最大原因就是百度作为国内最大的流量入口,劫持也必然是首当其冲的,造成的有形的和无形的损失也就越大。关于流量劫持问题,我在另一篇文章中也有提到,基本上是互联网企业的共同难题,https也是目前公认的比较好的解决方法。但是https也会带来很多性能以及访问速度上的牺牲,很多互联网公司在做大的时候都会遇到这个问题:https成本高,速度又慢,规模小的时候在涉及到登录和交易用上就够了,做大以后遇到信息泄露和劫持,想整体换,代价又很高。 2、https如何保证安全 要解决上面的问题,就要引入加密以及身份验证的机制。 这时我们引入了非对称加密的概念,我们知道非对称加密如果是公钥加密的数据私钥才能解密,所以我只要把公钥发给你,你就可以用这个公钥来加密未来我们进行数据交换的秘钥,发给我时,即使中间的人截取了信息,也无法解密,因为私钥在我这里,只有我才能解密,我拿到你的信息后用私钥解密后拿到加密数据用的对称秘钥,通过这个对称密钥来进行后续的数据加密。除此之外,非对称加密可以很好的管理秘钥,保证每次数据加密的对称密钥都是不相同的。 但是这样似乎还不够,如果中间人在收到我的给你公钥后并没有发给你,而是自己伪造了一个公钥发给你,这是你把对称密钥用这个公钥加密发回经过中间人,他可以用私钥解密并拿到对称密钥,此时他在把此对称密钥用我的公钥加密发回给我,这样中间人就拿到了对称密钥,可以解密传输的数据了。为了解决此问题,我们引入了数字证书的概念。我首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给我,此时我就不是简单的把公钥给你,而是给你一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是我给你的。 所以综合以上三点: 非对称加密算法(公钥和私钥)交换秘钥 + 数字证书验证身份(验证公钥是否是伪造的) + 利用秘钥对称加密算法加密数据 = 安全 3、https协议简介 为什么是协议简介呢。因为https涉及的东西实在太多了,尤其是一些加密算法,非常的复杂,对于这些算法面的东西就不去深入研究了,这部分仅仅是梳理一下一些关于https最基本的原理,为后面分解https的连接建立以及https优化等内容打下理论基础。 3.1 对称加密算法 对称加密是指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信至关重要。 对称加密又分为两种模式:流加密和分组加密。 流加密是将消息作为位流对待,并且使用数学函数分别作用在每一个位上,使用流加密时,每加密一次,相同的明文位会转换成不同的密文位。流加密使用了密钥流生成器,它生成的位流与明文位进行异或,从而生成密文。现在常用的就是RC4,不过RC4已经不再安全,微软也建议网络尽量不要使用RC4流加密。 分组加密是将消息划分为若干位分组,这些分组随后会通过数学函数进行处理,每次一个分组。假设需要加密发生给对端的消息,并且使用的是64位的分组密码,此时如果消息长度为640位,就会被划分成10个64位的分组,每个分组都用一系列数学公式公式进行处理,最后得到10个加密文本分组。然后,将这条密文消息发送给对端。对端必须拥有相同的分组密码,以相反的顺序对10个密文分组使用前面的算法解密,最终得到明文的消息。比较常用的分组加密算法有DES、3DES、AES。其中DES是比较老的加密算法,现在已经被证明不安全。而3DES是一个过渡的加密算法,相当于在DES基础上进行三重运算来提高安全性,但其本质上还是和DES算法一致。而AES是DES算法的替代算法,是现在最安全的对称加密算法之一。分组加密算法除了算法本身外还存在很多种不同的运算方式,比如ECB、CBC、CFB、OFB、CTR等,这些不同的模式可能只针对特定功能的环境中有效,所以要了解各种不同的模式以及每种模式的用途。这个部分后面的文章中会详细讲。 对称加密算法的优、缺点: 优点:算法公开、计算量小、加密速度快、加密效率高。 缺点:(1)交易双方都使用同样钥匙,安全性得不到保证; (2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。 (3)能提供机密性,但是不能提供验证和不可否认性。 3.2 非对称加密算法 在非对称密钥交换算法出现以前,对称加密一个很大的问题就是不知道如何安全生成和保管密钥。非对称密钥交换过程主要就是为了解决这个问题,使得对称密钥的生成和使用更加安全。 密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。 常见的密钥交换算法有RSA,ECDHE,DH,DHE等算法。涉及到比较复杂的数学问题,下面就简单介绍下最经典的RSA算法。RSA:算法实现简单,诞生于1977年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数也就是质数(目前常用的是2048位)来保证安全强度,很消耗CPU运算资源。RSA是目前唯一一个既能用于密钥交换又能用于证书签名的算法。我觉得RSA可以算是最经典的非对称加密算法了,虽然算法本身都是数学的东西,但是作为最经典的算法,我自己也花了点时间对算法进行了研究,后面会详细介绍。 非对称加密相比对称加密更加安全,但也存在两个明显缺点: 1,CPU计算资源消耗非常大。一次完全TLS握手,密钥交换时的非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只相当于非对称加密的0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。 2,非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节。 所以公钥加密(极端消耗CPU资源)目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。 3.3 身份认证 https协议中身份认证的部分是由数字证书来完成的,证书由公钥、证书主体、数字签名等内容组成,在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证(验证查看这张证书是否是伪造的。也就是公钥是否是伪造的),并获取用于秘钥交换的非对称密钥(获取公钥)。 数字证书有两个作用: 1,身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。 2,分发公钥。每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。在SSL握手时会通过certificate消息传输给客户端。 申请一个受信任的数字证书通常有如下流程: 1,终端实体(可以是一个终端硬件或者网站)生成公私钥和证书请求。 2,RA(证书注册及审核机构)检查实体的合法性。如果个人或者小网站,这一步不是必须的。 3,CA(证书签发机构)签发证书,发送给申请者。 4,证书更新到repository(负责数字证书及CRL内容存储和分发),终端后续从repository更新证书,查询证书状态等。 数字证书验证: 申请者拿到CA的证书并部署在网站服务器端,那浏览器发起握手接收到证书后,如何确认这个证书就是CA签发的呢。怎样避免第三方伪造这个证书。答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)数字签名的制作和验证过程如下: 1,数字签名的签发。首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。 2,数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对待签名证书内容进行签名并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。 需要注意的是: 1)数字签名签发和校验使用的密钥对是CA自己的公私密钥,跟证书申请者提交的公钥没有关系。 2)数字签名的签发过程跟公钥加密的过程刚好相反,即是用私钥加密,公钥解密。 3)现在大的CA都会有证书链,证书链的好处一是安全,保持根CA的私钥离线使用。第二个好处是方便部署和撤销,即如果证书出现问题,只需要撤销相应级别的证书,根证书依然安全。 4)根CA证书都是自签名,即用自己的公钥和私钥完成了签名的制作和验证。而证书链上的证书签名都是使用上一级证书的密钥对完成签名和验证的。 5)怎样获取根CA和多级CA的密钥对。它们是否可信。当然可信,因为这些厂商跟浏览器和操作系统都有合作,它们的公钥都默认装到了浏览器或者操作系统环境里。 3.4 数据完整性验证 数据传输过程中的完整性使用MAC算法来保证。为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。 MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。 由于MD5在实际应用中存在冲突的可能性比较大,所以尽量别采用MD5来验证内容一致性。SHA也不能使用SHA0和SHA1,中国山东大学的王小云教授在2005年就宣布破解了 SHA-1完整版算法。微软和google都已经宣布16年及17年之后不再支持sha1签名证书。MAC算法涉及到很多复杂的数学问题,这里就不多讲细节了。 专题二--【实际抓包分析】 抓包结果: fiddler: wireshark: 可以看到,百度和我们公司一样,也采用以下策略: (1)对于高版本浏览器,如果支持 https,且加解密算法在TLS1.0 以上的,都将所有 http请求重定向到 https请求 (2)对于https请求,则不变。 【以下只解读https请求】 1、TCP三次握手 可以看到,我们访问的是 http://www.baidu.com/ , 在初次建立 三次握手的时候, 用户是去 连接 8080端口的(因为公司办公网做了代理,因此,我们实际和代理机做的三次握手,公司代理机再帮我们去连接百度服务器的80端口) 2、CONNECT 建立 由于公司办公网访问非腾讯域名,会做代理,因此,在进行https访问的时候,我们的电脑需要和公司代理机做 " CONNECT " 连接(关于 " CONNECT " 连接, 可以理解为虽然后续的https请求都是公司代理机和百度服务器进行公私钥连接和对称秘钥通信,但是,有了 " CONNECT " 连接之后,可以认为我们也在直接和百度服务器进行公私钥连接和对称秘钥通信。 ) fiddler抓包结果: CONNECT之后, 后面所有的通信过程,可以看做是我们的机器和百度服务器在直接通信 3、 client hello 整个 Secure Socket Layer只包含了: TLS1.2 Record Layer内容 (1)随机数 在客户端问候中,有四个字节以Unix时间格式记录了客户端的协调世界时间(UTC)。协调世界时间是从1970年1月1日开始到当前时刻所经历的秒数。在这个例子中,0x2516b84b就是协调世界时间。在他后面有28字节的随机数( random_C ),在后面的过程中我们会用到这个随机数。 (2)SID(Session ID) 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 (3) 密文族(Cipher Suites): RFC2246中建议了很多中组合,一般写法是"密钥交换算法-对称加密算法-哈希算法,以“TLS_RSA_WITH_AES_256_CBC_SHA”为例: (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 浏览器支持的加密算法一般会比较多,而服务端会根据自身的业务情况选择比较适合的加密组合发给客户端。(比如综合安全性以及速度、性能等因素) (4) Server_name扩展:( 一般浏览器也支持 SNI(Server Name Indication)) 当我们去访问一个站点时,一定是先通过DNS解析出站点对应的ip地址,通过ip地址来访问站点,由于很多时候一个ip地址是给很多的站点公用,因此如果没有server_name这个字段,server是无法给与客户端相应的数字证书的,Server_name扩展则允许服务器对浏览器的请求授予相对应的证书。 还有一个很好的功能: SNI(Server Name Indication)。这个的功能比较好,为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。一句话简述它的工作原理就是,在连接到服务器建立SSL连接之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的CA证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已经内置这一功能,据说新版的nginx也支持SNI。) 4、 服务器回复(包括 Server Hello, Certificate, Certificate Status) 服务器在收到client hello后,会回复三个数据包,下面分别看一下: 1)Server Hello 1、我们得到了服务器的以Unix时间格式记录的UTC和28字节的随机数 (random_S)。 2、Seesion ID,服务端对于session ID一般会有三种选择 (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) : 1)恢复的session ID:我们之前在client hello里面已经提到,如果client hello里面的session ID在服务端有缓存,服务端会尝试恢复这个session; 2)新的session ID:这里又分两种情况,第一种是client hello里面的session ID是空值,此时服务端会给客户端一个新的session ID,第二种是client hello里面的session ID此服务器并没有找到对应的缓存,此时也会回一个新的session ID给客户端; 3)NULL:服务端不希望此session被恢复,因此session ID为空。 3、我们记得在client hello里面,客户端给出了21种加密族,而在我们所提供的21个加密族中,服务端挑选了“TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256”。 (a) TLS为协议,RSA为密钥交换的算法; (b) AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式); (c) SHA是哈希的算法。 这就意味着服务端会使用ECDHE-RSA算法进行密钥交换,通过AES_128_GCM对称加密算法来加密数据,利用SHA256哈希算法来确保数据完整性。这是百度综合了安全、性能、访问速度等多方面后选取的加密组合。 2)Certificate 在前面的https原理研究中,我们知道为了安全的将公钥发给客户端,服务端会把公钥放入数字证书中并发给客户端(数字证书可以自签发,但是一般为了保证安全会有一个专门的CA机构签发),所以这个报文就是数字证书,4097 bytes就是证书的长度。 我们打开这个证书,可以看到证书的具体信息,这个具体信息通过抓包报文的方式不是太直观,可以在浏览器上直接看。 (点击 chrome 浏览器 左上方的 绿色 锁型按钮) 3)Server Hello Done 我们抓的包是将 Server Hello Done 和 server key exchage 合并的包: 4)客户端验证证书真伪性 客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下: 证书链的可信性trusted certificate path,方法如前文所述; 证书是否吊销revocation,有两类方式离线CRL与在线OCSP,不同的客户端行为会不同; 有效期expiry date,证书是否在有效时间范围; 域名domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析; 5)秘钥交换 这个过程非常复杂,大概总结一下: (1)首先,其利用非对称加密实现身份认证和密钥协商,利用非对称加密,协商好加解密数据的 对称秘钥(外加CA认证,防止中间人窃取 对称秘钥) (2)然后,对称加密算法采用协商的密钥对数据加密,客户端和服务器利用 对称秘钥 进行通信; (3)最后,基于散列函数验证信息的完整性,确保通信数据不会被中间人恶意篡改。 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数random_C和random_S与自己计算产生的Pre-master(由客户端和服务器的 pubkey生成的一串随机数),计算得到协商对称密钥; enc_key=Fuc(random_C, random_S, Pre-Master) 6)生成 session ticket 如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。 因为我们抓包的时候,是几个小时内第一次访问 https://www.baodu.com 首页,因此,这里并没有 Session ID. (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID) session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器,就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。 后续建立新的https会话,就可以利用 session ID 或者 session Tickets , 对称秘钥可以再次使用,从而免去了 https 公私钥交换、CA认证等等过程,极大地缩短 https 会话连接时间。 7) 利用对称秘钥传输数据 【半分钟后,再次访问百度】: 有这些大的不同: 由于服务器和浏览器缓存了 Session ID 和 Session Tickets,不需要再进行 公钥证书传递,CA认证,生成 对称秘钥等过程,直接利用半分钟前的 对称秘钥 加解密数据进行会话。 1)Client Hello 2)Server Hello

玄学酱 2019-12-02 01:27:08 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站