Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
1,35 MB
Nội dung
Tìm hiểu xây dựng chương trình mơ mã húa Rijndael TR-ờng đại học vinh Khoa công nghệ thông tin === === tìm hiểu xây dựng ch-ơng trình mô mà hóa rijndael đồ án tốt nghiệp đại học Ngành kỹ s- công nghệ thông tin Giáo viên h-ớng dẫn: ThS nguyễn thị hồng anh Sinh viên thực hiện: nguyễn đình sơn Lớp: 46K2 - CNTT Vinh, 5/2010 = = Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael LỜI NĨI ĐẦU Ngày nay, ứng dụng cơng nghệ thông tin ngày phổ biến rộng rãi ảnh hưởng lớn đến diện mạo đời sống, kinh tế, xã hội Mọi công việc hàng ngày thực từ xa với hỗ trợ máy vi tính mạng internet (từ việc học tập, mua sắm, gửi thư… đến việc ký kết hợp đồng thương mại) Tất thông tin liên quan đến công việc máy vi tính quản lý truyền hệ thống mạng Đối với thơng tin bình thường khơng có ý đến, thơng tin mang tính chất sống cịn số cá nhân (hay tổ chức) vấn đề bảo mật thật quan trọng Nhiều tổ chức, cá nhân tìm kiếm đưa nhiều giải pháp bảo mật; phương pháp mã hóa khóa bí mật (mã hóa đối xứng) đặc biệt phương pháp mã hóa Rijndael xem phương pháp có tính phù hợp cao Chúng ta phải thừa nhận rủi ro gặp phải trình giao dịch, kinh doanh mạng hữu; nguy bị thay đổi, chép liệu lưu trữ chuyền tải hữu Việc đảm bảo tính an toàn toàn vẹn lưu trữ truyền tải liệu vấn đề then chốt cá nhân, tổ chức cộng đồng mạng vấn đề thật cần thiết cấp bách Đề tài “Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael” tơi nghiên cứu tập trung vào hai nội dung chính: (1) Tìm hiểu kỹ thuật mã hóa khóa bí mật Rijndael (2) Vận dụng kỹ thuật mã hoá Rijndael xây dựng chương trình mã hóa giải mã Đề tài nghiên cứu tơi có giúp đỡ nhiều từ giảng viên Nguyễn Thị Hồng Anh bạn lớp Tôi xin gửi lời cảm ơn chân thành tới cô bạn Tơi mong nhận đóng góp ý kiến từ quý thầy cô bạn Tôi xin chân thành cảm ơn! Sinh viên Nguyễn Đình Sơn Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael MỤC LỤC Trang LỜI NÓI ĐẦU Chƣơng CÁC PHƢƠNG PHÁP Mà HÓA 1.1 Một số khái niệm liên quan 1.1.1 Mã hóa 1.1.2 Các hệ thống mã hóa 1.1.3 Ứng dụng 1.2 Hệ thống mã hóa khóa cơng cộng( mã hóa bất đối xứng) 1.2.1 Định nghĩa 1.2.2 Phương pháp mã hóa 1.2.3 Một số thuật tốn mã hóa khóa cơng cộng 1.2.4 Ưu nhược điểm 13 1.3 Hệ thống mã hóa khóa bí mật ( mã hóa đối xứng) 14 1.3.1 Khái niệm 14 1.3.2 Phương pháp mã hóa 14 1.3.3 Một số phương pháp mã hóa khóa bí mật 15 1.3.4 Ưu nhược điểm 29 Chƣơng PHƢƠNG PHÁP Mà HÓA RIJNDAEL 30 2.1 Giới thiệu 30 2.2 Tham số, ký hiệu, thuật ngữ hàm 30 2.3 Một số khái niệm toán học 31 2.3.1 Phép cộng 32 2.3.2 Phép nhân 32 2.4 Phương pháp Rijndael 34 2.4.1 Quy trình mã hóa 34 2.4.2 Kiến trúc thuật toán Rijndael 36 2.4.3 Quy trình giải mã 46 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael 2.5 Các vấn đề cài đặt thuật toán 53 2.6 Kết luận 57 2.6.1 Khả an toàn 57 2.6.2 Đánh giá 58 Chƣơng CÀI ĐẶT CHƢƠNG TRÌNH 60 3.1 Tổng quan chương trình 60 3.2 Cài đặt chương trình 60 KẾT LUẬN 65 TÀI LIỆU THAM KHẢO 67 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Chƣơng CÁC PHƢƠNG PHÁP Mà HÓA 1.1 Một số khái niệm liên quan 1.1.1 Mã hóa 1.1.1.1 Định nghĩa Trong mật mã học, ngành toán học ứng dụng cho cơng nghệ thơng tin, mã hóa phương pháp để biến thơng tin (phim ảnh, văn bản, hình ảnh ) từ định dạng bình thường sang dạng thơng tin khơng thể hiểu khơng có phương tiện giải mã Giải mã phương pháp để đưa từ dạng thơng tin mã hóa dạng thơng tin ban đầu, q trình ngược mã hóa 1.1.1.2 Hệ thống mã hóa(cryptosytem) Hệ thống mã hóa (cryptosystem) năm (P, C, K, E, D) thỏa mãn điều kiện sau: Tập nguồn P tập hữu hạn tất mẩu tin nguồn cần mã hóa có Tập đích C tập hữu hạn tất mẩu tin có sau mã hóa Tập khóa K tập hữu hạn khóa sử dụng E D tập luật mã hóa giải mã Với khóa k K , tồn luật mã hóa ek E luật giải mã dk D tương ứng Luật mã hóa : ek : P →C luật giải mã : dk : C →P hai ánh xạ thỏa mãn dk (ek (x)) =x, x P Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Tính chất tính chất quan trọng hệ thống mã hóa Tính chất bảo đảm mẩu tin x € P mã hóa luật mã hóa ek € E giải mã xác luật dk € D 1.1.1.3 Zm Được định nghĩa tập hợp {0,1, ,m −1} , trang bị phép cộng (ký hiệu +) phép nhân (ký hiệu ×) Phép cộng phép nhân Zm thực tương tự Z , ngoại trừ kết tính theo modulo m � Ví dụ: Giả sử ta cần tính giá trị 11×13 Z16 Trong Z , ta có kết phép nhân 11×13 =143 Do 143 ≡ 15 (mod 16) nên 11×13 = 15 Z16 Một số tính chất Zm Phép cộng đóng Zm , a, b Zm , a + b Zm Tính giao hoán phép cộng Zm , a, b€ Z , a +b=b+a Tính kết hợp phép cộng Zm , a, b, c Zm (a + b) + c = a + (b + c) Zm có phần tử trung hịa 0, a Zm , a + = + a = a Mọi phần tử a Zm có phần tử đối m − a Phép nhân đóng Zm , a, b Zm , b Z Tính giao hoán phép nhân Zm , a, b Zm , a ×b = b× a Tính kết hợp phép nhân Zm, a,b,c Zm: (b)×c = (b×c) Zm có phần tử đơn vị , a, b Zm , =1×a = a 10 Tính phân phối phép nhân phép cộng, a, b, c Zm: (a + b)× c = a× c + b× c Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Zm có tính chất 1, - nên tạo thành nhóm Do Zm có tính chất nên tạo thành nhóm Abel Zm có tính chất (1) - (10) nên tạo thành vành 1.1.2 Các hệ thống mã hóa Có hệ thống mã hóa đối xứng hệ thống mã hóa bất đối xứng Hai loại mã hóa khác số lượng khóa Mã hóa đối xứng sử dụng khóa để mã hóa/giải mã Trong đó, mã hóa bất đối xứng sử dụng hai khóa khác để mã hóa giải mã thơng tin Mỗi hệ thống mã hóa có ưu nhược điểm riêng Mã hóa đối xứng xử lí nhanh độ an tồn khơng cao Mã hóa bất đối xứng xử lí chậm hơn, độ an tồn tính thn tiện quản lí khóa cao Trong ứng dụng mã hóa người ta thường kết hợp ưu điểm hai loại mã hóa 1.1.3 Ứng dụng Mã hóa có vai trị quan trọng, đặc biệt giao dịch điện tử Nó giúp đảm bảo bí mật, tồn vẹn thơng tin, thơng tin truyền mạng Mã hóa tảng kĩ thuật chữ ký điện tử, hệ thống PKI 1.2 Hệ thống mã hóa khóa cơng cộng( mã hóa bất đối xứng) 1.2.1 Định nghĩa Phương pháp mã hố cơng khai (Public Key Cryptography) sử dụng hai khoá public key private key Phương pháp gọi mã hố bất đối xứng (Asymmetric Cryptography) hệ sử dụng khoá mã hoá ek khoá giải mã dk khác Trong đó, ek sử dụng để mã hố nên cơng bố, khố giải mã dk phải giữ bí mật Nó sử dụng hai khoá khác để mã hoá giải mã liệu Ý tưởng hệ thống mã hóa khóa cơng cộng Martin Hellman, Ralph Merkle Whitfield Diffie Đại học Stanford giới thiệu vào năm 1976 Sau đó,phương pháp Diffie-Hellman Martin Hellman Whitfield Diffie công bố Năm 1977, báo "The Scientific American", nhóm tác giả Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Ronald Rivest, Adi Shamir Leonard Adleman cơng bố phương pháp RSA, phương pháp mã hóa khóa công cộng tiếng sử dụng nhiều ứng dụng mã hóa bảo vệ thơng tin RSA nhanh chóng trở thành chuẩn mã hóa khóa cơng cộng tồn giới tính an tồn khả ứng dụng 1.2.2 Phương pháp mã hóa Bảo mật có vai trị quan trọng giao dịch thông qua mạng máy tính hiểu việc ký kết vào thư đóng dấu lên phong bì Nếu chữ ký chứng minh tin cậy thư, phong bì đóng dấu chứng minh cho bảo mật thư Khi gửi văn điện tử, người gửi muốn có người cần gửi đọc văn văn phải mã hố khố cơng khai người nhận Khi văn gửi văn mã hố, người nhận muốn đọc cần phải giải mã văn khố bí mật Qui trình gửi nhận văn thể hình Khóa cơng cộng A Văn gốc B mã hóa khóa riêng C D văn giải mã văn giải mã mã hóa Hình Mơ hình mã hóa khóa cơng khai Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Khi áp dụng hệ thống mã hóa khóa cơng cộng, người A sử dụng mã khóa cơng cộng để mã hóa thơng điệp gửi cho người B Do biết mã khóa riêng nên B giải mã thơng điệp mà A mã hóa Người C phát thông điệp mà A gửi cho B, kết hợp với thông tin mã khóa cơng cộng cơng bố, khó có khả giải mã thơng điệp khơng nắm mã khóa riêng B 1.2.3 Một số thuật tốn mã hóa khóa cơng cộng 1.2.3.1 Giải thuật RSA Năm 1978, R.L.Rivest, A.Shamir L.Adleman đề xuất hệ thống mã hóa khóa cơng cộng RSA (hay gọi “hệ thống MIT”) Trong phương pháp này, tất phép tính thực Zn với n tích hai số nguyên tố lẻ p q khác Khi đó, ta có φ(n) = (p-1) (q-1) Thuật tốn mã hóa RSA n = pq với p q hai số nguyên tố lẻ phân biệt Cho P = C = Zn định nghĩa: K = {((n, p, q, a, b): n = pq, p, q số nguyên tố, ab ≡ (mod φ(n))} Với k = (n, p, q, a, b) K, định nghĩa: ek(x) = xb mod n dk(y) = ya mod n, với x, y Z Giá trị n b công bố, giá trị p, q, a giữ bí mật Dựa định nghĩa phương pháp mã hóa RSA, việc áp dụng vào thực tế tiến hành theo bước sau: Thuật toán sử dụng phương pháp RSA Phát sinh hai số nguyên tố có giá trị lớn p q Tính n = pq φ(n) = (p - 1) (q - 1) Chọn ngẫu nhiên số nguyên b (1 < b < φ(n)) thỏa gcd(b, φ(n)) = Tính giá trị a = b-1 mod φ(n) (bằng thuật toán Euclide mở rộng) Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Giá trị n b cơng bố (khóa cơng cộng), giá trị p, q, a giữ bí mật (khóa riêng) Hệ thống RSA có đặc điểm thơng tin khơng phải ln che dấu Giả sử người gởi có e = 17, n = 35 Nếu muốn gởi liệu thuộc tập sau: {1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}, kết việc mã hóa lại liệu ban đầu Nghĩa M = Me mod n Còn p = 109, q = 97, e = 865 hệ thống hồn tồn khơng có che dấu thơng tin, vì: M, M = M865 mod (109*97) Với giá trị n, có trường hợp kết mã hóa liệu nguồn ban đầu Thật vậy: M = Me mod n (1) Hay: M = Me mod p M = Me mod q (2) Với e, (1) có ba giải pháp thuộc tập {0, 1, -1} Để xác định xác số thông điệp không che dấu (không bị thay đổi sau mã hóa) ta sử dụng định lý sau:“Nếu thơng điệp mã hóa hệ thống RSA xác định số modulus n = p.q (p,q số ngun tố) khóa cơng cộng e có: m = [1+gcd(e-1, p-1)][1+gcd(e-1), q-1] thơng điệp khơng bị che dấu Mấu chốt để giải mã thơng tin có giá trị p q tạo nên giá trị n Khi có hai giá trị này, ta dễ dàng tính φ(n)=(p-1)(q- 1) giá trị : a = b-1 mod φ(n) theo thuật toán Euclide mở rộng Nếu số nguyên n phân tích thừa số ngun tố, tức giá trị p q xác định xem tính an tồn phương pháp RSA khơng cịn bảo đảm Như vậy, tính an tồn phương pháp RSA dựa sở máy tính thời điểm chưa đủ khả giải việc phân tích số nguyên lớn thừa số nguyên tố Tuy nhiên, với phát triển ngày nhanh chóng máy tính bước đột phá lĩnh vực tốn học, 10 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Trong quy trình trên, bảng mã khóa mở rộng dw xây dựng từ bảng mã khóa w cách áp dụng phép biến đổi InvMixColumns lên từ (4 byte) w, ngoại trừ Nb từ cuối w for i = to (Nr + 1) * Nb - dw[i] = w[i] end for for rnd = to Nr - InvMixColumns(dw + rnd * Nb) end for 2.5 Các vấn đề cài đặt thuật toán Gọi a trạng thái bắt đầu chu kỳ mã hóa Gọi b, c, d, e trạng thái kết đầu sau thực phép biến đổi SubBytes, ShiftRows, MixColumns AddRoundKey chu kỳ xét Quy ước: trạng thái s ( s = a,b, c,d, e ), cột thứ j kí hiệu sj, phần tử dịng i cột j kí hiệu si, j 53 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Kết hợp kết trung gian phép biến đổi chu kỳ với nhau, ta có: Ký hiệu j[r]= ( j + shift(r,Nb))mod Nb , biểu thức Có thể viết lại sau: Khai triển phép nhân ma trận, ta có: 54 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Định nghĩa bảng tra cứu T0, T1, T2, T3 sau: Khi đó, biểu thức viết lại sau: với round số thứ tự chu kỳ xét Như vậy, cột ej trạng thái kết sau thực chu kỳ mã hóa xác định bốn phép toán XOR số nguyên 32 bit sử dụng bốn bảng tra cứu T0, T1, T2 T3 Công thức áp dụng cho Nr-1 chu kì đầu Do chu kỳ cuối không thực phép biến đổi MixColumns nên cần xây dựng bảng tra cứu riêng cho chu kì này: Nhận xét Kỹ thuật sử dụng bảng tra cứu giúp cải thiện tốc độ mã hóa giải mã cách đáng kể Ngồi ra, kỹ thuật giúp chống lại phương pháp phá mã dựa thời gian mã hóa sử dụng bảng tra cứu, thời gian mã hóa liệu 55 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Kỹ thuật sử dụng quy trình mã hóa quy trình giải mã tương đương tương ứng bước thực hai quy trình Khi đó, dùng chung quy trình cho việc mã hóa giải mã sử dụng bảng tra khác Trên thực tế, bảng tra cứu lưu trữ sẵn xây dựng trực tiếp dựa bảng thay S-Box với thông tin khuôn dạng tương ứng Trên vi xử lý 32-bit, thao tác biến đổi sử dụng quy trình mã hóa tối ưu hóa cách sử dụng bốn bảng tra cứu, bảng có 256 phần tử với kích thước phần tử byte Với phần tử a GF(28), đặt: Nhận xét: Ti[a] = RotWord(Ti-1[a]) với i = 1,2,3 Ký hiệu RotWordi hàm xử lý gồm i lần thực hàm RotWord, ta có: Ti[a] = RotWordi(T0[a]) Như vậy, thay dùng kilobyte để lưu trữ sẵn bốn bảng, cần tốn kilobyte để lưu bảng đầu tiên, bảng lại phát sinh lại sử dụng Các hạn chế nhớ thường không đặt ra, trừ số trường hợp applet hay servlet Khi đó, thay lưu trữ sẵn bảng tra cứu, cần lưu đoạn mã xử lý phát sinh lại bảng Lúc đó, cơng thức 56 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael trở thành: 2.5.1.1 Kết thử nghiệm Bảng tốc độ xử lý phương pháp Rijndael nhà đánh giá thử nghiệm: Kết thử nghiệm thuật toán Rijndael ghi nhận máy Pentium 200 MHz (sử dụng hệ điều hành Microsoft Windows 98), máy Pentium II 400 MHz, Pentium III 733 MHz (sử dụng hệ điều hành Microsoft Windows 2000 Professional), Pentium IV 2,4GHz (sử dụng hệ điều hành Microsoft Windows XP Service Pack 2) 2.6 Kết luận 2.6.1 Khả an toàn Việc sử dụng số khác ứng với chu kỳ giúp hạn chế khả tính đối xứng thuật tốn Sự khác cấu trúc việc mã hóa giải mã hạn chế khóa “yếu” (weak key) phương pháp DES Ngồi ra, thơng thường điểm yếu liên quan đến mã khóa xuất phát từ phụ thuộc vào giá trị cụ thể mã khóa thao tác phi tuyến phương pháp IDEA (International Data Encryption Algorithm) Trong phiên mở rộng, khóa sử dụng thơng qua thao tác XOR tất thao tác phi tuyến cố định sẵn S-box mà không phụ thuộc vào giá trị cụ thể mã khóa Tính chất phi tuyến khả 57 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael khuếch tán thơng tin (diffusion) việc tạo bảng mã khóa mở rộng làm cho việc phân tích mật mã dựa vào khóa tương đương hay khóa có liên quan trở nên khơng khả thi Đối với phương pháp vi phân rút gọn, việc phân tích chủ yếu khai thác đặc tính tập trung thành vùng (cluster) vết vi phân số phương pháp mã hóa Trong trường hợp thuật tốn Rijndael với số lượng chu kỳ lớn 6, không tồn phương pháp công phá mật mã hiệu phương pháp thử sai Tính chất phức tạp biểu thức S-box GF(28) với hiệu ứng khuếch tán giúp cho thuật tốn khơng thể bị phân tích phương pháp nội suy 2.6.2 Đánh giá Phương pháp Rijndael thích hợp cho việc triển khai nhiều hệ thống khác nhau, không máy tính cá nhân mà điển hình sử dụng chip Pentium, mà hệ thống thẻ thơng minh Trên máy tính cá nhân, thuật tốn AES thực việc xử lý nhanh so với phương pháp mã hóa khác Trên hệ thống thẻ thông minh, phương pháp phát huy ưu điểm không nhờ vào tốc độ xử lý cao mà cịn nhờ vào mã chương trình ngắn gọn, thao tác xử lý sử dụng nhớ Ngồi ra, tất bước xử lý việc mã hóa giải mã thiết kế thích hợp với chế xử lý song song nên phương pháp Rijndael chứng tỏ mạnh hệ thống thiết bị Do đặc tính việc xử lý thao tác byte liệu nên khác biệt đặt triển khai hệ thống big-endian hay little-endian Xuyên suốt phương pháp AES, yêu cầu đơn giản việc thiết kế tính linh hoạt xử lý ln đặt đáp ứng Độ lớn khối liệu mã khóa tùy biến linh hoạt từ 128 đến 256-bit với điều kiện chia hết cho 32 Số lượng chu kỳ thay đổi tùy thuộc vào yêu cầu riêng đặt cho ứng dụng hệ thống cụ thể Tuy nhiên, tồn số hạn chế mà hầu hết liên quan đến trình giải mã 58 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Mã chương trình thời gian xử lý việc giải mã tương đối lớn việc mã hóa, thời gian nhanh đáng kể so với số phương pháp khác Khi cài đặt chương trình, q trình mã hóa giải mã khơng giống nên khơng thể tận dụng lại tồn đoạn chương trình mã hóa bảng tra cứu cho việc giải mã Khi cài đặt phần cứng, việc giải mã sử dụng lại phần mạch điện tử sử dụng việc mã hóa với trình tự sử dụng khác Phương pháp Rijndael với mức độ an toàn cao ưu điểm đáng ý khác chắn nhanh chóng áp dụng rộng rãi nhiều ứng dụng hệ thống khác 59 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Chƣơng CÀI ĐẶT CHƢƠNG TRÌNH 3.1 Tổng quan chƣơng trình Chương trình xây dựng cài đặt ngôn ngữ C++,với hai chức mã hóa giải mã tệp văn Q trình mã hóa giải mã thực đồng thời khối thời điểm,với hai chức sau: RijndaelEncrypt(rk,nrounds,plaintext,ciphertext) (// mã hóa văn thô( palintext) gi liệu vào văn mã hóa(ciphertext)) RijndaelDecrypt(rk,nrounds, ciphertext ,plaintext)(// giải mã nội dung ciphertext gi liệu vào plaintext) Với: Cosnt unsigned long *rk trỏ mã hóa / giải mã Int nrounds số vịng mã hóa / gải mã tính tốn theo rijndaelsetupencrypt / rijndaelsetupdecrypt Const unsigned long plaintext văn chữ thô Const unsigned long ciphertext văn mã hóa 3.2 Cài đặt chƣơng trình Chương trình xây dựng tệp thư viện Rijndael.h ,tệp thư viện chứa hàm thiết lập cho mã hóa giải mã, hàm mã hóa, giải mã sử dụng thuật toán Rijndael Tệp Rijndael.h #include #include #ifndef H RIJNDAEL #define H RIJNDAEL 60 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael int rijndaelSetupEncrypt(unsigned long *rk, const unsigned char *key, int keybits); int rijndaelSetupDecrypt(unsigned long *rk, const unsigned char *key, int keybits); void rijndaelEncrypt(const unsigned long *rk, int nrounds, const unsigned char plaintext[16], unsigned char ciphertext[16]); void rijndaelDecrypt(const unsigned long *rk, int nrounds, const unsigned char ciphertext[16], unsigned char plaintext[16]); #define KEYLENGTH(keybits) ((keybits)/8) #define RKLENGTH(keybits) ((keybits)/8+28) #define NROUNDS(keybits) ((keybits)/32+6) #endif Khi sử dụng sử dụng tệp thư viện cho ứng dụng mã hóa giải mã thông qua lời gọi #include “Rijndael.h” Trong Rijndael.h hàm rijndaelSetupEncrypt, rijndaelSetupDecypt, rijndaelEncrypt, rijndaelDecrypt,đã xây dựng sẳn Khi cần sử dụng cho ứng dụng mã hóa hay giả mã chúng gọi hàm theo cú pháp: Dành cho mã hóa #include "rijndael.h" #define KEYBITS 256 int main(int argc, char **argv) { unsigned long rk[RKLENGTH(KEYBITS)]; unsigned char key[KEYLENGTH(KEYBITS)]; int i; int nrounds; char *password; 61 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael FILE *output; if (argc < 3) { fputs("pass không hơp le\n", stderr); return 1; } password = argv[1]; for (i = 0; i < sizeof(key); i++) key[i] = *password != ? *password++ : 0; output = fopen(argv[2], "wb"); if (output == NULL) { fputs("gi file ket thuc", stderr); return 1; } nrounds = rijndaelSetupEncrypt(rk, key, 256); while (!feof(stdin)) { unsigned char plaintext[16]; unsigned char ciphertext[16]; int j; for (j = 0; j < sizeof(plaintext); j++) { int c = getchar(); if (c == EOF) break; plaintext[j] = c; } if (j == 0) 62 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael break; for (; j < sizeof(plaintext); j++) plaintext[j] = ' '; rijndaelEncrypt(rk, nrounds, plaintext, ciphertext); if (fwrite(ciphertext, sizeof(ciphertext), 1, output) != 1) { fclose(output); fputs("ket thuc gi file", stderr); return 1; } } fclose(output); } Dành cho giải mã #include #include "rijndael.h" #define KEYBITS 256 int main(int argc, char **argv) { unsigned long rk[RKLENGTH(KEYBITS)]; unsigned char key[KEYLENGTH(KEYBITS)]; int i; int nrounds; char *password; FILE *input; if (argc < 3) { 63 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael fputs("pass ko hop le", stderr); return 1; } password = argv[1]; for (i = 0; i < sizeof(key); i++) key[i] = *password != ? *password++ : 0; input = fopen(argv[2], "rb"); if (input == NULL) { fputs("doc file loi", stderr); return 1; } nrounds = rijndaelSetupDecrypt(rk, key, 256); while (1) { unsigned char plaintext[16]; unsigned char ciphertext[16]; int j; if (fread(ciphertext, sizeof(ciphertext), 1, input) != 1) break; rijndaelDecrypt(rk, nrounds, ciphertext, plaintext); fwrite(plaintext, sizeof(plaintext), 1, stdout); } fclose(input); } Các S_Box sử dụng chương trình gồm : Các S_Box cho mã hóa( S_Box) xây dựng từ bảng D1 Các S_Box cho giải mã( S_Box) xây dựng từ bảng D2 64 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael KẾT LUẬN Phương pháp Rijndael thích hợp cho việc triển khai nhiều hệ thống khác nhau, không máy tính cá nhân mà điển hình sử dụng chip Pentium, mà hệ thống thẻ thông minh Trên máy tính cá nhân, thuật tốn AES thực việc xử lý nhanh so với phương pháp mã hóa khác Trên hệ thống thẻ thông minh, phương pháp phát huy ưu điểm không nhờ vào tốc độ xử lý cao mà cịn nhờ vào mã chương trình ngắn gọn, thao tác xử lý sử dụng nhớ Ngồi ra, tất bước xử lý việc mã hóa giải mã thiết kế thích hợp với chế xử lý song song nên phương pháp Rijndael chứng tỏ mạnh hệ thống thiết bị Do đặc tính việc xử lý thao tác byte liệu nên khơng có khác biệt đặt triển khai hệ thống big-endian hay littleendian Xuyên suốt phương pháp AES, yêu cầu đơn giản việc thiết kế tính linh hoạt xử lý ln đặt đáp ứng Độ lớn khối liệu mã khóa tùy biến linh hoạt từ 128 đến 256-bit với điều kiện chia hết cho 32 Số lượng chu kỳ thay đổi tùy thuộc vào yêu cầu riêng đặt cho ứng dụng hệ thống cụ thể Tuy nhiên, tồn số hạn chế mà hầu hết liên quan đến trình giải mã Mã chương trình thời gian xử lý việc giải mã tương đối lớn việc mã hóa, thời gian nhanh đáng kể so với số phương pháp khác Khi cài đặt chương trình, q trình mã hóa giải mã không giống nên tận dụng lại tồn đoạn chương trình mã hóa bảng tra cứu cho việc giải mã Khi cài đặt phần cứng, việc giải mã sử dụng lại phần mạch điện tử sử dụng việc mã hóa với trình tự sử dụng khác 65 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Phương pháp Rijndael với mức độ an toàn cao ưu điểm đáng ý khác chắn nhanh chóng áp dụng rộng rãi nhiều ứng dụng hệ thống khác Do điều khả hạn chế, nên ứng dụng nhiều điểm chưa phù hợp, chưa đáp ứng nhu cầu sử dụng Tơi mong nhận nhiều ý kiến đóng góp để phát triển thành ứng dụng hồn thiện, phục vụ cho mục đích mã hố 66 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael TÀI LIỆU THAM KHẢO [1] PGS TS Hồ Thuần (2000), Giáo trình “Lý thuyết mật mã an toàn liệu”, Truờng Đại học Bách Khoa Hà Nội [2] TS Dương Anh Đức, ThS Trần Minh Triêt, Giáo trình “Mã hóa ứng dụng”, Trường Đại học Quốc gia TPHCM [3] Hà Thị Thanh - Nguyễn Văn Tảo, Giáo trình “An tồn bảo mật thông tin”, Đại học Thái Nguyên [4] http://download.phanvien.com/ [5] http://vi.wikipedia.org/wiki/AES [6] http://vntelecom.org/diendan [7] http://www.efgh.com/software/rijndael [8] http://www.koders.com/c 67 Đồ án tốt nghiệp ... ? ?Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael? ?? tơi nghiên cứu tập trung vào hai nội dung chính: (1) Tìm hiểu kỹ thuật mã hóa khóa bí mật Rijndael (2) Vận dụng kỹ thuật mã hoá Rijndael xây. .. giải mã văn giải mã mã hóa Hình Mơ hình mã hóa khóa cơng khai Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael Khi áp dụng hệ thống mã hóa khóa cơng cộng, người A sử dụng mã khóa... dụng mã khóa k để giải mã thơng điệp y Vấn đề an toàn 14 Đồ án tốt nghiệp Tìm hiểu xây dựng chương trình mơ mã hóa Rijndael bảo mật thơng tin mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa