862 lines
34 KiB
Plaintext
862 lines
34 KiB
Plaintext
( Appeared in the Federal Register dated August 30, 1991 )
|
|
|
|
DEPARTMENT OF COMMERCE
|
|
National Institute of Standards and Technology
|
|
|
|
|
|
A PROPOSED FEDERAL INFORMATION PROCESSING STANDARD
|
|
FOR
|
|
DIGITAL SIGNATURE STANDARD (DSS)
|
|
|
|
|
|
AGENCY: National Institute of Standards and Technology (NIST),
|
|
Commerce.
|
|
|
|
ACTION: Notice; Request for Comments.
|
|
|
|
SUMMARY: A Federal Information Processing Standard (FIPS) for
|
|
Digital Signature Standard (DSS) is being proposed. This
|
|
proposed standard specifies a public-key based digital signature
|
|
algorithm (DSA) appropriate for Federal digital signature
|
|
applications. The proposed DSS uses a public key to verify to a
|
|
recipient the integrity of data and the identity of the sender of
|
|
the data. The DSS can also be used by a third party to ascertain
|
|
the authenticity of a signature and the data associated with it.
|
|
|
|
This proposed standard adopts a public-key signature system that
|
|
uses a pair of transformations to generate and verify a digital
|
|
value called a signature. The government has applied to the U.S.
|
|
Patent Office for a patent on this technique. The government
|
|
will also seek foreign patents as appropriate. NIST intends to
|
|
make this DSS technique available world-wide on a royalty-free
|
|
basis in the public interest. We believe this technique is
|
|
patentable and that no other patents would apply to the DSS, but
|
|
we cannot give firm assurances to such effect in advance of
|
|
issuance of the patent.
|
|
|
|
The purpose of this notice is to solicit views from the public,
|
|
manufacturers, and Federal, state, and local government users so
|
|
that their needs can be considered prior to submission of this
|
|
proposed standard to the Secretary of Commerce for review and
|
|
approval.
|
|
|
|
The proposed standard contains two sections: (1) an announcement
|
|
section, which provides information concerning the applicability,
|
|
implementation, and maintenance of the standard; and (2) a
|
|
specifications section which deals with the technical aspects of
|
|
the standard. Only the announcement section of the standard is
|
|
provided in this notice. Interested parties may obtain copies of
|
|
the specifications section from the Standards Processing
|
|
Coordinator (ADP), National Institute of Standards and
|
|
Technology, Technology Building, Room B-64, Gaithersburg, MD
|
|
20899, telephone (301) 975-2816.
|
|
|
|
DATE: Comments on this proposed standard must be received on or
|
|
before (please insert date which is ninety (90) days from the
|
|
date of publication of this notice in the Federal Register).
|
|
|
|
|
|
ADDRESS: Written comments concerning the proposed standard
|
|
should be sent to: Director, Computer Systems Laboratory, ATTN:
|
|
Proposed FIPS for DSS, Technology Building, Room B-154, National
|
|
Institute of Standards and Technology, Gaithersburg, MD 20899.
|
|
|
|
Written comments received in response to this notice will be made
|
|
part of the public record and will be made available for
|
|
inspection and copying in the Central Reference and Records
|
|
Inspection Facility, Room 6020, Herbert C. Hoover Building, 14th
|
|
Street between Pennsylvania and Constitution Avenues, NW,
|
|
Washington, DC 20230.
|
|
|
|
FOR FURTHER INFORMATION CONTACT: Mr. Miles Smid, National
|
|
Institute of Standards and Technology, Gaithersburg, MD 20899,
|
|
telephone (301) 975-2938.
|
|
|
|
SUPPLEMENTARY INFORMATION: This proposed FIPS is the result of
|
|
evaluating a number of alternative digital signature techniques.
|
|
In making the selection, the NIST has followed the mandate
|
|
contained in section 2 of the Computer Security Act of 1987 that
|
|
NIST develop standards and guidelines to "... assure the cost-
|
|
effective security and privacy of sensitive information in
|
|
Federal systems". In meeting this statutory responsibility, NIST
|
|
has placed primary emphasis on selecting the technology that best
|
|
assures the appropriate security of Federal information and,
|
|
among technologies offering comparable protection, on selecting
|
|
the option with the most desirable operating and use
|
|
characteristics.
|
|
|
|
Among the factors that were considered during this process were
|
|
the level of security provided, the ease of implementation in
|
|
both hardware and software, the ease of export from the U.S., the
|
|
applicability of patents, impact on national security and law
|
|
enforcement and the level of efficiency in both the signing and
|
|
verification functions. A number of techniques were deemed to
|
|
provide appropriate protection for Federal systems. The
|
|
technique selected has the following desirable characteristics:
|
|
|
|
-- NIST expects it to be available for public use on a
|
|
royalty-free basis. Broader use of this technique
|
|
resulting from public availability should be an
|
|
economic benefit to the government and the public.
|
|
|
|
-- The technique selected provides for efficient
|
|
implementation of the signature operations in smart
|
|
card applications. In these applications the signing
|
|
operations are performed in the computationally modest
|
|
environment of the smart card while the verification
|
|
process is implemented in a more computationally rich
|
|
environment such as a personal computer, a hardware
|
|
cryptographic module, or a mainframe computer.
|
|
|
|
NIST has received agreement from Department of Defense
|
|
authorities that this digital signature technique may be used to
|
|
sign unclassified data processed by "Warner Amendment" systems
|
|
(10 U.S.C. 2315 and 44 U.S.C. 3502(2)) as well as classified data
|
|
in selected applications.
|
|
|
|
A hashing function has not been specified by NIST at this time
|
|
for use with the DSS. NIST has been reviewing various candidate
|
|
hashing functions; however, we are not satisfied with any of the
|
|
functions we have studied thus far. NIST does intend to publish
|
|
a hashing function that is complementary to the DSS.
|
|
|
|
|
|
(NOTE: Original signed by Dr. John Lyons, NIST Director)
|
|
|
|
|
|
***********************************************************************
|
|
|
|
( The following is the Proposed Digital Signature Standard)
|
|
|
|
A PROPOSED
|
|
|
|
DIGITAL SIGNATURE STANDARD (DSS)
|
|
|
|
Foreword
|
|
|
|
|
|
The Federal Information Processing Standards Publication
|
|
Series of the National Institute of Standards and Technology (NIST) is
|
|
the official series of publications relating to standards and
|
|
guidelines adopted and promulgated under the provisions of
|
|
Section 111(d) of the Federal Property and Administrative
|
|
Services Act of 1949 as amended by the Computer Security Act of
|
|
1987, Public Law 100-235. These mandates have given the
|
|
Secretary of Commerce and NIST important responsibilities for
|
|
improving the utilization and management of computer and related
|
|
telecommunications systems in the Federal Government. The NIST,
|
|
through the Computer Systems Laboratory, provides leadership,
|
|
technical guidance, and coordination of Government efforts in the
|
|
development of standards and guidelines in these areas.
|
|
|
|
Comments concerning Federal Information Processing Standards
|
|
Publications are welcomed and should be addressed to the
|
|
Director, Computer Systems Laboratory, National Institute of Standards and
|
|
Technology, Gaithersburg, MD 20899.
|
|
|
|
|
|
James H. Burrows, Director
|
|
Computer Systems Laboratory
|
|
|
|
|
|
Abstract
|
|
|
|
This standard specifies a Digital Signature Algorithm (DSA)
|
|
which can be used to generate a digital signature. Digital
|
|
signatures are used to detect unauthorized modifications to data
|
|
and to authenticate the identity of the user who generates the
|
|
signature. In addition, the recipient of signed data can use a
|
|
digital signature in proving to a third party that the signature
|
|
was in fact generated by the signer of the data. This is known
|
|
as nonrepudiation since the signer of data cannot, at a later
|
|
time, repudiate the signature.
|
|
|
|
Key words: ADP security, computer security, digital signatures,
|
|
public-key cryptography, Federal Information Processing Standard.
|
|
|
|
|
|
|
|
Federal Information
|
|
Processing Standards Publication XX
|
|
|
|
|
|
ANNOUNCING A
|
|
|
|
DIGITAL SIGNATURE STANDARD
|
|
|
|
|
|
Federal Information Processing Standards Publications (FIPS PUBS)
|
|
are issued by the National Institute of Standards and Technology
|
|
(NIST) after approval by the Secretary of Commerce pursuant to
|
|
Section 111(d) of the Federal Property and Administrative
|
|
Services Act of 1949 as amended by the Computer Security Act of 1987,
|
|
Public Law 100-235.
|
|
|
|
Name of Standard: Digital Signature Standard.
|
|
|
|
Category of Standard: ADP Operations, Computer Security.
|
|
|
|
Explanation: This Standard specifies a Digital Signature Algorithm
|
|
(DSA) appropriate for applications requiring a digital rather
|
|
than written signature. The DSA digital signature is a pair of
|
|
large numbers represented in a computer as strings of binary
|
|
digits. The digital signature is computed using a set of rules
|
|
(i.e., the DSA) and a set of parameters such that it can be used to verify
|
|
the identity of the originator and integrity of the data. The DSA
|
|
includes signature generation and verification. Generation makes
|
|
use of a private key to generate a digital signature. Verification
|
|
of the signature makes use of a public key which corresponds to,
|
|
but is not the same as, the private key used to generate the
|
|
signature. Each user possesses a private and public key pair.
|
|
Public keys are assumed to be known to all members of a group of
|
|
users or to the public in general. Private keys must be known
|
|
only by their creators. Anyone can verify the signature of a user by
|
|
employing that user's public key. Signature generation can be
|
|
performed only by the possessor of the user's private key.
|
|
A hash function is used in the signature generation process to
|
|
obtain a condensed version of data, called a message digest. The
|
|
message digest is then signed. The digital signature is sent to
|
|
the intended recipient along with the signed data (often called
|
|
the message). The recipient of the message and signature verifies
|
|
the signature by using the sender's public key. The same hash
|
|
function must also be used in the verification process. The hash function
|
|
will be specified in a separate standard. Similar procedures may
|
|
be used to generate and verify signatures for stored as well as
|
|
transmitted data.
|
|
|
|
Approving Authority: Secretary of Commerce.
|
|
|
|
Maintenance Agency: Computer Systems Laboratory, National
|
|
Institute of Standards and Technology.
|
|
|
|
Applicability: This standard is applicable to all Federal
|
|
departments and agencies for the protection of unclassified
|
|
information that is not subject to section 2315 of Title 10,
|
|
United States Code, or section 3502(2) of Title 44, United States Code.
|
|
This standard shall be used in designing and implementing
|
|
Public-key based signature systems which Federal departments and
|
|
agencies operate or which are operated for them under contract.
|
|
Private and commercial organizations are encouraged to adopt and
|
|
use this standard.
|
|
|
|
Applications: The DSA authenticates the integrity of the signed
|
|
data and the identity of the signer. The DSA may also be used in
|
|
proving to a third party that data was actually signed by the
|
|
generator of the signature. The DSA is intended for use in
|
|
electronic mail, electronic funds transfer, electronic data
|
|
interchange, software distribution, data storage, and other
|
|
applications which require data integrity assurance and data
|
|
origin authentication.
|
|
|
|
Implementations: The DSA may be implemented in software, firmware
|
|
or hardware. Only implementations of the DSA that are validated
|
|
by NIST will be considered as complying with this standard.
|
|
Information about the requirements for validating implementations
|
|
of this standard can be obtained from the National Institute of
|
|
Standards and Technology, Computer Systems Laboratory, Attn: DSS
|
|
Validation, Gaithersburg, MD 20899.
|
|
|
|
Export Control: Implementations of this standard are subject to
|
|
Federal Government export controls as specified in Title 15, Code
|
|
of Federal Regulations, Parts 768 through 799. Exporters are
|
|
advised to contact the Department of Commerce, Bureau of Export
|
|
Administration for more information.
|
|
|
|
Patents: Implementations of the DSA in this standard may be
|
|
covered by U.S. and foreign patents.
|
|
|
|
Implementation Schedule: This standard becomes effective six
|
|
months after the publication date of this FIPS PUB.
|
|
|
|
Specifications: Federal Information Processing Standard (FIPS XX)
|
|
Digital Signature Standard (affixed).
|
|
|
|
Cross Index:
|
|
|
|
a. FIPS PUB 46-1, Data Encryption Standard.
|
|
|
|
b. FIPS PUB 73, Guidelines for Security of Computer
|
|
Applications.
|
|
|
|
c. FIPS PUB 140-1, Security Requirements for Cryptographic
|
|
Modules.
|
|
|
|
Qualifications: The security of a digital signature system is
|
|
dependent on maintaining the secrecy of users' private keys.
|
|
Users must therefore guard against the unauthorized acquisition of
|
|
their private keys. While it is the intent of this standard to specify
|
|
general security requirements for generating digital signatures,
|
|
conformance to this standard does not assure that a particular
|
|
implementation is secure. The responsible authority in each agency
|
|
or department shall assure that an overall implementation provides
|
|
an acceptable level of security. This standard will be reviewed
|
|
every five years in order to assess its adequacy.
|
|
|
|
Waiver Procedure: Under certain exceptional circumstances, the
|
|
heads of Federal departments and agencies may approve waivers to
|
|
Federal Information Processing Standards (FIPS). The head of
|
|
such agency may redelegate such authority only to a senior official
|
|
designated pursuant to section 3506(b) of Title 44, United States
|
|
Code. Waiver shall be granted only when:
|
|
|
|
a. Compliance with a standard would adversely affect the
|
|
accomplishment of the mission of an operator of a Federal
|
|
computer system; or
|
|
|
|
b. Compliance with a standard would cause a major adverse
|
|
financial impact on the operator which is not offset by
|
|
Government-wide savings.
|
|
|
|
Agency heads may act upon a written waiver request containing the
|
|
information detailed above. Agency heads may also act without a
|
|
written waiver request when they determine that conditions for
|
|
meeting the standard cannot be met. Agency heads may approve
|
|
waivers only by a written decision which explains the basis on
|
|
which the agency head made with required finding(s). A copy of
|
|
each decision, with procurement sensitive or classified portions
|
|
clearly identified, shall be sent to: National Institute of
|
|
Standards and Technology; ATTN: FIPS Waiver Decisions, Technology
|
|
Building, Room B-154, Gaithersburg, MD 20899.
|
|
|
|
In addition, notice of each waiver granted and each delegation of
|
|
authority to approve waivers shall be sent promptly to the
|
|
Committee on Government Operations of the House of
|
|
Representatives and the Committee on Government Affairs of the Senate and
|
|
shall be published promptly in the Federal Register.
|
|
When the determination on a waiver applies to the procurement of
|
|
equipment and/or services, a notice of the waiver determination
|
|
must be published in the Commerce Business Daily as a part of the
|
|
notice of solicitation for offers of an acquisition or, if the
|
|
waiver determination is made after that notice is published, by
|
|
amendment to such notice.
|
|
|
|
A copy of the waiver, any supporting documents, the document
|
|
approving the waiver and any accompanying documents, with such
|
|
deletions as the agency is authorized and decides to make under 5
|
|
United States Code Section 552(b), shall be part of the
|
|
procurement documentation and retained by the agency.
|
|
|
|
Where to Obtain Copies of the Standard: Copies of this
|
|
publication are for sale by the National Technical Information Service, U.S.
|
|
Department of Commerce, Springfield, VA 22161. When ordering,
|
|
refer to Federal Information Processing Standards Publication XX
|
|
(FIPS PUB XX), and identify the title. When microfiche is
|
|
desired, this should be specified. Prices are published by NTIS in
|
|
current catalogs and other issuances. Payment may be made by check,
|
|
money order, deposit account or charged to a credit card accepted by
|
|
NTIS.
|
|
|
|
|
|
Federal Information
|
|
Processing Standards Publication XX
|
|
|
|
|
|
Specifications for a
|
|
|
|
|
|
|
|
DIGITAL SIGNATURE STANDARD (DSS)
|
|
|
|
|
|
|
|
1. INTRODUCTION
|
|
|
|
This publication prescribes the Digital Signature Algorithm
|
|
(DSA) for digital signature generation and verification.
|
|
Additional information is provided in Appendices 1 through 5.
|
|
|
|
|
|
2. GENERAL
|
|
|
|
When a message is transmitted from one party to another, the
|
|
recipient may desire to know that the message has not been
|
|
altered in transit. Furthermore, the recipient may wish to be certain of
|
|
the origin of the message. Both of these services can be
|
|
provided by the DSA. A digital signature is an electronic analogue of a
|
|
written signature, in that the digital signature can be used in
|
|
proving to a third party that the message was, in fact, signed by
|
|
the originator. Unlike their written counterparts, digital
|
|
signatures also verify the integrity of messages. It is also
|
|
desirable to be able to generate digital signatures for stored
|
|
data and programs so that the integrity of the data and programs may
|
|
be verified at any later time.
|
|
|
|
This publication prescribes the DSA for digital signature
|
|
generation and verification. In addition, the criteria for the
|
|
public and private keys required by the algorithm are provided.
|
|
|
|
|
|
3. USE OF THE DSA ALGORITHM
|
|
|
|
A private and public key pair is used to generate and verify a
|
|
digital signature. These keys are employed in conjunction with a
|
|
hash function H, which is not specified in this standard. The
|
|
holder of a private key can generate a signature for data,
|
|
referred to as the message, m. A holder of the corresponding public key
|
|
can verify the signature. Both signature generation and verification
|
|
use H. An adversary, who does not know the private key of a
|
|
user, cannot generate that user's signature for a message. In other
|
|
words, signatures cannot be forged: an adversary cannot generate
|
|
a correct signature for another person for any message. However,
|
|
by using the appropriate public key, anyone can check that a
|
|
given signature is valid.
|
|
|
|
A means of associating public and private key pairs to the
|
|
corresponding users is required. That is, there must be a
|
|
binding of a user's identity and the user's public key. This binding may
|
|
be certified by a mutually trusted party. For example, a certifying
|
|
authority could sign credentials containing a user's public key
|
|
and identity to form a certificate. Systems for certifying
|
|
credentials and distributing certificates are beyond the scope of this
|
|
standard. NIST intends to publish separate document(s) on
|
|
certifying credentials and distributing certificates.
|
|
|
|
|
|
4. DSA PARAMETERS
|
|
|
|
Let
|
|
|
|
A. p = a prime modulus where 2^511 < p < 2^512.
|
|
|
|
B. q = a prime divisor of p - 1 where 2^159 < q < 2^160.
|
|
|
|
C. g = h^((p-1)/q) mod p, where h is any integer with 0 < h < p
|
|
such that h^((p-1)/q) mod p > 1.
|
|
|
|
D. x = an integer with 0 < x < q.
|
|
|
|
E. y = g^x mod p.
|
|
|
|
F. m = the message to be signed and transmitted.
|
|
|
|
G. k = a random integer with 0 < k < q.
|
|
|
|
H. H = a one-way hash function.
|
|
|
|
The integers p, q, and g can be public and can be common to a
|
|
group of users. A user's private and public keys are x and y,
|
|
respectively. x and k must be secret. k must be changed for each
|
|
signature. H is not specified in this standard. However, H must
|
|
be chosen so that it is computationally infeasible to create a
|
|
message which results in a given hash value and it must also be
|
|
computationally infeasible to find any two different messages
|
|
which result in the same hash value.
|
|
|
|
5. SIGNATURE GENERATION
|
|
|
|
To send a signed message m the user chooses a random k and
|
|
computes
|
|
|
|
r = (g^k mod p) mod q
|
|
|
|
s = (k^-1 (H(m) + xr)) mod q.
|
|
|
|
where k^-1 is the multiplicative inverse of k, mod q; i.e., (k^-1 k)
|
|
mod q = 1 and 0 < k^-1 < q.
|
|
|
|
The values r and s constitute the signature of the message.
|
|
These are transmitted along with the message m to the recipient.
|
|
|
|
|
|
|
|
6. SIGNATURE VERIFICATION
|
|
|
|
Prior to verifying the signature in a signed message, p, q and
|
|
g plus the sender's public key and identity are made available to
|
|
the recipient in an authenticated manner.
|
|
|
|
Let m', r', and s' be the received versions of m, r, and s,
|
|
respectively, and let y be the public key of the sender. To
|
|
verify the signature, the recipient first checks to see that 0 < r' < q
|
|
and 0 < s' < q; if either condition is violated the signature is
|
|
rejected. If these two conditions are satisfied, the recipient
|
|
computes:
|
|
|
|
w = (s')^-1 mod q
|
|
|
|
u1 = ((H(m'))w) mod q
|
|
|
|
u2 = ((r')w) mod q
|
|
|
|
v = (((g)^(u1) (y)^(u2)) mod p) mod q.
|
|
|
|
If v = r', then the signature is verified and the receiver can
|
|
have high confidence that the received message was sent by the
|
|
party holding the secret key x corresponding to y. For a proof that
|
|
v = r' when m' = m, r' = r, and s' = s, see Appendix 1.
|
|
|
|
If v does not equal r', then the message may have been modified,
|
|
the message may have been incorrectly signed by the sender, or
|
|
the message may have been signed by an impostor. The message should
|
|
be considered invalid.
|
|
|
|
Appendix 1
|
|
A Proof that v = r'
|
|
|
|
This appendix is for informational purposes only and is not
|
|
required to meet the standard.
|
|
|
|
The purpose of this appendix is to provide a rigorous proof that
|
|
in the signature verification (Section 6 of the DSS) we have v =
|
|
r' when m' = m, r' = r, and s' = s. The proof is given by the Theorem
|
|
below; it is preceded by four lemmas.
|
|
|
|
LEMMA 1. For any nonnegative integer t, if g = h^((p-1)/q) mod
|
|
p, then
|
|
|
|
g^t mod p = g^(t mod q) mod p.
|
|
|
|
Proof: By the Euler/Fermat theorem, since h is relatively prime
|
|
to p, we have h^(p-1) mod p = 1. Hence for any nonnegative
|
|
integer n,
|
|
|
|
g^(nq) mod p = (h^((p-1)/q) mod p)^(nq) mod p
|
|
|
|
= h^(((p-1)/q)nq) mod p
|
|
|
|
= h^((p-1)n) mod p
|
|
|
|
= ((h^(p-1) mod p)^n) mod p
|
|
|
|
= 1^n mod p
|
|
|
|
= 1.
|
|
|
|
Thus, for any nonnegative integers n and z we have
|
|
|
|
g^(nq+z) mod p = (g^(nq) g^z) mod p
|
|
|
|
= ((g^(nq) mod p) (g^z mod p)) mod p
|
|
|
|
= g^z mod p.
|
|
|
|
Any nonnegative integer t can be represented uniquely as t = nq
|
|
+ z where n and z are nonnegative integers and 0 s z < q. Then
|
|
|
|
g^t mod p = g^z mod p.
|
|
|
|
Also, z = t mod q. The result follows. QED.
|
|
|
|
LEMMA 2. For any nonnegative integers a and b,
|
|
|
|
g^(a mod q + b mod q) mod p = g^((a + b) mod q) mod p.
|
|
|
|
Proof: By Lemma 1 we have
|
|
|
|
g^(a mod q + b mod q) mod p = g^((a mod q + b mod q) mod q) mod p
|
|
|
|
= g^((a + b) mod q) mod p.
|
|
|
|
QED.
|
|
|
|
LEMMA 3.
|
|
|
|
y^((rw) mod q) mod p = g^((xrw) mod q) mod p.
|
|
|
|
Proof: Since y = g^x mod p, using Lemma 1 we have
|
|
|
|
y^((rw) mod q) mod p = (g^x mod p)^((rw) mod q) mod p
|
|
|
|
= g^(x((rw) mod q)) mod p
|
|
|
|
= g^((x((rw) mod q)) mod q) mod p (by Lemma 1)
|
|
|
|
= g^((xrw) mod q) mod p.
|
|
|
|
QED.
|
|
|
|
LEMMA 4.
|
|
|
|
((H(m) + xr)w) mod q = k.
|
|
|
|
Proof: We have
|
|
|
|
s = (k^-1 (H(m) + xr)) mod q.
|
|
|
|
Since (k k^-1) mod q = 1,
|
|
|
|
(ks) mod q = (k((k^-1 (H(m) + xr)) mod q)) mod q
|
|
|
|
= ((k(k^-1 (H(m) + xr)))) mod q
|
|
|
|
= (((k k^-1) mod q) ((H(m) + xr) mod q)) mod q
|
|
|
|
= (H(m) + xr) mod q.
|
|
|
|
Since w = s^-1 mod q we have (ws) mod q = 1, and thus
|
|
|
|
((H(m) + xr)w) mod q = (((H(m) + xr) mod q) (w mod q)) mod q
|
|
|
|
= (((ks) mod q) (w mod q)) mod q
|
|
|
|
= (kws) mod q
|
|
|
|
= ((k mod q) ((ws) mod q)) mod q
|
|
|
|
= k mod q.
|
|
|
|
Since 0 < k < q we have k mod q = k. QED.
|
|
|
|
THEOREM. If m' = m, r' = r, and s' = s, then v = r'.
|
|
|
|
Proof: Using Lemmas 2, 3 and 4 we find
|
|
|
|
v = ((g^(u1) y^(u2)) mod p) mod q
|
|
|
|
= ((g^((H(m)w) mod q) y^((rw) mod q)) mod p) mod q
|
|
|
|
= ((g^((H(m)w) mod q) g^((xrw) mod q)) mod p) mod q (by Lemma 3)
|
|
|
|
= ((g^((H(m)w) mod q + (xrw) mod q)) mod p) mod q
|
|
|
|
= ((g^(((H(m)w) mod q + (xrw) mod q) mod q)) mod p) mod q
|
|
|
|
= ((g^((H(m)w + xrw) mod q)) mod p) mod q (by Lemma 2)
|
|
|
|
= ((g^(((H(m) + xr)w) mod q)) mod p) mod q
|
|
|
|
= (g^k mod p) mod q (by Lemma 4)
|
|
|
|
= r
|
|
|
|
= r'.
|
|
|
|
QED.
|
|
|
|
Appendix 2
|
|
Generation of Parameters for the DSA
|
|
|
|
This appendix is for informational purposes only and is not
|
|
required to meet the standard.
|
|
|
|
This appendix includes suggestions for generating the parameters
|
|
and performing the functions needed to implement the DSA. These
|
|
algorithms require a random number generator (see Appendix 3),
|
|
and an efficient modular exponentiation algorithm (see Appendix 4).
|
|
In order to generate the primes p and q, a primality test is required.
|
|
There are several fast probabilistic algorithms available. The
|
|
following algorithm is a simplified version of a procedure due to
|
|
M.O. Rabin, based in part on ideas of Gary L. Miller. [See
|
|
Knuth, The Art of Computer Programming, Vol. 2, Addison-Wesley, 1981,
|
|
Algorithm P,page 379.] If this algorithm is iterated n times, it
|
|
will produce a false prime with probability no greater than 1/4^n.
|
|
|
|
Therefore, n=50 should give an acceptable probability of error.
|
|
To test whether an integer is prime:
|
|
|
|
1. Set i = 1 and n = 50.
|
|
2. Set w = the integer to be tested, w = 1 + 2^a m,
|
|
where m is odd and 2^a is the largest power of 2 dividing w-1.
|
|
3. Generate a random integer b in the range 1<b<w.
|
|
4. Set j = 0 and z = b^m mod w.
|
|
5. If j = 0 and z = 1, or if z = w-1, go to step 9.
|
|
6. If j> 0 and z = 1, go to step 8.
|
|
7. j = j + 1. If j < a, set z = z^2 mod w and go to step 6.
|
|
8. w is not prime. Stop.
|
|
9. If i< n, set i = i + 1 and go to step 3. Otherwise, w
|
|
is probably prime.
|
|
|
|
To generate a prime q where 2^159 < q < 2^160:
|
|
|
|
1. Set n = a random number between 2^158 and 2^159 - 1, inclusive.
|
|
2. Set t = 2n + 1.
|
|
3. If t < 2^160, test whether t is prime. Otherwise, go to step
|
|
1.
|
|
4. If t is prime, set q = t. Otherwise, set t = t + 2 and go to
|
|
step 3.
|
|
|
|
To generate a prime p where 2^511 < p < 2^512 and q divides p - 1:
|
|
|
|
|
|
1. Generate q as specified above.
|
|
2. Generate a random integer n, where n is between (2^511-1)/(2q)
|
|
and (2^512-1)/(2q).
|
|
3. Set t = 2nq + 1.
|
|
4. Test whether t is prime.
|
|
5. If t is prime, set p = t. Otherwise, go to step 2.
|
|
|
|
To generate an element g of order q mod p:
|
|
|
|
1. Generate p and q as specified above.
|
|
2. Set h = a random number, where 1 < h < p-1.
|
|
3. Set t = h^((p-1)/q) mod p.
|
|
4. If t = 1 then go to step 2. Otherwise, set g = t.
|
|
|
|
To generate integers x and k:
|
|
|
|
Set x and k equal to random integers between 0 and q.
|
|
|
|
To generate y:
|
|
|
|
Set y = g^x mod p.
|
|
|
|
To compute the signature (r,s) of a message m:
|
|
|
|
1. Set t = g^k mod p.
|
|
2. Set r = t mod q.
|
|
3. Set h = H(m) where H is a hash function.
|
|
4. Calculate k^-1 mod q as described below.
|
|
5. Set s = ((k^-1) (h + xr)) mod q.
|
|
|
|
To verify the signature (r,s) of a message m:
|
|
|
|
1. m, r, and s are received as m', r', and s', respectively.
|
|
2. If r' <= 0 or r' >= q then reject the signature as invalid.
|
|
3. If s' <= 0 or s' >= q then reject the signature as invalid.
|
|
4. Set h = H(m').
|
|
5. Calculate w = s'^-1 mod q as described below.
|
|
6. Set u1 = (hw) mod q.
|
|
7. Set u2 = (r'w) mod q.
|
|
8. Set a = g^(u1) mod p.
|
|
9. Set b = y^(u2) mod p.
|
|
10. Set t = (ab) mod p.
|
|
11. Set v = t mod q.
|
|
12. If v = r', signature is verified. Otherwise, reject
|
|
signature as invalid.
|
|
|
|
To compute the multiplicative inverse n^-1 mod q for n with 0 < n
|
|
< q:
|
|
|
|
1. Set i = q, h = n, v = 0 and d = 1.
|
|
2. While h > 0 repeat steps 3 thru 5.
|
|
3. t = i DIV h where DIV is defined as integer division.
|
|
4. Set x = h, h = i - tx and i = x.
|
|
5. Set x = d, d = v - tx and v = x.
|
|
6. n^-1 = v mod q.
|
|
|
|
|
|
Appendix 3
|
|
Random Number Generation for the DSA
|
|
|
|
This appendix is for informational purposes only and is not
|
|
required to meet the standard.
|
|
|
|
Any implementation of the DSA requires the ability to generate
|
|
random numbers. Random numbers are used to derive a user's private
|
|
key and a user's per message random secret number. These random
|
|
numbers are selected to be between 0 and the 160-bit prime q (as
|
|
specified in the standard). The numbers can be generated by either
|
|
a true noise hardware randomizer or via a pseudorandom function.
|
|
Such a function would employ a user generated and secret "seed"
|
|
key to initialize the number generator. The generator then would
|
|
produce a stream of bits or numbers which could be converted into
|
|
the integers mod q discussed above. One such pseudorandom number
|
|
generator is the key generation methodology found in Appendix C of
|
|
ANSI X9.17, "Financial Institution Key Management (Wholesale)".
|
|
|
|
|
|
Appendix 4
|
|
Modular Arithmetic for the DSA
|
|
|
|
This appendix is for informational purposes only and is not
|
|
required to meet the standard.
|
|
|
|
One key to efficient implementation of the Digital Signature
|
|
Standard is the development of a modular arithmetic package suited
|
|
to the processor one intends to use. For the purposes of this
|
|
discussion, we will consider two types of processors: hardware and
|
|
software and suggest some techniques which may allow for
|
|
efficient implementation of the DSA in those systems.
|
|
|
|
With respect to hardware implementations an excellent reference
|
|
is "VLSI Implementation of Public Key Encryption Algorithms" by
|
|
Orton, Roy, Scott, Peppard and Tavares from the Proceedings of
|
|
CRYPTO-86. That paper and the references found at its end will
|
|
provide a good basis for anyone looking into hardware
|
|
implementations of the DSA. It is also worth noting that several
|
|
commercial firms have custom processors to do modular arithmetic
|
|
on the market.
|
|
|
|
With respect to software implementations, there are many
|
|
different ways to proceed and a rich literature containing
|
|
different techniques for different computing environments. For
|
|
instance, the algorithms one chooses for 32-bit processors may be
|
|
substantially different than those which would be appropriate for
|
|
8-bit processors. Likewise, one can make trade offs on
|
|
computation versus memory in various algorithms. Good starting places for
|
|
modular arithmetic algorithms in software are found in "A
|
|
Cryptographic Library for the Motorola DSP56000" by Dusse and
|
|
Kaliski from the Proceedings of EUROCRYPT-90 and "Implementing the
|
|
Rivest Shamir and Adleman Public Key Encryption Algorithm on a
|
|
Standard Digital Signal Processor" by Barrett from the Proceedings
|
|
of CRYPTO-86. These papers contain pseudo-code for some of the
|
|
more popular techniques used in modular arithmetic.
|
|
|
|
Appendix 5
|
|
Example of the DSA
|
|
|
|
This appendix is for informational purposes only and is not
|
|
required to meet the standard.
|
|
|
|
p = Prime Modulus =
|
|
d0451ffe 2c64c4ed 6b0ae636 5b7fef9c 15425e40 a37ca5f8 39865e2c
|
|
fb4169a0 d825c913 0f8864ff fcf3bfbe b0273660 67aa27e2 7bfcaf40
|
|
00000000 00000001
|
|
|
|
q = Prime Divisor =
|
|
d9525756 704a663e 7323caf2 6fb8fc25 77e4fbeb
|
|
|
|
g = Element of Order q Mod p =
|
|
acf958c4 0d301efc 5153e7dc d5ef75fe c9e8fb0f ae6a80ee 5c3b84b9
|
|
c0e51305 1b2b7542 e66b8d3a 25e93891 1ad6be5c 24395099 c6ddaa86
|
|
e18942f2 984275a
|
|
|
|
x = Private Key =
|
|
12345678 9abcdef0 12345678 9abcdef
|
|
|
|
y = g^x mod p = Public Key =
|
|
9d168087 c60c5cb3 aeb1e8ac c622f167 f1e97151 0b34876c 080d81b5
|
|
20329817 e3e279fa 86eb6a9d 5e9e5897 5clf3d0d 3786ce04 abb0cab4
|
|
dfd9fa13 50bb3aa3
|
|
|
|
k = Random Secret Integer =
|
|
bf27aa41 6c006dd4 b4f2806c 71171cc4 ce28db
|
|
|
|
r = (g^k mod p) mod q =
|
|
1c3d5143 a7beb085 9cbd08a2 039d7148 27ceddf9
|
|
|
|
h = H(m) = Hash(message) =
|
|
2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a
|
|
|
|
(h + xr) mod q =
|
|
20215b52 aa605b7f 967991de b947a07f 13413a8a 8753d457 d1897afe
|
|
786c8f82 5ecaal
|
|
|
|
k^-1 mod q =
|
|
5dfb26c8 208eda68 d8bb5fce 89732bae 595392e6
|
|
|
|
s = (k^-1 (h + xr)) mod q =
|
|
6f0be90c 72350564 77c69e89 ab6416b2 f365d95c
|
|
|
|
w = s^-1 mod q =
|
|
27fd6332 9e1cddf1 883b1d62 a345d9c5 f115d821
|
|
|
|
u1 = (hw) mod q =
|
|
6521b9e7 e0824239 0754396d c5327f98 c74fc641
|
|
u2 = (rw) mod q =
|
|
52d754b2 153d3c14 483e65de 9895abe9 6bbb7751
|
|
|
|
g^(u1) mod p =
|
|
c50370ba af79d463 7bf6ea24 579495de d0fd1190 2e5f8c5f 8524dd53
|
|
ee13c1e8 fb4ad43c db2e86f7 b892dc81 5e7676ab 11b48803 916e453b
|
|
f95bdfeb 93003009
|
|
|
|
y^(u2) mod p =
|
|
53b07663 b7078870 b640044f 592d1076 8b82fb49 1cfd10fe 4310a315
|
|
f3cf4de9 5ccff3df 926f837d 69afe707 640dd5a2 6fd41b11 1ff5cc6d
|
|
51aa7453 d79ca533
|
|
|
|
v = ((g^(u1) mod p)(y^(u2) mod p) mod p) mod q =
|
|
1c3d5143 a7beb085 9cbd08a2 039d7148 27ceddf9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|