draft-hansen-hmtftp-00: Hardened Minimal Trivial File Transfer Protocol

Tech

[STYLE: TECHNICAL_DEEP_DIVE] [TARGET: NETWORK_ENGINEER] [FORMAT: RFC_SUMMARY]

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

draft-hansen-hmtftp-00: Hardened Minimal Trivial File Transfer Protocol

【背景と設計目標】

IoTデバイスの省リソース性を維持しつつ、従来のTFTP(RFC 1350)が抱える「暗号化なし・改竄検知なし」という脆弱性をAEAD(認証付き暗号)の導入により解決する。

【通信シーケンスと動作】

HMTFTPは、初手でセキュリティオプション(Key IDやNonce)をネゴシエーションし、以降のDATAパケットをAEADで保護します。

sequenceDiagram
    participant "Client as Client (IoT Device)"
    participant "Server as Server (Update Server)"

    Note over Client, Server: Phase 1: Security Negotiation (RRQ/WRQ)
    Client ->> Server: RRQ "firmware.bin" (Option: AEAD=AES_GCM_128, KeyID=0x01)
    Server -->> Client: OACK (AEAD=AES_GCM_128, ServerNonce=... )

    Note over Client, Server: Phase 2: Encrypted Data Transfer
    Server ->> Client: DATA (Block #1, IV, Ciphertext, Tag)
    Client -->> Server: ACK (Block #1)

    Note over Client, Server: Phase 3: Completion
    Server ->> Client: DATA (Last Block, Tag)
    Client -->> Server: ACK (Last Block)

【データ構造 / パケットフォーマット】

HMTFTPのDATAパケットは、RFC 1350を拡張し、暗号化メタデータとMAC(メッセージ認証コード)をペイロードに含みます。

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode (0x03: DATA)          |      Block # (16 bits)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Initialization Vector (IV)               |
|                            (96 bits)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|             Encrypted Data (Variable Length Payload)          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Authentication Tag (MAC)                |
|                            (128 bits)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

【技術的な特徴と比較】

HMTFTPは、DTLSを実装できない極低リソースのMCU(マイコン)環境をターゲットとしています。

機能 / 特徴 TFTP (RFC 1350) TFTP over DTLS (RFC 7839) HMTFTP (Proposed)
暗号化方式 なし TLS準拠 (AES/ChaCha) AEAD (AES-GCM/ChaCha-Poly)
オーバーヘッド 最小 (4 bytes) 大 (Handshake + Record) 中 (IV + Tag)
0-RTT/接続性 対応 非対応 (Handshake必須) 対応 (PSK利用時)
HOL Blocking UDPのためなし UDPのためなし なし
実装難易度 極めて低い 高い (Stackが必要) 低い (AEADライブラリのみ)

【セキュリティ考慮事項】

  1. リプレイ攻撃耐性: Block番号をAEADの追加認証データ(AAD)として含めることで、パケットの順序入れ替えや再送攻撃を検知する。

  2. 前方秘匿性 (PFS): 静的共有鍵(PSK)運用の場合、PFSは提供されない。PFSが必要な場合は、事前にEphemeral Diffie-Hellman等を用いた鍵交換が必要。

  3. IVの再利用禁止: 同一鍵でIV(Nonce)を再利用すると、ストリーム暗号の特性上、平文が漏洩するリスクがあるため、カウンター管理が厳格に求められる。

【まとめと実装への影響】

実装に際してネットワークエンジニアが留意すべき点は以下の3点です。

  • MTUの計算: AEADのTag(16バイト程度)とIV(12バイト程度)が各パケットに付与されるため、イーサネットMTU(1500)を超えるフラグメンテーションが発生しないよう、ブロックサイズ(通常512)の調整が必要。

  • 暗号化ライブラリの選定: デバイス側のハードウェアアクセラレーション(AES-NI等)が利用可能なアルゴリズムを選択することで、CPU負荷を最小限に抑えることが可能。

  • 鍵管理の運用設計: HMTFTP単体では鍵配布機能を定義していないため、製造時に個体識別鍵を書き込むか、別のセキュアチャネルでの鍵配布が前提となる。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました