2.3.1 Phép tốn trộn khóa
Trong phép tốn trộn khóa, cho khóa vịngKi = [k63, k62, ..., k1, k0], và một trạng
thái hiện hành của khối dữ liệu bi = [b63, b62, ..., b1, b0]. Lần lượt từng bít của trạng thái
(STATE) 64 bít sẽ được thực hiện phép cộng⊕(XOR) với từng bít tương ứng trong khóa vịng (khóa được sinh ra từ khóa chínhK thơng qua hàm sinh khóa) của chu kỳ (vòng) hiện hành. Phép tốn được mơ tả dưới đây
bj →bj⊕kji với1≤i≤32 0≤j ≤63
Vì sử dụng phép cộng⊕(XOR) nên phép biến đổi ngược của phép tốn trộn khóa cũng chính là phép tốn trộn khóa. Kết quả của thao tác này ta thu được một mảng trạng thái có độ dài bằng với độ dài của khối bản rõ.
Ví dụ: Cho bản rõ (Plaintext) và khóa (key) sau khi chuyển đổi sang ASCII, chuyển đổi từ bản rõ (ASCII sang hệ Hex) và chuyển đổi khóa (ASCII sang hệ Hex).
Bản rõ (Plaintext): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Khóa (key): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Thực hiện phép trộn khóa như sau:
Bản mã: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
⊕
Khóa(K1): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STATE: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2.3.2 Phép toán thay thế
Phép toán thay thế sử dụng một hộp-S (S-box) 4 bít duy nhất được áp dụng 16 lần song song trong mỗi vịng. Bảng dưới trình bày nội dung bảng thay thế hộp-S (S-box) cho giá trị ở vị trí tương ứng{x}ở dạng thập lục phân của PRESENT sau khi tính tốn:
x 0 1 2 3 4 5 6 7 8 9 A B C D E F
S[x] C 5 6 B 9 0 A D 3 E F 8 4 7 1 2
Bảng 3: Bảng thay thế hộp-S của PRESENT
Bản rõ ban đầu sau khi được thực hiện phép cộng⊕(XOR) với khóa con ban đầu ta thu được một mảng trạng tháiSTATE, và thực hện phép thay thế phi tuyến (SBoxlayer)
bằng cách thay thế từng phần tử trong mảng trạng thái (chuyển sang hệ Hexa) tương ứng với các phần tử (chuyển sang hệ Hexa) trong bảng hộp-S ở trên với việc thay thế
{0} → {C}ta thu được kết quả sau:
Khóa XOR: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 hộp-S: C C C C C C C C C C C C C C C C
2.3.3 Phép toán hoán vị
Phép tốn hốn vị đảm bảo rằng 4 bít đầu ra của hộp-S sẽ được phân tán ra 4 hộp-S khác nhau ở vòng tiếp theo để đảm bảo tính chất khuếch tán và đạt được sau khi thực hiện một số vịng tối thiểu.
Vì mã hóa PRESENT sử dụng mơ hình mạng SPN nên theo cấu trúc SPN ta gọi
blà kích thước khối (block size),slà số bít hộp-S vàP(i)là vị trí bít sau khi hốn vị, ta có phép tốn hốn vị bít tổng qt sau:
P(i) = (b
s ×i mod b−1 với0≤i≤b−2,
b−1 vớii=b−1,
Trong mã hóa PRESENT sử dụng khối 64 bít (b= 64), và số bít hộp-S là 4×4 (s = 4), từ phép tốn tổng qt ở trên, ta có phép tốn hốn vị của PRESENT như sau:
P(i) = (
16×i mod63 với0≤i≤62,
63 vớii= 63,
Với phép tốn hốn vị trên ta có được bảng hốn vị của PRESENT bảng 4.
i P(i) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 16 32 48 1 17 33 49 2 18 34 50 3 19 35 51 i P(i) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55 i P(i) 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59 i P(i) 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63
Bảng 4: Bảng lớp hoán vị của PRESENT
Trong phép toán hoán vị của thuật toán PRESENT ta thực hiện hai lần phép biến đổi cho mảng trạng thái và kết quả thu được là một mảng trạng thái, mảng trạng thái này là kết quả của vòng thứ nhất (vòng 1) và cũng là đầu vào cho lần thực hiện thứ 2 (vịng 2). Q trình thực hiện tương tự như vịng 1.
Ví dụ: Sau khi thực hiện phép tốn thay thế (SBoxlayer) ở trên ta thu được một mảng trạng thái có kết quả như sau:
hộp-S: C C C C C C C C C C C C C C C C
Dựa vào bảng hốn vị đã được tính tốn ở trên ta thực hiện phép toán hoán vị (pLayer) như sau: Với mảng trạng thái gồm 16 đoạn con, mỗi đoạn con là 4 bít ở dạng nhị phân có dạng như sau:
i P(i) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 i P(i) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 i P(i) 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 i P(i) 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
Thực hiện phép thay thế lần một cho các bít tương ứng trong mảng trạng thái ta thu được kết quả sau:
F F 0 0 F F 0 0 F F 0 0 F F 0 0
Tương tự như vậy thực hiện phép thay thế lần thứ hai ta thu được kết quả là mảng trạng thái (STATE) của vòng thứ nhất. Kết quả này cũng là đầu vào cho vòng thứ hai của phép mã hóa.
P-layer: F F F F F F F F 0 0 0 0 0 0 0 0
2.3.4 Vòng lặp cuối
Vịng lặp cuối cùng là một phép tốn ⊕ (XOR) của mảng trạng thái thu được sau 31 vòng với khóaK32. Phép tốn này cịn gọi là phép tốn cho việc làm "trắng sau"
(post-whitening), cuối cùng ta thu được bản mã.
Trong ví dụ đang xét, kết thúc vịng 32 ta thu được kết quả cuối cùng là bản mã:
2.4 Mơ tả thuật tốn giải mã của PRESENT
Thuật tốn giải mã được mơ tả trong hình dưới đây: