pkcs1 v2.1
pkcs1 v2.1
pkcs1 v2.1
1:
RSA Cryptography Standard
Burt Kaliski, RSA Laboratories PKCS Workshop, 30 September 1999
Summary
PKCS #1 v1.5 published in November 1993
PKCS #1 v2.1 draft incorporates the companion technique for digital signatures, PSS (Probabilistic Signature Scheme)
PSS developed by same authors, 1996
Goals of Presentation
Part I: Review the current draft
Status
PKCS #1 v2.1 adds PSS signature scheme, includes some editorial improvements Draft 1 released 21 September for 30-day review
Outline
What is PSS?
What is PSS?
PSS stands for Probabilistic Signature Scheme
Schemes are built up from primitives, encoding methods mapping between messages, integers
Note: in PKCS #1 v2.1 encoding methods map to strings, which are then converted to integers; this detail omitted here for simplicity
IF Family
Cryptography based on the difficulty of the integer factorization (IF) problem Modulus n = pq Public exponent e, private exponent d
RSA: e odd
Rabin-Williams: e even; conditions on p, q
Notation
M message (string)
m
s SP VP
Encoding Methods
Mappings between message M, integer message representative m
Encode: M m Check: M, m consistent? Decode: m M
Rabin-Williams case:
SP: s = |td mod n| where t = m or m/2 such that (t/n) = +1 VP: m = t, 2t, n-t or 2(n-t) where t = se mod n, m has redundancy
Verification operation:
m = VP(s) Check(M, m)
Recovery operation:
m = VP(s) M = Decode(m)
(Size of M is limited)
3. Compare:
m =? m
Message representative is one byte shorter than modulus Based on underlying hash function, mask generation function
Hash
DB
MGF
xor
maskedDB
EM
Observations
Message is hashed with random salt
improves security proof reduces reliance on hash function security
PSS Advantages
Provable security under random oracle model
other methods have ad hoc security, not a proof
Whats Provable?
Suppose an algorithm A can forge PSS signatures without access to the details of Hash, MGF
Hash, MGF are effectively random oracles that can only be queried
Then an algorithm B can invert RSA in about the same time using algorithm A as a subroutine
If RSA is hard to invert, then PSS is secure
Proof Method
Inverting algorithm B builds Hash, MGF that appear random to forgery algorithm A, but embed an instance to be inverted When A succeeds at forgery, B succeeds at inverting RSA Random salt is key to tight proof, but even if not random, proof still holds
But although the proof may overestimate the properties of Hash and MGF, it underestimates properties of RSA
e.g., bit security properties are not considered
Thus, in practice, PSS may well provide high security even without the random oracle model
Alternatives to PSS
Current methods
but not provably secure (what if?)
Future research
Parameters:
RSASSA-PSS-params ::= SEQUENCE { hashFunc [0] AlgorithmIdentifier {{oaepDigestAlgorithms}} DEFAULT sha1Identifier, maskGenFunc [1] AlgorithmIdentifier {{pkcs1MGFAlgorithms}} DEFAULT mgf1SHA1Identifier, salt OCTET STRING OPTIONAL }
Parameters:
Salted-Hash-Params ::= SEQUENCE { hashFunc [0] AlgorithmIdentifier, salt OCTET STRING OPTIONAL }
To save space, both identifiers should specify idRSASSA-PSS without salt Salt can be recovered from signature during verification
To facilitate single-pass processing, identifier before message should specify id-salted-hash with underlying hash function, salt Hash function identifier in SignerInfo should specify id-salted-hash without salt Signature algorithm identifier should specify idRSASSA-PSS without salt
Patent Issues
University of California has applied for a patent (U.S. only) on PSS and PSS-R In a letter to IEEE P1363, UC has offered to waive licensing on PSS for signatures with appendix if adopted as an IEEE standard Reasonable and non-discriminatory licensing for signatures with message recovery
Recommended Deployment
A gradual transition to PSS is recommended in the interest of prudent security
rollover, along with AES, new hash functions,
PKCS #1 v1.5 signature scheme is still appropriate for new applications Different than situation with PKCS #1 v1.5 encryption scheme, where only OAEP is recommended for new applications
D. Coppersmith, S. Halevi and C. Jutla extended the attack to break ISO/IEC 9796-1 (Crypto 99 rump session)
Introduction
Various methods today for digital signatures in the integer factorization / RSA family Standards, practice, theory differ How to harmonize?
ANSI X9.31
Encode(M) =
6b bb bb ba || Hash(M) || 3x cc
where x = 3 for SHA-1, 1 for RIPEMD-160
Ad hoc design
Widely standardized
IEEE P1363, ISO/IEC 14888-3 US NIST FIPS 186-1
PKCS #1 v1.5
Encode(M) =
00 01 ff ff || HashAlgID || Hash(M)
Ad hoc design Widely deployed
SSL certificates S/MIME
Bellare-Rogaway FDH
(Full Domain Hashing, ACM CCCS 93)
Encode(M) =
00 || Full-Length-Hash(m)
Provably secure design To be included in IEEE P1363a
PSS has tighter security proof, is less dependent on security of hash function PSS-R variant supports message recovery, partial message recovery PSS is patent pending (but generously licensed)
No patents have been reported to IEEE P1363 or ANSI X9.31 for these encoding methods
Challenges
Infrastructure changes take time
particularly on the user side
ANSI X9.31 is more than just another encoding method, also specifies strong primes
a controversial topic
Prudent Security
What if a weakness were found in ANSI X9.31 or PKCS #1 v1.5 signatures?
no proof of security, though designs are well motivated, supported by analysis would be surprising but so were vulnerabilities in ISO/IEC 9796-1,-2
Proposed Strategy
Short term (1-2 years): Support both PKCS #1 v1.5 and ANSI X9.31 signatures for interoperability
e.g., in IETF profiles, FIPS validation NIST is in the process of adding PKCS #1 v1.5 to FIPS 186-2 for an 18-month transition period
Standards Work
IEEE P1363a will include PSS
also FDH, PKCS #1 v1.5 signatures
Outline
PSS-R
PSS-R
Should PKCS #1 v2.1 include the PSS-R encoding method? ISO/IEC 9796-1, -2 may be updated with new and potentially different signature scheme with message recovery PSS-R to be included in IEEE P1363a
Example:
SHA-1-MD5(M) = SHA-1(M) || MD5(M)
A simple method to increase security in a modular fashion Could be combined with PKCS #1 v1.5 encoding method, or PSS
Rabin-Williams Support
Should PKCS #1 v2.1 include the RW primitives for even exponents? Would be consistent with ANSI X9.31, X9.44 draft, IEEE P1363 PKCS #1 v1.5, PSS versions require slightly different primitives than currently specified
cf. relevant submissions to IEEE P1363a
Conclusions
A new draft of PKCS #1 nearing completion