Sinh khóa của mật mã khối PRESENT

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu thiết kế một số thuật toán mật mã hạng nhẹ luận văn ths toán học 604601 (Trang 41 - 43)

11 Bảng so sánh thời gian thực hiện của thuật toán PRESENT với AES và

2.5 Sinh khóa của mật mã khối PRESENT

Thiết kế hàm sinh khóa nhằm cung cấp khả năng chống lại các cuộc tấn công, đồng thời cung cấp rất nhiều sự linh hoạt trong việc thực hiện. Trong suốt q trình mã hóa, hàm sinh khóa được thực hiện một cách gọn nhẹ, điều này cho phép thực hiện bộ nhớ rất thấp và triển khai một cách nhanh chóng. Trong việc triển khai với bộ nhớ nhiều hơn, tất cả các khóa con có thể được tính trước để cải thiện hiệu suất.

Lược đồ khóa của PRESENT có hai phiên bản khóa là 80 bít và 128 bít. Tuy nhiên, trong luận văn này ta tập trung vào phiên bản khóa 80 bít. Đầu tiên, khóa (key)K

ban đầu cung cấp để sử dụng, được lưu trữ trong một thanh ghi khóa và được biểu diễn như sau:k79k78...k0. Với khóa vịng 80 bít ta sử dụng 64 bít tận cùng bên trái cho vịng

khóa thứi,Ki =k63k62...k0và được biểu diễn tương ứng như sau [8]: Tại vịng thứita có:

Ki =k63k62...k0=k79k78...k16.

KhóaK sẽ được cập nhật sau mỗi lần tham gia vào quá trình thực hiện theo trình tự như sau:

1. [k79k78...k1k0]=[k18k17...k20k19]

2. [k79k78k77k76]=S[k79k78k77k76]

3. [k19k18k17k16k15]=[k19k18k17k16k15]⊕round_counter

Do đó, sinh khóa bao gồm 3 hoạt động: (1) thanh ghi khóa được xoay 61 bít vị trí sang trái, (2) bốn bít cuối cùng bên trái được chuyển qua hộp-S của PRESENT, và (3) giá trịiround_counterđược thực hiện phép⊕(XOR) với các bítk19k18k17k16k15 củaK.

Q trình thực hiện sinh khóa sẽ được trình bày chi tiết trong ví dụ dưới đây: Ta có khóaK = 80 bít ban đầu:

Khóa K: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Để thực hiện cho khóa vịng 1, khóaK1 được lấy 64 bít tận cùng bên trái từ khóa chính ban đầu.

Vịng 1 (K1): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Thực hiện xoay 61 bít vị trí khóa sang tráik18k17...k20k19. Sau đó thực hiện phép

thay thế bốn bítk79k78k77k76 với bảng thay thế hộp-S (S-box) ở dạng hex tương ứng cho các bít với {0} → {C} đồng thời các bít k19k18k17k16k15 thực hiện phép tốn cộng ⊕

(XOR) với round_ counter (00001) cho vịng thứ nhất ta được kết quả sau:

K1: C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 Khóa được sinh ra cho lần lặp thứ nhất là khóa được đưa vào thực hiện cho phép tốn cộng với mảng trạng thái cho vịng lặp thứ 2, tương tự như vậy kết quả sinh khóa của vịng lặp này là khóa đầu vào cho vịng lặp sau. Thực hiện tương tự như vậy cho vịng khóa 2 ta được kết quả như sau:

K2: 5 0 0 0 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thực hiện tương tự cho 30 vòng tiếp theo, cuối cùng ta thu được 32 khóa vịng được sử dụng cho 32 vịng lặp trong các q trình mã hóa và giải mã của thuật tốn. Trong đó khóa vịngK32 được sử dụng cho q trình làm "trắng sau" của thuật tốn mã hóa và cho q trình cộng khóa đầu tiên cho phần giải mã.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu thiết kế một số thuật toán mật mã hạng nhẹ luận văn ths toán học 604601 (Trang 41 - 43)

Tải bản đầy đủ (PDF)

(76 trang)