Tải bản đầy đủ (.doc) (30 trang)

Tổng quan về giấu tin, một số phương pháp giấu tin trong ảnh nhị phân, xây dựng ứng dụng giấu tin trên ảnh nhị phân

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (476.52 KB, 30 trang )

LỜI MỞ ĐẦU
Sự phát triển nhanh chóng của khoa học kỹ thuật trên nhiều lĩnh vực đặc
biệt là trong lĩnh vực đa phương tiện giúp cho các hệ thống sản xuất, quản lý và
phân phối các sản phẩm: hình ảnh, âm thanh, tài liệu văn bản… là rất dễ dàng.
Cùng với sự phổ biến rộng rãi các mạng internet tốc độ cao làm cho quá trình
phân phối chúng trở nên nhanh chóng và thuận tiện, đem lại những thuận lợi to
lớn thông qua các hệ thống thương mại điện tử.
Tình trạng vi phạm bản quyền số đang xảy ra hàng ngày, hàng giờ một
cách liên tục. Nhằm bảo vệ các sản phẩm số không bị sử dụng trái phép, song
song với việc kêu gọi ý thức tự giác thực thi luật bản quyền, các công ty công
nghệ lớn trên thế giới đã và đang thực hiện các giải pháp kỹ thuật kiểm soát bản
quyền số. Một trong những vấn đề được đặt ra là làm sao bảo vệ quyền sở hữu
đối với các sản phẩm đa phương tiện này.
Đứng trước tình hình đó vấn đề về bảo mật thông tin hiện nay luôn nhận
được sự quan tâm đặc biệt trong nhiều lĩnh vực. Đã có nhiều phương pháp để
bảo mật thông tin, một trong những phương pháp được sử dụng phổ biến để bảo
vệ quyền sở hữu đối với nội dung của các sản phẩm đa phương tiện là mã hoá.
Nội dung của sản phẩm đó được mã hoá và gửi cho người sử dụng. Người sử
dụng chỉ đọc được các thông tin này khi nhận được khoá giải mã đi kèm.
Phương pháp mã hoá trên chỉ hiệu quả trong việc truyền thông tin nhưng không
hiệu quả trong việc bảo vệ quyền sở hữu. Sau khi sản phẩm được giải mã, người
dùng ngoài việc lưu trữ còn có thể nhân bản và phân phối lại.
Giấu tin là phương pháp đã và đang tiếp tục được nghiên cứu và ứng
dụng rất mạnh mẽ. Đây là phương pháp mới và phức tạp nó đang được xem như
một công nghệ cốt lõi cho vấn đề bảo vệ bản quyền, chống nhân bản bất hợp
pháp, chống lại truy cập trái phép, chống xuyên tạc, chống giả mạo thông tin,
xác thực thông tin và điều khiển truy cập ứng dụng trong an toàn và bảo mật
thông tin.
Sự khác biệt chủ yếu giữa mã hoá thông tin và giấu tin là phương pháp
mã hoá làm cho các thông tin hiện rõ là nó có được mã hoá hay không còn đối
với phương pháp giấu tin thì người ta sẽ khó biết được là có thông tin giấu bên


trong do tính chất ẩn hình (invisible) của thông tin được giấu. Các phương pháp
mã hóa thường thu hút sự chú ý, một khi những thông tin mã hoá bị phát hiện
1


thì những tên tin tặc sẽ tìm mọi cách để triệt phá. Và cuộc chạy đua giữa những
người bảo vệ thông tin và bọn tin tặc vẫn chưa kết thúc tuyệt đối về bên nào.
Trong hoàn cảnh đó thì giấu tin trở thành một phương pháp hữu hiệu để che
giấu tin làm cho tin tặc không thể phát hiện.
Từ thực trạng đó, bài báo cáo trình bày tổng quan về giấu tin, một số
phương pháp giấu tin trong ảnh nhị phân, xây dựng ứng dụng giấu tin trên ảnh
nhị phân dựa trên các phương pháp được trình bày.
Báo cáo bao gồm các nội dung sau:
Phần 1. Mở đầu
Sơ lược về bối cảnh mạng máy tính hiện nay, mức độ an toàn dữ liệu.
Phương hướng, phạm vi nghiên cứu và giải pháp tiếp cận, từ đó đặt ra nhiệm vụ
của bài báo cáo.
Phần 2. Nội dung chính, bao gồm có 3 chương
Chương 1: Tổng quan giấu tin và cơ sở toán học
Giới thiệu tổng quan về giấu tin, một số khái niệm cơ bản. Phân loại và
trình bày một số kỹ thuật giấu tin cơ bản, các yêu cầu đối với bài toán giấu tin
và một số ứng dụng của giấu tin. Đồng thời trình bày các khái niệm cơ bản lý
thuyết đồng dư modulo và lý thuyết module làm cơ sở để trình bày các thuật
toán giấu tin.
Chương 2: Giấu tin trong ảnh nhị phân
Trình bày một số phương pháp, kĩ thuật giấu tin trên ảnh nhị phân định
dạng ảnh Bitmap.
Chương 3: Xây dựng chương trình ứng dụng
Thiết kế và xây dựng giải pháp ứng dụng giấu tin vào trong ảnh nhị phân.
Phần 3. Kết luận

Phần 4. Tài liệu tham khảo

2


CHƯƠNG 1
TỔNG QUAN GIẤU TIN VÀ CƠ SỞ TOÁN HỌC
1.1. Bài toán giấu tin và vai trò
1.1.1. Bài toán giấu tin
Giấu tin là một kỹ thuật nhúng thông tin vào trong một nguồn đa phương
tiện gọi là đối tượng chứa như: tập tin ảnh, tập tin âm thanh, tập tin văn bản…
mà không gây ra sự nhận biết về sự tồn tại của thông tin đã được giấu.
Phương pháp giấu tin được tiến hành theo nhiều cách khác nhau tùy theo
từng phương pháp và mục đích. Bài toán giấu tin thông thường gồm hai quá
trình:



Nhúng tin (mã hóa)
Trích rút tin (giải mã)

Ví dụ 1: Thông điệp cần gửi được mã hóa và nhúng các bit thông tin của
vào trong ảnh

Hình 1. Ảnh đã được nhúng thông tin mật

Ví dụ 2: Thông điệp cần gửi được chứa trong một đoạn văn bản, ở đây
đối tượng chứa là một đoạn văn bản có nội dung sau:
3



“Apparently neutral’s protect is thoroughly discounted and ignored.
Isman hard hit. Blockade issue affects for pretext embargo on by-products,
ejecting suets and vegetable oils”
Có thể thấy được nội dung truyền tải là bức điện mật được sử dụng trong
chiến tranh thế giới lần thứ 2: “Pershing sails for YN June 1”
Bài toán giấu tin gồm 4 đối tượng chính là:
- Thông tin mật: Là thông tin nhúng vào đối tượng chứa và là thông tin
cần được bảo vệ.
- Đối tượng chứa: Đối tượng được sử dụng chứa thông điệp mật.
- Đối tượng đã nhúng: Là đối tượng chứa sau khi nhúng thông tin mật.
Ví dụ nếu đối tượng chứa là ảnh thì đối tượng đã nhúng là StegoImage.
- Khóa mật: Là khóa tham gia vào quá trình nhúng, tùy theo từng
phương pháp mà khóa này có tham gia hay không.
Các yêu cầu trong bài toán giấu tin:
- Tính bền vững: Thể hiện khả năng ít bị thay đổi trước những tấn công
từ bên ngoài như thay đổi định dạng, nội dung. Hiện nay chưa có
phương pháp nào đảm bảo biện pháp này một cách tuyệt đối. Với từng
ứng dụng cụ thể thì yêu cầu này cũng thể hiện khác nhau.
- Khả năng không bị phát hiện: thể hiện ở việc khó xác định được đối
tượng có chứa thông tin mật hay không. Hầu hết các phương pháp
giấu tin dựa trên đặc điểm của hai hệ tri giác người: thị giác và thính
giác. Khả năng này còn gọi là khả năng giả dạng.
- Khả năng lưu trữ: Khả năng này thể hiện ở lượng thông tin của thông
điệp mật có thể nhúng trong đối tượng chứa. Do tính bảo mật nên khả
năng lưu trữ luôn bị hạn chế. Do đó trong trường hợp muốn ẩn một
thông tin có kích thước tương đối lớn ta thường chia nhỏ ra nhiều
thành phần và thực hiện nhúng từng phần.

4



Khả năng Lưu trữ

Lưu trữ

Bảo mật

Bản quyền
Tính bền vững

Khả năng không bị phát hiện

Hình 2. Các yêu cầu trong bài toán giấu tin

1.1.2. Phân loại các kỹ thuật giấu tin
Kỹ thuật giấu tin nhằm mục đích đảm bảo an toàn và bảo mật thông tin ở
hai khía cạnh. Một là bảo mật cho giữ liệu được đem giấu (embedded data),
chẳng hạn như giấu tin mật: thông tin mật được giấu kỹ trong một đối tượng
khác sao cho người khác không phát hiện được (steganography), hai là bảo mật
cho chính đối tượng được dùng để giấu tin (host data), chẳng hạn như ứng dụng
bảo vệ bản quyền, phát hiện xuyên tạc thông tin (watermarking)....
Hai khía cạnh khác nhau này dẫn đến hai khuynh hướng kỹ thuật chủ yếu
của giấu tin. Khuynh hướng thứ nhất là giấu tin mật (Steganography). Khuynh
hướng này tập trung vào các kỹ thuật giấu tin sao cho thông tin giấu được càng
nhiều càng tốt và quan trọng là người khác khó phát hiện được một đối tượng có
bị giấu tin bên trong hay không. Khuynh hướng thứ hai là thuỷ vân số
(watermarking). Khuynh hướng thuỷ vân số đánh giấu vào đối tượng nhằm
khẳng định bản quyền sở hữu hay phát hiện xuyên tạc thông tin. Thuỷ vân số có
miền ứng dụng lớn hơn, đòi hỏi độ bền vững cao của các thông tin cần giấu đối

với các biến đổi thông thường của các tệp dữ liệu môi trường nên được quan
tâm nghiên cứu nhiều hơn và thực tế đã có nhiều những kỹ thuật dành cho
khuynh hướng này.

5


Ngành mật mã
(Cryptology)
Mật mã

Giấu thông tin

(Cryptography)

(Data Hiding)
Thuỷ vân số

Giấu tin

(Watermarking)

(Steganography)

Hình 3. Phân loại các kỹ thuật giấu tin

Phạm vi ứng dụng của thủy vân đa dạng hơn, tùy theo mục đích của hệ
thủy vân mà người ta lại chia thành các hướng nhỏ như thủy vân dễ vỡ và thủy
vân bền vững.
1.1.3. Mô hình giấu tin cơ bản

Khóa

Phân
phối
Phương tiện
chứa tin (ảnh,
audio, video, ..)

Phương tiện
đã chứa tin

Bộ
nhúng
thông
tin

Thông tin cần giấu

Hình 4. Lược đồ quá trình giấu tin mật

Hình 4 biểu diễn mô hình giấu tin cơ bản. Trong đó, phương tiện chứa tin
có thể bao gồm: văn bản, ảnh, audio, video… Thông tin cần giấu tùy theo mục
đích của người sử dụng. Thông tin được giấu vào trong phương tiện chứa tin
nhờ một bộ nhúng. Bộ nhúng là những chương trình thực hiện theo những thuật
6


toán để giấu tin và được thực hiện với một khóa bí mật giống như trong một số
hệ mật mã. Đầu ra của quá trình nhúng tin là phương tiện chứa đã được giấu tin.
Các phương tiện chứa này có thể được phân phối trên mạng.

Khóa

Phân
phối
Phương tiện
đã chứa tin

Bộ
giải

tin

Thông tin giấu

Phương tiện đã
chứa tin (ảnh,
audio, video, ..)

Kiểm
định

Hình 5. Lược đồ quá trình giải mã tin mật

Hình 5 mô tả quá trình giải mã thông tin đã được giấu trước đó. Đầu vào
là phương tin có chứa tin giấu, qua một bộ giải mã tin (tương ứng với bộ nhúng
tin) cùng với khóa sẽ được thực hiện việc giải mã thông tin. Đầu ra của quá
trình là phương tiện chứa tin và thông tin mật đã giấu trước đó. Trong trường
hợp cần thiết, thông tin lấy ra có thể được xử lý, kiểm định và so sánh với thông
tin đã giấu ban đầu.
1.1.4. Các ứng dụng của kỹ thuật giấu tin

Bảo vệ bản quyền tác giả: Đây là ứng dụng cơ bản nhất của kỹ thuật thủy
vân số. Một thông tin nào đó mang ý nghĩa quyền sở hữu tác giả gọi là thủy vân
sẽ được nhúng vào trong các sản phẩm, thủy vân đó chỉ một mình chủ sở hữu
hợp pháp các sản phẩm đó có và được dùng làm minh chứng cho bản quyền sản
phẩm. Giả sử có một sản phẩm dữ liệu dạng đa phương tiện như ảnh, âm thanh,
video và cần được lưu thông trên mạng. Để bảo vệ các sản phẩm chống lại các
hành vi lấy cắp hoặc làm nhái cần phải có một kỹ thuật để “dán tem bản quyền”
vào sản phẩm này. Việc dán tem hay chính là việc nhúng thủy vân cần phải đảm
7


bảo không để lại một ảnh hưởng đáng kể nào đến việc cảm nhận sản phẩm. Yêu
cầu kỹ thuật đối với ứng dụng này là thủy vân phải tồn tại bền vững cùng với
sản phẩm, muốn bỏ thủy vân này mà không được phép của người chủ sở hữu thì
chỉ có cách là phá hủy sản phẩm[5].
Xác thực thông tin hay phát hiện giả mạo: Một tập các thông tin sẽ được
giấu trong phương tiện chứa sau đó được sử dụng để nhận biết xem dữ liệu trên
phương tiện gốc đó có bị thay đổi không. Các thủy vân nên được ẩn để tránh sự
tò mò của kẻ thù, hơn nữa việc làm giả các thủy vân hợp lệ hay xuyên tạc thông
tin nguồn cũng cần được xem xét. Trong các ứng dụng thực tế người ta mong
muốn tìm được vị trí bị xuyên tạc cũng như phân biệt được các thay đổi. Yêu
cầu chung đối với ứng dụng này là khả năng giấu tin cao và thủy vân không cần
bền vững[5].
Giấu vân tay hay dán nhãn: Thủy vân trong những ứng dụng này được sử
dụng để nhận diện người gửi hay người nhận của một thông tin nào đó. Ví dụ
các vân khác nhau sẽ được nhúng vào các bản sao khác nhau của thông tin gốc
trước khi chuyển cho nhiều người[11]. Với ứng dụng này thì yêu cầu là đảm
bảo độ an toàn cao cho các thủy vân tránh sự xóa dấu vết trong khi phân phối.
Kiểm soát sao chép: Các thủy vân trong trường hợp này được sử dụng để
kiểm soát sao chép đối với các thông tin. Các thiết bị phát ra thủy vân thường

được gắn sẵn vào trong các hệ thống đọc/ghi. Ví dụ như hệ thống quản lý sao
chép DVD đã được ứng dụng ở Nhật. Các ứng dụng loại này cũng yêu cầu thủy
vân phải được đảm bảo an toàn và cũng sử dụng phương pháp phát hiện thủy
vân đã giấu mà không cần thông tin gốc.
Giấu tin mật: Các thông tin giấu được trong trường hợp này càng nhiều
càng tốt, việc giải mã để nhận được thông tin cũng không cần phương tiện chứa
ban đầu. Các yêu cầu mạnh về chống tấn công của kẻ thù không cần thiết lắm
thay vào đó là thông tin giấu phải đảm bảo tính không thể phát hiện.
1.2. Giấu tin trong ảnh và các đặc trưng
1.2.1. Giấu tin trong ảnh
Giấu tin trong ảnh, hiện nay, là một bộ phận chiếm tỷ lệ lớn nhất trong
các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong dữ liệu đa
phương tiện bởi lượng thông tin được trao đổi bằng ảnh là rất lớn. Hơn nữa,
giấu tin trong ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết các ứng
8


dụng bảo vệ an toàn thông tin như: xác thực thông tin, xác định xuyên tạc thông
tin, bảo vệ bản quyền tác giả, điều khiển truy nhập, giấu tin mật … Vì thế mà
vấn đề này đã nhận được sự quan tâm rất lớn của các cá nhân, tổ chức, trường
đại học, và viện nghiên cứu trên thế giới.
Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ảnh ít thay
đổi và ít ai biết được bên trong bức ảnh đó mang những thông tin có ý nghĩa
khác. Và ngày nay, khi ảnh số đã được sử dụng phổ biến, thì giấu tin đã đem lại
rất nhiều những ứng dụng quan trọng trong trên nhiều lĩnh vực trong đời sống
xã hội. Ví dụ như đối với các nước phát triển, chữ ký tay đã được số hóa và lưu
trữ sử dụng như là hồ sơ cá nhân của các dịch vụ ngân hàng và tài chính, nó
được dùng để xác nhận các thẻ tín dụng của người tiêu dùng. Thêm vào đó, lại
có rất nhiều loại thông tin quan trọng cần được bảo mật, chúng rất dễ bị lấy cắp
và bị thay đổi bởi các phần mềm chuyên dụng. Phát hiện thông tin xuyên tạc đã

trở nên vô cùng quan trọng và cấp thiết. Một đặc điểm của giấu tin trong ảnh đó
là thông tin được giấu trong ảnh một cách vô hình, nó như là một cách truyền
thông tin mật cho nhau mà người khác không thể biết được bởi sau khi giấu tin
thì chất lượng ảnh gần như không thay đổi, đặc biệt đối với ảnh màu hay ảnh đa
mức xám.
1.2.2. Các đặc trưng cơ bản
Giấu tin trong ảnh chiếm vị trí chủ yếu trong các kỹ thuật giấu tin, vì vậy
mà các kỹ thuật giấu tin phần lớn cũng tập trung vào các kỹ thuật giấu tin trong
ảnh. Các phương tiện chứa khác nhau thì cũng sẽ có các kỹ thuật giấu khác
nhau. Đối tượng ảnh là một đối tượng dữ liệu tĩnh có nghĩa là dữ liệu tri giác
không biến đổi theo thời gian. Dữ liệu ảnh có nhiều định dạng, mỗi định dạng
có những tính chất khác nhau nên các kỹ thuật giấu tin trong ảnh thường chú ý
tới các đặc trưng cơ bản sau đây:
- Phương tiện có chứa dữ liệu tri giác tĩnh
Dữ liệu gốc ở đây là dữ liệu tĩnh, dù đã giấu tin vào trong ảnh hay chưa
thì khi ta xem ảnh bằng thị giác, dữ liệu ảnh không thay đổi theo thời gian, điều
này khác với dữ liệu âm thanh và dữ liệu băng hình vì khi ta nghe hay xem thì
dữ liệu gốc sẽ thay đổi liên tục với tri giác của con người theo các đoạn, các bài
hay các ảnh…
- Kỹ thuật giấu phụ thuộc ảnh
9


Kỹ thuật giấu tin phụ thuộc vào các loại ảnh khác nhau. Chẳng hạn đối
với ảnh đen trắng, ảnh xám hay ảnh màu ta cũng có những kỹ thuật riêng cho
từng loại ảnh có những đặc trưng khác nhau.
- Kỹ thuật giấu tin lợi dụng tính chất hệ thống thị giác của con người
Giấu tin trong ảnh ít nhiều cũng gây ra những thay đổi trên dữ liệu ảnh
gốc. Dữ liệu ảnh được quan sát bằng hệ thống thị giác của con người nên các kỹ
thuật giấu tin phải đảm bảo một yêu cầu cơ bản là những thay đổi trên ảnh phải

rất nhỏ sao cho bằng mắt thường khó nhận ra được sự thay đổi đó vì có như thế
thì mới đảm bảo được độ an toàn cho thông tin giấu. Rất nhiều các kỹ thuật đã
lợi dụng các tính chất của hệ thống thị giác để giấu tin chẳng hạn như mắt người
cảm nhận về sự biến đổi về độ chói kém hơn sự biến đổi về màu hay cảm nhận
của mắt về màu xanh da trời kém nhất trong ba màu cơ bản.
- Giấu tin trong ảnh tác động lên dữ liệu ảnh nhưng không thay đổi
kích thước ảnh
Các thuật toán thực hiện công việc giấu tin sẽ được thực hiện trên dữ liệu
của ảnh. Dữ liệu ảnh bao gồm phần header, bảng màu (có thể có) và dữ liệu
ảnh. Do vậy mà kích thước ảnh trước và sau khi giấu tin là như nhau.
- Đảm bảo chất lượng sau khi giấu tin
Đây là một yêu cầu quan trọng đối với giấu tin trong ảnh. Sau khi giấu
tin bên trong, ảnh phải đảm bảo được yêu cầu không bị biến đổi để có thể bị
phát hiện dễ dàng so với ảnh gốc. Yêu cầu này dường như khá đơn giản đối với
ảnh màu hoặc ảnh xám bởi mỗi điểm ảnh được biểu diễn bởi nhiều bit, nhiều
giá trị và khi ta thay đổi một giá trị nhỏ nào đó thì chất lượng ảnh thay đổi
không đáng kể, thông tin giấu khó bị phát hiện, nhưng đối với ảnh đen trắng
mỗi điểm ảnh chỉ là đen hoặc trắng, và nếu ta biến đổi một bit từ trắng thành
đen và ngược lại mà không khéo thì sẽ rất dễ bị phát hiện. Do đó, yêu cầu đối
với các thuật toán giấu tin trong ảnh màu hay ảnh xám và giấu tin trong ảnh đen
trắng là khác nhau. Trong khi đối với ảnh màu thì các thuật toán chú trọng vào
việc làm sao giấu được càng nhiều thông tin càng tốt thì các thuật toán áp dụng
cho ảnh đen trắng lại tập trung vào việc làm thế nào để thông tin giấu khó bị
phát hiện nhất.
- Thông tin trong ảnh sẽ bị biến đổi nếu có bất cứ biến đổi nào trên ảnh
10


Vì phương pháp giấu tin trong ảnh dựa trên việc điều chỉnh các giá trị
của các bit theo một quy tắc nào đó và khi giải mã sẽ theo các giá trị đó để tìm

được thông tin giấu. Theo đó, nếu một phép biến đổi nào đó trên ảnh làm thay
đổi giá trị của các bit thì sẽ làm cho thông tin giấu bị sai lệch. Nhờ đặc điểm này
mà giấu tin trong ảnh có tác dụng nhận thực và phát hiện xuyên tạc thông tin[5].
- Vai trò của ảnh gốc khi giải tin
Các kỹ thuật giấu tin phải xác định rõ ràng quá trình lọc ảnh để lấy thông
tin giấu cần đến ảnh gốc hay không cần. Đa số các kỹ thuật giấu tin mật thì
thường không cần ảnh gốc để giải mã. Thông tin được giấu trong ảnh sẽ được
mang cùng với dữ liệu ảnh, khi giải mã chỉ cần ảnh đã mang thông tin giấu mà
không cần dùng đến ảnh gốc để so sánh đối chiếu.

11


CHƯƠNG 2
GIẤU TIN TRÊN ẢNH NHỊ PHÂN
2.1. Giới thiệu về giấu tin trong ảnh nhị phân
Đối tượng làm môi trường chứa tin của các thuật toán này là ảnh nhị phân
đen trắng dạng bitmap. Ảnh nhị phân đen trắng bao gồm các điểm ảnh chỉ có
màu trắng hoặc đen (tương ứng với bit 0 hoặc bit 1). Để giấu dữ liệu, ta sẽ tách
ma trận điểm ảnh thành các ma trận bit F kích thước m × n rời nhau, và giấu
tin trên mỗi ma trận đó. Bởi vậy các thuật toán chỉ cần quan tâm tới phương
pháp giấu dữ liệu trên các ma trận F.
Một số thuật toán giấu tin trên ảnh nhị phân nổi tiếng hiện nay như: WuLee, CPT. Các thuật toán này đều dựa trên thao tác biến đổi ma trận bit.
2.2. Giấu tin theo khối bit đơn giản
Algorithm SW ( simple watermarking)
Input:
- File ảnh Bitmap đen trắng F
- Dữ liệu cần giấu d được biểu diễn dưới dạng nhị phân (dãy bit 0/1).
Output:
- File ảnh đã giấu tin G

Method:
- Chia F thành các khối kích thước m x n
- Với mỗi khối B trong F ta xét khả năng giấu một bit dữ liệu di của
d theo quy tắc cân bằng tính chẵn lẻ như sau:
Gọi t là tổng số điểm trắng (bit mang giá trị 1) trong B. Nếu t và di cùng
tính chẵn lẻ thì không sửa khối B và coi như khối này đã được giấu bit dữ liệu
12


di. Trong trường hợp ngược lại, nếu t và di khác tính chẵn lẻ thì đảo ngẫu nhiên
một bit trong B để t và di trở thành cùng tính chẵn lẻ.
Như vậy giả sử cần giấu 1 bit dữ liệu b vào khối B. Kí hiệu Sum(B) là
tổng số điểm trắng trong khối B, kí hiệu x = y (mod z) cho biết hai số nguyên x
và y có cùng số dư khi chia cho z (x và y đồng dư theo modulo z). Như vậy biểu
thức x = y (mod 2) cho biết x và y có cùng tính chẵn lẻ. Ta cần xét hai trường
hợp sau đây:
- Trường hợp 1: Sum(B) = b (mod 2), khối B đã thỏa mãn tính chất
để giấu bit dữ liệu b, ta không cần sửa khối B và xem như bit b đã được
giấu vào khối B.
- Trường hợp 2: Sum(B) ≠ b (mod 2), trường hợp này phải sửa B để
thay đổi tính chẵn lẻ của Sum(B). Dễ thấy, ta chỉ cần đảo một bit bất kỳ
trong B thì Sum(B) sẽ tăng hoặc giảm 1 đơn vị. Gọi B' là khối kết quả thu
được từ khối B sau khi đảo một bit trong B. Ta có Sum(B’) = b (mod 2).
Ví dụ dưới đây minh họa cho hai trường hợp trên:
+ Giả sử khi phải giấu một bit dữ liệu b = 1 vào khối B như sau:
1

0

1


1

0

1

0

0

0

0

1

0

1

1

1

0

Hình 6. Khối B kích thước 4 x 4, với Sum(B) = 8

+ Ta đếm số bit 1 trong khối: trong trường hợp trên khối B có

8 bit 1, nên Sum(B) = 8. Do đó, Sum(B) ≠ (mod 2). Như vậy khối
B không thỏa mãn yêu cầu để giấu bit 1. Muốn giấu bit 1 vào khối
13


này ta cần phải thay đổi khối bằng cách chọn một bit bất kỳ và đổi
từ 0 sang 1 hoặc từ 1 sang 0. Giả sử ta sửa lại phần tử B[2,2] như
hình vẽ sau:

1

0

1

1

0

0

0

0

0

0

1


0

1

1

1

0

Hình 7. Khối B sau khi thay đổi bit

+ Sau khi thay đổi thì Sum(B’) = 7, khi đó ta có Sum(B’) = 1
(mod 2).
+ Giả sử vẫn với khối B đã cho như trên nhưng ta phải giấu bit
dữ liệu b = 0 vào khối đó. Ta thấy do Sum(B) = 8 nên Sum(B) = 0
(mod 2). Khối B được bảo toàn và bit dữ liệu b = 0 xem như được
giấu.

14


Trong thuật toán thủy vân này, khóa đơn giản là kích thước của khối, tức
là bộ số (m, n). Nếu biết kích thước của khối thì dễ dàng trích lại dữ liệu d theo
thuật toán SIW (Simple ivert watermarking) như sau:
Algorithm SIW
Input:
-


File ảnh Bitmap đen trắng có chứa thủy vân G

Output:
-

Dữ liệu d (dãy bit 0/1) trích từ ảnh G

Format: d= SIW(G)
Method
Chia A thành các khối kích thước m x n, với mỗi khối B i trong A ta tính
di= Sum(B) mod 2.
Với thuật toán này việc chọn khối là khá đơn giản: ta có thể bắt đầu từ
khối đầu tiên và các khối tiếp theo một cách tuần tự. Tuy nhiên, ta có thể chọn
ngẫu nhiên một khối chưa giấu ở mỗi lần giấu, hoặc chọn các khối theo một
thuật toán xác định kèm theo một khóa K. Khi đó, ta đã làm tăng được độ an
toàn của thuận toán vì khóa bây giờ còn thêm cả chỉ số khối đã giấu tin cho từng
bit. Hoặc ta có thể thay đổi kích thước khối ở mỗi lần giấu, chẳng hạn như khối
thứ nhất có kích thước khối là 8 x 8, khối thứ hai có kích thước là 8 x 12 trong
trường hợp này thì khóa sẽ gồm cả kích thước khối của mỗi lần giấu.
Kỹ thuật trên sẽ gặp phải hiện tượng gây bất thường đối với ảnh sau khi
giấu thông tin đặc biệt khi chọn vào những khối ảnh một màu, chẳng hạn một
khối toàn đen hoặc toàn trắng. Khi đó, nếu cần đảo giá trị một bit thì vị trí bit
đảo sẽ khác biệt hoàn toàn với các bit trong khối và dễ bị nhận biết có sự thay
đổi. Vì vậy để xác định nên thay đổi bít nào trong khối bít ta phải tính hệ số ảnh
hưởng của bít đó khi nó bị thay đổi. Hệ số này tính bằng cách xét sự thay đổi về
15


tính trơn và tính liên kết với các điểm láng giềng. Tính trơn được đo theo sự
chuyển đổi mức xám theo chiều ngang và chiều dọc, đường chéo trong cửa sổ

3x3. Tính liên kết được tính bằng số nhóm điểm đen và số nhóm điểm trắng. Ví
dụ: Nếu đảo một điểm ảnh trong hình a sẽ ít bị chú ý hơn điểm ảnh trong hình b.

2.3. Thuật toán giấu tin Wu-Lee
Với thuật toán này, có thể nhúng một bít vào mỗi khối bằng cách hiệu
chỉnh nhiều nhất 1 bít của khối. Kỹ thuật này có khả năng làm tăng dữ liệu có
thể nhúng.
Xét ảnh gốc F, khóa bí mật K và một số dữ liệu được nhúng vào F. Khóa
bí mật K là khóa có kích thước mxn. Để đơn giản ta giả sử kích thước của ảnh
gốc F là bội số của mxn. Quá trình nhúng thu được ảnh F có một số bit đã bị
hiệu chỉnh. Thuật toán thực hiện như sau:
Bước 1: Chia F thành các khối, mỗi khối có kích thước mxn.
Bước 2: Với mỗi khối Fi thu được ở bước 1. Kiểm tra điều kiện:
0 < SUM(Fi∧K) < SUM(K)
Nếu điều kiện trên đúng thì tiếp tục thực hiện bước 3 để nhúng một bit
vào Fi. Ngược lại, dữ liệu sẽ không được nhúng vào Fi và Fi sẽ được giữ
nguyên.
Bước 3: Giả sử bit được nhúng vào Fi là b. Để hiệu chỉnh Fi ta làm như
sau:
Nếu (SUM((Fi∧K) mod 2 = b) thì giữ Fi như cũ.
16


Ngược lại: nếu SUM((Fi∧K) = 1 thì chọn ngẫu nhiên một bit Fi(j,k) = 0
mà K(j,k) = 1 và đổi Fi(j,k) thành 1.
Ngược lại: nếu SUM(Fi∧K) = SUM(K) - 1 thì: chọn ngẫu nhiên một bit
của Fi tại vị trí (j,k) mà Fi(j,k) = 1 và K(j,k) = 1 và đổi Fi(j,k) thành 0.
Ngược lại:chọn ngẫu nhiên một bit của Fi sao cho K(j,k) = 1 và đảo
ngược Fi(j,k).
Việc chọn khóa K nhằm làm tăng độ mật của thuật toán. Nếu trước đây

chỉ biết kích thước khối là M x N thì đối phương rất dễ khai thác được bản tin
mật, nay ngoài kích thước này còn phải biết giá trị cụ thể của khóa K.
Phép toán Fi^K quy định thuật toán chỉ được phép sửa các bit trong khối
Fi ứng với bit 1 trong khóa K. Như vậy, khóa K được xem như một mặt nạ, tạo
ra khung nhìn cho thuật toán. Dĩ nhiên ta có thể thay phép toán ^ bằng một phép
toán khác, chẳng hạn phép ⊕.
Điều kiện 0 < SUM(Fi^K) < SUM(K) qui định nếu khối F i^K toàn 0
hoặc giống như khóa K thì không được giấu tin để tránh bị lộ.
Trong bước S3 chỉ thực hiện tối đa một phép đảo một bit của F i để thu
được khối Fi’ nhằm đảo bảo tính bất biến.
SUM(Fi’^K) mod 2 = b
Do việc giấu tin vào khối chỉ cần thay đổi tối đa một bit nên việc chọn bit
nào trong F để đảo cần tuân thủ theo nguyên tắc:
Nếu Fi^K có nhiều bit 1 thì chọn bit 1, ngược lại nếu F i^K có quá ít bit 1
thì chọn bit 0. Nguyên tắc này làm giảm khả năng bit đảo bị phát hiện. Có thể
dễ dàng kiểm chứng rằng sau bước S3 ta thu được bất biến trên. Nhờ bất biến
đó, ta dễ dàng giả mã để lấy lại thông tin đã giấu như sau:

17


Duyệt lần lượt các khối Fi’ của ảnh đích F’. Nếu Fi’ thỏa mãn điều kiện
0thức b = SUM(Fi’^K) mod 2.
Vì khóa K là bí mật nên thông tin đã nhúng là bí mật. Thuật toán này làm
thay đổi nhiều nhất một bit của khối F i khi giấu một bit thông tin vào bên trong
khối nên với một khối có kích thước m x n đủ lớn thì sự thay đổi của Fi là nhỏ.
Giả sử ta cần giấu dãy bit d = 011 vào một ảnh F có kích thước 6x6 với
một ma trận khóa K có kích thước 3x3 như trong hình vẽ. Ta chia ảnh F thành
bốn khối nhỏ mỗi khối sẽ có kích thước là 3x3 ta thu được F1, F2, F3, F4.


Ví dụ nhúng 3 bit
Áp dụng thuật toán:
- Vì SUM(F1^K) = SUM(K) = 5 nên không giấu dữ liệu vào trong F1.
- Vì SUM(F2^K) = 3 nên ta giấu bit đầu tiên b = 0 của d vào khối này.
- Vì SUM(F2^K) mod 2 = 3 mod 2 ≠ 0 và thỏa mãn điều kiện nên ta chọn
ngẫu nhiên một một phần tử, chẳng hạn phần tử (2,3) để đảo bit trong khối F2.
Với phần tử này ta có F2[2,3] = 0 và K[2,3] = 1. Sau khi đảo bit F2[2,3] ta thu
được khối G2 như trên hình vẽ (bit đổi được tô xám).

18


- Với F3, SUM(F3^K) = 3 và bit cần giấu là bit thứ hai trong d, b = 1 nên
ta có SUM(F3^K) mod 2 = 3 mod2 = 1 = b. Khối F3 được giữ nguyên với ý
nghĩa là khối đã được giấu bit b = 1 (trường hợp 1).
- Cuối cùng, đối với F4, SUM(F4^K) = 4 = SUM(K) - 1, và bit cần giấu
là bit cuối cùng của d, b = 1 nên ta có SUM(F4^K) mod 2 = 4 mod 2 = 0 ≠
b.Trường hợp này rơi vào trường hợp thứ 3 trong thuật toán. Ta chọn phần tử
(2,1) để đảo bit trong khối F4 vì với phần tử này ta có F4[2,1] = 1 và K[2,1] = 1.
Sau khi đảo bit F4[2,1] ta thu được -khối G4 như trên hình vẽ (bit bị đảo được
tô xám).
2.4. Thuật toán giấu tin Chen-Pan-Tseng
Trên cơ sở thuật toán của Wu-Lee, các tác giả Yu Yan Chen, Hsiang
Kuang Pan và Yu Chee Tseng đã phát triển một kỹ thuật giấu tin mới, thuật toán
giấu tin CPT. Kỹ thuật này sử dụng một ma trận khóa K và một ma trận trọng số
W trong quá trình giấu tin và tách thông tin.
* Ý tưởng:
Kỹ thuật này tốt hơn kỹ thuật trên vì có thể nhúng nhiều bit vào một khối.
Với một khối kích thước mxn có thể nhúng log2(mn+1) bit dữ liệu bằng cách

thay đổi nhiều nhất 2 bít trong một khối. Ở đây ta sử dụng ma trận trọng số (W)
khi nhúng thủy vân. Thuật toán đảm bảo tốt, an toàn và giấu được nhiều thông
tin trong ảnh bằng cách thay đổi nhiều nhất 2 bit mỗi khối ảnh. Nhược điểm của
phương pháp này là chất lượng chưa cao, dễ bị phát hiện, chỉ nên áp dụng cho
ảnh màu. Thuật toán cải tiến sẽ cải thiện rất nhiều chất lượng ảnh bằng kỹ thuật
chọn hệ số phân bố bit đen trắng và số bit giấu tương đương.
Quá trình biến đổi khối ảnh F thành F’ kích thước m × n để giấu r bit
thông tin b = b1b2 ...br được thực hiện sao cho:
SUM (( F '⊕ K ) ⊗ W) ≡ b mod(2r ).

(3)

Công thức (3) được sử dụng để tách chuỗi bit b = b1b2 ...br từ khối ảnh F’.
19


* Một số khái niệm
- Khóa bí mật K: Khóa K là một ma trận nhị phân có cùng kích thước
mxn với kích thước của khối ảnh. Khóa được dùng một cách bí mật giữa người
gửi và người nhận.
- Ma trận trọng số W cấp r: ma trận này có kích thước bằng kích thước
của một khối ảnh (mxn) và thỏa mãn các điều kiện sau:
+ W là một ma trận số nguyên có các phần tử nằm trong khoảng giá trị
(0..2r - 1) với r cho trước thỏa mãn điều kiện 2r < (m x n)
+ Mỗi một phần tử có giá trị từ (1..2 r - 1) phải xuất hiện ít nhất 1 lần trong
W.
Với mỗi n,m,r thỏa mãn 2r – 1 <= m x n sẽ có:
r

(


)

r

2 −1
Cmn
× 2 r − 1 !×(2 r − 1) mn−( 2 −1)

Khả năng chọn W. Ví dụ với m = n = 4, r =2 -> có 5.356.925.280 khả
năng lựa chọn W. Con số này đủ lớn để làm giảm nguy cơ thủy vân bị phát hiện
bởi những kẻ phá hoại.

F2

F1

K

F4

F3

W

Ví dụ Ma trận ảnh F(F1,F2,F3,F4) khóa K và ma trận trọng số W
* Phép đảo bit:

20



Phép đảo bit là một phép biến đổi trên các bit nhị phân. Đảo bit b tương đương
với phép biến đổi thay b bởi 1-b, tức là nếu ban đầu b nhận giá trị 0 thì sau khi
đảo bit nó sẽ nhận giá trị 1 và ngược lại, nếu ban đầu b có giá trị là 1 thì sau khi
đảo nó sẽ mang giá trị 0.
* Các phép toán trên ma trận dùng trong thuật toán
Ngoài các phép toán And, Xor, Sum đã đề cập, trong thuật toán còn sử dụng
thêm phép nhân ma trận (ký hiệu ⊗).

F

W

F⊗W

Hình 8. F⊗W là phép toán nhân giữa các cặp bit của hai ma trận

Tóm tắt nội dung thuật toán CPT
Dữ liệu vào:
+) Xét trên một ma trận nhị phân F = ( Fij ) m×n .
+) Kết hợp 1 ma trận khóa nhị phân cấp m × n : K = ( K ij ) m×n .
+) W là ma trận trọng số tự nhiên cấp m × n : W = (Wij ) m×n .
+) b là dãy r bit cần giấu vào ma trận Fm×n : b = b1b2 ...br
Ở đây, ta sử dụng b theo hai nghĩa: dãy bit và số tự nhiên dạng nhị phân
+) Đặt r = log 2 ( N + 1)  , m × n = N .
r
Sao cho: { Wij ,1 ≤ i ≤ m,1 ≤ j ≤ n} = {1, 2, ...,2 − 1}

Hay nói các khác, ma trận trọng số W cần thỏa mãn: mỗi giá trị của tập


{ 1,2, ..,2

r

− 1} phải xuất hiện trong W ít nhất 1 lần.

21


Các ma trận khóa K và ma trận trọng số W kích thước m × n được sử
dụng như các thành phần khóa bí mật: người sử dụng K, W trong quá trình giấu
và người nhận cần phải có K, W để khôi phục lại tin đã giấu.
Dữ liệu ra:
+) Ma trận nhị phân F’ đã được mã hóa mang thông tin dãy r bit b, mà
chúng ta có thể lấy lại được thông tin b từ F’.
Thuật toán giấu tin
Bước 1:
Tính T = F ⊕ K .
Và r = log 2 (m × n + 1)  .
Bước 2:
m

n

r
Tính S = ∑∑ Tij × Wij mod 2 .

(4)

i =1 j =1


Hay S = SUM [T ⊗ W]. Suy ra: 0 ≤ S ≤ 2r − 1.
Bước 3:
Ta xem b = b1b2 ...br là giá trị dữ liệu cần giấu dưới dạng cơ số 2. Suy ra
0 ≤ b ≤ 2r − 1. Mục đích của thuật toán này là thay đổi nhiều nhất hai vị trí trong
F để dược ma trận F’ mà S’ tương ứng tính được theo công thức (4) thỏa mãn:
S ' = b mod 2r .

(5)

Tính α = b − S mod 2r .
Bước 4:
Ta cần tìm các ô Fij sao cho S tăng đúng một lượng α khi ta đảo giá trị
bit ở ô Fij . Khi đó ta được:
S ' = b = S + α mod 2r .
Ta gọi Sα là tập các ô Fij cần đảo sao cho S ' = b. Sα thỏa mãn điều kiện
đó khi và chỉ khi:
22


{

Sα = Fij | (Tij = 0, Wij = α mod 2r ) or ( Tij = 1, Wij = 2 r − α mod 2 r )

}

(6)

Tính Sα theo công thức (6).
Bước 5:

Xảy ra một trong ba trường hợp sau:
Nếu S = b (hay α = 0 ) thì dĩ nhiên ta không cần thay đổi ma trận F.
Nếu α ≠ 0 và Sα ≠ ∅ ta chỉ cần đảo một ô bất kì Fij thuộc Sα . Thuật
toán dừng. Nếu α ≠ 0 và Sα = ∅ ta chuyển bước 6.
Bước 6:
Ta tìm số nguyên h > 1 và nhỏ nhất sao cho Shα ≠ ∅ và Sα −hα ≠ ∅ . Sự
tồn tại của h được chứng minh trong [10]. Khi đó ta đảo một ô bất kì thuộc Fij
thuộc Shα và một ô bất kì Fij thuộc Sα −hα .
* Sau khi nghiên cứu thuật toán chúng ta có thể đưa ra một số nhận xét
- Thuật toán cho phép nhúng được tới log2(mn+1) bit dữ liệu vào trong
mỗi khối ảnh mxn với điều kiện là 2rbit của một khối ảnh. Như vậy, thuật toán đã có cải tiến nhiều so với những
thuật toán khác chỉ nhúng được một bit tin vào mỗi khối ảnh.
- Độ an toàn của thuật toán được nâng cao thông qua việc sử dụng hai ma
trận: ma trận khóa và ma trận trọng số để nhúng và tách thủy vân.
- Thuật toán tương đối dễ cài đặt
- Đây là thuật toán nhúng thủy vân vào ảnh đen trắng nên ta cũng có thể
tính toán hệ số phân bố bit D để cải thiện chất lượng ảnh sau khi nhúng thủy
vân.

23


CHƯƠNG 3
XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG
4.1. Tổng quan về ảnh số
Một vài định dạng phổ biến cho file ảnh kĩ thuật số bao gồm BMP, GIF,
PNG, JPG, … Trong đồ họa máy tính BMP còn được biết đến với tên Windows
bitmap, là một định tập tin hình ảnh phổ biến. Có 3 dạng ảnh số phổ biến: Ảnh
đen trắng (ảnh nhị phân), ảnh đa mức xám, ảnh màu.

Ảnh đen trắng: là ảnh mà mỗi điểm ảnh chỉ thể hiện một trong hai trạng
thái 0 và 1 để biểu diễn trạng thái điểm ảnh đen hay trắng.

Hình 9. Ví dụ về ảnh đen trắng

Ảnh đa mức xám: là ảnh mà mỗi điểm ảnh được biểu diễn bởi một giá
trị và đó là cường độ sáng của điểm ảnh.

24


Hình 10. Ví dụ về ảnh đa cấp xám

Ảnh màu: là ảnh mà mỗi điểm ảnh được biểu diễn bởi ba đại lượng R, G,
B. Số lượng màu có thể của loại ảnh này lên tới 2563 màu khác nhau. Để tiết
kiệm bộ nhớ với các ảnh có số lượng màu nhỏ hơn hoặc bằng 256 thì màu các
điểm ảnh được lưu trữ dưới dạng bảng màu.Với ảnh có số màu lớn thì các điểm
ảnh không tổ chức dưới dạng bảng màu, khi đó giá trị của các điểm ảnh chính là
giá trị của các thành phần màu R,G,B. Với ảnh có số lượng màu lớn, tùy theo
chất lượng ảnh mà quyết định số bit để biểu diễn cho mỗi màu thường là 24 bit,
hoặc 32 bit . Với ảnh 24 bit mỗi thành phần màu được biểu diễn bởi một byte (8
bit).

Hình 11. Ví dụ về ảnh màu

Cấu trúc ảnh Bitmap
25



×