A cryptosystem (or cryptographic system) is the package of all procedures, protocols, cryptographic algorithms and instructions used for encoding and decoding messages using cryptography. It will generally contain an integrated assembly of cryptographic primitives (e.g., encryption algorithms, hash algorithms, etc), protocols for their use, operational procedures, and auxillary elements (documentation, user training materials, and so on) which together make possible effective security as intended by the designer(s). It is cryptosystems that users interact with, it is cryptosystems which provide whatever security is desired, and it is (usually) cryptosystems which fail in practice. An understanding of some of the system level issues in the use of cryptography will be helpful to all who propose to use it, or who will have it deployed by default on their behalf.
This article discusses the nature of cryptosystems using as an illustrative example the design and implementation an influential modern cryptosystem—PGP. PGP is computer software, as essentially all practical cryptographic systems now are. It is more complex than earlier hand or mechanical rotor systems, but was chosen because it is far more typical of modern cryptographic practice. Version 2.6x is used as an example rather than say the OpenPGP standard, as it is conceptually similar, but has fewer algorithm choices.
This paper attempts to analyze the knapsack encryption/decryption scheme, survey major knapsack public-key cryptosystems developed in the past 20-some years, chronicle their rise and fall, and hope-fully shed some light on the future of the knapsack cryptosystems.
Construct the cryptosystem such that decryption is essentially different for the cryptanalyst and the legitimate receiver.
As the trapdoor one-way function is the soul of a public-key cryptosystem, it is essential to understand the trapdoor one-way function used in a knapsack cryptosystem.