EMSA-PKCS1-v1_5(RFC 8017 §9.2)は 0x00 ‖ 0x01 ‖ 0xFF…0xFF ‖ 0x00 ‖ DigestInfo を構成します。0xFF バイトは 8 個以上必要で、DigestInfo はハッシュアルゴリズムとハッシュ値を DER エンコードしたものです。SHA-256 の場合、DigestInfo のプレフィックスは 30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 です。ランダム性がないため、同じ鍵とメッセージからは常に同じ署名が得られます。
使われている場面は次のとおりです。JOSE の RS256、RS384、RS512(RFC 7518 §3.3)、X.509 の sha256WithRSAEncryption(1.2.840.113549.1.1.11)、TLS 1.2 の署名、DKIM の rsa-sha256、SSH の rsa-sha2-256 と rsa-sha2-512 です。TLS 1.3 では証明書内の署名にのみ使用が認められており(rsa_pkcs1_sha256、0x0401)、ハンドシェイクの署名には PSS を使わなければなりません。
知られている落とし穴は、方式ではなく検証者の側にあります。DigestInfo がブロックの残りを埋めていることを確認しないパーサーでは、公開指数が 3 の場合に、2006年に Bleichenbacher が示した偽造が可能でした。RFC 8017 §8.2.2 は、期待されるブロックを再エンコードして比較することを推奨しており、FIPS 186-5 §5.4(h) は必要なチェックを具体的に定めています。この署名パディングを、PKCS #1 v1.5 の暗号化パディング(パディングオラクルの問題)や、PKCS #1 の秘密鍵ファイル形式と混同しないでください。