📚密码学
1.密钥交换方案
PKI (Public KeyInfrastructure)公钥基础设施
PKI(Public Key Infrastructure ) 即”公钥基础设施”,是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系(哈哈,加粗提取主谓宾),简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。
通俗来讲,PKI 是互联网安全信任的基础
完整的 PKI 系统必须具有以下五个部分
CA 认证机构:提供数字证书的申请签发、是第三方权威机构
数字证书库:存放已发放的证书
密钥备份及恢复系统:为证书申请方提供服务
证书作废系统:过期证书作废
应用接口(API):提供基础的服务应用接口,如加密、数字签名等
- 单纯的对称、非对称加密、以及他们的结合都不安全,因为无法在传输密钥时保证保密性、真实性、完整性
- 仅仅是加上摘要的数字签名,也可能会遭遇重放攻击、而且无法保证真实性,只能保证完整性、保密性
- 如果有了 CA 颁发的证书,就可以确保真实性
Diffi-Halman 非对称密钥交换
是一个密钥交换的方案,如下图可以容易知道整个过程。
最后的 K 即是两方交换得到的密钥。
而基于 离散对数问题 ,攻击者是无法根据 A \ B \ g \ p 计算出 a \ b \ K 的。
所以这是一个安全的方案。
2.DES、AES
DES结构
AES结构
我使用 java 原理复现的 AES 加解密文件程序
https://github.com/ColaLinN/cryptology_project
3.非对称密码 RSA Elgamal
RSA——离散对数问题
Elgamal——椭圆曲线离散对数问题
4.hash算法 MD5、SHA、HMAC
几种实际应用
hash冲突解决
https://www.cnblogs.com/higerMan/p/11907117.html
由于数据过多,会有数据产生相同的哈希值
- 开放地址方法 :线性探测、再平方探测、伪随机探测 (即尽力找到一个空的)
- 链式地址法:相同哈希值下用链表连接
- 建立公共溢出区:用多余的空间存放冲突的数据
- 再哈希法:再次进行哈希,有点同法一
hashtable
即链式哈希表
加盐
在给密码哈希前加入随机数,或者是用户名等“盐”
即使得到密码的哈希,也碰撞不出密码加盐后的哈希
6.隐私保护
安全多方计算
一句话:安全多方计算即多个用户在不泄露数据的情况下进行计算等操作
比较经典的问题:
百万富翁问题:多个富翁想比较财产多少,但又出于某些考虑不能将财产总价值泄露出来,于是衍生出了安全多方计算问题。
安全多方计算目前有两大类:基于差分隐私的、不基于差分隐私的。
不基于差分隐私的主要有三类:混淆电路、同态加密、零知识证明
一句话:保护的是数据源中一点微小的改动导致的隐私泄露问题。
作用于任何相近的数据集,得到一个特定输出 的概率应差不多,那么我们就说这个算法能达到差分隐私的效果。也就是说,观察者通过观察输出结果很难察觉出数据集一点微小的变化,从而达到保护隐私的目的。
一句话:一些人各自拥有其隐私数据,他们想把这些数据合起来算点什么,但又不想把数据交给别人,混淆电路解决的就是此类问题。(即百万富翁问题的解决)
把计算公式化为门电路图
Alice和Bob想计算一个与门。该门两个输入线 和 和一个输出线 ,每条线有0和1两个可能的值。Alice首先给每条线指定两个随机的key,分别对应0和1。
然后,Alice用这些密钥加密真值表,并将该表打乱后发送给Bob。加密过程就是将真值表中每一行对应的 和 的密钥加密 的密钥。这一加密+打乱的过程,就是混淆电路(garbled circuit)的核心思想。
Bob 收到之后,用 Alice 的输入 Ex,以及自己的输入 Ey 解密四个数据Kz , 最终成功解密一个kz(密文),Bob将其发给Alice,Alice即可知道比较结果。
混淆电路+不经意传输 GC+OT
主要可以如下流程应用,OT是不经意传输,可以保障Bob在Alice不知道的情况下从Alice处得到想要的Ey
一句话:密钥分享(secret sharing)可以在数据不被泄露的情况下,将计算任务分布式计算。
不用混淆电路GC的原因是,一些常见的算术操作(如乘法、乘方等),电路也非常复杂,GC的效率不够高。
一句话:密文的运算可以同步到明文中。
全同态加密:加法、乘法均同态
半同态加密:加法、乘法只满足其一
其中,RSA满足乘法同态,Paillier加密方案满足加法同态。
如下为RSA的同态举例:
一句话:A在不让B知道任何数据的情况下,向B证明某件事是可信的。
中心化差分隐私、本地化差分隐私
本地化差分隐私(Local Differential Privacy)浅析
匿名化
- K匿名化和I多样性:通过准标识符可以充分识别唯一一个个体,例如身份证号。K匿名化通过扰动和泛化的方法使得每一个准标识符都至少对应k个实例,这样就不能唯一识别,从而保护了用户的隐私。
- 差分隐私:通过添加噪声的方法,确保删除或者添加一个数据集中的记录并不会影响分析的结果;因此,即使攻击者得到了两个仅相差一条记录的数据集,通过分析两者产生的结果都是相同的,也无法推断出隐藏的那一条记录的信息。
- 分布式隐私保护:大型的数据集可以在被分割后发布。
身份脱敏、内容脱敏
身份证脱敏处理(业务开发中,有时候身份证需要隐藏一部分)
1 | import org.apache.commons.lang3.StringUtils; |
搭建一个安全多方计算的框架——实战、相关的工具
8.黑盒 白盒 灰盒密码
一句话概述:密码的加密、解密过程是否可以被公开
https://zhuanlan.zhihu.com/p/21273220