こんにちは、
私たちのお客様であるデンソーは、Crypto モジュールで問題に遭遇しました。
問題
CriptoDriverObject には 2 つの非対称アルゴリズムが構成されています。1 つは保存と復元コンテキスト機能が有効 (プリミティブ サポート コンテキスト: True) であるため必須であり、もう 1 つは無効 (プリミティブ サポート コンテキスト: False) であるため必須です。これらの設定後、デンソーは Crypto_43_HSE_CheckForContextErrorDetOff() 関数からの 'CRYPTO_43_HSE_NO_DET_RET_NOK' 出力を監視しました。両方の構成が有効(プリミティブ サポート コンテキスト: True)に設定されている場合、Crypto_43_HSE_CheckForContextErrorDetOff() 関数からのエラー出力を監視できません。
質問1
RTD_CRYPTO_43_HSE_UM.pdf の 3.5 ドライバの制限には、次の説明のような 5 番目のポイントがあります。この説明は、デンソーから報告された問題に関連していますか?「コンフィギュレータツールを使用して暗号プリミティブに複数のアルゴリズムファミリ、セカンダリファミリ、またはモードを追加することは可能ですが、各フィールドへの最初のエントリのみが考慮され、検証され、生成された構成ファイルに影響を与えます。これは、CRYPTO_43_HSEドライバがプリミティブの選択された構成を検証できる唯一の方法であるためです。」
質問2
コンテキストの保存と復元機能が有効になっていて、コンテキストの保存と復元機能が必要ないCASEは、コンテキストの保存と復元機能が無効になっている場合と比較して、いくらかのオーバーヘッドが予想されます。NXP はオーバーヘッドを示すことができますか?
質問3
NXP にはドライバ制限の問題を修正する計画がありますか?
ピーターS
まず最初にあなたが言及した制限について説明したいと思います。
つまり、CryptoPrimitiveAlgorithmFamily、Mode、SecondaryFamily の設定では、1 つ以上の要素を設定することは可能ですが、生成CANのは最初の要素の設定のみです。
下の画像を参照してください:
あなたの問題について:
参照されている CryptoDriverObject が 1 つあり、CryptoPrimitives が 2 つあることを理解しています。CryptoPrimitiveAlgorithmFamily、Mode、および SecondaryFamily に複数の要素を構成した場合、それが明確ではありません。
各 CryptoPrimitiveAlgorithmFamily、Mode、および SecondaryFamily に 1 つの要素のみが構成されていると仮定します。
次に、関数Crypto_43_HSE_CheckForContextErrorDetOff() の現在の実装を示します。
- CRYPTO_43_HSE_NO_DET_RET_NOK -> 現在のジョブのモードが CONTEXT であり、次の場合:
-キープリミティブに一致するジョブプリミティブ情報が見つかりません
- またはジョブの入出力長がHSEから提供されたデータを保持するのに十分ではありません
- CRYPTO_43_HSE_NO_DET_RET_OK -> 場合
-現在のジョブのモードはCONTEXTではありません
- または、ジョブのプリミティブ情報がキープリミティブと一致するかどうかを調べ、ジョブのinput/outputLengthはHSEから提供されたデータを保持できます。
「Crypto_43_HSE_CheckForContextErrorDetOff() 関数からのエラー出力を監視できませんでした」について詳しく説明していただけますか?この関数の出力には2つの可能性があると思います。
CryptoPrimitiveAlgorithmFamily、Mode、SecondaryFamily のそれぞれに 1 つの要素のみを構成した場合、それは前述の制限とは関係ないことがわかります。
あなたが直面している状況をよりよく理解できるように、この機能の目的として、現在の構成ファイルとジョブ情報を共有していただけますか?
コメントありがとうございます。
ドライバ制限の説明内容と意味を理解しました。それでは、今回のドライバ制限はデンソー側の問題とは関係ありませんので、経緯をご説明の上、改めてお伺いしたいと思います。
[問題]
デンソーは、2 つの CryptoDriverObject を非対称アルゴリズムとして構成しました。Vector DaVinci 構成では、Save&Restore Context 機能が有効 (Primitive サポート Context: True) になっている必要があり、もう 1 つは無効 (Primitive サポート Context: False) になっている必要があります。
デンソーはこれらの設定を使用して、Crypto_43_HSE_CheckForContextErrorDetOff() 関数からの「CRYPTO_43_HSE_NO_DET_RET_NOK」出力を監視しました。
両方の構成が有効(プリミティブ サポート コンテキスト: True)に設定されている場合、Crypto_43_HSE_CheckForContextErrorDetOff() 関数からの予想される出力として 'CRYPTO_43_HSE_NO_DET_RET_OK' を監視できます。
(Q1)コンテキストの保存と復元機能を有効にするには、すべてのオブジェクトを有効に設定する必要がありますか?コンテキストの保存と復元機能は各オブジェクトごとに設定できますか?
(Q2)すべてを有効にする必要がある場合、コンテキストを保存するためのオーバーヘッドが予想されます。NXPのCANは、必要な Save&Restore Context 機能オブジェクトがない場合のオーバーヘッドを示すことができますか?
こんにちは@hiroshiHirashima
1. コンテキストの保存と復元は、すべてのプリミティブに対して有効にする必要はありません。この設定はプリミティブごとに独立しており、他のプリミティブには影響しません。
2. すべてのプリミティブでこのオプションが有効になっている場合のメモリ オーバーヘッドに関する情報は見つかりませんでした。
こんにちは@hiroshiHirashima
前回の返信のとおり、現在の構成ファイルと、この関数 (CryptoPrimitiveSupportContext) の入力としてのジョブ情報を共有していただけますか。SO、直面している状況をよりよく理解できます。
わかりました。それでは、コンテキストの保存と復元機能は個別に構成する必要があることが理解できました。
現在、デンソーはこの問題に直面しており、2 つのプリミティブのうち 1 つが有効でもう 1 つが無効になっているCASEに予期しない動作が発生したと報告しています。
動作を確認して再現してみることは可能でしょうか?
お客様が以下の添付ファイルを共有しました。添付ファイルをご覧ください。さらに質問や不明な点がある場合はお知らせください。
@Hirashima ひろし
ありがとう
すぐに確認してフィードバックします
@Hirashima ひろし
この問題の根本原因を見つけました。
設定では、同じサービス、アルゴリズム ファミリを持ちながら異なるprimitiveSupportContext を持つ 2 つのプリミティブを設定しました。
@Hirashima ひろし
私の提案は、 Crypto_43_HSE_aPrimitives_Crypto_43_Hse_Asym [0]を削除するべきだということです。
そして、リストCrypto_43_HSE_aPrimitives_Crypto_43_Hse_Asym は 1 つのプリミティブのみを保持します。
現在、このエラーを回避するために、お客様は両方の構成を「TRUE」に設定しています。 -> なぜお客様は同じ構成の 2 つのプリミティブを保持しているのでしょうか?
調査していただきありがとうございます。" 取り除く
回避策についてちょっと質問があります。「 primitiveSupportContext = FALSE 」が削除された場合、パラメータは「 TRUE 」に設定されますか?現在、お客様はこのエラーを回避するために、両方の構成を「TRUE」に設定しています。
@Hirashima ひろし
正解です。
そして、それを作る。EB Tresos で CryptoPrimitiveRef を 1 つだけ保持するように設定することをお勧めします。
次のようになります:
私の理解を添付しました(左:お客様構成 / 右:回避策)。添付のスクリーンショットを確認して、コメントがあればお知らせください。
Crypto_43_HSE_aPrimitives_Crypto_43_Hse_Asym[0]が参照される理由の説明を追加していただけますか?
添付のスクリーンショットのようにソース コードを見ると、u32ObjectIdx = 1 が設定されていますが、u32ObjectIdx はどこかで u32ObjectIdx = 0 として上書きされていますか?