Nhóm đã lựa chọn RC4 trong rất nhiều kiểu mật mã khác để nghiên cứu bởi vì tốc độ và sự đơn giản của nó, hiệu quả triển khai thực hiện trong cả phần mềm và phần cứng là rất dễ dàng để phát triển. Mục tiêu đặt ra khi thực hiện đề tài ngày gồm: Tìm hiểu tổng quan về thuật toán RC4. Phân tích và làm rõ được tính bảo mật của thuật toán RC4. Xây dựng được một chương trình minh họa thuật toán.
BÀI TẬP LỚN MƠN HỌC MẬT MÃ THUẬT TỐN RC4 Thực hiện: Nguyễn Xuân Khánh Nguyễn Thị Thanh Hương Nguyễn Thị Hồi Trang THUẬT TỐN RC4 ii THUẬT TOÁN RC4 Ý KIẾN CỦA GIẢNG VIÊN i THUẬT TOÁN RC4 MỤC LỤC Ý KIẾN CỦA GIẢNG VIÊN .I MỤC LỤC II ii THUẬT TOÁN RC4 DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Viết tắt CBC KSA PDF PRGA RC4 SSL TLS WEP WPA Giải thích Cipher Block Chaining Key scheduling algorithm Portable Document Format Pseudo-random generation algorithm Rivest Cipher Secure Sockets Layer Transport Layer Security Wired Equivalent Privacy Wireless Protected Area iii THUẬT TOÁN RC4 DANH MỤC CÁC HÌNH VẼ Hình 3.4.a Giao diện .9 Hình 3.4.b Giao diện form Input Form mã hóa 10 Hình 3.4.c Giao diện form mã hóa .10 Hình 3.4.d Giao diện form giải hóa 10 Hình 3.5.a Kết từ website rc4.online-domain-tools.com .11 Hình 3.5.b Kết từ chương trình 11 iv THUẬT TOÁN RC4 LỜI MỞ ĐẦU Ngày nay, thông tin liên lạc trở nên phổ biến vô thuận lợi Song song với điều này, nhu cầu bảo mật thông tin ngày đặt cấp thiết Vì vậy, mật mã nghiên cứu rộng rãi, ứng dụng nhiều nói đến nhiều hết Nhóm lựa chọn RC4 nhiều kiểu mật mã khác để nghiên cứu tốc độ đơn giản nó, hiệu triển khai thực phần mềm phần cứng dễ dàng để phát triển Mục tiêu đặt thực đề tài ngày gồm: - Tìm hiểu tổng quan thuật tốn RC4 - Phân tích làm rõ tính bảo mật thuật tốn RC4 - Xây dựng chương trình minh họa thuật tốn Nhóm xin cảm ơn hướng dẫn tận tình thầy giáo môn chuyên môn định hướng Vì kiến thức hạn hẹp nên q trình thực đề tài khơng thể tránh khỏi thiếu sót Rất mong nhận nhận góp ý thầy để đề tài hồn thiện v MẬT MÃ HỌC NÂNG CAO THUẬT TOÁN RC4 CHƯƠNG GIỚI THIỆU VỀ THUẬT TOÁN RC4 1.1 Lịch sử RC4 RC4 có tên gọi đầy đủ Rivest Cipher thiết kế Ron Rivest hãng bảo mật RSA Security vào năm 1987 RC4 bước đầu bí mật thương mại, vào tháng năm 1994, mơ tả gửi ẩn danh với Cypherpunks Nó sớm đăng lên nhóm tin sci.crypt, sau có mặt nhiều trang Web khác Các mã rò rỉ xác nhận có kết mã hóa giống với RC4 ban đầu Bởi thuật tốn bị rò rỉ RC4 khơng bí mật thương mại Do tên RC4 đăng ký thương hiệu nên gọi tắt ARCFOUR ARC4 RC4 mã dòng sử dụng rộng rãi dùng giao thức như: SSL, TLS (để bảo vệ lưu lượng Internet) WEP, WPA (để đảm bảo an tồn mạng khơng dây) Các yếu tố thành cơng RC4 tốc độ đơn giản Hiệu triển khai thực phần mềm phần cứng dễ dàng để phát triển 1.2 Mô tả thuật toán Các thuật toán RC4 đơn giản dễ dàng để giải thích Một khóa có độ dài từ tới 2048 bit sử dụng để khởi tạo 256 byte trạng thái S, với phần tử S[0], S[1],…,S[255] Vào thời điểm, S chứa hoán số bit (từ đến 255) Đối với mã hóa giải mã, l byte K tạo từ S cách chọn 256 phần tử cách có hệ thống Khi giá trị K tạo ra, phần tử S lần hoán vị Hoán vị ban đầu sử dụng thuật toán lập lịch khóa (KSA) Sau bước hồn thành, l byte K sinh thuật toán sinh số giả ngẫu nhiên (PRGA) THUẬT TOÁN RC4 1.2.1 Giai đoạn khởi tạo Để bắt đầu, mục S thiết lập giá trị từ đến 255 theo thứ tự tăng dần, S[0] = 0, S[1] = 1,…, S[255]=255 Một mảng tạm thời T tạo Mảng T mảng chép từ K sau K lặp lặp lại nhiều lần lấp đủ 256 byte Các hoạt động sơ mơ tả với thuật tốn sau: for i = to 255 S[i] = i; T[i] = K[i mod lengthK]; endfor Với lengthK kích thước khóa K 1.2.2 Thuật tốn lập lịch khóa (KSA) Tiếp theo, sử dụng T để lập lịch khóa S Điều liên quan đến việc bắt đầu với S[0] tới S[255], S[i], hoán đổi S[i] với byte khác S định sẵn theo thuật toán này: j = 0; for i = to 255 j = (j + S[i] + T[i]) mod 256; HoanVi(S[i], S[j]); endfor Thuật toán định T[i] hoạt động S hốn đổi Vì phép hốn vị nên S chứa tất số từ đến 255 1.2.3 Thuật toán sinh số giả ngẫu nhiên (PRGA) Một lập lịch khóa hồn thành khóa K đầu vào khơng sử dụng Sinh số liên quan đến việc xoay vòng qua tất phần tử S[i], S[i], hoán đổi S[i] với byte khác S theo thuật toán THUẬT TOÁN RC4 định giá trị S Sau đến S[255], trình tiếp tục, bắt đầu lại lần S[0] i, j = 0; while (true) i = (i + 1) mod 256; j = (j + S[i]) mod 256; HoanVi(S[i], S[j]); t = (S[i] + S[j]) mod 256; k = S[t]; end while; 1.2.4 Mã hóa giải mã Để mã hóa, XOR giá trị k với byte gốc P Để giải mã, XOR giá trị k với byte mã C THUẬT TOÁN RC4 CHƯƠNG TÍNH BẢO MẬT CỦA THUẬT TỐN RC4 2.1 Độ an tồn Khơng giống mã dòng đại (ví dụ eSTREAM), RC4 không tạo giá trị ngẫu nhiên riêng biệt với khóa Điều có nghĩa khóa dài hạn sử dụng để mã hóa cho nhiều dòng, phải miêu tả cách gắn giá trị ngẫu nhiên để tạo dòng khóa cho RC4 Một cách tiếp cận để giải vấn đề này, để “làm tươi” khóa, người ta băm khóa dài hạn với giá trị ngẫu nhiên Tuy nhiên, nhiều ứng dụng sử dụng RC4 đơn giản nối khóa với giá trị ngẫu nhiên Khóa lập lịch yếu RC4 đem lại loạt vấn đề nghiêm trọng Đáng ý là, mã dòng RC4, thuật tốn mã hóa thơng thường, lại kháng lại cơng BEAST (tìm vào năm 2011) vào giao thức TLS 1.0, khai thác điểm yếu biết đến chế độ xích mã khối (CBC), gồm tất hệ mã khối hỗ trợ TLS 1.0 Trong năm 2013 có kịch công đề xuất AlFardan, Bernstein, Paterson, Poettering Schuldt sử dụng sai số thống kê bảng khóa RC4, để phục hồi rõ với số lượng lớn lần mã hóa TLS 2.2 Độ chệch Roos việc thiết lập lại khóa từ hốn vị Trong năm 1995, Andrew Roos quan sát thực nghiệm byte dòng khóa có quan hệ với byte khóa byte hốn vị sau KSA có quan hệ với tổ hợp tuyến tính byte khóa Nhưng độ chệch chưa chứng minh năm 2007, Gautam Paul, Siddheshwar Rathi Subhamoy Maitra chứng minh tưng quan dòng khóa – khóa cơng trình khác Gautam Paul, Subhamoy Maitra chứng minh tương quan hoán vị - khóa Cơng trình sau sử dụng tương quan hốn vị - khóa để thiết kế thuật tốn nhằm thiết lập lại khóa đầy đủ từ hốn vị cuối sau KSA mà không cần giả thiết vào khóa véc tơ khởi tạo Thuật tốn có xác suất thành cơng khơng đổi thời gian bậc hai độ phức tạp tìm kiếm vét cạn khóa Sau đó, nhiều cơng trình khác thực để thiết lập lại khóa từ trạng thái bên THUẬT TOÁN RC4 Subhamoy Maitra Gautam Paul chứng tỏ độ chệch kiểu Roos người ta xét xác số hoán vị lồng S[S[i]] S[S[S[i]]] Những kiểu chệch dùng vài phương pháp thiết lập lại khóa sau nhằm tăng xác suất thành công 2.3 Những đầu chệch RC4 Dòng khóa sinh RC4 bị chệch theo nhiều mức độ khác dãy định làm cho bị tổn thương trước công phân biệt Tấn công tốt loại thuộc Itsik Mantin Adi Shamir, người byte thứ hai mật mã bị chệch từ với xác suất 1/128 (thay cho 1/256) Nếu byte thứ trạng thại gốc 0, byte thứ không byte thứ hai ln ln Sự chệch bị phát cách quan sát 256 byte Souradyuti Bart Preneel COSIC chứng tỏ byte thứ thứ hai RC4 bị chệch Số mẫu cần thiết để phát chệch 225 byte Scott Fluhrer David McGrew chứng tỏ cơng thế, chúng phân biệt dòng khóa với dòng ngẫu nhiên cho a gigabyte đầu Đặc trưng đầy đủ bước đơn PRGA RC4 thực đầy đủ nhiều tác giả Khi xem xét tất hoán vị, họ chứng minh phân phối đầu không cho i j, hệ quả, thơng tin j ln ln bị rò rỉ vào đầu 2.4 Những hệ mật dựa RC4 RC4 sử dụng rộng rãi Có thể liệt kê số hệ mật sau: WEP, WPA (thuật toán mặc định), BitTorrent protocol encryption, Secure Sockets Layer (tùy chọn), Microsoft Point-to-Point Encryption, Secure Shell (tùy chọn), Remote Desktop Protocol, Kerberos (tùy chọn), PDF, Skype (ở dạng sửa đổi), hệ mật lưu ý với “tùy chọn” RC4 vài mật mã mà hệ thống cấu hình để sử dụng THUẬT TỐN RC4 CHƯƠNG THIẾT KẾ CHƯƠNG TRÌNH 3.1 Phân tích u cầu - Thiết kế chương trình mã hóa giải mã thuật tốn RC4 - Chương trình nhận đầu vào từ file “input.txt”, xuất kết file “encrypt.txt” “decrypt.txt” Tất file nằm thư mục với file chương trình Dữ liệu file biểu diễn dạng chuỗi HEX viết thường - File “input.txt” gồm dòng: + Dòng 1: Khóa + Dòng 2: Khối liệu rõ - File “encrypt.txt” gồm x dòng: + Dòng 1: Khóa + Dòng 2: Dòng khóa mã hóa + Dòng 3: Bản rõ + Dòng 4: Bản mã + Dòng x: Dòng khóa mã hóa ngắt thành đoạn 16 byte, đoạn lưu dòng - File “decrypt.txt” gồm y dòng: + Dòng 1: Khóa + Dòng 2: Dòng khóa giải mã + Dòng 3: Bản mã + Dòng 4: Bản rõ THUẬT TỐN RC4 + Dòng y: Dòng khóa giải mã ngắt thành đoạn 16 byte, đoạn lưu dòng - Có khả tạo khóa rõ với giá trị ngẫu nhiên Hoặc nhập đầu vào theo ký tự ASCII chuyển đổi qua lại sang HEX 3.2 Thiết kế chương trình Chương trình có Form để chứa nút: Tạo file Input, Mã hóa, Giải mã • Form Input: - Có Button để tạo khóa rõ với giá trị ngẫu nhiên - Có thể chuyển đổi qua lại ASCII HEX - Có Button lưu file để xuất file định dạng yêu cầu • Form Mã Hóa: - Mặc định tải liệu từ file input chọn file tùy ý - Có Button mã hóa đồng thời xuất file “encrypt.txt” định dạng yêu cầu - Hiển thị giá trị khóa rõ từ liệu đầu vào - Hiển thị giá trị vector T, S ban đầu, S sau lập lịch khóa số giả ngẫu nhiên dùng để mã hóa - Hiển thị mã • Form Giải Mã: - Tương tự với form Mã Hóa không hiển thị vector T S 3.3 Cài đặt thuật tốn Chương trình triển khai ngôn ngữ NET sử dụng công cụ Visual Studio để lập trình THUẬT TỐN RC4 • Khởi tạo mảng T S: For i As Integer = To 255 arrKeyT(i) = arrKey(i Mod ((strKey.Length / 2))) arrKeyS(i) = i Next • Thuật tốn lập lịch khóa: Dim j As Integer = For i As Integer = To 255 j = (j + arrKeyS(i) + arrKeyT(i)) Mod 256 Dim bytehoanvi As Byte bytehoanvi = arrKeyS(i) arrKeyS(i) = arrKeyS(j) arrKeyS(j) = bytehoanvi Next • Thuật toán sinh số giả ngẫu nhiên: Dim arrKeyFinal(arrText.Length - 1) As Byte Dim dem As Integer = Dim ii As Integer = Dim jj As Integer = Dim lenght As Integer = arrText.Length While lenght > ii = (ii + 1) Mod 256 jj = (jj + arrKeyS(ii)) Mod 256 Dim bytehoanvi As Byte bytehoanvi = arrKeyS(ii) arrKeyS(ii) = arrKeyS(jj) arrKeyS(jj) = bytehoanvi arrKeyFinal(dem) = arrKeyS((Convert.ToInt16(arrKeyS(ii)) + THUẬT TOÁN RC4 Convert.ToInt16(arrKeyS(jj))) Mod 256) dem = dem + lenght = lenght - End While • Mã hóa: Dim arrEncrypt(arrText.Length - 1) As Byte For i As Integer = To arrText.Length - arrEncrypt(i) = arrText(i) Xor arrKeyFinal(i) Next Do việc mã hóa rõ qua phép toán XOR nên việc giải mã sử dụng lại thuật tốn cũ mã hóa 3.4 Thiết kế giao diện • Giao diện Hình 3.4.a Giao diện • Form tạo file input Hình 3.4.b Giao diện form Input THUẬT TỐN RC4 • Form mã hóa Hình 3.4.c Giao diện form mã hóa • Form giải mã Hình 3.4.d Giao diện form giải hóa 3.5 Kiểm tra tính đắn kết mã hóa Sau thiết kế cài đặt chương trình hồn tất Nhóm sử dụng vector test để kiểm tra tính đắn kết mã hóa Các khóa rõ dạng mã ASCII, dòng khóa mã hệ số 16 Key Key Wiki Secret Keystream EB9F7781B734CA72A719 6044DB6D41B7 04D46B053CA87B59 Plaintext Plaintext pedia Attack at Ciphertext BBF316E8D940AF0AD3 1021BF0420 45A01F645FC35B383552544B9BF5 dawn Nguồn http://en.wikipedia.org/wiki/RC4 10 THUẬT TỐN RC4 Kết mã hóa chương trình hồn toàn trùng khớp với vector test Tuy nhiên nhóm sử dụng thêm cơng cụ mã hóa RC4 online (http://rc4.online-domain-tools.com) để kiểm thử thêm nhiều trường hợp khác nhận kết hoàn toàn trùng khớp Hình 3.5.a Kết từ website rc4.online-domain-tools.com Hình 3.5.b Kết từ chương trình 11 THUẬT TỐN RC4 KẾT LUẬN Báo cáo tìm hiểu thuật tốn RC4 Qua thấy thuật tốn RC4 đơn giản, ý nghĩa bước rõ ràng, logic dễ dàng triển khai Đồng thời RC4 tỏ an toàn với phương pháp thám mã bản thám mã tuyến tính thám mã vi phân Trong thời gian qua, nhóm em tìm hiểu tổng quan RC4, phân tích tính bảo mật thuật tốn Thơng qua tìm hiểu nhóm em xây dựng chương trình minh họa thuật tốn Tuy nhiên thời gian có hạn, kiến thức chưa sâu nên báo cáo nhiều thiếu sót mong bạn thầy giáo có nhận xét ý kiến để giúp cho báo cáo nhóm chúng em hồn thiện thêm 12 THUẬT TOÁN RC4 TÀI LIỆU THAM KHẢO [1] TS Nguyễn Ngọc Cương, TS Nguyễn Tuấn Anh, ThS Trần Thị Lương, Giáo trình Mật mã ứng dụng an tồn thơng tin, Học viện kỹ thuật mật mã, 2013, trang 13-14 76-81 [2] RC4 Algorithm, http://en.wikipedia.org/wiki/RC4, 01/2015 [3] RC4 - Symmetric Ciphers Online, http://rc4.online-domain-tools.com/, 01/2015 [4] Vishwas Gagrani, Presentation over Cryptographic Primitives (RC4), http://www.youtube.com/watch?v=KM-xZYZXElk, 01/2015 13 ... MÃ HỌC NÂNG CAO THUẬT TOÁN RC4 CHƯƠNG GIỚI THIỆU VỀ THUẬT TỐN RC4 1.1 Lịch sử RC4 RC4 có tên gọi đầy đủ Rivest Cipher thiết kế Ron Rivest hãng bảo mật RSA Security vào năm 1987 RC4 bước đầu bí... i THUẬT TOÁN RC4 MỤC LỤC Ý KIẾN CỦA GIẢNG VIÊN .I MỤC LỤC II ii THUẬT TOÁN RC4 DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Viết tắt CBC KSA PDF PRGA RC4 SSL TLS WEP WPA... khớp Hình 3.5.a Kết từ website rc4. online-domain-tools.com Hình 3.5.b Kết từ chương trình 11 THUẬT TỐN RC4 KẾT LUẬN Báo cáo tìm hiểu thuật tốn RC4 Qua thấy thuật tốn RC4 đơn giản, ý nghĩa bước rõ