写于前
iOS中常在哪些场景应用到
- 支付密码、验证码相关的业务场景
- 之前个人维护的一个数字证书模块,与密码学相关知识也紧密相关,同时数字证书在我们的业务场景中,是作为指纹支付的基础
- iOS的签名机制。常常跟着网上的教程一顿操作,然而却不知道原理是什么。个人觉得,知道原理后续遇到问题也更能快速定位哪个环节的问题,也能学习优秀的技术方案是如何设计的
写一个系列
- 对称加密&非对称加密&混合加密
- 单向散列函数&数字签名&数字证书
- iOS签名机制
本文概要
- 白话厘清概念,分析优缺点(不累述算法实现)
- 看完,能对平常接触的AES,RSA,公钥,私钥,哪个加密,哪个解密有清晰的了解
对称加密(Symmetric Cryptography)
- 加密,解密使用同一个密钥
常见的加密方式:
DES(Data Encryption Standard)
- 如上,简单流程,补充几点:
- 明文密文都是64bit
- 密钥64bit,每隔7bit有一个错误检查专用位,实际密钥长度为56bit
- 缺点:每次加密只能64bit,数据较大时需要反复迭代。且DES加密目前已不安全
3DES
- 3重DES操作,第二次为解密
- 如上,简单流程,补充几点:
- 3次密钥不同:DES-EDE3。Key1与Key3可以相同,成为DES-EDE2
- 缺点:此为在DES的基础上的增强加密强度,然而带来了多个密钥的维护成本,同时影响了处理速度,目前已不安全
- 3重DES操作,第二次为解密
- AES(Advanced Encryption Standard)
- 目前首选的新标准的对称加密算法,速度快,安全级别高
- 密钥长度:128bit,192bit,256bit三种
- 基于排序和置换运算,迭代的算法,用128bit(16字节)分组加密解密数据
对称加密的优缺点:
- 优点:计算量小,速度快,效率高
- 缺点:密钥配送问题
- 因为加解密密钥相同,密钥肯定不能直接传输,遭遇中间人攻击窃取,存在很大的风险。目前常见的解决方案:
- 提前共享密钥
- 数据传输前分享密钥,但如果一方泄露,隐患仍较大。且麻烦
- 密钥分配中心
- 目前在我们的业务场景中就有应用:在运用AES加密前,前端申请分配中心生成与该用户对应的密钥,加密数据后传给后端,后端从分配中心同样获取密钥,进行解密
- 相对安全
- Diffie-Hellman密钥交换:在公共信道上安全交换加密密钥的方法(没有深入研究过,大家可以自行深入理解下)
- 非对称加密
非对称加密(ASymmetric Cryptography)
- 简介
- 又称公钥加密-Public-Key Cryptography
- 公钥(public key):公开,用于加密
- 私钥(private key):消息接收者保管,不公开,用于解密
- 一一对应,一起生成成为密钥对
- 简易流程图:
- 最常用的加密方式:RSA(名称由三位提出者的首字母拼成)
- 第一个能同时用于加密和数字签名的算法
非对称加密的优缺点:
- 优点:解决密钥配送问题,分公私钥,安全性高
- 缺点:加解密速度慢
补充:
- 公钥对数据加密,必须使用私钥解密
私钥对数据加密,必须使用公钥解密
到底公钥,私钥哪个用来加密???
- 之所以,在后面补充这一点,我之前也对到底是公钥加密还是私钥加密很混乱。因此先对前面的知识点熟悉了,再了解这一点。
一张知乎问答来结束到底哪个是用来加密的问题?
- 私钥加密的应用场景:数字签名(下一篇文章会提到)
混合加密(Hybrid Cryptography)
- 为了结合对称加密速度快和非对称加密安全性高的优点,同时规避两者缺点,产出的方案
- 加密过程:
- 会话密钥:由伪随机数生成器生成的临时密钥,又作对称密钥
- 解密过程:此处流程图略,看了加密过程的图,解密过程应该也很清晰
- 一句话概括:
- 发送者用非对称加密的公钥对对称加密的密钥加密
- 用对称密钥对消息进行加密
- 接收者用私钥解密获得对称加密的密钥,来解密消息
总结:
- 对称加密速度快,但存在密钥配送问题,常见的有AES
- 非对称安全性高,但速度慢,常见的有RSA
- 混合加密,结合两者优点
- 非对称加密是公钥(公开)加密,私钥解密。
- 私钥加密(签名),公钥解密(验签)(下回再说)。