CHƯƠNG 2 : CÁC KỸ THUẬT PHÁT HIỆN ẢNH SỐ GIẢ MẠO
2.2. Dựa trên định dạng ảnh (Format Based)
Nguyên tắc đầu tiên trong việc phân tích tìm bằng chứng là các bằng chứng phải được bảo toàn. Về phương diện này, việc mất dữ liệu trong nén hình ảnh qua các phần mềm nén, chẳng hạn như JPEG, có thể được coi như là một khó khăn trong việc phân tích. Ngược lại, một số thuộc tính độc đáo của việc mất mát dữ liệu trong quá trình nén ảnh lại có thể được khai thác để phân tích tìm các bằng chứng để chứng minh sự giả mạo trong ảnh số.
2.2.1. Lượng tử hóa JPEG (JPEG quantization)
Hầu hết các ảnh nén được sử dụng hiện nay đều theo định dạng JPEG. Kỹ thuật nén được sử dụng trong cả các máy ảnh số. Các nhà sản xuất máy ảnh thường cấu hình cho thiết bị của họ khác nhau để cân bằng và nén với các chất lượng khác nhau để phù hợp với nhu cầu và thị hiếu của thị trường. Sự khác biệt này có thể được sử dụng để xác định nguồn gốc của một hình ảnh.
Với ba kênh màu ảnh (RGB), quá trình nén của chuẩn JPEG được tiến hành như sau: Những hình ảnh RGB đầu tiên được chuyển đổi thành không gian độ sáng/màu sắc (YCbCr). Mỗi kênh sau đó được phân chia thành các khối 8x8 điểm ảnh. Các giá trị được chuyển đổi từ số nguyên dương sang số nguyên có dấu (ví dụ từ [0..255] thành [-128,127]). Mỗi khối được chuyển đổi sang không gian tần suất bằng cách sử dụng biến đổi cosin rời rạc (DCT-2D). Tùy thuộc vào
tần số và kênh cụ thể, mỗi hệ số DCT, c, sẽ được lượng tử hóa bởi một lượng q:
. Giai đoạn này chính là nguồn nén. Bảng lượng tử hóa đầy đủ bao gồm 192 giá trị - tập 8x8 giá trị tương ứng với một tần số cho một trong ba kênh màu (YCbCr). Đối với tỷ lệ nén thấp, các giá trị có xu hướng tiến tới 1 và tăng dần với tỷ lệ nén cao hơn. Với một số biến thể khác nhau, trình tự nêu trên được phát triển bởi các bộ mã hóa JPEG trong máy ảnh kỹ thuật số và phần mềm chỉnh sửa hình ảnh. Các nguồn chính của các bộ mã hóa là sự chọn lựa các bảng lượng tử. Như vậy, một dấu hiệu sắp xếp đã được nhúng vào trong mỗi ảnh JPEG. Bảng
lượng tử hóa có thể được triết xuất từ bộ mã hóa ảnh JPEG hoặc ước lượng từ các hình ảnh được chụp từ máy ảnh này. Do các máy ảnh sử dụng các bộ mã hóa khác nhau vì thế chúng ta có thể so sánh bảng lượng tử hóa của chúng và có thể xác định được nguồn gốc của một hình ảnh, có thể được chụp bằng loại máy ảnh
này hay không.
2.2.2. Phần đầu ảnh JPEG (JPEG Header)
Sau khi lượng tử hóa, các hệ số DCT được đưa đến quá trình mã hóa dữ liệu thường sử dụng mã hóa Huffman. Huffman là một phương pháp mã hóa với độ dài từ mã biến đổi trong đó các giá trị xuất hiện thường xuyên hơn được gán từ mã có độ dài ngắn hơn, còn các giá trị xuất hiện ít thường xuyên hơn được gán các từ mã có độ dài lớn hơn. Đây là phương pháp mã hóa (nén) không mất mát, được tăng hiệu quả nhờ sự lượng tử hóa các hệ số DCT trước khi mã hóa.
Các chuẩn JPEG không quy định quá trình lượng tử hóa bảng mã hay mã hóa Huffman. Các bộ nén có thể tùy ý cân đối giữa việc nén và chất lượng cho nhu cầu và thị hiếu riêng của họ. Các bảng lượng tử hóa và các bảng mã Huffman được sử dụng để giải mã một tập tin JPEG sẽ được nhúng vào phần đầu (header) của JPEG. Các bảng lượng tử hóa JPEG và mã Huffman cùng với các trích xuất dữ liệu từ các phần đầu của tệp ảnh JPEG có thể coi là một dấu hiệu riêng biệt của bộ nén và có thể được sử dụng để nhận dạng.
Ba thành phần đầu tiên chứa dấu hiệu của máy ảnh đó là kích thước ảnh, bảng lượng tử hóa và các mã Huffman. Các kích thước hình ảnh được sử dụng để phân biệt các bộ nén của các thiết bị chụp ảnh khác nhau với các bộ cảm biến khác nhau. Bộ ba bảng lượng tử hóa 8x8 quy về mảng một chiều bao gồm 192 giá trị. Các mã Huffman được xác định gồm 6 bộ của 15 giá trị tương ứng với số lượng chiều dài tữ mã 1,2… 15: mỗi một trong 3 kênh yêu cầu 2 giá trị code, một cho hệ số DC và một cho hệ số AC. Sự biểu diễn này là nhân tố chính cho sự so sánh dựa trên việc phân tích chiều dài các từ mã. Tổng cộng có 284 giá trị được chiết xuất từ hình ảnh có độ phân giải đầy đủ: 2 kích thước hình ảnh, 192 giá trị lượng tử hóa và 90 từ mã Huffman.
Một phiên bản thu nhỏ của hình ảnh có độ phân giải đầy đủ thường được nhúng vào trong (header) của tệp ảnh JPEG. Ba thành phần xác định đặc điểm của bộ nén được chiết xuất từ hình ảnh thu nhỏ này. Hình ảnh thu nhỏ thường không có kích thước lớn hơn 100 điểm ảnh và được tạo ra bằng cách cắt, lọc, và lấy mẫu đầy đủ độ phân giải của ảnh. Hình ảnh thu nhỏ sau đó thường được nén và lưu trữ trong phần đầu của tệp ảnh JPEG như một hình ảnh trong JPEG. Như
vậy, thành phần tương tự có thể được chiết xuất từ những hình ảnh thu nhỏ giống như toàn bộ độ phân giải như được trình bày trong phần trước. Một số thiết bị chụp ảnh số, nhà sản xuất không tạo ra hình ảnh thu nhỏ hoặc không mã hóa chúng như một hình ảnh JPEG. Trong những trường hợp như vậy, có thể là một giá trị 0 cho tất cả các thông tin của hình ảnh thu nhỏ. Thay vì là một hạn chế, nó được coi là đặc tính riêng biệt của bộ nén máy ảnh số.
Thành phần cuối cùng của nhận dạng bộ nén được chiết xuất từ dữ liệu EXIF của ảnh. Các dữ liệu được tìm thấy trong phần đầu (header) của tệp ảnh JPEG lưu trữ hàng loạt các thông tin về thiết bị chụp ảnh số và hình ảnh. Theo tiêu chuẩn EXIF, có năm thành phần chính được sắp xếp trong một tệp ảnh (1) Phần chính (2) Exif (3) Khả năng tương thích (4) Ảnh thu nhỏ (5) GPS. Nhà sản xuất thiết bị chụp ảnh số có thể tùy ý đưa bất kỳ thông tin vào trong tệp ảnh số. Một biểu diễn nhỏ của họ có thể được chiết xuất bằng cách đếm số lượng các mục của một trong năm thành phần chính. Bởi vì tiêu chuẩn EXIF cho phép tạo ra thêm các thành phần bổ sung. Tổng số bất kỳ một IFD và tổng số các mục trong IFD cũng được sử dụng để nhận dạng. Một số nhà sản xuất máy ảnh tùy chỉnh những dữ liệu theo cách không phù hợp với tiêu chuẩn EXIF sẽ gặp lỗi khi phân tích các dữ liệu. Những lỗi này được coi là một tính năng của máy ảnh được thiết kế và tổng số lỗi phân tích cú pháp được sử dụng như một tính năng để nhận dạng. Trong tám giá trị được chiết xuất từ dữ liệu, năm lần đếm cho năm phần trong IFD, một lần đếm số bổ sung của IFD, một cho đếm các lỗi phân tích cú pháp.
Trong phần tóm lược, có 284 giá trị chiết xuất từ độ phân giải đầy đủ của hình ảnh, tương đương với 284 giá trị của phần đầu (header) trong hình ảnh thu nhỏ, 8 từ chuẩn EXIF, tổng cộng là 576 giá trị hình thành nên 576 dấu hiệu riêng có thể dùng là nhận dạng. Trong phạm vi mà hình ảnh phần mềm chỉnh sửa ảnh sử dụng các thông số JPEG khác từ bộ nén khác, bất kỳ thay đổi sẽ làm thay đổi nhận dạng ban đầu và do đó có thể được phát hiện.
Cụ thể, sự thay đổi hình ảnh được phát hiện bằng cách giải nén các dấu hiệu riêng và so sánh nó với một cơ sở dữ liệu các dấu hiệu riêng của máy ảnh đó. Bất kỳ một vùng nào của máy ảnh tạo ra cũng có thể được đưa ra so sánh với các đặc điểm riêng của mô hình dữ liệu EXIF. Sự không phù hợp là bằng chứng thuyết phục cho một sự giả mạo.
Một số thí nghiệm của các nhà khoa học cũng cho thấy rằng, các dấu hiệu từ các phiên bản của phần mềm Adobe Photoshop (ver 3, 4, 7, CS, CS2, CS3, CS4, CS5) được so sánh với dấu hiệu của 9.163 dấu hiệu riêng của bộ nén trên
máy ảnh. Trong trường hợp này chỉ có hình ảnh và hình ảnh thu nhỏ, bảng lượng tử và bảng mã Huffman được sử dụng để so sánh. Không có sự chồng chéo nào được tìm thấy từ bất kỳ phiên bản nào của phần mềm Photoshop và dấu hiệu của bộ nén. Như vậy, dấu hiệu riêng của Photoshop là duy nhất, điều này có nghĩa là bất kỳ chỉnh sửa nào của Photoshop có thể dễ dàng phát hiện.
2.2.3. Nén kép (Double JPEG)
Bất kỳ một ảnh số bị làm giả nào cũng phải được mở bởi một chương trình phần mềm chỉnh sửa ảnh số và được ghi lại. Như vậy, sự phát hiện ra sự nén kép cũng là một bằng chứng đáng tin cậy cho việc hình ảnh đã bị làm giả.
Nhắc lại quá trình mã hóa một ảnh JPEG gồm ba bước cơ bản: DCT, lượng tử hóa và mã hóa các hệ số DCT. Giải mã một dữ liệu đã được thực hiện ngược quá trình, giải mã dữ liệu mẫu, lượng tử hóa và nghịch đảo DCT.
Xét một tín hiệu tổng quát rời rạc một chiều x(n). Lượng tử hóa là một
hoạt động thông thường là mô tả một tham số gồm các hàm:
a u u qa( ) (2.4)
Trong đó, các bước lượng tử hóa (là một số nguyên dương), a: hệ số
lượng tử hóa q, u biểu diễn một giá trị của x(n). Lượng tử hóa lại sẽ đem lại giá
trị lượng tử ban đầu. Chú ý hàm không phải là hàm khả nghịch và quá trình ngượi lại của lượng tử hóa không phải là hàm nghịch đảo của lượng tử. Hoạt động hai lần lượng tử hóa là hoạt động được mô tả bởi hàm:
b a a u u qa( ) (2.5)
Trong đó a và b là các bước lượng tử hóa (số nguyên dương), Lượng tử hóa kép có thể biểu diễn với ba bước: lượng tử hóa với a, đảo ngược lại bước
lượng tử hóa với hệ số a, sau đó lượng tử hóa với hệ số b.
2.2.4. Hiệu ứng khối JPEG (JPEG Blocking)
Như mô tả trong phần trước, cơ sở cho việc nén JPEG là biến đổi DCT. Vì mỗi một khối DCT được biến đổi riêng biệt và được lượng tử hóa, dấu hiệu riêng sẽ xuất hiện ở biên của các khối lân cận ở các cạnh dọc và ngang. Khi một hình ảnh bị thay đổi, các dấu hiệu riêng của các khối sẽ bị thay đổi. Người ta cũng dựa vào các dấu hiệu thay đổi này để tìm ra việc làm giả hình ảnh. Họ xem
xét các giá trị khác biệt của điểm ảnh trong và giữa ranh giới các khối. Những sự khác biệt này có xu hướng trong khối sẽ nhỏ hơn ngoài khối. Khi một hình ảnh được cắt và nén lại, tập các dấu hiệu khối mới có thể sẽ khác với ranh giới ban đầu. Các giá trị điểm ảnh khác nhau của trong và giữa ranh giới được tính toán từ bốn điểm ảnh lân cận bằng một giá trị xác định, trong đó một điểm ảnh lân cận hoặc nằm trong khối và là biên hoặc chồng lấp lên một khối JPEG. Biểu đồ của những sự khác biệt này được tính từ tất các các khối JPEG 8x8 bị chồng lấp. Ma trận các khối dấu hiệu (BAM) được tính toán như sự khác biệt trung bình giữa các biểu đồ. Đối với hình ảnh không nén, ma trận này là ngẫu nhiên, trong khi với một hình ảnh nén, ma trận này có một mô hình cụ thể. Khi một hình ảnh được cắt và nén lại, mô hình này bị phá vỡ. Mô hình giám sát phân loại được sử dụng để phân biệt dấu hiệu xác thực hay giả dối từ BAMs.