Digital signatures can be used to verify that an electronic document has not been altered since the creation of the digital signature based on the electronic document. In many systems, digital signature creation includes two parts, hashing and encryption of the produced hash. Hashing involves computing a hash (message digest) function over a sequence of encoded binary data.
An electronic document contains information that can be encoded as one or more different encodings. An encoding is binary data representing the digitally encoded form of the document information. For example, a document may be encoded as one of many PDF (Portable Document File developed by Adobe Systems of San Jose, Calif.) encodings or one of many XDP (XML, extensible markup language, Data Package) encodings.
The encoding is used to generate a hash using any hashing function. Once a hash has been computed, the hash is encrypted using an encryption algorithm. The recipient of the document can verify the digital signature by decrypting the digital signature to obtain the hash and comparing the hash to a new hash generated from the document using the same hashing function as the digital signature author. If the hashes match, the document is verified as being not altered from when the digital signature was produced.
Conceptually, a digital signature should apply to the information present in the document and not to the specific document encoding. Since current digital signature algorithms use binary data of a specific encoding to generate the digital signature, an already digitally signed document cannot be converted into a different encoding without invalidating the signature. This signature conversion problem arises when the desired encoding is a different encoding from the original document encoding, i.e. different PDF encoding conversion, different XDP encoding conversion, or PDF to XDP conversion. Even reordering XML data in a XDP file invalidates the signature. The signature conversion problem has been traditionally solved by using a canonical encoding (data is ordered in a predetermined and repeatable order) to generate a digital signature. The signature validation now requires an extra step of converting the document to the canonical encoding before reproducing the hash for hash comparison in validating the signature. This canonical conversion step can be computationally expensive. There exists a need to more efficiently validate digital signatures for multiple document encodings.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process, an apparatus, a system, a composition of matter, a computer readable medium such as a computer readable storage medium or a computer network wherein program instructions are sent over optical or electronic communication links. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. A component such as a processor or a memory described as being configured to perform a task includes both a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. In general, the order of the steps of disclosed processes may be altered within the scope of the invention.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
Creating and validating digital signatures for multiple encodings are disclosed. In some embodiments, creating a digital signature for a document includes computing a signature for two or more encodings of the document information. The signatures are labeled and packaged together as a multiple encoding signature. When a document with a multiple encoding signature is validated, a signature corresponding to the encoding of the document is located within the multiple encoding signature and used to validate the document. The document can be converted into another encoding for which a corresponding signature exists in the multiple encoding signature and still have a valid multiple encoding signature. If no exact signature corresponding to the encoding of the document is found, the document can be canonicalized before signature validation.
XDP′″ encoding 102, XDP″ encoding 104, and XDP′ encoding 106 is canonicalized as XDP encoding 114. Any encoding variation or any number of encodings can be canonicalized into a common canonical form. In generating multiple encoding signature 124, a hash of various encodings is made. XDP encoding 114 is hashed to generate XDP hash 122. PDF′″ encoding 108 is hashed to generate PDF′″ hash 116. PDF″ encoding 110 is hashed to generate PDF″ hash 118. PDF′ encoding 112 is hashed to generate PDF′ hash 120. In some embodiments, one or more of XDP encoding variations, 102, 104, and 106, are hashed in addition to the canonical XDP encoding. Any hashing function can be used to generate the hashes, including the MD5 hashing function. One or more hashes produced from various encodings are encrypted and combined to form multiple encoding signature 124. The hashes can be combined before encryption or combined after individual encryption. Any encryption method may be used, including any public key encryption methods.
Two or more individually encrypted hashes and one or more labels are packaged together to form a multiple encoding signature. The labels may be left unencrypted or encrypted separately or together with a corresponding individually encrypted hash. The labels may be included as metadata, i.e. header data, of a document. The order of the individually encrypted hashes and/or labels within the multiple encoding signature may be preconfigured or dynamically configured. If the location and attributes of the individually encrypted hashes are predetermined, labels do not have to be included. In some embodiments, labels are not included in the multiple encoding signature.
There can be any number of encoders. Hash generator 314 generates hashes based at least in part on encodings of one or more documents. Encrypter 316 encrypts one or more hashes individually or together in order to generate a multiple encoding signature. Recipient system 306 comprises decoder 318, decrypter 320, hash generator 322, and validator 324. Decoder 318 decodes the multiple encoding signature to determine and locate the hash needed to verify one or more documents. Decrypter 320 decrypts the encoded signature. For example, if the signature was encoded using a public key cryptography, the public key is used to decrypt the signature. Hash generator 322 generates the same hash used to generate the hash contained in the signature. Validator 324 compares the generated hash and the hash of the signature in order to validate the signature. Other components may exist in both the author and recipient system. This system diagram has been simplified to illustrate the embodiment clearly.
The processes shown in
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
5958051 | Renaud et al. | Sep 1999 | A |
6772196 | Kirsch et al. | Aug 2004 | B1 |
6947954 | Cohen et al. | Sep 2005 | B2 |
7100008 | Yagawa | Aug 2006 | B2 |
7120675 | Shupak et al. | Oct 2006 | B1 |
7249259 | Vanstone et al. | Jul 2007 | B1 |
7340611 | Alev et al. | Mar 2008 | B2 |
7356764 | Radja et al. | Apr 2008 | B2 |
7417570 | Srinivasan et al. | Aug 2008 | B2 |
20010055138 | Richardson et al. | Dec 2001 | A1 |
20020023220 | Kaplan | Feb 2002 | A1 |
20020044662 | Sowler | Apr 2002 | A1 |
20030177435 | Budd et al. | Sep 2003 | A1 |
20040153452 | Carro | Aug 2004 | A1 |
20040177253 | Wu et al. | Sep 2004 | A1 |
20040199876 | Ethier et al. | Oct 2004 | A1 |
20050050332 | Serret-Avila et al. | Mar 2005 | A1 |
20050135260 | Todd | Jun 2005 | A1 |
20050177389 | Rakowicz et al. | Aug 2005 | A1 |
20050193202 | Gajjala et al. | Sep 2005 | A1 |
20050231738 | Huff et al. | Oct 2005 | A1 |
20060101271 | Thomas | May 2006 | A1 |
20080010218 | Zank | Jan 2008 | A1 |
20080175377 | Merrill | Jul 2008 | A1 |
20080237359 | Silverbrook et al. | Oct 2008 | A1 |