Question on OpenSSL encryption

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Question on OpenSSL encryption

manish jain-11

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.

Now the question is : when the server sends data to the client, what key
does it use for encryption ? Does the client communicate its public key
to the server (at some initial stage) which the server uses for
encryption ? If yes, what if the client does not have a pair of
public/private keys ?

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.

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


Thank you &
Regards

Manish Jain
[hidden email]

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Michael S. Zick-4
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
> [hidden email]
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [hidden email]
> Automated List Manager                           [hidden email]
>
>


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

manish jain-11

Hello Michael/Anyone Else,

Can you be kind enough to please point me to some place/URL where I can
get a bit more information about how the key is negotiated upon ?

I have gone through a a couple of write-ups on OpenSSL which throw light
upon everything else except for this vital piece of information.


Thanks & Regards
Manish Jain


On 07-Jan-12 19:23, Michael S. Zick wrote:

> 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
>> [hidden email]
>>
>> ______________________________________________________________________
>> OpenSSL Project                                 http://www.openssl.org
>> User Support Mailing List                    [hidden email]
>> Automated List Manager                           [hidden email]
>>
>>
>
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [hidden email]
> Automated List Manager                           [hidden email]
>
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Ben Laurie-2
On Sat, Jan 7, 2012 at 4:12 PM, Manish Jain <[hidden email]> wrote:
>
> Hello Michael/Anyone Else,
>
> Can you be kind enough to please point me to some place/URL where I can get
> a bit more information about how the key is negotiated upon ?
>
> I have gone through a a couple of write-ups on OpenSSL which throw light
> upon everything else except for this vital piece of information.

http://en.wikipedia.org/wiki/Transport_Layer_Security

>
>
> Thanks & Regards
> Manish Jain
>
>
>
> On 07-Jan-12 19:23, Michael S. Zick wrote:
>>
>> 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
>>> [hidden email]
>>>
>>> ______________________________________________________________________
>>> OpenSSL Project                                 http://www.openssl.org
>>> User Support Mailing List                    [hidden email]
>>> Automated List Manager                           [hidden email]
>>>
>>>
>>
>>
>> ______________________________________________________________________
>> OpenSSL Project                                 http://www.openssl.org
>> User Support Mailing List                    [hidden email]
>> Automated List Manager                           [hidden email]
>>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [hidden email]
> Automated List Manager                           [hidden email]
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Matt Caswell (frodo@baggins.org)
In reply to this post by manish jain-11
Hi

There's quite a good description of the key negotiation here:

http://technet.microsoft.com/en-us/library/cc785811%28WS.10%29.aspx

Matt


On 07/01/12 16:12, Manish Jain wrote:

>
> Hello Michael/Anyone Else,
>
> Can you be kind enough to please point me to some place/URL where I
> can get a bit more information about how the key is negotiated upon ?
>
> I have gone through a a couple of write-ups on OpenSSL which throw
> light upon everything else except for this vital piece of information.
>
>
> Thanks & Regards
> Manish Jain
>
>
> On 07-Jan-12 19:23, Michael S. Zick wrote:
>> 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
>>> [hidden email]
>>>
>>> ______________________________________________________________________
>>> OpenSSL Project                                 http://www.openssl.org
>>> User Support Mailing List                    [hidden email]
>>> Automated List Manager                           [hidden email]
>>>
>>>
>>
>>
>> ______________________________________________________________________
>> OpenSSL Project                                 http://www.openssl.org
>> User Support Mailing List                    [hidden email]
>> Automated List Manager                           [hidden email]
>>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [hidden email]
> Automated List Manager                           [hidden email]

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Ashok C
In reply to this post by Ben Laurie-2
Hi,

In addition to the online material, are there any good books which we can refer to understand openSSL better? Both conceptually as well as from the API/code perspective.
We hear of the "Network Security with OpenSSL by John Viega" as one good reference. But it was published in 2002. Any good new books which can be used?

Regds,
Ashok

On Sat, Jan 7, 2012 at 11:44 PM, Ben Laurie <[hidden email]> wrote:
On Sat, Jan 7, 2012 at 4:12 PM, Manish Jain <[hidden email]> wrote:
>
> Hello Michael/Anyone Else,
>
> Can you be kind enough to please point me to some place/URL where I can get
> a bit more information about how the key is negotiated upon ?
>
> I have gone through a a couple of write-ups on OpenSSL which throw light
> upon everything else except for this vital piece of information.

http://en.wikipedia.org/wiki/Transport_Layer_Security

>
>
> Thanks & Regards
> Manish Jain
>
>
>
> On 07-Jan-12 19:23, Michael S. Zick wrote:
>>
>> 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
>>> [hidden email]
>>>
>>> ______________________________________________________________________
>>> OpenSSL Project                                 http://www.openssl.org
>>> User Support Mailing List                    [hidden email]
>>> Automated List Manager                           [hidden email]
>>>
>>>
>>
>>
>> ______________________________________________________________________
>> OpenSSL Project                                 http://www.openssl.org
>> User Support Mailing List                    [hidden email]
>> Automated List Manager                           [hidden email]
>>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [hidden email]
> Automated List Manager                           [hidden email]
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Richard Könning
Am 09.01.2012 13:10, schrieb Ashok C:
> Hi,
>
> In addition to the online material, are there any good books which we
> can refer to understand openSSL better? Both conceptually as well as
> from the API/code perspective.
> We hear of the "Network Security with OpenSSL by John Viega" as one good
> reference. But it was published in 2002. Any good new books which can be
> used?

Well, the questions of the original poster weren't OpenSSL specific, but
targeted SSL/TLS in general, for this Eric Rescorla's book "SSL and TLS:
Building and Designing Secure Systems" is the better book. Sadly being
from the year 2000 it is somewhat outdated too, but nevertheless a good
introduction to SSL/TLS. For a description of the OpenSSL API afaik the
book from Viega et al. is still the most detailed book, despite being
somewhat outdated.

For newer versions of TLS (i.e. 1.1 and beyond) one should check newer
TLS books, e.g. the ones from Joshua Davies or Rolf Oppliger. Until now
i had none of the two books in my hands so i can't you tell more about
the books, but maybe a visit at Amazon or similar book traders will give
you at least a detailed content description.

Ciao,
Richard
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Question on OpenSSL encryption

Ashok C
Thanks Richard,

What I am looking would be any good book which gives details about SSL communication like use of certificates, verification of certificates, APIs to examine certificates, certificate revocation concepts/SSL APIs for that, etc.

Regds,
Ashok

2012/1/9 Richard Könning <[hidden email]>
Am 09.01.2012 13:10, schrieb Ashok C:

Hi,

In addition to the online material, are there any good books which we
can refer to understand openSSL better? Both conceptually as well as
from the API/code perspective.
We hear of the "Network Security with OpenSSL by John Viega" as one good
reference. But it was published in 2002. Any good new books which can be
used?

Well, the questions of the original poster weren't OpenSSL specific, but targeted SSL/TLS in general, for this Eric Rescorla's book "SSL and TLS: Building and Designing Secure Systems" is the better book. Sadly being from the year 2000 it is somewhat outdated too, but nevertheless a good introduction to SSL/TLS. For a description of the OpenSSL API afaik the book from Viega et al. is still the most detailed book, despite being somewhat outdated.

For newer versions of TLS (i.e. 1.1 and beyond) one should check newer TLS books, e.g. the ones from Joshua Davies or Rolf Oppliger. Until now i had none of the two books in my hands so i can't you tell more about the books, but maybe a visit at Amazon or similar book traders will give you at least a detailed content description.

Ciao,
Richard

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Question on OpenSSL encryption

Mohan.Radhakrishnan

I have struggled with SSL/TLS in the past.

 

Good list of books. I checked amazon’s table of contents and it looks like Joshua Davies has written a more comprehensive book with lots of code. Clearly it seems to me to be a better book with good reviews.

 

Rolf Oppliger’s book is more than twice the cost of the former and did not seem to have code. The former seems to be more technical than the latter.

 

I would like to buy Davies. Neither is specifically about OpenSSL.

 

Anybody agree ?

 

Thanks,

Mohan

 


From: owner-[hidden email] [mailto:owner-[hidden email]] On Behalf Of Ashok C
Sent: Monday, January 09, 2012 8:15 PM
To: [hidden email]
Cc: [hidden email]
Subject: Re: Question on OpenSSL encryption

 

Thanks Richard,

What I am looking would be
any good book which gives details about SSL communication like use of certificates, verification of certificates, APIs to examine certificates, certificate revocation concepts/SSL APIs for that, etc.

Regds,
Ashok

2012/1/9 Richard Könning <[hidden email]>

Am 09.01.2012 13:10, schrieb Ashok C:

 

Hi,

In addition to the online material, are there any good books which we
can refer to understand openSSL better? Both conceptually as well as
from the API/code perspective.
We hear of the "Network Security with OpenSSL by John Viega" as one good
reference. But it was published in 2002. Any good new books which can be
used?

 

Well, the questions of the original poster weren't OpenSSL specific, but targeted SSL/TLS in general, for this Eric Rescorla's book "SSL and TLS: Building and Designing Secure Systems" is the better book. Sadly being from the year 2000 it is somewhat outdated too, but nevertheless a good introduction to SSL/TLS. For a description of the OpenSSL API afaik the book from Viega et al. is still the most detailed book, despite being somewhat outdated.

For newer versions of TLS (i.e. 1.1 and beyond) one should check newer TLS books, e.g. the ones from Joshua Davies or Rolf Oppliger. Until now i had none of the two books in my hands so i can't you tell more about the books, but maybe a visit at Amazon or similar book traders will give you at least a detailed content description.

Ciao,
Richard


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [hidden email]
Automated List Manager                           [hidden email]

 

DISCLAIMER:
==========================================================================================================================================================
The information contained in this e-mail message may be privileged and/or confidential and protected from disclosure under applicable law. It is intended only for the individual to whom or entity to which it is addressed as shown at the beginning of the message. If the reader of this message is not the intended recipient, or if the employee or agent responsible for delivering the message is not an employee or agent of the intended recipient, you are hereby notified that any review, dissemination,distribution, use, or copying of this message is strictly prohibited. If you have received this message in error, please notify us immediately by return e-mail and permanently delete this message and your reply to the extent it includes this message. Any views or opinions presented in this message or attachments are those of the author and do not necessarily represent those of the Company. All e-mails and attachments sent and received are subject to monitoring, reading, and archival by the Company.
==========================================================================================================================================================