文档章节

iOS开发系列-iOS签名机制

o
 osc_tuutsk8t
发布于 2018/06/24 18:34
字数 1948
阅读 47
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

概述

想要了解iOS的签名机制需要有一定密码学有一定的了解。下面依次介绍的数据的加密解密、单向散列函数、数字签名、证书、iOS签名机制。

数据加密解密

在网络通信中想要防止数据被攻击者拦截,我们通常对我们的数据进行加密(通过密钥对发送的消息根据加密算法生成密文),如果传输的信息被拦截,攻击者获取到的是密文。

根据密钥的使用方法,可以将密码分为2中

  • 对称密码
  • 公钥密码(非对称密码)

对称密码

在对称密码中,加密、解密使用的相同的密钥。常见的对称密码算法DES、3DES、AES。

DES

  • DES是一种将64bit明文加密成64bit密文的对称密码算法,密钥长度是56bit
  • 由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复)
  • 目前已经可以在短时间内被破解,所以不建议使用

3DES

  • 3DES,将DES重复3次所得到的一种密码算法,也叫做3重DES。
  • 目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题

AES

  • 取代DES成为新标准的一种对称密码算法
  • 目前AES,已经逐步取代DES、3DES,成为首选的对称密码算法

由于对称密钥加密会遇到密钥配送问题。如果发送者在发送密钥的过程中被拦截发送的加密的密文也能被拦截者解密。为了解决对称加密密钥配送问题就出现了新的加密方式-非对称加密。

公钥密码

在公钥密码中

  • 加密密钥,一般是公开的,因此该密钥称为公钥(public key)
  • 解密密钥,由消息接收者自己保管的,不能公开,因此也称为私钥(private key)
  • 公钥和私钥是一 一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)
  • 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密
  • 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

公钥密码解决对称密码加密遇到的配送问题

  • 由消息的接收者,生成一对公钥、私钥
  • 将公钥发给消息的发送者
  • 消息的发送者使用公钥加密消息

目前使用最广泛的公钥密码算法是RSA。RSA的名字有3位开发者,即Ron Rivest、Adi Shamir、Leonard Adleman的姓氏首字母组成。

公钥密码算法虽然解决了密钥配送问题,但是他们生的算法加密速度比公钥密钥加密较慢,不适合加密信息量加大的数据。为了解决这个问题我们使用-混合密码系统

混合密码系统

混合密码系统利用了公钥密码+对称密码,利用两者的优势的加密方式。

加密步骤

  • 首先为本次通信随机生成的临时密钥,作为对称密码的密钥,用于加密消息,提高速度
  • 消息发送者要拥有消息接收者的公钥
  • 用消息接收者的公钥,加密会话密钥
  • 将前2步生成的加密结果,一并发给消息接收者

消息的接受者拿到加密的会话密钥用自己的私钥解密获取到机密的会话密钥,在利用会话密钥使用对称加密方式解密出明文消息。

在非对称加密必须要将消息接受者的公钥发送给消息发送者,如果此时存在中间人攻击。拦截了消息发送者发送给消息接受者的公钥,给的是攻击者的公钥。为了保证消息接受者接收公钥确实是消息发送者的公钥,那么证书就出场了。

证书(Certificate)

密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似里面有姓名、邮箱等个人信息,以及此人的公钥。并由认证机构(Certificate Authority,CA)施加数字签名

CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织,有国际性组织、政府设立的组织,有通过提供认证服务来盈利的企业,个人也可以成立认证机。

证书的使用流程

  • 消息接受者将自己的公钥上传到CA,CA对消息接受者上传的公钥以及消息接受者其它信息用自己的私钥进行数字签名,证书中就包含消息接受者的公钥和数字签名。
  • 接受者拿到证书用CA的公钥做校验

整个流程提到了一个专业词-数字签名。那么下面介绍下数字签名。要想更好的了解数字签名,需要先对单向散列函数有个了解。

单向散列函数

单向散列函数,又被称为消息摘要函数(message digest function),哈希函数。输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)。 常见的几种单向散列函数 MD4、MD5

  • 产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
  • Mac终端上默认可以使用md5命令

SHA-1

  • 产生160bit的散列值,目前已经不安全

SHA-2

  • SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit

SHA-3

  • 全新标准

单向散列函数的使用场景

  • 防止数据被篡改
  • 口令加密

数字签名

数据签名主要是确认消息的完整性、识别消息是否被篡改、防止消息发送人否认

用消息发送者的私钥进行签名。保证这个签名是消息发送者自己签的。上面我们知道公钥密码中对大数据进行签名效率会比价低,因此我们利用单向散列函数来优化签名过程。

签名流程

  • 消息发送者使用单向散列函数对发送的消息进行计算得到消息的哈希值。
  • 消息发送者使用自己的私钥加密哈希值得到签名。
  • 将上面生成签名发送和消息给消息接受者
  • 消息接受者首先用消息送者的公钥解密拿到消息哈希值
  • 然后将消息用相同的单向散列函数计算对比哈希值是否相同。

补充

  1. 如果有人篡改了文件内容或者签名内容,签名验证失败,证明内容会篡改。
  2. 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改。数字签名不能保证机密性。

iOS签名机制

iOS签名机制的作用:保证安装到用户手机上的APP都是经过Apple官方允许的。

不管是真机调试,还是发布APP,开发者都需要经过一系列复杂的步骤 -生成CertificateSigningRequest.certSigningRequest文件

  • 获得ios_development.cer\ios_distribution.cer证书文件
  • 注册device、添加App ID
  • 获得*.mobileprovision文件

对于真机调试,现在的Xcode已经自动帮开发者做了以上操作

如果APP是从AppStore下载安装的,你会发现里面是没有mobileprovision文件的。它的验证流程会简单很多,大概如下所示

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Netty那点事(三)Channel与Pipeline

Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的...

黄亿华
2013/11/24
2W
22
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6.1K
18
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
代码生成器--Codgen

Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节...

黄天政
2013/01/29
1.4W
2
Web开发组件管理器--Bower

Bower 是一个针对Web开发的包管理器。该工具主要用来帮助用户轻松安装CSS、JavaScript、图像等相关包,并管理这些包之间的依赖。 功能有些类似于Component。不同之处是,Component是围绕Git...

匿名
2013/02/01
1.2W
2

没有更多内容

加载失败,请刷新页面

加载更多

用神经网络给照片补光,谷歌这项研究却实现了「鬼片」效果

  机器之心报道   编辑:魔王、杜伟、小舟    打光是图像处理过程中的重要步骤,打光的好坏可能会影响整体效果的展示。打光方法也各有不同,MIT、谷歌等的一项新研究另辟蹊径,通过神经...

osc_a9optwdf
15分钟前
0
0
滴滴基于 ElasticSearch 的一站式搜索中台实践

ElasticSearch 在滴滴的应用场景 滴滴自 2016 年 4 月开始组建团队,解决 ElasticSearch 在使用过程中遇到的性能问题。搜索平台的建设是随着业务体量的发展逐步演进的,如今已经发展到有超过...

互联网后端架构
今天
0
0
数据结构与算法之美——红黑树

一、前言 上两节,我们依次讲了树、二叉树、二叉搜索树。二叉搜索树是最常见的一种二叉树。它支持快随插入、删除、查找操作。各个操作的时间复杂度和树的高度成正比,平均时间复杂度是O(log...

osc_sezkegv6
16分钟前
9
0
数据结构与算法之美——二叉树

一、前言 前面我们讲的都是线性表结构,今天我们讲一种非线性表结构,树。树这种数据结构比线性表的数据结构要复杂得多,内容也比较多。 二、树 什么是树? 树是n(n≥0)个结点的有限集。n...

osc_ictoo263
17分钟前
0
0
今晚八点,听王国英老师讲玉米GS的应用。扫描图片二维码,进入直播间!

本文分享自微信公众号 - 育种数据分析之放飞自我(R-breeding)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

育种数据分析之放飞自
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部