Nội dung thuật toán nhúng tin được trình bày tóm tắt như sau:
- Ma trận nhị phân F cấp m×ndùng để giấu tin
- Ma trận nguyên tuần tự O cấp m×n, O thỏa mãn điều kiện: - Ma trận nhị phân K cấp m×n
- Dãy bit cần nhúng s = srsr-1...s1
Output:
Gọi G là ma trận sau khi nhúng dãy bít s vào F, giữa G và F chỉ khác nhau tối đa 1 phần tử.
Nội dung thuật toán như sau:
Đặt Bước 1: Tính B = F⊕K Bước 2: Tính với t =1,…,r Bước 3: Tính Bước 4: Tính Bước 5: Tính ∑− = × = 1 0 2 r t t t R MP
Bước 6: Thay đổi giá trị của một điểm ảnh ứng với MP - i = (MP-1) div n +1
- j = MP - (i-1) div n - Fi,j= 1- Fi,j
2.2.3. Phân tích thuật toán
Lược đồ CTL sử dụng ma trận nguyên tuần tự O để thay thế vai trò ma trận trọng số W của CPT. Với mỗi khốim×n điểm ảnh F, phương pháp CTL
có thể nhúng được bít và biến đổi nhiều nhất một điểm ảnh trên F.Như vậy, về hiệu quả thuật toán này tương đương với thuật toán giấu tin CPT. Độ an toàn của thuật toán cũng rất cao tương đương với thuật toán CPT vì thông qua hai ma trận dùng làm khoá để giải tin đó là ma trận trọng số và ma trận khoá. Như vậy độ bảo mật của thuật toán là:
2m*n mn r r mn (2 1) 1 2 r r (2 1)! (2 1) C − × − × − − −
Nếu áp dụng tốt thuật toán này cho ảnh màu thì có thể nói thuật toán đã đạt được yêu cầu cơ bản của một ứng dụng giấu tin mật đó là đảm bảo tính ẩn của thông tin giấu, số lượng thông tin giấu caọ
2.2.4. Ví dụ minh họa
Quá trình giấu tin: Giả sử cần giấu dãy bit 0010 vào ma trận điểm ảnh
có kích thước 4x4 với các tham số đầu vào như hình:
0 1 1 1 1 0 0 1 1 2 3 4 0 1 1 0 0 1 0 1 5 6 7 8 F = 0 0 1 1 K = 1 0 1 0 W = 9 10 11 12 1 0 0 1 0 1 0 0 13 14 15 1 1 1 1 0 F 1011 0 1 1 1 0 0 1 1 0 1 1 0 F⊕K= 1 0 0 1 G = 0 1 1 1 1 1 0 1 1 0 0 1 T
Hình 2.4. Minh hoạ thuật toán CTL
- Tính C= F ⊕ K - Tính Hj = ( ) i Nj C i ∈ ∑ H1 = C(1) + C(3) + C(5) + C(7) + C(9) + C(11) + C(13) + C(15) + C(16) = 1+ 1+ 0 + 1+ 1+ 0+ 1+ 0+ 1 = 6 H2 = C(2) + C(3) + C(6) + C(7) + C(10) + C(11) + C(14) + C(15)
= 1+ 1+ 0 + 1+ 0+ 0+ 1+ 0 = 4 H3 = C(4) + C(5) + C(6) + C(7) + C(12) + C(13) + C(14) + C(1) = 0+ 0+ 0 + 1+ 1+ 1+ 1+ 0 = 4 H4 = C(8) + C(9) + C(10) + C(11) + C(12) + C(13) + C(14) + C(15) = 1+ 1+ 0 + 0+ 1+ 1+ 1+ 0 = 5 - Tính hj: hj = Hj mod 2 h1 = 6 mod 2 = 0 h2 = 4 mod 2 = 0 h3 = 4 mod 2 = 0 h4 = 5 mod 2 = 1 - Tính Rj: Rj =0 nếu hj = sj Rj =1 nếu hj<> sj R1 = 0; R2 = 0; R3 = 1; R4= 1; - Tính MP: MP = Rr * 2r-1 + Rr-1 * 2r-2 +…+ R1 * 20 MP = 10 (MP <> 0) + Với k 10 thì O(10) = MP + Đảo bit F(10): F(10) = 1- F (10) = 1 + Đặt G = F (nhúng và thay đổi 1 vị trí)
2.3. Kỹ thuật giấu tin THA
2.3.1. Một số định nghĩa
Định nghĩa 1: Ký hiệu là phép nhân theo phần tử của hai ma trận cùng cấp m×n:
Định nghĩa 2: Phép hai số nguyên không âm là phép toán xor trên từng cặp bít tương ứng của chúng.
Ví dụ: 5 12 = 0101 1100 = 1001=9
Định nghĩa 3: Với D là ma trận nguyên không âm cấp m×n, ký hiệu s = XSUM(D) hay được hiểu là phép trên tất cả các phần tử của D.
2.3.2. Thuật toán giấu tin trên một khối
Nội dung phần này trình bày các thuật toán giấu tin trên một ma trận nhị phân(khối điểm ảnh) F cấp m×n, các thuật toán trong mục này chỉ biến đổi nhiều nhất một phần tử trên F.
2.3.2.1. Thuật toán nhúng một bít
Đối với ảnh nhị phân, lược đồ của Wu-Lee được biết đến như là một lược đồ đơn giản thuộc nhóm kỹ thuật giấu tin theo khối bít. Lược đồ này sử dụng ma trận nhị phân ngẫu nhiên K cấp m×n làm khóa bí mật. Theo đó, thuật toán có thể nhúng một bít b vào F bằng việc biến đổi nhiều nhất một phần tử trên F để nhận được G thỏa mãn điều kiện:
Lược đồ này không thể mở rộng để giấu một dãy bít.
Ta xét một thuật toán khác bằng cách thay cho điều kiện trong thuật toán Wu-Leẹ Thuật toán này có thể mở rộng để giấu một dãy r bít.
Thuật toán 1:
Thuật toán này sẽ biến đổi nhiều nhất một phần tử trên F để nhận được G thỏa mãn điều kiện:
(1) Thuật toán được thực hiện như sau:
Bước 1:
- Tính
- Nếu b ≠s, chuyển đến Bước 2
Bước 2:
- Tính
- Tìm một phần tử
- Đảo phần tử Fu,v: Fu,v = 1- Fu,v - Đặt G = F và kết thúc thuật toán
Nhận xét 1: Trong thuật toán d = 1.Vì vậy, để bước 2 luôn thực hiện được thì ma trận K cần thỏa mãn điều kiện:
2.3.2.2. Thuật toán nhúng dãy bít
Trong mục này ta sẽ mở rộng Thuật toán 1 để nhúng dãy bít
vào khối điểm ảnh F bằng cách sử dụng ma trận khóa K gồm các phần tử là các dãy nhị phân r bít. Nói cách khác, các phần tử Ki,j có giá trị từ 0 đến 2r-1.
Tương tự như Thuật toán 1, thuật toán dưới đây sẽ biến đổi nhiều nhất một phần tử của F để được ma trận G thỏa mãn điều kiện:
(2)
Thuật toán 2: Bước 1:
-
- Nếu , đặt G = F và kết thúc thuật toán Nếu , chuyển sang Bước 2
Bước 2:
- Chọn một phần tử - Đảo phần tử
- Đặt G = F và kết thúc thuật toán
Nhận xét 2: Trong thuật toán trên, d là một số nguyên từ 1 đến 2r-1. Do đó, để bước 2 luôn thực hiện được thì ma trận khóa K phải thỏa mãn điều kiện:
(3) Từ điều kiện (3) suy ra:
Ví dụ minh họa
Để làm rõ hơn nội dung của thuật toán nhúng dãy bít, ta xét ví dụ nhúng hai bít b1b2 vào ma trận F với các tham số cụ thể như sau:
b=b1b2=10 F K 1 0 0 10 01 10 0 1 1 11 01 10 0 1 1 11 11 01 Bước 1: -
- Do s ≠ b, chuyển sang Bước 2
Bước 2:
-
- Theo thuật toán chọn , suy ra (u,v) = (1,2) - Đảo F1,2: F1,2=1-0 = 1 và Đặt G = F.
Vậy sau khi nhúng dãy bít 10 vào F ta được G như sau:
1 1 0
0 1 1
0 1 1
Chứng minh thuật toán nhúng dãy bít
Để khẳng định Thuật toán 2 đúng ta cần chứng minh trong mọi trường hợp kết thúc G luôn thỏa mãn điều kiện (4.2):
Xét hai trường hợp kết thúc của thuật toán:
Trường hợp 1: Thuật toán kết thúc tại Bước 1, hiển nhiên G thỏa mãn điều kiện (2). Bởi, G chính là F, mà F thỏa mãn điều kiện .
Trường hợp 2:Thuật toán kết thúc tại Bước 2, nội dung của Bước 2 như sau:
- ,
- Chọn một phần tử , - Đảo Fu,v: Fu,v=1-Fu,v và đặt G=F
Khi đó, dễ dàng suy ra các phần tử của G được xác định theo công thức sau: (4) Gọi = ⊗ =∑⊕ × j i i j i j K G K G XSUM s , , , ) ( ' Từ (4) suy ra: ] ) 1 [( ' , , ) , ( ) , ( , , uv uv v u j i j i j i K F K F s = ∑⊕ × ⊕ − × ≠ (5)
Do F là ma trận nhị phân nên Fu,v=0 hoặc 1. Xét hai trường hợp của Fu,v:
Trường hợpFu,v=0, từ (5) suy ra:
] ) 1 [( ' , , , , , uv uv j i j i j i K F F F s =∑⊕ × ⊕ − × s'=s⊕Ku,v (*)
Trường hợp Fu,v=1, từ (5) suy ra:
v u v u v u v u v u j i j i j i K F K K K F s , , , , ) , ( ) , ( , , [(1 ) ] '= ∑⊕ × ⊕ − × ⊕ ⊕ ≠ uv uv uv j i i j ij K F F K F s , , , , , , ] ) 1 [( '=∑⊕ × ⊕ − × ⊕ s'=s⊕Ku,v (**)
Từ (*) và (**) suy ra khi đảo giá trị Fu,v thì
Mặt khác, theo thuật toán nên
Vậy .
Thuật toán 3
Để nâng cao mức độ an toàn của Thuật toán 2, ta có thể sử dụng thêm một số làm khóa thứ 2. Khi đó ta nhận được thuật toán 3 có nội dung tương tự như Thuật toán 2 ngoại trừ s được tính theo công thức:
Ngoài ra, để khôi phục dãy bít b, thay cho công thức (2) ta sẽ sử dụng công thức sau:
Ta nhận thấy ma trận G trong Thuật toán 3 được xác định từ F, K, w và b. Vì vậy, ta có thể xem Thuật toán 3 như một phép biến đổi T từ (F,K,w,b) đến G:
G = T(F,K,w,b)
2.3.3. Lược đồ giấu tin trên ảnh nhị phân
Giả sử I là ảnh nhị phân dùng để giấu tin và b là dãy bít tin mật cần giấụ Trong thuật toán sử dụng hai khóa K và W, trong đó K là ma trận cấp m×n thỏa mãn hai điều kiện:
1) 2)
với và
Thuật toán giấu tin: Bước 1: Chia khối
Chia ảnh I thành N khối Fi cấp m×n, chia b thành N dãy bít bi có độ dài
Bước 2: Giấu tin trên từng khối For i=1 to N do
Gi=T(Fi, K, wα, bi) End for
Thuật toán cho ta ảnh G gồm các khối Gi cấp m×n với i =1,…,N
Gọi G là ảnh có chứa dãy bít tin mật, thuật toán khôi phục tin giấu cần biết hai khóa bí mật K và W đã được sử dụng trong thuật toán giấu tin. Nội dung thuật toán khôi phục như sau:
Bước 1: Chia ảnh G thành N khối Gi cấp m×n
Bước 2: Khôi phục dãy bít For i = 1 to N do
End for
Kết quả ta nhận được dãy bít tin mật b gồm N dãy con r bít bi, i=1,2, …,N
2.3.4. So sánh lược đồ THA với CPT và CTL
Theo một lược đồ giấu tin cần có 3 tính chất cơ bản: khả năng nhúng tin, tính che giấu và mức độ bảo mật. Nội dung phần này sẽ tập trung phân tích, so sánh các tính chất trên giữa lược đồ THA với hai lược đồ CPT và CTL.
- Khả năng nhúng tin và tính che giấu của lược đồ THA hiển nhiên là tốt hơn lược đồ CPT và bằng lược đồ CTL. Bởi, để nhúng
bít, CPT cần thay đổi nhiều nhất hai phần tử trên mỗi khối m×n điểm ảnh, trong khi lược đồ THA và CTL chỉ thay đổi nhiều nhất một phần tử.
- Tính bảo mật của một lược đồ giấu tin THA là sự an toàn của dãy bít được nhúng. Đối với hai lược đồ CPT và CTL, sự an toàn của dãy bít phụ thuộc vào số phương án của hai khóa K và W (khóa O của CTL tương đương
với W của CPT). Trong đó:
• K là ma trận nhị phân cấp m×n,suy ra số phương án của K là:
• W là ma trận nguyên cấp m×n và thỏa mãn điều kiện:
Vậy, số phương án của W là:
(**) Từ (*) và (**) suy ra mức độ bảo mật của CPT và CTL là:
Trong thực tế, kích thước khối(m×n)của hầu hết các lược đồ thường nhỏ. Bởi vì, nếu chọn m×n lớn thì lượng thông tin giấu được trên toàn bộ ảnh sẽ giảm, thông thường kích thước khối được chọn là 5×5, hoặc 8×8, hoặc16×16. Tuy nhiên, số khối(N) của ảnh lại lớn. Ví dụ, với ảnh có kích thước 200×200,
nếu chọn kích thước khối thì .
Trong lược đồ THA, tính bảo mật dựa trên hai khóa K và W. Trong đó - K là ma trận nguyên cấp m×n và K thỏa mãn điều kiện:
Suy ra số phương án của K là:
- . Để tiện cho
Vậy, tính bảo mật của lược đồ THA là:
Với những phân tích ở trên, nếu chọn , các tính chất cơ bản của ba lược đồ giấu tin được trình bày trong bảng sau:
Bảng 2.1: So sánh các tính chất của ba lược đô Tính chất
Lược đô
Một khối m×n điểm ảnh
Tính bảo mật của lược đô Khả năng
nhúng (bits)
Số điểm ảnh tối đa cần
thay đổi
THA 1
CTL 1
CPT 2
Mặt khác, theo khẳng định trong thuật toán nhúng tin của lược đồ CTL có tốc độ thực hiện nhanh hơn đáng kể so với CPT. Tuy nhiên, so với lược đồ THA thì khối lượng phép tính của CTL vẫn còn nhiều hơn, cụ thể như sau:
Nếu xét trên một khối điểm ảnh, số lượng phép tính của Thuật toán 2 xấp xỉ bằng số lượng phép tính của Bước 1 và Bước 3 trong thuật toán CTL. Ngoài ra, Bước 2 của CTL cần tối thiểu phép toán kiểm tra bít để xây dựng các tập Nj. Do vậy, tốc độ thực hiện của lược đồ THA sẽ nhanh hơn CTL và CPT.
Kết quả thực nghiệm
Trong thực nghiệm này sử dụng ba ảnh khác nhau, các ảnh này đều có kích thức , những ảnh này được dùng để giấu tin, bao gồm English text image, Vietnamese text image và “Lena” image, để giấu cùng một lượng tin mật.
(a) English text (b)Vietnamese text (c) Lena
Bảng 2 trình bày giá trị PSNR của các ảnh sau khi giấu tin của sơ đồ THA, sơ đồ CPT và sơ đồ CTL. Kết quả chỉ ra rằng, giá trị PSNR của lược đồ THA luôn cao hơn CPT và xấp xỉ với CTL.
Bảng 2.2: Giá trị PSNR của các ảnh sau khi giấu tin
Ảnh 8×8 16×16 THA CTL CPT THA CTL CPT Vietnamese text image 24,39 dB 24,37 dB 23,43 dB 30,26 dB 30,22 dB 29,3 dB
English text image 24,33 dB 24,37 dB 23,34 dB 30,25 dB 30,26 dB29,18 dB Lena image 24,45 dB 24,43 dB 23,38 dB 30,26 dB 30,22 dB 29,97 dB Thuật toán trình bày một lược đồ mới THA giấu tin trên ảnh nhị phân. Với mỗi khối điểm ảnh, lược đồ THA có thể nhúng được tối đa bít và biến đổi nhiều nhất một điểm ảnh của khốị Như vậy, khả năng nhúng tin và tính che giấu của lược đồ THA tốt hơn lược đồ CPT và bằng CTL. Ngoài ra, so với hai lược đồ trên thì lược đồ này có khối lượng tính toán ít hơn,thời gian thực hiện nhanh hơn, có lược đồ tính toán đơn giản, dễ cài đặt, triển khai ứng dụng và độ an toàn bảo mật cao hơn.
Chương 3
ỨNG DỤNG KỸ THUẬT GIẤU TIN TRONG VIỆC TRAO ĐỔI, XÁC THỰC ĐỀ THI GIỮA ĐẠI HỌC THÁI NGUYÊN VỚI CÁC
CƠ SỞ ĐÀO TẠO
3.1. Bài toán
Đại học Thái Nguyên là đơn vị đào tạo có uy tín trong và ngoài nước. Nhà trường có nhiều cơ sở đào tạo thành viên đóng trên các địa bàn khác nhaụ Trong quá trình hoạt động, việc trao đổi đề thi giữa các cơ sở đào tạo thành viên và trụ sở chính cần được đảm bảo an toàn và tin cậỵ
Dựa trên kỹ thuật giấu tin và mật mã học, luận văn trình bày giải pháp tổng thể cho bài toán trao đổi đề thi thông qua hệ thống mạng nội bộ hoặc mạng Internet giữa các cơ sở đào tạo của Trường Đại học Thái Nguyên.
3.2. Giải pháp cho hệ thống trao đổi và xác thực đề thi Ạ Lập CSDL đề thi và ảnh
A1. Xây dựng ngân hàng đề thi theo môn học, hệ đào tạo và hình thức thi
Số lượng đề thi trong ngân hàng là hơn một trăm đề thi, luận văn trình bày một số đề thi mẫu trong ngân hàng đề thi:
Đề thi mẫu 1:
ĐẠI HỌC THÁI NGUYÊN Cộng hoà xã hội chủ nghĩa Việt Nam
ĐẠI HỌC CNTT&TT THÁI NGUYÊN Độc lập - Tự do - Hạnh phúc ====o0o====
ĐỀ THI CAO HỌC Môn: Cơ sở dữ liệu Thời gian làm bài: 120 phút
Câu 1 (2 điểm). Thủ tục Split(Elem *a, Elem *&b, Elem *&c,
int k) dưới đây tách danh sách a thành 2 danh sách: danh sách b chứa các phần tử có giá trị trong trường Val chia hết cho số nguyên dương k, danh sách c chứa các phần tử còn lạị Thí dụ, với a→(15)→(2)→(13)→(6)• thì lời gọi
Split(a,b,c,2) sẽ cho ra b→(2)→(6)• và c→(15) →(13)•.
1a. Viết thêm vào vị trí ... để thu được phương án hoàn chỉnh.
void Split(Elem * a, Elem *&b, Elem *&c, int k){ Elem *lastb, *lastc, *e;
// lastb là con trỏ đến cuối danh sách b