CSCI 6962: Server-side Design and Programming

greenpepperwhinnyΑσφάλεια

3 Νοε 2013 (πριν από 3 χρόνια και 7 μήνες)

67 εμφανίσεις

SSL and HTTPS for Web
Communication


CSCI 5857: Encoding and Encryption

Web Security Problems

Major concerns:


Encryption

of sensitive data sent between client and server


Authentication

of server


How does client know who they are dealing with?






Information integrity


How do we know third party has not altered data en route?

Change so item shipped to Darth

Address information

Bob’s web
site

Alice thinks she is at Bob’s site, but
Darth is spoofing it

Bob’s web
site

Certificates


Web sites that deal in ecommerce must have
certificates

for authentication


Installed at
server


Transmitted to
client

for authentication


Validated
by browser using
CA’s public key

Client machine






Browser



Request for
secure session

Server machine










Web Container

(JSP, ASP)

Certificate

signed by CA

CA

Certificates


Public keys stored

in
browser


Can request from

other CAs via public

key infrastructure

as needed

Secure Socket Layer Protocol


Secure Socket Layer

protocol for web communication


Latest upgrade: Transport Layer Security (TLS)


Same structure as SSL, somewhat more secure

SSL Protocol: Phase 1

Phase 1:
Information exchange


Problem: Large number of encryption algorithms in use


How do client and server agree on which to use?


How does client tell server which ones it supports?


SSL Protocol: Phase 1


Client passes
preferred algorithms

to server via
https
request


Public key encryption algorithms


Private key encryption algorithms


Hash algorithms


Compression algorithms


Also random number for key generation



Server replies with algorithms that will be used


Also passes own random number

SSL Protocol: Phase 2

Phase 2:
Server Identification and Key Exchange


Server passes their
certificates

to client


Client uses issuer public key to verify identity


Client retrieves server public key from certificate


Server may pass
chain

of certificates
for authentication

SSL Protocol: Phase 2


If no certificate containing a public key, separate public
key must be passed

Certificate contains RSA
public key, so no
separate key passed

No certificate, so
Diffie
-
Hellman key exchange
parameters passed

SSL Protocol: Phase 2


Server can also request appropriate
client certificates

to
authenticate client


Online banking


Remote access to company database

SSL Protocol: Phase 3

Phase 3:
Client Identification and Key Exchange


Client sends certificate or public key if requested by
server

SSL Key Generation


Client generates “pre
-
master key”


Sends to server encrypted with server public key


Client and server use to generate
master key

used to
create cipher keys


Also use client, server random numbers exchanged in phase 1

SSL Key Generation


SSL Key Generation


SSL Key Generation


Key material used to generate:


Keys for encryption and authentication (MAC)


IV’s for cipher block chaining

Phase 4: Final Handshake

Client and server verify protocols and keys



Sender

signs/encrypts

“finished”

message



Receiver

decrypts/verifies

message to

confirm keys

SSL Data Transmission


Message broken into blocks



Block compressed



Compressed block hashed with
authentication key to get MAC
(message integrity)



Compressed block + MAC
encrypted with cipher key



Encrypted block + record
protocol header with
version/length information sent

SSL Data Transmission


MAC algorithm is modified

HMAC


Two stage hash with secret MAC key inserted at each stage


Values similar to IPAD and OPAD also inserted

Sessions and SSL


Connection:

single transmission between client and server


Session:

set of connections for some purpose


Example: Ecommerce payment session: Credit card, Address, etc.


Often involves same
https

session


Can reuse same keys for all connections in session


Much more efficient than restarting SSL protocol each
connection

Https Protocol


When started, requests
secure session

from server


Uses separate port in some servers


Invokes SSL protocol


Https protocol is
expensive


Should
not

do unless necessary


Once done with secure transactions, should go back to using
non
-
secure

channel


Return to non
-
secure port

Https Protocol