This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AMIC110:RSA 密钥生成性能

Guru**** 1624225 points
Other Parts Discussed in Thread: AMIC110
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1245209/amic110-rsa-key-generation-performance

器件型号:AMIC110

大家好、

我目前正在使用基于 amic110 SoC 的定制板、将 u-boot 和(Yocto) Linux 用作引导加载程序和操作系统。

在启动时、可生成 RSA 密钥对。 正如在该平台上所预期的那样、密钥的生成确实需要一些时间。 意外的是密钥生成行为:OpenSSH 需要20秒到380秒才能生成密钥。 我已经使用与执行以下步骤完全相同的电路板和软件运行了一系列测试:

1. power on
2. wait for login prompt
3. login and delete keys
4. reboot

使用 grabserial,我测量了创建密钥所需的时间。 结果分布在整个地方,从20到380秒,中位值为76秒。 我使用不同的电路板(定制板、TI 评估模块和 BeagleBone Black、都使用某种基于 am355x 的 SoC)和软件版本重复了该实验、但结果(尤其是一个器件上密钥生成时间之间的差异)是相同的。

我将 Yocto 3.1 (Dunfell)与 TI 内核5.4.106配合使用、并使用 openssl 1.1.1。 已根据 TI 文档启用对 RNG 的支持:

[    1.119132] omap_rng 48310000.rng: Random Number Generator ver. 20 
[    1.127665] random: fast init done                                 
[    1.131274] random: crng init done        

从我的观点来看,问题是熵相关的。 是否有人在此 SoC 上遇到相同的问题、是否有其他配置建议可可靠地加速密钥生成? 或者这是否只是 RNG 的预期行为?

我不一定对加快密钥生成感兴趣、但我想知道为什么需要的时间会遍布整个地方。

提前感谢、

戴夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dave、您好!
    我将使用 AM335x GP EVM 上的 SDK 8.2在原理图上附加一份示例日志、以供您参考

    root@am335x-evm:~# ls -l /dev/hwrng
    crw------- 1 root root 10, 183 Jan  1 00:00 /dev/hwrng
    root@am335x-evm:~# cat /dev/hwrng | rngtest -c 1000
    rngtest 6.9
    Copyright (c) 2004 by Henrique de Moraes Holschuh
    This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    rngtest: starting FIPS tests...
    rngtest: bits received from input: 20000032
    rngtest: FIPS 140-2 successes: 999
    rngtest: FIPS 140-2 failures: 1
    rngtest: FIPS 140-2(2001-10-10) Monobit: 1
    rngtest: FIPS 140-2(2001-10-10) Poker: 0
    rngtest: FIPS 140-2(2001-10-10) Runs: 0
    rngtest: FIPS 140-2(2001-10-10) Long run: 0
    rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
    rngtest: input channel speed: (min=50.347; avg=2899.461; max=3906250.000)Kibits/s
    rngtest: FIPS tests speed: (min=1.763; avg=22.655; max=31.014)Mibits/s
    rngtest: Program run time: 7928807 microseconds
    root@am335x-evm:~# 

    此致!
    -洪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hong:

    在运行上述测试步骤时、我也运行了 rngtest。

    它始终是以下值的四舍五入、因此测试速度比采样输出慢一点:

    root@am335x-lat:~# ls -l /dev/hwrng 
    crw-------    1 root     root       10, 183 Jan  1  1970 /dev/hwrng
    root@am335x-lat:~# cat /dev/hwrng | rngtest -c 1000
    rngtest 6.9
    Copyright (c) 2004 by Henrique de Moraes Holschuh
    This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    rngtest: starting FIPS tests...
    rngtest: bits received from input: 20000032
    rngtest: FIPS 140-2 successes: 999
    rngtest: FIPS 140-2 failures: 1
    rngtest: FIPS 140-2(2001-10-10) Monobit: 0
    rngtest: FIPS 140-2(2001-10-10) Poker: 0
    rngtest: FIPS 140-2(2001-10-10) Runs: 1
    rngtest: FIPS 140-2(2001-10-10) Long run: 0
    rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
    rngtest: input channel speed: (min=214.299; avg=935.903; max=1148897.059)Kibits/s
    rngtest: FIPS tests speed: (min=11.891; avg=12.260; max=12.393)Mibits/s
    rngtest: Program run time: 22485211 microseconds
    

    问题是-正如我的初始消息中所提到的-在启动时生成 SSH 密钥:

    [0.745364 0.347718] U-Boot SPL 2020.01v0.05.0000 (Jun 30 2023 - 11:51:16 +0000)
    [0.747217 0.001853] Trying to boot from NAND
    [1.989249 1.242032] 
    [1.989394 0.000145] 
    [1.989476 0.000082] U-Boot 2020.01v0.05.0000 (Jun 30 2023 - 11:51:16 +0000)
    [1.991162 0.001686] 
    
    ...
     
    [9.150304 5.805711] [    0.000000] Booting Linux on physical CPU 0x0
    [9.150897 0.000593] [    0.000000] Linux version 5.4.106 (oe-user@oe-host) (gcc version 9.3.0 (GCC)) #1 Mon Mar 29 10:07:21 UTC 2021
    [9.151966 0.001070] [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [9.152672 0.000706] [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    
    ...
    
    [9.636953 0.000620] [    0.601988] printk: console [ttyS0] disabled
    [9.637361 0.000408] [    0.602153] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
    [9.638205 0.000844] [    1.116097] printk: console [ttyS0] enabled
    [9.638610 0.000405] [    1.126097] omap_rng 48310000.rng: Random Number Generator ver. 20
    [9.657824 0.019214] [    1.134655] random: fast init done
    [9.658952 0.001128] [    1.138349] random: crng init done
    
    ...
    
    [16.283453 0.000733] [    7.752096] net eth0: started
    [16.324770 0.041317] done.
    [16.340675 0.015905] Starting random number generator daemon.
    [16.740384 0.399709] Starting OpenBSD Secure Shell server: sshd
    [16.836279 0.095895]   generating ssh RSA host key...
    [82.470518 65.634239]   generating ssh ECDSA host key...
    [82.806276 0.335757]   generating ssh ED25519 host key...
    [83.589673 0.783397] done.
    [83.701458 0.111785] Configuring PHYs
    
    ...
    
    [85.423412 0.000070] am335x-lat login:

    您可以从内核输出中看到、密钥生成在启动时花费了大量时间(此运行花费了65秒)。 这个时间在每次启动时总是不同的、从20s 到380s。 是否还有其他需要验证的事情?

    此致

    戴夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dave、您好!
    密钥生成过程一般需要时间。
    如日志中所示、多个密钥(RSA、ECDSA...) 信号都生成在 sshd 下。
    我认为 sshd 本身是一个守护程序应用程序,它可能会解释每次的不同时间,而密钥生成过程/时间在 kernel/sshd 软件...
    此致!
    -洪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hong:

    密钥生成需要时间这一事实在这里没有疑问。 我最大的谜题是这样一个事实,即-运行上述实验-密钥生成需要非常不同的时间,而对于一项任务-从我的角度来看-确定性的,因此应该总是花费相同的时间。 登录后手动运行密钥生成会导致需要非常确定的时间。

    我猜在这个阶段 hwrng 不能正常工作。 使用 haveged 我无法改善结果(代码应该在内核的5.4版,所以这有点期望)。

    我的问题是、密钥生成所需的时间变化是否属于预期行为。 登录后手动创建 RSA 密钥时,我能够重现约20秒的恒定结果。

    此致

    戴夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dave、您好!
    我认为仅 TRNG 生成时间就会发生变化、如运行时的日志所示 。
    此致!
    -洪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hong:

    那么、您的建议是 TRNG 具有不确定性、这意味着我看到的行为不是故障、而是 am355x 平台的限制或预期行为? 因此、我的 Yocto 配置中不存在配置问题、但希望 plattform 会受到限制?

    此致

    戴夫