添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

大家好。 我正处于配备 RPi 评估板的 OPTIGA TPM SLB9673 的第一个测试步骤。 安装进行得很顺利,OPTIGA TPM 2.0 Explorer 启动了。
在第一阶段,我只想使用 RSA2048、RSA4096、ECC256、ECC384 创建密钥对并测量执行速度。 仅仅单步浏览 GUI,我就设法完成了所有这些。 但是,我经常收到一条错误消息,然后连硬件重置按钮、RPi Eval 板和 tpm2_startup 都无济于事。 例如:在重复加密命令 cca 10 次时:

tpm2_rsaencrypt-c 0x81000005-o data_encrypted.txt datain.txt

错误:esys: src/tss2-esys/api/esys_readPublic.c: 324: esys_readPublic_Finish () 收到了一个非 TPM 错误错误:esys:src/tss2-esys_tr.c: 230: esys_tr_fromtpublic_Finish () 错误 readPublic 错误码 (0x000a000a) 错误:esys: src/tss2-esys/esys_tr.c: 320: esys_tr_fromtpublic ()

错误 TR fromtpimPublic 错误码 (0x000a000a)
错误:esys_tr_fromtpmPublic (0xa0007)-tcti: 函数调用顺序
错误错误:无法运行 tpm2_rsaencrypt

由于这不是 tpm 错误,更重要的可能是
dmesg:[928.1779771] tpm tpm0:遗留的数据 错误
[928.178879] 305] tpm tpm0:tpm_transmist :tpm_recv:错误 -5

很明显,i2c 通信是问题所在。

:~ $ lsmod | grep tpm tpm_tis_
i2c 16384 0
crc_ccitt 16384 1 tpm_tis_i2c tpm_tis_core 28672 1 tpm_tis_i2c tpm_tis_core

:~ $ lsmod | grep i2c
tpm_tis_i2c 16384 0 crc_
ccitt 16384 1 tpm_tis_i2c tpm_tis_core 28672 1 tpm_tis_i2c tpm_tis_i2c,tpm_tis_core i2c_brcmstb 16384 0 i2c_gpio 16384 4 0 i2c_algo_bit 16384 1 i2c_gpio i2c_dev 2048
0 0





我必须说,这个错误几乎可以在任何命令下随机发生。
RPi 是全新的全新系统,仅为此任务安装。

我在树莓 4B 上的系统:
$ uname -a
Linux树莓派 6.1.21-v8+ #1642 SMP 抢占 2023 年 4 月 3 日星期一 17:24:16 BST aarch64 GNU/Linux

我只找到了一篇类似的帖子: https://community.infineon.com/t5/OPTIGA-TPM/SLB9673-TPM-does-not-start-correctly/td-p/412271

因为我使用的是 RPI 而不是 IMX8 而且我的内核是 6.1.21 据称它有 8kB 的 i2c 缓冲区,我怀疑缓冲区大小可能不是导致这个问题的原因。

这可能与这个问题无关,但总体而言,以下是我使用的一系列命令,例如通过控制台执行ecc384。 使用控制台时,不使用 GUI。

tpm2_clear-c p tpm2_
changeauth-c 所有者123 tpm2_changeauth-c 代言代言123 tpm2_nvread 0x1c00002-C o-s 1429--offset 0-P owner123-o ifx_rsa_cer
t.crt

tpm2_nvread 0x1c0000a-C o-s 846--offset 0-P owner123-o ifx_ecc_cert.crt
tpm2_createprimary-C o-P owner123-g sha256-G ecc384-c eccprimary.ctx tpm2_evictcontrol-C eccprimary.ctx-P owner123 0x81000006-p eccleaf123-g sha256-g ecc
384-r ECCpri.key-u ECCpub.key

tpm2_load-C 0x81000006-u ECCpub.key-r ECCpri.key-n eccname.data-c ecckeycontext.ctx tpm2_evictcontrol-C ecckeycontext.ctx-P owner123 0x81000007-p eccleaf123-o signaturef_data-f
纯粹的秘密.data

tpm2_sign-c 0x81000007-p eccleaf123-g sha256-o signature_blob secret.data
rm eccverifyLeaf.ctx tpm2_l
oadexternal-C o-u ECCpub.key-c eccverifyLeaf.ctx tpm2_verifyLeaf.ctx-g sha256-m secret.data-s signature_blob

有人遇到这个问题吗? 也许有人能重现它吗? 我错过了什么吗?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/OPTIGA-TPM/OPTIGA-TPM-SLB9673-and-RPI-4B-i2c-communication-error/td-p/637331

@BitoAti

看来你的 TPM 已经消失了,请用另一个 TPM 测试一次,然后检查情况是否如此。

内核 6.X 默认支持 SLB9673;对于 5.X,你必须为带有软 I2C 的 SLB9673 添加设备树。

亲切的问候,
Shreya

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/OPTIGA-TPM/OPTIGA-TPM-SLB9673-and-RPI-4B-i2c-communication-error/m-p/644732

谢谢你的努力。 我注意到,通过不使用 VNC 来减少 CPU 负载,而只使用 SSH 可以将这个问题减少到几乎为零——但它仍然可能发生。 我的猜测是 soft-i2c 在某个时候无法处理这些事件。

由于我找不到 9673 的安装程序,我按照 9672 的安装程序将 spi 改为 i2c,dtoverlay=tpm-slb9673。

如果内核检测到设备或未使用 dmesg,则需要检查内核消息。
要设置 SLB9673,你可以按照给定的 dts 文件进行操作:

/* 由于问题 https://github.com/raspberrypi/linux/issues/4884
需要禁用 硬件 I2C 并启用软件 I2C */
fr agment @0 {t
arget = < & i2 > c_arm;;};
__overlay__{
status = "disabled";
}

请告诉我这是否有效。

亲切的问候,
Shreya

我在 Rpi 上找不到任何 *.dts 文件。 正在寻找 i2c:

bito @raspberrypi:~ $ dmesg | grep i2c
[5.702661] i2c_dev:i2c /dev 条目驱动程序 [7.021012] i2c-gpio i2c-gpio @1:使用第 2 行 (SDA) 和 3 行 (SCL)
[7.619603] brcmstb-i2c fef04500.i2c:
@ @97500hz 已在投票模组中注册
[7.639323] brcmstb-i2c fef09500.i2c: @97500hz 已在投票模式下注册

如前所述,也从设备树和 dmesg 中消失了。 所以我决定全新安装 Raspberry 64 位。 按照 RPI 的安装步骤操作,然后立即尝试按照 9672 的安装过程进行操作(但我改变了

dtoverlay=tpm-slb9670 
to
dtoverlay=tpm-slb9673
and enabling i2c instead of SPI

不幸的是我遇到了一个错误

./installation_script.sh

所以我必须创建一个 venv 然后进行更改:

#pip3 安装 pypubSub
/home/Yourfolder/Optiga-tpm-Explorer/bin/Pip 安装 pyPubSub

然后,程序以错误结束:

CC src/libtpm2tss_la-tpm2-tss-engine-err.lo src/
tpm2-tss-engine-err.c: 在函数 'err_Error' 中:
src/tpm2-tss-engine-err.c:161:15:错误:未使用的参数 “函数” [-werror=未使用的参数] 161 | err_Error(整数函数、整数原因、常量字符 *file、int 行)| ~~~~~~~ cc
1:所有被视为错误的警告都会生成:*** [Make: 1087: srs c/libtpm2tss_la-tpm2-tss-engine-err.lo]


错误 1 m
ake: *** 正在等待未完成的工作...
src/tpm2tss-genkey.c: 在函数 'genkey_rsa' 中:src/tpm2tss-genkey.c: 232:5:
错误:“rsa_New” 已过时:自 OpenSSL 3.0 [-werror=已弃用声明]
232 | rsa = rsa_New ();| ^~~ 包含在 /usr/include/openssl/enginey.h: 25 的文件中,来自 src/tpm2tss-genkey.c: 38:



/usr/include/openssl/rsa.h: 201:28:注意:此处声明 201 | ossl_DEPRECATEDIN_3_0 RSA *rsa_New(无效);| ^~~~~~~src/tpm2tss-genkey.c: 240:9:


错误:“RSA_Free” 已过时:自 OpenSSL 3.0 [-werror=已弃用声明]
240 | rsa_Free (rsa);| ^~~~~~~~~~~~~~/usr/include/openssl/rsa.h: 293:28:注意:此处声明 293 | OSSL_DEPRECATEDIN_3_0 void rsa_Free (RSA *r);
| ~~ ~~~~~~
src/tpm2tss-genkey.c: 251:9:


错误:“RSA_Free” 已过时:自 OpenSSL 3.0 起 [-werror=已弃用声明] 251 | rsa_Free (rsa);

... 还有更多错误,比如...

| ^~~~~~~~~~~~~~~~~~ src/
tpm2-tss-engine-common.c: 261:9: 错误:“rand_openSSL” 已弃用:自 OpenSSL 3.0 [-werror=已弃用声明]
261 | rand_set_rand_Method (rand_openSSL ());| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3_0 RAND_METHOD *rand_OpenSSL(无效);| ^~~~~~~~~~~~



我知道我在这里就像个菜鸟 —— 如果能帮上忙,我真的很感激。

也许我在安装时遗漏了一些东西,但我找不到9673的分步说明。

将 9673 连接到 RPI 只需 4 根电线,我说得对吗?即 SDA、CLK、3.3V 和 GND?

现在,在未完成的安装脚本之后,我有:

ls /dev/i2c *
/dev/i2c-1 /dev/i2c-20 /dev/i2c-21

但是 i2cdetect 1 看不到任何东西,而且 i2cdetect 20 和 21 可以看到几乎所有地址都已填充。我的 OPTIGA 主板没电了吗?

@BitoAti

看来你的 TPM 已经消失了,请用另一个 TPM 测试一次,然后检查情况是否如此。

内核 6.X 默认支持 SLB9673;对于 5.X,你必须为带有软 I2C 的 SLB9673 添加设备树。

亲切的问候,
Shreya

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/OPTIGA-TPM/OPTIGA-TPM-SLB9673-and-RPI-4B-i2c-communication-error/m-p/644732