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 融入到自己的日常生活工作中。
low resolution 的识别效果也非常好,拿来看图识物学习外语也好,水评论也好,帮你改 CSS 也好,真是十分得心应手,强烈推荐。
最后,我觉得对于绝大部分人而言,gpt-plus 的 $20/月 的价格是浪费的,现在 gpt-4-turbo 和 gpt-4-vison 如此便宜,我很难想象你要怎么才能用到 20 美元。何况实际上 gpt-plus 是有很严格的使用频率限制的,你要高频需求只有 API 能满足…
如果你付费困难的说可以考虑第三方的套皮站,比如我的套皮站就是按量计费,我这个站公开了好几个月了,所有人的总开销甚至都没达到 20 美元,你算算你买 gpt-plus 得有多亏…(除非你是激进的前沿功能玩家,但是据我观察,很多人是没那些伪需求的)
Ps. 不是软广,亏本吆喝,我希望使用 GPT 的门槛越低越好,大家都要尽快把 AI 融入到自己的日常生活工作中。
_6bd9a568-8ef1-4bbe-b8b2-9f752ae39f73.jpg
194.4 KB
https://arxiv.org/pdf/2311.00871.pdf 这篇论文指出,大模型(LLM)对上下文的理解能力(ICL)不是一种通用的泛化能力,而是对预训练数据的检索能力。
用通俗的话说就是,不是一个智能理解了你的问题,而是它从数据集里搜索到了关联数据。
我现在愈发认为 LLM 只是一种高效的信息压缩算法,它的特色在于解压的效果也依赖于输入(prompt)。而 ICL 其实类似于心理学的“锚定效应”,所谓的 prompt engineering 只是在试图让 LLM 的答复锚定到更高质量的预训练数据集上。
至于能不能通向 AGI,对既有方法的灵活运用也是能够导向创新的,但是目前 LLM 的问题在于知识质量鱼龙混杂,需要人类高效 prompt 才能引出高效的答复,这可能预示着它只能扮演一个 copilot 角色,而且它的能力和人类搭档的能力是成正比的。
用通俗的话说就是,不是一个智能理解了你的问题,而是它从数据集里搜索到了关联数据。
我现在愈发认为 LLM 只是一种高效的信息压缩算法,它的特色在于解压的效果也依赖于输入(prompt)。而 ICL 其实类似于心理学的“锚定效应”,所谓的 prompt engineering 只是在试图让 LLM 的答复锚定到更高质量的预训练数据集上。
至于能不能通向 AGI,对既有方法的灵活运用也是能够导向创新的,但是目前 LLM 的问题在于知识质量鱼龙混杂,需要人类高效 prompt 才能引出高效的答复,这可能预示着它只能扮演一个 copilot 角色,而且它的能力和人类搭档的能力是成正比的。
Laisky's Notes
前文提到过,HTTP/2 的分帧是不彻底的,仅仅是应用层 stream,而在传输层 TCP 看来仍然是一个 stream。HTTP/3 将 stream 拆分做到了传输层,在 UDP 层面就以 stream 为单位,声称解决了所有的 stream 间 HoLB 问题。 https://laisky.notion.site/HoL-Blocking-and-Priority-Inversion-LiteSpeed-Blog-4601095b01ed4f8d87bc3bc40ed665d7 很可惜现实是残酷的,其实…
这系列的后续两篇文章描述的都是同样的 QUIC HoLB 问题,即对 http fields table 更新的依赖所导致的 HoLB。
* https://laisky.notion.site/HoL-Blocking-Allows-Attacks-in-QUIC-52f6f3876b5943b0ae257d56c70d0549
* https://laisky.notion.site/HoL-Blocking-and-the-Deadlock-Hazard-in-QUIC-614658fee16e4c23b276c98e7300d4b0
但是更进一步介绍了可能带来的风险:
1. 单 stream 死锁风险:某个 stream 可能会依赖该 stream 后续的 header 更新
2. 多 stream 死锁风险:当接收端的 flow control window 被塞满,header 更新可能无法送达,导致死锁
3. DoS 攻击:攻击者伪造一个请求,该请求依赖一个不存在的 fields table 版本。
prev: https://t.me/laiskynotes/42
next: https://t.me/laiskynotes/84
* https://laisky.notion.site/HoL-Blocking-Allows-Attacks-in-QUIC-52f6f3876b5943b0ae257d56c70d0549
* https://laisky.notion.site/HoL-Blocking-and-the-Deadlock-Hazard-in-QUIC-614658fee16e4c23b276c98e7300d4b0
但是更进一步介绍了可能带来的风险:
1. 单 stream 死锁风险:某个 stream 可能会依赖该 stream 后续的 header 更新
2. 多 stream 死锁风险:当接收端的 flow control window 被塞满,header 更新可能无法送达,导致死锁
3. DoS 攻击:攻击者伪造一个请求,该请求依赖一个不存在的 fields table 版本。
prev: https://t.me/laiskynotes/42
next: https://t.me/laiskynotes/84
Laisky on Notion
HoL Blocking Allows Attacks in QUIC | Notion
Protocol designers underestimate how badly people will implement their designs.
踩了个小坑,我有一台廉价的 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 的程序。
然后昨天晚上,线上的 minio 因为鉴权不兼容,在 sync 的时候居然挂了。我登上去手动更新了一下可执行文件即可。
借此机会想抒发几个感慨:
1. storage vps 除了硬盘大没其他优点,除了跑 s3 没其他用处。廉价 VPS 我也买过不少了,之所以便宜都是因为有大坑,😮💨。
2. Go 的静态编译真香,这破机器上我就只能跑得起来 Go 的程序。
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
非常不错的文章,介绍了目前 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
公司的 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
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
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
这一系列的 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
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。然后在运行时,根据收到的请求,进行实时的密钥派生,派生的方法就是
再补充一点 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
然后介绍一点点密码学基础,密码学上有一个函数叫做 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
前文介绍了 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
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
作者花了一千刀帮我们测试了 LLM 模型大上下文性能,使用 LLM 的最佳输入长度是小于 20K tokens,重要内容放于首尾,尾部比头部稍好。否则准确率会大幅降低。那些所谓的超大上下文模型都是以牺牲准确率为代价的。 https://x.com/gregkamradt/status/1727018183608193393
之前说 claude-2 表现不如 gpt-4,claude 的团队说你只需要加一句话到 prompt,就可以让 LLM 的表现产生质的飞跃,太黑魔法了😵💫
prompt:
prompt:
Here is the most relevant sentence in the context:
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 的软件质量来说,我感觉这公司做事情很糙。
感觉 cloudflare 最近越来越不稳定了。就我个人来说,从他们开源的 cfssl 代码,和 cloudflared 的软件质量来说,我感觉这公司做事情很糙。
Laisky's Notes
前文提到实际的密码更复杂,现在就具体看看 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,如果系统启动…
继续聊聊 BitLocker & TPM 的一些安全须知。
BitLocker 属于 Windows OS,开机后需要先启动 OS,所以 C 盘仅支持自动解密,只有其他非系统盘支持 TPM + PIN 等外部密钥手动解密。所以不要在 C 盘上放敏感信息。你可以搜索一下“BitLocker 绕过”的相关新闻,自动解密有很多安全隐患。
而且,虽然 TPM 是安全的,但是 TPM 和 CPU 间的通信是通过主板明文进行的,物理上存在飞线攻击的可能性。所以不能单纯地信任 TPM,而是要引入外部密钥,而最常用的就是 PIN。
此外,可能和很多人的直观感觉不一样的是,在全盘加密这件事上,Windows、Mac 这样的封闭系统做得比 Linux 好,甚至说 Linux 根本没有可信的全盘加密。
参考:https://laisky.notion.site/Authenticated-Boot-and-Disk-Encryption-on-Linux-65df0a1b26e848beb3c86afb7d7096df
Linux 的问题在于只使用了用户密钥对磁盘进行加解密,而解密用户磁盘依赖于 initrd,而 initrd 并不一定被度量和校验了。即使 firmware 和 initrd 被篡改,系统仍然能够不被察觉地正常启动,并询问用户密码来解密磁盘。(因为没有引入 TPM PCRs 的度量值,是否有被篡改不会影响磁盘密钥的生成)
补充介绍一下 Linux 的启动流程(极简版):
1. UEFI 校验 OS 的签名,然后启动 initrd(内存文件系统)
2. initrd 询问用户密码,解密磁盘,加载 OS
可以看到目前很多 Linux 发行版的一个目标就是引入类似 BitLocker 这样的结合 TPM PCRs 的全盘加密(FDE)。但是,很多 Linux 用户追求的都是无需介入的 TPM 自动解密,而我们已经知道自动解密并不够安全。
Ps. 一个冷笑话,目前为止我们讨论的都是针对物理设备的攻击,此类攻击也被命名为
next: https://t.me/laiskynotes/82
BitLocker 属于 Windows OS,开机后需要先启动 OS,所以 C 盘仅支持自动解密,只有其他非系统盘支持 TPM + PIN 等外部密钥手动解密。所以不要在 C 盘上放敏感信息。你可以搜索一下“BitLocker 绕过”的相关新闻,自动解密有很多安全隐患。
而且,虽然 TPM 是安全的,但是 TPM 和 CPU 间的通信是通过主板明文进行的,物理上存在飞线攻击的可能性。所以不能单纯地信任 TPM,而是要引入外部密钥,而最常用的就是 PIN。
此外,可能和很多人的直观感觉不一样的是,在全盘加密这件事上,Windows、Mac 这样的封闭系统做得比 Linux 好,甚至说 Linux 根本没有可信的全盘加密。
参考:https://laisky.notion.site/Authenticated-Boot-and-Disk-Encryption-on-Linux-65df0a1b26e848beb3c86afb7d7096df
Linux 的问题在于只使用了用户密钥对磁盘进行加解密,而解密用户磁盘依赖于 initrd,而 initrd 并不一定被度量和校验了。即使 firmware 和 initrd 被篡改,系统仍然能够不被察觉地正常启动,并询问用户密码来解密磁盘。(因为没有引入 TPM PCRs 的度量值,是否有被篡改不会影响磁盘密钥的生成)
补充介绍一下 Linux 的启动流程(极简版):
1. UEFI 校验 OS 的签名,然后启动 initrd(内存文件系统)
2. initrd 询问用户密码,解密磁盘,加载 OS
可以看到目前很多 Linux 发行版的一个目标就是引入类似 BitLocker 这样的结合 TPM PCRs 的全盘加密(FDE)。但是,很多 Linux 用户追求的都是无需介入的 TPM 自动解密,而我们已经知道自动解密并不够安全。
Ps. 一个冷笑话,目前为止我们讨论的都是针对物理设备的攻击,此类攻击也被命名为
evil maid attack
,因为是针对 at-rest 的攻击😂next: https://t.me/laiskynotes/82
Laisky's Notes
gpt-4-vision 的 API 选择 low resolution 的话,识别图片的价格是固定的,非常便宜,连一分钱都不到。就算结合输入输出的文字每次的使用费也就几分钱。 low resolution 的识别效果也非常好,拿来看图识物学习外语也好,水评论也好,帮你改 CSS 也好,真是十分得心应手,强烈推荐。 最后,我觉得对于绝大部分人而言,gpt-plus 的 $20/月 的价格是浪费的,现在 gpt-4-turbo 和 gpt-4-vison 如此便宜,我很难想象你要怎么才能用到 20 美元。何况实际上…
关于我之前提到过的 openai 套皮站,有几个朋友咨询我充值方式,我写了个说明,统一发一下。(实际上不仅仅是套皮,有空就会加点脑洞功能😁)
https://wiki.laisky.com/projects/gpt/pay/cn/#page_gpt_pay_cn
这是个非营利性项目,所以我没费劲去接支付,充值只能靠和我邮件联系然后转账,退款同理。
因为境外支付存在高额手续费,我目前按照 8:1 的汇率计算美元充值,退款同理。等我明年有了境外银行卡,就可以按实价换算了。
我之前一直说 API 省钱,这个站开到现在 5 个月了,总开支只有 8 美元。
更新比较频繁,遇到问题先刷新页面试试。还没法解决可以邮件联系我。代码是我业余时间糊的,前端是手写 vanilla js,后端是 gin。代码非常烂,不怕眼瞎可以帮我改 bug:https://github.com/Laisky/go-ramjet/tree/master/internal/tasks/gptchat (抽空写点垃圾代码是我最爱的解压方式😂)
https://wiki.laisky.com/projects/gpt/pay/cn/#page_gpt_pay_cn
这是个非营利性项目,所以我没费劲去接支付,充值只能靠和我邮件联系然后转账,退款同理。
因为境外支付存在高额手续费,我目前按照 8:1 的汇率计算美元充值,退款同理。等我明年有了境外银行卡,就可以按实价换算了。
我之前一直说 API 省钱,这个站开到现在 5 个月了,总开支只有 8 美元。
更新比较频繁,遇到问题先刷新页面试试。还没法解决可以邮件联系我。代码是我业余时间糊的,前端是手写 vanilla js,后端是 gin。代码非常烂,不怕眼瞎可以帮我改 bug:https://github.com/Laisky/go-ramjet/tree/master/internal/tasks/gptchat (抽空写点垃圾代码是我最爱的解压方式😂)
Wiki
Pay
Introduction # (👉 English)
有两种方式可以解锁所有的功能:
使用自己的 openai apikey 从我这购买专用的 apikey 请使用邮件联系我:chat@laisky.com.
更新信息会发布在 Telegram Channel: https://t.me/laisky_oai
点击查阅目前支持的模型和费率
购买方式 # 先在 https://oneapi.laisky.com/register 注册一个账户,然后把账户名给我,就可以充值使用了,充值方式可以 微信/支付宝…
有两种方式可以解锁所有的功能:
使用自己的 openai apikey 从我这购买专用的 apikey 请使用邮件联系我:chat@laisky.com.
更新信息会发布在 Telegram Channel: https://t.me/laisky_oai
点击查阅目前支持的模型和费率
购买方式 # 先在 https://oneapi.laisky.com/register 注册一个账户,然后把账户名给我,就可以充值使用了,充值方式可以 微信/支付宝…
Laisky's Notes
继续聊聊 BitLocker & TPM 的一些安全须知。 BitLocker 属于 Windows OS,开机后需要先启动 OS,所以 C 盘仅支持自动解密,只有其他非系统盘支持 TPM + PIN 等外部密钥手动解密。所以不要在 C 盘上放敏感信息。你可以搜索一下“BitLocker 绕过”的相关新闻,自动解密有很多安全隐患。 而且,虽然 TPM 是安全的,但是 TPM 和 CPU 间的通信是通过主板明文进行的,物理上存在飞线攻击的可能性。所以不能单纯地信任 TPM,而是要引入外部密钥,而最常用的就是…
为了防止误人子弟,基于 TPM PCR 加密必须得强调一些事实。
前文讲到基于 TPM RootKey 和 PCRs 来派生密钥,这样可以确保系统完整性。但是 PCR 是基于 SHA 算法的,一旦你系统升级,这个度量值也会变,那么你就没法再派生出相同的密钥了,从而导致解密失败。这个特性被称为 TPM 脆弱性,英文为 TPM Brittle/Fragile。
TPM 2.0 为这个问题提供了解决方法,原理很简单也很通用,就是让密钥派生支持基于非对称密钥签名的校验。简而言之,你可以提供一个公钥,然后只要被度量对象有被指定私钥签名,那么就可以通过 TPM 校验,并且始终派生出相同的密钥。
这种基于公私钥签名的方式非常常见,比如 UEFI SecureBoot 就是这么校验 OS 的,CPU 也是这么校验 UEFI 的。不过 BitLocker 没有采取这种方式,BitLocker 仍然是基于 PCRs,但不是全部 PCRs,而是主要使用了 firmware 的 PCR,使得大部分 OS 升级都不会影响到 BitLocker TPM 的密钥派生。
顺带一提,在 https://chat.laisky.com 上选择 【QA -> security】可以激活一个安全领域的 chatbot,可以询问更多 TPM 相关的问题,所有的回答还会提供更详细的在线参考资料链接。
前文讲到基于 TPM RootKey 和 PCRs 来派生密钥,这样可以确保系统完整性。但是 PCR 是基于 SHA 算法的,一旦你系统升级,这个度量值也会变,那么你就没法再派生出相同的密钥了,从而导致解密失败。这个特性被称为 TPM 脆弱性,英文为 TPM Brittle/Fragile。
TPM 2.0 为这个问题提供了解决方法,原理很简单也很通用,就是让密钥派生支持基于非对称密钥签名的校验。简而言之,你可以提供一个公钥,然后只要被度量对象有被指定私钥签名,那么就可以通过 TPM 校验,并且始终派生出相同的密钥。
这种基于公私钥签名的方式非常常见,比如 UEFI SecureBoot 就是这么校验 OS 的,CPU 也是这么校验 UEFI 的。不过 BitLocker 没有采取这种方式,BitLocker 仍然是基于 PCRs,但不是全部 PCRs,而是主要使用了 firmware 的 PCR,使得大部分 OS 升级都不会影响到 BitLocker TPM 的密钥派生。
顺带一提,在 https://chat.laisky.com 上选择 【QA -> security】可以激活一个安全领域的 chatbot,可以询问更多 TPM 相关的问题,所有的回答还会提供更详细的在线参考资料链接。