1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
VŨ THANH MINH
NGHIÊN CỨU TÌM HIỂU VỀ
MẬT MÃ SINH TRẮC KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin
Giáo viên hướng dẫn : TS Hồ Văn Hương
HÀ NỘI - 2010
3
LỜI CÁM ƠN
Em xin chân thành cám ơn toàn thể các thầy cô giáo trong trường Đại học Công
nghệ, Đại học Quốc gia Hà Nội đã hết lòng dạy dỗ, chỉ bảo, tạo điều kiện tốt cho
Hình 1.10:Quá trình băm thông điệp 15
Hình 1.11:Quá trình ký số 15
Hình 1.12:Gửi thông điệp 15
Hình 1.13:Xác minh chữ ký số 16
Hình 1.14:Băm thông điệp 16
Hình 1.15:Xác minh thông điệp 17
Hình 1.16:Băm nhiều thông điệp cho ra cùng một kết quả băm 17
Hình 1.17: Mảng 64 hằng số 32-bit K
i
{256}
22
Hình 1.18 : Các giá trị khởi tạo của giá trị băm 23
Hình 2.1: Một số vân tay tìm được từ thời xưa 26
Hình 2.2: Các loại vân tay 30
Hình 2.3 : Số đếm các đường vân 31
Hình 3.1 : Tổng quan quá trình đăng ký của mã hóa sinh trắc học 44
Hình 3.2 : Giai đoạn xử lý ảnh trong quá trình đăng ký 45
Hình 3.3 : Thuật toán liên kết khóa 46
Hình 3.4 : Tổng quan quá trình xác thực của mã hóa sinh trắc học 48
Hình 3.5 : Giải thuật khôi phục khóa 49
Hình 4.1 : Biểu đồ chức năng chương trình ứng dụng 57
Hình 4.2 : Giai đoạn xử lý ảnh 58
Hình 4.3 : Sinh mảng số ngẫu nhiên 58
Hình 4.4 : Tính hàm lọc lưu trữ H
stored
59
Hình 4.5 : Sinh khóa sinh trắc 59
Hình 4.6 : Quá trình mã hóa dữ liệu 60
Hình 4.7 : Quá trình giải mã dữ liệu 61
Hình 4.8 : Giao diện ứng dụng 62
Chương 1: TỔNG QUAN VỀ MẬT MÃ 8
1.1.Hệ mật mã 8
1.2.Hệ mật mã khóa đối xứng và thuật toán mã hóa AES 8
1.2.1 Hệ mật mã khóa đối xứng 8
1.2.2 Thuật toán mã hóa AES 9
1.3.Hệ mật mã khóa công khai 12
1.4.Chữ ký số 13
1.5.Hàm băm 17
1.5.1.Hàm băm: 17
1.5.2.Hàm băm SHA - 256 19
1.5.2.1 Các tham số, ký hiệu và thuật ngữ 19
1.5.2.2 Phép toán 20
1.5.2.3 Chuyển đổi dữ liệu 20
1.5.2.4 Các thuật toán 21
1.5.2.5 Các hàm chức năng sử dụng trong SHA-256 21
1.5.2.6 Các hằng số sử dụng trong SHA-256 21
1.5.2.7 Quá trình tiền xử lý thông điệp M 22
1.5.2.8 Thuật toán băm SHA-256 23
1.6. Kết luận 25
CHƯƠNG 2. SINH TRẮC HỌC KẾT HỢP VỚI MẬT MÃ 26
2.1.Sinh trắc học: 26
2.2.Các khái niệm sinh trắc học về vân tay 27
2.2.1 Khái niệm vân tay 27
2.2.2 Các loại vân tay 28
2.2.3.Các đặc trưng của vân tay 30
2.2.3.1 Đặc trưng tổng thể 31
2.2.3.1 Đặc trưng cục bộ 32
2.3.Sinh trắc học kết hợp với mật mã: 34
4.3.1 Sinh khóa sinh trắc 57
4.3.2 Mã hóa sử dụng khóa sinh trắc 60
4.4 Giao diện ứng dụng “mật mã sinh trắc” và cách sử dụng 61
4.1 Kết luận 65
KẾT LUẬN…………………………………………………………………. 66
TÀI LIỆU THAM KHẢO ………………………………………………… .67 8
CHƯƠNG 1 . TỔNG QUAN VỀ MẬT MÃ VÀ ỨNG DỤNG
Với sự phát triển nhanh chóng của Internet và việc lưu trữ các dữ liệu nhạy cảm
trên mạng, mật mã đang trở thành một công cụ khá quan trọng của bảo mật máy tính.
Nhiều thuật toán mã hóa đã được sử dụng rất phổ biến trên thế giới để đảm bảo an toàn
cho thông tin. Hai hệ mật phổ biến nhất hiện nay là hệ mật khóa đối xứng và hệ mật khóa
công khai.
1.1 Hệ mật mã
Hệ mật mã được định nghĩa là bộ 5 (P, C, K, E, D), trong đó:
P : tập hữu hạn các bản rõ có thể
C : tập hữu hạn các bản mã
K : tập các khóa
E : tập các hàm lập mã
D : tập các hàm giải mã
Với mỗi k
và người nhận sẽ dùng d
k
để giải mã thông điệp nhận được từ người gửi A. Các hệ mật
mã dịch chuyển, thay thế là hệ mật mã khóa đối xứng, nhưng điển hình cho hệ mật mã
khóa đối xứng là hệ mã hóa chuẩn AES, DES. DES được xây dựng tại Mỹ trong những
năm 70 theo yêu cầu của Văn phòng quốc gia về chuẩn(NBS) và được sự thẩm định của
ủy ban an ninh quốc gia. DES kết hợp cả hai phương pháp thay thế và chuyển dịch. DES
thực hiện mã hóa trên từng khối bản rõ theo từng xâu 64bit với khóa là xâu 56 bit và cho
ra bản mã là xâu 64bits. Hiện nay DES và biến thể của nó 3DES vẫn được sử dụng thành
công trong nhiều ứng dụng.
1.2.2 Thuật toán mã hóa AES
Thuật toán mã hóa AES là thuật toán mã hóa khối đối xứng, xử lý các khối dữ liệu
có độ dài 128 bit, sử dụng khóa mã có độ dài 128 bit, 192 bit hoặc 256 bit tương ứng với
“AES-128”, “AES-192”, “AES-256”. Trong khóa luận này, chúng ta sử dụng thuật toán
AES với độ dài khóa là 256 bit tương ứng với “AES-256”.
Chuẩn mã hóa tiên tiến AES: AES là một thuật toán mã hóa khối được chính phủ
hoa kỳ áp dụng làm chuẩn mã hóa. AES có thể dễ dàng thực hiện với tốc độ cao bằng
phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ. Do AES là một tiêu chuẩn mã
hóa mới, nó đang được tiến hành để sử dụng đại trà.
AES làm việc với từng khối dữ liệu 4x4. Quá trình mã hóa bao gồm 4 bước:
• AddRoundKey: mỗi byte của khối được kết hợp với khóa con. Mỗi khóa con
trong chu trình khóa được tạo ra từ khóa chính với quá trình tạo khóa con Rijdael. Mỗi
khóa có độ dài như các khối. Quá trình được thực hiện bằng phép XOR từng bit của khóa
con vơi khối dữ liệu.
Hình 1.2: AddRoundKey bản rõ và khóa
2
+ x +
2(modulo x
4
+1 ). Vì thế bước này có thể được xem như là phép nhân ma trận trong
trường hữu hạn.
Hình 1.5: Bước MixColumns
Quá trình giải mã thuật toán mã hóa AES bao gồm các bước:
• Bước InvShiftRow : là phép biến đổi ngược của ShiftRow, các byte trong ba từ
cuối của trạng thái được dịch vòng theo số bit khác nhau, trong phép biến đổi
này hàng đầu tiên được giữ nguyên, hàng 2,3,4 được dịch lần lượt 1, 2, 3 bit.
Hình 1.6 : Bước InvShiftRow
• Bước InvSubBytes : là nghịch đảo của phép thay thế theo byte SubBytes trong
đó sử dụng một hộp S-nghịch bằng cách áp dụng phép biến đổi ngược của phép
12
biến đổi affine sau khi thực hiện phép nghịch đảo trên trường GF(2
8
) cho bởi
bảng:
Hình 1.7 Hộp S-nghịch
• Bước InvMix Columns : là phép biến đổi ngược của bước MixColumns.
InvMixColumns thao tác trên từng cột của trạng thái, xem mỗi cột như là một
đa thức bốn hạng tử, được coi như các đa thức trên trường GF(2
hệ mã hóa công khai.
Hệ mật RSA do Rivest, Shamir, và Adlman phát minh ra, được công bố đầu tiên vào
tháng 8 năm 1977 trên tạp chí Scientific American. Tính bảo mật của hệ mật mã RSA
được bảo đảm bằng độ phức tạp của một bài toán số học nổi tiếng là bài toán phân tích 1
số thành tích của các số nguyên tố.
Sơ đồ hệ mật mã RSA:
Hình 1.8 Sơ đồ hệ mật RSA
1.4 Chữ ký số
Mật mã khóa công khai có thể được sử dụng theo nhiều cách khác nhau. Chữ ký số
là một ví dụ minh chứng cho việc đảm bảo xác thực người dùng và toàn vẹn dữ liệu. Nếu
người gửi A mã hóa thông điệp hay tài liệu với khóa cá nhân của mình thì bất kỳ ai cũng
có thể giải mã thông điệp với khóa công khai của A. Do đó, người nhận có thể chắc chắn
rằng thông điệp là do A mã hóa, bởi chỉ có A mới biết được khóa cá nhân của mình. Quá
trình mã hóa thông điệp với khóa cá nhân của người gửi là quá trình “ký số”.
Trong thực tế, quá trình ký số thường khó hơn. Thay bằng việc mã bản thông điệp
gốc với khóa cá nhân của người gửi thì chỉ có bản đại diện thông điệp (bản băm) có độ
dài cố định được mã hóa với khóa cá nhân của người gửi và bản băm được mã hóa này
được gắn vào với thông điệp gốc. Người nhận B sau khi nhận được thông điệp đầu tiên sẽ
giải mã bản băm với khóa công khai của người gửi, sau đó băm thông điệp đi kèm bằng
thuật toán băm tương ứng với thuật toán băm người gửi đã sử dụng, B so sánh 2 giá trị
băm, nếu giống nhau thì chắc chắn rằng thông điệp A gửi cho B còn nguyên vẹn và đồng
thời xác thực được người gửi thông tin là A.
14
Tính toàn vẹn của thông điệp được đảm bảo bởi vì chỉ thay đổi một bit trong thông
điệp gửi đi thì kết quả hai giá trị băm sẽ khác nhau . Tính xác thực của người gửi cũng sẽ
∈
P, y
∈
A:
Ver
k
(x,y) đúng nếu y = Sig
k
(x)
Ver
k
(x,y) sai nếu y
≠
Sig
k
(x)
RSA cũng là thuật toán được dùng nhiều cho mục đích ký số. Sơ đồ chữ ký RSA
được mô tả như sau :
Hình 1.9 Chữ ký số RSA
Quá trình ký và kiểm tra chữ ký được mô tả :
Giả sử A muốn gửi cho B một thông điệp x, A thực hiện các bước:
15
1. A băm thông điệp x bằng thuật toán băm h thu được bản đại diện z = h(x) có
kích thước cố định
Hình 1.14 : Băm thông điệp
3. So sánh hai giá trị băm z hà h(x), nếu giống nhau thì chắc chắn rằng thông điệp
z mà A gửi cho B còn nguyên vẹn bên cạnh đó cũng xác thực được người gửi
thông tin là ai 17
Hình 1.15 : Xác minh thông điệp 1.5 Hàm băm
1.5.1 Hàm băm
Việc sử dụng các hệ mật mã và các sơ đồ ký số thường là mã hóa và ký số trên
từng bit của thông tin. Thời gian để mã hóa và ký sẽ tỷ lệ thuận với dung lượng của thông
tin. Thêm vào đó có thể xảy ra trường hợp : với nhiều bức thông điệp đầu vào khác nhau,
sau khi sử dụng hệ mật mã hoặc ký số thì cho ra kết quả là bản mã hay bản ký số giống
nhau ( ánh xạ nhiều – một): Hình 1.16 Nhiều thông điệp khác nhau cho cùng môt kết quả băm
Điều này sẽ dẫn tới một số rắc rối cho việc xác thực thông tin.
18
a. Với thông điệp đầu vào x thu được bản băm (văn bản đại diện) z = h(x)
là duy nhất.
b. Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa thành thông điệp x’
thì h(x)
≠
h(x’), cho dù sự thay đổi trong x là rất nhỏ( ví dụ trên một bit
nào đó trong x thì giá trị băm cũng thay đổi). Điều này có nghĩa là : hai
thông điệp khác nhau thì cho hai giá trị băm khác nhau
19
c. Nội dung của thông điệp x không thể được suy ra từ giá trị băm h(x).
Nghĩa là với giá trị x ta có thể dễ dàng tính được văn bản đại diện z =
h(x) nhưng lại không thể ( thực chất là vô cùng khó) suy ngược lại x nếu
chỉ biết giá trị băm z = h(x).
Một số hàm băm được sử dụng rộng rãi hiện nay là : MD5, MD4, MD2 và hàm
băm chuẩn SHA-1, SHA – 256… và tiếp theo khóa luận sẽ trình bày về hàm băm SHA-
256. Hàm băm này sẽ đươc sử dụng trong quá trình tạo khóa sinh trắc của hệ thống mã
hóa sinh trắc được xây dựng trong chương 4 của khóa luận.
1.5.2 Hàm băm SHA-256
SHA – Secure Hast Algorithm – hay giải thuật băm an toàn. SHA là một trong
năm giải thuật băm được chấp nhận bởi FIFS – dùng để chuyển một đoạn dữ liệu nhất
định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao.
Thuật toán băm SHA-256 có thể chia làm hai giai đoạn: tiền xử lý và tính toán băm. Giai
đoạn tiền xử lý đưa thông tin cần băm ( M ) về dạng chuẩn, phân tích M thành m-bit
block, và cài đặt giá trị ban đầu cho giai đoạn tính toán băm. Giai đoạn tính toán băm sinh
ra thông điệp liệt kê của M từ thông điệp chuẩn, và sử dụng liệt kê đó cùng với các chức
năng, các hằng số, các phép toán để sinh một dãy các giá trị băm. Giá trị băm cuối cùng
M
(i)
Block thứ i
M
j
(i)
từ thứ j của block thứ i, M
0
(i)
là từ trái nhất của block i
w số bit của một từ
T w-bit tạm thời sử dụng trong tính toán băm
N số block của thông điệp chuẩn
W
t
w-bit thứ t của thông điệp liệt kê
1.5.2.2 Phép toán
^ phép toán end
∨
phép toán or
⊕
phép toán cộng bit XOR
¬
phép phủ định
+ phép cộng theo modulo 2
w
<< phép dịch trái, ở đây x<<n có nghĩa là x được dịch trái n bit
biểu diễn của 2 số nguyên dương X và Y với 0
≤
X < 2
w
và 0
≤
Y<2
w
tính Z = (X + Y)
mod 2
w
, được 0
≤
Z < 2
w
, chuyển số nguyên Z thành chuỗi z được phép cộng theo
modulo 2
w
: z = x + y
- SHR
n
(x) : là phép dịch phải, với x là từ w-bit và n là số nguyên dương với 0
≤
n
< w được định nghĩa :
SHR
n
(x) = x >> n
- ROTR
n
2
(x)
⊕
ROTR
13
(x)
⊕
ROTR
22
(x)
∑
}256{
1
)(x
= ROTR
6
(x)
⊕
ROTR
11
(x)
⊕
ROTR
25
(x)
σ
}256{
0
(x) = ROTR
1
{256}
…, K
63
{256}
. Những
từ 32-bit này được lấy từ 32 bit đầu tiên của phần phân số trong kết quả của phép lấy căn
bậc 3 của 64 số nguyên tố đầu tiên
Ở hệ hex, những hằng số đó là (từ trái qua phải):
22
Hình 1.17 : Mảng 64 hằng số 32-bit K
i
{256}
1.5.2.7 Quá trình tiền xử lý thông điệp M
Thông điệp M sẽ được xử lý vê dạng chuẩn trước khi tính toán băm. Quá trình xử
lý này bao gồm ba phần : chuẩn hóa M, phân tích M thành các block và khởi tạo giá trị
băm
- Chuẩn hóa M: Giả sử M có độ dài L bit. Thêm bit 1 vào sau thông điệp M, sau đó
thêm k bit 0 , ở đây k là số nguyên nhỏ nhất với điều kiện
L + 1 + k = 448 mod 512.
Sau đó thêm 64-bit là biểu diễn nhị phân của L. Ví dụ thông điệp M là “abc” (biểu diễn
dưới dạng 8 bit – ASCII) có độ dài 8x3 = 24 bit. Quá trình xử lý M sẽ thêm bit 1 vào sau
thông điệp, sau đó thêm 448 – (24+1) = 423 bit 0, sau đó thêm 64-bit là biểu diễn nhị
phân của 24. Ta thu được thông điệp đã được xử lý dạng :
Hình 1.18 : Các giá trị khởi tạo của giá trị băm
Những giá trị trên được lấy từ 32 bit đầu tiên trong kết quả của phép lấy căn bậc
hai của 8 số nguyên tố đầu tiên
1.5.2.8 Thuật toán băm SHA-256
SHA-256 có thể được sử dụng để băm các thông điệp M có độ dài L bit, với 0
≤
L
< 2
64
. Thuật toán sử dụng :
1. Thông điệp M đã được xử lý chuẩn hóa
2.
Mảng 64 từ 32-bit W
0
, …, W
63
3. 8 biến tạm có nhãn a, b, c, d, e, f, g, h, mỗi biến là một chuỗi 32-bit
4.
Một giá trị băm ban đầu là 8 chuỗi 32-bit,có nhãn H
0
(0)
,…, H
7
(0)
5. Sử dụng 2 biến tính toán T1, T2 là các chuỗi 32-bit
Quá trình tính toán băm : Với mỗi i từ 1 tới N
Bước 1 : Tính {W
t
≤
t
≤
63
Bước 2 :Gán 8 biến a, b, c, d, e, f, g, h bằng giá trị của giá trị băm thứ (i-1)
a = H
0
(i-1)
24
b = H
1
(i-1)
c = H
2
(i-1)
d = H
3
(i-1)
e = H
4
(i-1)
f = H
)(a + Maj (a, b, c)
h = g
g = f
f = e
e = d + T
1
d = c
c = b
b = a
a = T
1
+ T
2
Bước 4: Tính giá trị băm thứ i hiện thời H
(i)
H
0
(i)
= a + H
0
(i -1)
H
1
(i)
= b + H
1
25
H
6
(i)
= g + H
6
(i -1)
H
7
(i)
= h + H
7
(i -1)
Sau khi vòng lặp chạy N lần, được kết quả băm của M là :
H
0
(N)
|| H
1
(N)
|| H
2
(N)
|| H