You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在笔记本电脑上使用TPM2.0芯片存储个人数据

先讲核心前提

TPM2.0不是通用U盘类存储设备,绝大多数消费级笔记本内置TPM的非易失性(NV)存储空间只有1~10KB,少数高端机型最多也就几MB,仅适合存密钥、短密码、哈希值这类极小体量的数据,根本存不了文档、图片这类大文件。如果要存大体积个人数据,正确逻辑是把加密密钥存在TPM里,文件本身放硬盘,靠TPM做硬件级的密钥保护,硬盘被拆走也拿不到数据。下面是Windows和Linux下可直接复现的操作步骤。

Windows 系统操作

操作全程需要开管理员权限的PowerShell,先执行Get-Tpm,返回结果里TpmReady为True才可以继续操作。

  • 小数据直接写入TPM NV存储(适合存<1KB的短文本、密钥串)
    TPM的NV空间靠索引寻址,选用户自定义区间的索引即可,别碰0x01C00000以下的系统保留索引(存BitLocker、启动校验数据的,改坏了直接进不去系统),这里以索引0x01000001、分配100字节空间为例:
    1. 创建NV空间,设置所有者权限读写:
    $nvIndex = 0x01000001
    $nvSize = 100
    Initialize-TpmNV -Index $nvIndex -Size $nvSize -AuthWrite Owner -AuthRead Owner
    
    1. 写入数据,比如存字符串"我的私密测试内容":
    $data = [System.Text.Encoding]::UTF8.GetBytes("我的私密测试内容")
    Set-TpmNV -Index $nvIndex -Value $data
    
    1. 读取数据:
    $readData = Get-TpmNV -Index $nvIndex
    [System.Text.Encoding]::UTF8.GetString($readData)
    
    不需要这个空间的时候,执行Uninitialize-TpmNV -Index $nvIndex删除即可。
  • 大体积个人数据加密存储(日常用推荐这个方案)
    系统自带的BitLocker是用TPM存密钥保护整盘/分区,如果只需要加密单个文件,用DPAPI-NG命令即可,密钥存在TPM,文件放本地硬盘,没有本机TPM就算拷走硬盘也解不开:
    加密D盘下的secret.txt文件,输出加密后的文件secret_enc.txt:
    $cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object {$_.HasPrivateKey -and $_.PrivateKey.Provider -eq "Microsoft Platform Crypto Provider"} | Select-Object -First 1
    Protect-CmsMessage -Path D:\secret.txt -OutFile D:\secret_enc.txt -To $cert
    
    解密直接执行:
    Unprotect-CmsMessage -Path D:\secret_enc.txt -OutFile D:\secret_decrypt.txt
    
    解密过程TPM会在硬件内部校验设备状态,不需要额外输密码,也可以额外配置PIN做双因素验证。
Linux 系统操作

先从发行版源安装tpm2-tools包,Debian/Ubuntu执行apt install tpm2-tools,Fedora执行dnf install tpm2-tools,所有操作需要root权限,先执行tpm2_getcap properties-variable能正常返回TPM属性再继续。

  • 小数据直接写入TPM NV存储
    同样选用户可用索引0x01000001,分配100字节空间,设置读写权限:
    tpm2_nvdefine 0x01000001 -s 100 -a "ownerread|ownerwrite|authread|authwrite"
    
    把本地plain.txt里的短内容写入TPM:
    tpm2_nvwrite 0x01000001 -i plain.txt
    
    读取TPM里的内容存到read.txt:
    tpm2_nvread 0x01000001 -o read.txt
    
    不需要该空间时执行tpm2_nvundefine 0x01000001删除。
  • 大体积个人数据加密存储(日常推荐)
    可以配合LUKS做整盘加密,也可以把文件加密密钥密封到TPM,绑定系统PCR校验值(系统固件、引导项被篡改就无法解封密钥):
    1. 生成32字节随机加密密钥,绑定PCR0、PCR2、PCR4、PCR7(对应固件、启动配置、引导程序状态)密封到TPM:
    dd if=/dev/urandom of=~/encrypt.key bs=32 count=1
    tpm2_createpolicy --policy-pcr -l sha256:0,2,4,7 -L pcr.policy
    tpm2_create -C owner -u seal.pub -r seal.priv -a "fixedtpm|fixedparent|sensitivedataorigin|userwithauth|decrypt" -L pcr.policy -i ~/encrypt.key
    tpm2_load -C owner -u seal.pub -r seal.priv -c seal.ctx
    
    1. 之后用encrypt.key做AES加密本地文件即可,解密前先从TPM解封密钥,没有本机TPM就拿不到密钥,无法解密文件。

注意事项:

  1. 绝对不要随意修改、删除系统保留的TPM NV索引,轻则导致BitLocker锁死,重则系统无法启动
  2. 不管是直接存在TPM NV里的数据,还是TPM密封的加密密钥,一定要单独备份一份,TPM被清空、主板损坏时数据会彻底丢失,无法恢复
  3. 绑定PCR值时不要选太多容易变动的PCR槽,否则升级BIOS、改引导项之后会无法解封自己的密钥

内容的提问来源于stack exchange,提问作者Lmao Kins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 00:01:24