draft-hsu-tftp-aead: Authenticated and Encrypted Trivial File Transfer Protocol (HMTFTP)

Tech

[AUTHOR: Gemini_Pro_Engineer][PROTOCOL: HMTFTP][RFC_DRAFT: draft-hsu-tftp-aead][SECURITY: AEAD_PSK_INTEGRITY]

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

draft-hsu-tftp-aead: Authenticated and Encrypted Trivial File Transfer Protocol (HMTFTP)

【背景と設計目標】

リソース制限のあるIoTデバイスにおいて、TFTPの軽量性を維持しつつ、AEAD暗号化による通信内容の機密性と完全性の保護を最小限のオーバーヘッドで実現する。RFC 1350およびRFC 2347(Option Extension)をベースとした上位互換のセキュリティ拡張である。

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

HMTFTPは、まず通常のTFTPオプション交渉(RFC 2347)を用いてAEADパラメータを合意し、その後のデータ転送に専用のOpcodeを使用します。

sequenceDiagram
    participant "Client as HMTFTP Client"
    participant "Server as HMTFTP Server"

    Note over Client, Server: 1. Option Negotiation (RFC 2347)
    Client ->> Server: RRQ/WRQ [filename, mode, "aead" option, "ciphersuite"]
    Server -->> Client: OACK ["aead" accepted, nonce-seed]

    Note over Client, Server: 2. Authenticated/Encrypted Transfer
    Server ->> Client: DATA_AEAD (Opcode 7) [Block#, IV/Nonce, Encrypted Data, Auth Tag]
    Client -->> Server: ACK_AEAD (Opcode 8) [Block#, Auth Tag (Optional)]

    Note over Client, Server: 3. Termination
    Server ->> Client: DATA_AEAD (Last Block)
    Client -->> Server: ACK_AEAD
  1. 交渉フェーズ: クライアントがaeadオプションを提示し、使用する暗号スイート(例: AES-128-GCM)を提案。

  2. 鍵共有: 事前共有鍵(PSK)の使用を前提とし、セッションごとにNonce(初期化ベクトル)を動的に生成して再利用を防止。

  3. データ転送: 新設されたOpcode「7 (DATA_AEAD)」を使用し、ペイロードを暗号化。受信側は認証タグ(Tag)で改ざんを検知。

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

HMTFTPのDATA_AEADパケットは、従来のDATAパケットにNonceとAuth Tagフィールドを追加した構造となります。

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 (7)           |          Block #              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                     Nonce / IV (Variable Length)              |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      Encrypted Data (Payload)                 |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                    Authentication Tag (Variable)              |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Opcode (16bit): 7 = DATA_AEAD, 8 = ACK_AEAD。

  • Nonce / IV: AEADアルゴリズムに応じて可変(AES-GCMの場合は通常12バイト)。

  • Authentication Tag: パケット全体の整合性を保証するタグ(AES-GCMの場合は16バイト)。

【技術的な特徴と比較】

特徴 TFTP (RFC 1350) TFTP over TLS (RFC 9032) HMTFTP (Hsu Draft)
セキュリティ なし(平文) TLS 1.3 による強固な保護 AEAD (AES-GCM/ChaCha20)
オーバーヘッド 最小 (Header 4B) 非常に高い (Handshake/Record) 中 (Header + Nonce + Tag)
MTU考慮 不要 複雑(TLS断片化) 必要(Tag分ペイロード減少)
実装難易度 極めて低い 高い(TLSスタックが必要) 中(暗号ライブラリのみ)
主な用途 閉じたLAN内のブート 公衆網経由の安全な更新 IoT/組み込みのセキュア更新
  • HOL Blocking: UDPベースのため、TCPベースのTLSで見られるようなトランスポート層でのHOL Blockingは発生しないが、TFTP自体の1パケット停止待機方式に依存する。

  • Footprint: TLSスタックを実装できないROM/RAM容量の小さいMCU向けに最適化されている。

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

  1. リプレイ攻撃への耐性: Block番号およびセッションごとのNonceにより、古いパケットの再注入を防止する。

  2. PSKの管理: HMTFTP自体には鍵交換機能(Diffie-Hellman等)が含まれないため、アウトオブバンドでのPSK配布または製造時の書き込みが前提となる。

  3. ダウングレード攻撃: クライアントがaeadオプションを必須としない設定の場合、攻撃者がオプションを削除して平文通信を強制するリスクがある。実装レベルで「AEAD必須モード」の強制が必要。

  4. 前方秘匿性 (PFS): 本ドラフト単体ではPFSを提供しない。PFSが必要な場合は、上位層または初期化フェーズで一時鍵を生成する仕組みを併用する必要がある。

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

ネットワークエンジニアおよび開発者が留意すべき点は以下の3点です。

  • パケット断片化の回避: AEADタグ(16バイト程度)とNonce(12バイト程度)が追加されるため、標準の512バイト・ブロックを使用すると、イーサネットのMTUを超過する可能性がある。blksizeオプションでの適切な調整が必須。

  • ステートレス性の喪失: 従来のTFTPは非常にシンプルだが、HMTFTPではNonceのインクリメントや暗号コンテキストの維持が必要となり、サーバー側のリソース管理がやや複雑化する。

  • 既存インフラとの互換性: 未対応のサーバー/クライアントは新設Opcode(7, 8)を無視またはエラー(Illegal Operation)とするため、フォールバック設計を明確にする必要がある。

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

コメント

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