Oracle Advanced Security Administrator's Guide Release 2 (9.2) Part Number A96573-01 |
|
This chapter describes how to configure native Oracle Net Services data encryption and integrity for Oracle Advanced Security. It contains the following topics:
This section describes data encryption algorithms available in the current release of Oracle Advanced Security:
The purpose of a secure cryptosystem is to convert plaintext data into unintelligible ciphertext based on a key, in such a way that it is very hard (computationally infeasible) to convert ciphertext back into its corresponding plaintext without knowledge of the correct key. In a symmetric cryptosystem, the same key is used both for encryption and decryption of the same data. Oracle Advanced Security provides the DES, 3DES, and RC4 symmetric cryptosystems for protecting the confidentiality of Oracle Net Services traffic.
In this release, the new Federal Information Processing Standard (FIPS) encryption algorithm, Advanced Encryption Standard (AES), is supported. AES can be used by all U.S. government organizations and businesses to protect sensitive data over a network. This encryption algorithm defines three standard key lengths, which are 128-bit, 192-bit, and 256-bit. All versions operate in outer Cipher Block Chaining (CBC) mode.
Oracle Advanced Security provides the Data Encryption Standard (DES) algorithm. DES has been a U.S. government standard for many years and is sometimes mandated in the financial services industry. Because it has been a standard for so long, DES is deployed throughout the world for use in a wide variety of applications.
Oracle Advanced Security supports Triple-DES encryption (3DES), which encrypts message data with three passes of the DES algorithm. 3DES provides a high degree of message security, but with a performance penalty--the magnitude of which is dependent upon on the speed of the processor performing the encryption; 3DES typically takes three times as long to encrypt a data block as compared with the standard DES algorithm.
3DES is available in two-key and three-key versions, with effective key lengths of 112-bits and 168-bits, respectively. Both versions operate in outer Cipher Block Chaining (CBC) mode.
The DES40 algorithm, available in every release of Oracle Advanced Security, Oracle Advanced Networking Option, and Secure Network Services, is a variant of DES in which the secret key is preprocessed to provide 40 effective key bits. It was designed to provide DES-based encryption to customers outside the U.S. and Canada at a time when the U.S. export laws were more restrictive. Now, in Oracle Advanced Security Release 2 (9.2), DES40, DES, and 3DES are all available for export. DES40 is still supported to provide backward-compatibility for international customers.
The RC4 algorithm, developed by RSA Data Security Inc., has become the international standard for high-speed data encryption. RC4 is a variable key-length stream cipher that operates at several times the speed of DES, making it possible to encrypt large, bulk data transfers with minimal performance consequences.
Oracle Advanced Security Release 2 (9.2) provides an RC4 implementation with 40-bit, 56-bit, 128-bit, and 256-bit key lengths. This provides backward-compatibility and strong encryption, with no material performance compromise.
Encryption of network data provides data privacy, so that unauthorized parties are not able to view plaintext data as it passes over the network. Oracle Advanced Security also provides protection against two forms of active attack:
This type of attack occurs when an unauthorized party intercepts data in transit, alters it, and retransmits it. For example, if a bank deposit of $100 is intercepted and the monetary amount is to $10,000, and then the higher amount is retransmitted that is a data modification attack.
This type of attack occurs when an entire set of valid data is repetitively retransmitted. For example, if a bank withdrawal of $100 is intercepted and then retransmitted ten times so the final withdrawal amount equals $10,000 then that is a replay attack.
Oracle Advanced Security lets you select a keyed, sequenced implementation of the Message Digest 5 (MD5) algorithm or the Secure Hash Algorithm (SHA-1) to protect against both of these forms of attack. Both of these hash algorithms create a checksum that changes if the data is altered in any way. This protection operates independently from the encryption process--you can enable data integrity with or without enabling encryption.
The secrecy of encrypted data depends upon the existence of a secret key shared between the communicating parties. A key is a secret exclusively shared by parties on both sides of a connection. Without the key, it is extremely difficult (computationally infeasible) to decrypt an encrypted message or to alter a cryptographic-checksummed message without detection. Providing and maintaining such secret keys is referred to as key management.
Secure key distribution is difficult in a multiuser environment. Oracle Advanced Security uses the well known Diffie-Hellman key negotiation algorithm to perform secure key distribution for both encryption and data integrity.
When encryption is used to protect the security of encrypted data, keys must be changed frequently to minimize the effects of a compromised key. Accordingly, the Oracle Advanced Security key management function changes the session key with every session.
The purpose of Authentication Key Fold-in is to defeat a possible third party attack (historically called the man-in-the-middle attack) on the Diffie-Hellman key negotiation. It strengthens the session key significantly by combining a shared secret, known only to the client and the server, with the original session key negotiated by Diffie-Hellman.
The client and the server begin communicating using the session key generated by Diffie-Hellman. When the client authenticates to the server, they establish a shared secret that is only known to both parties. Oracle Advanced Security combines the shared secret and the Diffie-Hellman session key to generate a stronger session key designed to defeat a man-in-the-middle attack.
Note: The authentication key fold-in function is an imbedded feature of Oracle Advanced Security and requires no configuration by the system or network administrator. |
This section describes how to configure Oracle Advanced Security native Oracle Net Services encryption and integrity, and presumes the prior installation of Oracle Net Services.
The network or security administrator sets up the encryption and integrity configuration parameters. The profile on client and server systems using data encryption and integrity (sqlnet.ora file
) must contain some or all of the parameters listed in this section, under the following topics:
See Also:
Chapter 7, Configuring Secure Sockets Layer Authentication, to configure the SSL feature for encryption, integrity, and authentication |
In any network connection, it is possible for both the client and server to each support more than one encryption algorithm and more than one integrity algorithm. When a connection is made, the server selects which algorithm to use, if any, from those algorithms specified in the sqlnet.ora files.
The server searches for a match between the algorithms available on both the client and the server, and picks the first algorithm in its own list that also appears in the client list. If one side of the connection does not specify an algorithm list, all the algorithms installed on that side are acceptable. The connection fails with error message ORA-12650
if either side specifies an algorithm that is not installed.
Encryption and integrity parameters are defined by modifying a sqlnet.ora file on the clients and the servers on the network.
You can choose to configure any or all of the available Oracle Oracle Advanced Security encryption algorithms (Table 2-2), and either or both of the available integrity algorithms (Table 2-3). Only one encryption algorithm and one integrity algorithm are used for each connect session.
To negotiate whether to turn on encryption or integrity, you can specify four possible values for the Oracle Advanced Security encryption and integrity configuration parameters. The four values are listed in the order of increasing security. The value REJECTED provides the minimum amount of security between client and server communications, and the value REQUIRED provides the maximum amount of network security:
The default value for each of the parameters is ACCEPTED.
Select this value if you do not elect to enable the security service, even if required by the other side.
In this scenario, this side of the connection specifies that the security service is not permitted. If the other side is set to REQUIRED, the connection terminates with error message ORA-12650
. If the other side is set to REQUESTED, ACCEPTED, or REJECTED, the connection continues without error and without the security service enabled.
Select this value to enable the security service if required or requested by the other side.
In this scenario, this side of the connection does not require the security service, but it is enabled if the other side is set to REQUIRED or REQUESTED. If the other side is set to REQUIRED or REQUESTED, and an encryption or integrity algorithm match is found, the connection continues without error and with the security service enabled. If the other side is set to REQUIRED and no algorithm match is found, the connection terminates with error message ORA-12650
.
If the other side is set to REQUESTED and no algorithm match is found, or if the other side is set to ACCEPTED or REJECTED, the connection continues without error and without the security service enabled.
Select this value to enable the security service if the other side permits it.
In this scenario, this side of the connection specifies that the security service is desired but not required. The security service is enabled if the other side specifies ACCEPTED, REQUESTED, or REQUIRED. There must be a matching algorithm available on the other side--otherwise the service is not enabled. If the other side specifies REQUIRED and there is no matching algorithm, the connection fails.
Select this value to enable the security service or preclude the connection.
In this scenario, this side of the connection specifies that the security service must be enabled. The connection fails if the other side specifies REJECTED or if there is no compatible algorithm on the other side.
Table 2-1 shows whether the security service is enabled, based on a combination of client and server configuration parameters. If either the server or client has specified REQUIRED, the lack of a common algorithm causes the connection to fail. Otherwise, if the service is enabled, lack of a common service algorithm results in the service being disabled.
Client | |||||
---|---|---|---|---|---|
REJECTED |
ACCEPTED |
REQUESTED |
REQUIRED |
||
Server |
REJECTED |
OFF |
OFF |
OFF |
Connection fails |
ACCEPTED |
OFF |
OFFFoot 1 |
ON |
ON |
|
REQUESTED |
OFF |
ON |
ON |
ON |
|
REQUIRED |
Connection fails |
ON |
ON |
ON |
1 This value defaults to OFF. Cryptography and data integrity are not enabled until the user changes this parameter using Oracle Net Manager or by modifying the sqlnet.ora file. |
Three seeds are used to generate a random number on the client and on the server. One of the seeds is a user-defined encryption seed (sqlnet.crypto_seed=
) that can be 10 to 70 characters in length--and changed at any time. The Diffie-Hellman key exchange uses the random numbers to generate unique session keys for every connect session.
You can set up or change encryption and integrity parameter settings using Oracle Net Manager. This section describes the following topics:
See Also:
|
To configure encryption on the client and on the server:
Text description of the illustration asoencry.gif
sqlnet.ora
file is updated.sqlnet.ora
file on the two systems should contain the following entries:
SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required] SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm [,valid_ encryption_algorithm]) SQLNET.CRYPTO_SEED = "10-70 random characters"
SQLNET.ENCRYPTION_CLIENT = [accepted | rejected | requested | required] SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm [,valid_ encryption_algorithm]) SQLNET.CRYPTO_SEED = "10-70 random characters"
Valid encryption algorithms and their associated legal values are summarized by Table 2-2:
To configure data integrity on the client and on the server:
sqlnet.ora
file is updated.sqlnet.ora
file on the two systems should contain the following entries:
SQLNET.CRYPTO_CHECKSUM_SERVER = [accepted | rejected | requested | required] SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])
SQLNET.CRYPTO_CHECKSUM_CLIENT = [accepted | rejected | requested | required] SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (valid_crypto_checksum_algorithm [,valid_crypto_checksum_algorithm])
Valid integrity algorithms and their associated legal values are displayed by Table 2-3:
Algorithm Name | Legal Values |
---|---|
MD5 |
MD5 |
SHA-1 |
SHA1 |
|
Copyright © 1996, 2002 Oracle Corporation. All Rights Reserved. |
|