Cõc bƣớc thực hiện

Một phần của tài liệu nghiên cứu kỹ thuật dấu tín dùng data hiding kết hợp với hệ mã aes (Trang 41)

Quy trớnh mọ hụa Rijndael sử dụng bốn phờp biến đổi chợnh:

1. AddRoundKey: cộng ( ) mọ khụa của chu kỳ vỏo trạng thõi hiện hỏnh. Độ

dỏi của mọ khụa của chu kỳ bằng với kợch thƣớc của trạng thõi.

2. SubBytes: thay thế phi tuyến mỗi byte trong trạng thõi hiện hỏnh thừng qua bảng thay thế (S-box).

Trang 41 3. MixColumns: trộn thừng tin của từng cột trong trạng thõi hiện hỏnh. Mỗi cột

đƣợc xử lý độc lập.

4. ShiftRows: dịch chuyển xoay vúng từng dúng của trạng thõi hiện hỏnh với di số khõc nhau.

Mỗi phờp biến đổi thao tõc trởn trạng thõi hiện hỏnh S. Kết quả S’ của mỗi phờp biến đổi sẽ trở thỏnh đầu vỏo của phờp biến đổi kế tiếp trong quy trớnh mọ hụa.

Trƣớc tiởn, toỏn bộ dữ liệu đầu vỏo đƣợc chờp vỏo mảng trạng thõi hiện hỏnh. Sau khi thực hiện thao tõc cộng mọ khụa đầu tiởn, mảng trạng thõi sẽ đƣợc trải qua

Nr = 10, 12 hay 14 chu kỳ biến đổi (tỳy thuộc vỏo độ dỏi của mọ khụa chợnh cũng nhƣ độ dỏi của khối đƣợc xử lý). Nr 1 chu kỳ đầu tiởn lỏ cõc chu kỳ biến đổi bớnh thƣờng vỏ hoỏn toỏn tƣơng tự nhau, riởng chu kỳ biến đổi cuối cỳng cụ

sự khõc biệt so với. Nr 1 chu kỳ trƣớc đụ. Cuối cỳng, nội dung của mảng trạng thõi sẽ đƣợc chờp lại vỏo mảng chứa dữ liệu đầu ra.

Quy trớnh mọ hụa Rijndael đƣợc tụm tắt lại nhƣ sau:

1. Thực hiện thao tõc AddRoundKey đầu tiởn trƣớc khi thực hiện cõc chu kỳ mọ hụa.

2.Nr – 1 chu kỳ mọ hụa bớnh thƣờng: mỗi chu kỳ bao gồm bốn bƣớc biến đổi liởn tiếp nhau: SubBytes, ShiftRows, MixColumns, vỏ AddRoundKey.

3.Thực hiện chu kỳ mọ hụa cuối cỳng: trong chu kỳ nỏy thao tõc MixColumns đƣợc bỏ qua.

Trong thuật tõn dƣới đĩy, mảng w[] chứa bảng mọ khụa mở rộng; mảng in[] vỏ out[] lần lƣợt chứa dữ liệu vỏo vỏ kết quả ra của thuật tõn mọ hụa.

2.4.1.3 Kiến trỷc của thuật tõn Rijndael

Thuật tõn Rijndael đƣợc xĩy dựng theo kiến trỷc SPN sử dụng 16 s-box (kợch thƣớc 8 Ứ 8) để thay thế. Trong toỏn bộ quy trớnh mọ hụa, thuật tõn sử dụng chung bảng thay thế s-box cố định. Phờp biến đổi tuyến tợnh bao gồm 2 bƣớc: hõn vị

Trang 42 byte vỏ õp dụng song song bốn khối biến đổi tuyến tợnh (32 bit) cụ khả năng khuếch tõn cao. Hớnh 3.2 thể hiện một chu kỳ mọ hụa của phƣơng phõp Rijndael.

Trởn thực tế, trong mỗi chu kỳ mọ hụa, khụa của chu kỳ đƣợc cộng (XOR) sau thao tõc biến đổi tuyến tợnh. Do chỷng ta cụ thực hiện thao tõc cộng khụa trƣớc khi thực hiện chu kỳ đầu tiởn nởn cụ thể xem thuật tõn Rijndael thỏa cấu trỷc SPN [29].

Hớnh 11 Mừ tả Một chu kỳ mọ hụa của phƣơng phõp Rijndael (với Nb=4) 2.4.1.4 Phờp biến đổi SubBytes

Thao tõc biến đổi SubBytes lỏ phờp thay thế cõc byte phi tuyến vỏ tõc động một cõch độc lập lởn từng byte trong trạng thõi hiện hỏnh. Bảng thay thế (S-box) cụ tợnh khả nghịch vỏ qũ trớnh thay thế 1 byte x dựa vỏo S-box bao gồm hai bƣớc:

1. Xõc định phần tử nghịch đảo x-1 GF(28). Quy ƣớc {00}-1 = {00}.

2. ạp dụng phờp biến đổi affine (trởn GF(2)) đối với x-1 (giả sử x-1 cụ biểu diễn nhị phĩn lỏ x7 x6 x5 x4 x3 x2 x1 x0 ):

Trang 43

hay

yi xi x(i+4)mod 8 x(i+5)mod 8 x(i+6)mod 8 x(i+7)mod 8 Ci với ci lỏ bit thứ i của {63}, 0 i 7.

Bảng 2 Thể hiện bảng thay thế S-box đƣợc sử dụng trong phờp biến đổi SubBytes ở dạng thập lục phĩn.

Vợ dụ: nếu giõ trị {xy} cần thay thế lỏ {53} thớ giõ trị thay thế S-box ({xy}) đƣợc xõc định bằng cõch lấy giõ trị tại dúng 5 cột 3 của Bảng D.1. Nhƣ vậy, S-box ({xy}) = {ed}. (adsbygoogle = window.adsbygoogle || []).push({});

Trang 44

2.4.1.5 Phờp biến đổi ShiftRows

Trong thao tõc biến đổi

ShiftRows

Bảng 3: Thể hiện bảng thay thế S-box đƣợc sử dụng trong phờp biến đổi

ShiftRows ở dạng thập lục phĩn mỗi dúng của trạng thõi hiện hỏnh đƣợc dịch chuyển xoay vúng đi một số vị trợ.

Byte Sr ,c tại dúng r cột c sẽ dịch chuyển đến cột (c - shift(r, Nb)) mod Nb

hay:

S’r,c= Sr,(c + shift(r, Nb)) mod Nb với 0<r<8 vỏ 0 c<Nb

Giõ trị di số shift(r, Nb) phụ thuộc vỏo chỉ số dúng r vỏ kợch thƣớc Nb của khối dữ

Trang 45 liệu. Bảng 4. Giõ trị di số shift(r, Nb) shift(r, Nb) R 1 2 3 Nb 4 1 2 3 6 1 2 3 8 1 3 4

Phờp biến đổi ShiftRows đƣợc thể hiện dƣới dạng mọ giả:

2.4.1.6 Phờp biến đổi MixColumns

Trong thao tõc biến đổi MixColumns, mỗi cột của trạng thõi hiện hỏnh đƣợc

biểu diễn dƣới dạng đa thức s(x) cụ cõc hệ số trởn GF(28). Thực hiện phờp nhĩn S’(x) = a(x) s(x) Với a(x) = {03}x3 + {01}x2 + {01}x + {02}

Thao tõc nỏy đƣợc thể hiện ở dạng ma trận nhƣ sau:

Trang 46

Bảng 5. Thao tõc MixColumns tõc động lởn mỗi cột của trạng thõi

Trong đoạn mọ chƣơng trớnh dƣới đĩy, hỏm FFmul(x, y) thực hiện phờp nhĩn (trởn trƣờng GF(28)) hai phần tử x vỏ y với nhau

Trang 47 2.4.1.7 Thao tõc AddRoundKey

Phƣơng phõp Rijndael bao gồm nhiều chu kỳ mọ hụa liởn tiếp nhau, mỗi chu kỳ

cụ một mọ khụa riởng (Round Key) cụ cỳng kợch thƣớc với khối dữ liệu đang đƣợc xử lý vỏ đƣợc phõt sinh từ mọ khụa chợnh (Cipher Key) cho trƣớc ban đầu. Mọ khụa của chu kỳ cũng đƣợc biểu diễn bằng một ma trận gồm 4 dúng vỏ Nb cột. Mỗi cột của trạng thõi hiện hỏnh đƣợc XOR với cột tƣơng ứng của mọ khụa của chu kỳ đang xờt:

[s'0,c , s'1,c , s'2,c , s'3,c ] = [s0,c , s1,c , s2,c , s3,c ] ⊕ [wround Nbc ] ,

với 0 ≤ c < Nb.

Thao tõc biến đổi ngƣợc của AddRoundKey cũng chợnh lỏ thao tõc AddRoundKey. (adsbygoogle = window.adsbygoogle || []).push({});

Trong đoạn chƣơng trớnh dƣới đĩy, hỏm xbyte(r, w) thực hiện việc lấy byte thứ r

Trang 48

Bảng 6. Thao tõc AddRoundKey tõc động lởn mỗi cột của trạng thõi

Trang 49 Cõc hằng số của mỗi chu kỳ hoỏn toỏn độc lập với giõ trị Nk vỏ đƣợc xõc định bằng Rcon[i] = (RC[i], {00}, {00}, {00}) với RC[i] ∈ GF(28) vỏ thỏa:

RC[1]=1 ({01})

RC[i] =x ({02})*(RC[i-1]) = x(i–1) 2.4.1.8 Vợ dụ về quỏ trớnh mọ hụa:

Trang 50

Bảng 7. Bảng S-BOX cụ định dang mọ hexa cho qũ trớnh mọ hụa

Cho tợn hiệu đầu vỏo vỏ mọ khụa Cipher Key lỏ 16 Byte cụ Nb = 4 vỏ Nk = 6

Tợn hiệu đầu vỏo đƣợc sếp vỏo bảng nhƣ sau

1. Thực hiện thao tõc AddRoundKey

Vúng mọ khụa thứ nhất chỉ thực hiện phờp biến đổi thao tõc AddRoundKey tợn hiệu đầu vỏo cộng với mọ khụa, theo cừng thức nhƣ sau.

[s'0,c , s'1,c , s'2,c , s'3,c ] = [s0,c , s1,c , s2,c , s3,c ] ⊕ [wround Nbc ]

Trang 51

Vợ dụ : 32 2b = 19

2. Thực hiện thao tõc SubByte

Thao tõc biến đổi SubBytes lỏ phờp thay thế cõc byte phi tuyến vỏ tõc động một cõch độc lập lởn từng byte trong trạng thõi hiện hỏnh.

Qua phờp biến đổi SubByte

Vợ dụ: Từ tợn hiệu 19 dựa vỏ hừp S-BOX dúng 1 cột 9 lỏ tợn hiệu d4

3. Thực hiện thao tõc ShiftRows.

Mỗi dúng của trạng thõi hiện hỏnh đƣợc dịch chuyển xoay vúng đi một số vị trợ. Ứng với vợ dụ nỏy thớ dựa vỏo bảng giõ trị ShiftRows thớ ứng với dúng một thớ khừng dịch, dúng 2 thi dich đi 1, dúng 3 thớ dịch đi 2, dúng 4 thớ dịch đi 3. Ta đƣợc nhƣ sau.

Trang 52 Qua phờp biến đổi ShiftRows

4. Thực hiện thao tõc MixColumns

Trong thao tõc biến đổi MixColumns, mỗi cột của trạng thõi hiện hỏnh đƣợc biểu diễn dƣới dạng đa thức s(x) cụ cõc hệ số trởn GF(28). Thực hiện phờp nhĩn

S’(x) = a(x) s(x) Với

a(x) = {03}x3 + {01}x2 + {01}x + {02}

Qua phờp biến đổi MixColums. (adsbygoogle = window.adsbygoogle || []).push({});

= Hay: = ({02} )({03} )  ({01} )  ({01} ) = ({01} )({02} )  ({03} )  ({01} ) = ({01} )({01} )  ({02} )  ({03} ) = ({03} )({01} )  ({01} )  ({02} )

Trang 53 Thử tợnh tõn ở cột đầu tiởn: = ({02}d4)({03}bf)  ({01}5d)  ({01}30) = ? ạp dụng phờp tợnh nhĩn xtime(): {02}d4 = ? Ta cụ: d4 (H) = 11010100(B) Dịch trõi: 10101000

XOR với giõ trị 1b(H): 10110011(B) Vậy {02}}d4 = b3(H) = 10110011(B) Với cõch tợnh tƣơng tự ta đƣợc:

{03}bf = da(H) = 11011010(B) {01}5d = 5d(H) = 101.1101(B) {01}30 = 30(H) = 11.0000(B) XOR 4 kết quả nỏy ta đƣợc:

= 04(H) Tƣơng tự: = ({01} )({02} )  ({03} )  ({01} ) = 66 = ({01} )({01} )  ({02} )  ({03} ) = 81 = ({03} )({01} )  ({01} )  ({02} ) = e5

Trang 54 Chỷng ta thực hiện tƣơng tự nhƣ trởn 9 vúng biến đổi riởng vúng cuối vúng số 10 thớ chỷng ta khừng thực hiện thao tõc MixColumns.

Trang 56

2.4.2. Qũ trớnh tạo khụa

2.4.2.1 Chiều dỏi yởu cầu của khụa

Thuật tõn AES sẽ hỗ trợ ợt nhất một trong ba chiều dỏi khụa sau đĩy: 128, 192 vỏ 256 bit (tƣơng ứng Nk = 4, 6, 8). Việc triển khai cụ thể sử dụng tỳy chọn hai hoặc ba loại chiều dỏi khụa, cõi mỏ cụ thể thỷc đẩy khả năng tƣơng tõc của việc triển khai thuật tõn.

2.4.2.2 Sự hạn chế của khụa

Khừng cụ cõc khụa yếu hoặc bõn yếu đƣợc xõc định cho thuật tõn AES, vỏ khừng cụ sự hạn chế nỏo về sự lựa chọn khụa.

2.4.2.3 Cõc tham số của khụa: chiều dỏi khụa, kợch thƣớc block vỏ số vúng

Tiởu chuẩn nỏy xõc định một cõch rử rỏng cõc giõ trị cho phờp đối với chiều dỏi khụa (Nk từ), kợch thƣớc khối (Nb) vỏ số vúng (Nr) – xem hớnh minh họa. Tuy nhiởn, việc xõc nhận một lần nữa của tiởu chuẩn nỏy trong tƣơng lai cụ thể bao gồm cõc thay

Trang 57 đổi hoặc sự bổ sung giõ trị cho phờp đối với những tham số. Do đụ, thực hiện cụ thể chọn để thiết kế việc triển khai AES với sự linh hoạt trong tƣơng lai.

Bảng 8 Minh họa cõc thừng số của khụa

2.4.2.4 Gợi ý việc thực hiện dựa trởn cõc nền tảng khõc nhau

Sự biến đổi việc thực hiện lỏ cụ thể, trong nhiều trƣờng hợp, việc cung cấp hiệu suất hay cõc lợi thế khõc. Với cỳng một khụa ngử vỏo (dạng thừ hoặc bản mọ), bất kỳ thực hiện nỏo sao cho ngử ra lỏ nhƣ nhau (bản mọ hoặc thừ) chẳng hạn nhƣ thuật tõn trong tiởu chuẩn nỏy lỏ việc thực hiện cụ thể chấp nhận đƣợc của AES.

2.4.2.5 Mảng của cõc byte

a) Mảng của cõc byte

Cho cõc từ khụa a0a1a2….a15 (giả sử sử dụng khụa 128 bit, với ai lỏ một từ khụa cụ 8 bit đƣợc định dạng dƣới dạng số hexa)

Cõc byte vỏ bit đƣợc chia ra từ chuỗi 128 bit ngử vỏo input0 input1 input2 ….. input126 input127

với a0 = {input0, input1, …..,input7}; a1 = {input8, input9, …..,input15}; .

Trang 58 .

.

a15 = {input120, input121, …..,input127}.

Cõc bit trong mỗi byte đƣợc sắp xếp vỏ đõnh số nhƣ sau:

Bảng 9 Minh họa việc sắp xếp cõc bit trong mỗi byte

b) Trạng thõi

Thuật tõn AES thực hiện dựa trởn một mảng hai chiều của cõc byte gọi lỏ trạng thõi (State). State bao gồm bốn hỏng của cõc byte, mỗi hỏng chứa Nb byte, với Nb lỏ chiều dỏi block (Nb = số bit trong khụa mọ hụa/32 hay Nb lỏ số hỏng trong mảng State). Cõc phần tử trong mảng State đƣợc ký hiệu lỏ s, mỗi byte cụ hai chỉ số lỏ số hỏng r (0 <= r < 4) vỏ số cột c (0 <= c < Nb), khi đụ mỗi symbol trong mảng State đƣợc ký hiệu nhƣ sau: sr,c hoặc s[r,c]. Vợ dụ: Đối với chiều dỏi khụa lỏ 128 thớ 0<=r<4, 0<=c<4. (adsbygoogle = window.adsbygoogle || []).push({});

Trang 59 Khi đụ: s[r,c] = in[r + 4c] với 0<=r<4, 0<=c<4

out[r + 4c] = s[r,c] với 0<=r<4, 0<=c<4

Bốn byte trong mỗi cột của mảng State cụ dạnh từ 32bit, do đụ hỏng thứ r cho biết chỉ số của cõc byte trong mỗi từ. Nhƣ vậy mảng state cụ thể đƣợc xem nhƣ lỏ mảng một chiều của cõc từ 32bit (ma trận cột) w0, w1, w2, w3, do đụ số cột c cho biết chỉ số của mảng nỏy. Từ hớnh ở trởn, ta cụ thể thấy đƣợc: w0 = s0,0 s1,0 s2,0 s3,0 w1 = s0,1 s1,1 s2,1 s3,1 w2 = s0,2 s1,2 s2,2 s3,2 w3 = s0,3 s1,3 s2,3 s3,3 Trong đụ:

+ Nk: Chiều dỏi khụa (lỏ số cột của mảng State ) + Nb: Kợch thƣớc của block

+ Nr: Số vúng (Khụa 128 bit Nr =10, khụa 192 bit Nr = 12, khụa 256 bit Nr = 14)

c) Mở rộng khụa:

Thuật tõn AES dỳng khụa mọ hụa K vỏ thực hiện việc mở rộng khụa K để tạo ra một tổ hợp khụa. Việc mở rộng khụa sẽ tạo ra tổng cộng Nb(Nr + 1) từ khụa. Thuật tõn dỳng Nb từ khụa khởi tạo đầu tiởn, vỏ mỗi vúng Nr cũng yởu cầu Nb từ khụa. Kết quả lỏ cơ chế tạo khụa tạo ra một mảng tuyến tợnh cõc từ khụa 4 byte, vỏ đƣợc kợ hiệu lỏ [wi], với i trong khoảng 0 <= i < Nb(Nr + 1).

Trang 60 Một số bƣớc trong qũ trớnh tạo khụa nhƣ sau:

+ RotWord(): Lấy một từ khụa dạng [a0, a1, a2, a3] ngử vỏo, thực hiện dịch vúng từ khụa nỏy để tạo ra từ khụa [a1, a2, a3, a0].

+ SubWord(): Lỏ hỏm thực hiện lấy từ khụa 4 byte ngử vỏo, sau đụ so với bảng S-box (bảng 6)để tạo ra một từ khụa 4 byte mới

+ Rcon[i]: chứa cõc giõ trị đƣợc cho dƣới dạng [xi-1, {00}, {00}, {00}], với x đƣợc kợ hiệu dƣới dạng {02}.

Trang 61 Vợ dụ minh họa thuật tõn mở rộng khụa (giả sử chiều dỏi khụa lỏ 128bit):

Giả sử khụa K lỏ: 2b7e151628aed2a6abf7158809cf4f3c  Nk=4, khi đụ ta cụ 4 từ khụa khởi tạo nhƣ sau: w0 = 2b7e1516

w1 = 28aed2a6 w2 = abf71588 w3 = 09cf4f3c

Trang 63 Nhƣ vậy qũ trớnh mở rộng khụa đọ tạo ra đƣợc tập hợp gồm 44 khụa nhƣ trởn (cõc từ khụa nằm trong cột cuối cỳng của bảng trởn). Tập hợp khụa nỏy sẽ tham gia vỏo qũ trớnh mọ hụa vỏ giải mọ dỳng kỹ thuật AES.

2.4.3 Giải mọ ASE 2.4.3.1 Giải mọ: Bao gồm cõc bƣớc: InvShiftRows InvSubBytes InvMixColumns

Trang 64 AddRoundkey

24.3.2 InvShiftrows

Bƣớc nỏy lỏ nghịch đảo của ShiftRows. Cõc byte trong 3 dúng cuối của bảng State đƣợc dịch vúng. Tại dúng đầu tiởn, r = 0, khừng dịch. 3 dúng ở giữa đƣợc dịch vúng Nb – shift(r,Nb) byte, giõ trị dịch shift(r,Nb) phụ thuộc vỏo số dúng.

Cụ thể, biến đổi InvShiftRows thực hiện nhƣ sau:

= 0< r < 4 vỏ 0 ≤ c < Nb

Bảng 11: Thể hiện bảng thay thế S-box đƣợc sử dụng trong phờp biến đổi

InvShiftrows

ở dạng thập lục phĩn. 2.4.3.3InvSubBytes

Bƣớc nỏy lỏ đảo ngƣợc của biến đổi SubBytes, trong đụ bảng S-box đảo đƣợc õp ụng cho từng byte trong bảng State. Bảng S-box bảng 6 nỏy thu đƣợc bằng cõch đảo ngƣợc biến đổi afin bằng cõch lấy đảo ngƣợc phờp nhĩn trong trƣờng GF(28

). 2.4.3.4InvMixColumns

Trang 65 Bƣớc nỏy lỏ đảo ngƣợc của biến đổi MixColumns. Hoạt động trởn cột theo cột, xem mỗi cột lỏ một cụm bốn đa thức. Cõc cột đƣợc xem lỏ một đa thức trởn trƣờng GF(28) vỏ đƣợc nhĩn modulo (x4 + 1) với một đa thức cố định a-1(x), cho bởi

a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} Đƣợc viết lại dƣới dạng nhĩn ma trận

s’(x) = a-1(x)s(x)

= 0 ≤ c < Nb (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả của phờp nhĩn nỏy, bốn byte trong cột đƣợc thay thế bởi: = ({0e} )({0b} )  ({0d} )  ({09} )

= ({09} )({0e} )  ({0b} )  ({0d} )

= ({0d} )({09} )  ({0e} )  ({0b} )

= ({0b} )({0d} )  ({09} )  ({0e} ) 3 Đảo ngƣợc biến đổi AddRoundKey

Bƣớc nỏy đơn giản chỉ lỏ phờp tợnh XOR kết quả thu đƣợc tại bƣớc 3 với khụa đƣợc tạo ra.

2.4.3.5Vợ dụ mọ hụa AES

Sử dụng khụa cụ chiều dỏi 128 bits, Nb = 4, Nk = 4.

Trang 66 Khụa = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c

Trang 68 Để rử hơn, ta xờt phờp tợnh lần thứ nhất:

Sau khi Addroundkeys ở bƣớc trƣớc, tại bƣớc nỏy bảng State sẽ lỏ:

Bƣớc 1 – SubBytes

Từng giõ trị đƣợc biến đổi thỏnh giõ trị trong bảng S-box, kết quả sau khi kết thỷc bƣớc nỏy sẽ lỏ:

Trang 69

Bƣớc 2 - ShiftRows

Bƣớc 3 – MixColumn

Riởng ở bƣớc nỏy, phờp tõn đƣợc tợnh tƣơng đối phức tạp.

Để tợnh cõc giõ trị s’, ta nhĩn cõc giõ trị s với một đa thức cố định a(x).

a(x) = {03}x2+ {02}x2+ {01}x + {01} Viết dƣới dạng ma trận nhƣ sau:

=

Hay:

Trang 70 = ({01} )({02} )  ({03} )  ({01} ) = ({01} )({01} )  ({02} )  ({03} ) = ({03} )({01} )  ({01} )  ({02} ) Thử tợnh tõn ở cột đầu tiởn: = ({02}d4)({03}bf)  ({01}5d)  ({01}30) = ? ạp dụng phờp tợnh nhĩn xtime(): {02}d4 = ? Ta cụ: d4 (H) = 11010100(B) Dịch trõi: 10101000

XOR với giõ trị 1b(H): 10110011(B) Vậy {02}}d4 = b3(H) = 10110011(B) Với cõch tợnh tƣơng tự ta đƣợc:

{03}bf = da(H) = 11011010(B) {01}5d = 5d(H) = 101.1101(B) {01}30 = 30(H) = 11.0000(B) XOR 4 kết quả nỏy ta đƣợc:

= 04(H) Tƣơng tự:

Trang 71 = ({01} )({01} )  ({02} )  ({03} ) = 81

= ({03} )({01} )  ({01} )  ({02} ) = e5 Lần lƣợt tợnh tõn cõc cột cún lại ta đƣợc kết quả nhƣ sau:

Bƣớc 4 – AddRoundKeys

Bƣớc nỏy chỉ đơn giản lỏ XOR kết quả tại bƣớc 3 với khụa đọ tạo ra đƣợc:

Với chiều dỏi khụa lỏ 128 bits, ta sẽ tạo ra đƣợc 10 khụa, vớ vậy qũ trớnh thực hiện mọ hụa sẽ phải trải qua 10 giai đoạn tất cả.

Trang 72 (adsbygoogle = window.adsbygoogle || []).push({});

Chƣơng III.ỨNG DỤNG DATA HIDING KẾP HỢP VỚI Mẳ HểA

3.1 Mọ hụa

Thuật tõn mọ hụa gồm hai giai đoạn: mọ hụa vỏ ẩn dữ liệu.

Gọi Yi = Ek(Xi) lỏ khối dữ liệu sau khi đƣợc mọ hụa, với Xi lỏ dữ liệu gốc ban đầu, Ek() lỏ hỏm mọ hụa với khụa K.

Khi đụ Ywi = DHk(Yi) lỏ khối dữ liệu sau khi đƣợc mọ hụa vỏ ẩn dữ liệu đƣợc

Một phần của tài liệu nghiên cứu kỹ thuật dấu tín dùng data hiding kết hợp với hệ mã aes (Trang 41)