Digital Document Signing in Java-Based Web Applications, Page 2
Public Key Infrastructure and Digital Certificates
The Public Key Infrastructure (PKI) provides the architecture, organization, techniques, practices, and procedures that support, by means of digital certificates, the application of the public key cryptography for the purposes of the secure information exchange over insecure networks and transmission media. For the issuance and control of such digital certificates, the Public Key Infrastructure relies on the so-called certification authorities, which allow trust between strange parties, participating in secured communication based on public and private keys.
The digital certificates bind a particular public key with a particular person. They are issued by special kind of authorities (certification authorities) in strict security precautions, which guarantee their authenticity. We can think of the digital certificates as electronic documents, certifying that a given public key is property of a given person. In practice for the purposes of the digital signature, the most widely used are X.509 certificates.
X.509 is a widely accepted standard for digital certificates. An X.509 digital certificate contains the public key of a given person, private data about this person (name, organization and so on), information about the certification authority that has issued the certificate, validity period information, information about the used cryptographic algorithms, and other various details.
The certification authority (CA) is an institution entitled to issue digital certificates and to sign them with its own private key. The purpose of the certificates is to confirm that a given public key is property of a given person, and the purpose of the certification authorities is to confirm that the given certificate is valid and can be trusted. In this sense, the certification authorities are an unbiased trusted third party that provides for a high degree of security in the computer-based information exchange. If a certification authority has issued a digital certificate to a given person and has signed that this certificate really belongs to the person, we can believe that the public key in the certificate does in fact belong to the person, provided we trust the certification authority.
Depending on the necessary security level, certificates with different levels of trust are used. For the issuance of some kinds of certificates, only the owner's e-mail address is needed, while the issuance of others requires the personal presence of the owner, who inks his or her signature on paper-based documents in some office of the certification authority.
Not all certification authorities can be trusted because it is possible that malicious people present themselves asa certification authority which does not really exist, or is fake. To trust a certification authority, it has to be worldly acknowledged and approved. In the world of digital security, the approved world certification authorities depend on very strict policies and procedures for issuing certificates and, thanks to them, they keep the trust of their clients. For a greater security, these authorities obligatorily use special hardware that guarantees the impossibility of leaks of important information; for example, private keys. Among the best-known approved world certification authorities are the following companies: VeriSign Inc., Thawte Consulting, GlobalSign NV/SA, Baltimore Technologies, TC TrustCenter AG, Entrust Inc. and so on.
Every certification authority possesses a certificate and a corresponding private key, with which it signs the certificates it issues to its clients. A certification authority can be at the top level (top-level certification authority; root CA) or at some subsequent level. Top-level certification authorities issue themselves a certificate at the beginning of their activity and sign it with the same certificate. These certificates are called Root certificates. The Root certificates of trusted world certification authorities are publicly available on their Web sites and can be used for verification of other certificates. The non-top-level certification authorities depend on some upper-level authority to issue them a certificate, which allows them to issue and sign certificates for their clients.
It is technically possible to use each certificate to sign every other certificate, but in practice the possibility to sign certificates is highly limited. Every certificate contains unchangeable information about whether it can be used to sign other certificates. The certification authorities issue certificates to their clients; they cannot be used to sign other certificates. The certificates that can be used to sign other certificates are issued only to certification authorities with very strong security precautions. If a client buys a certificate from some certification authority and signs another certificate with it, the newly signed certificate will be invalid because it will be signed by a certificate in which it is specified that it cannot be used to sign other certificates.
A given certificate can be signed by another certificate (most frequently, the property of some certification authority) or to be signed by itself. The certificates that are not signed by another certificate, rather by themselves, are called self-signed certificates. In particular, the Root certificates of the top-level certification authorities are self-signed certificates. Generally, a self-signed certificate cannot certify the relationship between a public key and a given person because, by using the appropriate software, everyone can generate such a certificate to the name of the chosen person or company.
Although self-signed certificates cannot be trusted, they find their application. For example, within the bounds of an inter-company infrastructure, where it is possible to physically transfer the certificates in a secure way between the individual employees and the inter-company systems, self-signed certificates can successfully replace certificates issued by certification authorities. In such inter-company media, it is not necessary for some certification authority to confirm that a given public key belongs to a particular person because this can be guaranteed by the method of issuing and transferring certificates. For example, when a new person is employed by a given company, it is possible for the system administrator to issue him or her a self-signed certificate and to give it to him or her on a floppy disk or in another secure way. Then, the administrator can transport this certificate in a secure way to all inter-company systems and in this way it would be guaranteed that all inner systems have the real certificates of all employees.
The described security scheme based on self-signed certificates can be improved if the company establishes its own local certification authority for its employees. For that purpose, the company must initially issue a self-signed certificate, and to issue certificates to its employees that are signed with this certificate. In that way, the initial certificate of the company is a trusted Root certificate, and the company itself is a top-level certification authority.
In both described schemes, there is a possibility of a misuse by the system administrator who has the rights to issue certificates. This problem could be solved by enforcing strict inter-company procedures for the issuance and control of certificates, but complete security cannot be guaranteed.
In communication over the Internet, where there is no secure way to determine whether a given certificate sent over the network has not been changed somewhere on the way, self-signed certificates are almost not used, but only certificates issued by some approved certification authority. In such networks, the SSL protocol is most often used to secure the communications providing secure channels, called SSL tunnels. The SSL (Secure Socket Layer) protocol relies on public key cryptography and certificates to allow two communicating parties to set up an encrypted channel between each other. It guarantees the channel is secure only if the certificates used for establishing the channel are trusted. For example, if a Web server on the Internet must communicate with Web browsers over a secured communication channel (SSL tunnel), it must own by all means a certificate issued by some well-known certification authority. Otherwise, it would be possible for an encrypted channel between the clients and this Web server to be tapped by malicious people.
The certificates issued by approved certification authorities allow a higher degree of security of the communication, regardless of whether they are used in a private corporate network or on the Internet. Nevertheless, self-signed certificates are often used because the certificates issued by the certification authorities cost money and require efforts on behalf of their owner for the initial issuance, the periodical renewal, and the reliable storage of the corresponding private key.