Download Java and Cryptography Basic architecture Basic architecture

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

TV Everywhere wikipedia , lookup

Transcript
Java and Cryptography
Java and Cryptography
COMP 522
Basic architecture
Provider-based architecture:
• JCA and JCE provide a set of classes and interfaces +
factories enabling the creation of objects that conform to
this classes;
• The objects that give functionality are provided by
underlying implementation and are not directly visible to
the developer;
• The collections of classes that provide implementation
objects are called providers
• JCA and JCE have some simple mechanisms to add
providers and to choose specific provider
COMP 522
The cryptographic functionality in Java used to be
split between two different libraries:
• Java Cryptography Architecture (JCA)(tightly
integrated with the core Java API)
• Java Cryptography Extensions (JCE)(many of the
advanced cryptographic operations that were
previously under US export control)
Now they are both shipped with Java SE and this
division is not so obvious or important
COMP 522
Basic architecture
Application
code
JCE/JCA API
JCE/JCA SPI
Classes in
Provider
Provider Internal
Classes
Abstraction
Layer
Service Provider
Interface
Provider
Functionality
COMP 522
1
Design principles of JSA/JSE
•
•
•
•
Algorithm independence
Algorithm extensibility
Implementation independence
Implementation interoperability
COMP 522
JCA engines (cont.)
JCA engines (cont.)
• Certificate factory (creates public key certificates )
• CertPathBuilder (establishes relationship chains
between certificates)
• CertStore (manages and stores certificates)
COMP 522
Engines
Classes in JCA/JCE corresponding to categories of
cryptographic operations are called engines
JCA engines
MessageDigest (produces a hash value for a message)
Signature (produces a digital signature of a document)
KeyPairGenerator (produces a pair of keys)
KeyFactory (breaks down a key into its discrete parts)
SecureRandom (produce random numbers)
AlgorithmParameters (manages the encoding/decoding of the
parameters)
• AlgorithmParameterGenerator (generates a complete set of
parameters required for a given algorithm)
•
•
•
•
•
•
COMP 522
JCE engines
JCE engines
•
•
•
•
•
Cipher (performs encryption/decryption)
KeyGenerator (produces secret keys used by ciphers)
SecretKeyFactory (operates on SecretKey instances)
KeyAgreement (embodies a key agreement protocol )
Mac (message authentication code functionality)
COMP 522
2
Location
• JCA classes are located in java.security package
• JCE classes are located in javax.crypto package
Providers
• SUN provider comes with the JCA
• SunJCE provider comes with the JCE
Third party providers:
• The Legion of the Bouncy Castle
(http://www.bouncycastle.org)
• Cryptix (http://www.cryptix.org)
• …
COMP 522
COMP 522
Small Example: DES encryption
.
.
.
KeyGenerator kg = KeyGenerator.getInstance("DES");
SecretKey key = kg.generateKey();
SecretKeySpec keySpec = new
SecretKeySpec(key.getEncoded(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
String plainText = "This is a secret";
byte[] cipherText = cipher.doFinal(plainText.getBytes());
. . .
COMP 522
3