Nowadays, since wireless technology and applications have become increasingly popular, there is a high demand in developing a secure wireless network. In order to ensure the
integrity and confidentiality of data during transmissions, people are paying more attention to issues related to network security. Considering some inherent limits in the mobile ad hoc network, the traditional PKI cannot be directly applied to the mobile ad hoc network without any modification. The purpose of this thesis is therefore to make some changes to the
traditional PKI. We use the properties of PHF to carry out the threshold secret sharing for distributing the trust. Furthermore, we enhance the efficiency of our secret share renewal procedure by choosing only the PHs to do it.
In our proposed protocol design, the effectiveness and efficiency is improved. Analysis results also show that the extra overhead is shared by a group of nodes. Overall, results reveal that our system is more suitable for a mobile ad hoc network. Below are some issues and several suggestions for adjustment to future studies. In our protocol design, a (q, w) – PHF would generate q+1 polynomial functions, and each server node would have q+1 secret shares.
The bigger the q is, the more polynomial functions and secret shares a server node should hold. Thus, if q is quite big, the server nodes need to increase the storage to store the secret shares. And, it may also increase the complexity in system operation. Each time when we do the update procedure, the PHs would be re-selected again, and it is the additional cost of doing the update procedure. Also, we make the assumption that the server nodes are static when the PH selection process begins. That is, throughout the entire update procedure, the mobility of server nodes is not considered. Taking the mobility at all times into account is a good research topic for future studies. Finally, how often the secret shares need to be updated is also key in balancing between the network loading and the system safety.
References:
[1] W. Stallings, “Network security essentials: Applications and standards,” Prentice Hall, 2000.
[2] E. Maiwald, “Network security: A beginner’s guide,” McGraw-Hill, 2001.
[3] K. Schmeh, “Cryptography and Public Key Infrastructure on the Internet,” John Wiley, 2003.
[4] A. Shamir, “How to Share a Secret,” Communications of ACM, vol. 22, no 11, pp.
612 – 613, 1979.
[5] K. Kyung-Mi, “Perfect Hash Families: Constructions and Applications,” a thesis of University of Waterloo, 2003.
[6] S. R. Blackburn, “Combinatorics and threshold cryptography,” in "Combinatorial Designs and their Applications," Chapman and Hall/CRC Research Notes in Mathematics, vol. 403, pp. 49 – 70, 1999.
[7] A. Herzber, S. Jarecki, H. Krawczyk, M. Yung, “Proactive Secret Sharing Or: How to Cope With Perpetual Leakage,” in Advances in Cryptology, Proc. CRYPTO’95, ser.
LNCS, vol. 936, pp. 339 – 352, 1995.
[8] L. Zhou, Z. J. Haas, “Securing Ad Hoc Networks,” IEEE Networks, Volume 13, Issue 6, pp. 24 – 30, 1999.
[9] J. Kong, P. Zerfos, H. Luo, S. Lu, L. Zhang, “Providing Robust and Ubiquitous Security Support for Mobile Ad-Hoc Networks,” IEEE ICNP Nov. 2001, pp. 251 – 260, 2001.
[10] H. Luo, P.Zerfos, J. Kong, S. Lu, L. Zhang, “Self-securing Ad Hoc Wireless Networks,”
IEEE ISCC’02, pp. 567 – 575, 2002.
[11] M. Bechler, H.-J. Hof, D. Kraft, F. Pählke, L. Wolf, “A Cluster-Based Security Architecture for Ad Hoc Networks,” IEEE INFOCOM, vol. 4, pp. 2393 – 2403, 2004.
[12] B. Zhu, F. Bao, R. H. Deng, M. S. Kankanhalli, G. Wang, “Efficient and robust key management for large mobile ad hoc network,” Computer Networks, Volume 48, Issue 4, pp. 657 – 682, 2005.
[13] B. Wu, J. Wu, E. B. Fernandez, M. Ilyas, S. Magliveras, “Secure and efficient key management in mobile ad hoc networks,” Journal of Network and Computer Applications, SSN’2005, pp.288, 2005.
[14] H. Delfs, H. Knebl, “Introduction to Cryptography: Principles and Applications,” Berlin, 2002.
[15] W. Stallings, “Cryptography and Network Security: Principles and Practices,” 3rd edition, Prentice Hall, 2003.
[16] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, “Introduction to Algorithms,” 2nd edition, MIT Press, 2001
[17] M. Atici, D. R. Stinson, and R. Wei, “Some recursive constructions for perfect hash families,” Journal of Combinatorial Designs, pp. 353 – 363, 1995.
[18] H. Wang, C. Xing, “Explicit constructions of perfect hash families from algebraic curves over finite fields,” Journal of Combinatorial Theory, Series A, pp. 112 – 124, 2001.
[19] K. Mehlhorn, “Data Structures and Algorithms 1: Sorting and Searching,”
Springer-Verlag, 1984.
[20] C. C. Lindner, C. A. Rodger, “Design Theory,” CRC Press, 1997.
[21] R. E. Klima, N. Sigmon, E. Stitzinger, “Applications of Abstract Algebra with Maple,”
CRC Press, 2000
[22] IETF Mobile Ad Hoc Networks (MANETs) Working Group, http://www.ietf.org/html.charters/manet-charter.html.
[23] C. Siva Ram Murthy, B. S. Manoj, “Ad Hoc Wireless Networks: Architectures and Protocols,” Prentice Hall, 2004.
[24] S. Corson, J. Macker, RFC 2501, “Mobile Ad hoc Networking (MANET): Routing Protocol Performance Issues and Evaluation Considerations,” IETF, 1999.
[25] C. Cachin, J. A. Poritz, “Secure Intrusion-tolerant Replication on the Internet,” IEEE DSN-2002, pp. 167 – 176, 2002.
Appendix A
collection F of functions, which map the elements from A to B, by labeling the parts of each partition with distinct elementπ π π w map each x A to the label of the part of containing x. Then resulting set of functions, say F { , , , }, is an ( , , ) - perfect hash family. functions in the family F. Setting the value of the entry (i, x) in M to be
(x), the resulting array satisfied the desir
i
N
f ed conditions.
In the reverse direction, suppose that M is an array of size * , having entries
But the design also has b blocks that each contains k objects. Hence, | T | = bk.
Thus vr = bk.
To show that (v-1)λ = r(k-1), we choose an object a0 in the design.
Then for U = {(x, B) | x is an object with a0 in block B}, we count | U | in two ways.
First, there are (v-1) objects in the design that each appear in λ blocks with a0, so | U |
= (v-1)λ.
But there are also r blocks in the design that each contains a0 and (k-1) other objects.
Hence, | U | = r(k-1).
Thus (v-1)λ = r(k-1).
Q.E.D
4. The proof of Theorem 2.6.11 [5].
In order to obtain the Theorem 2.6.11, we first give a lemma.
Lemma:
Let (X, A) be a resolvable (v, b, r, k, λ) – BIBD and Π is a set of parallel class. For any subset Y of w points, there exists a parallel class π∈ Π such that the w points in Y occur in w different blocks in π.
Proof:
Let Y be a set of w points of X. Suppose that there exists no parallel class
π∈ Π separating Y. Then each parallel class cannot separate some pair of elements in Y. By the definition of a resolvable (v, b, r, k, λ) – BIBD, we note that any pair of points in X occurs in exactly λ blocks. Thus, there are at most λ parallel classes in Π that do not separate a fixed pair of elements. Hence, there are at most parallel
2 λ⎛ ⎞⎜ ⎟w
⎝ ⎠
classes in Π that do not separate Y. In a resolvable (v, b, r, k, λ) – BIBD, there are r parallel classes and r > . Thus, there exists at least one parallel class in Π that
2 λ⎛ ⎞⎜ ⎟w
⎝ ⎠ separates Y.
Q.E.D
Proof of Theorem 2.6.11:
Let { :1Π = πi ≤ ≤ be a set of parallel class. For any subset Y of w points, by the i r} above lemma, we know that there exists a parallel class π∈ Π such that the w points in Y occur in w different blocks in π. Thus, define a family
{ :i , and 1 N}
F = f A→B ≤ ≤i as follows:
For any 1 ≤ i ≤ r, definef xi( )= j whenever x A is in the jth block in .∈ πi Clearly, j ≤ v/k and fi is an (n, v/k) hash function.
Thus the resulting set is a PHF(r; v, v/k, w) since for any
{ :1i }
F = f ≤ ≤i r
,x y A∈ , x and y are in the same block of πi if and only if ( )f xi = f yi( ).
Q.E.D
Appendix B
1. The construction program of 3.1.1.
Based on the prime power q, each program has the different input for construction. We take the program with q = 4 for example.
//Affine Plane to BIBD //Affine_to_BIBD_x.c
//Input: Affine plane of order q //Output: BIBD(q2, q(q+1), q+1, q, 1) // q = 4
#include <stdio.h>
#define q 4 void main() {
FILE *stream;
int ADD[q][q] = {
{4,1,2,3}, {1,4,3,2}, {2,3,4,1}, {3,2,1,4} };
int MUL[q][q] = {
{4,4,4,4}, {4,1,2,3}, {4,2,3,1}, {4,3,1,2} };
int A[q][q];
int Transform[q][q];
int MOLS[q-1][q][q];
int BIBD[q+1][q][q];
int i, j, k, x, y, m, c;
int index;
stream = fopen("4-BIBD.txt","w");
for(i=1; i<q+1; i++)
{
fprintf(stream, "\n");
}
// printf(" %d", ADD[y][j]);
fprintf(stream," %d", ADD[y][j]);
MOLS[i-1][x][j] = ADD[y][j];
} }
fprintf(stream,"\n");
printf("\n");
printf("MOLS[%d][%d] = %d", i, j, MOLS[i][j][k]);
else printf("%d", MOLS[i][j][k]);
fprintf(stream, "\nTransfer the form.\n");
c = 1;
// printf("T[%d][%d] = %d\n", i-1, j-1, Transform[i-1][j-1]);
if(j == 1)
fprintf(stream, "T[%d] = %d", i-1, Transform[i-1][j-1]);
else fprintf(stream, " %d", Transform[i-1][j-1]);
c++;
}
fprintf(stream, "\n");
}
//Construct the BIBD block - BIBD[q+1][q][q]
for(i=0; i<q; i++)
//Output to the file for(i=0; i<q+1; i++) {
for(j=0; j<q; j++)
fprintf(stream, "\n");
}
fclose(stream);
}
2. The analysis program of chapter 4.
With different prime power q, we have the different input for analysis. Furthermore, we use the variable “A” to present the number of server nodes disappear, being compromised or lost connection. Thus, for the following example program, we just take q = 4 and A = 7 for example.
The program for the first and second analysis:
// BIBD, PHF, q = 4
// Number of server node = 7 // PHF_x_analysis.c
#include <stdio.h>
#include <stdlib.h>
#define q 4
void compare(int, int, int, int, int, int, int);
double count = 0;
double count1 = 0;
void main(int argc, char* argv[]) {
int A = 7; // number of nodes to be selected int i, j;
double num = 1;
int flag=0;
int *ser_n;
int a,b,index=0;
ser_n = (int *)malloc(sizeof(int)*A);
//# of Server node = 7 for(i=0;i<A;i++) {
ser_n[i]=i+1;
}
/* first node */
printf("%d,%d,%d,%d,%d,%d,%d\n",
ser_n[0],ser_n[1],ser_n[2],ser_n[3],ser_n[4],ser_n[5],ser_n[6]);
compare(ser_n[0],ser_n[1],ser_n[2],ser_n[3],ser_n[4],ser_n[5],ser_n[6]);
printf("count = %d\n", count);
while(ser_n[0]<=10) {
for(i=A-1,j=0; i>0; i--,j++) {
if(ser_n[i]==(16-j))
{
//printf("%d,%d,%d,%d,%d,%d\n", ser_n[0],ser_n[1],ser_n[2],ser_n[3],ser_n[4],ser_n[5]);
compare(ser_n[0],ser_n[1],ser_n[2],ser_n[3],ser_n[4],ser_n[5],ser_n[6]);
} flag=0;
//printf("%d,%d,%d,%d,%d,%d\n",
ser_n[0],ser_n[1],ser_n[2],ser_n[3],ser_n[4],ser_n[5]);
{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}, {4,8,12,16}, {3,7,11,15}, {2,6,10,14}, {1,5,9,13}, {4,7,10,13}, {3,8,9,14}, {1,6,11,16}, {2,5,12,15}, {4,5,11,14}, {2,7,9,16}, {1,8,10,15}, {3,6,12,13}, {4,6,9,15}, {1,7,12,14}, {3,5,10,16}, {2,8,11,13} };
int comp = q*q;
{
The program for the third analysis:
// Check the probability to be a PH
#define T 20 //the number of secret share update void main()
{
int B[q*(q+1)][q] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}, {4,8,12,16},{3,7,11,15},{2,6,10,14},{1,5,9,13}, {4,7,10,13},{3,8,9,14},{1,6,11,16},{2,5,12,15}, {4,5,11,14},{2,7,9,16},{1,8,10,15},{3,6,12,13},
{4,6,9,15},{1,7,12,14},{3,5,10,16},{2,8,11,13} };
int index = 0;
int flag = 0;
int i, j, k, d, x;
int count[10][q*q];
int sum[q*q];
memset(count, 0, sizeof(count));
memset(sum, 0, sizeof(sum));
randomize();
for(k=0; k<10; k++) {
for(i=0; i<T; i++) {
index = random(q*(q+1));
// printf("index = %d\n", index);
while(1) {
flag = 0;
if(B[index][0]==1 && B[index][1]==2 && B[index][2]==3 &&
B[index][3]==4)
flag++;
else if(B[index][0]==5 && B[index][1]==6 &&B [index][2]==7 &&
B[index][3]==8)
flag++;
else if(B[index][0]==9 && B[index][1]==10 && B[index][2]==11 &&
B[index][3]==12)
flag++;
else if(B[index][0]==13 && B[index][1]==14 && B[index][2]==15 &&
B[index][3]==16)
flag++;
if(flag == 0)
break;