Blog

Session ID(HTTPS)

Content #

“Session ID”,就是客户端和服务器首次连接后各自保存一个会话的 ID 号,内存里存储主密钥和其他相关的信息。当客户端再次连接时发一个 ID 过来,服务器就在内存里找,找到就直接用主密钥恢复会话状态,跳过证书验证和密钥交换,只用一个消息往返就可以建立安全通信。

Handshake Protocol: Client Hello
    Version: TLS 1.2 (0x0303)
    Session ID: 13564734eeec0a658830cd…
    Cipher Suites Length: 34


Handshake Protocol: Server Hello
    Version: TLS 1.2 (0x0303)
    Session ID: 13564734eeec0a658830cd…
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)

通过抓包可以看到,服务器在“ServerHello”消息后直接发送了“Change Cipher Spec”和“Finished”消息,复用会话完成了握手。

Viewpoints #

From #

28 | 连接太慢该怎么办:HTTPS的优化

CRL与OCSP

Content #

客户端的证书验证其实是个很复杂的操作,除了要公钥解密验证多个证书签名外,因为证书还有可能会被撤销失效,客户端有时还会再去访问 CA,下载 CRL 或者 OCSP 数据,这又会产生 DNS 查询、建立连接、收发数据等一系列网络通信,增加好几个 RTT。

CRL(Certificate revocation list,证书吊销列表)由 CA 定期发布,里面是所有被撤销信任的证书序号,查询这个列表就可以知道证书是否有效。

但 CRL 因为是“定期”发布,就有“时间窗口”的安全隐患,而且随着吊销证书的增多,列表会越来越大,一个 CRL 经常会上 MB。想象一下,每次需要预先下载几 M 的“无用数据”才能连接网站,实用性实在是太低了。

所以,现在 CRL 基本上不用了,取而代之的是 OCSP(在线证书状态协议, Online Certificate Status Protocol),向 CA 发送查询请求,让 CA 返回证书的有效状态。

但 OCSP 也要多出一次网络请求的消耗,而且还依赖于 CA 服务器,如果 CA 服务器很忙,那响应延迟也是等不起的。

于是又出来了一个“补丁”,叫“OCSP Stapling”(OCSP 装订),它可以让服务器预先访问 CA 获取 OCSP 响应,然后在握手时随着证书一起发给客户端,免去了客户端连接 CA 服务器查询的时间。

Viewpoints #

From #

28 | 连接太慢该怎么办:HTTPS的优化

前向安全(Forward Secrecy)

Content #

浏览器默认会使用 ECDHE 而不是 RSA 做密钥交换,这是因为它不具有“前向安全”(Forward Secrecy)。

假设有这么一个很有耐心的黑客,一直在长期收集混合加密系统收发的所有报文。如果加密系统使用服务器证书里的 RSA 做密钥交换,一旦私钥泄露或被破解(使用社会工程学或者巨型计算机),那么黑客就能够使用私钥解密出之前所有报文的“Pre-Master”,再算出会话密钥,破解所有密文。

这就是所谓的“今日截获,明日破解”。

而 ECDHE 算法在每次握手时都会生成一对临时的公钥和私钥,每次通信的密钥对都是不同的,也就是“一次一密”,即使黑客花大力气破解了这一次的会话密钥,也只是这次通信被攻击,之前的历史消息不会受到影响,仍然是安全的。

所以现在主流的服务器和浏览器在握手阶段都已经不再使用 RSA,改用 ECDHE,而 TLS1.3 在协议里明确废除 RSA 和 DH 则在标准层面保证了“前向安全”。

Viewpoints #

From #

27 | 更好更快的握手:TLS1.3特性解析

复杂系统的共性

Content #

1. 复杂的集体行为前面讲到的所有系统都是由个体组分(蚂蚁、B细胞、神经元、股票交易者、网站设计人员)组成的大规模网络,个体一般都遵循相对简单的规则,不存在中央控制或领导者。大量个体的集体行为产生出了复杂、不断变化而且难以预测的行为模式,让我们为之着迷。 2. 信号和信息处理所有这些系统都利用来自内部和外部环境中的信息和信号,同时也产生信息和信号。 3. 适应性所有这些系统都通过学习和进化过程进行适应,即改变自身的行为以增加生存或成功的机会。

From #

复杂

细菌毒素和膳食纤维

Content #

益生元的好处之一是帮助好细菌壮大,这样坏细菌就会减少,产生的毒素自然也会减少。尤其是谁肝脏出了问题的话,那他排毒的能力也会降低,连肚子里本来一点无足轻重的毒素这时候也会变成大负担。细菌毒素在每个人身上的显示征状都不一样,从疲劳到肌肉颤抖到昏迷都有可能。医院里在对待这类病人的时候,会在餐饮中加入大量的益生元。一般情况下,病人的情况都能有所好转。

即使对于健康人来说,细菌毒素也是有百害而无一利。如果摄入的膳食纤维太少,才刚走完肠子的前半段就被细菌吃光了,那肠子后半段的细菌没的吃,只能吃剩下来的垃圾,比如没被消化掉的蛋白质。把细菌和肉放在一起,往往都不是什么好主意,想想酸掉臭掉的肉制品就能明白这一点。在肠子里细菌吃太多肉类蛋白的话,产生的毒素会伤害到大肠,严重的时候甚至能引发癌症。大肠癌最高发的部位就是肠子末端,细菌毒素可能不是唯一的原因,但它们也绝不能被忽视。所以多吃益生元可以预防大肠癌,这点也已经在很多研究里面被证实了。

From #

肠子的小心思

乳杆菌和双歧杆菌特别喜欢吃的食物

Content #

乳杆菌和双歧杆菌特别喜欢吃百合科和菊科植物。葱、芦笋、洋葱和大蒜都属于百合科,莴苣、鸦葱、洋姜和洋蓟都是属于菊科的。除此之外,抗性淀粉(难消化淀粉)也很受它们的青睐。

抗性淀粉也被称为抗酶解淀粉,因为它们在小肠里不能被酶解吸收。土豆、香蕉、大米里面都含有抗性淀粉。而且把土豆和大米烧完冷却后再吃,还可以提高里面抗性淀粉的含量,所以土豆沙拉和寿司比土豆丝盖浇饭要更受乳酸菌的欢迎,因为里面能顺利通过小肠到达大肠的口粮更多。如果你平时不怎么吃这些食物,那就赶紧改变下饮食习惯吧。而且如果你经常吃它们的话,哪天突然不吃了,还会想得不得了呢!(是你想还是你的益生菌帮你想,那就不好说了)

From #

肠子的小心思

膳食纤维是肠道菌群的挚爱

Content #

细菌要比我们小得太多,所以细菌看待食物的角度自然与我们完全不同。一颗小小的玉米粒对它们来说就已经是一顿让全村人围着载歌载舞的饕餮大餐。所有我们在小肠无法吸收的食物,我们统称为膳食纤维。你可别因此觉得膳食纤维吃下去也是浪费,我们吸收不了,可有人能啊。膳食纤维是肠道菌群的挚爱。挚爱里面又有偏爱,有的细菌特别喜欢消化不掉的植物纤维,有的特别喜欢消化剩下来的肌肉纤维……

几乎每个医生都会告诉你,要多补充膳食纤维。但是你真的知道为什么要补充它们吗?因为它们可以保障有足够多的食物能够顺利到达大肠供细菌们享用,尤其是好细菌们。细菌们吃饱喝足了才会有动力为我们制造维生素和健康的脂肪酸,或者尽心地训练免疫系统。除了好细菌以外,在大肠里也有很多病菌,它们吃了喜欢的食物以后会释放吲哚、苯酚或者氨气——在我们实验室,这些东西可都贴着危险化学品标志呐。

所以益生元的意义就在于,它们是只有好细菌才喜欢吃的膳食纤维。比如白砂糖就不是益生元,因为龋齿细菌也喜欢吃它。益生元必须是坏细菌讨厌的食物,即使吃了它也造不出有害物质来。而好的细菌吃了益生元则能够不断壮大,在和坏细菌的斗争中抢下更多地盘。

From #

肠子的小心思

大肠杆菌E.coliNissle 1917

Content #

另一个益生菌种类——大肠杆菌E.coliNissle 1917。 E.coliNissle 1917是从一名退伍士兵的粪便里分离出来的:在巴尔干战争中,这名士兵所有的战友都拉肚子拉得很厉害,只有他跟没事人一样。自从发现了这个细菌后,已经有很多实验都证明了它在治疗腹泻、肠病和提高免疫力方面的良好效果。现在这位老兵已经去世了,但是他大便里的细菌还在医药实验室里活得好好的。而且它们在药房里也有销售哦,你感兴趣的话可以去一尝为快。

From #

肠子的小心思