2015-11-24 46 views
0

我想了解这里的安全性是如何工作的。如果我使用SSL固定我的移动应用程序,我使用AFNetwork的AFSecurityPolicy Pin公钥。当我的客户端连接到服务器时,我可以验证服务器证书,因为我固定了它。SSL固定客户端加密

下面是问题,我使用服务器的公钥来加密到服务器的流量。而服务器正在使用它的私钥向客户端发送流量?

+0

为什么它取决于?我的意思是,如何才能在SSL上单向加密流量? – mskw

+0

你是什么意思“只用一种加密方式”? SSL始终在两个方向上进行加密(当然,对于NULL密码则根本不加密)。 –

+0

我的问题是,它是否对两种方式进行加密,每个方都使用哪种密钥进行加密。我知道客户端将使用服务器的公钥,但服务器使用什么来加密客户端? – mskw

回答

1

不,不会直接使用RSA密钥来加密TLS的数据。它用于加密共享密钥(对于从RSA_开始而不降级为DH的密码组),或者用于在临时密钥协议(以ECDHE_DHE_开头的密码组)的验证阶段执行签名验证。

共享密钥与PRF一起用于密钥推导以建立会话密钥。用于加密的会话密钥将用于保护数据的机密性。

更多的维基百科文章信息在Key Exchange or Key Agreement

+0

好吧,如果我的服务器没有要求验证客户端证书,那么服务器如何向客户端发送流量? – mskw

+0

它使用共享密钥建立会话密钥....我将整合,但您可能只想阅读TLS RFC。 –

+0

因此,最终服务器和客户端已经成功共享了攻击者无法检索到的秘密。但是如果客户端没有对自己进行身份验证,服务器就不知道该与谁通话。您当然可以使用例如身份验证来验证客户端。之后的HTTP基本身份验证或HTML表单。 –