7.3. Key Distribution
For symmetric encryption to work, the two parties to an
exchange must share the same key, and that key must be protected from access by
others. Furthermore, frequent key changes are usually desirable to limit the
amount of data compromised if an attacker learns the key. Therefore, the
strength of any cryptographic system rests with the key
distribution technique, a term that refers to the means of delivering a
key to two parties who wish to exchange data, without allowing others to see the
key. For two parties A and B, key distribution can be achieved in a number of
ways, as follows:
-
A can select a key and physically deliver it to B.
-
A third party can select the key and physically deliver it to A and B.
-
If A and B have previously and recently used a key, one party can transmit the new key to the other, encrypted using the old key.
-
If A and B each has an encrypted connection to a third party C, C can deliver a key on the encrypted links to A and B.
Options 1 and 2 call for manual delivery of a key. For link
encryption, this is a reasonable requirement, because each link encryption
device is going to be exchanging data only with its partner on the other end of
the link. However, for end-to-end encryption, manual delivery is awkward. In a
distributed system, any given host or terminal may need to engage in exchanges
with many other hosts and terminals over time. Thus, each device needs a number
of keys supplied dynamically. The problem is especially difficult in a wide area
distributed system.
The scale of the problem depends on the number of communicating
pairs that must be supported. If end-to-end encryption is done at a network or
IP level, then a key is needed for each pair of hosts on the network that wish
to communicate. Thus, if there are N hosts, the
number of required keys is [N(N 1)]/2. If encryption is done at the application
level, then a key is needed for every pair of users or processes that require
communication. Thus, a network may have hundreds of hosts but thousands of users
and processes. Figure 7.7 illustrates the
magnitude of the key distribution task for end-to-end encryption.[5] A network using
node-level encryption with 1000 nodes would conceivably need to distribute as
many as half a million keys. If that same network supported 10,000 applications,
then as many as 50 million keys may be required for application-level
encryption.
A Key Distribution Scenario
The key distribution concept can be deployed in a number of
ways. A typical scenario is illustrated in Figure 7.9, which is based on a figure in [POPE79]. The scenario
assumes that each user shares a unique master key with the key distribution center
(KDC).
Let us assume that user A wishes to establish a logical
connection with B and requires a one-time session key to protect the data
transmitted over the connection. A has a master key, Ka, known only to itself and the KDC;
similarly, B shares the master key Kb
with the KDC. The following steps occur:
1.
|
A issues a request to the KDC for a session key to protect a
logical connection to B. The message includes the identity of A and B and a
unique identifier, N1, for this transaction, which we refer to as a nonce.[6] The nonce may be a timestamp, a
counter, or a random number; the minimum requirement is that it differs with
each request. Also, to prevent masquerade, it should be difficult for an
opponent to guess the nonce. Thus, a random number is a good choice for a
nonce.
|
2.
|
The KDC responds with a message encrypted using Ka Thus, A is the only one who can
successfully read the message, and A knows that it originated at the KDC. The
message includes two items intended for A:
In addition, the message includes two items intended for B:
|
| |
3.
|
A stores the
session key for use in the upcoming session and forwards to B the information
that originated at the KDC for B, namely, E(Kb, [Ks || IDA]). Because this information is encrypted
with Kb, it is protected from
eavesdropping. B now knows the session key (Ks), knows that the other party is A (from
IDA), and knows that the information
originated at the KDC (because it is encrypted using Kb).
At this point, a session key has been securely delivered to A and B, and they may begin their protected exchange. However, two additional steps are desirable: |
4.
|
Using the newly minted session key for encryption, B sends a
nonce, N2, to
A.
|
5.
|
Also using Ks, A
responds with f(N2), where f is a
function that performs some transformation on N2 (e.g., adding
one).
|
These steps assure B that the original message it received
(step 3) was not a replay.
Note that the actual key distribution involves only steps 1
through 3 but that steps 4 and 5, as well as 3, perform an authentication
function.
Hierarchical Key Control
It is not necessary to limit the key distribution function to a
single KDC. Indeed, for very large networks, it may not be practical to do so.
As an alternative, a hierarchy of KDCs can be established. For example, there
can be local KDCs, each responsible for a small domain of the overall
internetwork, such as a single LAN or a single building. For communication among
entities within the same local domain, the local KDC is responsible for key
distribution. If two entities in different domains desire a shared key, then the
corresponding local KDCs can communicate through a global KDC. In this case, any
one of the three KDCs involved can actually select the key. The hierarchical
concept can be extended to three or even more layers, depending on the size of
the user population and the geographic scope of the internetwork.
A hierarchical scheme minimizes the effort involved in master
key distribution, because most master keys are those shared by a local KDC with
its local entities. Furthermore, such a scheme limits the damage of a faulty or
subverted KDC to its local area only.
Session Key Lifetime
The more frequently session keys are exchanged, the more secure
they are, because the opponent has less ciphertext to work with for any given
session key. On the other hand, the distribution of session keys delays the
start of any exchange and places a burden on network capacity. A security
manager must try to balance these competing considerations in determining the
lifetime of a particular session key.
For connection-oriented protocols, one obvious choice is to use
the same session key for the length of time that the connection is open, using a
new session key for each new session. If a logical connection has a very long
lifetime, then it would be prudent to change the session key periodically,
perhaps every time the PDU (protocol data unit) sequence number cycles.
For a connectionless protocol, such as a transaction-oriented
protocol, there is no explicit connection initiation or termination. Thus, it is
not obvious how often one needs to
change the session key. The most secure approach is to use a new session key for
each exchange. However, this negates one of the principal benefits of
connectionless protocols, which is minimum overhead and delay for each
transaction. A better strategy is to use a given session key for a certain fixed
period only or for a certain number of transactions.
No comments:
Post a Comment