iOS方面加密技术笔记

2019-01-15  本文已影响0人  一叶知秋悟空

常见的加密术语

1.encrypt 加密
2.decrypt 解密
3.plaintext 明文
4.ciphertext密文

单项散列函数 又称哈希函数 one way hash function

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

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

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

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

4.具备单向性,根据散列值,无法计算出消息

应用场景:
1.防止数据被篡改,譬如对一个文件进行哈希计算,将哈希值保存到安全的地方,过段时间对文件再次进行哈希计算,如果两次的值一样,说明原文件没有改动。对软件镜像网站下载的软件和官网提供的哈希值对比,就能够知道软件是否被篡改过。
2.加密口令,像密码,加密后的哈希值不可以逆,防止明文密码。使用sha2以上的hash函数。

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

3)SHA-1
产生160bit的散列值,目前已经不安全

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

5)SHA-3
全新标准

对称加密

注(看到这个,我想到了雍正使用带锁的匣子上密折,一个锁,两把同样的钥匙,每个大臣的锁都不一样,只有皇帝和大臣(自己的锁)能打开锁。加密的途径)

1)DES
DES是一种将64bit明文加密成64bit密文的对称密码算法,密钥长度是56bit
规格上来说,密钥长度是64bit,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit
由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复)
目前已经可以在短时间内被破解,所以不建议使用

2)3DES 3次DES加密
加密流程
密钥1 加密 ->密钥2 解密 -> 密钥3 加密,
解密流程
密钥3 解密 -> 密钥2 加密 -> 密钥1 解密
DES 目前已被破解,基本废弃 被一些银行系统使用,处理效率不高,安全性逐渐暴漏

  1. AES 正在使用的加密技术,对称加密选择这个
    取代DES成为新标准的一种对称密码算法

AES的密钥长度有128、192、256bit三种

在2000年时选择Rijindael算法作为AES的实现

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

一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用AES,它经过了全世界密码学家所进行的高品质验证工作

混合加密技术 混合加密系统Hybrid cryptosystem

1)对称加密加密明文信息
2)公钥加密会话密钥(session key),通信随机生成的密钥

网络上密码通信使用的SSL/TLS 使用的就是混合加密技术。

3)会话密钥(session key)
为本次通信随机生成的临时密钥
作为对称密码的密钥,用于加密消息,提高速度

4)加密步骤(发送消息)

发送出去的内容包括
用会话密钥加密的消息(加密方法:对称密码)
用公钥加密的会话密钥(加密方法:公钥密码)
流程图


图片 1.png

发送流程
Alice >>>>> Bob
发送过程,加密过程
1.Bob先生成一对公钥、私钥
2.Bob把公钥共享给Alice
3.Alice随机生成一个会话密钥(临时密钥)
4.Alice用会话密钥加密需要发送的消息(使用的是对称密码加密)
5.Alice用Bob的公钥加密会话密钥(使用的是公钥密码加密,也就是非对称密码加密)
6.Alice把第4、5步的加密结果,一并发送给Bob

接收过程,解密过程
1.Bob利用自己的私钥解密会话密钥(使用的是公钥密码解密,也就是非对称密码解密)
2.Bob利用会话密钥解密发送过来的消息(使用的是对称密码解密)

数字签名

数字签名:
思考,如何保证数字签名是消息发送着自己签的?
消息发送着使用私钥进行签名。私钥只有消息发送着自己拥有

步骤:
1.生成签名
使用发送者的私钥进行签名
2.验证签名
使用发送者的公钥进行验证

数字签名流程

数字签名流程图


数字签名流程图.png

最后解密后的散列值和计算消息的散列值相同,则表示数字签名有效,是消息发送着本人发送,消息没有被篡改。

数字签名的作用:
1.确认消息的完整性
2.识别消息是否被篡改
3.防止消息发送者否认

证书

密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似
证书的作用:保证公钥的合法性。证明一个人的公钥确实属于此人。
方法是有权威机构对该人的公钥进行数字签名。
证书内容
1.姓名,邮箱,此人公钥
2.并由认证机构(Certificate Authority,CA)施加数字签名

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

证书的使用流程图

证书的使用.png

iOS签名机制

每一步的作用
1.相当于mac 公钥
2.apple 私钥对mac公钥,邮箱,用户名等信息的哈希值数字签名,还生成一个签名文件, 生成的证书,
3.设备唯一编码,app 唯一编码
4.描述文件,中包含 证书,app id ,device id ,然后apple 通过私钥对这些数据的哈希值进行一个数字签名,生成一个签名文件,

iOS 签名机制

屏幕快照 2018-11-07 12.20.16.png

apple store下载的ipa中,是没有mobileprovision文件的。

上一篇 下一篇

猜你喜欢

热点阅读