iOS方面加密技术笔记

常见的加密术语

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,它经过了全世界密码学家所进行的高品质验证工作

  • 对称加密密钥配送
    1)事先共享密钥
    2)配送中心获取密钥
    3)Diffi-Hellman 密钥交换
    4)公钥密码
  • 非对称加密 RSA 又称公钥密码
    1)加密密钥称为公钥,供别人加密使用
    2)解密密钥称为私钥,由消息接受者,自己保管,不能公开
    3)公钥和私钥是同时生成,一一对应的
    4)由公钥加密的密文,必须由同该公钥对应的私钥才能够解开。
  • 优缺点
    1)对称加密,不能很好的解决密钥配送的问题
    2)非对称加密,加密解密相对时间较长。

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

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

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

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

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

  • 首先,消息发送者要拥有消息接收者的公钥
  • 生成会话密钥,作为对称密码的密钥,加密消息
  • 用消息接收者的公钥,加密会话密钥
  • 将前2步生成的加密结果,一并发给消息接收者

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


图片 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.防止消息发送者否认

  • 痛点:
    1)要正确使用数字签名的前提要:
    保证用于验证的公钥属于真正的发送者。
    2)如果遭受了中间人攻击:
    1>公钥将是伪造的
    2>数字签名将失效
    3)如何保证公钥的合法性
    证书

证书

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

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

证书的使用流程图

证书的使用.png

iOS签名机制

  • iOS签名机制的作用
    保证安装到用户手机上的app,都是经过apple官方允许的

  • 不管真机调试,还是发布到appstore都需要经历的步骤
    1.certifacateSigningRequest.certSigningRequest 文件
    2.获得iOS_development.cer,iOS_distribution.cer文件 证书文件
    3.注册device ID,app ID
    4.获得*.mobileprovision

每一步的作用
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文件的。

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

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,320评论 0 6
  • 学习路线 学前须知 如何防止被窃听? 如何加解密 密码的类型 根据秘钥的使用方法,可以将密码分为了两类 对称密码 ...
    Rathen阅读 1,380评论 1 4
  • 对称加密: DES DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使...
    十三亿少女梦丶阅读 1,104评论 0 10
  • 对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解...
    邱振源的博客阅读 1,178评论 0 2
  • 目标管理 七个人物法确定的人生目标:编程、演讲表达、写作。 2017年修炼的首要硬本领:编程(一技之长,有稳定的工...
    阿M哥阅读 172评论 0 0