公司的 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.iss.one/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.iss.one/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.iss.one/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.iss.one/laiskynotes/71
💯3
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.iss.one/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.iss.one/laiskynotes/73
❤4👍1
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.iss.one/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.iss.one/laiskynotes/78
❤4
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:👍6
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 的软件质量来说,我感觉这公司做事情很糙。
👍1
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.iss.one/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.iss.one/laiskynotes/82
👍1
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)
免费用户只能使用有限的模型和功能,通过在我的 One-API 平台上充值成为付费用户,可以解锁所有支持的模型和功能,具体的购买方式和支持的模型列表请继续阅读下文。
有任何问题请使用邮件联系我:[email protected].
更新信息会发布在 Telegram Channel: https://t.iss.one/laisky_oai
点击查阅目前支持的模型和费率
项目源代码,遇到问题可以提 Issue 或者直接提 PR 修复: https://github.com/Laisky/one…
免费用户只能使用有限的模型和功能,通过在我的 One-API 平台上充值成为付费用户,可以解锁所有支持的模型和功能,具体的购买方式和支持的模型列表请继续阅读下文。
有任何问题请使用邮件联系我:[email protected].
更新信息会发布在 Telegram Channel: https://t.iss.one/laisky_oai
点击查阅目前支持的模型和费率
项目源代码,遇到问题可以提 Issue 或者直接提 PR 修复: https://github.com/Laisky/one…
👍3
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 相关的问题,所有的回答还会提供更详细的在线参考资料链接。
❤2
Laisky's Notes
昨天那篇文章介绍了 QUIC 并不一定更快。这篇文章则更犀利地指出,QUIC 不仅不快,简直慢得要命😂。 原生 QUIC 的吞吐只有 TCP 的 27.7%,只有 TCP+TLS 的 42.5%。 https://laisky.notion.site/QUIC-vs-TCP-Which-is-Better-ad3bcd403c2340038a6d761fe70b1984 而从优化的思路可以看出导致 QUIC 慢的主要原因:逐包 ACK、逐包加密、用户态处理导致的额外切换开销。 而优化方式也是对症下药,延迟…
此文驳斥了那些认为 QUIC 更快的迷思,逐条分析批判了那些常见的“认为 QUIC 更快”的观点。QUIC 的根本目的是为未来做好一个易于部署和迭代的基座,其当前版本的性能没有任何优势甚至更慢。
https://laisky.notion.site/HTTP-3-Performance-Improvements-Part-2-Smashing-Magazine-bc610b26c95e4d2cb258bfca78f8240d?pvs=4
1. 拥塞阻塞?QUIC 也有
2. 0-RTT?QUIC 最多只能比 TCP 少一个 RTT,而且还极不安全。
3. connection migration?需要大改负载均衡器,而且没太大收益。
4. HoLB?取决于 multiplexer 算法,大部分情况下都比不上串行。
5. 和 TCP + TLS 比?QUIC 的性能远逊于 TLS。
prev: https://t.iss.one/laiskynotes/62
https://laisky.notion.site/HTTP-3-Performance-Improvements-Part-2-Smashing-Magazine-bc610b26c95e4d2cb258bfca78f8240d?pvs=4
1. 拥塞阻塞?QUIC 也有
2. 0-RTT?QUIC 最多只能比 TCP 少一个 RTT,而且还极不安全。
3. connection migration?需要大改负载均衡器,而且没太大收益。
4. HoLB?取决于 multiplexer 算法,大部分情况下都比不上串行。
5. 和 TCP + TLS 比?QUIC 的性能远逊于 TLS。
prev: https://t.iss.one/laiskynotes/62
Laisky on Notion
HTTP/3: Performance Improvements (Part 2) — Smashing Magazine | Notion
TL;DR;
https://youtu.be/cfaubxeS5HU?si=ViN-j4iDEY5hHgWV
FT 介绍拜登的“实业振兴国家大基金”计划,总投资计划高达 8910 亿美元。
虽然名字叫做"抑制通胀法案(Inflation Reduction ACT, IRA)",但其内容既和通胀无关,也和抑制无关,其核心目标是让制造业重新回流美国,切断对中国的产业链依赖,并且推动美国向清洁能源大幅转型。
这个法案也存在一些核心争议:
1. 川普再次上台后会不会废除这项法案?
2. 欧洲对该法案表达不满,认为完全破坏了 WTO 的全球化框架。
3. 中国垄断了再生能源制造业,没有中国,有可能完成激进的清洁能源转型吗?
FT 介绍拜登的“实业振兴国家大基金”计划,总投资计划高达 8910 亿美元。
虽然名字叫做"抑制通胀法案(Inflation Reduction ACT, IRA)",但其内容既和通胀无关,也和抑制无关,其核心目标是让制造业重新回流美国,切断对中国的产业链依赖,并且推动美国向清洁能源大幅转型。
这个法案也存在一些核心争议:
1. 川普再次上台后会不会废除这项法案?
2. 欧洲对该法案表达不满,认为完全破坏了 WTO 的全球化框架。
3. 中国垄断了再生能源制造业,没有中国,有可能完成激进的清洁能源转型吗?
https://laisky.notion.site/SDXL-in-4-steps-with-Latent-Consistency-LoRAs-3baba49183874166ad5fece67b4d066e?pvs=4
此文从使用上简要介绍了 stable diffusion LCM LoRA 蒸馏模型(distillation),还提供了可运行的 python 代码。
简而言之,蒸馏模型就是在原有大模型的基础上训练出一个更小更快的模型,而且其输出效果和大模型接近。过去蒸馏模型都是定制化的,而 LCM 是一个通用型的蒸馏模型,你可以指定任何一个预训练的模型,然后套上 LCM 来使用。
LCM 可以在更少的步数(steps)上实现和原模型相近的效果,大幅缩短推理耗时。
此文从使用上简要介绍了 stable diffusion LCM LoRA 蒸馏模型(distillation),还提供了可运行的 python 代码。
简而言之,蒸馏模型就是在原有大模型的基础上训练出一个更小更快的模型,而且其输出效果和大模型接近。过去蒸馏模型都是定制化的,而 LCM 是一个通用型的蒸馏模型,你可以指定任何一个预训练的模型,然后套上 LCM 来使用。
LCM 可以在更少的步数(steps)上实现和原模型相近的效果,大幅缩短推理耗时。
Laisky on Notion
SDXL in 4 steps with Latent Consistency LoRAs | Notion
Latent Consistency Models (LCM) are a way to decrease the number of steps required to generate an image with Stable Diffusion (or SDXL) by distilling the original model into another version that requires fewer steps (4 to 8 instead of the original 25 to 50).…
❤1
最近调研了一下国密,我被这东西震撼到了。国密 TLS 和国际 TLS 不兼容,国密和国密互相间也不兼容🤮。大量的属性字段各个库各自拍脑袋决定,A 库加密的东西只有 A 库能解密。
似乎也正是因为兼容性问题,各家的实现最终都收敛到 gmssl 这个 C 库上来了。
补充:同为 C 库,还有一个项目是阿里的铜锁。然而,铜锁和 gmssl 互相不兼容…
2023/12/22 补充:最终我选用了铜锁,因为它是基于 openssl 的,支持非常细粒度的操作。顺带一提,不兼容性主要围绕 X.509 的各项属性定义,国密没有加入到国际体系,所以各个实现各自定义了一套,这也就导致了互不兼容。但如果你只用到了对称加密、哈希,是不会有不兼容的。
似乎也正是因为兼容性问题,各家的实现最终都收敛到 gmssl 这个 C 库上来了。
补充:同为 C 库,还有一个项目是阿里的铜锁。然而,铜锁和 gmssl 互相不兼容…
2023/12/22 补充:最终我选用了铜锁,因为它是基于 openssl 的,支持非常细粒度的操作。顺带一提,不兼容性主要围绕 X.509 的各项属性定义,国密没有加入到国际体系,所以各个实现各自定义了一套,这也就导致了互不兼容。但如果你只用到了对称加密、哈希,是不会有不兼容的。
🤡14🗿3💩2