U.S. patent application Ser. No. 10/010,974, filed on Dec. 5, 2001, entitled “Secure Printing With Authenticated Printer Key” is hereby incorporated by reference as if set forth in full herein.
1. Field of the Invention
The present invention concerns creation of secure files. More particularly, the present invention concerns a secure file format having a secure client header, a secure client header integrity check value appended thereto, and an encrypted data block appended thereto, wherein the secure client header includes a public information block and an encrypted private information block, and the encrypted data block is comprised of a plurality of encrypted data blocks each appended with a respective integrity check value obtained by performing an integrity check of the data block and a previous integrity check value.
2. Description of the Related Art
Various data encryption techniques are known to be utilized in the realm of cryptography, and in particular, with secure network printing. For example, it has been known to use cryptography techniques involving the use of public/private key pairs, or any one of a number of hashing algorithms or secure protocols. The public/private key technique typically involves encrypting print data with a symmetric key, encrypting the symmetric key with the public key of the printer, and transmitting the encrypted data to the printer. Hashing algorithms are typically utilized to create a hash value that is appended to the print data and used in the printer to verify the integrity of the print data. Secure protocols, such as SSL (Secure Sockets Layer) have also been utilized in an attempt to provide security in transmission of print jobs.
It should be noted that the foregoing techniques have been implemented using either a stream cipher or a block cipher to encrypt the print data. A stream cipher is an encryption method that applies a cryptographic key and algorithm to each binary digit of plain text in order to produce cipher, or encrypted, text. A block cipher, on the other hand, is an encryption method that applies a cryptographic key and algorithm to blocks of plain text in order to produce cipher text. Unlike a stream cipher, a block cipher requires an initialization vector (IV) for input into the first encryption or decryption stage.
While each of the foregoing techniques provide at least some level of security, they are not without their drawbacks. Depending on the specific implementation of the encryption and other cryptographic features, a variety of attacks may be mounted by an attacker. For example, if a stream cipher is used to encrypt the print job and the same key is reused between jobs, an attacker can employ techniques that allow portions of cleartext data to be recovered. Such an attack may be extended to a single job, where multiple fields are encrypted using the same key. If the keys that are used to encrypt data are easily predictable or only weakly random, an attacker will have a good chance of recovering the cleartext of the entire job.
Another type of attack might attempt to substitute all or part of the job with data provided by the attacker, thereby causing different content to be printed. Moreover, the attacker may attempt to corrupt the job in such a way that the printer, while attempting to process the job, is forced to expend a large amount of processing resources, causing denial of service to other users.
There may also be features in the job that identify the sender of the print job. An attacker may substitute a false identification for the sender of the job. If the printing system tracks users so as to charge the user for use of the printer's resources, the wrong person or department may be charged.
Thus, while known techniques provide at least some level of security, they are not without their drawbacks and the present invention aims to address at least some of these drawbacks by providing a secure file format that is different from those already known.
The present invention provides a secure file format having a secure client header, a client header integrity check value appended thereto, and an encrypted data portion. The secure client header is preferably comprised of a public information block and a private information block, where at least a portion of the private information block is encrypted. The public information block preferably includes public information such as algorithms to be used for a public key, a symmetric key, a signature key and a hash algorithm. The private information block preferably includes private information such as the symmetric key itself and a hash key, both of which are encrypted. The client header is then subjected to an integrity check, such as HMAC (Hashing Message Authentication Code), to generate an integrity check value that is appended to the client header. With the client header being generated in this manner, the information to be utilized in decrypting the file is provided in the header in a secure manner and a device, such as a printer receiving the secure file, can process the file to decrypt the data. In this regard, the data portion can merely be encrypted utilizing, for example, a symmetric key, with the symmetric key being further encrypted with the printer's public key, and no other encryption techniques are necessary to provide the desired level of data privacy. However, in another aspect of the invention, the data portion is processed in a unique manner to provide even further security.
With this additional aspect, the encrypted data portion is further processed by dividing the data into a plurality of blocks. Each of the plurality of blocks are then processed by being subjected to an integrity check, such as HMAC, to obtain an integrity check value for each block that is appended thereto. However, each block is subjected to the integrity check in a daisy chain fashion in conjunction with an integrity check value from the previous integrity check. That is, the first data block of the plurality of blocks is subjected to an integrity check in conjunction with the integrity check value appended to the secure client header, thereby resulting in an integrity check value for the first data block that is appended to the first data block. The second data block is then subjected to an integrity check in conjunction with the integrity check value appended to the first data block, thereby resulting in an integrity check value for the second data block that is then appended to the second data block. The third and subsequent data blocks are in turn processed in like manner so as to form a daisy chain of data blocks and appended integrity check values. Thus, with the data portion being processed in this manner, even further security can be provided for.
Thus, in one aspect of the invention, a secure file comprised of a secure client header and a data block is created by generating the secure client header by forming a client information block comprised of a public information block and a private information block, encrypting at least a portion of the private information block of the client information block, performing an integrity check on the client information block to obtain a client information integrity check result value, and appending the client information integrity check result value to the client information block, thus creating the secure client header. The data block is then appended to the secure client header to obtain the secure file.
In another aspect of the invention, a secure file comprised of a secure client header and a data block is created by generating the secure client header by forming a client information block comprising a public information block, a private information block and an IV, encrypting at least a portion of the private information block of the client information block, performing an integrity check on the client information block to obtain a client information integrity check result value, and appending the client information integrity check result value to the client information block. The data block is then appended to the secure client header to obtain the secure file. The IV may be associated with the public information, in which case the IV is not encrypted. Alternatively, the IV may be associated with the private information block, which case the IV is encrypted.
In a related aspect, the encrypted data block is divided into n encrypted data blocks, an integrity check is performed for a first one of the n encrypted data blocks and the client information integrity check result value appended to the client information block, so as to obtain a first encrypted data block integrity check result value, with the first encrypted data block integrity check result value being appended to the first encrypted data block. The remaining data blocks are processed by repeatedly performing, for each of the subsequent n encrypted data blocks, an integrity check on the subsequent encrypted data block and an integrity check result value appended to a previous one of the n encrypted data blocks, so as to obtain an integrity check result value for the subsequent encrypted data block, and appending the subsequent integrity check result value to the subsequent encrypted data block.
In other aspects, the client information block may further comprise a routing information block, wherein at least a portion of the routing information block is encrypted before the integrity check is performed. The routing information block may be utilized where the secure file is intended to be accessed only by a recipient identified in the header. Thus, the routing information block may comprise at least one of sender identification information, recipient identification information, a password, and job identification information, with at least the password and the job identification information being optionally encrypted.
Additionally, the public information block may comprise information for identifying at least one of a public key algorithm, a symmetric key algorithm, a signature key algorithm and a hash algorithm, wherein the symmetric key algorithm may comprise Advanced Encryption Standard (AES). The private information block may comprise at least one of a symmetric key and a hash key, with the symmetric key and the hash key being encrypted.
Further, the secure file is preferably any one of a print file to be transmitted to a printer, a file to be stored in a storage medium, an e-mail transmission, or a facsimile transmission. That is, the secure file format may be utilized in virtually any environment or application where secure transmission/storage of data files is employed.
This brief summary has been provided so that the nature of the invention may be understood quickly. A more complete understanding of the invention can be obtained by reference to the following detailed description of the preferred embodiments thereof in connection with the attached drawings.
The following description of a secure file format will be made with regard to a secure printing system in which print jobs that are submitted to a printer are submitted in the secure file format. However, as will become apparent, the secure file format can be utilized in other applications as well, such as saving files to a storage medium in the secure file format, performing e-mail or facsimile transmissions in the secure file format, etc. Thus, while the focus of the following description will be made with regard to a secure printing system, the invention is not limited to such and can be employed in other aspects as well.
Client computer 10 is preferably a personal computer or workstation having a windowing operating system environment such as Microsoft Windows 2000 or Microsoft Windows NT, although other operating systems may also be used. As is typical with PC-type computers, client computer 10 preferably has a display (monitor), keyboard, and a mouse or other type of pointing device so that a user can operate the computer to perform various operations, including submission of a print job to a printer or print server.
Printer 20 communicates with client computer 10 via connection 1 and is preferably a laser or an ink-jet printer which is capable of printing images on a recording medium based on received print data. Preferably, printer 20 is a Canon ImageRunner 5000 (iR5000) printer. Printer 20 may also have a fixed storage medium, which is preferably a fixed disk, but can be a computer memory such as ROM or EEPROM. Printer 20 also includes a connection with SP Device 35 such that printer 20 and SP Device 35 can communicate with one another. While SP Device 35 is shown as being an external stand-alone device, SP Device 35 may be incorporated within printer 20 instead, thus forming an embedded device within the printer.
Server 30 may also be connected to connection 1 and is preferably a print server. It should be noted that server 30 is not a necessary component needed for practicing the invention and is merely depicted for a more thorough description. Server 30 preferably comprises a PC-compatible computer having a windowing operating system environment such as Microsoft 2000 server or Microsoft NT server. Of course, server 30 could be any other type of server running other server-type operating systems such as Novell, Unix, Sun Microsystems, etc. Server 30 preferably has a fixed disk which is preferably a large fixed disk for storing numerous files, applications and data. Server 30 can therefore be utilized by other devices on connection 1, such as client computer 10, as a file server or other type of server, such as a print server. Server 30 may also act as a gateway for other devices on connection 1 to access another network such as the Internet.
With reference to SP Device 35, although it is shown as being an external device connected to printer 20, SP Device 35 could be embedded within printer 20 instead. Thus, throughout the course of the following description, reference to an “embedded device” refers to the SP Device 35 in general. SP Device 35 provides functionality for printer 20 to process encrypted print jobs, as well as other functionalities that are beyond the realm of the present application. With regard to encryption functionality, SP Device 35 includes a mechanism to accumulate entropy (i.e., random data associated with the SP Device 35 and printer 20) for use in generating encryption keys, algorithms for generating the encrypting and decrypting the encryption keys, as well as for validating the encryption keys, etc. In this manner, SP Device 35 provides the ability for printer 20 to receive and process encrypted print jobs.
It should be noted that SP Device 35 can be a product that uses either a stream cipher or a block cipher. For example, SP Device 35 may employ RC4 as the symmetric cipher that is used for encrypting payload data. Since RC4 is a stream cipher, it does not require the use of an IV. Alternatively, SP Device 35 may employ a block cipher, such as the Advanced Encryption Standard (AES). A more detailed description of the functionality of SP Device 35 will be provided for below.
Utilizing the computing environment shown in
Client workstation 10 is also seen to include User Mode Print Driver 15, which for the present invention, is preferably a Canon secure printer driver installed in client workstation 10 for a Canon printer, such as an ImageRunner 5000 series printer. That is, the client-resident portion of a secure printing software is preferably implemented in the printer driver, using a Common Core Driver (CCD) architecture with Secure Print specific features being implemented in an associated user-mode printer driver. The secure file format of the present invention is preferably generated by User Mode Print Driver 15 and the details of such will be provided below.
The client software also preferably uses a Windows Cryptographic Application Programming Interface (CAPI), where possible. CAPI is a product available with Microsoft Windows operating systems. Note that differences exist between the availability of certain CAPI features among the different Windows operating systems and therefore, the client software should be implemented such that compatibility is ensured on all stated OS platforms. The cryptographic algorithms and functions utilized on the Windows client are preferably RC4 (“Ron's Code #4” for symmetric key encryption/decryption for a stream cipher), AES (“Advanced Encryption Standard” for symmetric key encryption/decryption for a block cipher), RSA (“Rivest, Shamir and Adelman”, an asymmetric public key encryption algorithm), using PKCS #1 (Public Key Cryptography Standard) version 1.5 (asymmetric key encryption/decryption; digital signatures/verification), HMAC (Hashing Message Authentication Code), SHA-1 (Secure Hash Algorithm), and a Random Data Source (for generation of symmetric keys).
SP Device 35 is seen to include operating system (OS) 39 and Secure Printing Device Core software 38, which provide SP Device 35 with the ability to communicate over the network and to preform various operational functions. As seen in
Printer 20 is seen to include Secure Printing Device interface 21 for communication with SP Device 35, and print engine 22. Of course, printer 20 could be virtually any network printer that can receive print jobs over a network, but in a preferred embodiment of the invention, printer 20 is a Canon ImageRunner 5000 series printer. It should be noted that, while SP Device 35 is depicted as a separate device connected to the network, with the device being external to printer 20, SP Device 35 could be fully implemented within printer 20 instead. In this case, SP Device 35 within printer 20 may be referred to as an embedded device (i.e., the device being embedded within the printer), or the functionality of the SP Device 35 could be implemented in firmware within printer 20 instead. However, as seen in
In utilizing the secure file format of the present invention, encryption keys for the printer are required. The encryption keys are preferably a private/public keypair for the printer. The printer's keypair is preferably generated within SP Device 35 by SP application 36, although the keypair may also be generated outside of SP Device 35 and installed in SP Device 35 during the manufacturing process. The printer's private key is maintained within SP Device 35 and is not to be exposed outside the SP Device 35. The SP Device's public key is accessible via the network, as described below, by using a Secure Printer Management Protocol, which will also be described below. In addition to generating the private/public keypair in SP Device 35, SP application 36 also preferably performs a hashing algorithm on the printer's public key using a SHA-1 hash algorithm. The hash of the printer's public key is also accessible, in human-readable format, as a field in a test page, which is initiated by user input from a control panel on the printer. Entropy for use in generating the printer's keypair within SP Device 35 is preferably obtained from various sources of physically random data.
During installation and configuration of the printer driver on the client, the client configuration software obtains the printer's public key directly from the printer, using a Secure Printer Management Protocol, as defined below. In order to ensure that the key has been reliably delivered to the client driver, a key verification step is used during installation. In performing the verification, the user obtains a test page directly from the printer, which includes the SHA-1 hash of the printer's public key. The user then enters the hash value that was obtained in this manner into a configuration dialog provided by the printer driver. The printer driver's setup utility computes a hash on the key that it obtained directly from the printer and compares the result to the hash value that was obtained by the user from the printer's test page. If the hash values are identical, the printer's public key has been verified and is permanently installed in the client system. After verification, the key is digitally signed by the driver, using native Windows features, to prevent tampering. If the hash value calculated over the received public key does not match the hash value displayed on the test page. and entered by the user, an error message is presented to the user and the installation process fails. If such a failure occurs, the printer's public key is not installed into the client system and the printer driver will not allow secure print jobs to be sent to the printer. Ideally, printing of the validation code should be initiated locally at the printer, with the printer in the offline state. However, the validation code may be generated by the SP Device 35, with the SP Device 35 then generating a test page containing the validation code. This validation code page is then transmitted to the printer, using a local network interface between the SP Device 35 and the printer as, for example, LPR data. In order to provide flexibility in the choice of hash algorithms, a single-byte field (referred to as an “Algorithm Designator”), indicating the hash algorithm in use, is preferably prepended to the actual hash result. Using this implementation, when the user enters the value obtained from the test page into the client's installation dialog, the algorithm in use will be known to the client. The actual key validation code is created by combining the Algorithm Designator with the hash value, and then applying an alphanumeric transform to the result. The printed values on the test page are then displayed as a series of alphanumeric characters, as shown in
The validity of the key may also be ensured using a public key infrastructure (PKI). In this implementation, the printer's key is delivered within a cryptographic certificate, signed by a trusted certification authority. In that case, the installation program verifies the integrity of the key by verifying the signature and other information contained in the certificate. In the absence of a functional public key infrastructure (PKI), however, the implementation described above is preferred. Further enhancements to the key distribution process may also include administrative tools that allow the printer's public key and hash to be installed into the client driver from a floppy disk or a secure website. Such tools may improve the ease of installation, but can also pose added security risks.
Once the printer's public key has been properly installed in the client workstation, the user is able to submit a secure print job for printing. When a user selects an option for a secure print job, another encryption key (symmetric key) is generated by the user mode print driver. As is known in the art, symmetric keys are generated using what is referred to as a source of entropy (i.e., randomly generated data). In the present invention, entropy for use in generating the symmetric key is preferably obtained using standard Windows Cryptographic Application Programming Interface (CAPI) methods. The symmetric key obtained in this manner is preferably only used for a single print job, after which it is destroyed. All remnants of the symmetric key are destroyed by overwriting, such that the symmetric key cannot be recovered from the client system by any means. Remnants of the key, as well as any cleartext data buffers in system memory, are overwritten with a pattern, using at least one pass. Remnants of cleartext data buffers that exist on hard disk are overwritten using a technique corresponding to DOD 5220.22-M, “clear” level, or better. It should be noted that another possible source of unexpected leakage is the system's virtual memory mechanism. Some or all of an application's memory can be unexpectedly swapped out and stored in a swap file at any time. Therefore, techniques are preferably used that temporarily store sensitive material, including keys, in an area of memory that cannot be swapped.
As stated above, during setup and configuration, the client communicates with the SP Device 35, for the purpose of obtaining the SP Device's (printer's) public key. This communication makes use of a Secure Printer Management Protocol (SPMP). In this SPMP, requests are communicated between the client and the SP Device 35 using standard TCP/IP protocol. The request message format is shown in
Referring to
As shown in
The Public Exponent 200 is a group of fields that are used to support the transfer of the RSA public exponent. It includes the public exponent itself, and other formatting information. As seen in
Modulus 300 is a group of fields that are used to support the transfer of the RSA modulus. It includes the RSA modulus itself, and other formatting information. The first four bytes (301-304) contain the Modulus Identifier, 4DX, 4FX 44XZ, 00X (“MOD”), identifying the beginning of the Modulus block. Modulus Length 305 is a 32-bit field that contains the length of the Modulus section of the Public Key Response message, in bytes, from the beginning of the Modulus Identifier (301) through the end of the Modulus Data field 306. Modulus Data 306 is a variable-length field that contains the RSA modulus.
Finally, Terminator 400 is a field that is used to identify the end of the Public Key Response. The terminator value consists of a fixed ASCII identifier, “EOF”, immediately following the Modulus Data 306. The Terminator comprises four bytes (401-404) that contain the Terminator, 45X, 4FX, 46X, 00X (“EOF”), identifying the end of the Public Key Response.
Thus, the client, having received the public key response in the foregoing format, is provided with various information needed to generate a secure file in the secure file format of the present invention, a detailed description of which will now be provided. Briefly, however, a secure file, and as will be described below, a secure file for a print job, is generated by generating a secure client header and appending encrypted print data thereto. As an enhancement, the encrypted print data appended to the secure client header may be processed further for additional security by performing integrity checks in a chaining fashion on the encrypted print data.
Referring now to
In generating the secure client header, the user mode print driver first generates a client header (step S903), which as seen in
Having generated client header 500, the private header portion 530 thereof (or as will be described below, at least some portion of the private header) is encrypted using the printer's public key (step S904), thereby resulting in encrypted private header 531. Additionally, routing header 540 (or at least some portion thereof) is encrypted using the symmetric (session) key (step S905), thereby resulting in encrypted routing header 541. Thus, once the foregoing encryption processes have been performed, client header 500 is transformed into encrypted client header 600.
Continuing with the process for generating a secure client header, encrypted client header 600 is subjected to an integrity check (step S906). The integrity check performed is preferably a Hashing Message Authentication Code (HMAC) algorithm, although any other type of integrity check could be used instead. The integrity check result value (HMAC value 701) is then appended to the encrypted client header 600 (step S907), thus transforming header 600 into secure client header 700.
To complete one embodiment of a secure file format according to the invention, print data payload 805 is encrypted with the symmetric (session) key, thereby resulting in encrypted print data payload 810. The encrypted print data payload 810 is appended to the secure client header 700 to form the secure print file 800. The secure print file 800 is then transmitted to the SP Device 35 via connection 1. As briefly stated above, an enhancement may be performed on the encrypted print data payload 800 and this process will be described in more detail below. However, first, a more detailed description of the contents of client header 500, and in particular, the contents of lead-in block 510, public header block 520, private header block 530, and routing header block 540 will be provided.
Referring now to
The IV (not shown) may also be included in the Public Header 520. As noted above, the IV is necessary for the first encryption (or decryption) stage of a block cipher. Accordingly, if a block cipher is used to encrypt the print data, an initialization vector should be provided. If the IV is included with the Public Header, the IV is not encrypted. In other words, the IV is transmitted along with the encrypted data, as cleartext. Because of the operational properties of block ciphers, it is generally not necessary to encrypt the IV. However, the IV may be encrypted within the Private Header 530 for further robustness, as seen in
The “Symmetric Key” field is the symmetric key that is used to encrypt the data payload. This same key is used to decrypt and recover the original plaintext data. The length of the symmetric key is contained in the Symmetric Key Length (527b) field of the Public Header. The “Hash Key” field is the HMAC or other hash key that is used to calculate the message authentication code (MAC) that follows each block of the encrypted payload data (this process will be described in more detail below). This same key is used by the receiving entity to validate the data in each block. The length of the hash key is contained in the Hash Key Length (529b) field of the Public Header. The “Initialization Vector” field is the IV that was used during the encryption of the payload. This same IV must be used by the receiving entity during the decryption process. The length of the IV is implicit in the definition of the block cipher that is used.
Referring now to
Recipient ID Length 549 is a 32-bit field that contains the length of the Recipient ID field 550, in bytes, including any padding bytes. If the Recipient ID Encrypted bit in the Option Mask field is set to “1,” this field is encrypted with the symmetric (session) key. Recipient ID field 550 contains identifying information that can be used to uniquely identify the intended recipient of the Secure Print data. Depending on the application, this field may contain a relatively short ASCII identifier, such as a user's login name, a numeric user ID, or even a more lengthy, fully-qualified user name or even a signed certificate. Note that it may be desirable to maintain the sender information in cleartext, so that a recipient can obtain a signature-verification key for the sender, without having to perform a costly RSA decryption to obtain the symmetric key and then use the symmetric key to obtain the user information. If the Recipient ID Encrypted bit in the Option Mask field is set to “1,” this field is encrypted with the symmetric key.
Password/PIN Length 551 is a 32-bit field that contains the length of the Password/PIN field 552, in bytes, including any padding bytes. This field is preferably, although optionally, encrypted with the symmetric key. Password/PIN field 552 contains a password or PIN (Personal Identification Number), which is used to authenticate a user who attempts to release a Secure Print job for printing. It will typically be entered by the user on a keypad at the printer. In this regard, it is desirable to provide the capability to use an alphanumeric password on the printer, where those characters can be supported by the user interface on the printer. It is also desirable to support extended (non-ASCII) characters for international applications. For that reason, the PIN, before encrypting, is stored in a series of 32-bit fields, using two bytes to represent each digit as a UCS-2 (16-bit) Unicode value. The data is stored in network order. Unused bytes are filled with Unicode null (NUL) characters. For example, a cleartext PIN value of “1234” (before encryption) may be constructed as shown in
Job ID Length 553 is a 32-bit field that contains the length of the Job ID field 554, in bytes, including any padding bytes. This field is optionally encrypted using the symmetric key. Job ID field 554 contains the name of the printed document or other information used to identify the job in the printer's queue. This field is preferably encrypted using the symmetric key, and like the encryption of field 552, constitutes the encryption that transforms routing header 540 into encrypted routing header 541.
Signed Header Hash 555, while shown in
Thus, the file format depicted in
Referring back to
Block Descriptor 815 is a field that contains a 32-bit block descriptor, which describes the current encrypted data block. A layout of Block Descriptor 815 is shown in
The actual data payload is contained in Data Payload block 816 and is preferably encrypted using the symmetric (session) key generated by the client, thus forming the encrypted data payload.
Data Block HMAC 817 is a field that contains an integrity check result (hash) value, and in this case, an HMAC (Hashing Message Authentication Code) value. A hash or HMAC is provided for each block to allow the target device (printer) to determine that errors have occurred before reaching the end of a potentially large file. The use of a keyed hash, such as HMAC, allows the device to immediately determine that a block was damaged or tampered with, allowing the device to immediately terminate the job. The Data Block HMAC 817 is calculated over the previous HMAC (the header HMAC 701 in the case of the first data block, or the previous data block HMAC, in the case of the remaining data blocks), the current Block Descriptor and the ciphertext data for the current data block. A graphical representation of this chaining type of integrity checking is depicted in
The foregoing process is also depicted in a flowchart of
Thus, having processed the encrypted data payload according to the foregoing, a secure file format can be comprised of, not only the secure client header in conjunction with commonly encrypted payload data (i.e., data merely encrypted with the symmetric key but not divided and hashed), but the secure client header as described above in conjunction with the divided and hashed encrypted data payload.
Finally, the last portion of the secure file is an End-of-File Identifier. This field consists of four bytes (821-824) which comprise the End-of-File Identifier, (45X, 4FX, 46X, 00X) (“EOF”). This is the final field in a Secure Print File, designating the end of the Secure Print job.
While the foregoing described how a secure file format may be generated according to the invention, it can be understood that print data is formatted by a client's printer driver, using a number of successive steps, before it is finally delivered to the printer. First, an application's print data is rendered by the client printer driver in a format that is understood by the printer engine. This is typically done using Postscript, PCL or other printer languages. Next, the driver packages the rendered data in the secure print file format, as described above. This step applies encryption and proprietary headers to the rendered data. Finally, the data is formatted for delivery to the printer, adding fields that describe the printer language that is used and other optional printer control parameters. This latter step may be accomplished using an additional Printer Job Language (PJL) command, paired with a terminating Universal Escape Language (UEL) field. In other words, after the print data is prepared in the secure file format as described above, it may be encapsulated using an additional PJL-UEL command pair, which indicates that it is a secure file. An example format of this packaging is shown in
Of course, the invention is not limited to use with secure print jobs submitted to a printer, either directly or via the SP Device 35. Rather, the secure file format of the present invention could be implemented in a number of embodiments other than secure print jobs. For example, rather than submitting a print job to a printer, a user can choose an option to print to a file using a virtual printer. In this case, the print file would be packaged as a secure file as described above, with the secure file then being stored in a designated location. Such a location may be, for example, on a local hard disk of client workstation 10, print server 30, on a removable storage medium such a floppy disk or CD-ROM, or any other storage area. In like manner, the secure file is not limited to a print file that is submitted to a virtual printer, but rather, could be a file that is saved in an application program as a secure file. In this regard, a user may merely select an option in an application program to save a file as a secure file. The software in the client computer packages the file in a secure file format according to the invention and the secure file is saved to a designated location.
The secure file format could also be implemented in facsimile transmissions or e-mail messages. In either of these embodiments, data being transmitted via facsimile or e-mail may be packaged in the secure file format according to the invention, with a device at the receiving end performing the functions of the SP Device 35.
Thus, the secure file format of the present invention could be implemented in virtually any environment where secure transmission of data is involved, and in particular, where data is transmitted via the use of public/private keypairs.
The invention has been described with particular illustrative embodiments. It is to be understood that the invention is not limited to the above-described embodiments and that various changes and modifications may be made by those of ordinary skill in the art without departing from the spirit and scope of the invention.
This application is a continuation-in-part of U.S. application Ser. No. 10/310,189, the contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 10310189 | Dec 2002 | US |
Child | 11146113 | Jun 2005 | US |