JNFS employs a more secure challenge-response mechanism for authentication. The protocol, outlined below, requires a user to use its digital signature to sign a random number to prove its authenticity. There are four stages to authentication:
In the initialization stage, the user U tells
JNFS that it would like access to the file system.
The server confirms that U's name
appears in the user table and then proceeds to the
challenge stage.
JNFS then generates a 64-bit random number
R using the SecureRandom class in the
java.security package. The server creates a challenge
, records it, and issues
it to U.
U receives the challenge and generates a
response by signing with its secret key
. Using the Digital
Signature Algorithm [12],
it creates a signature
for
. The user returns
back to the
server.
The JNFS server verifies the response by
using U's public key to interpret
the signature
. If
is indeed a signed version of the challenge
that it had previously issued, the server accepts the
user's credentials, since only U knows the private key
used to produce the signature from the challenge.
For efficiency, the server grants U a token (
) it will use on subsequent transactions until it
expires. When
expires, U repeats
the authentication process to obtain another token.