Telegram Channel
记录和分享有趣的信息。

Record and share interesting information.

contact: [email protected]
Laisky's Notes
踩了个小坑,我有一台廉价的 storage VPS,系统是 ubuntu 16.04 + 2.6.32。这台机器上我跑了一个 minio + nginx + tailscale 当 s3 用。配置非常差,我一般懒得登上去。然后我家里的台式机上也有一个 minio 作为 replica,这个 minio 我经常升级。两个 minio 的版本就越差越远。 然后昨天晚上,线上的 minio 因为鉴权不兼容,在 sync 的时候居然挂了。我登上去手动更新了一下可执行文件即可。 借此机会想抒发几个感慨: 1.…
今天早上我的 s3 又故障了,下载文件的速度只有 0.5mbps,我上机器测了下速没问题,然后用另一台机器和这台 s3 服务器跑了下 iperf 也没问题。基本确认是 cloudflare 欧洲的 cdn 网络节点故障了(s3 服务器在立陶宛)。我把 s3 服务器的网关改到美国,然后在美国接入 cloudflare cdn,速度就恢复到 100+mbps 了。

感觉 cloudflare 最近越来越不稳定了。就我个人来说,从他们开源的 cfssl 代码,和 cloudflared 的软件质量来说,我感觉这公司做事情很糙。
Laisky's Notes
前文介绍了 TPM 的 PCRs 会度量和记录系统的状态链。 然后介绍一点点密码学基础,密码学上有一个函数叫做 KDF(Key derivation function)。一般在一个比较完善的密码管理系统里,比如 KMS(Key Management Service)只会持有一个或少量的 Root Key,或者叫 Master Key。然后在运行时,根据收到的请求,进行实时的密钥派生,派生的方法就是 new key = KDF(master key, new key info)。或者你就简单地记住:用一个…
前文提到实际的密码更复杂,现在就具体看看 BitLocker 的密钥生成和加密流程:

1. OS 生成一个加密磁盘的 AES 密钥 FVEK
2. 再生成一个用于加密 FVEK 的 VMK
3. 用 TPM PCR + PIN 加密 VMK
4. 将加密后的 VMK、FVEK 保存到磁盘头
5. 将 VMK 作为 RecoverKey 上传到 AD、个人账户中,或者由用户自行保管
6. 用 FVEK 对磁盘进行全盘加密

使用时,OS 启动后,使用 TPM PCR + PIN 解密 VMK,如果系统启动的全流程都未被篡改,就可以成功解密 VMK,然后用 VMK 解密 FVEK,最后再用 FVEK 解密磁盘。系统被篡改、TPM 被损坏、磁盘被换到其他机器都会导致无法解密,从而提高了磁盘数据的安全性,而且用户还完全无感知。

用户持有的是 PIN 和 VMK(恢复密钥),真实加密数据的 FVEK 永不出域。

这种设计在密钥体系中很常见,一般称为 hierarchy key structure,实际加密数据的密钥是永不出域的,出域的密钥都是可以随时轮替的。无论用户是要修改 PIN 还是修改 VMK,都不会影响到 FVEK。毕竟 FVEK 变化所导致的成本非常高昂,需要对所有数据进行重新加解密。

next: https://t.me/laiskynotes/78
Laisky's Notes
TPM 是一个硬件加密芯片,这个只有几厘米大小的小芯片内内置了 24 个寄存器,称为 PCRs(Platform Configuration Registers),每个寄存器都可以保存一个 SHA256/384 的哈希值。这些 PCRs 寄存器保存的值在断电后会被清空,但是在工作状态时,仅允许被写入一次,一旦写入就变成只读。 这一系列的 PCRs 被用来记录系统启动时不同阶段的度量值。机器启动的每一个重要阶段,都会度量(measure)当前的状态(你可以把度量理解为对系统当前状态计算一个 hash value),传给…
前文介绍了 TPM 的 PCRs 会度量和记录系统的状态链。

然后介绍一点点密码学基础,密码学上有一个函数叫做 KDF(Key derivation function)。一般在一个比较完善的密码管理系统里,比如 KMS(Key Management Service)只会持有一个或少量的 Root Key,或者叫 Master Key。然后在运行时,根据收到的请求,进行实时的密钥派生,派生的方法就是 new key = KDF(master key, new key info)。或者你就简单地记住:用一个根密钥,加上一段任意信息,就可以派生(derive)出一个新的密钥。而且派生过程是确定性的,相同的 master key 和 key info 永远能派生出相同的新密钥。

再补充一点 TPM 的知识,像 TPM 这样的加密芯片(Secure Processor),类似的还有 Apple T2、Intel PTT、AMD fTPM 等,其核心都是一个 tamper-proof 的 NVRam(Non-Volatile Memory)。用普通人都能理解的话来说就是,其内部有一个外面的人绝对不可能窥探的存储器,可以保存一个绝对不会外泄的设备根密钥。这个根密钥没有任何人知道,连制造商都不知道,只有这个加密芯片它自己才知道。

好了,现在我们把 TPM 的设备根密钥当作 master key,把 TPM PCRs 当作 key info,再调用一个 KDF 函数,就可以派生出一个密钥来。如果拿这个密钥来加密你的磁盘,那么就可以保证只有这块 TPM 在一个未篡改的操作系统(OS)上才能解密你的磁盘啦。

Ps. 实际上的密钥体系远比这复杂,但基础原理就是这样的。
Ps2. 我有维护一个术语表,你可以查询提到的术语的含义 https://wiki.laisky.com/terms/

next: https://t.me/laiskynotes/73
Laisky's Notes
公司的 IT 群发了一封关于有人 PC 被 BitLocker 锁死无法恢复的邮件通知,可能有的人不了解 BitLocker 究竟是什么,正好聊聊这个话题。 BitLocker 是 Windows 上的一个对磁盘做全盘加密的软件。它为磁盘提供 at-rest 的防护。通俗地说就是,它用来保障即使你的硬盘被坏人偷走,坏人也没法破解其中的数据。这块硬盘必须要由它当前所在的这台机器(主要是同一块主板上的 TPM 芯片)才能解锁。 这段描述中有几个关键信息: 1. BitLocker 提供的是 at-rest…
TPM 是一个硬件加密芯片,这个只有几厘米大小的小芯片内内置了 24 个寄存器,称为 PCRs(Platform Configuration Registers),每个寄存器都可以保存一个 SHA256/384 的哈希值。这些 PCRs 寄存器保存的值在断电后会被清空,但是在工作状态时,仅允许被写入一次,一旦写入就变成只读。

这一系列的 PCRs 被用来记录系统启动时不同阶段的度量值。机器启动的每一个重要阶段,都会度量(measure)当前的状态(你可以把度量理解为对系统当前状态计算一个 hash value),传给 TPM。TPM 将其和启动以来收到的所有值加和到一起,计算出一个 hash value,存入指定的 PCR。

你可以认为,TPM 就是一个硬件 blockchain,每一个 PCR 就是一个 block,每一个 block 都包含了前一个 block 的 hash value,这样就形成了一个不可篡改的链条。可以用来证明系统从启动之初到当前的状态链。从而可以用来证明系统的 BIOS/UEFI 和 kernel 没有被篡改(保证了完整性)。

next: https://t.me/laiskynotes/71
公司的 IT 群发了一封关于有人 PC 被 BitLocker 锁死无法恢复的邮件通知,可能有的人不了解 BitLocker 究竟是什么,正好聊聊这个话题。

BitLocker 是 Windows 上的一个对磁盘做全盘加密的软件。它为磁盘提供 at-rest 的防护。通俗地说就是,它用来保障即使你的硬盘被坏人偷走,坏人也没法破解其中的数据。这块硬盘必须要由它当前所在的这台机器(主要是同一块主板上的 TPM 芯片)才能解锁。

这段描述中有几个关键信息:

1. BitLocker 提供的是 at-rest 静态保护,开机后的数据安全不归他管。
2. 必须要先解锁才能使用磁盘,所以不要把恢复密钥放在磁盘上,这相当于把保险箱钥匙锁保险箱里。

启用 BitLocker 需要有 TPM 2.0 芯片,你可以对照你的主板型号去买一个插上,也就 30 块钱左右。

BitLocker 有多种加密方式,推荐使用 BitLocker + PIN 的模式,这样的话你会有两个密码:

1. PIN 密码:解锁磁盘需要人工输入的密码
2. Recover Key:解锁失败时的恢复密钥

使用 PIN 是为了提高安全性,因为单纯依赖 BitLocker + TPM 的自动开机解密存在被绕过的可能性,要求输入 PIN 可以彻底堵上这个漏洞。PIN 和 TPM 必须协同作用才能解锁磁盘。Recover Key 则是最后的急救手段,可以无需 TPM 就解密数据,应该妥善地离线保管在安全的地方。(这两个密钥都不应该保存在被加密的硬盘里)

后续会另发一篇介绍 TPM 是什么,是如何实现加密的。

next: https://t.me/laiskynotes/69
https://laisky.notion.site/How-Hype-Will-Turn-Your-Security-Key-Into-Junk-ac50dfbc44354bdfab17ef76e72ece13
非常不错的文章,介绍了目前 passkey 领域可能正在走的一条歧路。

补充:关于 yubikey 是什么,以前写过一篇文章 https://blog.laisky.com/p/yubikey/

众所周知,FIDO、WebAuthn 等正在推动 passwordless,也就是放弃让用户记忆 password,转而采用 security key 等固件来实现无密码身份认证。

除了 yubikey 等专用设备外,各类内置加密芯片的 iphone、android、mac 等设备也可以集成 passkey。

但是 passkey 的具体实现上,存在 resident key/non-resident key 两条路。简单粗暴的概括下就是:

* non-resident key 方案:仅需要 security key 设备持有一对公私钥,就可以对接任何服务端。缺点是需要用户输入用户名
* resident key 方案:需要 security key 设备为每一个服务端记录一对唯一的公私钥,优点是用户不需要输入用户名和密码,缺点是对 security key 设备的要求高了。

android passkey、icloud keychains 这种依赖加密芯片的软件,可以支持存储无限多的 resident key。但是像 yubikey 这样的廉价专用硬件,其能存储的公私钥对(slots)是有限的,往往只有 5~20 个。

所以如果 resident key 方案成为主流,实际上 yubikey 等设备相当于就被挤出市场了。这违背了 WG 当初声称的“可以支持所有用户设备”。

Ps. 会搬运整理一些以前发在 X 的资讯贴到这里,方便归档索引。

next: https://t.me/laiskynotes/163
踩了个小坑,我有一台廉价的 storage VPS,系统是 ubuntu 16.04 + 2.6.32。这台机器上我跑了一个 minio + nginx + tailscale 当 s3 用。配置非常差,我一般懒得登上去。然后我家里的台式机上也有一个 minio 作为 replica,这个 minio 我经常升级。两个 minio 的版本就越差越远。

然后昨天晚上,线上的 minio 因为鉴权不兼容,在 sync 的时候居然挂了。我登上去手动更新了一下可执行文件即可。

借此机会想抒发几个感慨:

1. storage vps 除了硬盘大没其他优点,除了跑 s3 没其他用处。廉价 VPS 我也买过不少了,之所以便宜都是因为有大坑,😮‍💨
2. Go 的静态编译真香,这破机器上我就只能跑得起来 Go 的程序。
https://arxiv.org/pdf/2311.00871.pdf 这篇论文指出,大模型(LLM)对上下文的理解能力(ICL)不是一种通用的泛化能力,而是对预训练数据的检索能力。

用通俗的话说就是,不是一个智能理解了你的问题,而是它从数据集里搜索到了关联数据。

我现在愈发认为 LLM 只是一种高效的信息压缩算法,它的特色在于解压的效果也依赖于输入(prompt)。而 ICL 其实类似于心理学的“锚定效应”,所谓的 prompt engineering 只是在试图让 LLM 的答复锚定到更高质量的预训练数据集上。

至于能不能通向 AGI,对既有方法的灵活运用也是能够导向创新的,但是目前 LLM 的问题在于知识质量鱼龙混杂,需要人类高效 prompt 才能引出高效的答复,这可能预示着它只能扮演一个 copilot 角色,而且它的能力和人类搭档的能力是成正比的。
_6bd9a568-8ef1-4bbe-b8b2-9f752ae39f73.jpg
194.4 KB
gpt-4-vision 的 API 选择 low resolution 的话,识别图片的价格是固定的,非常便宜,连一分钱都不到。就算结合输入输出的文字每次的使用费也就几分钱。

low resolution 的识别效果也非常好,拿来看图识物学习外语也好,水评论也好,帮你改 CSS 也好,真是十分得心应手,强烈推荐。

最后,我觉得对于绝大部分人而言,gpt-plus 的 $20/月 的价格是浪费的,现在 gpt-4-turbo 和 gpt-4-vison 如此便宜,我很难想象你要怎么才能用到 20 美元。何况实际上 gpt-plus 是有很严格的使用频率限制的,你要高频需求只有 API 能满足…

如果你付费困难的说可以考虑第三方的套皮站,比如我的套皮站就是按量计费,我这个站公开了好几个月了,所有人的总开销甚至都没达到 20 美元,你算算你买 gpt-plus 得有多亏…(除非你是激进的前沿功能玩家,但是据我观察,很多人是没那些伪需求的)
Ps. 不是软广,亏本吆喝,我希望使用 GPT 的门槛越低越好,大家都要尽快把 AI 融入到自己的日常生活工作中。
https://youtu.be/EMXnJMCoFYI

WSJ 在 2023-06 拍摄的揭露瓦格纳雇佣军团背景的纪录片。

我第一次见识瓦格纳是在乌克兰战场以俄军炮灰的身份出现,但其实在俄罗斯全面入侵乌克兰以前,瓦格纳一直在小心翼翼地和俄罗斯政府撇清关系。

虽然瓦格纳的背后完全是俄罗斯的政府资金和军火,但是瓦格纳明面上是一个完全私人的雇佣军集团,发家于叙利亚战争。它在叙利亚的运营模式是,帮助叙利亚的巴沙尔政府夺取油气田,然后从中获取 25% 的利润分成。这套模式让瓦格纳在叙利亚赚得盆满钵满,这些钱一部分用于维护自身运作,一部分进入普里戈金的腰包,还有相当大一部分回流回克林姆林宫。

在叙利亚还发生了一起小插曲,2018年2月瓦格纳军团进攻由美军支持的抵抗军油气田,美军询问俄军是否参与,被俄军否认后,美军出动空军全歼了这支瓦格纳军队,造成数百人死伤。(Battle of Khasham)

叙利亚模式让克林姆林宫尝到了甜头,于是开始在全球范围内推广这套模式,罪恶的魔爪遍及四大洲,前阵子九名中国工人在中非被杀就是出自瓦格纳之手。

然而乌克兰战争让瓦格纳从幕后走向了台前,和俄军的关系逐渐明朗化,部队组成也从精英战士向囚犯炮灰转变。
当专家们预言这代表着瓦格纳即将面临转型时,军事叛变发生了,不过这是发生在这部纪录片以后的事情了。
Telegram Channel