jsse api university of palestine eng. wisam zaqoot april 2010

23
JSSE API JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Upload: claire-snow

Post on 24-Dec-2015

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JSSE APIJSSE API

University of Palestine Eng. Wisam ZaqootApril 2010

Page 2: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Secure Sockets Layer (SSL)

Secure Sockets Layer (SSL) Invented by Netscape and made public domain

for everyone’s use An additional layer to the TCP/IP stack that sits

between the Application and Transport layers ensures that all application data is encrypted but TCP/IP

headers are not usually run on port 443 (default HTTPS port)

Page 3: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Digital Certificates

Digital Certificates issued by a trusted disinterested third party (ex.

VeriSign) the Certificate contains the public-key for the

specific Web Server and a digital signature of the certifying authority

Page 4: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Secure Sockets Layer (SSL)

Once a secure session is established the source requests the destinations certificate ( sent in the http header (unencrypted))

once the source accepts the authenticity of the certificate it uses the public-key from the certificate to encrypt the generated session key for protecting the conversation between the source and destination.

its done this way to speed up overall communications, strong encryption (slow) is used as little as possible while weaker encryption is used for most exchanges

actual cipher algorithms are negotiated on a per-session basis

Page 5: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Security packages in Java

Separate packages that are included as part of JDK: JCE - Java Cryptography classes JAAS - Java Authentication and Authorization

Services Java GSS API - Java Generic Security Services API Java Certification Path API JSSE - Java Secure Sockets Extension

Page 6: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JCE

JCE covers encryption and decryption

symmetric bulk encryption, such as DES, RC2, and IDEA

Symmetric stream encryption, such as RC4 Asymmetric encryption, such as RSA Password-based encryption (PBE)

key agreement Message Authentication Code (MAC)

Page 7: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JAAS

JAAS provides for the authentication of users and the authorization of tasks based upon that authentication

Previously, anyone authenticated had access to the same security restrictions. Now, you can control what tasks are available for a specific authenticated user

requires modification of security policies

Page 8: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Java GSS-API

adds Kerberos V5 support to the Java platform. Kerberos originated at the Massachusetts Institute

of Technology (MIT) as project Athena back in 1987. Essentially, a network authentication protocol.

Defined in RFC 1510 from 1993 biggest draw is not having to send passwords over the net. offers single sign-on within one domain -- if everything

within the domain has been Kerberos-enabled. support is also provided for single sign-on across different

security realms over a network. Used in conjunction with JAAS, once a user's identity is

established, future authentication requests are no longer necessary.

Page 9: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Java Certification Path API Certification Path API provides classes for building and validating certificate

chains, an important requirement of a Public Key Infrastructure (PKI). These certificates provide for the storage of security keys for users. By

trusting the issuer of a certificate that holds the keys, and trusting the issuer of the certificate that trusts the original certificate, you establish chains of trust

Building and validating certification paths is an important part of many standard security protocols, such as SSL/TLS, Secure/MIME (S/MIME), and IP Security (IPsec).

certification path from a most-trusted CA to the target subject (Ali)

Page 10: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JSSE

Provides support for communications using SSL (Secure Sockets Layer)

and TLS (Transport Layer Security)

commonly thought of as HTTPS

part of javax.net

SSL (and thus HTTPS) permits encrypted traffic to be exchanged between

the client and server. After an SSL client initiates a conversation with an SSL server, the server sends an X.509

certificate back to the client for authentication. The client then checks the validity of the

certificate. Assuming the server is verified, the client generates a session secret key. After

some basic handshaking, the encrypted exchange can commence.

The JSSE library hides these inner workings of the SSL protocol from you.

Page 11: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JSSE API

Page 12: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

JSSE API JSSE encompasses many of the same concepts and algorithms as

those in JCE but automatically applies them underneath a simple stream socket API.

JSSE includes many important features. For example: it is implemented in 100% Pure Java. It provides API support and an implementation for TLS version 1.0 and

some SSL versions. I It includes classes that can be instantiated to create secure channels

(SSLSocket and SSLServerSocket). It provides support for Hypertext Transfer Protocol (HTTP) encapsulated

in the SSL protocol (HTTPS), which allows access to data such as web pages using HTTPS.

It provides support for several cryptographic algorithms commonly used, including, RSA, DES, Triple DES and many others, with the ability that third parties provide additional cryptographic algorithms.

JSSE API includes factories for creating sockets, server sockets, SSL sockets, and SSL server sockets. Using socket factories you can encapsulate socket creation and configuration behavior.

Page 13: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

keytool

keytool – command line utility organizes key material into keystores one keystore file for each entity initially keystore contains the public/private

key pair and a self-signed certificate allows storage of trusted certificate entries and

trusted certificate chains

Page 14: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Simple JSSE example

Next, we will see a simple JSSE example. This example is about a client and a server

who want to communicate securely. The client sends his username and password

to the server over a secure communication. The server will decrypt the received data, process it, and sends the login result to the client again over a secure communication.

Page 15: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

The server:

Page 16: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

The server (contd.)

Page 17: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

The client

Page 18: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

The client (contd.)

Page 19: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Running the example Enabling SSL requires that LoginServer uses a certificate that

LoginClient trusts. To generate a keystore and a certificate for this purpose we have to use one of the Java powerful tools called Keytool as follows:

keytool -genkey -alias OurKeys -keystore OurStore keytool -export -alias OurKeys -keystore OurStore -file admin.cer

- The first line generates public and private key pair, ' OurKeys ' is the alias for the public and private key pair. The alias simply identifies a particular public and private key pair for later use. These data will be stored in a keystore called 'OurStore'. You will be asked for some identification data like your name, organization and address.- The second line uses the public and private key pair to create a certificate file called 'admin.cer'.

Page 20: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Running the example

On the client side, this certificate should be imported by clients into their trusted keystores in order to enable them to use this certificate to validate the server's signature. This is done by client using the command:

keytool -import -alias mycer -file admin.cer -keystore trust

Page 21: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Running the example

Next, launch LoginServer and specify the keystore that contains the LoginServer's certificate as follows:

java -Djavax.net.ssl.keystore = OurStore -Djavax.net.ssl.keyStorePassword = password LoginServer

where password is the password we specified for ' OurStore ' keystore.

Page 22: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Running the example

Now we have to launch the LoginClient and specify the truststore for that client. The truststore contains certificates that the client trusts for the purpose of digital signature validation. For simplicity in this example, we will use the client's keystore 'trust' we created above as the truststore of the client. In real world, the client's truststore should contain trusted certificates such as certificates from CAs . launching the client is done as follows:

java -Djavax.net.ssl.trustStore = trust -Djavax.net.ssl.trustStorePassword =

password LoginClient

Page 23: JSSE API University of Palestine Eng. Wisam Zaqoot April 2010

Running the example

The execution of the program with correct and incorrect input