您的位置:首页 > 理论基础 > 计算机网络

[iOS笔记] 网络通信安全与证书

2016-08-09 20:27 246 查看

非对称加密算法 RSA

介绍

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。

算法原理:

https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

流程

消息发送方A在本地构建密钥对,公钥和私钥;

消息发送方A将产生的公钥发送给消息接收方B;

B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信;

反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。

DH密钥交换算法

介绍

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。

DH算法是一种密钥协商算法,只用于密钥的分配,不用于消息的加解密。

它提供了一种安全的交换密钥的方式,通过交换的密钥进行数据的加解密。

通信流程

首先A、B双方,在通信前构建专属于自己的密钥对,假设分别是公钥A,私钥A,公钥B,私钥B;

A将自己的公钥A暴露给B,B通过私钥B和公钥A经过一定的运算产生出本地的密钥B;

同样,B将自己的公钥B暴露给A,A通过私钥A和公钥B经过一定的运算产生出本地的密钥A;

最后,这个算法有意思的一点就是,密钥A和密钥B是一致的,这样A、B双方就拥有了一个属于双方的“秘密”口令;

资料

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

http://www.ruanyifeng.com/blog/2011/02/seven_myths_about_https.html

HTTPS

HTTP的风险

窃听风险:第三方可以获知通信内容。

冒充风险:第三方可以冒充他人身份参与通信。

篡改风险:第三方可以修改通信内容。

SSL/TLS

介绍
安全套接字(Secure Socket Layer,SSL)

安全传输层协议 (Transport Layer Security Protocol, TLS)

介于应用层和TCP层之间

特性

保密: 所有信息都是加密传播,第三方无法窃听

鉴别: 配备身份证书,防止身份被冒充。

完整性: 具有校验机制,一旦被篡改,通信双方会立刻发现。

密码套件格式: SSL_DHE_RSA_WITH_DES_CBC_SHA

工作原理

协议

握手协议(Handshake protocol)

记录协议(Record protocol)

警报协议(Alert protocol)

解决的问题

如何保证公钥不被篡改?

将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。

公钥加密计算量太大,如何减少耗用的时间?

"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

对称和非对称加密的应用:Secure Shell (SSH 安全壳协议)

介绍

专为远程登录会话和其他网络服务提供安全性的协议

一般我们现在用的是OpenSSH框架

OSI的7层:
7 应用层  HTTP FTP
6 表示层
5 会话层  SSH
4 传输层  TCP UDP
3 网络层  IP
2 数据链路层
1 物理层

主要协议

传输层协议(The Transport Layer Protocol)

用户认证协议(The User Authentication Protocol)

连接协议(The Connection Protocol)

SSH提供两种认证方式:

password认证:
客户端向服务器发出 password认证请求,将用户名和密码加密后发送给服务器;

服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。

publickey 认证:
采用数字签名的方法来认证客户端。目前,设备上可以利用RSA和 DSA两种公共密钥算法实现数字签名。

客户端发送包含用户名、公共密钥和公共密钥算法的 publickey 认证请求给服务器端。

服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息

通信流程

首先服务端会通过非对称加密,产生一个公钥和私钥;

在客户端发起请求时,服务端将公钥暴露给客户端,这个公钥可以被任意暴露;

客户端在获取公钥后,会先产生一个由256位随机数字组成的会话密钥,这里称为口令;

客户端通过公钥将这个口令加密,发送给服务器端;

服务器端通过私钥进行解密,获取到通讯口令;

之后,客户端和服务端的信息传递,都通过这个口令进行对称的加密。 //对称加密

资料

http://www.cnblogs.com/zmlctt/p/3946860.html

证书 certificate

介绍

证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

证书的内容包括:

电子签证机关的信息

公钥用户信息

公钥

权威机构的签字

有效期

...

证书中心 (certificate authority,简称CA)

受信任的根证书颁发机构, 如: 微软, Apple

证书中心用自己的私钥,对颁发的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)

证书链

Web 浏览器已预先配置了一组浏览器自动信任的根 CA 证书。

来自其他证书授权机构的所有证书都必须附带证书链,以检验这些证书的有效性。

证书链是由一系列 CA 证书发出的证书序列,最终以根 CA 证书结束。

根证书

CA用自己的私钥为公钥签名,用于验证自己的公钥

根证书是一份特殊的证书,它的签发者是它本身,下载根证书就表明对该根证书以下所签发的证书都表示信任

证书请求过程

生成非对称加密的公钥和私钥

生成证书请求文件 (csr: CertificateSigningRequest),其中包含公钥和与用户信息

在 CA 网站上传CSR文件

CA 使用其 private key 对 CSR 中的 public key 和身份信息进行加密签名生成数字证书(Digital Certificate)并保存

从 CA 网站下载证书并安装

数字签名

数位签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。

将数据按约定的HASH算法计算得到一个固定位数的摘要并用私钥加密



证书和签名的应用



证书在iOS开发中的应用

development

iOS App development

Apple Push Notification service SSL(Sandbox)

Production

App Store and Ad Hoc

Apple Push Notification service SSL(Sandbox & Production)

Pass Type ID Certificate

Provisioning Profiles

包含:

APP ID

证书

Device UUID



作用



资料

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012582-CH1-SW1

http://blog.csdn.net/holydancer/article/details/9219333

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: