但是反过来server 发送敏感数据到client 的时候用啥加密?
应该不是用public key加密吧?
我猜应该是用某种对称加密方法,是不?那问题就出来了,hacker窃取到数据用对称解密,不就完蛋了吗。
查了 蒋老和国外很多网站的说法,都没有说到server->client的加密方法。
求高人指教 好的答复追加分
7 个解决方案
#1
ssl并不规定加密算法,所以要具体情况具体看。
ssl用的加密算法,公钥私钥,证书等等都视握手协议而定
google SSL Handshake Protocol
ssl用的加密算法,公钥私钥,证书等等都视握手协议而定
google SSL Handshake Protocol
#2
谢谢 答复 我先研究下握手协议
#3
client 用public key加密数据发送到server,...
一般不用RSA public key来直接加密数据,因为RSA慢,而且有长度限制(小于Key的长度)。
RSA可以用来传递一个密码(第三方无法知道),该密码用来加密 随后的通讯。
’随后的通讯‘可以包括server->client或client->server的传输。
一般不用RSA public key来直接加密数据,因为RSA慢,而且有长度限制(小于Key的长度)。
RSA可以用来传递一个密码(第三方无法知道),该密码用来加密 随后的通讯。
’随后的通讯‘可以包括server->client或client->server的传输。
#4
一般是这样的
公钥是对外开放的,公钥加密的字符可以通过私钥来解密出原字符
私钥只有自己知道,不对外的,用作解密公钥加密的字符,同时也可以用作加密字符,私钥加密的字符,公钥是没有办法解密的,但可以验证是否为私钥加密的字符,这个过程我们称之为签名和验证签名
公钥是对外开放的,公钥加密的字符可以通过私钥来解密出原字符
私钥只有自己知道,不对外的,用作解密公钥加密的字符,同时也可以用作加密字符,私钥加密的字符,公钥是没有办法解密的,但可以验证是否为私钥加密的字符,这个过程我们称之为签名和验证签名
#5
打个比喻,某天有人打电话给你,说是你的领导,让你给他汇款10万给他,那么你是否会照做呢?
所以先要有个验证对方身份是否真实,一个是电话号码,二个是确认涵之类的,总之要先确保对方身份,如果是真的就照办,假的就不用理会,所以私钥的加密作用就在于此,它会加密一个字符串,给你验证,如果通过(告诉你真的是你老板这边过来的指令),就按照明文(不加密的字符)执行
所以先要有个验证对方身份是否真实,一个是电话号码,二个是确认涵之类的,总之要先确保对方身份,如果是真的就照办,假的就不用理会,所以私钥的加密作用就在于此,它会加密一个字符串,给你验证,如果通过(告诉你真的是你老板这边过来的指令),就按照明文(不加密的字符)执行
#6
“传递一个密码” 是指2个证书都能识别的密码吗是由公钥生成的还是私钥生成的?
这样就是说每个链接都有唯一的一个密码(加解密速度很快不需要经过一系列的数学算法对吧)
#7
下面是建立一个SSL连接的一个示例(具体方式和字节数可以不同),其中
第一列是字节数,第二列式传输方向(客户在左边,服务在右边),第三列是内容
前三行是TCP握手;
Hello Client要求建立SSL安全连接;
Hello Server中,服务返回了证书。客户可以验证服务证书,并用证书中的公钥,加密一个会话密码。
Client Key Exchange 把加密的会话密码传回。可选的客户证书可以让服务端验证客户。
Change Cipher Spec 服务方用私钥可以得到会话密码,并开始加密通讯。
因此,在上述例子中
建立SSL只需要一个证书(客户证书是可选的)。
会话密码由客户随机产生,并用公钥加密传给服务端。
只有服务端可以用私钥得到会话密码。
具体的加密规范可以由双方在Key Exchange/Change Cipher Spec中完成。比如可以指定具体的加密算法用RC4(以前非常常用)等。
第一列是字节数,第二列式传输方向(客户在左边,服务在右边),第三列是内容
62 --> SYNC
62 <-- SYNC+ACK
60 --> ACK
167 --> Client Hello
907 <-- Server Hello (包括Server的证书)
380 --> Client Key Exchange (可选包含客户证书,选择加密规范,加密握手)
113 <-- Change Cipher Spec
155 --> App Data (TSL1.0)
267 <-- App Data (TSL1.0)
前三行是TCP握手;
Hello Client要求建立SSL安全连接;
Hello Server中,服务返回了证书。客户可以验证服务证书,并用证书中的公钥,加密一个会话密码。
Client Key Exchange 把加密的会话密码传回。可选的客户证书可以让服务端验证客户。
Change Cipher Spec 服务方用私钥可以得到会话密码,并开始加密通讯。
因此,在上述例子中
建立SSL只需要一个证书(客户证书是可选的)。
会话密码由客户随机产生,并用公钥加密传给服务端。
只有服务端可以用私钥得到会话密码。
具体的加密规范可以由双方在Key Exchange/Change Cipher Spec中完成。比如可以指定具体的加密算法用RC4(以前非常常用)等。
#1
ssl并不规定加密算法,所以要具体情况具体看。
ssl用的加密算法,公钥私钥,证书等等都视握手协议而定
google SSL Handshake Protocol
ssl用的加密算法,公钥私钥,证书等等都视握手协议而定
google SSL Handshake Protocol
#2
谢谢 答复 我先研究下握手协议
#3
client 用public key加密数据发送到server,...
一般不用RSA public key来直接加密数据,因为RSA慢,而且有长度限制(小于Key的长度)。
RSA可以用来传递一个密码(第三方无法知道),该密码用来加密 随后的通讯。
’随后的通讯‘可以包括server->client或client->server的传输。
一般不用RSA public key来直接加密数据,因为RSA慢,而且有长度限制(小于Key的长度)。
RSA可以用来传递一个密码(第三方无法知道),该密码用来加密 随后的通讯。
’随后的通讯‘可以包括server->client或client->server的传输。
#4
一般是这样的
公钥是对外开放的,公钥加密的字符可以通过私钥来解密出原字符
私钥只有自己知道,不对外的,用作解密公钥加密的字符,同时也可以用作加密字符,私钥加密的字符,公钥是没有办法解密的,但可以验证是否为私钥加密的字符,这个过程我们称之为签名和验证签名
公钥是对外开放的,公钥加密的字符可以通过私钥来解密出原字符
私钥只有自己知道,不对外的,用作解密公钥加密的字符,同时也可以用作加密字符,私钥加密的字符,公钥是没有办法解密的,但可以验证是否为私钥加密的字符,这个过程我们称之为签名和验证签名
#5
打个比喻,某天有人打电话给你,说是你的领导,让你给他汇款10万给他,那么你是否会照做呢?
所以先要有个验证对方身份是否真实,一个是电话号码,二个是确认涵之类的,总之要先确保对方身份,如果是真的就照办,假的就不用理会,所以私钥的加密作用就在于此,它会加密一个字符串,给你验证,如果通过(告诉你真的是你老板这边过来的指令),就按照明文(不加密的字符)执行
所以先要有个验证对方身份是否真实,一个是电话号码,二个是确认涵之类的,总之要先确保对方身份,如果是真的就照办,假的就不用理会,所以私钥的加密作用就在于此,它会加密一个字符串,给你验证,如果通过(告诉你真的是你老板这边过来的指令),就按照明文(不加密的字符)执行
#6
“传递一个密码” 是指2个证书都能识别的密码吗是由公钥生成的还是私钥生成的?
这样就是说每个链接都有唯一的一个密码(加解密速度很快不需要经过一系列的数学算法对吧)
#7
下面是建立一个SSL连接的一个示例(具体方式和字节数可以不同),其中
第一列是字节数,第二列式传输方向(客户在左边,服务在右边),第三列是内容
前三行是TCP握手;
Hello Client要求建立SSL安全连接;
Hello Server中,服务返回了证书。客户可以验证服务证书,并用证书中的公钥,加密一个会话密码。
Client Key Exchange 把加密的会话密码传回。可选的客户证书可以让服务端验证客户。
Change Cipher Spec 服务方用私钥可以得到会话密码,并开始加密通讯。
因此,在上述例子中
建立SSL只需要一个证书(客户证书是可选的)。
会话密码由客户随机产生,并用公钥加密传给服务端。
只有服务端可以用私钥得到会话密码。
具体的加密规范可以由双方在Key Exchange/Change Cipher Spec中完成。比如可以指定具体的加密算法用RC4(以前非常常用)等。
第一列是字节数,第二列式传输方向(客户在左边,服务在右边),第三列是内容
62 --> SYNC
62 <-- SYNC+ACK
60 --> ACK
167 --> Client Hello
907 <-- Server Hello (包括Server的证书)
380 --> Client Key Exchange (可选包含客户证书,选择加密规范,加密握手)
113 <-- Change Cipher Spec
155 --> App Data (TSL1.0)
267 <-- App Data (TSL1.0)
前三行是TCP握手;
Hello Client要求建立SSL安全连接;
Hello Server中,服务返回了证书。客户可以验证服务证书,并用证书中的公钥,加密一个会话密码。
Client Key Exchange 把加密的会话密码传回。可选的客户证书可以让服务端验证客户。
Change Cipher Spec 服务方用私钥可以得到会话密码,并开始加密通讯。
因此,在上述例子中
建立SSL只需要一个证书(客户证书是可选的)。
会话密码由客户随机产生,并用公钥加密传给服务端。
只有服务端可以用私钥得到会话密码。
具体的加密规范可以由双方在Key Exchange/Change Cipher Spec中完成。比如可以指定具体的加密算法用RC4(以前非常常用)等。