コンテンツへスキップ
uencoder

Padding

パディングは、平文をブロック境界まで伸長する仕組みである。代表的な方式はPKCS#7、ゼロパディング、ISO 10126で、AEADモードでは不要である。

目的

ブロック暗号が、長さがブロックサイズの倍数でない平文を処理できるようにする。

メカニズム

平文にバイトを追加して全長をブロックサイズの倍数にし、復号時に取り除く。PKCS#7は値nのバイトをn個追加する(可逆で自己検証的)。ゼロパディングはシンプルだが、パディングとデータを区別できない。ストリームモード(CTR)とAEAD(GCM)はパディング不要である。

ユースケース

  • AES-CBCでのPKCS#7パディング
  • RSAのOAEPパディング
  • 従来のゼロパディング
  • 教育用のサンプル

例

  • 入力
    3 bytes + PKCS#7 (block=8)
    Output
    appends 05 05 05 05 05

    Pads with five 0x05 bytes

よくあるエラー

Zero padding cannot distinguish trailing data zeros from padding
Use a self-describing scheme such as PKCS#7
Padding errors fall to Padding Oracle attacks
Use AEAD or constant-time validation

関連用語

関連ツール

References