IoTセキュリティ:堅牢なデバイス保護のための暗号技術の基礎
編集者注:モノのインターネット(IoT)を保護することは、データストリーム、ファームウェア、およびそれらが接続するエンタープライズリソースの完全性を維持するために不可欠です。IoTセキュリティは多面的な課題であり、脅威を特定し効果的な緩和策を実装するための体系的なアプローチが求められます。
Perry Lea著『Internet of Things for Architects』より抜粋・翻訳。
第12章 IoTセキュリティ
著者:Perry Lea
暗号技術
暗号化と機密性はIoT導入において妥協できません。これらは通信、ファームウェア、認証プロセスを保護します。実践では、3つの核心的な暗号プリミティブを扱います:
- 共通鍵暗号 - 同じ鍵でデータを暗号化・復号化します。代表的なアルゴリズムにはRC5、DES、3DES、業界標準のAESがあります。
- 公開鍵暗号 - 公開鍵でデータを暗号化し、対応する秘密鍵の保有者のみが復号化できます。この非対称方式は認証と否認防止も可能にします。楕円曲線暗号、PGP、RSA、TLS、S/MIMEなどの広く使われるプロトコルがこのモデルに基づいています。
- 暗号学的ハッシュ - 任意のデータを固定長のダイジェストにマッピングする一方向関数。MD5、SHA-1、SHA-2、SHA-3がこのカテゴリに属します。ハッシュはデジタル署名、メッセージ認証コード(MAC)、安全なファームウェア検証の基盤となります。パスワードのような小さな入力をハッシュ化する際は、エントロピーを高めるためにソルトを追加します。これは鍵派生関数(KDF)の一種です。

暗号技術の要素。共通鍵暗号は暗号化と復号化に同一の鍵を使用し、公開鍵暗号は異なる公開鍵/秘密鍵の組み合わせを使用します。ハッシュ関数は一方向の完全性チェックを提供します。
共通鍵暗号
共通鍵暗号では、平文がクリアテキスト入力、暗号文が暗号化出力となります。高度暗号化標準(AES)は世界的なベンチマークであり、古いDESアルゴリズムに取って代わっています。AESはFIPS 197およびISO/IEC 18033-3に準拠し、128ビットブロックで動作し、鍵サイズは128、192、または256ビットです。鍵が長いほどセキュリティは強化されますが、CPUサイクルが増加します:128ビット鍵は10ラウンド、192ビット鍵は12ラウンド、256ビット鍵は14ラウンドを必要とします。
// AES-128暗号の疑似コード
// 入力: 128ビット平文
// 出力: 128ビット暗号文
// w: 44個の32ビットワード(拡張鍵)
state = in
w = KeyExpansion(key) // 鍵拡張フェーズ
AddRoundKey(state, w[0, Nb-1]) // 初期ラウンド
for round = 1 to Nr-1
SubBytes(state) // 非線形置換
ShiftRows(state) // 行置換
MixColumns(state) // 列混合
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state) // 最終ラウンド
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
スクロールまたはボックスの隅をドラッグして拡大できます。 ↑

ブロック暗号(AESなど)は固定サイズのブロックでデータを処理し、ブロック暗号モードを用いてより大きなメッセージにアルゴリズムを拡張します。初期化ベクトル(IV)により、同一の平文ブロックが異なる暗号文を生成し、パターン分析を防ぎます。一般的なモードには以下があります:
- 電子コードブック(ECB) - 最も単純なモード。各ブロックを独立して暗号化。同一ブロックは同一の暗号文となり、ほとんどの用途に不向き。
- 暗号ブロックチェイン(CBC) - 各平文ブロックを前の暗号文ブロックとXORしてから暗号化し、拡散性を提供。
- 暗号フィードバック(CFB) - ストリームのようなモードで、前の暗号出力を次の暗号化ステップにフィードバック。並列化不可だが、ブロック損失からの復旧が可能。
- 出力フィードバック(OFB) - CFBに似るが、平文とXORされるキーストリームを生成し、誤り訂正符号を可能にする。
- カウンタ(CTR) - ノンス・カウンタペアを使用してブロック暗号をストリーム暗号に変換し、並列暗号化と高速処理を実現。
- CBC-MAC - CBCにメッセージ認証コードを追加し、完全性検証と送信元認証を可能にする。
これらのモードは1970年代後半に起源を持ち、NISTによってFIPS 81で標準化されました。これらは機密性を保護しますが、改ざん防止にはなりません。認証と暗号化を組み合わせた結果、AES-CCM(CBC-MAC付きカウンタ)などの認証付き暗号モードが生まれました。CCMはZigbee、Bluetooth Low Energy、TLS 1.2(鍵交換後)、IPsec、Wi-Fi WPA2などのプロトコルに不可欠です。

AES-CCMは、暗号文ストリームの効率的な復号化にCTRを、認証タグの生成にCBCを使用します。タグは復号化されたペイロードから導出される期待値と比較され、不一致は改ざんの可能性を示します。

AES-CCMモード。

完全に接続されたnノードのメッシュでは、双方向通信にn(n-1)/2個のユニークな鍵が必要で、二次的にスケールします(O(n²))。したがって、大規模IoT展開には効率的な鍵管理戦略が不可欠です。
モノのインターネットテクノロジー