6-the handshake begins when a browser connects to an ssl-enabled server, and asks the server to send back its identification, a digital certificate that usually contains the server name, the trusted certifying authority, and the server public encryption key. the browser can contact the server of the trusted certifying authority and confirm that the certificate is authentic before proceeding. the browser then presents a list of encryption algorithms and hashing functions (used to generate a number from another); the server picks the strongest encryption that it also supports and notifies the client of the decision. in order to generate the session keys used for the secure connection, the browser uses the server public key from the certificate to encrypt a random number and send it to the server. the client can encrypt this data, but only the server can decrypt it: this is the one fact that makes the keys hidden from third parties, since only the server and the client have access to this data. the server replies with more random data (which doesnt have to be encrypted), and then both parities use the selected hash functions on the random data to generate the session keys. this concludes the handshake and begins the secured connection, which is encrypted and decrypted with the session keys. the ssl handshake allows the establishment of a secured connection over an insecure channel. even if a third party were to listen to the conversation, it would not be able to obtain the session keys. the process of creating good random numbers and applying hash functions can be quite slow, but usually the session keys are cached, so the handshake occurs only on the first connection between the parties. this process works on top of http, so its portable to any platform that supports it, and is in principle applicable to other protocols as well (welling 2001, p.334). the process described is part of ssl version 2.0, but version 3.0 is supposed to replace it soon. another standard, transport layer security (tsl) is still in draft and is supposed to replace ssl in the future.