こんにちは、ルーカス( @lukaszadrapa )
解決済み:ED25519およびSHA-512(S32K394)に対するHSEサポートに関する明確化 - NXPコミュニティ
SHA-384/512がHSE-Bのソフトウェアでエミュレートされるという説明ありがとうございます。S32K344ブートローダーでまさにこの問題に遭遇したのですが、私たちの測定結果が代表的なものかどうかを知りたいと思っています。
設定
測定コード
static uint8_t digest[64] __attribute__((aligned(32), section(".mcal_bss_no_cacheable")));
static uint32_t digest_len __attribute__((aligned(32), section(".mcal_bss_no_cacheable")));
static uint32_t hash_time_ms(hseHashAlgo_t algo, const uint8_t *msg, uint32_t len, uint32_t *rsp)
{
hseSrvDescriptor_t *desc = &gHseSrvDesc[0][1];
hseHashSrv_t *hsh = &desc->hseSrv.hashReq;
digest_len = sizeof(digest);
memset(desc, 0, sizeof(*desc));
desc->srvId = HSE_SRV_ID_HASH;
hsh->accessMode = HSE_ACCESS_MODE_ONE_PASS;
hsh->hashAlgo = algo;
hsh->sgtOption = HSE_SGT_OPTION_NONE;
hsh->inputLength = len;
hsh->pInput = HSE_PTR_TO_HOST_ADDR(msg); /* PFLASH */
hsh->pHashLength = HSE_PTR_TO_HOST_ADDR(&digest_len);
hsh->pHash = HSE_PTR_TO_HOST_ADDR(digest);
uint32_t t0 = ~IP_PIT_0->TIMER[1].CVAL; /* 40 MHz up-counter */
*rsp = HSE_Send(0, 1, gSyncTxOption, desc);
return ((~IP_PIT_0->TIMER[1].CVAL) - t0) / 40000u; /* ms */
}
t256 = hash_time_ms(HSE_HASH_ALGO_SHA2_256, (const uint8_t *)0x00500000, 0x2D3F80, &rsp256);
t512 = hash_time_ms(HSE_HASH_ALGO_SHA2_512, (const uint8_t *)0x00500000, 0x2D3F80, &rsp512);EdDSA検証は、HSE_SIGN_EDDSA、bHashEddsa = FALSE(純粋なEd25519)、bInputIsHashed = FALSE、および同じメッセージポインタと長さを指定した、1パスのHSE_SRV_ID_SIGNリクエストです。鍵となるのは、RAMスロットにインポートされたED25519公開鍵です。
結果(すべてのリクエストがHSE_SRV_RSP_OKを返しました)
| SHA-256 | HSE-B(HW) | 38ミリ秒 |
| SHA-512 | HSE-B(ソフトウェアエミュレーション) | 26,010ミリ秒 |
| Ed25519 検証 (純粋) | HSE-B | 26,019ミリ秒 |
| Ed25519 検証 (純粋) | Cortex-M7ソフトウェア、160MHz、-O2、Dキャッシュオン | 952ミリ秒 |
つまり、HSEの検証はM7ソフトウェアの実装より約27倍遅いです。ほとんどの場合、メッセージに対するSHA-512: 検証マイナスSHA-512は約9ミリ秒です。
質問
シリコンに関する注意事項
当社の部品はSBAF 0.10.0の初期シリコン製なので、HSE FW 0.2.55.0をインストールできず、0.2.40.0に制限されています。この古いSBAF/FWの組み合わせが、現在の部品よりもSHA-512ソフトウェアエミュレーションを遅くする可能性があるかどうか知りたいです。とはいえ、私たちの理解では、新しいFWを使っても、HSEコアで80MHzでエミュレートしたSHA-512は、Cortex-M7の160MHz(完全なEd25519検証で952ms、HSEで約26秒)に近づくことはできません。私たちの設定に問題がなければ、M7ではEd25519の認証を維持し、ハードウェアアクセラレーション(AES、SHA-256)でのみHSEを使用する予定です。この結論が間違っている場合は、ご指摘ください。
よろしくお願いいたします。
ファビオ
こんにちは、 @FabioGさん
測定結果は妥当なようだ。Ed25519の長い検証時間は、ほぼ完全にSHA-512による~2.97のプロセッシングによって引き起こされます。MBメッセージ。
あなたの結果と一致するベンチマークデータを持っています。HSE_CLK = 120MHzの場合、24KBのデータに対するハッシュ演算は約140msかかります。これを80MHz、メッセージサイズ約2.97MBにスケーリングすると、約26.5秒となり、これは測定値と非常に近い値です。
上記HSEファームウェアのバージョン間には、パフォーマンス上の違いはありません。軽微なアップデートといくつかのバグ修正が含まれています。これは完全にソフトウェアエミュレーションが原因です。
画像認証性能が重要な場合、ECDSA P-256とSHA-256の組み合わせはHSE-B上でより高速な選択肢となります。SHA-256はハードウェアアクセラレーションに対応しています。私が持っているベンチマークデータに基づくと、同じもののECDSA P-256/SHA-256検証は約2.97です。80 MHzでのMB画像は約0.3秒と推定でき、Ed25519は約26秒かかります。これは単純なスケーリングであり、ハードウェアでの確認はしていませんのでご注意ください。
よろしくお願いいたします。
ルーカス