K ý h iệ u H là ả n h m ô i tr ư ờ n g , G là th ô n g tin c ầ n g iấ u ; K ý h iệ u Sh là h à m g iấ u v à Sr l à h à m tá c h d ữ liệ u từ ả n h m ô i trư ờ n g . T a c ó :
H' = Sh(H, G, K)
Sr(H \ K) = Sr(Sh(H, G, K), K) = G
• H' là ảnh kết quả (gồm ảnh môi trường + thông tin giấu). H' phải thoả mãn các yêu cầu: thứ nhất, khó phát hiện ra rằng H' có chứa thông tin giấu; thứ hai, H' gần như không có khác biệt so với H
• K là khóa bí mật được dùng trong cả 2 giai đoạn giấu tin và tách tin Ký hiệu Bi là một khối bít có kích thước (m X n); Ký hiệu (B1AB2) là phép bitwise AN D và (B1© B2) là phép bitwise XOR giữa các phần tử cùng vị trí của hai khối bít; [B]ị J là phần tử hàng thứ i và cột thứ j; SƯM(B) là tổng tất cả các phần tử của khối bít.
Ký hiệu F là khối bít dùng làm môi trường, K là khóa bí mật. Cả F và K đều là
các khối bít kích thước (m X n ) . Giấu dữ liệu đồng nghĩa với việc thay thế một số bít
trong khối bít F.
Thuật toán được mô tả như sau:
51. Chia tệp dữ liệu môi trường F thành các khối Fj có kích thước (m X n)
Với mỗi khối Fị kiểm tra điều kiện: 0 < SUM(FjAK) < SƯM(K); Nếu thỏa mãn thì thực hiện bước S3 để giấu 1 bít vào khối F|; còn không thì khối không được dùng để giấu dữ liệu.
52. Ký hiệu bít cần giấu trong khối F| là b. Thủ tục sau đây được gọi để giấu một bít dữ liệu:
i f (SƯM(FjAK) mod 2 = b) thì giữ nguyên Fj else i f (SUM(FjAK) mod 2 = 1) thì
chọn ngẫu nhiên phần tử thứ (j,k) của khối Fj thỏa mãn điều kiện
([F ilj,k = 0) and ([K ]j k= 1) và thay ([FJjk = 1)
else if (SUM(FjAK) = S U M (K )-l) thì
chọn ngẫu nhiên phần tử thứ (j,k) của khối Fj thỏa mãn điều kiện ([Fị]jik = 1) and ([K ]j k = l ) v à thay
([FJj,k = 0) else
( [ K ] j k = 1 ) và h o á n đổi ( [ F ị ] jtk = 0 ) e n d if ;
T r o n g m ỗ i k h ố i b ít th ỏ a m ã n đ iề u k iệ n 0 < S Ư M ( F i AK ) < S U M ( K ) c ó m ộ t b ít đ ư ợ c g iấ u k h i đ ó F i c h u y ể n th à n h F i' v à b iể u th ứ c s a u th ỏ a m ã n :
0 < SƯM(FiAK) < SUM(K) = > SUM (F’AK) = b ( m o d 2 ) (E l)
h a y : b = SUM(Fi'AK) ( m o d 2 ) T a c ó th ể n h ậ n t h ấ y v ì c h ỉ c ó t ố i đ a m ộ t b ít t r o n g k h ố i g iấ u d ữ liệ u b ị th a y đ ổ i g iá t r ị (từ 0 s a n g 1 h o ặ c n g ư ợ c l ạ i ) n ê n n ế u k íc h th ư ớ c k h ố i ( m X n ) đủ lớn t h ì sự th a y đ ổ i n à y k h ó n h ậ n th ấ y b ằ n g m ắ t th ư ờ n g . V ớ i sơ đ ổ th u ậ t to á n tr ê n ta c ó m ộ t s ố n h ậ n x é t s a u : • V ì p h é p A N D đ ư ợ c sử d ụ n g đ ể tín h SUM(FjAK), g iá tr ị c ự c đ ạ i c ủ a SUM(F;AK) k h ô n g th ể v ư ợ t q u á SUM(K) • Do b ả n c h ấ t c ủ a p h é p to á n A N D , n ế u k h ố i b ít c ó th a y đ ổ i, n ó c h ỉ th a y đổi t ạ i c á c v ị t r í k h ó a K c ó g iá t r ị 1. V ậ y n ế u k h ố i b ít c ó g iá t r ị to à n b ít 0 h o ặ c to à n b ít 1 , n g ư ờ i m ã t h á m d ễ d à n g n h ậ n r a sự t h a y đ ổ i v à từ đ ó t ì m ra g iá tr ị c ủ a k h ó a K . D o v ậ y m à v ù n g th ỏ a m ã n SUM(FiAK) = 0 v à SUM(FjAK) =
SUM(K) k h ô n g đ ư ợ c sử d ụ n g đ ể g iấ u d ữ liệ u .
• N ế u c ó t h a y đổi tr o n g k h ố i Fj th ì th a y đổi c h ỉ d iễ n ra t ạ i c á c vị t r í K n h ậ n g iá t r ị 1. V â y n ế u K c ó q u á í t b it 1 t h ì b ấ t đ ẳ n g th ứ c th ứ h a i c ủ a đ iề u k iệ n 0
< SƯM(FịAK) < SƯM(K) k h ô n g d ễ th ỏ a m ã n . M ặ t k h á c , tr o n g m ộ t số ứ n g
d ụ n g đ ò i h ỏ i tớ i d u n g lư ợ n g g iấ u tin t h ì 1 b ít t r o n g m ộ t k h ố i là q u á ít.