LoginSignup
1
0

Renesas TSIP④:Security Key Management Tool によるKUKのEncrypted Key取得

Last updated at Posted at 2024-03-10

はじめに

Security Key Management Toolは、UFPKによりKUKを暗号化し、KUKのEncrypted Keyを得ることができます。

Security Key Management Tool

「鍵のラッピング」タブの「鍵の種類」タブで以下の設定をします。

  • 鍵の種類:KUKを選択します。
  • ラッピング鍵:UFPKを選択し、UFPKファイルとしてUFPKの平文鍵を、W-UFPKファイルとしてUFPKのEncrypted Keyを指定します。
  • 出力:バイナリを選択し、出力ファイル名(.bin)を指定します。

image.png

「鍵データ」タブに移動し、以下の設定をします。

  • ファイル:KUKの平文鍵を指定します。

image.png

上記設定後、「ファイルを生成する」をクリックすると「出力」に指定したファイルにバイナリ形式で出力が生成されます。
バイナリファイルのフォーマットはドキュメントまたはCソースでの出力に記載があります。
出力形式をCソースにすると以下のようになるはずです(具体的な値は異なる)。

const encrypted_user_key_data_t g_encrypted_user_key_data =
{
    /* uint32_t keytype; */
    0x00000000,
    /* uint32_t shared_key_number; */
    0x00000000,
    /* uint8_t wufpk[32]; */
    {
        0x57, 0xEF, 0xD8, 0x49, 0x76, 0x1E, 0x63, 0xE5, 0xA0, 0x5D, 0x9D, 0xA3, 0xF9, 0xF7, 0x51, 0xC0,
        0x8C, 0xF5, 0x0F, 0x53, 0x15, 0x32, 0xC4, 0x8A, 0xCE, 0xF2, 0x43, 0x11, 0x46, 0x7F, 0x04, 0xC3
    },
    /* uint8_t initial_vector[16]; */
    {
        0x31, 0x4F, 0x73, 0x0F, 0xFD, 0xE9, 0xFE, 0x3F, 0xD5, 0x13, 0xA9, 0x55, 0xA5, 0x41, 0x68, 0xF0
    },
    /* uint8_t encrypted_user_key[ENCRYPTED_KEY_BYTE_SIZE]; */
    {
        0x53, 0xDC, 0xD0, 0x82, 0xF7, 0x67, 0x4F, 0x63, 0x06, 0xA5, 0x94, 0x5F, 0xD0, 0x6D, 0x8D, 0x33,
        0xEE, 0x4C, 0x48, 0xEF, 0x14, 0xE4, 0xEC, 0x20, 0x13, 0xCB, 0x8F, 0xE0, 0x83, 0x52, 0x18, 0xD8,
        0x03, 0xD4, 0xC6, 0x58, 0x33, 0x8B, 0xAC, 0x00, 0xC3, 0x2D, 0x5B, 0x24, 0xCF, 0x4A, 0xEB, 0x22
    },
    /* uint8_t crc[4]; */
    {
        0x52, 0x49, 0x87, 0x31
    },
};

以下の情報が含まれています(big endian)。

  • keytype(32bit):キー種別ですが、RXの場合使用しません。
  • shared_key_index(32bit):RXの場合0x00000000固定です。
  • wufpk(32byte):UFPKのEncrypted Keyです。
  • initial_vector(16byte):KUKのEncrypted Keyを計算するときに使用されたIVです。
  • encrypted_user_key(48byte):KUKのEncrypted Keyです。
  • crc(4byte):keytype~encrypted_user_keyまでのCRCです。

上記のうちwufpk、initial_vector、encrypted_user_key を入力とし、KUKのWrapped KeyをMCUに計算させることができます。

ファームウェアへの組み込み方法は、以下のような方法が考えられそうです。

  • Security Key Management ToolからCソースを出力しファームウェアに組み込む:攻撃者へのキーの漏洩はないものの、フラッシュのコピーによりUFPK、KUKで可能な操作がすべてできる。
  • デバイスのプロビジョニング時にSecurity Key Management Toolからのバイナリ出力を読み込み、MCU上でKUKのWrapped Keyを計算・データフラッシュへ書き込む:プロビジョニング操作が必要な代わりに、フラッシュのコピーができない(デバイスごとのHUKで暗号化されるため)。

セキュリティを考えると、KUKのWrapped Keyのみをデータフラッシュに保存することがよさそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0