Hệ mật mã khối RC

Một phần của tài liệu Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố (Trang 25 - 26)

Tác giả của nó là Ron Rivest – một trong 3 tác giả của hệ mật nổi tiếng RSA. RC2 sử dụng khối có độ dài 64 bits, khóa có độ dài từ 8 đến 1024 bits. Thuật toán trong RC2 được thiết kế để có thể dễ dàng (và hiệu quả) triển khai trong hệ thống với bộ vi xử lý 16 bits (độ dài thanh ghi bằng 16 bits). Tốc độ mã của RC2 lớn hơn rất nhiều so với DES, còn về độ an tồn thì có thể lớn hơn hoặc nhỏ hơn phụ thuộc vào chiều dài khóa mật được chọn. Thực tốn này thuộc sở hữu của cơng ty RSA Security Inc, nên muốn sử dụng nó phải được đồng ý của công ty này. Chúng ta xem các thủ tục của thuật tốn RC2.

Tạo khóa con

RC2 thực hiện một loạt thao tác với khóa chính để tạo 128 bytes khóa con. Khóa con này được ghi trong mảng bytes: L[0], L[1], ..., L[127]. Một số phép biến đổi trong RC2 sẽ được mơ tả đơn giản hơn nếu biểu diễn khóa con trên dưới dạng mảng các từ 2 bytes: K[0], K[1], ..., K[63].

Giả sử khóa chính có độ dài T bytes (1 ≤ T ≤ 128). Trong RC2 có dự trù sẵn một thủ tục cho phép làm giảm độ phức tạp của khóa đối với mã thám. Thủ tục này được sử dụng trong trường hợp sản phẩm được dành để xuất khẩu. Ở đây chúng ta sẽ không xem xét thủ tục này. Việc tạo khóa con được thực hiện bằng cách sao chép khóa chính (T bytes)

vào mảng L (128 bytes). Sau đó giá trị mảng L được thay đổi với sự trợ giúp của mảng giả ngẫu nhiên P[0..255], mỗi phần tử P[i] có kích thước 1 bytes. Mảng P được sinh ra bằng cách sử dụng các chữ số thập phân của số π. Phép biến đổi này có thể được mơ tả như sau:

Khi i chạy từ T đến 127 thực hiện: L[i] = P[L[i-1] + L[i-T]]

L[128-T] = P[L[128-T]]

Khi i chạy từ 127-T về 0 thực hiện L[i]=P[L[i+1] ⊕L[i+T]]

Một phần của tài liệu Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố (Trang 25 - 26)