CSEc鍵消去で使用されるKDF関数は、与えられた鍵から新しい鍵を生成します。この機能で使用されるマスターEUC鍵はM1-M3でも良いのでしょうか?それとも平文である必要がありますか?
こんにちは@ xiaoweix
これはキーであり、M値ではありません。KDF関数のパラメータの命名規則も非常に明確です。M値ではなく、Authkeyです。
こんにちは@ xiaoweix
同じ機能について話しているのかどうかはわかりません。
KDF 関数は、M1 から M5 までの値を計算するために使用されるユーザー定義のユーティリティ関数です。
KDF(AuthKey, Constant, K_out)
AuthKey と Constant パラメータはどちらも 16 バイトの入力パラメータであり、K_out は 32 バイトの出力パラメータです。
KDF 関数は、AuthKey パラメータと Constant パラメータを連結し、CSEc モジュールの CSEC_DRV_MPCompress() 関数を使用してデータを圧縮します。
縮小アルゴリズム API は、出力 K_out を取得するために使用されます。
リセットプロセス全体は次のとおりです。
CSEC_DRV_Init(&csec1_State);
Res = CSEC_DRV_InitRNG();
Res = CSEC_DRV_DbgChal(Challenge);
Res = CalculateDbgAuth(MASTER_ECU_KEY,Challenge,DbgAuth);
Res = CSEC_DRV_DbgAuth(DbgAuth);
乱数を初期化するのは誰ですか?
乱数「チャレンジ」を生成します。
ユーザーは、この乱数を MASTER_ECU_KEY および UID とともに使用して、認証要求を返します。
CSEc が認証を確認すると、この関数は NVM メモリに保存されているすべてのキー (実際のキーと期限切れのキー) を削除します。
まず、キーを個別に消去することはできません。CSEc モジュールの工場出荷時設定リセット コマンドを使用することによってのみ、すべてのキーを消去できます。
それでは、提供されている工場出荷時設定へのリセット コマンドのサンプル プロジェクトを見てみましょう。KDF への入力は M 値ではなく MasterEcuKey であることがわかります。