# Public Key Cryptography

• July 21st, 2003, 11:42 AM
hypronix
Public Key Cryptography
Hmmm the first paper I write... there must be a beginning for everything. Anyway, I'm taking you into a short overview of PCK. Most importantly, either here or in PMs, I ask of feedback, please. Okay, here goes

___begin___

__Public Key Cryptography__

This paper was written to aid in the understanding of Public Key Cryptography. Its purpose is therefore purely theoretical, except in those cases when you think you would like to program your very own public key algorithm. It is not meant to be an extensive look into these standards. For full information please refer to appropriate sources. You should know how to get to them.

::1

-=1. Content of this paper [this bit :P]
-=2. Why encrypt? [why not?]
-=3. What is public key cryptography? [I think this is why you are reading this]
-=4. Safe? [some technicalities and other generally nasty stuff]
-=5. Endnotes.

::2 _Why Encrypt?_

I doubt I really need to go into why somebody should encrypt sensitive data. Being personal information, it is safer that only you have access to it. Intellectual property, password files [you should never have your passwords written in a file, but I won't explain to you why that bit is utterly stupid and incomprehensible from a logical standpoint :) ] or an e-mail from one of your girlfriends which the other should not find - a lot of things are better off in ciphertext.
There are a number of options when it comes to encryption, each using different algorithms. Explaining one-time pads, hash functions and reciprocal encryption [which should not be called crypto anyway] is beyond the scope of the current paper. One needs to research which the best tool for him would be, considering the sensitivity of the data, the available funds to be invested in the encryption, and known flaws in cryptographic algorithms. The latter should be paid serious attention to.

::3 _What is public key cryptography?_

Public Key Crypto is used generally when you need to send an encrypted message to somebody and they need to manage to decrypt it [and quick, we don't mean any cryptanalysis here]. Of course you could attempt to offer the recipient the same password/passphrase you used for encryption in the first place, but how do you send that one in a secure fashion? What PKC does is allows you to have a public key [doh!] that's accessible to everyone for download or otherwise obtain at no risk to the ciphertext. So getting down to it, how does it work?
Let's say Alice wants to send Brian a message. Alice has apk [Alice's public key] and ask [Alice's secret key]. So does Brian have a bpk and a bsk. Now both apk and bpk are free to obtain either by download from a third party, or, in the case of most encryption software, can be traded in the form of ASCII codes. If Alice wants to tell Brian how sexy he is, she will encrypt the respective e-mail with his public key and send the ciphertext to Brian. He can easily decipher the text using bsk. If it has not been self-understandable, PCK is not reciprocal. That means, using the public key, somebody cannot both encrypt and decrypt a message. This is what makes the public key safe for sharing no matter to whom.

::4 _Safe?_

When it is really important information we deal with, the security of the ciphertext is, obviously, of great concern. That is why one must understand how safe PKC is. So, what are the chances of someone breaking the code and getting your data without your permission?
As for most things in computer sciences, the answer to this problem is given by mathematics. Let us see what exactly happens with the keys involved in the transaction of a ciphertext [the following example pertains to the Rivest-Shamir-Adleman - RSA - encryption algorithm and may be different depending on the cryptographic method used].

Let {c} represent the cipher, {m} the original message, {b1pk} and {b2pk} are Brian's public key [divided by the algorithm used in encryption], {bsk} his secret key.

When Alice creates the ciphertext, she is exponentiating: {c} = {m}^{b1pk} mod {b2pk}. Brian, in order to decrypt {c} and get back to {m}, exponentiates: {m} = {c}^{bsk} mod {b2pk}. Depending on the algorithm, there is a set mathematical relationship between {b1pk} and {bsk} that allows only Brian to decrypt the cipher. This relationship has to do with large primes which are hard to obtain [if someone was to attempt to break the cipher and retrieve the original message]. This is what makes PKC one of the most secure forms of sending encrypted data. Of course, nothing is full proof, but often the user or an implementation of the algorithm is to blame, not the algorithm itself.

::5 _Endnotes_

With any method you choose, certain things may go wrong. An advice everybody gives but it seems not everybody listens to is "read about it!” When a question regarding data security - a category in which cryptography has an important place - arises, research, ask, and research some more about it. While you could try and understand the whole of it by yourself, today nobody has time to reinvent the wheel for every car one drives.

After a basic introduction into PCK it is up to the reader to research more on this topic. Important aspects - for those wishing to code their very own cryptographic system - such as mathematical modelling, cryptanalysis and key specifics have not been discussed at length here.

Feel free to ask me questions on this topic. Where you found this file there must be some way to contact me. For those of you really getting into PCK here follows my PGP [Pretty Good Privacy] public key :). Take care and protect what's valuable to you. Chances are, someone else knows of it.

___end___

Thanks and.. I repeat.. all feedback much appreciated.

cheers!