Learning Network Security with SSL
The OpenSSL Way
                      Shalendra Chhabra
                     schhabra@cs.ucr.edu.
              Computer Science and Enginering
              University of California, Riverside
                 http://www.cs.ucr.edu/schhabra
Slides Available from http://www.cs.ucr.edu/s chhabra/scale05.pdf
                                             SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.1/23
       Cryptography and Its Goals
   Confidentiality (secrecy)
   Integrity (anti-tampering)
   Authentication
   Non-repudiation
   Snooping (passive eavesdropping)
   Tampering
   Spoofing
   Hijacking
   Capture-replay
                                       SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.2/23
      Crytographic Algorithms
   Symmetric Key Encryption: DES, 3DES, AES, IDEA, BLOWFISH: Faster
   Public Key Encryption: Diffie Hellman (1976, New Directions in
    Cryptography), RSA, DSA: Slower
   Cryptographic Hash Functions : MD2, MD5 (16 byte), SHA (20 bytes):
    One Way, Fixed Output, Collision Free
   HMAC: Message Authentication Codes based on Hash Functions
    are called HMAC
   Digital Signatures: Hash signed with the Private Key
                                              SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.3/23
A Glimpse of How Transactions in ECommerce Work
(Generally)
                           SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.4/23
http and https - Watch this "Lock"!
                                      SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.5/23
       Secure Socket Layer and Transport Layer Security
   History and Versions: SSL/TLS
    Developed by Netscape, 1996 and then served as a basis for TLS, an IETF
    standard protocol
   TLS 1.1 - RFC 2246 12/2004, Expires 06/2005
   SSL v 3.0 - Internet Draft Expires 9/96
   https: HTTP Over TLS: RFC 2818
   Early Weak Keys
    Earlier a restriction of 40-bit keyspace small enough to be broken by Brute Force
    Search. Modern implementations use 128-bit (or longer) keys for symmetric key
    ciphers.
                                                       SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.6/23
Protocol Stack with TLS
                          SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.7/23
Flow of Application Data Through The Stack
                                SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.8/23
       Architecture of TLS v 1.1
   TLS Handshake Protocol
   TLS Record Protocol
   TLS Change Cipher Spec Protocol
   TLS Alert Protocol
                                      SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.9/23
Message Flow for a Full Handshake
                               SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.10/23
Message Flow for a Full Handshake
                               SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.11/23
Digital Signature
                    SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.12/23
        Format of ClientHello and ServerHello
struct { ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites<2..216  1 >;
CompressionMethod compression_methods<1..2 8  1 >;
} ClientHello;
struct { ProtocolVersion server_version;
Random random;
SessionID session_id;
CipherSuite cipher_suite;
CompressionMethod compression_method;
} ServerHello;
                                                 SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.13/23
Format of an X509 certificate
                                SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.14/23
       OpenSSL
   Go to www.openssl.org
   Click on Source on the left
   Download the latest version of openssl:Oct 25 13:44:48 2004 openssl-0.9.7e.tar.gz
   As su install $tar -zxvf /usr/local/openssl-0.9.7e.tar.gz
   $cd /usr/local/openssl-0.9.7e
   $./configure
   $make
   $make install
   $openssl version
                                                         SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.15/23
       Command Line Interface
   Configuration Files
    ca,req, x509
   Format of the OpenSSL Configuration File:
    Organized in Sections and Each section contains a set of keys and each key has
    an associated value
   cat /usr/share/ssl/openssl.cnf
   openssl dgst -sha1 file.txt
   openssl sha1 -out digst.txt file.txt
   openssl enc -des3 -salt -in file.txt -out ciphertext.bin
   openssl bf-cfb -salt -in file.txt -out ciphertext.bin -pass
    env: HOME
   openssl base64 -in ciphertext.bin -out base64.txt
   openssl dhparam -out dhparam.pem -2 1024
   openssl dhparam -in dhparam.pem -noout -C
   openssl dsaparam -out dsaparam.pem 1024
   openssl genrsa -out rsaprivatekey.pem -passout pass:test
    -des3 1024
                                                    SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.16/23
      Creating a Self-Signed Root Certificate
   openssl req -x509 -newkey rsa -out cacert.pem -outform PEM
   cat cacert.pem
   openssl x509 -in cacert.pem -text -noout
                                         SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.17/23
          Writing some Client Server Programs using OpenSSL in C
   $cd /usr/local/openssl-0.9.7e/demos/ssl
   $ls
   $serv.cpp cli.cpp
   Compile Server i.e. serv.cpp
   $g++ -c serv.cpp
    or
   $g++ -I/usr/local/include -c serv.cpp
   $g++ serv.o -lssl -o servertest
    or
   $g++ serv.o /usr/local/lib/libssl.a /usr/local/lib/libcrypto.a -o servertest
   Compile Client i.e. cli.cpp in the same manner
   Wait we need Server Certificate and Private Key
   $openssl req -x509 -newkey rsa -out cert.pem -outform PEM
   $ cat cert.pem privkey.pem  foo-cert.pem
   $./servertest
   $./clientest
   $ Run SSLDump                                          SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.18/23
           SSLDump and SSLSniffer
$openssl s_client -connect www.paypal.com:443
$ssldump -i eth0 port 443
New TCP connection 1: 192.168.1.103(32952) <-> 206.65.183.42(443)
1 1 0.0834 (0.0834) C>S Handshake
ClientHello
Version 3.1
resume [32]=
23 22 00 00 b9 8d c0 23 0e fe 0d cb b4 c8 89 e9
8e 8c 14 da e4 d5 2d 0a 56 ed c5 61 11 48 4a 84
cipher suites
Unknown value 0x39
Unknown value 0x38
Unknown value 0x35
Unknown value 0x33
Unknown value 0x32
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
2 3 0.1954 (0.0000) S>C ChangeCipherSpec
2 4 0.1954 (0.0000) S>C Handshake
2 5 0.1984 (0.0029) C>S ChangeCipherSpec
2 6 0.1984 (0.0000) C>S Handshake
                                                   SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.19/23
2 7 0.1984 (0.0000) C>S application_data
2 8 0.2955 (0.0970) S>C application_data
       Security Analysis of SSL Protocol
   Version Rollback Attack
   Attacks on Handshack Protocol
   If using Public Key Crytography (Diffie Hellman) Man in the Middle Attack
   Analysis of the SSL 3.0 Protocol, D. Wagner and B. Schneier
    The Second USENIX Workshop on Electronic Commerce Proceedings, USENIX
    Press, November 1996, pp. 29-40.
                                                      SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.20/23
"Network Security with OpenSSL"
                              SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.21/23
"SSL and TLS: Designing and Building Secure Systems"
                               SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.22/23
      References
1. SSL 3.0 Specification: http://wp.netscape.com/eng/ssl3/
2. OpenSSL: http://www.openssl.org
3. SSLDump: http://www.rtfm.com/ssldump/
4. Network Security With OpenSSL by John Viega, Matt Messier and Pravir Chandra
5. Slides available from http://www.cs.ucr.edu/ schhabra/scale05.pdf
                                                      SCALE 05: Southern California Linux Expo 2005, LA, 02-13-2005  p.23/23