一次性密码本
本质上是加密空间和信息空间相当. 所以任意一个密钥都会对应一个信息.
只要这个"密钥"只被使用一次, 那就什么统计信息都得不到.
因为空间相当, 密钥和要传递的信息本身包含的信息一样多. 所以产生了密钥配送悖论
: 能送密钥为啥不直接送信息本身?
但是有意义, 可以提前送密钥, 晚送信息, 那么信息可以得到瞬间的解密. 产生时间上的价值.
对称密码
-
feistel 算法
就是用信息本身作为密钥的一部分.round
的概念和enigma 的轮转
几乎是一样的. -
书里完全没有提
DES 的子密钥
是如何被产生的, 只是说这个是每round
都不同的. 其实也就是通过根密钥
通过其他某些算法得到的. -
有函数没有反函数这个事情好有意思
-
对称密码里大量使用
XOR
为了方便加解密
Hash
-
HASH 一定会碰撞. 因为信息空间大于指纹(散列值)空间. 比如用
sin
/cos
, 即便x
轴无限延伸, 但是y
轴只会在[-1, 1]
. -
(对实现签名的猜测, 在后文得到验证) 非对称密钥本来是, 公开的加密+隐私的解密密钥的组合. 如果反过来, 私密的加密+公开的解密 密钥组合, 就可以实现 “签名” 这样的功能. 比如一份信息, 加上
encrypt(hash(信息) + "是真的")
传给别人, 就可以.
消息认证码 MAC
-
nonce
其实和 序号一样啊. 都需要接收者记录. 序号只记录一个就行. 但是要保证nonce
的唯一性, 要记录的要多的多. 为啥比序号好呢?为了不可预测? -
防止否认
好像和让第三方确认
是等价的.
证书
-
自签名有什么意义? 既然大家有你的解密公钥(如此签名才可以被认可), 你再签名一个干啥? 再给大家显摆一遍"我有你手上的公钥对应的私钥"? 但是如果去掉 (图10-5) 的第一级, 有什么区别吗?
-
任何人都可以成为 CA 这个事情有意思. 所以对认证机构本身的认可也十分重要啊.
-
我自己所持有的公钥中, 哪一个最可信.
密钥的保密性
Q: 用口令和盐加密的 CEK
/KEK
不就等同于降低了 CEK
的强度吗?(只要 口令
比 Key
短) 而且增加了一层让破解的机会多了一个. 所以这样有啥意义? 还不如直接用口令当作 CEK.
A: 当然还是比直接用口令强. 到底是一种 “记得住” 和 “保密” 的 trade-off. 肯定没有"直接安全保存 CEK
" 安全, 但是比 “弱 口令
直接加密” 强.
更有意义的是, 这里有一种 “分离” 的思想: 可以通过组合一些 密钥
, 并且对 密钥
执行不同的加密保存方式, 比如随机数打印下来, 口令
记在脑子里, 私钥
保存在 U 盘里, 对于不同特征, 用不同的方式.
理想情况下, 保证攻击者得到任何一部分都不会导致问题. 所以最终的关系是,
如果对于每一个环节, 假设
P(泄漏+碰撞+社工+...) = Pi
,
如果能让被攻破的概率是乘法,P1*P2*..*Pn
. 即, 让每个环节之间的关系是&&
而不是||
(任何一个点被攻破, 相当于那个P
变成1
)
随机数
-
Q: 是不是"只要是有限域离散的
随机数
(比如骰子, 只能是1,2..6
) 就一定是可复现的"?
A: 错. 骰子的值是真随机数
. 序列不可复现. -
伪随机生成器
好像一定是会有内部状态. 无论如何也无法摆脱一个可能被泄漏的种子
. 好伪随机数生成器
其实就是内部状态的保密的好. +加入不可预测的随机搅乱随机状态. +无法被反推的内部状态. -
因此
随机生成器
是密钥
的源头. 如此, 为了避免它成为脆弱点, 使用大量分离的各自独立的密钥
就很宝贵. 和上文呼应.
PGPGP
-
被破解不一定没意义.
SHA1
还在被大量使用.MD5
属于非常容易被破解, 但是SHA1
还处在"确定能被艰难破解"的阶段. 所以并不是没有价值. -
从
GPG
的用法看出来,自签名
就是为了统一所有密钥
的 “接口”. 这样可以所有的流程都是通用的, 可以代入自己密钥
, 不过拥有最高的权限罢了 -
为什么会有人想统一
签名的解密公钥
和作为非对称加密的加密公钥
? 为什么要复用这个? -
关于信任网: “相信你是你” 和 “相信你的判断” 是两回事.
SSL/TLS
-
因为
SSL/TLS
实际是给transport layer
加密, 所以其实连URL
都不会被暴露. 不过FQDN
代表的IP
是无法幸免的 -
P345. 说当证书信息不足时需要做 ServerKeyExchange。这个信息不足的情况就比如,如果我们选择了 ECDHE 做密钥交换,那么还需要曲线参数。
-
关于
心脏流血
: 即便这些被广泛使用的suite
都有这么明显致命的漏洞啊.