This does not, on the face of it, appear to be a problem, but it can be one as is probably best illustrated by an example.
Suppose that two individuals, Adam and Brad, wish to exchange information securely but can not guarantee the security of the transmission itself. They would probably use some sort of encryption to ensure that even if the message was intercepted its contents would remain secret. In order for this to operate, they would both have to know a secret key which could be used to encrypt the data. However, since the transmission medium is not secure they would have to meet in person to decide upon the key. Once this was done, however, they could exchange information happily, encrypted with this secret key, in the knowledge that to anyone without the key it would simply look like garbage. Adam and Brad must protect the security of the key in their possession since if a cryptanalyst, Charles, obtained it, he could read, alter or fake a message from either Adam or Brad.
This appears to be working perfectly, except a problem could soon arrive. Suppose that Adam or Brad then wanted to correspond with another individual, Doug. If they were to give Doug the key they would further compromise it because Charles would now have another source from which he might obtain it. In order to ensure that each message is not intercepted by another party both Adam and Brad would have to create different keys to exchange with Doug so that they would all each hold two keys (because otherwise Adam could alter Doug’s message to Brad and so forth).
Now consider a system with 1,000 members, all of whom wish to communicate in secret with each other. In this case, each individual would need to hold a key for every individual besides himself, in other words 999 keys for other people. Each individual would also have to protect those 999 keys from being compromised.
It is possible to calculate the number of keys present in a system with any number of members by multiplying the number of members minus one by the number of members and divided by two.
Keys = [n ´ (n-1)]/2
Members |
#/Members2 |
# of keys required |
2 |
4 |
1 |
3 |
9 |
3 |
4 |
16 |
6 |
5 |
25 |
10 |
6 |
36 |
15 |
7 |
49 |
21 |
8 |
64 |
28 |
9 |
81 |
36 |
10 |
100 |
45 |
100 |
10000 |
4950 |
1000 |
1000000 |
499500 |
As can be seen, the number of keys required increases exponentially and can become difficult to manage.