PKCS#1、改定される


PKCS#1を改定するRFCが出ました。

2016年11月、RFC8017が発行され、PKCS#1 v2.2になりました。PKCS#1といえば公開鍵・秘密鍵のファイルフォーマットですが、今回変わったのはそこではなく、署名のフォーマットであるRSASSA-PKCS-v1_5です。

改定の内容

旧規格RFC3447と新規格RFC8017それぞれのAppendix A.2.4を見比べると分かりますが、ハッシュ方式にSHA-224、SHA-512/224、SHA-512/256の3者が追加されています。SHA-2ファミリーのハッシュ関数としては、従来のv2.1にもSHA-256、SHA-384、SHA-512が定義されていましたので、旧規格の暗号強度が不足だったわけではありません。FIPS 180-4に合わせるための改定のようです。

EMC社(旧RSA社)のPKCS#1規格としては、既に2012年の段階でPKCS#1 v2.2が出ていましたので、4年遅れでRFCに反映されたことになります。

互換性

今回の改定で削除されたハッシュ方式はありませんので、互換性としては、従来のv2.1と上位互換を保っています。RSASSA-PKCS-v1_5にはバージョン番号フィールドといったものはありませんので、新しいハッシュ方式を使わなければ、v2.1形式の署名とv2.2形式の署名は全く同じです。

心の叫び

ああまったく余計なことをしてくれた!!

改定されてしまったものは仕方がないので、今後どう対応するかですが、RFC791のいう「送信は厳密に、受信は寛容に」というポステルの原則に従うならば、署名生成ではSHA-224, SHA-512/224, SHA-512/256を使わず、署名検証側ではなるべく受け入れる、という方向で考えるしかなさそうです。

参考文献

RFC8017 (新規格)
PKCS #1: RSA Cryptography Specifications Version 2.2
https://tools.ietf.org/html/rfc8017 (Google翻訳)

RFC3447 (旧規格)
Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1
https://tools.ietf.org/html/rfc3447 (Google翻訳)

RSA Laboratories (2012)
PKCS #1 v2.2: RSA Cryptography Standard
https://www.emc.com/collateral/white-papers/h11300-pkcs-1v2-2-rsa-cryptography-standard-wp.pdf (Google翻訳)

FIPS PUB 180-4
Secure Hash Standard (SHS)
http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf (Google翻訳)

RFC791
INTERNET PROTOCOL
https://tools.ietf.org/html/rfc791 (Google翻訳)