iOS签名机制

如何选择加密算法

摘要算法默认就使用SHA1准没错。

首先从加密的类型区分,AES——对称加密;RSA——非对称加密。可以理解为,加密和解密公有一个秘钥的属于对称加密;加解密使用不同秘钥的属于非对称加密。非对称加密的出现是为了解决秘钥传输的问题,但相同秘钥长度的前提下,对称加密的强度要远远大于非对称加密的强度(毕竟两种加密算法设计时的目的就不相同)。

如果需要在设备与设备之间或者设备与服务端之间传输密文,可以考虑一下使用RSA,其他情况下不太建议使用RSA。RSA算法速度慢、没有AES强度大。

一、密码加密算法

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

1.1. 对称密码

image.png

1.2. 公钥密码(非对称密码)

image.png

二、对称密码(Symmetric Cryptography)

在对称密码中,加密、解密时使用的是同一个密钥。常见的对称密码算法有:DES、3DES、AES。

2.1. DES(Data Encryption Standard)

DES是一种将64bit明文加密成64bit密文的对称密码算法,密钥长度是56bit。规格上来说,密钥长度是64bit,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit。

2.1.1. 劣势:

由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复)。目前已经可以在短时间内被破解,所以不建议使用。

2.2. 3DES

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

2.2.1. 3个密钥都是不同的,也称为DES-EDE3

image.png

2.2.2. 如果密钥1、密钥3相同,密钥2不同,称为DES-EDE2

image.png

2.2.3. 如果所有密钥都使用同一个,则结果与普通的DES是等价的

image.png

2.3. AES(Advanced Encryption Standard)

取代DES成为新标准的一种对称密码算法,AES的密钥长度有128、192、256bit三种。

在2000年时选择Rijindael算法作为AES的实现,目前AES,已经逐步取代DES、3DES,成为首选的对称密码算法。

2.4. 密钥配送问题

在使用对称密码时,一定会遇到密钥配送问题。

假设,Alice将使用对称密码加密过的消息发给了Bob,只有将密钥发送给Bob,Bob才能完成解密,在发送密钥过程中,可能会被中间人窃取密钥,最后中间人也能完成解密。

三、公钥密码(Public-key Cryptography)

公钥密码中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥。公钥密码也被称为非对称密码(Asymmetric Cryptography)。

  • 加密密钥,一般是公开的,因此该密钥称为公钥(public key)

  • 解密密钥,由消息接收者自己保管的,不能公开,因此也称为私钥(private key)

  • 公钥和私钥是一 一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)

  • 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密

  • 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

3.1. 解决密钥配送问题

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

3.2. 主要的公钥密码算法:RSA

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

3.3. 公钥密码的缺点

加密解密速度比较慢

四、混合密码系统(Hybrid Cryptosystem)

混合密码系统,是将对称密码和公钥密码的优势相结合的方法。解决了公钥密码速度慢的问题,并通过公钥密码解决了对称密码的密钥配送问题。网络上的密码通信所用的SSL/TLS都运用了混合密码系统。

4.1. 混合密码-加密

4.1.1. 会话密钥(session key)

为本次通信随机生成的临时密钥。作为对称密码的密钥,用于加密消息,提高速度。

4.1.2. 加密步骤(发送消息)

  • 首先,消息发送者要拥有消息接收者的公钥。

  • 生成会话密钥,作为对称密码的密钥,加密消息。

  • 用消息接收者的公钥,加密会话密钥

  • 将前2步生成的加密结果,一并发给消息接收者

4.1.3. 发送出去的内容包括

用会话密钥加密的消息(加密方法:对称密码)

用公钥加密的会话密钥(加密方法:公钥密码)

image.png

4.2. 混合密码-解密

4.2.1. 解密步骤(收到消息)

消息接收者用自己的私钥解密出会话密钥,再用解密出来的会话密钥,解密消息。

image.png

五、单向散列函数(One-way hash function)

单向散列函数,可以根据根据消息内容计算出散列值。散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。

单向散列函数,又被称为消息摘要函数(message digest function),哈希函数。

输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)。

5.1. 单向散列函数的特点:

1.根据任意长度的消息,计算出固定长度的散列值

2.计算速度快,能快速计算出散列值

3.消息不同,散列值也不同

4.具备单向性

5.2. 常见的几种单向散列函数:

5.2.1. MD4、MD5

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

5.2.2. SHA-1

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

5.2.3. SHA-2

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

5.2.4. SHA-3

全新标准

image.png

5.3. 单向散列函数的应用:

1.防止数据被篡改

2.口令加密

image.png

六、数字签名

可以确定收到的消息的真实性,防止数据被篡改、伪装、否认。

在数字签名技术中,有以下2种行为:

1.生成签名:由消息的发送者完成,通过“签名密钥”生成。

2.验证签名:由消息的接收者完成,通过“验证密钥”验证。

6.1. 思考

如何能保证这个签名是消息发送者自己签的?(用消息发送者的私钥进行签名)

6.2. 数字签名和公钥密码

数字签名,其实就是将公钥密码反过来使用

image.png

6.3. 数字签名的过程

image.png

6.4. 数字签名的过程 – 改进

image.png

6.5. 数字签名的作用

数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改。

1.确认消息的完整性

2.识别消息是否被篡改。如果有人篡改了文件内容或者签名内容,签名验证失败,证明内容会篡改。

3.防止消息发送人否认

6.6. 数字签名无法解决的问题

要正确使用签名,前提是用于验证签名的公钥必须属于真正的发送者。如果遭遇了中间人攻击,那么公钥将可以是被伪造的,数字签名将失效。所以在验证签名之前,首先得先验证公钥的合法性。

6.7. 如何验证公钥的合法性?证书

image.png

七、证书(Certificate)

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

CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织

  • 有国际性组织、政府设立的组织

  • 有通过提供认证服务来盈利的企业

  • 个人也可以成立认证机构

7.1. 证书的作用

可以确认公钥的合法性,以保证获取到的公钥是没有被别人篡改过的。

image.png

八、iOS签名机制

8.1. iOS签名机制的作用

保证安装到用户手机上的APP都是经过Apple官方允许的,不管是真机调试,还是发布APP,开发者都需要经过一系列复杂的步骤:

1.生成CertificateSigningRequest.certSigningRequest文件

2.获得ios_development.cer\ios_distribution.cer证书文件

3.注册device、添加App ID

4.获得*.mobileprovision文件

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

8.2. 思考

每一步的作用是什么?

.certSigningRequest、.cer、.mobileprovision文件究竟里面包含了什么?有何用处?

8.3. iOS签名机制 – 流程图

image.png

8.4. 生成Mac设备的公私钥

CertificateSigningRequest.certSigningRequest文件,就是Mac设备的公钥。

image.png

8.5. 获得证书

ios_development.cer、ios_distribution.cer文件

利用Apple后台的私钥,对Mac设备的公钥进行签名后的证书文件

image.png

8.6. 生成mobileprovision

image.png
image.png

8.7. 安全检测

image.png

8.8. AppStore

如果APP是从AppStore下载安装的,你会发现里面是没有mobileprovision文件的。

它的验证流程会简单很多,大概如下所示:

image.png

九、p12文件

让别人可以调试同一个App。也就是说别人也可以通过p12文件通过苹果的签名验证。

所以该文件里包含了当初你的Mac生成的私钥、公钥和证书等信息。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 一、预备知识 1、常见英文encrypt:加密decrypt:解密plaintext:明文ciphertext:密...
    迷心迷阅读 2,414评论 2 4
  • iOS逆向开发(五)----iOS签名机制 根据密钥的使用方法,可以将密码分为2种: 对称密码 公钥密码(非对称密...
    会笑的Even阅读 645评论 0 0
  • 一 加密解密 二 单项散列函数 三 数字签名 四 证书 五 iOS签名机制 一 加密解密 加密是将明文信息改变为难...
    当前明月阅读 1,058评论 0 2
  • 一、预备知识 1、常见英文encrypt:加密decrypt:解密plaintext:明文ciphertext:密...
    Silence_xl阅读 864评论 0 0
  • 复习下杰哥的iOS签名机制: 学习路线 常见英文 学前须知 为了便于学习,设计4个虚拟人物Alice、Bob:互相...
    AlanGe阅读 360评论 0 0