You are on page 1of 6

1.

Introduction (1 week) 🡪 Report: Week 10th


a. What is it? Why is it necessary?
− Mã hóa là một dạng của mật mã. Mã hóa là cách thức xáo trộn hay
biến thông tin từ dạng có thể đọc được sang dạng không thể đọc
được.

− RC4 hay còn được gọi là ARC4 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. Là một loại mã hoá khoá đối xứng (symmetric) dựa trên
mã hoá dạng dòng (stream cipher), nghĩa là mã hoá theo từng byte
của thông điệp. Mặc dù còn nhiều yếu điểm so với một số loại mã
hoá hiện đại mới ngày nay nhưng đây vẫn là một trong những loại
mã hoá được sử dụng phổ biến nhất trên thế giới do tính đơn giản,
tốc độ nhanh và dễ sử dụng; ngoài ra RC4 vẫn thường được cải tiến
và có các biến thể khác của RC4 như RC4+ , RC4A, Variably
Modified Permutation Composition (VMPC), Spritz…

− Hiện nay, các giao dịch tài chính, chuyển khoản, mua sắm hàng hoá,
thư từ, tài liệu… được thực hiện nhiều qua môi trường mạng đòi hỏi
dữ liệu phải được bảo mật tốt => Phải được mã hoá.
b. What are its applications?
− RC4 được dùng trong giao thức SSL (Secure Socket Layer) và TLS
(Transport Layer Security) để bảo mật dữ liệu trong quá trình truyền
dữ liệu giữa Web Server và trình duyệt Web.[2]
− RC4 còn được sử dụng trong mã hóa WEP (Wired Equivalent
Privacy) của mạng Wireless LAN mà hiện nay đã được thay thế
bằng giao thức WPA (Wi-fi Protected Access).[3]
− Ngoài ra RC4 còn được dùng trong Microsoft Lotus, Oracle Secure
SQL, Apple OCE, Microsoft Windows,…[4]
c. What are algorithms?
Thuật toán RC4 gồm 2 bước chính là khởi tạo và giải mã:
● Khởi tạo:
+ Mảng S chứa giá trị từ 0 đến 255
+ Mảng T được lắp đầy bằng giá trị của key

[5]
● Giai đoạn 2 của RC4 gồm 2 giải thuật quan trọng: key
scheduling algorithm (KSA) dùng để khởi tạo S-box bằng
cách hoán vị ; pseudo-random generation algorithm (PRGA)
sinh ra chuỗi số giả ngẫu nhiên dùng để tạo ra keystream.

Algorithm 1: Key Scheduling Algorithm[6]


Input: Key, key_length
Output: Permuted S-box (S)
1. Initialize S = [0,1, …, 255], j = 0
2. for i = 0, …, 255 do
a. update j =( j +S[i]+key[i] mod key_length) mod 256
b. swap S[i] with S[j]
3. end for
4. return S
− Thuật toán KSA nhận đầu vào là một khóa có độ dài thay đổi được
và bắt đầu khởi tạo mảng S-box bằng cách hoán vị, lặp lại 256 lần
trong đó hai mảng của S-box được hoán đổi ở mỗi lần lặp.

Algorithm 2: Pseudo-Random Generation Algorithm[7]


Input: S-box (S)
Output: Key stream
1. Initialize i = 0, j = 0
2. While (more bytes to encrypt) do
a. update i = i+1, j =( j+S[i]) mod 256
b. swap S[i] with S[j]
c. update k = (S[i]+S[j]) mod 256
d. output S[k]
3. end while

− Thuật toán PRGA bao gồm các bước giống với KSA nhưng có hai
điểm khác biệt. Đầu tiên, để tính toán giá trị mới của j chỉ cần giá trị
cũ của j và S [i], trong khi KSA cần thêm giá trị của key. Thứ hai,
trong thuật toán PRGA, S [i] và S [j] được sử dụng để tính k, một
biến được sử dụng để xác định index cho S[k]. Mỗi byte được tạo
(S[k]) được XOR với một byte của Plaintext để tạo ra một byte của
Ciphertext.

d. What is the best algorithm currently? Why?


− Hiện tại 2 thuật toán KSA và PRGA là thuật toán tốt nhất để thực
hiện RC4.

2. Software (C, Python, Matlab) implementation (1 week) 🡪 Report: Week 11th

[8]
− Ý tưởng của RC4 là đạt được tính ngẫu nhiên giả bằng cách hoán đổi
giữa các phần tử trong mảng. Thuật toán bao gồm KSA và PRGA,
được biểu diễn bằng mã giả trong Thuật toán 1 và Thuật toán 2
tương ứng. Sau khi mảng xáo trộn được khởi tạo xong bởi KSA,
PRGA liên tục sản xuất một loạt số giả ngẫu nhiên. Đầu ra của
PRGA là một chuỗi sẽ được XOR với plaintext (hoặc ciphertext) để
lấy ciphertext (hoặc plaintext).
− Mô phỏng RC4 bằng phần mềm được nhóm thực hiện bằng python.
− RC4 chủ yếu được thực hiện trong phần mềm nhưng đã có một số
phương pháp để đạt hiệu suất cao hơn bằng cách thiết kế phần cứng.
Các phương pháp này phục vụ nhu cầu ngày càng tăng trong việc
truyền thông an toàn với tốc độ cao và trong việc bảo vệ an toàn các
hệ thống nhúng.

3. Hardware implementation
a. Datapath Hardware architecture of the best algorithm? (Functional blocks,
RTL design architecture, Sharing techniques, Pipeline techniques) (1 week)
🡪 Report: 12th
b. Controller (Finite State Machine): (1 Week) 🡪 Report: Week 13th
c. Verilog HDL Design (1 Week) 🡪 Report: Week 14th
d. Verification (1 week) 🡪 Report: Week 15th
i. Pre-synthesis verification vs Software implementation
ii. Post-synthesis verification vs Software implementation
4. References
[2][3][5] Ashraf Aboshosha , Kamal A. ElDahshan , Eman K. Elsayed , and
Ahmed A. Elngar (2015), “ EA Based Dynamic Key Generation in RC4 Ciphering
Applied to CMS”, pp 406, https://www.researchgate.net/publication/275716296.
[4] Sepehrdad, Pouyan; Susil, Petr; Vaudenay, Serge; Vuagnoux, Martin (2015),
“Tornado Attack on RC4 with Applications to WEP & WPA⋆”, pp. 1,
https://infoscience.epfl.ch/record/206908.
[6],[7], Eyad Taqieddin, Ola Abu-Rjei, Khaldoon Mhaidat, Raed Bani-Hani
(2015), “Efficient FPGA Implementation of the RC4 Stream Cipher using Block
RAM and Pipelining”, pp. 9,
https://www.sciencedirect.com/science/article/pii/S1877050915024345.
[8], Paris Kitos, Nikolas Sklavos, Giogos Kostopoulos, Odysseas G.Koufopavlou
(2003), “Hardware implementation of the RC4 stream cipher”, pp. 2, 3,
https://ieeexplore.ieee.org/document/1562548.

Reference material resources:


- Books
- https://ieeexplore.ieee.org/Xplore/home.jsp
- https://link.springer.com/
- https://www.sciencedirect.com/
- https://dl.acm.org/
- https://www.mdpi.com/
- https://www.hindawi.com/
- https://onlinelibrary.wiley.com/
- Lectures from universities (national, international universities)
- Wiki
- Github
- https://sci-hub.hkvisa.net/

You might also like