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 toõ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 toõ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 toõ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 toõ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 quõ 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 toõ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 quõ 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 quõ 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 toõ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 toõ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 toõ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 quõ 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 toõ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 quõ trớnh nỏy nhƣ sau:
Hớnh 12 Sơ đồ mọ hụa 3.2 Giải mọ
Quõ 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 quõ 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: quõ 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