移动安全-iOS(三)

网络通信

我们知道无线传输的数据能被第三方轻易截获(如使用抓包工具Charles),如果未使用加密措施,可能直接暴露用户的各种关键数据,例如用户名,密码等。加入了SSL(Secure Socket Layer)子层实现的HTTPS协议可确保数据在网络上加密传输,即使传输的数据被截获,也无法解密和还原。

http不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

  • 1 窃听风险(eavesdropping):第三方可以获知通信内容。
  • 2 篡改风险(tampering):第三方可以修改通信内容。
  • 3 冒充风险(pretending):第三方可以冒充他人身份参与通信。

关于TLS

  • TLS(英语:TransportLayerSecurity,缩写作TLS,中文名:传输层安全性协议),及其前身SSL(Secure Sockets Layer,缩写作SSL,中文名:安全套接层)是一种安全协议,TLS与SSL在传输层对网络连接进行加密,以提供安全及数据完整性保障.
  • SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等.

****SSL / TLS加密概述

SSL / TLS主要用于加密通过不安全的网络(如Internet)发送的机密数据。在HTTPS协议中,加密的数据类型包括URL,HTTP标头,cookie和通过表单提交的数据。使用SSL / TLS保护的网页的URL以“https://”开头。

图1. SSL / TLS协议层

握手层

握手层由三个子协议组成:

  • 握手。该子协议用于协商客户端和服务器之间的会话信息。会话信息包括会话ID,对等证书,要使用的密码规范,要使用的压缩算法以及用于生成密钥的共享密钥。

  • 更改密码规范:Change Cipher Spec 子协议用于更改客户端和服务器之间用于加密的密钥材料。密钥材料是用于创建加密密钥的原始数据。Change Cipher Spec子协议包含一条消息,用于告知SSL / TLS会话中的其他方,也称为对等方,发送方希望将其更改为一组新密钥。密钥是根据握手子协议交换的信息计算出来的。

  • 警报。警报消息用于指示对等体的状态或错误状况的变化。有各种各样的警报可以通知对等方正常和错误情况。完整列表可以在RFC 2246“TLS Protocol Version 1.0”中找到。通常在连接关闭,收到无效消息,无法解密消息或用户取消操作时发送警报。

握手子协议功能

握手子协议提供了许多非常重要的安全功能。它执行一组交换,启动身份验证并协商加密,散列和压缩算法。

认证

出于身份验证的目的,握手协议使用X.509证书向第二方提供强有力的证据,以帮助证明持有证书的一方的身份和相应的私钥。证书是一种数字形式的标识,通常由证书颁发机构(CA)颁发,包含标识信息,有效期,公钥,序列号和发行者的数字签名。

CA是相互信任的第三方,它确认证书请求者(通常是用户或计算机)的身份,然后向请求者颁发证书。证书将请求者的身份绑定到公钥。CA还会根据需要续订和撤销证书。例如,如果向客户端提供服务器证书,则客户端计算机可能会尝试将服务器的CA与客户端的可信CA列表进行匹配。如果颁发CA是受信任的,则客户端将验证证书是否可信并且未被篡改。最后,客户端将接受证书作为服务器身份的证明。

有关证书及其使用方式的详细信息,请参阅go.microsoft.com/fwlink/?Lin…

注意 Windows Server 2003包含允许其用作证书颁发机构的软件。有关详细信息,请参阅Windows Server 2003中的“帮助和支持”

加密有两种主要类型:对称密钥(也称为共享密钥)和非对称密钥(也称为公钥或公钥 - 私钥)。SSL / TLS使用对称密钥和非对称密钥加密。

  • 对称密钥。在对称密钥加密中,相同的密钥用于加密和解密消息。如果双方想要安全地交换加密的消息,则他们必须拥有相同对称密钥的副本。对称密钥加密通常用于加密大量数据,因为它在计算上比非对称加密更快。典型的算法包括DES(数据加密标准),3-DES(三重DES),RC2,RC4和AES(高级加密标准)。

  • 不对称密钥。非对称或公钥加密使用通过复杂的数学过程一起导出的一对密钥。其中一个密钥是公开的,通常要求CA在证书持有者(也称为主题)的证书中发布公钥。私钥由主题保密,从未向任何人透露。密钥协同工作,其中一个用于执行另一个的反向操作:如果公钥用于加密数据,则只有该密钥的私钥可以解密它; 如果私钥用于加密,则必须使用公钥进行解密。这种关系允许公钥加密方案做两件重要的事情。首先,任何人都可以获取主题的公钥,并使用它来加密只有具有私钥的用户才能解密的数据。第二,如果主题使用其私钥加密数据,则任何人都可以使用相应的公钥解密数据。这是数字签名的基础。最常见的算法是RSA(Rivest,Shamir&Adleman)。

SSL / TLS使用公钥加密来向客户端验证服务器,并且可选地将客户端验证到服务器。公钥加密也用于建立会话密钥。会话密钥用于对称算法以加密大量数据。这将用于身份验证的非对称加密的优势与针对批量数据的更快,更少处理器密集的对称密钥加密相结合。

散列算法

在握手过程中,哈希算法也得到了一致同意。散列是值到较小的代表值集的单向映射,因此得到的散列的大小小于原始消息,并且散列对于原始数据是唯一的。哈希类似于指纹:指纹对于个人是唯一的并且比原始人小得多。散列用于在传输过程中建立数据完整性。两种常见的哈希算法是消息摘要5(MD5)和标准哈希算法1(SHA-1)。MD5产生128位散列值,SHA-1产生160位值。

散列算法包括用于检查传输数据的完整性的值。使用MAC或HMAC建立该值。MAC使用映射函数将消息数据表示为固定长度,最好是较小的值,然后散列消息。MAC确保在传输期间未修改数据。MAC和数字签名之间的区别在于数字签名也是一种认证方法。SSL使用MAC。

HMAC类似于MAC,但是使用散列算法结合共享密钥。共享密钥被附加到要散列的数据。这使得散列更安全,因为双方必须具有相同的共享密钥才能证明数据是真实的。TLS使用HMAC。有关HMAC的更多信息,请参阅RFC 1024,“用于消息身份验证的密钥哈希”。

有关公共密钥加密,请参阅“设计公钥基础结构”中的详细信息在Microsoft®Windows®Server 2003部署工具包的设计和部署目录和安全服务,(或请参阅“ 设计一个公共密钥基础设施” 在Web上的

记录层

记录层的协议接收并加密来自应用层的数据,并将其传送到传输层。记录协议获取数据,将其分段为适合加密算法的大小,可选地压缩它(或者,对于接收的数据,对其进行解压缩),应用MAC或HMAC(HMAC仅由TLS支持)然后加密(或使用握手协议期间协商的信息解密数据。

猜你喜欢

转载自juejin.im/post/5c87d83ff265da2de04af71b
今日推荐