Security is
- Declarative Security
- Programmatic Security
KEY FEATURES
Integrity
Authentication
Confidentiality
Non-Repudiation
Authorization
2. Confidentiality: Only the Intended Receiver of Information Shall Be Able to Understand the Information
3. Authentication: Mechanism to Ensure, the Virtual Identity Claimed Shall Match With Actual Person
4. Authorization: Allowing User Access to Information According to His/her Role
5. Non-repudiation: the Sender/receiver Can Not Deny Their Signature on the Sent Document
APIS
- Data Integrity: Jce
- Confidentiality : ssl[basic | Digest | Self Signed| Cert- X09| Third Party
- Authentication and Autherization : JAAS [ldap|db|kerberos|ntlm]
- Non-repudiation : Jce |digital Signatures
Characteristics of application security.
- Authentication - Authentication is
the means by which a user or client proves to a server that it is authorized to
access a specific resource and vice-versa.
- Authorization - Authorization is
the means by which a server determines if a user has permissions to access a
specific resource or data.
- Data Integrity - Data integrity
means that the data that is exchanged by a client and server is not modified by
an unauthorized third party.
- Confidentiality or Data privacy - This ensures that information is send to only those users or clients that are authorized to access the data.
- Non-repudiation - This means that
you can prove that a transaction or action has occurred. So a user who has
performed a certain action, cannot deny doing so.
Security Mechanism
What are Realms, Users, Groups and Roles ?
- Application-Layer Security - provided by the component containers
- Transport-Layer Security - Secure Sockets Layer (SSL)
- Message-Layer Security -Message-Layer security secures the SOAP messages that are exchanged between client and server using XML web services.
- Realms [a field or domain of activity or interest.]- Realms are security domains or protection spaces setup for web or application servers. Each realm has its own authentication scheme and contains a collection of Users and Groups.
- Users - Users are individual or application entities defined in an identity store that access the application resources.
- Group - Groups are abstract entities defined in Java EE that contains a set of users having common traits.
- Roles - Roles are are abstract entities defined in Java EE that has permission
- to access a set of secured resources in an application.
- Users or Groups are mapped to Roles.
JAAS
JAAS can simplify your Java security development by putting an abstraction layer between your application and disparate underlying authentication and authorization mechanisms. This independence from platforms and algorithms allows you to use different security mechanisms without modifying your application-level code. As with most Java security APIs, JAAS achieves this implementation-independence through an extensible framework of pluggable service provider interfaces (SPIs): a set of abstract classes and interfaces to which specific implementations are developed. JAAS can perform both authentication and authorization. Using JAAS authentication from your application typically involves the following steps:
FLOW OF EXECUTION: Any class that implements javax.security.auth.callback.CallbackHandler interface. javax.security.auth.callback.
CallbackHandler has only one method which we can use to provide a password for a given identifier. These passwords may be retrieved from a database, from a protected configuration file or the password callback handler may even delegate this functionality to some other component within the application like a user manager component, where the user management functionality is centralized.
----------------------------------------------------------------------------------------------------------------------
-->
- JAAS protects the system from users by allowing or denying access based upon who or what runs the program.
- javax.security.auth.callback.CallbackHandler interface. javax.security.auth.callback
JAAS can simplify your Java security development by putting an abstraction layer between your application and disparate underlying authentication and authorization mechanisms. This independence from platforms and algorithms allows you to use different security mechanisms without modifying your application-level code. As with most Java security APIs, JAAS achieves this implementation-independence through an extensible framework of pluggable service provider interfaces (SPIs): a set of abstract classes and interfaces to which specific implementations are developed. JAAS can perform both authentication and authorization. Using JAAS authentication from your application typically involves the following steps:
Steps to create
ü Create a LoginContext
ü Optionally pass a CallbackHandler to the LoginContext, for gathering or processing authentication data
ü Perform authentication by calling the LoginContext's login() method
ü Perform privileged actions using the returned Subject (assuming login succeeds) Underneath the covers, a few other things occur:
During initialization,
ü the LoginContext finds the configuration entry "MyExample" in a JAAS configuration file (which you configured) to determine which LoginModules to load (see Figure 2)[JAAS.CONF]
ü During login, the LoginContext calls each LoginModule's login() method
ü Each login() method performs the authentication or enlists a CallbackHandler
The CallbackHandler uses one or more Callbacks to interact with the user and gather input
A new Subject instance is populated with authentication details such as Principals and credentials
FLOW OF EXECUTION: Any class that implements javax.security.auth.callback.CallbackHandler interface. javax.security.auth.callback.
CallbackHandler has only one method which we can use to provide a password for a given identifier. These passwords may be retrieved from a database, from a protected configuration file or the password callback handler may even delegate this functionality to some other component within the application like a user manager component, where the user management functionality is centralized.
ü Optionally pass a CallbackHandler to the LoginContext, for gathering or processing authentication data
ü Perform authentication by calling the LoginContext's login() method
ü Perform privileged actions using the returned Subject (assuming login succeeds) Underneath the covers, a few other things occur:
During initialization,
ü the LoginContext finds the configuration entry "MyExample" in a JAAS configuration file (which you configured) to determine which LoginModules to load (see Figure 2)[JAAS.CONF]
ü During login, the LoginContext calls each LoginModule's login() method
ü Each login() method performs the authentication or enlists a CallbackHandler
The CallbackHandler uses one or more Callbacks to interact with the user and gather input
--> A new Subject instance is populated with authentication details such as Principals and credentials----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
JCE
4.WHAT ARE TWO TYPE OF CRPTYOGRAPHIC ALGORITHMS ?
|
·
SYMMETRIC
·
ASYMMETRIC
|
5.WHAT IS CIPHER ?
|
A cipher (or cypher) is an algorithm for performing encryption or
decryption.
|
6.WHAT IS CIPHER TEXT ?
|
ciphertext or cyphertext is the result of
encryption performed on plaintext using an algorithm,
|
7.WHAT IS CODE BOOK
|
A codebook contains a lookup table for coding and decoding; each word or
phrase has one or more strings which replace it. To decipher messages written
in code, corresponding copies of the codebook must be available at either end
|
8. WHAT ARE BLOCK CIPHERS?
|
Encryption algos that encrypts block of
data of fixed size
|
9.WHAT ARE STREAM CIPHER ?
|
Which uses
encrypts ciphers inconsistent sizes
|
10. WHAT ARE initialization vectors ?
|
·
An initialization vector (IV) or starting variable (SV)[5] is a block of bits that is used
by several modes to randomize the encryption and hence to produce
distinct ciphertexts even if the same plaintext is encrypted multiple times,
without the need for a slower re-keying process.[6]
·
An initialization vector has different security requirements
than a key, so the IV usually does not need to be secret. However, in most
cases, it is important that an initialization vector is never reused under
the same key
·
|
11.WHAT ARE SYMMETRIC ALGORITHMS?
|
ü ONLY ONE KEY IS USED TO
PRODUCE/COMSUME A CIPHER
ü FASTER
ü MAINTAINING SECRECY OF
KEYS
SOME SYMMETRIC KEY ALGORITHMS
DES( Data-Encryption-Standard).. developed in 1970 and recommended by US
government. Though it is not fool-proof, it is considered to be
sufficiently safe and is in wide use. It has different modes of
operation.
ü Electronic
Cook book ( ECB)
ü Cipher Block
Chaining ( CBC)
ü Output Feedback
Mode (OFB)
ü Cipher Feedback
Mode ( CFB)
TripleDES( also known as
DESede). An improved and very safe method of DES.
IDEA:INTERNATIONAL DATA ENCRYPTION ALGORITHM
(International Data
Encryption Algorithm). This is used in PGP ( Pretty-Good-Privacymethod
of secure Email).
An important advantage of Secret-key
algorithm is that a hardware-approach is possible. This results in very high
speed encryption. The hardware implementation by a VLSI chip can be about 20
times faster than the corresponding software implementation!IDEA has been
implemented in hardware.
Blowfish… This algorithm was designed by Bruce
Schneier. It is not patented and he has placed the implementation in
public domain.
Password-Based Encryption(PBE). We will have a brief description of this method ,
with code example, shortly. Ready-made implementations for many of these
algorithms are available in SunJCA/JCE
and the programmer just chooses the desired algorithm and uses it. No deep
knowledge of the mathematical theory of the algorithms or how these
algorithms are implemented ,is required .Such topics are highly mathematical
and are dealt with inbooks on Cryptography .
|
9. WHAT ARE ASYMMETRIC ALGORITHMS/PUBLIC KEY ALGORITHMS?
|
This algorithm is also known as ‘Public Key’
algorithm. There are two keys in this scheme. One key is known as ‘public
key’ and the other key is known as ‘private key’.(It should be noted that
‘secret key’ does not mean ‘private key’.)
The basic theory of Public key Cryptography was
developed by two research workers at StanfordUniversity Diffie&Hellman in
1976. The DH algorithm is known as Key-Agreement method. RSA algorithm is an implementation , named after the initials of the three academics
who invented it. ( Rivest,Shamir & Adleman).RSA is the defacto
standard.Another Asymmetric algorithm isDSA
( Digital
Signature Algorithm). Yet another algorithm is known as
ECC(Elliptic-Curve Cryptography). It is reputed to be very efficient and
fast.[ However,
SunJCA/JCE does not provide ready-made implementation for ECC.]
The public key
and private key are known as ‘keypair’.The public key and private key are
mathematically related in the sense that if a message is encrypted by using a
particular public key, it can be decrypted by the corresponding private key
and vice-versa(ie) the data can
also be encrypted by using a private key and can
be decrypted by the corresponding public key, and not by any other public
key. But
the problem is that any person who knows Sam’s
public key can decrypt the message. So, RSA system uses public key of the
recipient to encrypt the data.( But, the private key cannot be derived from
public key. Similarly, the public key cannot be derived from private key).
RSA method is the most widely used scheme. When
Sam wants to send a secret message to Tom, he should know the public key of
Tom to begin with.( Just as we should know the mail-id of our friend first,
if we want to send email to him). Samencrypts the message by using
Tom’spublic keyand sends it to Tom.At the receiving end, Tom uses his
(Tom’s)private key and decrypts the letter and reads it.The advantage of this
scheme is that it ensures that only Tom will be able to read the message, as
only his private-key can decrypt the message encrypted with his public key.A
person’s private key need never be known to anyone else and there is no
sharing the key with another person.Only the public key needs to be informed to others. ( like the
difference in sharing our mail-id and sharing our password!).Thus
key-administration problem is less.
|
12.WHAT ARE DIGITAL SIGNATURES?
|
The Asymmetric system has another use as well. It
can be used for creating the Digital Signature, to ensure that the message
came from Sam.Though the message itself can be signed without creating a
digest, the usual method is to sign the messagedigest,so that Integrity of
data also can be ensured.
|
13.HOW IS NON REPUDIATION ENSURED?
|
THROUGH DIGITAL SIGNATURES
|
14.WHAT ARE MESSAGE DIGEST?
|
A ‘Message Digest’ isa digital fingerprint.It
isoften referred to simply as a digest ( summary) or hash. It is an one-way
process ( ie) it is impossible to reconstruct the original from the hash
|
15.WHAT ARE MESSAGE DIGESTING ALGORITHMS ?
|
WHICH PRODUCES MESSAGE
DIGESTS
ü MD5
ü SHA-1
TO
SECURE A MESSAGE YOU NEED TO PASS IT THROUGH
Using the same oneway hash algorithm on the text message, Tom
creates another hash(hash2).If hash2exactly matches hash1, it means that the
data has not been altered in transit. Thus, we get assurance of
Confidentiality and Data Integrity.
It also ensures the identity of the sender, because the the hash1 was obtained by
using the public key of Sam to decrypt the package.
|
16.WHAT ARE DIGITAL CERTIFICATES ?
|
Just now , we saw that Tommade use of Sam’s
public key to verify his Digital Signature. How does Tom getto know the
public key of Sam?Sam could have published his public key in the internet or
could have sent it to Tom, personally. A person’s public key can be freely
published and shared and for this reason, anybody can use it , not
necessarily Sam. A Digital signature of Sam can be verified only if Sam’s
public key is available to Tombut as it is a public key, impersonation is
possible. A trusted
third-party is required to certify that the said key is really Sam’s public
key.This is known as Digital Certificate and the authorities who issue such
certifictes are Certifying Authority.
|
17. WHAT ARE Public Key Infrastructure( PKI)?
|
When Sam wants his public key to be certified by a
CA, he generates a keypair and sends the public key to an appropriate CA with
some proof of his identification. The CA checks the identification and then
after satisfying that the key has not been modified in transit, issues a
certificate relating the public key of Sam with his identity,by signing the public
key of Sam with the private key of the CA. The standard format of issuing the certificate is known
as X509.
Who is to attest the CA themselves? The CA are
self-attested.
The PKI standard has been developed by RSA Security Systems in collaboration with
Industry leaders like SUN, IBM and Microsoft and is the industry standard.
|
18. WHAT IS CERTIFICATE REVOCATION?
|
A certificate becomes invalid after the expiry of
validation period. Sometimes,
the private key associated with a public key gets compromised (ie) exposed,
and in that case also, the cerificate should be withdrawn( revoked).The
owner of the privatekey also may like to change it.The CA publishes a list of
such defunct certificates and Tom should verify that Sam’scertificate is
still valid, before important transactions.
|
19. WHAT IS MAC ? MESSAGE AUTHTICATION CODE/SECRET
KEY ALGORITHM ?
|
Digital
Signature makes use of Sam’s private key to sign the hash. An alternative to
Digital Signature is to use a secret key to encrypt the hash. By its very
definition, secret key is common to both Sam & Tom. So Tom can use the
secret key at his end and get back the hash.
The code thus generated by mixing the hash and the
secret key is known as MAC. Digital Signature is better than MAC because it
does not need any ‘secret’ key. In the context of E-Commerce, where there are
thousands of parties , secret key administration is always very difficult.
The scheme outlined above is suitable for most
purposes. However, for very large amounts of data, encryption and decryption
of databy public-key systems becomestime consuming and requires large
resources.
In such cases, it is preferred to use Symmetric
Encryption systems with some modifications. Hybrid Systems make use
ofAsymmetric method for agreeing upon a secret key and the actual encryption
and decryption of data is done by this secretkey.Some such methodis the usual
Industrial practice. The Secret keyused here is valid only for a particular
instance of transmission of message and so is usually called ‘session-key’. (
This is not the ‘session’ as usually understood in servlets, because this is
an one-time operation).
|
20.WHAT IS DIGITAL ENVOLPE ?
|
An illustration of Hybrid method is a Digital
Envelope. In this scheme, Sam encrypts the message by a random Secret key, (
known as DEK i.e.Data-Encryption-keyor session key).Next Sam encrypts this
session key with Tom’s public key. At this stage, Sam sends both the
encrypted message and the encrypted session key to Tom.
At the receiving end, Tom uses his private key to
get the session key. Using this session key, Tom decrypts the message.As
Symmetric method is about 1000 times faster thanAsymmetric method , this is a
good combination. Though public key method also has been used here, it is
only for encrypting the session key and not the message.This can be further
improved by creating a hash of the message and sigining it. Also, there is no
permanent Secret key betweenSam & Tom,and the required secret key is
produced just as required and then discarded after the job. Thus, the method
is fast and secure.
With this background information, let us now see
some simple code examples,specific to JDK.
There are a number ofCryptographic Engines in
SunJCA & SunJCE. They are listed below. It will be immediately evident
that the names will beGreek & Latin to us , unless we have a background
in Crypto terminology. That is why, a broad outline was given. The function
of some of the engines will be evident from the earlier discussion. A few
more of the remaining items will be clear when we deal with code examples.
|
21.WHAT ARE CRYPTOGRAPHIC ENGINES ?
|
1.
KeyGenerator(
symmetric) (Blowfish, DES,TripleDES,HmacMD5, HmacSHA1,RC5)
2.
KeyPairGenerator(
asymmetric) (DiffieHellman, DSA, RSA)
3.
Mac ( message
authentication code) HmacMD5, HmacSHA1)
4.
MessageDigest (MD5,SHA1)
5.
Signature (MD5withRSA, SHA1withRSA,
SHA1withDSA)
6.
Cipher (
Blowfish, DES, TripleDES etc)
7.
CertificateFactory (
X509)
8.
KeyAgreement(
DiffieHellman)
9.
KeyFactory
10.
SecretKeyFactory
11.
SecureRandom (
SHA1PRNG) (ie) ( SHA1 ..pseudo-random-number-generator)
12.
TrustManagerFactory
13.
KeyManagerFactory
14.
KeySore ( JKS,
PHCS12)
15.
SSLContext
16.
AlgorithmParameterGenerator
17. AlgorithmParameters
|
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
|
/**
* encrypts the
source data
*
* @param
keyToEncrypt
* @param
sourceTextData
* @return
*/
public static String encrypt(String keyToEncrypt,
String sourceTextData) {
String encryptedData = null;
if (sourceTextData != null) {
try {
Security.addProvider(new
com.sun.crypto.provider.SunJCE());
// Create an array to hold the key
byte[] byteKeyToEncrypt =
null;
if (keyToEncrypt != null)
{
byteKeyToEncrypt =
keyToEncrypt.getBytes(ASCII);
}
else {
// handle with defaultKey
byteKeyToEncrypt =
DEFAULT_MAGMA_ENCRYPTED_KEY.getBytes(ASCII);
}
// Create a DESede key spec
from the key
DESedeKeySpec spec = new
DESedeKeySpec(byteKeyToEncrypt);
// Get the secret key factor
for generating DESede keys
SecretKeyFactory keyFactory =
SecretKeyFactory.getInstance(SECRET_KEY_DESEDE);
// Generate a DESede SecretKey
object
SecretKey theKey =
keyFactory.generateSecret(spec);
// Create a DESede Cipher
Cipher cipher =
Cipher.getInstance(CIPHER_TRANSFORMATION, CIPHER_KEY_PROVIDER);
// Initialize the cipher and
put it into encrypt mode
cipher.init(Cipher.ENCRYPT_MODE,
theKey, IvParameters);
byte[] bytePlainText =
sourceTextData.getBytes(ASCII);
// Encrypt the data
byte[] encryptedBytes =
cipher.doFinal(bytePlainText);
if (encryptedBytes != null) {
BASE64Encoder
base64Encoder = new BASE64Encoder();
encryptedData =
base64Encoder.encode(encryptedBytes);
}
} catch (Exception e) {
throw new
EHRuntimeException(e);
}
}
return encryptedData;
}
|
A cipher (or cypher) is an algorithm for performing encryption or
decryption. A codebook contains a lookup table for
coding and decoding; each word or phrase has one or more strings which
replace it. To decipher messages written in code, corresponding copies of the
codebook must be available at either end.Symmetric key algorithms (Private-key cryptography), where the same key is used
for encryption and decryption, and
Asymmetric key algorithms (Public-key cryptography), where two different keys are used for
encryption and decryption. Block ciphers, which encrypt block of data of fixed size, and Stream ciphers, which encrypt continuous
streams of data.ciphertext or cyphertext is the result of encryption performed on
plaintext using an algorithm, An initialization vector (IV) or starting variable (SV)[5] is a block of bits that is
used by several modes to randomize the encryption and hence to produce
distinct ciphertexts even if the same plaintext is encrypted multiple times,
without the need for a slower re-keying process.[6]
An initialization vector has different security
requirements than a key, so the IV usually does not need to be secret.
However, in most cases, it is important that an initialization vector is
never reused under the same key. A block cipher works on units of a fixed
size (known as a block size), but messages come in a variety of lengths. So
some modes (namely ECB and CBC) require that the final block be padded before encryption.The
simplest is to add null bytes to the plaintext to bring its length up to a
multiple of the block size.The purpose of cipher modes is to mask patterns which
exist in encrypted
data.
|
Security: Outh2
No comments:
Post a Comment