1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
Lê Thụy
Nghiên cứu phƣơng pháp bảo vệ bản quyền tài liệu số hóa
Luận văn ThS Khoa học máy tính (60 48 01)
Hà Nội - 2008
2
MỤC LỤC
Chương 1: CÁC KHÁI NIỆM CƠ BẢN. 7
1.1 MÃ HÓA. 7
1.1.1 Khái niệm. 7
1.1.2 Phân loại các hệ mã hóa. 7
1.1.3 Một số hệ mã hóa cụ thể. 10
1.2 HÀM BĂM 13
1.2.1 Một số tính chất cơ bản của hàm băm 14
1.2.2 Cấu trúc cơ bản của các thuật toán băm mật mã. 15
1.3 CHỮ KÝ SỐ 16
1.3.1 Khái niệm. 16
1.3.2 Phân loại chữ ký điện tử. 17
1.3.3 Một số sơ đồ chữ ký cụ thể. 19
1.4 THỦY VÂN SỐ. 22
1.4.1 Khái niệm giấu tin. 22
1.4.2 Khái niệm Thủy vân số. 23
1.4.3 Phân loại thủy vân số. 24
1.4.4 Thủy vân số trong dữ liệu đa phƣơng tiện. 26
1.5 VẤN ĐỀ BẢO VỆ BẢN QUYỀN TÀI LIỆU SỐ. 27
Chương 2: CẤU TRÚC MỘT SỐ TỆP DỮ LIỆU PHỔ BIẾN TRÊN INTERNET. 28
2.1 ÂM THANH VÀ MỘT SỐ CẤU TRÚC FILE ÂM THANH. 28
2.1.1 Các đặc tính của âm thanh. 28
2.1.2 Số hóa tín hiệu âm thanh tƣơng tự. 30
2.1.3 Mố số cấu trúc file âm thanh số. 32
2.1.3.1 Tệp Wave (*.wav) 32
2.1.3.2 Tệp Midi. (*.mid) 37
2.2 ẢNH SỐ VÀ CÁC CẤU TRÚC FILE ẢNH. 42
2.2.1 Mầu sắc và các mô hình mầu 42
2.2.1.1 Mô hình mầu RGB 43
2.2.1.2 Mô hình mầu CMY 44
2.2.1.3 Mô hình mầu HSV 45
2.2.2 Một số loại ảnh. 45
2.2.2.1 Ảnh GIF 45
2.2.2.2 Ảnh BMP (bitmap) 46
2.2.2.3 Ảnh JPEG 48
Chương 3: MỘT SỐ PHƢƠNG PHÁP BẢO VỆ BẢN QUYỀN TÀI LIỆU SỐ. 49
3.1 PHƢƠNG PHÁP BẢO MẬT. 49
3.2 PHƢƠNG PHÁP XÁC THỰC. 50
3.2.1 Xác thực đồng nhất (toàn vẹn dữ liệu). 50
3
3.2.2 Xác thực thực thể. 52
3.3 PHƢƠNG PHÁP CHỐNG CHỐI BỎ. 59
3.3.1 Sơ đồ chữ ký chống chối cãi có “trọng tài”. 59
3.3.2 Sơ đồ chữ ký chống chối cãi Chaum-van Antverpen. 61
3.4 PHƢƠNG PHÁP KẾT HỢP CHỮ KÝ SỐ VÀ CHỨNG CHỈ SỐ. 64
3.4.1 Mô hình xác thực bản quyền sử dụng chứng chỉ số. 64
3.4.2 Sự chứng nhận và kiểm tra chữ ký. 65
3.5 PHƢƠNG PHÁP THỦY VÂN SỐ. 67
3.5.1 Kỹ thuật thủy vân LSB ứng dụng chống xuyên tạc ảnh. 67
3.5.1.1 Kỹ thuật LSB (Least Signification Bits). 67
3.5.1.2 Thuật toán nhúng thủy vân bằng kỹ thuật LSB. 70
3.5.2 Kỹ thuật thủy vân bền vững trên miền tần số. 72
3.5.2.1 Biến đổi Cosin rời rạc – DCT. 72
3.5.2.2 Thuật toán nhúng thủy vân. 73
Chương 4: THỬ NGHIỆM CHƢƠNG TRÌNH 77
4.1 CƠ SỞ LÝ THUYẾT 77
4.2 MỘT SỐ GIAO DIỆN CỦA CHƢƠNG TRÌNH. 78
4.3 MỘT SỐ ĐOẠN MÃ NGUỒN QUAN TRỌNG. 81
4
DANH MỤC HÌNH VẼ
Hình 1.1: Trao đổi mật mã sử dụng Hệ mã hóa khóa công khai 8
Hình 1.2: Hàm băm mật mã 13
Hình 1.3: Qua trình ký của chữ ký số kèm thông điệp 17
Hình 1.4: Quá trình kiểm thử của chữ ký kèm thông điệp 17
Hình 1.5: Quá trình ký của chữ ký khôi phục thông điệp 18
Hình 1.6: Quá trình nhúng thủy vân 22
Hình 1.7: Quá trình phát hiện thủy vân. 23
Hình 1.8: Cách phân loại thủy vân theo tính bền vững. 24
Hình 1.9: Phân loại thủy vân theo cảm nhận 25
Hình 2.1: Lƣợng tử tín hiệu Analog. 30
Hình 2.2 Lấy mẫu tín hiệu 31
Hình 2.3: Khuôn dạng tệp Wave 34
Hình 2.4: Độ dài bƣớc sóng của ba mầu đỏ, lục và lam 43
Hình 2.5: Mô hình mầu RGB 44
Hình 2.6: Mô hình mầu CMY 44
Hình 2.7: Mô hình mầu HSV 45
Hình 2.8: Cấu trúc ảnh Gif 46
Hình 3.1: Xác thực đồng nhất. 52
Hình 3.2: Xác thực thực thể sử dụng mật khẩu. 54
Hình 3.3: Chứng chỉ số. 58
Hình 3.4: Sơ đồ chống chối cãi có trọng tài. 60
Hình 3.5: Mô hình Certification Authority đơn giản 64
Hình 3.6: Quá trình ký chứng nhận 65
Hình 3.7: Quá trình kiểm tra chứng nhận 66
Hình 3.8: Biểu diễn ảnh Bitmap không nén 68
Hình 3.9: Mô hình nhúng tin ngẫu nhiên. 69
Hình 3.10 Qúa trình nhúng tin với kỹ thuật LSB 70
Hình 3.11 Qúa trình tách tin và Xác thực ảnh 71
Hình 3.12: Quá trình nhúng thủy vân. 74
Hình 3.13: Quá trình rút/trích thủy vân 75
Hình 4.1 Nhúng thủy vẫn vô hình bằng kỹ thuật LSB 78
Hình 4.2: Ảnh đã bị phát hiện sửa đổi 79
Hình 4.3 Thủy vẫn hữu hình 80
Hình 4.4 Kết quả nhúng thủy vẫn hữu hình 80
5
MỞ ĐẦU
Sự ra đời và phát triển mạnh mẽ của các hệ thống mạng và ngày nay là mạng
toàn cầu Internet đã mạng lại sự đột phá trong xã hội. Đƣa thế giới chuyển từ
kỷ nguyên Công nghiệp sang kỷ nguyên Thông tin và kinh tế tri thức. Cuộc cách mạng
thông tin và kỹ thuật số đã đem lại những thay đổi sâu sắc trong tƣ duy và cách làm
việc của con ngƣời. Trong môi trƣờng mạng, con ngƣời có thể sử dụng những
sản phẩm tri thức dƣới dạng đã đƣợc số hóa. Mạng Internet toàn cầu, nơi diễn ra
quá trình trao đổi thông tin trong mọi lĩnh vực mọi thời điểm, là môi trƣờng hoàn hảo
cho việc trao đổi thông tin và hội nhập.
Việc triển khai các hệ thống số đã chuyển đổi các cách thức mà trong đó
các sản phẩm đã đƣợc taọ ra, sử dụng và phân phối trên thị trƣờng. Số hoá các nội
dung đã đặt ra những thách thức chƣa từng có cho tất cả các bên liên quan. Trong khi
nó cho phép cá các nhân sử dụng các tài nguyên theo các phƣơng thức mới, thì
công nghệ số cũng đã tạo ra khả năng sao chép hoàn hảo, không có bất kỳ
khiếm khuyết và phân phối lại những sản phẩm này trên toàn thế giới, có hoặc không
có sự cho phép trƣớc của ngƣời sở hữu. Thực tế sau một giai đoạn do dự ban đầu,
ngƣời sáng tạo nội dung, các nhà cung cấp dịch vụ Internet và rất nhiều các thành viên
khác nhau đang phát triển những phƣơng thức kinh doanh mới cho việc phân phối
nội dung số. Internet đã thay đổi mọi thứ trong việc đƣa các nội dung trí tuệ đến với
cộng đồng. Những vụ kiện về bản quyền số diễn ra hàng ngày hàng giờ đang khiến
nguời ta tự hỏi về tƣơng lai của các sản phẩm trí tuệ trong thế giới mạng.
Vấn đề đặt ra cho tất cả các phƣơng thức kinh doanh, phân phối tài nguyên số
là làm sao vẫn phải tuân thủ các nguyên tắc về quyền sở hữu trí tuệ, nhƣng không
cản trở hay làm phức tạp hóa quá trình phân phối tài nguyên số đó. Hiện nay có rất
nhiều kỹ thuật bảo vệ bản quyền tài nguyên số. Các kỹ thuật khác nhau cho phép
tác động vào một tập các kiểu tài nguyên số tƣơng ứng.
6
Luận văn nghiên cứu các phƣơng pháp bảo vệ bản quyền tài nguyên số.
Các kỹ thuật giữ bản quyền tài nguyên số trong luận văn đƣợc nghiên cứu dựa trên các
loại tài liệu đƣợc phân nhóm và từ đó mỗi nhóm tài nguyên số sẽ có các kỹ thuật
đặc trƣng riêng.
Luận văn gồm 3 chƣơng:
Chương 1: Các khái niệm cơ bản.
Trong chƣơng này sẽ trình bầy tổng quan về Bản quyền số và các khái niệm
cơ bản đƣợc sử dụng trong toàn Luận văn. Bao gồm: Khái niệm toán học,
khái niệm Thủy vân số, Chữ ký số, Xác thực điện tử cho việc giữ bản quyền tài liệu số.
Chương 2: Cấu trúc của các loại tài nguyên số phổ biến trên Internet
Chƣơng này trình bầy về cấu trúc của các nhóm tài nguyên số thƣờng đƣợc
trao đổi trên Internet. Bao gồm: Nhóm tài nguyên về Audio (*.wav, *.mp3, *.midi),
Nhóm tài nguyên về Image (*.bmp, *.gif, *.jpge)
Chương 3: Các kỹ thuật bảo về bản quyền tài liệu số.
Trên cơ sở các nhóm tài nguyên số đã đƣợc phân loại và tìm hiểu cấu trúc
lƣu trữ trong chƣơng 2. Trong chƣơng này trình bầy các kỹ thuật tƣơng ứng với mỗi
nhóm tài nguyên số đó. Các kỹ thuật này phụ thuộc vào cấu trúc lƣu trữ và đặc trƣng
dữ liệu của các nhóm tài nguyên số.
7
Chƣơng 1: CÁC KHÁI NIỆM CƠ BẢN.
1.1 MÃ HÓA.
Nhƣ đã biết, việc truyền tin trên mạng rất dễ bị “đánh cắp”, vì vậy để đảm bảo
an toàn cho nội dung thông tin đƣợc truyền ngƣời ta thƣờng mã hóa trƣớc khi truyền
nó trên mạng, nhằm giấu đi ý nghĩa của nó. Các hệ mã đƣợc chia thành 2 nhóm chính,
Mã hóa khóa công khai và mã hóa khóa bí mật. Trong phần này sẽ trình bầy các
khái niệm về mật mã và các vấn đề liên quan.
1.1.1 Khái niệm.
Một hệ mật mã là một bộ năm (P, C, K, E, D) trong đó:
+ P: là một tập hữu hạn các bản rõ.
+ C: là một tập hƣu hạn các bản mã.
+ K: là một tập hƣu hạn các khoá.
+ Với mỗi k K, có một hàm lập mã e
k
E, e
k
: P C, và một hàm giải mã
d
k
D, d
k
: C P sao cho d
k
(e
k
(x)) = x với mọi x P.
1.1.2 Phân loại các hệ mã hóa.
Các hệ mã hóa đƣợc chia thành 2 nhóm chính. “Mã hóa khóa đối xứng” và
“Mã hóa khóa công khai”.
Mã hóa khóa đối xứng:
Là hệ mã mà việc lập mã và giải mã thƣờng dùng chung một khóa, hoặc nếu
có dùng hai khóa thì khi khóa lập mã bị lộ ngƣời ta có thể tìm ra khóa giải mã trong
thời gian tƣơng đối ngắn. Tuy nhiên do đặc tính mã hóa tƣơng đối nhanh, các hệ mã
loại này thƣờng đƣợc dùng để mã hóa các loại tài liệu có kích thƣớc lớn.
8
Các hệ mã loại này nói chung có một điểm yếu rất dễ bị tấn công đó là
quá trình chuyển giao khóa giữa các bên liên quan (người nhận). Trong hệ mã hóa
khóa đối xứng ngƣời ta còn chia các hệ mã thành 3 nhóm: “Mã hóa cổ điển”,
“Mã hóa khối” và “Mã dòng”.
Lập mã
e
k’
(x)=y
Bản rõ Kết quả
Giải mã
d
k”
(y)=x
Bộ khóa
(k’, k”)
k’ (kênh công cộng)
y (kênh công cộng)
Kẻ tấn công
A B
Hình 1.1: Trao đổi mật mã sử dụng Hệ mã hóa khóa công khai
9
Mã hóa khóa công khai:
Là hệ mã mà việc lập mã và giải mã dùng hai khóa khác nhau. Hai khóa này
có mối liên hệ chặt chẽ và có thể suy ra nhau phụ thuộc vào từng hệ mã cụ thể. Trong
đó khóa lập mã đƣợc công khai (public) và khóa giải mã đƣợc giữ bí mật (private). Các
hệ mã loại này đƣợc xây dựng dựa trên các bài toán “khó” nên quá trình lập mã và giải
mã tƣơng đối chậm, nên thƣờng đƣợc dùng để mã hóa các dữ liệu nhỏ.
Nhƣ vậy các hệ mã khóa khóa công khai đã khắc phục đƣợc nhƣợc điểm lớn
nhất của mã hóa khóa đối xứng là quá trình phải chuyển giao khóa giữa các bên
liên quan. Trong các sơ đồ mã hóa khóa công khai ngƣời nhận A tính toán ra cặp khóa
sau đó giữ cho mình khóa giải mã (private key) và công khai khóa lập mã (public key).
Mọi ngƣời trên mạng muốn gửi thông tin mật cho A sẽ sử dụng khóa công khai lập mã
rồi gửi bản mã cho A. Do chỉ duy nhất A có khóa giải mã tƣơng ứng nên chỉ A mới
giải mã đƣợc tài liệu đó.
10
1.1.3 Một số hệ mã hóa cụ thể.
1/.Mã hóa RSA
Bài toán RSA (RSA Problem): Cho một số nguyên dƣơng n là tích của hai
thừa số nguyên tố lẻ p và q. Một số nguyên dƣơng b sao cho
gcd(b, (p-1)(q-1)) = 1 và một số nguyên c. Bài toán đặt ra: tìm số nguyên x sao cho
x
b
≡ c (mod n)
Thuật toán Sinh khóa cho mã khóa Công khai RSA
1. Sinh hai số nguyên tố lớn p và q có giá trị xấp xỉ nhau
2. Tính n = p.q, và
(n) = (p-1).(q-1)
3. Chọn một số ngẫu nhiên b, 1 < b <
(n), sao cho gcd(b,
(n)) = 1
4. Sử dụng thuật toán Euclide để tính số a, 1 < a <
(n), sao cho a.b ≡ 1 (mod
(n))
5. Khóa công khai là (n, b), Khóa bí mật là (a)
Thuật toán Mã hóa RSA
(i). Lập mã :
a. Lấy khóa công khai (n, b) theo thuật toán trên
b. Chọn một bản mã x, trong khoảng [1, n-1]
c. Tính : y = x
b
mod n
d. Nhận đƣợc bản mã y
(ii). Giải mã :
Sử dụng khóa bí mật a để giải mã : x = y
a
mod n
11
Chứng minh hàm giải mã:
Ta có a.b ≡ 1 (mod
(n)) vì vậy tồn tại một số nguyên dƣơng k sao cho
a.b=1+k.
(n) và nếu gcd(x,p)=1 thì theo định lý Fermat ta có:
x
p-1
≡1 (mod p)
Thực hiện việc nâng lũy thừa hai vế của đồng dƣ thức trên với số mũ là k(q-1)
sau đó nhân cả hai vế với x ta đƣợc:
x
1+k(p-1)(q-1)
≡x (mod p)
Trong trƣờng hợp khác, nếu gcd(x,p)=p thì đồng dƣ thức trên vẫn đúng vì mỗi
vế của nó đều có dạng 0 modulo p. Do đó:
x
a.b
≡ x (mod p)
Lập luận tƣơng tự ta có:
x
a.b
≡ x (mod q)
Cuối cùng, vì p, q là hai số nguyên tố khác nhau nên:
x
a.b
≡ x (mod n)
do đó: y
a
≡ (x
b
)
a
≡ x (mod n)
12
2/. Mã hóa ElGamal.
Bài toán logarit rời rác (Discrete logarithm problem): Cho một số nguyên tố p
và một phần tử sinh α của tập
Z
*
p
, một phần tử β
Z
*
p
. Bài toán đặt ra: tìm một số
nguyên x, 0 ≤ x ≤ (p-2), sao cho α
x
≡ β (mod p)
Thuật toán Sinh khóa cho mã khóa Công khai ElGamal
1. Sinh ngẫu nhiên một số nguyên tố lớn p và α là phần tử sinh của
Z
*
p
2. Chọn ngẫu nhiên một số nguyên a, 1 ≤ a ≤ p−2, tính α
a
mod p
3. Khóa công khai la (p, α, α
a
). Khóa bí mật (a)
Thuật toán Mã hóa ElGamal
(i). Lập mã :
a. Lấy khóa công khai (p, α, α
a
) theo thuật toán trên
b. Chọn một bản mã x, trong khoảng [0, p−1]
c. Chọn ngẫu nhiên một số nguyên k, 1 ≤ k ≤ p−2
d. Tính γ = α
k
mod p và δ = x.(α
a
)
k
mod p
e. Nhận đƣợc bản mã là (γ, δ)
(ii). Giải mã :
a. Sử dụng khóa bí mật (a) và tính γ
p-1-a
mod p
b. Lấy bản rõ: x = (γ
-a
).δ mod p
Chứng minh hàm giải mã:
(γ
-a
).δ ≡ (α
-ak
).x.(α
ak
) ≡ x (mod p).
13
1.2 HÀM BĂM.
Hàm băm theo nghĩa đơn giản là hàm cho tƣơng ứng một mảng dữ liệu lớn với
một mảng dữ liệu nhỏ, đƣợc sử dụng rộng rãi trong nhiều ứng dụng khác nhau của
tin học. Trong công nghệ mã, hàm băm cho khả năng đảm bảo toàn vẹn dữ liệu
(data integrity). Những hàm băm nhƣ vậy đƣợc gọi là hàm băm mật mã.
Các hàm băm nhận một chuỗi bits có chiều dài tùy ý (hữu hạn) làm dữ liệu
đầu vào và tạo ra một chuỗi bits có chiều dài cố định n bit (n > 0 là hằng số), gọi là
mã băm (hash code hay message digest). Ký hiệu D là miền xác định và R là miền
giá trị của hàm băm h(x), ta thƣờng có số lƣợng phần tử của D lớn hơn rất nhiều so với
số lƣợng phần tử của R (|D| > |R|), vì vậy hàm băm h(x) không thể là đơn ánh, nghĩa là
luôn tồn tại một cặp phần tử đầu vào khác nhau nhƣng có cùng giá trị mã băm.
Trong lĩnh vực mã hóa thông tin, mã băm đƣợc xem nhƣ hình ảnh đặc trƣng,
thu gọn của một chuỗi bits có độ dài tùy ý (hữu hạn), và đƣợc dụng để nhận diện
chuỗi bits đó. Kết hợp với chữ ký số, các hàm băm đƣợc dùng cho việc đảm bảo tính
toàn vẹn dữ liệu. Trong sơ đồ truyền tin mã băm của chuỗi bits x đƣợc tính tại
thời điểm xác định T
1
, quá trình truyền chuỗi bits x và mã băm tƣơng ứng đƣợc thực hiện.
Tại thời điểm T
2
sau đó, để kiểm tra chuỗi bits x có bị thay đổi hay không, ngƣời ta chỉ
cần tính mã băm của x tại thời điểm này, sau đó so sánh với mã băm có đƣợc tại
thời điểm T
1
. Nếu hai mã băm này trùng nhau chấp nhận chuổi bits x tại thời điểm T
2
trùng khớp với chuỗi bits x tại thời điểm T
1
, hay nói cách khác chuỗi bits x vẫn chƣa bị thay đổi.
Hàm băm thông điệp
(Hash Function)
Thông điệp
(message)
(âm thanh, hình ảnh,
văn bản…)
Văn bản đại diện
(message digest)
Chiều dài tùy ý
Chiều dài cố định
(n bit, n > 0)
Hình 1.2: Hàm băm mật mã
14
Các hàm băm đƣợc phân thành 2 lớp chính: lớp các hàm băm không có khóa
(unkeyed hash functions) và lớp các hàm băm có khóa (keyed hash functions).
Các hàm băm không khóa chỉ có duy nhất một đầu vào là thông điệp cần tính giá trị
băm. Còn các hàm băm có khóa nhận 2 giá trị đầu vào: thông điệp cần tính giá trị băm
và khóa bí mật để tiến hành công việc. Cách phân lớp này dựa vào thành phần
tham biến đầu vào của các hàm băm. Ngoài ra, trong thực tế còn có nhiều cách phân
loại khác nhau. Tuy nhiên trong phạm vi luận văn chỉ xét loại hàm băm không khóa.
1.2.1 Một số tính chất cơ bản của hàm băm
a. Tính kháng tiền ảnh (preimage resistance): Với mọi đầu ra y cho trƣớc
không thể tính toán để tìm đƣợc bất kì dữ liệu đầu vào x’ nào sao cho giá trị băm h(x’)
của nó bằng giá trị đầu ra y đã cho.
b. Tính kháng tiền ảnh thứ hai (2
nd
preimage resistance): Với mọi dữ liệu đầu
vào x
1
cho trƣớc, không thể tính toán để tìm ra đƣợc bất kỳ một đầu vòa x
2
nào
(x
1
x
2
) mà giá trị băm h(x
2
) của nó bằng với giá trị băm h(x
1
) của x
1
.
c. Tính kháng xung đột (conllision resistance): Không thể tính toán để tìm
đƣợc hai dữ liệu đầu vào x
1
và x
2
phân biệt sao cho chúng có cùng giá trị băm
(tức là h(x
1
) = h(x
2
))
Nhận xét 1: Hàm băm h(x) thỏa mãn tính chất (c) thì cũng thỏa mãn tính chất (b).
Nhận xét 2: Hàm băm h(x) thỏa mãn tính chất (c) nhƣng có thể không
thỏa mãn tính chất (a). Để thấy điều này ta xét ví dụ sau đây. Giả sử g(x) là hàm băm
ánh xạ đầu vào có chiều dài tùy ý và đầu đầu ra có chiều dài n cố định, thỏa mãn tính
chất (c). Xét hàm h(x) đƣợc định nghĩa nhƣ sau:
1 || | |
()
0 || ( ) | |
x x n
hx
g x x n
15
Trong đó || ký hiệu cho phép toán nối các chuỗi bit, |x| ký hiệu độ dài của
chuỗi bit x. Khi đó, ta đƣợc h(x) làm hàm băm có dữ liệu đầu ra dài (n+1) bit. Rõ ràng,
hàm h(x) thỏa mãn tính chất (c) nhƣng không thỏa mãn tính chất (a). Thật vậy, lấy hai
xâu bit x
1
và x
2
phân biệt. Nếu chiều dài của 2 xâu bit này cũng bằng n thì chúng có
cùng giá trị băm khi và chỉ khi chúng trùng nhau. Nếu chỉ có một trong 2 xâu bit có
chiều dài bằng n thì giá trị băm của chúng có thể không trùng nhau (vì có bit đầu vào
khác nhau). Nếu chiều dài của 2 xâu bit này cũng khác n thì nói chung, do tính chất (c)
của hàm g(x), ta luôn có g(x
1
) g(x
2
) và vì vậy h(x
1
) h(x
2
). Rõ ràng hàm h(x) không
thỏa mãn tính chất (a) vì chỉ cần lấy giá trị băm có dạng y=1||x, trong đó x là xâu bit có
chiều dài bằng n, là ta dễ dàng tìm ra “tiền ảnh” của y là x.
1.2.2 Cấu trúc cơ bản của các thuật toán băm mật mã.
Trƣớc tiên, khối dữ liệu đầu vào x có chiều dài hữu hạn tùy ý sẽ đƣợc
phân thành các khối con liên tiếp có chiều dài cố định r, giả sử đƣợc đánh số là:
x
1
, x
2
, …, x
n
. Tuy nhiên, do chiều dài khối dữ liệu ban đầu là tùy ý, vì vậy, ta có thể
phải thêm vào dữ liệu ban đầu một số bit phụ sao cho chiều dài của khối dữ liệu x’
sau khi thêm bit phụ là bội số của r. Ngoài ra, khối bit phụ thêm vào thƣờng chứa một
khối bit xác định chiều dài thực của khối bit dữ liệu khi chƣa thêm các bit phụ. Sau đó,
lần lƣợt “cắt” từng khối con r bit từ khối mở rộng x’. Mỗi khối con x
i
lần lƣợt đƣợc
đi qua hàm nén f của hàm băm h(x). Tại bƣớc thứ i, hàm nén f nhận dữ liệu đâu vào là
x
i
và kết quả trung gian của bƣớc trƣớc đó (bước (i-1)) để tạo đầu ra là kết quả
trung gian bƣớc thứ i, đƣợc ký hiệu là H
i
. Kết quả trung gian tại mỗi bƣớc H
i
là một
chuỗi bit có độ dài cố định bằng n > 0. Nếu giá trị IV là gí trị khởi tạo ban đầu (cho H
0
)
thì quá trình lặp xử lý dãy các khối con x
1
, x
2
, …, x
n
đƣợc mô tả nhƣ sau:
H
0
= IV
H
i
= f(H
i-1
, x
i
), (i=1,…,m)
H(x) = g(H
m
)
16
Trong đó, có thể gọi H
i
(kết quả trung gian sau bước thứ i) là các biến
dây truyền (chaining variable). Hàm g(H
m
) là biến dây truyền cuối cùng để tạo ra
mã băm cần tìm. Trong hầu hết các thuật toán, g(x) thƣờng đƣợc chọn là ánh xạ
đồng nhất, tức là g(H
m
) H
m
. Khâu then chốt trong xây dựng hàm băm thƣờng là thiết kế hàm nén f.
1.3 CHỮ KÝ SỐ.
Trong mật mã học một kỹ thuật cơ bản cho vấn đề xác nhận thực thể đƣợc
sử dụng nhiều nhất đó là chữ ký số. Mục đích của chữ ký số là cung cấp một cách thức
cho phép gắn định danh của một thực thể vào một phần của thông tin. Quá trình ký
thực hiện chuyển đổi văn bản và các thông tin mật cần thiết của thực thể vào một đích
đƣợc gọi là chữ ký. Với đặc tính của loại kỹ thuật này, chúng ta có thể sử dụng nó cho
ứng dụng bảo vệ bản quyền, quyền sở hữu trí tuệ bằng cách gắn thông tin của tác giả
vào tác phẩm số của họ. Vì chỉ có tác giả mới có khóa ký nên những tác phẩm đƣợc
phân phối từ chính tác giả sẽ đƣợc kiểm thử bởi ngƣời dùng đầu cuối bằng khóa
kiểm thử do đó đảm bảo đƣợc tác quyền đối với tác phẩm đƣợc phân phối chính thức.
1.3.1 Khái niệm.
Một sơ đồ chữ ký là một bộ 5 (P, A, K, S, V) trong đó:
+ P: là một tập hữu hạn các thông báo có thể có.
+ A: là một tập hữu hạn các chữ ký có thể có.
+ K: là một tập hữu hạn các khóa, mỗi khóa K K gồm 2 thành phần
K(k’, k”), k’ là khóa bí mật dành cho việc ký, k” là khóa công khai dành cho việc kiểm thử.
Với mỗi K(k’, k”) trong S có một thuật toán ký sig
k’
: P → A và trong V có
thuật toán kiểm thử ver
k”
: P × A → {true, false} thỏa mãn điều kiện sau đây với mọi
thông báo x P và mọi chữ ký y A:
ver
k”
(x, y) = true y = sig
k’
(x)
17
1.3.2 Phân loại chữ ký điện tử.
Chữ ký “điện tử” đƣợc chia làm 2 lớp, lớp chữ ký kèm thông điệp
(message appendix) và lớp chữ ký khôi phục thông điệp
(message recovery).
Chữ ký kèm thông điệp: Đòi hỏi thông điệp ban đầu là đầu vào
của giải thuật kiểm tra. Ví dụ: chữ ký Elgamal.
P
P
h
S
h sig
k’
x x’=h(x) y=sig
k’
(x’)
Hình 1.3: Qua trình ký của chữ ký số kèm thông điệp
P x S
· True
· False
ver
k’’
Hình 1.4: Quá trình kiểm thử của chữ ký kèm thông điệp
Chữ ký khôi phục thông điệp: Thông điệp ban đầu sinh ra từ bản thân chữ ký.
Ví dụ: chữ ký RSA.
18
P
S
sig
k’
x
s=sig
k’
(x)
Hình 1.5: Quá trình ký của chữ ký khôi phục thông điệp
19
1.3.3 Một số sơ đồ chữ ký cụ thể.
1/. Sơ đồ chữ ký RSA.
Thuật toán Sinh khóa cho chữ ký RSA (do người A thực hiện)
1. Sinh hai số nguyên tố lớn p và q có giá trị xấp xỉ nhau
2. Tính n = p.q, và
(n) = (p-1).(q-1)
3. Chọn một số ngẫu nhiên b, 1 < b <
(n), sao cho gcd(b,
(n)) = 1
4. Sử dụng thuật toán Euclide để tính số a, 1 < a <
(n), sao cho a.b ≡ 1 (mod
(n))
5. Khóa kiểm thử là (n, b), Khóa ký là (a)
Thuật toán Ký và Kiểm thử chữ ký RSA
(i). Ký : (do người A thực hiện)
a. Sử dụng khóa ký (a) theo thuật toán trên
b. Chọn một bản mã x, trong khoảng [1, n-1]
c. Tính : y = x
a
mod n
d. Nhận đƣợc chữ ký y
(ii). Kiểm thử : (do người B thực hiện)
a. Lấy khóa kiểm thử (n, b). Khóa này đƣợc công khai.
b. Nếu x y
b
mod n TRUE, ngƣợc lại FALSE
Việc chứng minh hàm ký và kiểm thử của thuật toán ký số RSA đƣợc thực
hiện nhƣ nhứng minh hàm lập mã và giải mã trong sơ đồ mã hóa khóa công khai RSA
bên trên.
20
2/. Sơ đồ chữ ký DSS.
Phƣơng pháp Digital Signature Standard (DSS) là sự cải tiến của
phƣơng pháp ElGamal. Phƣơng pháp này đƣợc công bố trên Federal Register vào ngày
19 tháng 5 năm 1994 và chính thức trở thành phƣơng pháp chuẩn từ ngày 1 tháng 12
năm 1994.
Thuật toán Sinh khóa cho chữ ký DSS (do người A thực hiện)
1. Chọn một số nguyên tố q trong khoảng 2
159
< q < 2
160
2. Chọn một số t (0
t
8), và chọn một số nguyên tố p
(2
511+64t
<p<2
512+64t
) sao cho p chia hết cho (q–1)
3. Chọn 1 phần tử sinh
trong nhóm Cyclic có cấp là q
4. Chọn một số ngẫu nhiên a (1
a
q–1)
5. Tính
=
a
mod p
6. Khóa kiểm thử là (p, q,
,
), Khóa ký là (a)
Thuật toán Ký và Kiểm thử chữ ký DSS
(i). Ký : (do người A thực hiện với văn bản x)
a. Chon ngẫu nhiên một số nguyên k (0 < k < q)
b. Tính r = (
k
mod p) mod q
c. Tính k
-1
mod q
d. Tính s = k
-1
(m + ar) mod q
e. Chữ ký của A trên x là (r, s)
(ii). Kiểm thử : (do người B thực hiện)
a. Lấy khóa kiểm thử (p, q,
,
). Khóa này đƣợc công khai.
b. Kiểm tra 0 < r < q và 0 < s < q, ngƣợc lại FALSE
21
c. Tính w = s
-1
mod q
d. Tính u1 = w.m (mod q) và u2 = r.w (mod q)
e. Tính v = (
u1
u2
mod p) mod q
f. Nếu v = r TRUE, ngƣợc lại FALSE
Chứng minh quá trình kiểm thử :
Nếu (r, s) đúng là chữ ký của A trên văn bản x, ta có :
x –ar + ks (mod q)
Nhân 2 vế với w ta đƣợc :
wx w(–ar + ks) mod q
wx + arw k (mod q)
Mặt khác :
u1 + a.u2 k (mod q)
Nên ta có :
(
u1
u2
mod p) mod q = (
k
mod p) mod q
v = r
22
1.4 THỦY VÂN SỐ.
1.4.1 Khái niệm giấu tin.
Giấu thông tin là kỹ thuật nhúng một mẫu thông tin số vào một đối tƣợng dữ
liệu số khác. Các phƣơng pháp giấu tin đƣợc tiến hành theo nhiều cách khác nhau tùy
vào mục đích và môi trƣờng giấu tin. Mọi phƣơng pháp giấu tin nói chung gồm
2 quá trình:
- Quá trình nhúng thông tin. (Embedding)
- Quá trình phát hiện thông tin nhúng. (Detection)
Embedding
Algorithm
Message
(Watermark)
W
Cover Data I
Key K
Watermarked
Data
Hình 1.6: Quá trình nhúng thủy vân
Một hệ thống thủy vân số bao gồm các thành phần: (i) Mẩu tin đƣợc nhúng
(Message): Thƣờng là một chuỗi bits ngắn đƣợc dùng để nhúng vào dữ liệu.
(ii) Dữ liệu phủ (Cover Data): Là môi trƣờng nhúng dữ liệu nhƣ ảnh, âm thanh,
video (iii) Thuật toán nhúng (Embedding Algorithm): Thuật toán nhúng mẩu tin vào
dữ liệu phủ mà không làm thay đổi giá trị sử dụng của dữ liệu phủ. (iv) Thuật toán
phát hiện thủy vân (Detection Algorithm): Thuật toán phát hiện thủy vân và tách chúng
khỏi dữ liệu phủ. (v) Dữ liệu đã thủy vân (Watermarked Data): Kết quả của quá trình
nhúng thông tin vào dữ liệu.
23
Detection
Algorithm
Key K
Watermarked
Data
Message
(Watermark) W
Hình 1.7: Quá trình phát hiện thủy vân.
1.4.2 Khái niệm Thủy vân số.
Thủy vân (Watermark) số là kỹ thuật giấu một chuỗi bit vào một đối tƣợng
chứa nhằm bảo vệ đối tƣợng chứa đó nhƣ xác nhận bản quyền hay xác nhận sự
xuyên tạc. Thao tác nhúng watermark đó đƣợc gọi là thủy vân số (watermarking số).
Có thể xem Watermarking là thao tác nhúng tin mà trong đó ngƣời dùng đầu cuối
không cần quan tâm tới thông tin đƣợc giấu bên trong đối tƣợng chứa tin.
Các phƣơng pháp thủy vân số cần giải quyết đƣợc vấn đề là không làm
ảnh hƣởng tới môi trƣờng giấu tin, hay nói cách khác ngƣời dùng không thể phân biệt
đƣợc 2 đối tƣợng chƣa giấu và đối tƣợng sau khi giấu. Tuy nhiên watermarking trong
môi trƣờng ảnh thì có một sự khác biệt nhỏ, đó là có thể có dạng thủy vân hữu hình.
Nhƣ việc in logo lên một bức ảnh.
24
1.4.3 Phân loại thủy vân số.
Phân loại theo tính bền vững: Cách phân loại này dựa vào khả năng chống lại
sự tấn công vào đối tƣợng mang tin nhằm phá hủy thông tin đã đƣợc nhúng trong đó.
Theo cách phân loại này thì có thể chia hệ thống Watermarking thành 3 loại.
Watermarking
Robust Watermarking Fragile Watermarking
Semi-fragile
Watermarking
Hình 1.8: Cách phân loại thủy vân theo tính bền vững.
Thủy vân dễ vỡ (Fragile watermarking): nhƣ tên gọi của kỹ thuật này,
thủy vân đƣợc nhúng bên trong đối tƣợng chứa tin rất dễ bị phá hủy, ngay với cả các
tác dộng nhỏ lên đối tƣợng chứa tin. Kỹ thuật này thƣờng đƣợc sử dụng trong các
ứng dụng bảo vệ nội dung – chống xuyên tạc, hay còn đƣợc sử dụng trong việc
phát hiện lỗi trên đƣờng truyền nhằm đánh giá hiệu quả của quá trình truyền.
Thủy vân nửa dễ vỡ (Semi-fragile watermarking): các kỹ thuật thủy vân
“nửa-dễ vỡ” sẽ nhúng các thông tin vào đối tƣợng, thủy vân đƣợc nhúng sẽ bền vững
dƣới các tấn công phù hợp (tấn công được phép), nhƣng sẽ bị phá hủy nến tấn công đó
là loại tấn công không phù hợp (không được phép). Phƣơng pháp loại này rất hữu ích
cho ứng dụng phân phối các bản sao. Ví dụ: việc sao chép tệp tin vẫn đƣợc phép theo
nghĩa vẫn xác định đƣợc bản quyền, hay nguồn gốc của đối tƣợng mang tin.
25
Thủy vân bền vững (Robust watermarking): các kỹ thuật thủy vân bền vững có
khả năng chống lại hầu hết các phƣơng pháp tấn công. Thủy vân đƣợc nhúng với
các kỹ thuật này thƣờng là các thông tin rất quan trọng, thƣờng thì chỉ tác giả mới biết.
Kỹ thuật này thƣờng đƣợc sử dụng để giữ thông tin về quyền sở hữu trí tuệ.
Vì thông tin đƣợc nhúng rất khó bị phá hủy.
Phân loại theo cảm nhận: Theo cách phân loại này hệ thống watermarking
đƣợc chia thành 2 loại dựa trên khả năng “thấy” được hay không “thấy” được
thông tin nhúng trên đối tƣợng mang tin.
Watermarking
Invisible Watermarking Visible Watermarking
Hình 1.9: Phân loại thủy vân theo cảm nhận
Thủy vân ẩn (invisible watermarking): các kỹ thuật thộc nhóm này cho phép
nhúng thông tin vào đối tƣợng mang tin mà ngƣời dùng không có bất cứ một cảm nhận
nào về thông tin đƣợc nhúng. Nghĩa là với các giác quan thông thƣờng con ngƣời khó
có thể phân biện đối tƣợng nào chứa tin và đối tƣợng nào không chƣa tin.
Các kỹ thuật dạng này thƣờng đƣợc sử dụng trong các ứng dụng bảo vệ bản quyền.
Thủy vân hữu hình (visible watermarking): là nhóm kỹ thuật đƣa watermark
vào đối tƣợng mang tin và ngƣời dùng có thể cảm nhận đƣợc thông tin nhúng, nhƣ
nhìn thấy, nghe thấy hay sờ thấy. Ứng dụng phổ biến của các thủy vân dạng này
thƣờng để chống giả mạo.