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.
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.
= 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.
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
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
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 truyền trởn mạng. Trong đụ DHk() lỏ hỏm ẩn dữ liệu với khụa K.
Sơ đồ khối của qũ trớnh nỏy nhƣ sau:
Hớnh 12 Sơ đồ mọ hụa 3.2 Giải mọ
Qũ trớnh giải mọ cũng trải qua hai giai đoạn lỏ rỷt trợch dữ liệu ẩn, sau khi rỷt trợch dữ liệu ẩn, ta cụ đƣợc thừng tin của dữ liệu ẩn nỏy. Sau đụ, dữ liệu ban đầu (dữ liệu đƣợc truyền trởn mạng) sẽ tiếp tục đƣợc giải mọ vỏ xụa dữ liệu ẩn. Khi đụ, dữ liệu gốc ban đầu đƣợc khừi phục.
Zi = DH-1k(Ywi) với Zi lỏ thừng tin ẩn vỏ Xi = E-1(Ywi)
Trang 73 Hớnh 13 Sơ đồ giải mọ
3.3 Vợ dụ minh họa
Hớnh 14 thể hiện sự thay đổi ảnh của qũ trớnh ẩn dử liệu dung mỏ hụa AES
Ta nhận thấy: ở hớnh a) lỏ ảnh gốc ban đầu, sau khi đƣợc mọ hụa AES hớnh a) sẽ trở thỏnh nhƣ hớnh b), sau đụ hớnh b) đƣợc chộn dữ liệu ẩn ta cụ hớnh c). Nhƣ vậy khi so sõnh giữa hớnh b) vỏ c) bằng mắt thƣờng ta khừng thể phĩn biệt hay nhận biết đƣợc đọ cụ dữ liệu đƣợc ẩn vỏo hớnh, nhƣng khi dỳng cừng cụ để rỷt trợch dữ liệu ẩn, ta cụ đƣợc nhƣ hớnh d). Cõc chấm trắng ở hớnh d) chợnh lỏ sự khõc biệt giữa hớnh b) vỏ hớnh c) hay đụ chợnh lỏ thừng tin mỏ ta đọ ẩn vỏo hớnh b).
Trang 74
Hớnh 15 thể hiện sự thay đổi ảnh a: qũ trớnh rỷt trợch dử liệu vỏ giải mọ.b Ảnh sau khi giải mọ vỏ xụa dữ liệu ẩn trởn ảnh
Hớnh a) lỏ ảnh sau khi đƣợc rỷt trợch dữ liệu ẩn vỏ giải mọ (lỷc nỏy ta biết đƣợc thừng tin dữ liệu ẩn), hớnh b) lỏ ảnh sau khi giải mọ vỏ xụa dữ liệu ẩn trởn ảnh. Khi đụ ta cụ đƣợc ảnh gốc ban đầu.
Trang 75
KẾT LUẬN
1. Đõnh giõ:
Sau một khoảng thời gian nỗ lực nghiởn cứu cỳng với sự hƣớng dẫn tận tớnh của cõ thầy cừ giõo trong khoa chỷng em đọ bản hoỏn thỏnh đƣợc cõc yởu cầu cầu đề tỏi. Đụ lỏ giấu đƣợc thừng tin vỏo trong một file ảnh tỉnhvỏ giấu thừng tin trong văn bản cụ ẩn chứa thừng tin trong đụ. Sử dụng kỹ thuật mọ hụa AES trong ẩn thừng tin Cõc thừng tin đƣợc giấu lỏ một đoạn thừng điệp, một tệp văn bản vỏ một file ảnh cũng cụ thể đƣợc giấu trong một file ảnh.
2. Phõt triển vỏ hạn chế của đề tỏi:
Chƣơng trớnh đọ lỏm đƣợc những cừng viẹc trởn vỏ hƣớng của chỷng em mong muốn đụ lỏ tất cả nhỷng ý tƣởng mỏ ban đầu chỷng em đặt ra vỏ cụ kế hoạch thực hiện nhƣng chƣa lỏm đƣợc chỷng em sẽ phõt triển trong đề tỏi tiểu luận, nhƣ giấu thừng tin trong một file audio hay một file video. Hy vọng chỷng em sẽ đƣợc cõc thầy, cừ chỉ bảo để phõt triển tốt đề tỏi trong lần tới. Chỷng em xin chĩn thỏnh cảm ơn!
Trang 76
TáI LIỆU THAM KHẢO
[1] . A Reversible Data Hiding Method for Encrypted Images_ung dung W. Puech, M. Chaumont and O. StraussLIRMM Laboratory, UMR CNRS 5506, University of Montpellier II161, rue Ada, 34392 MONTPELLIER CEDEX 05, FRANCE
[2]. ADVANCED ENCRYPTION STANDARD (AES) November 26, 2001 [3]. Techniques for Data Hiding-p by W. BenderD. Gruhl N. Morimoto A. Lu