Linux メモリ保護機能の実装 (mlock, MADV_DONTDUMP, MADV_WIPEONFORK)
セキュリティ強化のため、Linux 固有のメモリ保護機能を追加: ### 実装した保護機能 1. **mlock()** - スワップ防止 - センシティブなメモリをディスクへのスワップから保護 - 権限不足の場合は警告出力の上継続(フォールバック) 2. **MADV_DONTDUMP** - コアダンプ漏洩防止 - コアダンプ生成時にメモリ内容を除外 - プライベート鍵がダンプに含まれないようにする 3. **MADV_WIPEONFORK** - fork() 子プロセス漏洩防止 - fork() 後の子プロセスからメモリ内容を消去 - 子プロセスへの鍵漏洩を防止 ### 変更ファイル - src/se050_scp03.c - SCP03 コンテキストのメモリ保護 - src/se050_keystore.c - キーストアコンテキストのメモリ保護 ### 実装詳細 - Linux 環境でのみ有効(#ifdef __linux__) - 非 Linux プラットフォームではフォールバック - mlock 失敗時は警告のみ出力(処理継続) - madvise 失敗時はエラーログ出力(非致命的) ### 注意事項 - mlock には CAP_IPC_LOCK 権限または RLIMIT_MEMLOCK クォータが必要 - 権限不足の場合でも機能は動作(保護なしで継続) - 本番環境では適切な権限設定を推奨
This commit is contained in:
@@ -42,19 +42,19 @@
|
||||
|
||||
#if SE050_CHIP == CHIP_SE050C0
|
||||
#define CHIP_NAME "SE050C0"
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x90
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x48 /* 7-bit address */
|
||||
#define ENC_KEY SE050C0_ENC_KEY
|
||||
#define MAC_KEY SE050C0_MAC_KEY
|
||||
#define DEK_KEY SE050C0_DEK_KEY
|
||||
#elif SE050_CHIP == CHIP_SE050C1
|
||||
#define CHIP_NAME "SE050C1"
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x90
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x48 /* 7-bit address */
|
||||
#define ENC_KEY SE050C1_ENC_KEY
|
||||
#define MAC_KEY SE050C1_MAC_KEY
|
||||
#define DEK_KEY SE050C1_DEK_KEY
|
||||
#elif SE050_CHIP == CHIP_SE050E2
|
||||
#define CHIP_NAME "SE050E2"
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x90
|
||||
#define SE050_DEFAULT_I2C_ADDR 0x48 /* 7-bit address */
|
||||
#define ENC_KEY SE050E2_ENC_KEY
|
||||
#define MAC_KEY SE050E2_MAC_KEY
|
||||
#define DEK_KEY SE050E2_DEK_KEY
|
||||
|
||||
Reference in New Issue
Block a user