1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật toán RC4 và cài đặt mô phỏng trên môi trường .NET

20 1,6K 15

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 321,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

MẬT MÃ

THUẬT TOÁN RC4

Thực hiện:

1 Nguyễn Xuân Khánh

2 Nguyễn Thị Thanh Hương

3 Nguyễn Thị Hoài Trang

Trang 2

THUẬT TOÁN RC4

Trang 3

Ý KIẾN CỦA GIẢNG VIÊN

Trang 4

THUẬT TOÁN RC4

MỤC LỤC

Ý KIẾN CỦA GIẢNG VIÊN I MỤC LỤC II

Trang 5

DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT

Viết tắt Giải thích

CBC Cipher Block Chaining

KSA Key scheduling algorithm

PDF Portable Document Format

PRGA Pseudo-random generation algorithm

RC4 Rivest Cipher 4

SSL Secure Sockets Layer

TLS Transport Layer Security

WEP Wired Equivalent Privacy

WPA Wireless Protected Area

Trang 6

THUẬT TOÁN RC4

DANH MỤC CÁC HÌNH VẼ

Hình 3.4.a Giao diện chính 9

Hình 3.4.b Giao diện form Input 9

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 quả từ website rc4.online-domain-tools.com 11

Hình 3.5.b Kết quả từ chương trình 11

Trang 7

LỜI MỞ ĐẦU

Ngày nay, thông tin liên lạc đã trở nên rất phổ biến và vô cùng thuận lợi Song song với điều này, nhu cầu bảo mật thông tin ngày càng được đặt ra cấp thiết hơn Vì vậy, mật mã được nghiên cứu rộng rãi, được ứng dụng nhiều hơn

và được nói đến nhiều hơn bao giờ hết

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

Nhóm cũng xin cảm ơn sự hướng dẫn tận tình của thầy giáo bộ môn cả về chuyên môn cũng như định hướng Vì kiến thức còn hạn hẹp nên trong quá trình thực hiện đề tài không thể tránh khỏi thiếu sót Rất mong nhận được nhận sự góp

ý của thầy cô để đề tài có thể hoàn thiện hơn nữa

Trang 8

MẬT MÃ HỌC NÂNG CAO THUẬT TOÁN RC4

CHƯƠNG 1 GIỚI THIỆU VỀ THUẬT TOÁN RC4

1.1 Lịch sử RC4

RC4 có tên gọi đầy đủ là Rivest Cipher 4 và được thiết kế bởi Ron Rivest của hãng bảo mật RSA Security vào năm 1987

RC4 bước đầu là một bí mật thương mại, nhưng vào tháng 9 năm 1994, một

mô tả của nó được gửi ẩn danh với Cypherpunks Nó sớm được đăng lên nhóm tin sci.crypt, và sau đó có mặt trên nhiều trang Web khác Các mã rò rỉ đã được xác nhận có kết quả mã hóa giống với RC4 ban đầu Bởi vì các thuật toán đã bị

rò rỉ cho nên RC4 không còn là một bí mật thương mại Do cái tên RC4 đã được đăng ký thương hiệu nên nó đã được gọi tắt là ARCFOUR hoặc ARC4 RC4 là

mã dòng được sử dụng rộng rãi nhất và được dùng trong các giao thức như: SSL, TLS (để bảo vệ lưu lượng Internet) và WEP, WPA (để đảm bảo an toàn mạng không dây)

Các yếu tố chính trong thành công của RC4 là do 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

1.2 Mô tả thuật toán

Các thuật toán RC4 là khá đơn giản và dễ dàng để giải thích Một khóa có

độ dài từ 8 tới 2048 bit được sử dụng để khởi tạo 256 byte trạng thái S, với các phần tử S[0], S[1],…,S[255] Vào mọi thời điểm, S chứa một hoán vị của tất cả các số 8 bit (từ 0 đến 255) Đối với mã hóa và giải mã, l byte K được tạo ra từ S bằng cách chọn một trong 256 phần tử một cách có hệ thống Khi mỗi giá trị của

K được tạo ra, các phần tử trong S một lần nữa được hoán vị

Hoán vị ban đầu sử dụng thuật toán lập lịch khóa (KSA) Sau khi bước này được hoàn thành, l byte K được sinh ra bởi thuật toán sinh số giả ngẫu nhiên (PRGA)

Trang 9

1.2.1 Giai đoạn khởi tạo

Để bắt đầu, các mục của S được thiết lập bằng các giá trị từ 0 đến 255 theo thứ tự tăng dần, đó là S[0] = 0, S[1] = 1,…, S[255]=255 Một mảng tạm thời T cũng được tạo ra Mảng T là mảng được sao chép từ K và sau đó K được lặp đi lặp lại nhiều lần cho đến khi lấp đủ 256 byte Các hoạt động sơ bộ có thể được

mô tả với thuật toán như sau:

for i = 0 to 255 do

S[i] = i;

T[i] = K[i mod lengthK];

endfor

Với lengthK là kích thước khóa K

1.2.2 Thuật toán lập lịch khóa (KSA)

Tiếp theo, chúng ta sử dụng T để lập lịch khóa của S Điều này liên quan đến việc bắt đầu với S[0] và đi tới S[255], và ở mỗi S[i], hoán đổi S[i] với một byte khác trong S được định sẵn theo thuật toán này:

j = 0;

for i = 0 to 255 do

j = (j + S[i] + T[i]) mod 256;

HoanVi(S[i], S[j]);

endfor

Thuật toán được quyết định bởi T[i] nhưng hoạt động duy nhất trên S là hoán đổi Vì là phép hoán vị nên S vẫn còn chứa tất cả các số từ 0 đến 255

1.2.3 Thuật toán sinh số giả ngẫu nhiên (PRGA)

Một khi lập lịch khóa hoàn thành thì khóa K đầu vào không còn được sử dụng Sinh số liên quan đến việc xoay vòng qua tất cả các phần tử của S[i], và ở mỗi S[i], hoán đổi S[i] với một byte khác trong S theo thuật toán được quyết

Trang 10

THUẬT TOÁN RC4

định bởi các giá trị hiện tại của S Sau đó đến S[255], quá trình này tiếp tục, bắt đầu lại một lần nữa tại 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 và giải mã

Để mã hóa, XOR giá trị k với các byte tiếp theo của bản gốc P

Để giải mã, XOR giá trị k với các byte tiếp theo của bản mã C

Trang 11

CHƯƠNG 2 TÍNH BẢO MẬT CỦA THUẬT TOÁN RC4

2.1 Độ an toàn

Không giống như mã dòng hiện đại (ví dụ eSTREAM), RC4 không tạo một giá trị ngẫu nhiên riêng biệt đi cùng với khóa Điều này có nghĩa là nếu một khóa dài hạn được sử dụng để mã hóa cho nhiều dòng, thì phải miêu tả cách gắn giá trị ngẫu nhiên như nào để tạo dòng khóa cho RC4 Một cách tiếp cận để giải quyết vấn đề này, để “làm tươi” khóa, người ta băm khóa dài hạn cùng với một giá trị ngẫu nhiên Tuy nhiên, nhiều ứng dụng sử dụng RC4 chỉ đơn giản là nối khóa với giá trị ngẫu nhiên Khóa lập lịch yếu của RC4 đem lại một loạt các vấn

đề nghiêm trọng

Đáng chú ý là, mã dòng RC4, là một thuật toán mã hóa thông thường, lại kháng lại được tấn công BEAST (tìm ra vào năm 2011) vào giao thức TLS 1.0, khai thác điểm yếu được biết đến trong chế độ xích mã khối (CBC), gồm tất cả các hệ mã khối hỗ trợ bởi TLS 1.0 Trong năm 2013 đã có một kịch bản tấn công mới được đề xuất bởi AlFardan, Bernstein, Paterson, Poettering và Schuldt sử dụng sai số thống kê mới trong bảng khóa của RC4, để phục hồi bản rõ với số lượng lớn lần mã hóa của TLS

2.2 Độ chệch Roos và việc thiết lập lại khóa từ hoán vị

Trong năm 1995, Andrew Roos đã quan sát thực nghiệm rằng byte đầu tiên của dòng khóa có quan hệ với 3 byte đầu tiên của khóa và một ít byte đầu tiên của hoán vị sau KSA có quan hệ với tổ hợp tuyến tính nào đó của các byte khóa Nhưng độ chệch này vẫn còn chưa được chứng minh cho đến năm 2007, khi Gautam Paul, Siddheshwar Rathi và Subhamoy Maitra chứng minh tưng quan dòng khóa – khóa và trong công trình khác Gautam Paul, Subhamoy Maitra chứng minh các tương quan hoán vị - khóa Công trình sau cũng sử dụng các tương quan hoán vị - khóa để thiết kế thuật toán đầu tiên nhằm thiết lập lại khóa đầy đủ từ hoán vị cuối cùng sau KSA mà không cần giả thiết nào vào khóa hoặc véc tơ khởi tạo Thuật toán này có xác suất thành công không đổi trong một thời gian là căn bậc hai của độ phức tạp tìm kiếm vét cạn khóa Sau đó, nhiều công trình khác đã được thực hiện để thiết lập lại khóa từ các trạng thái bên trong

Trang 12

THUẬT TOÁN RC4

Subhamoy Maitra và Gautam Paul cũng chứng tỏ rằng những độ chệch kiểu Roos vẫn còn ngay cả khi người ta xét xác chỉ số hoán vị lồng nhau như S[S[i]] hoặc S[S[S[i]]] Những kiểu chệch này được dùng trong một vài phương pháp thiết lập lại khóa sau này nhằm tăng xác suất thành công

2.3 Những đầu ra chệch của RC4

Dòng khóa được sinh bởi RC4 bị chệch theo nhiều mức độ khác nhau đối với những dãy nhất định làm cho nó có thể bị tổn thương trước các tấn công phân biệt Tấn công tốt nhất loại này thuộc về Itsik Mantin và Adi Shamir, những người đã chỉ ra rằng byte ra thứ hai của mật mã bị chệch từ 0 với xác suất 1/128 (thay cho 1/256) Nếu byte thứ 3 của trạng thại gốc là 0, và byte thứ 2 không bằng 2 thì byte ra thứ hai luôn luôn là 0 Sự chệch như thế có thể bị phát hiện bằng cách quan sát chỉ 256 byte

Souradyuti và Bart Preneel của COSIC đã chứng tỏ rằng các byte thứ nhất

và thứ hai của RC4 cũng bị chệch Số các mẫu cần thiết để phát hiện chệch này

là 225 byte

Scott Fluhrer và David McGrew cũng chứng tỏ những tấn công như thế,

chúng đã phân biệt dòng khóa với dòng ngẫu nhiên khi cho a gigabyte đầu ra.

Đặc trưng đầy đủ của bước đơn PRGA của RC4 được thực hiện đầy đủ bởi nhiều tác giả Khi xem xét tất cả các hoán vị, họ đã chứng minh rằng phân phối của các đầu ra là không đều khi cho i và j, và như một hệ quả, thông tin về j luôn luôn bị rò rỉ vào đầu ra

2.4 Những hệ mật dựa trên RC4

RC4 được sử dụng khá rộng rãi Có thể liệt kê ra một số hệ mật như 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), trong đó một hệ mật được lưu ý với “tùy chọn” thì RC4 là một trong một vài mật mã mà hệ thống này có thể được cấu hình để sử dụng

Trang 13

CHƯƠNG 3 THIẾT KẾ CHƯƠNG TRÌNH

3.1 Phân tích yêu cầu

- Thiết kế một chương trình mã hóa và giải mã bằng thuật toán RC4

- Chương trình nhận đầu vào từ file “input.txt”, xuất kết quả ra 2 file

“encrypt.txt” và “decrypt.txt” Tất cả các file này nằm trong cùng thư mục với file chương trình Dữ liệu các file được biểu diễn dưới dạng chuỗi HEX viết thường

- File “input.txt” gồm 2 dòng:

+ Dòng 1: Khóa

+ Dòng 2: Khối dữ liệu bản 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 5 x: Dòng khóa mã hóa được ngắt thành từng đoạn 16 byte, mỗi đoạn lưu trên một 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õ

Trang 14

THUẬT TOÁN RC4

+ Dòng 5 y: Dòng khóa giải mã được ngắt thành từng đoạn 16 byte, mỗi đoạn lưu trên một dòng

- Có khả năng tạo khóa và bản rõ với các giá trị ngẫu nhiên Hoặc có thể nhập đầu vào theo các ký tự ASCII và chuyển đổi qua lại sang HEX

3.2 Thiết kế chương trình

Chương trình có một Form chính để chứa 3 nút: Tạo file Input, Mã hóa, Giải mã

• Form Input:

- Có các Button để tạo ra khóa và bản rõ với các giá trị ngẫu nhiên

- Có thể chuyển đổi qua lại giữa ASCII và HEX

- Có Button lưu file để xuất ra file đúng định dạng yêu cầu

• Form Mã Hóa:

- Mặc định sẽ tải dữ liệu từ file input hoặc có thể chọn file tùy ý

- Có Button mã hóa đồng thời xuất ra file “encrypt.txt” đúng định dạng yêu cầu

- Hiển thị giá trị của khóa và bản rõ từ dữ liệu đầu vào

- Hiển thị giá trị vector T, S ban đầu, S sau lập lịch khóa và số giả ngẫu nhiên dùng để mã hóa

- Hiển thị được bản mã

• Form Giải Mã:

- Tương tự với form Mã Hóa nhưng không hiển thị các vector T và S

3.3 Cài đặt thuật toán

Chương trình được triển khai trên ngôn ngữ NET và sử dụng bộ công cụ

Trang 15

• Khởi tạo 2 mảng T và S:

For i As Integer = 0 To 255

arrKeyT(i) = arrKey(i Mod ((strKey.Length / 2)))

arrKeyS(i) = i

Next

• Thuật toán lập lịch khóa:

Dim j As Integer = 0

For i As Integer = 0 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 = 0

Dim ii As Integer = 0

Dim jj As Integer = 0

Dim lenght As Integer = arrText.Length

While lenght > 0

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)) +

Trang 16

THUẬT TOÁN RC4

Convert ToInt16(arrKeyS(jj))) Mod 256) dem = dem + 1

lenght = lenght - 1

End While

• Mã hóa:

Dim arrEncrypt(arrText.Length - 1) As Byte

For i As Integer = 0 To arrText.Length - 1

arrEncrypt(i) = arrText(i) Xor arrKeyFinal(i)

Next

Do việc mã hóa bản rõ chỉ qua một phép toán XOR nên việc giải mã chúng

ta có thể sử dụng lại các thuật toán cũ của mã hóa

3.4 Thiết kế giao diện

• Giao diện chính

Hình 3.4.a Giao diện chính

• Form tạo file input

Hình 3.4.b Giao diện form Input

Trang 17

• 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 đúng đắn của kết quả mã hóa

Sau khi thiết kế và cài đặt chương trình hoàn tất Nhóm đã sử dụng những vector test để kiểm tra tính đúng đắn của kết quả mã hóa Các khóa và bản rõ ở dạng mã ASCII, dòng khóa và bản mã trong hệ cơ số 16

Key Keystream Plaintext Ciphertext

Key EB9F7781B734CA72A719 Plaintext BBF316E8D940AF0AD3

Secret 04D46B053CA87B59 Attack at

dawn

45A01F645FC35B383552544B9BF5

Nguồn http://en.wikipedia.org/wiki/RC4

Trang 18

THUẬT TOÁN RC4

Kết quả mã hóa của chương trình hoàn toàn trùng khớp với 3 vector test trên Tuy nhiên nhóm đã sử dụng thêm một 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

và nhận được kết quả hoàn toàn trùng khớp

Hình 3.5.a Kết quả từ website rc4.online-domain-tools.com

Hình 3.5.b Kết quả từ chương trình

Trang 19

KẾT LUẬN

Báo cáo này tìm hiểu về thuật toán RC4 Qua đó chúng ta thấy thuật toán RC4 khá đơn giản, ý nghĩa từng bước rõ ràng, logic và cũng dễ dàng triển khai Đồng thời RC4 cũng tỏ ra an toàn với phương pháp thám mã cơ bản bản là thám

mã tuyến tính và thám mã vi phân

Trong thời gian qua, nhóm em đã tìm hiểu tổng quan được về RC4, phân tích được tính bảo mật của thuật toán Thông qua những tìm hiểu trên nhóm em còn xây dựng được một chương trình minh họa thuật toán đó Tuy nhiên do thời gian có hạn, kiến thức chưa được sâu nên bản báo cáo này còn nhiều thiếu sót mong các bạn và thầy giáo có những nhận xét và ý kiến để giúp cho bản báo cáo của nhóm chúng em hoàn thiện thêm

Trang 20

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 trong an toà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

Ngày đăng: 09/11/2017, 11:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w