Dave, All First let me say that I understand the apprehension of helping illegitimate users attempt to compromise another entity's data. I am a software developer that works for a company (www.InsightETE.com) that builds an end to end user experience "data picture" of a given n-tier architecture. This picture is constructed from data that we legitimately collect on behalf of our clients. We now have a need to expand this methodology to include "secured" transactions, we will have the complete resources needed (i.e. How the data is encrypted and potentially any permanent keys and certificates) to implement a solution provided by our client. The application will need to be flexible to support the most common methods for handling secure data transmissions. To that end I was hoping to create a very basic learning "prototype" to determine what is really happening in the openssl libraries and to evaluate any other potential 3rd party solutions. I picked a simple Apache Server and Browser Client running on Port 443 using the local loopback adapter lo as my test configuration. Our current product offering allows us to collect information from the SPAN port and to expose the entire TCP packet for our use. My hope was to somehow "trick" openssl into thinking the data was coming from the Memory BIO (Hence my first example) to allow us to decode the data and re-use some of the existing codebase. My intent when joining the list was to seek guidance of others that may have implemented a similar path in their products and to hopefully avoid any pitfalls and/or gotcha's that could later compromise our codebase or the clients data.
Regards Ed -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of David Schwartz Sent: Wednesday, September 24, 2008 10:18 PM To: openssl-users@openssl.org Subject: RE: Using a memory BIO to decrypt a SSL Stream > Dave,All > I would also like to be able to recreate a "session" by > recording (i.e with TCPDump -w) and playing the databack > Through the proxy? If I understand the remarks below that might > not be possible? > > Thanks > Ed It may or may not be possible, depending on many factors. At a minimum, you need the key used by the server. Some algorithms SSL might use, and applications on top of SSL might use, make it impossible for a non-participant to decrypt the data, even if they have all previously-created keys. For example, consider (grossly simplified): 1) Server creates a temporary RSA public/private key pair. 2) Server signs public key from the temporary RSA key with its normal permanent RSA private key. 3) Server sends temporary public key, signature, and real CA certificate to client. 4) Client verifies signature and certificate, decrypts public temporary RSA key. 5) Client sends something encrypted with the public temporary RSA key. 6) Server decrypts it with the temporary RSA private key. Now, analyzing this later, you would need the temporary RSA key created in step 1 to decrypt the data sent to the client. If that data was part of the symettric key used to protect the session, you are (by design) screwed. Again, what is your outer problem? If it's legitimate, there's probably a way to do it. But there is, by intentional design, no generic way to do this. DS ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED] No virus found in this incoming message. Checked by AVG. Version: 7.5.524 / Virus Database: 270.7.2/1690 - Release Date: 9/25/2008 7:05 AM No virus found in this outgoing message. Checked by AVG. Version: 7.5.524 / Virus Database: 270.7.2/1690 - Release Date: 9/25/2008 7:05 AM ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]