Contained WithinFind More DocumentationFeatured Support Resources | Download this book in PDF (2413 KB)
Chapter 3 Using Authentication Services (Tasks)This chapter provides information about the Diffie-Hellman authentication mechanism that can be used with Secure RPC. The following is a list of the step-by-step instructions in this chapter. Overview of Secure RPCSecure RPC is an authentication method that authenticates both the host and the user who is making a request for a service. Secure RPC uses the Diffie-Hellman authentication mechanism. This authentication mechanism uses DES encryption. Applications that use Secure RPC include NFS and the NIS+ name service. NFS Services and Secure RPCNFS enables several hosts to share files over the network. Under the NFS service, a server holds the data and resources for several clients. The clients have access to the file systems that the server shares with the clients. Users who are logged in to the client machines can access the file systems by mounting the file systems from the server. To the user on the client machine, it appears as if the files are local to the client. One of the most common uses of NFS allows systems to be installed in offices, while keeping all user files in a central location. Some features of the NFS service, such as the mount -nosuid option, can be used to prohibit the opening of devices and file systems by unauthorized users. The NFS service uses Secure RPC to authenticate users who make requests over the network. This process is known as Secure NFS. The authentication mechanism,
DES EncryptionThe Data Encryption Standard (DES) encryption functions use a 56-bit key to encrypt data. If two credential users or principals know the same DES key, they can communicate in private by using the key to encipher and decipher text. DES is a relatively fast encryption mechanism. A DES chip makes the encryption even faster. However, if the chip is not present, a software implementation is substituted. The risk of using just the DES key is that an intruder can collect enough cipher-text messages that were encrypted with the same key to be able to discover the key and decipher the messages. For this reason, security systems such as Secure NFS change the keys frequently. Kerberos AuthenticationKerberos is an authentication system that was developed at MIT. Encryption in Kerberos is based on DES. Kerberos V4 support is no longer supplied as part of Secure RPC. However, a client-side implementation of Kerberos V5, which uses RPCSEC_GSS, is included with this release. For more information, see Chapter 7, Introduction to SEAM. Diffie-Hellman AuthenticationThe Diffie-Hellman (DH) method of authenticating a user is nontrivial for an intruder to crack. The client and the server have their own private key, which they use with the public key to devise a common key. The private key is also known as the secret key. The client and the server use the common key to communicate with each other by using an agreed-on encryption function, such as DES. This method was identified as DES authentication in previous Solaris releases. Authentication is based on the ability of the sending system to use the common key to encrypt the current time. Then the receiving system can decrypt and check against its current time. Make sure to synchronize the time on the client and the server. The public keys and private keys are stored in an NIS or NIS+ database. NIS stores the keys in the publickey map. NIS+ stores the keys in the cred table. These files contain the public key and the private key for all potential users. The system administrator is responsible for setting up NIS maps or NIS+ tables, and generating a public key and a private key for each user. The private key is stored in encrypted form with the user's password. This process makes the private key known only to the user. Implementation of Diffie-Hellman AuthenticationThis section describes the series of transactions in a client-server session that use DH authorization ( Generating the Public Keys and Secret KeysSometime prior to a transaction, the administrator runs either the newkey or nisaddcred command to generate a public key and a secret key. Each user has a unique public key and secret key. The public key is stored in a public database. The secret key is stored in encrypted form in the same database. To change the key pair, use the chkey command. Running the keylogin CommandNormally, the login password is identical to the secure RPC password. In this case, the keylogin command is not required. However, if the passwords are different, the users have to log in, and then run a keylogin command explicitly. The keylogin command prompts the user for a secure RPC password. The command then uses the password to decrypt the secret key. The keylogin command then passes the decrypted secret key to a program that is called the keyserver. The keyserver is an RPC service with a local instance on every computer. The keyserver saves the decrypted secret key and waits for the user to initiate a secure RPC transaction with a server. If both the login password and the RPC password are the same, the login process passes the secret key to the keyserver. If the passwords are required to be different and the user must always run the keylogin command, then the keylogin command can be included in the user's environment configuration file, such as the ~/.login, ~/.cshrc, or ~/.profile file. Then the keylogin command runs automatically whenever the user logs in. Generating the Conversation KeyWhen the user initiates a transaction with a server, the following occurs:
First Contact With the ServerThe transmission, which includes the encrypted time stamp and the encrypted conversation key, is then sent to the server. The transmission includes a credential and a verifier. The credential contains three components:
The window is the difference in time that the client says should be allowed between the server's clock and the client's time stamp. If the difference between the server's clock and the time stamp is greater than the window, the server rejects the client's request. Under normal circumstances, this rejection does not happen, because the client first synchronizes with the server before starting the RPC session. The client's verifier contains the following:
The window verifier is needed in case somebody wants to impersonate a user. The impersonator can write a program that, instead of filling in the encrypted fields of the credential and verifier, just stuffs in random bits. The server decrypts the conversation key into some random key. The server then uses the key to try to decrypt the window and the time stamp. The result is random numbers. After a few thousand trials, however, the random window/time stamp pair is likely to pass the authentication system. The window verifier makes the process of guessing the right credential much more difficult. Decrypting the Conversation KeyWhen the server receives the transmission from the client, the following occurs:
Storing Information on the ServerAfter the server decrypts the client's time stamp, the server stores four items of information in a credential table:
The server stores the first three items for future use. The server stores the time stamp to protect against replays. The server accepts only time stamps that are chronologically greater than the last time stamp seen, so any replayed transactions are guaranteed to be rejected. Note – Implicit in these procedures are the name of the caller, who must be authenticated in some manner. The keyserver cannot use DES authentication to authenticate the caller because it would create a deadlock. To solve this problem, the keyserver stores the secret keys by user ID (UID) and grants requests only to local root processes. Returning the Verifier to the ClientThe server returns a verifier to the client, which includes the following:
The reason for subtracting 1 from the time stamp is to ensure that the time stamp is invalid. So, the time stamp cannot be reused as a client verifier. Client Authenticates the ServerThe client receives the verifier and authenticates the server. The client knows that only the server could have sent the verifier because only the server knows what time stamp the client sent. Additional TransactionsWith every transaction after the first transaction, the client returns the index ID to the server in its second transaction and sends another encrypted time stamp. The server sends back the client's time stamp minus 1, which is encrypted by the conversation key. Administering Diffie-Hellman AuthenticationA system administrator can implement policies that help secure the network. The level of security that is required differs with each site. This section provides instructions for some tasks that are associated with network security. How to Restart the Keyserver
How to Set Up a root Key in NIS+ Credentials for Diffie-Hellman AuthenticationFor detailed description of NIS+ security, see System Administration Guide: Naming and Directory Services (FNS and NIS+).
Example—Setting Up a New Key for root on an NIS+ ClientThe following example uses the host pluto to set up earth as an NIS+ client. You can ignore the warnings. The keylogin command is accepted, verifying that earth is correctly set up as a secure NIS+ client.
How to Set Up a New User Key That Uses NIS+ Credentials for Diffie-Hellman Authentication
Example—Setting Up a New Key for an NIS+ UserThe following example shows how DES authorization is given to a user who is named george.
How to Set Up a root Key by Using NIS Credentials With Diffie-Hellman Authentication
Example—Setting Up a New Key for root on a NIS ClientThe following example shows how to set up earth as a secure NIS client.
How to Create a New User Key That Uses NIS Credentials with Diffie-Hellman Authentication
How to Share and Mount Files With Diffie-Hellman AuthenticationPrerequisiteThe Diffie-Hellman publickey authentication must be enabled on the network. See How to Set Up a root Key in NIS+ Credentials for Diffie-Hellman Authentication and How to Set Up a root Key by Using NIS Credentials With Diffie-Hellman Authentication. To share a file system with Diffie-Hellman authentication:
To mount a file system with Diffie-Hellman authentication: |
|||||||||||||||