HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN 1 BÁO CÁO BÀI TẬP NHÓM Đề tài “ TÌM HIỂU VỀ MẬT MÃ DÒNG RC4 ” Môn Học MẬT MÃ HỌC CƠ SỞ Giáo viên THS CAO MINH THẮNG Nhóm Lớp[.]
Trang 1Hà Nội, tháng 5
2 : Thực Hiện Tổ
:
Lớp
:
: Học
Môn
” TÌM HIỂU VỀ MẬT MÃ DÒNG RC4 “
:
Đề tài
NHÓM BÀI TẬP
BÁO CÁO
-
-KHOA CÔNG NGHỆ THÔNG TIN 1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2DANH SÁCH SINH VIÊN TỔ 02
1
2
3
4
5
6
7
8
9
10
2
Trang 3Nội Dung
I Giới Thiệu Mã hóa dòng 1
II Hệ mật RC4 1
1 Lịch sử 1
2 Mô tả hệ mật RC4 2
3 Các giai đoạn của RC4 3
a Giai đoạn khởi tạo S, T 3
b Giao đoạn sinh số 3
4 Ưu nhược điểm của RC4 4
a Ưu điểm 4
b Nhược điểm 4
III Hệ mật TinyRC4 4
1 Mô tả TinyRC4 4
2 Các giai đoạn sinh số của TinyRC4 4
a Giai đoạn khởi tạo: 4
b Giai đoạn sinh số: 6
3
Trang 4I Giới Thiệu Mã hóa dòng Mã hóa dòng là một mật mã khóa đối xứng, trong đó các
chữ số ở bản rõ được kết hợp với một dòng khóa Trong thực thế 1 chữ số thường là 1 bit
và phép toán kết hợp là XOR
Để mã hóa và giải mã, một trình tạo bit giả ngẫu nhiên trong đó một khóa và một văn bản được tải Trình tạo bit giả ngẫu nhiên tạo ra một luồng các số 8 bit được gọi là luồng chính Bây giờ khóa và văn bản gốc được XOR – XOR tạo ra đầu ra là 1 khi một đầu vào bằng 0 và đầu vào khác là 1, tạo ra đầu ra là 0 nếu cả hai đầu vào đều là 0 hoặc 1
Mật mã luồng thường thực thi ở tốc độ cao hơn mật mã khối và có độ phức tạp phần cứng thấp hơn Tuy nhiên, mật mã luồng có thể dễ bị tấn công
Cách phòng chống tấn công: Các khóa không bao giờ được sử dụng 2 lần
1
Trang 5II Hệ mật RC4
1 Lịch sử
RC4 được thiết kế bởi Ron Rivest của RSA Security vào năm 1987 Mặc dù nó được chính thức gọi là "Rivest Cipher 4", từ viết tắt RC được hiểu theo cách khác là viết tắt của "Ron Code"
RC4 ban đầ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ả
về nó đã được đăng ẩn danh lên danh sách gửi thư Cypherpunks Nó sớm được đăng trên nhóm tin tức sci.crypt, nơi nó được phân tích trong vài ngày bởi Bob Jenkins Từ đó nó lan ra nhiều trang trên Internet Mã bị rò rỉ đã được xác nhận là chính hãng vì đầu ra của
nó khớp với mã của phần mềm độc quyền sử dụng RC4 được cấp phép Bởi vì thuật toán
đã được biết đến, nó không còn là bí mật kinh doanh Tên RC4 đã được đăng ký nhãn hiệu, vì vậy RC4 thường được gọi là ARCFOUR hoặc ARC4 (có nghĩa là RC4 bị cáo buộc) để tránh các vấn đề về nhãn hiệu RSA Security chưa bao giờ chính thức phát hành thuật toán; Tuy nhiên, Rivest đã liên kết đến bài viết Wikipedia tiếng Anh trên RC4 trong ghi chú khóa học của riêng mình vào năm 2008 và xác nhận lịch sử của RC4 và mã của
nó trong một bài báo năm 2014
RC4 trở thành một phần của một số giao thức và tiêu chuẩn mã hóa thường được
sử dụng, chẳng hạn như WEP năm 1997 và WPA năm 2003/2004 cho thẻ không dây; và SSL vào năm 1995 và người kế nhiệm của nó là TLS vào năm 1999, cho đến khi nó bị cấm đối với tất cả các phiên bản của TLS bởi RFC 7465 vào năm 2015, do Các cuộc tấn công RC4 làm suy yếu hoặc phá vỡ RC4 được sử dụng trong SSL / TLS Các yếu tố chính dẫn đến thành công của RC4 trên một loạt các ứng dụng là tốc độ và sự đơn giản của nó: các triển khai hiệu quả trong cả phần mềm và phần cứng đều rất dễ phát triển
2
Trang 6RC4 thuộc nhóm mã dòng với độ dài khóa không cố định RC4 là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest RC4 đơn giản, nhưng hiệu quả, có nhiều cỡ khóa và là mã bit dòng Mã được sử dụng rộng rãi (web SSL/TLS, thuật toán bảo mật cho mạng không dây WEP) Khóa thực hiện hoán vị ngẫu nhiên cả 8 giá trị bit Sử dụng hoán vị đó để khuấy thông tin đầu vào được xử lý từng byte
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 I byte K được sinh ra bởi thuật toán sinh số giả ngẫu nhiên (PRGA)
Cơ chế hoạt động của RC4:
● Đơn vị mã hóa của RC4 là một byte 8 bít
● Mảng S và T gồm 256 số nguyên 8 bít
● Khóa K là một dãy gồm N số nguyên 8 bít với N có thể lấy giá trị 1 đến 256
3
Mô tả hệ mật RC4
2.
Trang 7● Bộ sinh số mỗi lần sinh ra một byte để sử dụng trong phép XOR
3 Các giai đoạn của RC4
a Giai đoạn khởi tạo S, T
2. Gán cho mỗi phân tử giá trị bằng chỉ số của nó: S[i] = i ,i=0 255
3. Tạo một mảng T gốm 256 phần tử , mỗi phần tử có kích thước 1 byte Điền đầy bảng k bằng các byte của khóa K : T[0]=K[0],T[1]=K[1] … Trong trường hợp cần thiết, khóa K được dùng lặp lại
4. Khởi tạo biến đếm j: j=0;
5. Xáo trộn khối S:
a. i=0…255
b.j = (j+S[i] +T[i]) mod 256
c. hoán đổi giá trị: S[i]<=>S[j]
/* Khoi tao day S va T*/
for i = 0 to 255 do S[i] = i;
T[i] = K[i mod N];
next i /* Hoan vi day S */ j = 0;
for i = 0 to 255 do j = (j + S[i] + T[i]) mod 256;
Swap(S[i], S[j]); next i
b Giao đoạn sinh số
i, j = 0; while (true) i = (i + 1) mod 256; j = (j + S[i]) mod 256; Swap (S[i], S[j]); t = (S[i] +
4
Trang 8S[j]) mod 256; k = S[t]; end while;
4 Ưu nhược điểm của RC4
● Thuật toán đơn giản, ỹ nghĩ của từng bước rõ rằng, logic
● Phù hợp với các hệ thống truyền dữ liệu thời gian thực trên môi trường mạng máy tính
● RC4 tỏ ra an toàn đối với cả 2 phương pháp thám cơ bản là thám tuyến tính và thám vi phân
● RC4 đạt được mức độ an toàn cao theo tinh thần của mã hóa One-Time Pad
● Mã hóa RC4 hoàn toàn được thực hiện trên các số nguyên một byte do đó tối
ưu cho việc thiết lập bằng phần mềm và tốc độ thực hiện nhanh hơn so với mã khối
● Mã cho kết quả rất phi tuyến và vì RC4 là mã dòng nên không được sử dụng lại khóa
III Hệ mật TinyRC4
1 Mô tả TinyRC4
● Là mô hình thu nhỏ của RC4
● Đơn vị mã hóa của TinyRC4 là 3 bít
● TinyRC4 dùng 2 mảng S và T mỗi mảng gồm 8 số nguyên 3 bit ( từ 0 đến 7)
● Khóa là một dãy gồm N số nguyên 3 bít với N có thể lấy giá trị từ 1 đến 8 Bộ sinh số mỗi lần sinh ra 3 bít để sử dụng trong phép XOR
2 Các giai đoạn sinh số của TinyRC4
a Giai đoạn khởi tạo:
/* Khoi tao day so S va T */
5
Trang 9for i = 0 to 7 do S[i] = i;
T[i] = K[i mod N];
next i /* Hoan vi day S */ j = 0; for i = 0 to 7 do j = (j + S[i] + T[i]) mod 8;
Swap(S[i], S[j]); next i
● Dãy S gồm các số nguyên 3 bit từ 0 đến 7 được sắp thứ tự tăng dần Dựa vào khóa K rồi S được hoán vị lẫn nhau đến một mức độ ngẫu nhiên nào đó
● Ví dụ: mã hóa bản rõ P = 001000110 (từ “bag”) với khóa K gồm 3 số 2, 1, 3 (N=3)
- Quá trình thực hiện đến khi i=7 và lúc đó dãy S là 6 0 7 1 2 3 5 4
6
Trang 10b Giai đoạn sinh số:
i, j = 0; while (true) i
= (i + 1) mod 8; j = (j + S[i]) mod 8;
Swap (S[i], S[j]); t = (S[i] + S[j]) mod 8;
k = S[t]; end while
● Các phần tử của S tiếp tục được hoán vị
● Tại mỗi bước sinh số, hai phần tử của dãy S được chọn để tính ra số k 3 bit là
số được dùng đẻ XOR với đơn vị mã hóa của bản rõ
- Vậy bản mã là C = 001.000.110 101.001.111 = 100.001.001 (từ EBB)
7