[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.htmlhttp://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 developmentApple Push Notification service SSL(Sandbox)
Production
App Store and Ad HocApple 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.htmlhttps://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
相关文章推荐
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- VC++网络安全编程范例(1)--数字证书有效期验证--学习笔记
- 【转】iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- 【网络安全】SSL通信证书生成及作用详解
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS开发笔记4:HTTP网络通信及网络编程
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- 企业信息与网络通信安全 团队成员简历-叶俊
- Java安全通信、数字证书及应用实践
- 网络安全学习笔记
- 企业信息与网络通信安全(6)财务分析
- Java安全通信、数字证书及应用实践
- 网络安全学习笔记
- 用证书实现windows 2003下IIS的SSL安全通信
- 企业信息与网络通信安全(5)生产管理
- 企业信息与网络通信安全(7)退出机制