diff --git a/src/images/baidu/barsfs_arch.png b/src/images/baidu/barsfs_arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5200789ffab66b4af88c19365e821d58c3a7eec
Binary files /dev/null and b/src/images/baidu/barsfs_arch.png differ
diff --git a/src/images/baidu/barsfs_with_tpm.png b/src/images/baidu/barsfs_with_tpm.png
new file mode 100644
index 0000000000000000000000000000000000000000..186232109744ed7d3bf7cc6893586ae7f8c48ef6
Binary files /dev/null and b/src/images/baidu/barsfs_with_tpm.png differ
diff --git a/src/images/baidu/bios_secureboot_off.png b/src/images/baidu/bios_secureboot_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cbe06dfa387fa65816ee83786a0ed78c4992e0b
Binary files /dev/null and b/src/images/baidu/bios_secureboot_off.png differ
diff --git a/src/images/baidu/bios_tpm_enable.png b/src/images/baidu/bios_tpm_enable.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb0f996dd1f6fb8fd9393d3f9171cd51ca0407f5
Binary files /dev/null and b/src/images/baidu/bios_tpm_enable.png differ
diff --git a/src/images/baidu/os.png b/src/images/baidu/os.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e9da40406a7c052b984c2bba9009bbc450edbeb
Binary files /dev/null and b/src/images/baidu/os.png differ
diff --git a/src/practices-baidu-tc-barsfs.md b/src/practices-baidu-tc-barsfs.md
new file mode 100644
index 0000000000000000000000000000000000000000..419df212deb66e06ade8ebbc30c04ccf824c5b5b
--- /dev/null
+++ b/src/practices-baidu-tc-barsfs.md
@@ -0,0 +1,199 @@
+# 百度可信计算实践
+
+使用可信根提升边缘节点访问云上对象存储的安全性
+
+
+## 1: 背景
+
+### 1.1 数据保险箱-BarsFS介绍
+
+BarsFS ( Baidu AI Realms, Bars )是百度开发的一款基于FUSE ( Filesystem in Userspace ) 架构的高性能用户态文件系统。它使用户能够像访问本地目录和文件一样,轻松地将重要数据进行透明加密后存储到云端的对象存储( OSS )服务中。同时,用户也可以从 OSS 中读取加密文件,并在本地透明解密后访问。另外,有别于与传统 OSS FUSE 客户端执行时需要使用者传入静态 AK/SK 的方式,BarsFS 采用了零信任的 Keyless 认证机制 。BarsFS 在运行时会先访问云端的统一鉴权中心,通过验证当前运行节点的唯一特征,获取访问 OSS Bucket 的访问凭证和加解密文件所需的密钥。这种机制有效避免了 OSS AK/SK 和密钥的泄露风险,进一步提升了系统的安全性。BarsFS 是百度内部重要的数据安全工具,确保存储在OSS 内的数据的安全性和完整性。
+
+
+
+
+
+### 1.2 场景介绍
+
+在边缘计算场景中,部分位于第三方网络环境内的边缘节点需要通过BarsFS访问百度内部OSS服务中的敏感数据。由于边缘节点面临较高的威胁风险,百度安全团队计划在边缘节点上引入可信启动机制,以确保只有经过安全验证的节点才能访问OSS服务中的敏感数据,从而提升重要数据访问的安全性。
+
+
+
+
+
+## 2: 实践细节
+
+### 2.1 自研 rust tpm-sdk
+
+百度安全团队使用 Rust 对 TPM2-TSS 进行了二次封装,开发了一个简化的 SDK,旨在降低调用成本并提升集成效率。Rust 的内存安全特性和高性能使得我们能够创建一个安全、可靠的 TPM 访问接口,方便百度内部不同开发团队进行集成。通过这种封装,开发者无需深入理解复杂的 TPM 接口即可快速实现功能集成,从而加速开发进程,减少不规范使用 TPM 的风险。
+
+### 2.2 使用TPM数据密封功能保护通信凭证
+
+在 BarsFS 的原始设计中,采用了 mTLS 机制与统一鉴权中心进行通信。我们计划引入 TPM 的数据密封功能,将边缘节点上 BarsFS 所使用的客户端证书与TPM中的可信根进行关联,以确保只有在节点启动可信的 BarsFS 才能与统一鉴权中心进行通信。具体实现的步骤如下:
+
+> *TPM数据密封(TPM-Based Data Sealing)*: 集成 TPM 的设备能够存储一个与特定平台度量值关联并被封装的数据(通常是密钥或者其他重要凭证)。这种类型的数据只有在平台度量值与数据存储时的值完全一致的情况下才能被解封。这一过程被称为将数据密封(sealing)到 TPM。
+
+1. 在部署之前,部署工程师需要预先生成公钥和私钥对。随后,使用公钥(PubK)对 BarsFS 的客户端证书进行加密,而私钥(PrivK)则用于后续的数据密封操作。由于 TPM 在数据密封时存在 128 字节的大小限制,因此方案中采用了 ECC 算法,以减少私钥的长度。
+2. 在部署阶段,部署工程师统一启用边缘节点的 UEFI SecureBoot,并在系统启动后检查执行TPM2_PCRRead, 查验 TPM 的 PCR 值以验证其是否生效。
+3. 部署工程师执行数据密封操作:
+
+> 在实际生产环境中,百度安全团队基于 Rust TPM-SDK 开发了一款供部署工程师日常操作 TPM 的二进制工具。该工具支持一键完成数据密封等常规 TPM 操作。下文为了便于说明具体的执行逻辑,以下内容引用了 tpm2-tools 的原始指令。
+
+```shell
+# 创建主密钥作为父对象
+tpm2_createprimary -c primary.ctx -Q
+
+# 创建PCR密封策略
+PCR_SELECTIONS = "sha256:0,1,2,3,4,5,7,8,9,14"
+tpm2_pcrread -Q -o pcr.bin ${PCR_SELECTIONS}
+tpm2_createpolicy -Q --policy-pcr -l ${PCR_SELECTIONS} -f pcr.bin -L pcr.policy
+
+# 基于PCR值密封PrivK
+tpm2_create -C primary.ctx -L pcr.policy -i ${PrivK} -u seal.pub -r seal.priv -Q
+tpm2_load -C primary.ctx -u seal.pub -r seal.priv -c seal.ctx
+```
+
+ 当前 Barsfs 密封策略所选择的 PCR 说明如下:
+
+| PCR# | Used by | 度量对象 |
+| ----------- | ----------- | ----------- |
+| 0 | 固件 | 核心系统固件可执行代码 |
+| 1 | 固件 | 核心系统固件数据/主机平台配置;通常包含序列号和型号 |
+| 2 | 固件 | 扩展或可插拔的可执行代码;包括可插拔硬件上的选项ROM |
+| 3 | 固件 | 扩展或可插拔的固件数据;包括关于可插拔硬件的信息 |
+| 4 | 固件 | 引导加载程序和附加驱动程序;由引导加载程序加载的二进制文件和扩展 |
+| 5 | 固件 | GPT/分区表 |
+| 7 | 固件 | 安全启动状态 |
+| 8 | grub | 命令和内核命令行 |
+| 9 | grub&Linux内核 | 所有读取的文件(包括内核镜像);所有传递的initrds(当使用新的LOAD_FILE2 initrd协议时) |
+| 14 | shim | “MOK”证书和哈希值 |
+||||
+
+
+4. 部署工程师执行 *TPM2_HierarchyChangeAuth* 为所有者层级(Owner Hierarchy,OH)设置访问PIN码,提升TPM访问安全。
+5. 部署工程师将 BarsFS 和加密后的客户端证书部署在边缘设备上。
+6. 集成了 rust tpm-sdk 的 BarsFS 启动时自动执行数据解封操作,建立与统一鉴权中心的安全通信:
+ a. 数据解封:BarsFS 调用 SDK,执行 *TPM2_Unseal()* 操作尝试解封 PrivK 。此时只有系统固件、GRUB 和 Linux Kernal 等关键组件与密封时的状态匹配,解封操作才能成功。
+ b. 证书解密:使用解封获得的 PrivK,BarsFS 解密客户端证书文件,并与统一鉴权中心进行mTLS 连接,实现双向证书验证。
+ c. 在安全通道建立的基础上,BarsFS 继续执行鉴权、密钥管理等核心业务逻辑,确保所有敏感操作都在加密链路下进行。
+7. 后续如需更新 BarsFS 的客户端证书,只需用对应的 PubK 加密新生成的客户端证书,并同步到边缘设备侧即可。
+
+### 2.3 在龙蜥OS上的验证
+
+1. 验证环境 OS 信息:
+
+
+
+
+
+2. 验证步骤
+
+ a. 在 BIOS 内启用 TPM
+
+> 注意:由于龙蜥社区版本 OS 镜像缺少签名,需要在 BIOS 内关闭 secureboot 选项
+
+
+
+
+
+
+ b. 龙蜥 OS 启动后,验证 TPM PCR 值
+
+```shell
+- EventNum: 104
+ PCRIndex: 9
+ EventType: EV_IPL
+ DigestCount: 2
+ Digests:
+ - AlgorithmId: sha1
+ Digest: "9ebf38cd48481ff24b75fa2b465dfbfa6e534291"
+ - AlgorithmId: sha256
+ Digest: "a158843c35d7b0c824ecd451026e8ef6379cf520da8beef45903c8380748052e"
+ EventSize: 48
+ Event:
+ String: |-
+ "(hd1,gpt2)/initramfs-6.6.25-2.1.an23.x86_64.img\0"
+pcrs:
+ sha1:
+ 0 : 0xcb12410d97fa712ac93cd5474716c82345270858
+ 1 : 0xb895ddfa70bdce288d019d0a9d6b6f7d96079366
+ 2 : 0xb2a83b0ebf2f8374299a5b2bdfc31ea955ad7236
+ 3 : 0xb2a83b0ebf2f8374299a5b2bdfc31ea955ad7236
+ 4 : 0xfd30a142a9e683cc43ee37f6b982563b41427b48
+ 5 : 0x9bf8cb594f82579359fcc0da2bd927af79e3620f
+ 6 : 0xb2a83b0ebf2f8374299a5b2bdfc31ea955ad7236
+ 7 : 0x547309e9f59897160d7eeef78a0d34b3d10bf7c9
+ 8 : 0xc8cc10ebfba3550d37a298ccd8c153a6335b80ec
+ 9 : 0x5d0c76905420d8bd63f94dec61126609fdbcd15b
+ 14 : 0x68cdd38d74c5f61a0dc1bd4718d88f63d2d83f74
+ sha256:
+ 0 : 0x0bf04818b68fc9d36597c6feaaff2ff175916c81ce919f0bff08acf0bff3eabf
+ 1 : 0x5a1d79864463c7cee228f54bfe578638dda37778be2b753f2307fc816914ca7e
+ 2 : 0x3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e7969
+ 3 : 0x3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e7969
+ 4 : 0xbf7de563d0cd37584a2712a882826dafecfbb3d3cd2a84d020cd3a824129e6c6
+ 5 : 0xf48f23f93972704aacd8accba9c0f755ea17852154c95ee85f0b158df026929c
+ 6 : 0x3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e7969
+ 7 : 0xf38d72c37678f9d2d944048a2caad5e74eb2ca1176ceaa6e5caaa7e5d4c0cd18
+ 8 : 0x232b1b801b2945a5652848427b2830ac77f3ab36cf3a9a0c1e008ae23f7a8388
+ 9 : 0x854402a2616b98e0e7870bf3481a1402f795d7283e49ade9c48fb0ece2b9b509
+ 14 : 0x6eb05e8a8a6272a8e4b925a67c650daa13c12b1a80cc797d40fd345e29660161
+```
+
+ c. 部署工程师在龙蜥 OS 上使用百度开发的工具(tctool)执行数据密封操作
+
+```shell
+[dc@anolis trusted_computing]$ ./tctool seal --input dek.raw --pcrs 0,1,2,3,4,5,7,8,9,14 tpm_seal_key
+```
+
+ d. 在容器内启动 BarsFS,访问 OSS Bucket 内的加密文件,验证效果
+
+```shell
+# 启动BarsFS,设置OSS的bucket和挂载点信息
+work@eb27e688d87a:~$ ./barsfs /home/work/bucket/foo -oss_bucket="foo" -tpm_tcti="device:/dev/tpmrm0" -auth_center=https://auth-center -oss_url=https://oss-server
+
+# 验证挂载信息
+work@6f34bb89358c:~$ df -h
+Filesystem Size Used Avail Use% Mounted on
+overlay 70G 6.6G 64G 10% /
+tmpfs 64M 0 64M 0% /dev
+shm 64M 0 64M 0% /dev/shm
+barsfs 100G 0 100G 10% /home/work/bucket/foo
+
+# 通过挂载点,访问bucket内的加密文件model,触发透明解密
+work@eb27e688d87a:~$ more /home/work/bucket/foo/model
+hello, world
+```
+
+ e. 修改 PCR 值后,再次启动 BarsFS,验证效果
+
+```shell
+# 修改PCR 14,模型系统启动遭遇篡改
+ sha256:
+ 0 : 0x0BF04818B68FC9D36597C6FEAAFF2FF175916C81CE919F0BFF08ACF0BFF3EABF
+ 1 : 0x5A1D79864463C7CEE228F54BFE578638DDA37778BE2B753F2307FC816914CA7E
+ 2 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
+ 3 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
+ 4 : 0xBF7DE563D0CD37584A2712A882826DAFECFBB3D3CD2A84D020CD3A824129E6C6
+ 5 : 0xF48F23F93972704AACD8ACCBA9C0F755EA17852154C95EE85F0B158DF026929C
+ 6 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
+ 7 : 0xF38D72C37678F9D2D944048A2CAAD5E74EB2CA1176CEAA6E5CAAA7E5D4C0CD18
+ 8 : 0x232B1B801B2945A5652848427B2830AC77F3AB36CF3A9A0C1E008AE23F7A8388
+ 9 : 0x854402A2616B98E0E7870BF3481A1402F795D7283E49ADE9C48FB0ECE2B9B509
+ 14: 0xDF4F3BFF303828F50FE4911FA80FF250F9B87BE859C07ACEF832C7BF6848144B
+```
+
+```shell
+# PCR 发生变化后 BarsFS 无法正常启动,查看日志显示 Failed to unseal data from tpm
+work@eb27e688d87a:~$ cat /tmp/barsfs.ERROR
+Log file created at: 2024/10/09 06:49:54
+Running on machine: eb27e688d87a
+Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
+E1009 06:49:54.317947 190 utils.cpp:795] Failed to unseal data from tpm, status:-145
+E1009 06:49:54.359601 190 utils.cpp:596] Failed to decrypt certs from TPM: Failed to unseal data from tpm, status:-145
+E1009 06:49:54.359880 190 fuse_op.cc:228] failed to connect to bars server: Failed to decrypt certs from TPM: Failed to unseal data from tpm, status:-145
+```
+
+## 3:总结
+
+本文介绍了百度在边缘计算场景中,利用可信计算技术提升重要数据访问安全性的创新实践。核心方案围绕 UEFI 安全启动和 TPM 的数据密封( TPM-Based Data Sealing )功能展开,将百度自研的对象存储服务( OSS )FUSE 客户端 —— BarsFS 的客户端证书与设备的可信状态紧密绑定。这一机制确保只有在经过验证的可信环境中,边缘节点才能访问 OSS 服务中的敏感数据。该方案不仅显著增强了数据访问的安全性,而且实现了高安全性与低实施成本的平衡。通过分享这一实践经验,我们希望为龙蜥社区在可信计算实践方面提供参考。