使用 TPM 安全地保存 SSH 私钥

2023-06-08 22:23:44 +08:00
 lyc8503
和这个帖子中有一样的担忧 https://www.v2ex.com/t/873915
后来给私钥加了密码, 但密码太简单等于没加, 足够复杂输入起来又很麻烦(而且密码也可能被 keylogger 盗取)

所以研究了一下在 Windows 下如何使用 TPM 来进行 SSH 的鉴权: https://blog.lyc8503.site/post/ssh-with-tpm/

感觉这种方式更加安全, 虽说国产 SSH 可能有后门, 但至少比以文件形式保存私钥安全了. (据我所知, 要利用 TPM 的漏洞 /后门至少需要物理接触.)
4735 次点击
所在节点    程序员
37 条回复
kenvix
2023-06-08 22:32:02 +08:00
你可以在美国用中国 TPM ,在中国用美国 TPM
dingwen07
2023-06-08 22:35:49 +08:00
这么怕为什么不去买个 GPG 智能卡

顺便,TPM 哪里有后门,还是说你用的不是 Intel 、AMD 处理器?就算有后门也是在主板的安全启动证书上面。

国产 SSH 又是什么东西
lyc8503
2023-06-08 22:39:57 +08:00
@dingwen07 sorry 手贱我指的是国产 TPM, 用的就是虚拟智能卡, 关于 TPM 有没有后门可能有些争议, 但有些人认为国内的机型有, 没有实际证据.
hyshuang2006
2023-06-08 22:41:37 +08:00
SSH 私钥,设置上数十位密码,妥妥的安心。
TPM ?设备坏了怎么办?
AS4694lAS4808
2023-06-08 22:44:53 +08:00
海淘个 ThinkPad ,自带 tpm 芯片
hikigaya58
2023-06-08 22:56:40 +08:00
今天刚学习了 TPM ,按照您贴的 url 操作,换了 CPU 是不是再也找不到私钥了( TPM 一般集成在 CPU 内?)?
lindt99cocoa
2023-06-08 22:57:17 +08:00
yubikey 可能更靠谱一点
hikigaya58
2023-06-08 23:00:22 +08:00
@hikigaya58 不过确实是一个很好的思路,可惜似乎没有足够的生态支持?尝试过基于浏览器的通行密钥( passkey ),过程很丝滑。
monster1priest
2023-06-08 23:19:49 +08:00
《商用密码管理条例》规定了商用密码产品由国家密码管理机构指定的单位生产、销售,包括个人使用自行研制的或者境外生产的密码产品也是禁止的。

国内只能使用自主研发的 TCM
feedcode
2023-06-08 23:25:48 +08:00
这个方式备份是个问题。
可以先用 openssl 生成 pkcs12, 然后再导入到 windows 里并标记成不可导出,同时备份并删除 pkcs12 文件,可以参考

https://orca.pet/sshtpm/
https://playbooks.idmanagement.gov/piv/engineer/ssh/
Owenjia
2023-06-08 23:26:56 +08:00
tpm2 的可靠程度不如 openpgp card 吧……
怕丢可以干净环境生成 gpg 密钥离线备份然后 keytocard ,
日常通过 SSH_AUTH_SOCK 指向 gpg-agent 认证登录,
或者拿来做 ca 给 ssh key 签名设有效期,有条件的话还可以限制可用源地址,然后服务器只放 ca 公钥,本地 ssh key 加密码,泄漏就 revoke 。
ihciah
2023-06-08 23:35:45 +08:00
mac 有 Secure Enclave 提供你想要的这个能力,有一个基于这个机制实现的东西 github.com/maxgoedjen/secretive
ysc3839
2023-06-08 23:41:00 +08:00
@monster1priest 新修订的《商用密码管理条例》:大众消费类产品所采用的商用密码不实行进口许可和出口管制制度。
https://www.gov.cn/zhengce/content/202305/content_6875927.htm
fsdrw08
2023-06-08 23:47:54 +08:00
可以用 sops 做 key 文本加密
lyc8503
2023-06-09 00:13:58 +08:00
@hyshuang2006 @AS4694lAS4808 @feedcode TPM 的意义就在于密钥不可提取, 设备损坏或丢失密钥就没了, 要准备其他恢复方式, 比如 VPS 控制台重置, 物理接触服务器恢复等

@ihciah 看到过, 但我用的是 Windows 所以才研究出了这种方法
jim9606
2023-06-09 00:39:55 +08:00
我试过用 Intel 和 AMD 的 fTPM 生成 X.509 密钥(跟 vSC 密封在 TPM 内),但只能是 RSA 的,EC 貌似不支持。

这种方案是拿机器作为认证因子的,跟 YubiKey 等分离实体 key 用途不一样,两者可以类比(指纹+设备)认证和支付密码认证,前者由后者授权,前者追求便利,后者长期离线少暴露作为信任根使用。

个人感觉可以加上安全启动、VBS 、Credential Guard 和 TPM 保护的 Bitlocker 系统盘加密,关联的是 CPU/南桥+UEFI 固件+Windows 签名+用户证书存储区(在系统盘上)。这样就跟 Android 的 TEE 安全方案差不多强度了。正常途径换设备要重新授权。
ysc3839
2023-06-09 00:52:56 +08:00
@hikigaya58 是的。按网上说法,fTPM 的数据是用 CPU 内部不可导出的密钥加密的,存在 BIOS 芯片里,所以换 CPU 会使数据不可解密。但许多 BIOS 可以保留数据,换回 CPU 后还可以解密。
suriv520
2023-06-09 01:11:45 +08:00
1. 允许在境内合法销售的电子设备的密钥体系都必须要符合“国标化”要求的。这是法律要求,也是业界常识。
2. 境内合法销售的个人电脑、平板、手机上的 TPM/加密芯片硬件都必须是指定的公司生产的,这是可信计算的基石,比如境内销售的 Thinkpad 用的 NTZ TPM 芯片:www.nationstech.com
3. 国标对芯片中预埋的“国密”等算法做了要求,这也是强制标准
4. 严格意义来讲,你使用未经认证的 OpenSSL 加密境内服务器中的数据,是违法的。
5. 每一台合法销售的操作系统,包括你现在正在用的 Windows ,包括手机、系统都里已经预埋了中国机构签发的可信根证,安装的时候就埋好了。这也是上述法律要求的体现之一。(所以别跟我说什么 HTTPS 通信不能监听,那得看是谁想听)
6. 最近有一款和 Intel 合作的“国产”暴芯(Powerstar) CPU 处理器。除了国产化采购等目的,你猜猜里面预埋的证书和算法有没有做“合规”?

我上面说的没有做任何推断与猜测,仅列举事实。

“密钥”也不是法外之地。
baobao1270
2023-06-09 01:28:14 +08:00
@suriv520
1. 并不是这样。许多个人或商用电脑,都会带有国际标准的 TPM 芯片。它们不支持 SM 算法。一般国内销售时禁用,但是用户可以主动打开(会弹出警告「 TPM 可能在您的国家违法」之类的)。商用采购的时候,在 BOM 物料清单上会有一条「已禁用 TPM 」或「已移除 TPM 」以满足合规要求。
2. OpenSSL 作为软件,不在《条例》管辖范围内。《条例》仅针对硬件产品。
3. 操作系统里确实有国产根证书,但是只有一个 CFCA 。这个去根证书列表里看一下就知道了。我国没有法律规定操作系统必须安装国产证书。而且,预置证书与否,决定权在操作系统厂商,比如之前 CNNIC 的证书就被吊销了。而国产根也必须在国际的 CT 机制下行事,接受国际标准的审计,如果作恶也会被移出根证书列表。所以除非动用量子计算机,HTTPS 确实不能被监听,即使是国家级的力量也不行。如果你实在不放心,可以选择手动吊销 CFCA 证书。
4. 我没有听说过 CPU 里有「预装证书」的说法。但是国产的 CPU 基本都会选择支持 SM ,因为这是卖点。
suriv520
2023-06-09 01:53:48 +08:00
@baobao1270 多谢解释!看得出来你是做过研究的。

1. 针对电脑,DELL 有一篇知识库文章写得挺清楚了: https://support.hp.com/cn-zh/document/ish_5031748-5050162-16 ,包括前因后果与变更。你肯定也了解多年前很多电脑 /平板无法进入大陆市场的原因。在 Windows11 强制要求 TPM 之后,针对这个合规的谈判与拉扯又进行了很多轮,最终导致了现在“原则上不合规,实际上你们自己看着来,只要不是关键采购,我睁一只眼闭一只眼”的状态。

2. 无论是《密码法》还是《商用密码管理条例》,针对的都是“包含密码的产品”,不存在软硬件的区别。很多系统都是软硬件一体销售。

3. 谢谢进一步确认,并印证我说的。1. 埋了。2. 曾经还被抓包了。

4. 谢谢进一步确认,并印证我说的。CPU 的预埋 TPM ,参考 Intel PTT 与 AMD fTPM 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX