On Sat January 7 2012, Manish Jain wrote:
> 
> Hi,
> 
> I am new to OpenSSL and am trying to prepare some illustrative 
> documentation on how it works.
> 
> AFAIK, OpenSSL uses the concept of a pair of keys per host : one is a 
> private key which is never communicated to any other host, and the other 
> is a public key which is transmitted to the peer (the other party). The 
> client uses the public key of the server (contained in the server's 
> certificate) to encrypt its communication, which can only be decrypted 
> with the server's private key. Please correct me if I am wrong.
>

That is the essence of what happens and by that the client knows
that it is communicating with the server it intended to reach (authentication).
 
> Now the question is : when the server sends data to the client, what key 
> does it use for encryption ? 
>

The general answer is: The client and server establish a shared key
for that propose early in the protocol.

> Does the client communicate its public key  
> to the server (at some initial stage) which the server uses for 
> encryption ? 
>

If the communications set up between the two requires client authentication.
In many cases the client remains a stranger to the server (un-authenticated).

> If yes, what if the client does not have a pair of  
> public/private keys ?
> 

The usual case for public web browsing using https and some other protocols.
The client remains a stranger to the server.

> The question arises because it does not seem logical that the server 
> would its private key for encrypting data to be sent to the client. 
> Else, snoopers who might have picked the public key could decrypt the 
> data too.
> 

There is an early stage in nearly all protocols, called: key agreement
where the client and server agree on a key without exchanging any of
the 'private' information that it is based on.

> Any help on clearing up the above points would be greatly appreciated.
> 

My comments above are at a very general level.
If the process was as simple as my answers, OpenSSL would not be as
large a body of code as it is.  ;-)

Mike
> 
> Thank you &
> Regards
> 
> Manish Jain
> invalid.poin...@gmail.com
> 
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
> 
> 


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to