3.2.1 Thiết kế cơ sở dữ liệu
Bài toán thực tế
Đầu vào là một file văn bản bất kỳ qua xử lý, mã hóa cho đầu ra là mã băm có độ dài 128 bít.
Cấu trúc file văn bản
- Độ dài file không hạn chế. - Phông chữ : Unicode.
- Không mã hóa: Các file ảnh.
Thiết kế một số cơ sở dữ liệu
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
- Với file *.doc
Hình 3.1: Kết quả thử nghiệm với file *.doc - Với file *.txt
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Hình 3.2 : Kết quả thử nghiệm với file *.txt
3.2.2 Thuật toán thực hiện
Việc xây dựng mã hóa hàm băm tƣơng tự nhƣ việc xây dựng thuật toán mã hóa đĩa, ngoại trừ chuỗi giả ngẫu nhiên Q ( , ,...,q q0 1 q2050), ở đây qi – từ 8bit, i = 0,1,…,2050, trong trƣờng hợp thuật toán mã hóa hàm băm là đã biết, cũng nhƣ trong trƣờng hợp mã hóa mà nó đóng vai trò khóa mở rộng. Từ chuỗi này sẽ chọn ra từ 32 bit Qj qj 3 qj 2 qj 1 qj, ở đây j = 0,1,…,2047, còn dấu || ký hiệu toán tử ghép. Chuỗi giả ngẫu nhiên có thể đƣợc lƣu giữ trong dạng rõ ràng hoặc là đƣợc gia công với việc sử dụng một thuật toán đã cho nào đó theo các tham số đã cho. Trong trình bày thuật toán dƣới đây hàm băm vòng đƣợc sử dụng chuỗi Q, đƣợc hình thành nhờ thủ tục TableQ, mà nó đƣợc sử dụng trong thủ tục Initialize, và
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
- Bƣớc 1: Thêm các bit 0 vào sau cùng của chuỗi bit đầu vào, sao cho chuỗi bit đầu vào là bội số của 128. Khối bit đầu vào đƣợc chia thành các khối Mi, mỗi khối có độ dài 128 bit.
- Bƣớc 2: Thực hiện thủ tục TableQ( ) để khởi tạo giá trị TableQ( ) để khởi tạo giá trị cho chuỗi giả ngẫu nhiên Q.
- Bƣớc 3: Thực hiện biến đổi các khối Mi. Giá trị nhận đƣợc sau khi biến đổi từng khối đƣợc xác định theo công thức truy hồi:
hi E M( i hi 1) M ii, 1, 2,...,n
với h0 là giá trị ban đầu nào đó.
Hàm băm vòng Ez với đầu vào đƣợc tham số hóa:
Đầu vào của E: Khối số liệu Mi đƣợc trình bày nhƣ chuỗi của các từ 32 bit
0 1 1
: ( , ,..., ).
i z
W W W W
1. Thiết lập giá trị kích thƣớc của khối số liệu S z; 2. Thiết lập bộ đếm đầu tiên j ← 6;
3. Thực hiện thủ tục Initialize; 4. Thiết lập bộ đếm thứ hai k ← 0; 5. Thực hiện thủ tục ChangeNVUY;
6. Biến đổi từ hiện thời: Wk ← (Wk+32V) U; 7. Biến đổi biến R: R ←R+32Wk;
8. Kết thúc sự biến đổi từ hiện thời W Wk: k P( ,0)V (Wk) 32Y;
9. Gán bộ đếm thứ hai k k 1. Nếu k ≠ S thì chuyển đến bƣớc thứ 5; 10. Giảm đi 1 giá trị của bộ đếm thứ nhất j = j - 1. Nếu j ≠ 0, thì chuyển tới bƣớc 4, trong trƣờng hợp ngƣợc lại thì dừng.
Đầu ra của E: Giá trị hàm băm vòng thứ i : hi=Wz-1||…||W1||W0
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
- Private void P2_1_0 (int x1, int x2), private void P2_1_1 (int x1, int x2): Thực hiện biến đổi hoán vị 2 bít đầu vào thành 2 bít đầu ra khi bit điều khiển tƣơng ứng là 0 hoặc 1.
Hình 3.3. Các phần tử cơ bản (a,e), (e,g), (f,i), (p,h), (x,d).
- Public int[] P_8_12_A(int[] in812, int[] v812): Thực hiện thủ tục P8/12.
Hình 3.4. Phần tử CP F8/12
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Hình 3.5. Phần tử CP F-18/12
- Private void E(int[] L1) : hàm sinh vector điều khiển V1 …V6 theo chuỗi điều khiển L.
- Private void P961(int[] VV1, int[] VV2, int[] VV3, int[] VV4, int[] VV5, int[] VV6, int e): Thực hiện chuyển vị V1 …V6 theo bit e (e=0: mã hóa, e=1: giải mã).
Hình 3.6. Phần tử F96/1
- Private int [] P_32_96(int[] in3296) : Thực hiện hoán vị 32 bit đầu vào theo 96 bit điều khiển.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Hình 3.7. Phần tử F32/96 (a), F -132/96 (b).
- Private int[] P32_32(int[] in3232, int[] L1, int e) : phần tử hoán vị P32/32 .
Hình 3.8. Phần tử F32/32
- Private void TableQ ():Thực hiện thủ tục TableQ() tạo chuỗi giả ngẫu nhiên.
- Private void Initialize ():khởi tạo giá trị cho các biến 32 bit R,V,N,U,Y. - Private void ChangeNVUY (): Thay đổi các biến N,V,U,Y theo R.
- Private string Ez (string str): Thực hiện hàm băm vòng Ez biến đổi các khối Mi.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
- Private string Hash (string input): Thực hiện thủ tục băm với chuỗi đầu vào.
3.2.4 Giao diện chƣơng trình
- Nhấn nút “Open file” để chọn file văn bản đầu vào, văn bản đầu vào đƣợc thể hiện trong ô “Input”.
- Tích chọn một trong các phần tử cơ bản (a,e), (e,g), (f,i), (p,h), (x,d). - Nhấn nút “Get Hash” để lấy mã băm của văn bản, mã băm nằm trong ô “Output”.
- Nhấn nút “Save log” để lƣu bản mã băm.
Hình 3.9. Giao diện chƣơng trình
3.3 Cài đặt chƣơng trình Xây dựng thƣ viện liên kết động Xây dựng thƣ viện liên kết động
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Từ chƣơng trình đã xây dựng đƣợc, chuyển đổi mã nguồn thành thƣ viện liên kết động HashDLL.dll, dễ dàng cho việc sử dụng hàm băm vòng Ez vào các chƣơng trình khác.
Hình 3.10. Xây dựng thƣ viện HashDLL.dll
3.4 Tích hợp Add-In vào cho phần mềm Microsoftword 2007
Sử dụng thƣ viện HashDLL.dll đã xây dựng đƣợc vào việc viết Add-In lấy mã băm nội dung cho phần mềm Microsoftword 2007.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Hình 3.11. Giao diện sử dụng Add-In “Ez Hash Function” trong word 2007. Sau khi cài đặt Add-In, từ giao diện phần mềm Word, chọn tab Add-In. Trong Group-box “Ez hash function”, lựa chọn 1 trong 5 phƣơng thức mã hóa tại ô “Select Fn/m”, sau đó nhấn nút “Get Hash Code” ta đƣợc mã băm của nội dung văn bản trong ô “Hash code”.
3.5 Thử nghiệm và đánh giá kết quả
3.5.1 Một số kết quả thử nghiệm của chƣơng trình
Chuỗi đầu vào F2/1 Mã băm
Thời gian (giây) Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam (a,e) B16E610513809C0BF81E171B0F63D32D 0.089836 (e,g) C8C24FBFE078CBB4333B86E94F41566A 0.0485715 (f,i) 3DBF099B66CB0E99B3679BE1052FB046 0.0495325 (p,h) 3FE11F1B23852FCB729127406084E25D 0.0520284 (x,d) C844F88423BED138306716E260736E8F 0.0550111 Do Thu Hoai (a,e) B839CF2FE9610830F479B5EC25035F55 0.1461285 (e,g) F8C89422CD9F0E516D963D444BCE3E25 0.0597364 (f,i) 82F9ACF5A89BDF563876D42D434D3114 0.0571997 (p,h) 59D65A21FB627D09FA1850E2747E3F62 0.0624977 (x,d) 62D82C5B891ED2E420849B0AFDA75DF8 0.0630199 Một đoạn văn bản gồm 4349 từ (a,e) 8C8648443E1636C8D193FBE0D7E6BBFB 13.7743806 (e,g) 0A340B8EF73EE73BB9C1E0E02D6FA83E 13.9341074 (f,i) 9FA0D4F39A0A161E492219348D5816DC 12.1503664 (p,h) 7504797F0BCD9C0914101BE528A313F9 14.9402218
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
(x,d) CAE40785851817851788797BC36C2992 14.9693467
3.5.2 Đánh giá kết quả
Độ an toàn của thuật toán hàm băm vòng Ez
Đặc tính một chiều của biến đổi nhờ thuật toán đã cho này đƣợc xác định nhƣ sau: các biến khởi đầu R, V và N chỉ đƣợc thực hiện trƣớc vòng thứ nhất của sự biến đổi các từ Wk. Bởi vì khi giải mã đòi hỏi biết các giá trị khởi đầu của các biến, thì thuật toán chỉ ra rằng không có thể quay ngƣợc trở lại, tức là theo giá trị đầu ra khó để tính toán khôi phục các giá trị ở đầu vào.
Việc chọn các giá trị cụ thể của các biến N, V, U, Y và R cho ra trạng thái cụ thể cơ chế mã hóa hàm băm. Số lƣợng các trạng thái có thể của cơ chế này là một số rất lớn – 2160. Hiệu ứng thác lũ mở rộng sự thay đổi ít nhất trong một vài từ Wk khi chuyển đổi thành từ Wk+1. Điều này liên quan đến ba yếu tố:
1) Mỗi một bit của từ ảnh hƣởng tới việc chọn các phần tử từ chuỗi giả ngẫu nhiên.
2) Sự biến dạng của từ Wk dẫn đến sự thay đổi của biến R.
3) Sự thay đổi giá trị hiện thời của biến R kéo theo tự thay đổi giá trị tiếp theo của nó.
Sự thay đổi bất kỳ ở đầu vào của bộ biến đổi đƣợc tích lũy vào bộ lƣu giữ của các biến R, V, Y, U và N. Nhờ điều này sau vòng biến đổi thứ nhất sự chọn từ bảng phụ thuộc một cách phức tạp vào mỗi bit của khối đầu ra.
Hàm vòng đƣợc tổ chức sao cho nó có thể dễ dàng mô phỏng theo kích thƣớc bất kỳ của khối dữ liệu đầu ra. Việc tính toán giá trị hàm băm từ văn bản nào đó
1 2
( , ,..., n)
M M M M , mà nó đƣợc trình bày nhƣ các khối Mi nối liên tiếp. Ở đây các khối Mi có kích thƣớc nhƣ nhau (khi cần thiết thì khối dữ liệu cuối cùng cần đƣợc bổ sung thêm các bit để trở thành khối có kích thƣớc theo tiêu chuẩn). Giá trị nhận đƣợc sau khi biến đổi từng khối đƣợc xác định theo công thức truy hồi sau:
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Ở đây E – hàm băm vòng đƣợc xây dựng ở trên; còn hn – giá trị của hàm băm ở đầu ra (cũng gọi là mã hàm băm, hoặc bản tóm lƣợc) của văn bản M.
3.6 Nghiên cứu sử dụng công nghệ FPGA để cấu hình các phần tử điều khiển đƣợc. khiển đƣợc.
Trong trƣờng hợp thực hiện FPGA, các phần tử điều khiển đƣợc thuộc đủ loại đƣợc thực hiện bằng việc sử dụng các ô bộ nhớ 4bit, mỗi ô thực hiện một hàm logic 3 biến. Tuy nhiên, mỗi một ô này lại có thể thực hiện một hàm logic bất kỳ 4 biến. Ta có thể sử dụng các cặp hàm này để xây dựng các phần tử điều khiển đƣợc điều khiển bởi các vec tơ điều khiển 2bit (v, z) lựa chọn đƣợc 4 biến đổi cơ bản , , , và (xem hình 3.12).
Các đơn vị điều khiển đƣợc này đƣợc thiết kế một cách thích hợp và có tính phi tuyến cao hơn các phần tử điều khiển đƣợc . Do vậy, ta có thể sử dụng các phần tử để thay thế các phần tử trong các phần tử hay thay thế các phần tử trong các phần tử , với điều kiện có cấu trúc các phần tử toán tử phụ thuộc dữ liệu tiên tiến hơn. Kết cấu tổng quát của các phần tử toán tử phụ thuộc dữ liệu nhƣ vậy đƣợc biểu diễn ở hình 2.4.
Để xây dựng các phần tử , ta có thể sử dụng các kiến trúc của các phần tử và ba cơ chế xây dựng cấu trúc lặp xét đến ở phần trƣớc. Theo [8] hai dạng biểu diễn của các phần tử gắn liền với các biểu thức sau:
Ta cũng có thể biểu diễn đầu ra của các phần tử điều khiển đƣợc nhƣ sau:
Với các giá trị n và s cho trƣớc, khi thực hiện FPGA của các phần tử và yêu cầu sử dụng cùng một số lƣợng các tài nguyên phần cứng; tuy nhiên,
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
một cách tổng quát thì phần tử là một toán tử mật mã có hiệu quả cao hơn cả.
Để lựa chọn đƣợc các phần tử điều khiển đƣợc phù hợp làm các khối cấu trúc cơ bản trong thiết kế các mạng hoán vị thay thế điều khiển đƣợc thực hiện các phép biến đổi mật mã ta hoàn toàn có thể sử dụng các tiêu chí sau:
Mỗi một trong 2 đầu ra của các phần tử điều khiển đƣợc phải là một hàm logic cân bằng có tính phi tuyến với 4 biến.
Mỗi biến thể của các phần tử điều khiển đƣợc phải là một phép biến đổi
đối hợp song ánh .
Tổng 2 đầu ra là một hàm logic 4 biến. Có tính phi tuyến NL .
Trƣờng hợp các hàm logic 3 biến thì toàn bộ các hàm logic cân bằng có tính phi tuyến f mang giá trị phi tuyến NL (f( . Tuy nhiên, trƣờng hợp các hàm logic cân bằng phi tuyến tính với 4 biến ta có 2 giá trị NL khác nhau là 2 và 4. Do đó, khi phân loại các phần tử phi tuyến tính , ta cần xem xét đến các giá trị NL khác nhau. Ta cũng có thể làm các yêu cầu của tính phi tuyến có tính bền vững hơn trong tiêu chí lựa chọn và trình bày nhƣ sau:
Mỗi một trong 2 đầu ra của các phần tử điều khiển đƣợc là một hàm logic cân bằng 4 biến có giá trị tính phi tuyến NL (y1)( NL .
Mỗi một biến thể của các phần tử điều khiển đƣợc phải là phép biến đổi
song ánh .
Tổng 2 đầu ra là một hàm logic 4 biến có tính phi tuyến
NL .
Trong trƣờng hợp nhƣ vậy, chúng ta sẽ giới hạn số lƣợng các phần tử ; tuy nhiên, chúng ta sẽ giới hạn đồng thời cả tập các phần tử điều khiển đƣợc phù hợp làm các phần tử mật mã cơ bản. Ví dụ, các phần tử điều khiển đƣợc mô tả bằng hàm logic có giá trị phi tuyến tính là 2 có thể có ích cho việc xác định những thay
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
đổi tất định ở đầu ra do việc đảo một hoặc một số bit của khối con dữ liệu điều khiển gây ra, ví dụ nhƣ các phần tử và . Do vậy, để phân loại các phần tử thì tiêu chí lựa chọn ở phiên bản thứ nhất phù hợp hơn cả. Do ở trƣờng hợp các phần tử ta có thể sử dụng hai phƣơng pháp khác nhau đó là:
Xét toàn bộ các giá trị có thể có của các cặp hàm logic bốn biến theo yêu cầu.
Xét toàn bộ các giá trị có thể có của các tập có bốn phép thế cơ bản trong đó ta có ít nhất 2 phép thế khác nhau thuộc loại 2x2.
Số lƣợng các hàm logic 4 biến là 12.780, do vậy, trong trƣờng hợp thứ nhất ta nên xét đến khoảng hơn 108 các biến thể. Nếu chỉ có các hàm logic phi tuyến cân bằng đƣợc xét đến thì số lƣợng các biến thể cũng phải nhiều hơn 108 . Thực vậy, ta có 10.920 hàm có tính phi tuyến là 4 và 1.920 hàm có tính phi tuyến là 2 (xem bảng 3.1).
Hình 3.12. Phần tử (a) đƣợc biểu diễn thành một cặp hàm logic 4 biến (b) hoặc thành 4 phép thế 2x2 (c).
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Hình 3.13. Cấu trúc tổng quát của các phần tử n/m
Bảng 3.1 Các hàm logic 4 biến đƣợc phân loại theo giá trị tính phi tuyến
Bảng 3.2 Số lƣợng các phần tử điều khiển đƣợc với các giá trị phi tuyến nguyên khác nhau.
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Bảng 3.3 Số lƣợng các hợp đối điều khiển đƣợc với tính phi tuyến nguyên khác nhau.
Tìm kiếm vét kiệt toàn bộ các phần tử khả nghịch điều khiển đƣợc có thể có thỏa mãn tiêu chí lựa chọn thì có hiệu quả hơn trong trƣờng hợp 2. Thực vậy, số lƣợng các tập có thể có là nhỏ hơn 340.000. Sử dụng phƣơng pháp thứ 2 thì các phần tử đƣợc phân loại cân xứng với thuộc tính phi tuyến của chúng. Trong kiểu phân loại của chúng sử dụng ký hiệu tính phi tuyến nguyên (NL nguyên) là một tập gồm ba số ( :
và . Bảng 3.2 biểu diễn số lƣợng các phần tử tƣơng ứng với các lớp phụ khác nhau đƣợc phân loại theo giá trị phi tuyến nguyên của chúng. Bảng 3.3 đƣa ra số lƣợng các phần tử là các đối hợp. Lớp phụ của số lƣợng lớn nhất của các phần tử phi tuyến tính điều khiển đƣợc bao gồm 126.720 phần tử, trong số đó ta có 2.208 đối hợp.
Hình 3.14. Các đặc trƣng vi phân có thể của các phần tử F2/2
Bảng 3.4 Sự phân bố các chỉ số các xác suất
i j k A B C D E
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/ 1 1 0 1 2 1 0 0 0 2 0 0 0 0 0 0 1 2 0 1 0 2 2 0 0 1
Để phân loại các phần tử F2/1 đƣợc chi tiết hơn, ta nên xét đến các đặc trƣng vi phân của chúng (xem hình 3.12), các đặc trƣng này có thể dự đoán đƣợc với xác suất . Để dự đoán đƣợc toàn bộ các xác suất tƣơng ứng với cùng một phần tử điều khiển đƣợc sử dụng cùng một giá trị nguyên nào đó, và [8] đƣa ra quan điểm entropy trung bình nhƣ sau:
Tại đó, tập các đặc trƣng vi phân riêng biệt đƣợc đặc tả bằng giá trị entropy
Trƣờng hợp k = 0, toàn bộ các đặc trƣng vi phân của các phần tử đƣợc quy cho 5 tập A, B, C, D, và E minh họa ở bảng 3.4. Các đặc trƣng vi phân của các