Tài liệu Khóa luận Nghiên cứu tìm hiểu về mật mã sinh trắc: 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
HÀ NỘI - 2010
2
ĐẠ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
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
em trong suốt quá trình học tập cũng như trong thời gian thực hiện khoá luận tốt
nghiệp này.
Đặc biệt, em gửi lời cám ơn chân thành và sâu sắc tới TS Hồ Văn Hương –Ban cơ
yếu chính phủ, người đã trực tiếp quan tâm, tận tình hướng dẫn, giúp đỡ và tạo
điều kiện hết sức thuận lợi cho em trong quá trình thực hiện khoá luận.
Cảm ơn các bạn đồng khoá và gia...
67 trang |
Chia sẻ: haohao | Lượt xem: 1296 | Lượt tải: 1
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Nghiên cứu tìm hiểu về mật mã sinh trắc, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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
HÀ NỘI - 2010
2
ĐẠ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
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
em trong suốt quá trình học tập cũng như trong thời gian thực hiện khoá luận tốt
nghiệp này.
Đặc biệt, em gửi lời cám ơn chân thành và sâu sắc tới TS Hồ Văn Hương –Ban cơ
yếu chính phủ, người đã trực tiếp quan tâm, tận tình hướng dẫn, giúp đỡ và tạo
điều kiện hết sức thuận lợi cho em trong quá trình thực hiện khoá luận.
Cảm ơn các bạn đồng khoá và gia đình đã động viên, giúp đỡ tôi rất nhiều trong
quá trình học tập tại Khoa Công nghệ cũng như trong thời gian thực hiện khoá
luận.
Hà nội, ngày 21 tháng 05 năm 2010
VŨ THANH MINH
4
DANH MỤC CÁC HÌNH
Tên hình Trang
Hình 1.1: Quá trình mã hóa và giải mã 8
Hình 1.2: AddRoundKey bản rõ và khóa 9
Hình 1.3: Bước SubBytes 10
Hình 1.4: Bước ShiftRow 10
Hình 1.5: Bước MixColumns 11
Hình 1.6: Bước InvShiftRow 11
Hình 1.7: Hộp S-nghịch 12
Hình 1.8: Sơ đồ hệ mật RSA 13
Hình 1.9: Chữ ký số RSA 14
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 Ki{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ữ Hstored 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
Hình 4.9 : Hộp chọn ảnh sinh trắc 63
Hình 4.10 : Chức năng sinh khóa 63
Hình 4.12 : Ví dụ ứng dụng 64
5
Ký hiệu các cụm từ viết tắt
Viết tắt Tiếng Anh Tiếng Việt
AES Advanced Encryption Standard Chuẩn mã hóa tiên tiến
Bio Biometric Sinh trắc
CA Certificate Authority Chủ quyền chứng nhận
DES Data Encryption Standard Chuẩn mã hóa dữ liệu
DSS Data Security Standard Chuẩn bảo mật dữ liệu
FT Fourier Tranform Biến đổi Fourier rời rạc
MD Message Degist Thuật toán băm
PKI Public Key Infrastructure Hạ tầng khóa công khai
RSA Rivest-Shamir-Adlman Tên các nhà khoa học
SHA Secure Hash Algorithm Thuật toán băm an toàn
6
MỤC LỤC
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
2.4.Kết luận ......................................................................................................36
CHƯƠNG 3:THUẬT TOÁN MÃ HÓA SINH TRẮC ...............................37
3.1 Xử lý ảnh nhận dạng .................................................................................37
3.2. Sự tương quan ...........................................................................................37
3.3. Những yêu cầu của hệ thống.....................................................................38
3.4 Thiết kế hàm lọc........................................................................................38
3.5 Độ an toàn của hàm lọc.............................................................................40
3.6 Bộ lọc tạm thời ..........................................................................................40
3.7 Thiết kế bộ lọc an toàn..............................................................................42
7
3.8 Quá trình đăng ký và xác thực ..................................................................43
3.8.1 Quá trình đăng ký...........................................................................43
3.8.2 Quá trình xác thực..........................................................................47
3.9 Kết luận .....................................................................................................51
Chương 4: XÂY DỰNG ỨNG DỤNG..........................................................52
4.1 Giới thiệu....................................................................................................52
4.2 Các thuật toán được sử dụng......................................................................52
4.2.1 Xử lý ảnh........................................................................................52
4.2.2 Biến đổi Fourier rời rạc..................................................................53
4.2.3 Sinh mảng ngẫu nhiên....................................................................54
4.2.4 Các phép toán.................................................................................55
4.2.4.1 Các phép toán với số phức ............................................55
4.2.4.2 Các phép toán liên quan tới ma trận .............................55
4.3 Xây dựng ứng dụng mật mã sinh trắc ........................................................57
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 Î 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 dk(ek(x)) = x với " x Î P.
Hình 1.1 Quá trình mã hóa và giải mã
1.2 Hệ mật mã khóa đối xứng và thuật toán mã hóa AES
1.2.1 Hệ mật mã khóa đối xứng
Hệ mật mã khóa đối xứng là hệ mật mã sử dụng khóa lập mã và khóa giải mã
giống nhau. Cứ mỗi lần truyền tin bảo mật cả người gửi A và người nhận B sẽ thỏa thuận
với nhau một khóa chung k, sau đó người gửi sẽ dùng ek để lập mã cho thông báo gửi đi
9
và người nhận sẽ dùng dk để 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
10
· Bước SubBytes: các bytes được thay thế thông qua bảng S-box. Đây chính là
quá trình phi tuyến của thuật toán. Hộp S-box này được tạo ra trong từ nghịch đảo trong
trường hữu hạn GF( 28 ) có tính chất phi tuyến. Để chống lại các tấn công trên các đặc
tính đại số, hộp S-box này được tạo nên bằng cách kết hợp nghịch đảo với một phép biến
đổi affine khả nghịch.
Hình 1.3: Bước SubBytes
· Bước ShiftRow: các hàng được dịch vòng một số vị trí nhất định. Đối với AES
hàng đầu được giữ nguyên. Mỗi byte của hàng thứ hai được dịch sang trái một bit.
Tươnng tự mỗi byte của hàng thứ 3 và thứ 4 lần lượt được dịch sang trái 2 hoặc 3 bit.
Hình 1.4: Bước ShiftRow
· Bước MixColumns: bốn byte trong từng cột được kết hợp lại theo một phép
tuyến tính khả nghịch. Mỗi khối 4 bytes đầu vào sẽ cho một khối 4 bytes ở đầu ra với
11
tính chất mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 bytes ở đầu ra. Cùng với bước
ShiftRow, MixColumns đã tạo ra tính chất khuếch tán cho thuật toán. Mỗi cột được xem
như một đa thức trong trường hữu hạn và được nhân với đa thức f(x) = 3x3 + x2 + x +
2(modulo x4 +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(28) 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(28) va được nhân
theo modulo (x4+1) với đa thức nghịch đảo của a(x) tức là a-1(x):
· Bước InvAddRoundKey: là phép biến đổi nghịch đảo của bước AddRoundKey
– là phép biến đổi thuận nghịch vì nó chỉ áp dụng một phép toán XOR nên nó
được thực hiện như bước AddRoundKey trong quá trình giải mã
1.3 Hệ mật mã khóa công khai
Khóa mã hóa còn gọi là khóa công khai dùng để mã hóa dữ liệu. Khóa giải mã còn
gọi là khóa bí mật dùng để giải mã dữ liệu. Trong hệ mật này khóa mã hóa và khóa giải
mã là khác nhau. Về mặt toán học, khi biết khóa công khai ta khó có thể tính được khóa bí
mật. Khóa bí mật (private key) được giữ bí mật trong khi khóa công khai (public key)
được công khai. Người gửi thông điệp A sẽ dùng khóa công khai kB để mã hóa dữ liệu
muốn gửi tới người B và người B sẽ dùng khóa bí mật của mình để giải mã thông điệp
nhận được.
Có nhiều hệ thống mật mã sử dụng khóa công khai được triển khai rộng rãi như hệ
mật RSA, hệ mật Elgamal sử dụng giao thức trao đổi khóa Diffie – Hellman và nổi lên
13
trong những năm gần đây là hệ mật dựa trên đường cong Eliptic. Trong số những hệ mật
mã trên thì hệ mật mã RSA được cộng đồng quốc tế chấp nhận rộng rãi trong việc thực thi
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ẽ
được đảm bảo vì chỉ có người A mới có khóa bí mật để mã hóa bản băm. Chữ ký số cũng
chứng minh được tính chống chối bỏ bản gốc vì chỉ có A mới có khóa cá nhân dùng để ký
số.
Sơ đồ chữ ký được định nghĩa là một bộ năm ( P, A, K, S, V) trong đó:
P là tập hữu hạn các văn bản có thể
A là tập hữu hạn các chữ ký có thể
K là tập hữu hạn các khóa có thể
S là tập các thuật toán ký
V là tập các thuật toán kiểm thử
Với mỗi k Î K, có một thuật toán ký Sigk ÎS, Sigk : P ®A, và một thuật toán
kiểm thử Verk Î V, Verk { P x A} ® {đúng, sai} thỏa mãn điều kiện sau đây với mọi
x Î P, y Î A:
Verk(x,y) đúng nếu y = Sigk(x)
Verk(x,y) sai nếu y ¹ Sigk(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.10 : Quá trình băm thông điệp
2. A ký số trên văn bản đại diện z bằng khóa bí mật của mình
thu được bản ký số
y = sigk(z)
Hình 1.11: Quá trình ký số
3. A gửi (x,y) cho B
Hình 1.12 : Gửi thông điệp
16
Khi B nhận được (x,y) , B thực hiện các bước sau:
1. B kiểm tra chữ ký số để xác minh xem thông điệp mà mình nhận được có phải
được gửi từ A hay không bằng cách giải mã chữ ký số y bằng khóa công khai
của A được z
Hình 1.13 : Xác minh chữ ký số
2. B dùng một thuật toán băm – tương ứng với thuật toán băm mà A dùng để băm
thông điệp x đi kèm, nhận được h(x)
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
Các sơ đồ ký số thường chỉ sử dụng để ký các bức thông điệp có kích thước nhỏ,
và sau khi ký bản ký số có kích thước dài gấp đôi bản thông điệp gốc – ví dụ với sơ đồ ký
số chuẩn DSS ký trên các bức thông điệp có kích thước 160 bits, cho ra bản ký số có kích
thước 320 bits. Trong khi đó trên thực tế, ta cần phải ký các thông điệp có kích thước lớn
hơn nhiều, hơn nữa để đáp ứng nhu cầu xác thực sau khi thông tin tới người nhận, dữ liệu
truyền qua mạng không chỉ là bản thông điệp gốc mà còn bao gồm cả bản ký số( có dung
lượng gấp 2 so với bản thông điệp gốc). Có cách đơn giản để giải quyết vấn đề trên, đó là
chặt thông điệp góc thành nhiều đoạn 160 bit( với sơ đồ ký chuẩn DSS), sau đó ký lên các
đoạn độc lập của thông điệp. Tuy nhiên sử dụng phương pháp trên có các vấn đề sau:
- Thứ nhất : Với một thông điệp có kích thước a, sau khi kí sẽ có kích thước 2a(
trong trường hợp sử dụng DSS), điều này làm tốn thời gian và đường truyền dữ liệu.
- Thứ hai : Với các chữ ký có độ an toàn cao thì có tốc độ mã hóa chậm bởi chúng
dùng nhiều phép toán số học phức tạp ( như số mũ modulo, logarit ), nó làm cho quá trình
mã hóa gặp nhiều khó khăn bởi lượng dữ liêu quá lớn.
- Thứ ba : vấn đề nghiêm trọng hơn là kết quả sau khi ký, nội dung các đoạn của
thông điệp có thể bị xáo trộn với nhau hoặc một số đoạn trong chúng có thể bị mất mát
trong khi người nhận phải xác minh lại thông điệp, do đó ta cần phải bảo đảm tính toàn
vẹn cho thông điệp.
Giải pháp cho các vướng mắc đến chữ ký số là dùng hàm băm để trợ giúp cho việc
ký số. Hàm băm – hiểu theo một nghĩa đơn giản là hàm cho tương ứng một mảng dữ liệu
với một mảng dữ liệu nhỏ hơn – được sử dụng rộng rãi trong nhiều ứng dụng khác nhau
của tin học, không chỉ thuộc phạm vi mật mã.
Hàm băm được đề cập tới trong phạm vi đồ án là hàm băm một chiều. Có tác dụng
trợ giúp cho các sơ đồ ký số nhằm làm giảm dung lượng của các dữ liệu cần thiết để
truyền qua mạng. Hàm băm ở đây được hiểu là không dùng các khóa để mã hóa ( sử dụng
thuật ngữ “ băm ” thay cho “mã hóa”), nó có nhiệm vụ băm thông điệp được đưa vào
theo một thuật toán h một chiều nào đó rồi đưa ra một bản băm là văn bản đại diện cho
thông điệp đầu vào. Văn bản đại diện có kích thước cố định, giá trị của hàm băm là duy
nhất và không thể suy ngược lại được nội dung thông điệp từ giá trị băm này. Hàm băm h
cần có một số đặc tính quan trọng sau :
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
sinh bởi giai đoạn tính toán băm được sử dụng làm giá trị băm của M.
1.5.2.1 Các tham số, ký hiệu và thuật ngữ
M thông điệp được băm
a, b, c, …, h các biến thay đổi có độ dài w-bit sử dụng trong tính toán
giá trị băm
H(i) giá trị băm thứ i, H(0) là giá trị khởi tạo, H(N) là giá trị
băm cuối cùng, sử dụng làm giá trị băm
Hj(i) từ thứ j của giá trị băm thứ i, H0(i) là từ trái nhất của giá
trị băm thứ i
Kt hằng số sử dụng cho vòng lặp thứ t của tính toán băm
k Số số 0 thêm vào thông điệp M trong quá trình tạo thông
điệp chuẩn
l độ dài của thông điệp M tính theo bit
m số bit trong 1 block
20
M(i) Block thứ i
Mj(i) từ thứ j của block thứ i, M0(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
Wt 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 2w
<< phép dịch trái, ở đây x<<n có nghĩa là x được dịch trái n bit
>> phép dịch phải, x>>n có nghĩa là x được dịch phải n bit
1.5.2.3 Chuyển đổi dữ liệu
Một số ở dạng hexa là một mảng của tập {0, 1, 2, … 9, a, b, …, f}. Một số hex là
sự biểu diễn của chuỗi 4 bit. Ví dụ số hex “7” là biểu diễn của 4 bit “0111”, số hex “a” là
biểu diễn của chuỗi 4 bit “1010”.
Một từ là chuỗi w-bit có thể sử dụng ở dạng hex. Để chuyển một từ sang dạng số hex, mỗi
chuỗi 4 bit được tương ứng chuyển sang số hex. Ví dụ với chuối 32 bit :
“1010 0001 0000 0011 1111 1110 0010 0011”
Được chuyển thành “a103fe23” dưới dạng số hex
Một số nguyên có thể được biểu diễn bằng một từ hoặc một số từ. Một số nguyên nằm
giữa 0 và 232 – 1 có thể biểu diễn như là chuỗi 32 bit. Ví dụ số nguyên 291 = 256 + 32 + 2
+ 1 = 28 + 25 + 2 + 1 được biểu diễn dưới dạng 32 bit là :
“0000 0000 0000 0000 0000 0001 0010 0011”
Và được biểu diễn dưới dạng số hex là : “ 00000123”
21
1.5.2.4 Các thuật toán
- Phép cộng modulo 2w: phép cộng modulo x+y được định nghĩa như sau: x,y là
biểu diễn của 2 số nguyên dương X và Y với 0 £ X < 2w và 0 £ Y<2w tính Z = (X + Y)
mod 2w, được 0 £ Z < 2w, chuyển số nguyên Z thành chuỗi z được phép cộng theo
modulo 2w : z = x + y
- SHRn(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 :
SHRn(x) = x >> n
- ROTRn(x) :
ROTRn(x) = (x>>n) v (x<<w-n)
- ROTLn(x) :
ROTLn(x) = (x> w-n)
1.5.2.5 Các hàm chức năng sử dụng trong SHA-256
SHA-256 sử dụng 6 hàm chức năng , mỗi hàm chức năng làm việc trên các từ 32-
bit được ký hiệu là x,y và z. Kết quả trả về của các hàm cũng là chuỗi 32-bit. Các hàm
chức năng trong SHA-256 là :
Ch (x,y,z) = (x ^ y) Å ( Ø x ^ z)
Maj (x,y,z) = (x ^ y) Å (x ^ z) Å (y ^ z)
å }256{0 )(x = ROTR2 (x) Å ROTR13(x) Å ROTR22(x)
å }256{1 )(x = ROTR6(x) Å ROTR11(x) Å ROTR25(x)
s }256{0 (x) = ROTR 7(x) Å ROTR 18(x) Å SHR3(x)
s }256{1 (x) = ROTR17(x) Å ROTR19(x) Å SHR10(x)
1.5.2.6 Các hằng số sử dụng trong SHA-256
SHA-256 sử dụng một mảng 64 hằng số 32-bit, K0{256}, K1{256}…, K63{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 Ki{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 :
Thông điệp M thu được sẽ có độ dài là bội số của 512
- Phân tích thông điệp M : thông điệp M được phân tích thành N khối 512 bit, M(1),
M(2),…,M(N). Mỗi khối 512-bit có thể được biểu diễn như là 16 từ 32-bit. 32 bit đầu tiên
của block thứ i là M0(i), 32 bit tiếp theo là M1(i) và tới M15(i)
23
- Cài đặt giá trị khởi tạo của giá trị băm (H(0)): trước khi tính toán băm bắt đầu giá
trị băm H(0) cần được cài đặt ở dạng hex như sau:
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
< 264. 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 W0 , …, W63
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 H0(0),…, H7(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 {Wt} theo công thức
Wt = Mt(i) với 0 £ t £ 15
Wt = s
}256{
1 (Wt-2) + Wt-7 + s }256{0 (Wt-15) + Wt-16 với 16 £ 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 = H0(i-1)
24
b = H1(i-1)
c = H2(i-1)
d = H3(i-1)
e = H4(i-1)
f = H5(i-1)
g = H6(i-1)
h = H7(i-1)
Bước 3 : Với mỗi giá trị của t từ 0 tới 63 thực hiện các phép tính :
T1 = h + å }256{1 )(e + Ch (e, f, g) + Kt
{256} + Wt
T2 = å }256{0 )(a + Maj (a, b, c)
h = g
g = f
f = e
e = d + T1
d = c
c = b
b = a
a = T1 + T2
Bước 4: Tính giá trị băm thứ i hiện thời H(i)
H0(i) = a + H0(i -1)
H1(i) = b + H1(i -1)
H2(i) = c + H2(i -1)
H3(i) = d + H3(i -1)
H4(i) = e + H4(i -1)
H5(i) = f + H5(i -1)
25
H6(i) = g + H6(i -1)
H7(i) = h + H7(i -1)
Sau khi vòng lặp chạy N lần, được kết quả băm của M là :
H0(N)|| H1(N)|| H2(N)|| H3(N)|| H4(N)|| H5(N)|| H6(N)|| H7(N)
Chuỗi bit này được định nghĩa như là bản băm của dư liệu đầu vào là thông điệp M
1.6 Kết luận
Trong chương “Tổng quan về mật mã” chúng ta đã tìm hiểu về khái niệm mật mã,
các hệ mật mã khóa đối xứng và hệ mật mã khóa công khai, chữ ký số… Chúng ta cũng
đã tìm hiểu về chuẩn mã hóa AES – chuẩn mã hóa tiên tiến đang ngày càng được sử dụng
rộng rãi, thuật toán băm SHA-256 là thuật toán băm phổ biến ngày nay, nó đang được sử
dụng để thay thế thuật toán băm MD5. Các thuật toán mã hóa và thuật toán băm trên
chính là nền tảng cơ bản để xây dựng lên một hệ thống mật mã an toàn.
26
CHƯƠNG 2. SINH TRẮC HỌC KẾT HỢP VỚI MẬT MÃ
2.1 Sinh trắc học
Sinh trắc học được định nghĩa như là các đặc điểm sinh học duy nhất đo được để
nhận dạng tự động hoặc xác thực một người. Việc phân tích thống kê các đặc điểm sinh
học này được gọi theo tên khoa học là sinh trắc học. Ngày nay, công nghệ sinh trắc học
chủ yếu được sử dụng để phân tích đặc điểm con người cho các mục đích an ninh. Có
năm dạng sinh trắc học điển hình nhất cho các mục đích an ninh là vân tay, bàn tay, mống
mắt, khuôn mặt và giọng nói.
Sử dụng các đặc điểm sinh trắc học như là phương tiện xác thực không phải là một
khái niệm mới.
Hình 2.1.Một số vân tay tìm được từ thời xưa
27
Năm 1926, các nhân viên của cơ quan tư pháp ở vài thành phố của Mỹ đã gợi ý
dùng thẻ vân tay cho FBI để tạo ra một kho lưu các mẫu vân tay của tội phạm. Các
chuyên gia trong lĩnh vực chấp pháp sau đó có thể nhận dạng các mẫu vân tay đã được tập
hợp bằng tay ở nơi xảy ra tội ác với các mẫu vân tay đã được lưu trong cơ sở dữ liệu tội
phạm để nhanh chóng tìm ra thủ phạm. Sau nhiều năm nghiên cứu phát triển sơ đồ phân
loại đặc trưng vân tay và độ chính xác đã làm cho việc xử lý nhận dạng trở nên khả thi
bằng cách giảm tối đa thời gian tìm kiếm dữ liệu được yêu cầu. Đầu những năm 1960 FBI
đã đầu tư một thời gian và công sức lớn vào việc phát triển hệ thống xác thực vân tay tự
động. Sự tự động của việc xác thực sinh trắc học cho các mục đích chấp pháp này diễn ra
đồng thời với việc phát triển các hệ thống đã được tự động hóa cho các ứng dụng truy cập
bảo mật cao. Các hệ thống xác thực vân tay đã được triển khai trong các hệ thống quản lý
truy cập từ cuối những năm 1960. Trong suốt những năm 1970, một sản phẩm sinh trắc
học dựa trên kích thước hình học của bàn tay đã được giới thiệu trong một số các ứng
dụng quản lý truy cập. Sự quan tâm nhận dạng sinh trắc học cũng đã chuyển từ các đặc
điểm của bàn tay sang các đặc điểm của mắt. Giữa những năm 1980 hệ thống đầu tiên đã
phân tích các mẫu dạng duy nhất của võng mạc được giới thiệu đồng thời cũng thực hiện
phân tích các mẫu dạng mống mắt.
Những năm 1990, việc nghiên cứu tiếp tục phát triển các hệ thống nhận dạng dựa
trên sự đa dạng phong phú các dạng sinh trắc học như là các dạng sinh trắc học truyền
thống : vân tay, hình ảnh bàn tay, mống mắt và võng mạc, kèm theo là phát triển của các
hệ thống nhận dạng giọng nói, chữ ký, hình ảnh lòng bàn tay và khuôn mặt. Thêm vào đó,
các giải pháp có tính chất đổi mới cũng đang được khảo sát cho việc phân tích sinh trắc
học như tai, DNA và mùi cơ thể.Tuy nhiên trong luận văn này, chúng ta chỉ tìm hiểu về
dấu vân tay .
2.2 Các khái niệm sinh trắc học về vân tay
2.2.1 Khái niệm vân tay
Vân tay là những đường vân và đường rãnh có trên ngón tay người. Nó là một
tham số sinh học bất biến theo tuổi, đặc trưng cho mỗi người, nghĩa là mỗi người chỉ có
một dạng vân tay duy nhất và nó tồn tại , không thay đổi trong suốt cuộc đời cho dù có
phải chịu những tổn thương như đứt tay, bỏng… sau khi phục hồi dấu vân tay sẽ có dạng
cũ, không thay đổi. Sự không thay đổi theo thời gian của vân tay đã được khoa học chứng
minh nhưng sự duy nhất của vân tay đến nay vẫn còn là một bài toán mở, kết luận này
được rút ra bằng kinh nghiệm hơn 100 năm của ngành nghiên cứu vân tay.
Có nhiều hình thức thu thập ảnh vân tay khác nhau, tương ứng với các hình thức
thu thập ảnh vân tay, chúng ta có các loại ảnh vân tay khác nhau về chất lượng ảnh cũng
như sự biến dạng. Sau đây chúng ta sẽ tìm hiểu về những dạng ảnh vân tay tiêu biểu nhất :
28
- Ảnh mực (inked fingerprint) : Ảnh mực là ảnh thu được bằng cách nhúng đầu
ngón tay vào mực rồi lăn lên một vật trung gian, chẳng hạn như một tờ giấy. Ảnh này sau
đó sẽ được số hóa bằng máy quét (Scanner) và lưu vào máy tính. Ảnh vân tay trong
chứng minh thư nhân dân là ảnh mực
- Ảnh lăn tay : Là loại ảnh mực thu được bằng cách lăn đầu ngón tay đã nhúng
mực lên trên giấy, hay một vật gì khác. Với ảnh lăn tay, vùng ảnh sẽ mở rộng ra và các
đường vân cũng giày hơn thực tế. Do đó ảnh lăn tay có nhiều thông tin bị sai lệch
- Ảnh điểm chỉ : Ảnh điểm chỉ là loại ảnh mực thu được bằng cách ấn đầu ngón tay
đã nhúng mực lên trên tờ giấy, hay một vật trung gian khác. Ảnh điểm chỉ có vùng vân
tay nhỏ hơn trên thực tế, nhưng lại có ít thông tin bị sai lệch hơn so với ảnh lăn tay
- Ảnh thu trực tiếp trên scanner : Ảnh thu trực tiếp trên máy quét là ảnh thu được
bằng cách ấn đầu ngón tay trực tiếp lên trên máy quét. Chất lượng của ảnh loại này cũng
phụ thuộc vào điều kiện thu nhận, ví dụ như chất lượng của máy quét, tay sạch hay bẩn,
tay ướt…
Tuy nhiên do thu nhận trực tiếp nên ta có thể quan sát vân tay được thu nhận, và do đó có
thể điều chỉnh được chất lượng của ảnh vân tay. Nói chung, ảnh vân tay loại này có chất
lượng tốt hơn anh mực và ảnh lấy ở hiện trường rất nhiều
- Ảnh lấy tại hiện trường (Ảnh Latent) : Trong lĩnh vực hình sự, một loại ảnh vân
tay được đặc biệt là ảnh vân tay thu nhận tại hiện trường, chẳng hạn dấu vân tay còn in
trên mặt bàn, vỏ chai,… ảnh vân tay này do các đối tượng có liên quan để lại tại hiện
trường. Ảnh vân tay loại này nói chung là không tốt, và thường là không đầy đủ toàn bộ
vân tay mà chỉ có một phần vân tay.
2.2.2 Các loại vân tay
Có nhiều cách định nghĩa các lớp vân tay. Ở mục này, luận văn sẽ trình bày các lớp
vân tay được FBI sử dụng khi phân loại vân tay bằng phương pháp thủ công do các
chuyên gia vân tay thực hiện. Theo cách phân loại này, có tất cả 8 lớp vân tay chia làm 3
nhóm chính như sau :
Nhóm các lớp hình cung :
- Lớp hình cung (Arch) : Loại vân tay này có các đường vân xuất phát từ một cạnh
của vân tay, chạy dọc sang tận cạnh bên kia. Ở phần giữa có thể xuất hiện các vân có
dạng gò thấp hoặc dạng sóng
- Lớp hình mái vòm ( Tented Arch) : Vân tay loại này có các đường vân phía ngoài
chạy dài từ cạnh này sang cạnh kia nhưng các đường vân ở giữa lại không xuất phát từ
29
cạnh. Các đường vân ở giữa này hợp với nhau các góc nhỏ hơn 900 và có ít nhất một
đường vân tạo ra điểm nhấn ở giữa
· Nhóm các lớp hình quai gồm các vân có đường vân đủ cong, đồng thời các
đường vân cong này cắt đường nối giữa điểm tâm và điểm tam giác. Nhóm
gồm 2 lớp :
- Lớp hình quai trái ( Left Loop ) : hướng quai của đường vân nghiêng về bên
trái.
- Lớp hình quai phải ( Right Loop) : hướng quai của đường vân nghiêng về bên
phải.
· Nhóm các lớp hình xoáy bao gồm :
- Lớp hình xoáy trơn (Whorl): gồm các vân tay có 2 điểm tam giác và có ít nhất
một đường vân khép kín
- Lớp hình quai bao giữa (Central Pocket Loop) : gồm các vân tay có 2 điểm tam
giác và một đường cong không cắt qua đường thẳng nối 2 điểm tam giác đó
(tức là một đường cong tạo thành một đảo cô lập)
- Lớp hình quai đôi ( Double Loop) : Gồm các vân tay có 2 điểm tam giác và 2
đoạn vân uốn ngược lại tương ứng
- Lớp hình xoáy phụ ( Accidental Whorl) : Gồm các vân tay có đặc trưng của 2
lớp trở lên hoặc không có đặc trưng của bất kỳ lớp nà0.
30
Hình 2.2 Các loại vân tay
2.2.3 Các đặc trưng của vân tay
Để xử lý và phân tích hình ảnh vân tay, người ta sử dụng các đặc trưng nổi bật
trong ảnh. Có 2 loại đặc trưng được định nghĩa trong vân tay đó là :
Các đặc trưng tổng thể là các loại đặc trưng biểu diễn cấu trúc chung của toàn bộ vân tay
Các đặc trưng cục bộ : là các điểm đặc biệt trong các đường vân của tay. Nó chỉ đại diện
cho cấu trúc đường vân trong lân cận cục bộ với nó mà thôi. Chính vì vậy tập hợp các
điểm đặc trưng cục bộ có tính cá nhân tức là mỗi tập các đặc trưng cục bộ chỉ xuất hiện
trong một vân tay duy nhất.
Nếu như đặc trưng cục bộ có tính cá nhân, thì các đặc trưng tổng thể đáng chú ý ở tính
duy nhất và tổng quát của chúng. Mỗi vân tay chỉ có một số ít các đặc trưng tổng thể, do
đó việc quản lý các đặc trưng này khá dễ dàng . Mặt khác do các đặc trưng tổng thể đại
31
diện cho một lớp các vân tay nên chúng có thể được sử dụng để phân cụm, phân lớp cũng
như để tiến hành loại sơ bộ trong quá trình tìm kiếm vân tay
2.2.3.1 Đặc trưng tổng thể
Đặc trưng tổ ng thể là các đại lượng trích chọn từ ảnh vân tay, có tính chất đại
diện cho cấu trúc tổng thể của đường vân trong vân tay. Có nhiều loại đặc trưng tổng thể
khác nhau, trong đó có thể kể tới đặc trưng hướng ( orientation field), các điểm đơn (
singular point), các đường chuẩn ( type line) hoặc số các đường vân ( ridge count),
khoảng cách trung bình giữa các đường vân ( ridge space) …
Các loại đặc trưng đó khác nhau về hình thức, có loại đặc trưng chỉ là một điểm, có
loại là đường thẳng… khác nhau về cách trích chọn : có loại được trích chọn bằng kỹ
thuật tìm kiếm, có loại xác định qua các bộ lọc… ; khác nhau về bản chất : có loại là đặc
trưng hướng cấu trúc, có loại là đặc trưng hướng thống kê… tuy vậy, chúng có đặc điểm
chung là :
- Biểu diễn tính chất chung của ảnh vân tay
- Chúng có tính tổng quát. Điều đó có nghĩa là, các đặc trưng tổng thể giống nhau
không đại diện cho một vân tay duy nhất mà đại diện cho một lớp vân tay. Do đó, các đặc
trưng này là đầu vào lý tưởng để tiến hành phân lớp ảnh vân tay
Hình 2.3 : Số đếm các đường vân
- Đặc trưng hướng
Ảnh vân tay là một loại ảnh đặc biệt, chúng là các ảnh đường nét và có cấu trúc
hướng. Do đó, đặc trưng hướng là một loại đặc trưng tiêu biểu của ảnh vân tay. Thông
thường, với một ảnh vân tay có kích thước M x N, đặc trưng hướng được định nghĩa là
32
ma trận kích thước M x N /w2, trong đó w là kích thước của khối sử dụng để ước lượng
hướng. Có thể nói ma trận hướng là hình ảnh biểu diễn mức thô của cấu trúc các đường
vân. Khi hướng được trích chọn tốt, ta có thể nhận ra khá rõ nét hình dáng của các đường
vân chứa trong ảnh vân tay. Từ đặc trưng này ta có thể phát hiện ra cấu trúc tổng thể của
đường vân và nhiều đặc trưng khác. Đối với hệ thống nhận dạng vân tay sử dụng các ký
thuật học máy, đặc trưng hướng có thể được sử dụng trực tiếp làm đặc trưng nhận dạng.
- Các điểm đơn
Các điểm đơn là các đặc trưng toàn thể dạng điểm trong ảnh vân tay. Mỗi vân tay
có từ 1 tới 4 điểm đơn gồm 2 loại khác nhau : các điểm tâm (core) và các điểm tam giác
(delta). Số lượng và vị trí tương quan của các điểm đơn so với nhau thay đổi theo lớp của
vân tay. Do vậy các điểm đơn có khả năng đại diện cho cấu hình tổng thể các đường vân.
Các điểm đơn được sử dụng nhiều trong các thuật toán trích chọn các đặc trưng
thống kê đối với hệ nhận dạng vân tay phi cấu trúc. Mặt khác, nó là một trong những yếu
tố chính để phân loại vân tay. Do vậy, việc trích chọn đúng và đủ các điểm đơn là một
yêu cầu quan trọng.
2.2.3.2 Đặc trưng cục bộ
Các đặc trưng cục bộ còn được gọi là các điểm minutia. Các điểm minutia là các
điểm bất thường trong cấu trúc đường vân, ví dụ như : điểm kết thúc, điểm rẽ nhánh của
đường vân, điểm gặp nhau của hai đường vân…
Sau đây là một số loại điểm đặc trưng :
- Điểm kết thúc đường vân : Xuất hiện khi đường vân kết thúc một cách đột ngột
- Điểm rẽ nhánh của các đường vân: Là điểm mà tại đó đường vân rẽ ra làm 2 nhánh
- Những chấm nhỏ : Là những điểm đen gộp lại thành một dấu chấm ( chẳng hạn do mực
rơi khi lăn tay)
33
- Đoạn đường vân ngắn : Một đoạn đường vân ngắn nhưng không phải là quá ngắn để có
thể coi là một điểm
- Đường lòng hồ : Một đường vân rẽ ra làm hai nhánh sau đó khép lại tạo thành một
vòng kín
- Nhánh nhỏ : Đường vân chẽ ra một mẩu ngắn
- Đoạn cắt ngang : Do một vết nối 2 đường vân lân cận nhau
Các loại điểm đặc trưng như đã nói ở trên đều có thể quy về hai loại là điểm kết
thúc đường vân và điểm rẽ nhánh. Ví dụ, một đoạn đường vân ngắn thì có thể coi là gồm
2 điểm kết thúc đường vân, một đường lòng hồ có thể coi là 2 điểm rẽ nhánh. Và trong
thực tế, các hệ thống nhận dạng vân tay hầu như cũng chỉ quan tâm đến hai loại điểm đặc
trưng là điểm kết thúc và điểm rẽ nhánh của đường vân.
34
2.3 Kết hợp sinh trắc học với mật mã
Thông thường trong thực tế, hệ mật mã khóa đối xứng được sử dụng để bảo mật dữ
liệu, còn hệ mật mã khóa công khai được sử dụng cho chữ ký số và thay đổi khóa bí mật
giữa những người sử dụng. Tuy nhiên, bất kể hệ mật nào thì mức bảo mật cũng phụ thuộc
vào các khóa mã tương ứng. Do độ dài khóa lớn nên người dùng rất khó nhớ và nhập lại
mỗi khi được yêu cầu. Thay vào đó người ta sử dụng một mã dễ nhớ để mã hóa khóa mã,
khóa này sau đó có thể được lưu trữ trên ổ cứng máy tính, khi cần sử dụng khóa người sử
dụng chỉ cần nhập vào mã dễ nhớ để giải khóa mã.
Tuy nhiên, trong thực tế nhiều người có xu hướng sử dụng các từ đơn giản, dễ nhớ
hoặc các dữ liệu cá nhân hoặc ghi lại mật mã ra giấy để tránh quên mật mã. Điều này làm
tăng nguy cơ rủi ro về bảo mật. Ngoài ra, vì không có sự liên kết trực tiếp giữa mật mã và
người dùng nên hệ thống không thể phân biệt người dùng hợp lệ với kẻ tấn công đoạt
được mật mã.
Do vậy, sinh trắc học được xem như là một sự lựa chọn để bảo mật khóa mã. Xác
thực sinh trắc học đưa ra một cơ chế mới bằng cách sử dụng một đặc trưng sinh trắc học
để bảo mật khóa mã. Việc nhập mật mã để truy nhập khóa mã được thay bằng quá trình
xác thực sinh trắc. Khi người dùng muốn truy nhập khóa mã thì họ sẽ được yêu cầu một
mẫu sinh trắc( trong khóa luận này chúng ta sử dụng dấu vân tay là đặc trưng sinh trắc
học), mẫu sinh trắc này cùng với các thông tin định danh người dùng sẽ được gửi đến nơi
có lưu trữ mẫu sinh trắc. Nếu mẫu xác thực này tương đương với mẫu có trong cơ sở dữ
liệu lưu trữ thì hệ thống sẽ cho phép truy nhập khóa mã từ nơi lưu trữ an toàn và có thể
dùng để mã hóa hoặc giải mã dữ liệu yêu cầu. Do đó xác thực sinh trắc học có thể thay
thế cho việc sử dụng mật mã để bảo vệ mật khóa. Việc làm này có hai ưu điểm: thứ nhất
là người dùng không phải nhớ mật mã và xác nhận bảo mật; thứ hai là chỉ có người sử
dụng hợp lệ mới có thể dùng được khóa.
Hệ thống mật mã sinh trắc gồm hai quá trình : mã hóa và giải mã. Quá trình mã
hóa bắt đầu bằng việc nhập bản rõ và sử dụng đặc trưng sinh trắc làm khóa mã. Quá trình
này kết thúc khi cho ra văn bản đã được mã hóa. Quá trình giải mã được thực hiện ngược
lại, đầu vào là đặc trưng sinh trắc và đầu ra là bản rõ. Tuy nhiên, quá trình này phải chịu
trách nhiệm tính toán một lượng hữu hạn các hoán vị của khóa mẫu với hi vọng là một
trong những hoán vị đó có thể phù hợp với khóa gốc.
Có nhiều phương pháp có thể triển khai để bảo mật khóa với mẫu sinh trắc:
- Phương pháp thứ nhất : ảnh sinh trắc được lấy và mẫu tương ứng được gửi tới
một cơ sở bảo mật cho việc so sánh mấu. Khóa mã được lưu trữ ở nơi an toàn,
khi cần truy xuất khóa người dùng sẽ được yêu cầu cung cấp mẫu sinh trắc của
mình để so sánh với mẫu đã đăng ký trước đó. Nếu quá trình đối sánh thành
công thì khóa sẽ được truy xuất từ kho an toàn. Điều này cung cấp một cơ chế
thuận tiện cho người dùng khi họ không nhớ mật mã. Đối với phương pháp
35
này, đường truyền dữ liệu cũng phải được bảo mật để tránh tấn công lấy cắp dữ
liệu. Tuy nhiên, đối với việc sử dụng máy tính cá nhân, các khóa thường được
lưu trong ổ cứng hoặc các thiết bị lưu trữ và như vậy là không bảo mật.
- Phương pháp thứ hai: ẩn khóa mã vào trong chính các mẫu được lấy thông qua
giải thuật thay thế tin cậy. Khi sử dụng khóa người dùng cung cấp mẫu sinh
trắc của mình. Hệ thống sẽ thực hiện đối sánh mẫu để xác thực người dùng.
Nếu quá trình đối sánh thành công, giải thuật thay thế tin cậy sẽ lấy ra các bit
khóa từ các vị trí thích hợp và đưa khóa vào trong hệ thống. Tuy nhiên, như vậy
cũng có nghĩa là khóa mã sẽ được khôi phục từ cùng một vị trí trong một mẫu
mỗi lần người dùng khác nhau được xác thực bởi hệ thống. Do đó, nếu một
người tấn công tìm được vị trí bit và xác định được khóa thì cũng có thể khôi
phục lại khóa nhúng từ bất kỳ mẫu của người dùng.
- Phương pháp thứ ba : sử dụng trực tiếp dữ liệu gốc từ một ảnh sinh trắc học.
Các mẫu sinh trắc được sử dụng trực tiếp như khóa mã, nghĩa là mẫu sinh trắc
của người dùng chính là khóa mã. Tuy nhiên có hai vấn đề lớn trong phương
pháp này. Thứ nhất, kết quả của sự thay đổi trong hình ảnh sinh trắc do các yếu
tố môi trường và sinh lý, các mẫu sinh trắc không đủ chắc chắn để sử dụng như
một khóa mã. Thứ hai, khi khóa mã bị phá, sau khi sử dụng sinh trắc sẽ mất
tính cố định. Trong nhiều hệ thống, việc cập nhật khóa mã theo chu kỳ thường
được yêu cầu, tuy nhiên việc làm này thực sự khó khăn
Cả ba phương pháp trên đều có những nhược điểm lớn, để khắc phục nhược điểm
của các phương pháp này Mytect Technology Inc ở Toronto Canada đã phát triển một kỹ
thuật mới cho việc bảo mật khóa bằng cách sử dụng sinh trắc học. Giải pháp này không
thực hiện độc lập hai giai đoạn xác thực người dùng và truy xuất khóa. Thay vào đó, khóa
được liên kết với sinh trắc tại mức cơ bản trong khi lấy mẫu và sau đó được khôi phục
bằng cách sử dụng sinh trắc trong thời gian xác thực. Hơn nữa, khóa hoàn toàn phụ thuộc
vào dữ liệu sinh trắc, điều này có nghĩa là việc sử dụng sinh trắc không mất tính cố định
khi khóa đã từng bị phá và khóa có thể dễ dàng sửa đổi và cập nhật. Trong suốt thời gian
lấy mẫu, quá trình mã hóa sinh trắc kết hợp hình ảnh sinh trắc với một khóa số để tạo ra
một khóa bảo mật cho dữ liệu được gọi là BioScrypt. Khóa số có thể được sử dụng như
một khóa giải mã. Trong thời gian xác thực, thuật toán mã hóa sinh trắc lấy khóa mã bằng
cách kết hợp hình ảnh sinh trắc với Bioscrypt. Do đó, mã hóa sinh trắc không đơn giản là
cung cấp câu trả lời có/không trong quá trình xác thực người dùng để thuận tiện cho việc
truy xuất khóa, mà thay vào đó khóa chỉ được lấy ra bằng cách kết hợp hình ảnh sinh trắc
với Bioscrypt.
Trong khóa luận này, chúng ta sẽ sử dụng phương pháp của Mytect Technology Inc
để bảo mật khóa và sử dụng khóa để mã hóa dữ liệu.
36
2.4 Kết luận
Trong chương này, chúng ta đã tìm hiểu về đặc trưng của vân tay. Dấu vân tay có
rất nhiều đặc trưng khác nhau, và hai dấu vân tay chỉ có thể trùng lặp được ở một số đặc
trưng. Do đó, sự trùng lặp dấu vân tay gần như là không xảy ra. Thêm vào đó là dấu vân
tay không thay đổi trong suốt cuộc đời của con người. Dựa vào hai đặc điểm này của dấu
vân tay ta có thể sử dụng dấu vân tay vào mục đích bảo mật. Nội dung của chương cũng
đã đề cập tới các phương pháp có thể triển khai để bảo mật khóa với mẫu sinh trắc, đồng
thời đã đề xuất sử dụng phương pháp của Mytect Technology Inc để xây dựng ứng dụng.
37
CHƯƠNG 3. THUẬT TOÁN MÃ HÓA SINH TRẮC
3.1 Xử lý ảnh nhận dạng
Giải thuật mã hóa sinh trắc học xử lý toàn bộ hình ảnh của vân tay. Cơ chế của sự
tương quan được sử dụng làm nền tảng của giải thuật. Các phần tiếp theo sẽ đưa ra cách
nhìn tổng quan về sự tương quan này khi nó liên quan tới mã hóa sinh trắc học.
3.2 Sự tương quan
Một ma trận ảnh hai chiều đầu vào được ký hiệu bởi đa thức f(x) và phép biến đổi
Fourier tương ứng của nó ký hiệu là F(u). Ở đây x biểu hiện miền không gian và u biểu
hiện cho miền tần suất không gian. Các giá trị của F như một mảng trong miền biến đổi
Fourier. Chú ý : mặc dù những mảng xác định ở đây là mảng hai chiều nhưng lại chỉ có
một tham số
f0(x) biểu thị một ảnh vân tay đầu vào trong quá trình đăng ký,
f1(x) biểu thị ảnh vân tay thu được của quá trình xác thực.
Một hàm lọc H(u) bắt nguồn từ một ảnh f0(x)
c(x) là tương quan giữa các đầu vào f0(x) trong quá trình đăng ký và f1(x) trong quá
trình xác thực, được xác định bởi công thức:
c(x) = ò
¥
¥-
+ dvvxfvf )()( *01
ở đây * biểu diễn cho giá trị phức liên hợp.
Trong hệ thống tương quan, thông tin đầu ra của hệ thống được tính bằng cách
biến đổi Fourier ngược (FT-1) của tích của F1(u) và F0*(u). Khi đó,
c(x) = FT-1 {F1(u) F0*(u)} (3.1)
ở đây F0*(u) là biểu diễn đại diện của hàm lọc H(u) bắt nguồn từ f0(x)
Đối với các hệ thống sinh trắc học dựa vào sự tương quan, mẫu sinh trắc dùng cho việc
nhận dạng hay xác thực là hàm lọc H(u).
Trong quá trình tương quan thì hàm lọc H(u) được thiết kế để tạo ra một tương
quan đỉnh đặc biệt tại hệ thống thông tin đầu ra. Một đỉnh tương quan như vậy dễ dàng có
thể xác định trong một hệ thống tương quan và vị trí của nó có thể được dùng để nhận biết
một đối tượng nào đó. Trong phần tiếp theo chúng ta sẽ thấy được sự tương quan được sử
dụng làm cơ sở cho thuật toán mã hóa sinh trắc học.
38
3.3 Những yêu cầu của hệ thống
Mục tiêu của giải thuật mã hóa sinh trắc là cung cấp một cơ chế cho sự liên kết và
sự phục hồi chìa khóa số sử dụng sinh trắc ( trong khóa luận này chúng ta sẽ sử dụng dấu
vân tay). Khóa số này còn có thể được sử dụng như là khóa giải – mã hóa. Hệ thống các
yêu cầu quan trọng được ứng dụng và hệ thống phục hồi khóa sử dụng dấu vân tay bị biến
dạng, sai lệch mà hệ thống vẫn phân biệt và bảo mật được.
- Hệ thống có điều tiết phù hợp với những sự biến dạng hàng ngày của hình ảnh dấu vân
tay. Những biến dạng này là do những thay đổi của vị trí, góc quay cũng như do các tác
động của môi trường như nhiệt độ, độ ẩm của môi trường và cũng có thể là do các tác
động khác. Một hệ thống khôi phục khóa phải có khả năng lấy được đúng khóa như trước
do dấu vân tay bị biến dạng của người sử dụng hợp lệ.
- Hệ thống có khả năng phân biệt nhận dạng giữa người dùng hợp lệ và không hợp lệ.
- Hệ thống phải đảm bảo rằng ngay cả chìa khóa số cũng như dấu vân tay của người sử
dụng hợp lệ cũng không thể được trích rút một các tự động từ bất kỳ thông tin đã được
lưu trữ nào.
Để thỏa mãn ba yêu cầu này đồng thời, sự tương quan được sử dụng như là một cơ
chế liên kết và phục hồi khóa. Như đã trình bày ở trên, sự tương quan thường được sử
dụng để cung cấp một giá trị vô hướng cho biết mức độ giống nhau giữa một tấm ảnh
f1(x) và một ảnh f0(x) – được đại diện bằng bộ lọc H(u). Trên thực tế, sự mã hóa sinh trắc
thường được mã hóa với chuỗi bít đầu ra là 256 bít để sử dụng như là mật mã cổ điển.
Tuy nhiên nó không phải ngay lập tức được áp dụng được trong quá trình tương quan.
3.4 Thiết kế hàm lọc
Hàm lọc sẽ được tối ưu hóa cho hai yêu cầu :
- Đưa ra kết quả chính xác cho người sử dụng hợp pháp
- Có khả năng phân biệt và khắc phục được độ sai lệch trong ngưỡng cho phép của các
mẫu nhận dạng mà người dùng đưa vào.
Để cung cấp cho hệ thống có khả năng đáp ứng được những biến dạng của dấu vân
tay, hàm lọc tính toán sẽ dựa trên một tập T ảnh huấn luyện với T>=1 trong quá trình
đăng ký. Ký hiệu tập ảnh T của dấu vân tay là {f01(x), f02(x), … , f0T(x)} với chỉ số 0 biểu
thị anh huấn luyện. Hàm lọc sẽ được xây dựng từ những ảnh đó được ký hiệu là H(u)
Áp dụng c0T(x) với đầu vào f0T(x) ta có được mẫu đầu ra như sau:
Biến đổi Fourier của ảnh huấn luyện : C0T(x) ≡ c0T(x) . H(u)
Với F0T(x) là biến đổi Fourier của ảnh huấn luyện f0T(x)
39
Kí hiệu r(x) là mẫu đầu ra mong muốn của hệ thống, hàm lọc sẽ được xác định như
là một hàm ngẫu nhiên của r(x). Mẫu đầu ra c(x) sẽ được sử dụng vừa để liên kết với chìa
khóa số trong quá trình lấy mẫu, vừa để tìm ra khóa số trong quá trình xác thực
Chọn 1≤ t ≤ T sao cho c0t(x) ≈ r(x) tức là các mẫu đầu ra của hệ thống gần với hình
ảnh mẫu.
Ta định nghĩa một lỗi Esimilarity như sau:
Esimilarity = T
1
t =
T
1 | c0t(x) - r(x)|2 dx (3.2)
Esimilarity định nghĩa như là đánh giá sự giống nhau của những mẫu tương quan đầu
ra, nếu Esimilarity = 0 có nghĩa là những mấu tương quan đầu ra đều đồng nhất cho tất cả
những ảnh huấn luyện. Như vậy chúng ta phải tìm cách tối giản Esimilarity. Ngoài ra chúng
ta cũng phải giảm sự biến dạng cảu những ảnh đầu vào.
Nếu f0t (x) = f0s(x) + e
st
input
, (x)
Thì c0t(x) = c0s(x) + e
st
input
, (x)
Với s,t Î {1,2,…,T}, t ¹ s và e stinput, (x) là sai lệch biến dạng của hình ảnh.
Khi đó các lỗi do cộng thêm sự biến dạng hoặc những thay đổi trong f0t(x) được
xác định là :
Enoise = |H(u)|2 P(u) du
Với
P(u) = )1(
2
-TT
TT
tsT
,1
1,1
-
+== |FT{e stinput, (x)}|2 (3.3)
Ở đây P(u) là sự thay đổi giữa các hình ảnh nhận dạng.
Chúng ta muốn có hàm lọc Etotal ít lỗi nhất như sau:
Etotal = a Enoise + 2 1 a- Esimilarity với 0£ a £ 1
Khi cho a biến thiên từ 0 tới 1, ta có thể tối ưu hiệu suất của hàm lọc giữa sự
chính xác và khả năng chịu đựng sự biến dạng. Với biểu thức sau của H(u) :
H(u) = 2 1 a-
}|)(|11)({
)()(1
2
01
2
*
0
1
uFt
T
uP
uRuFt
T
tT
t
T
=-+
úû
ù
êë
é =
aa
(3.4)
40
Đặt A0(u) =
Tt
T 1
1
= F to (u) (3.5)
D0(u) =
2
01 |)(|
1 uFt
T
tT= (3.6)
Từ đó ra có
H(u) = )(1)(
)()(
0
2
*
0
uDuP
uRuA
aa -+
(3.7)
ở đây R(u) là biến đổi fourier của r(x).
- Nếu a = 0, hàm lọc sẽ có đầu ra c t0 (x) tiệm cận với R(x), hàm lọc sẽ có khả năng
phân biệt rất tốt nhưng không phù hợp với sự biến dạng của ảnh đầu vào
- Nếu a = 1, hàm lọc sẽ thích nghi đối với những sự biến dạng đầu vào nhưng khó
có thể phân biệt giữa những người sử dụng khác nhau của hệ thống.
Tùy thuộc vào yêu cầu và mức độ bảo mật của hệ thống mà ta chọn các giá trị a
khác nhau. Tuy nhiên, đối với một hệ thống thông thường giá trị a tối ưu cho dấu vân tay
xấp xỉ 0.3
3.5 Độ an toàn của hàm lọc
Phương trình (3.7) định nghĩa một hàm lọc mà cung cấp một sự cân bằng giữa khả
năng phân biệt và sự biến dạng của vân tay. Tuy nhiên, theo yêu cầu thứ 3 của hệ thống
thì hàm lọc phải được cất giữ như là một thành phần cua Bioscrypt và chống lại được sự
tấn công. Ví dụ, ảnh sinh trắc f(x) hay hàm đầu ra R(x) đều không thể độc lập khôi phục
từ bioscrypt. Bình thường, trong một hệ thống tương quan, hàm lọc H(u) đã được định
nghĩa ở trên sẽ được lưu trữ trong bioscrypt.
Tuy nhiên để đảm bảo sự an toàn tối đa, một phiên bản sửa đổi của H(u) sẽ được
lưu trữ. Phiên bản sửa đổi H(u) ký hiệu là Hstored(u). Đặc biệt, độ an toàn của Hstored(u) sẽ
đạt tối đa nếu chỉ có thành phần eiq H (u) của H(u) được lưu trữ là R(u) là ngẫu nhiên.
3.6 Bộ lọc tạm thời
Phần này sẽ mô tả cơ chế để tính toán tối ưu cho H(u) với sự đồng bộ và lưu trữ
phiên bản Hstored(u) để đảm bảo sự an toàn.
Giả sử có mảng R(u) , R(u) có giá trị j ngẫu nhiên và 0 p2££ j
R(u) = ei )(uRq = ei2p U[0,1)
41
ở đây U[0,1) đại diện cho một mảng của các phần tử mà mỗi phần tử m ngẫu nhiên và
chạy trong khoảng 0 £ m £ 1, trong phần này ei )(uRq được dùng để đại diện cho hàm ngẫu
nhiên được định nghĩa ở trên. Như vậy bằng cách sử dụng hình ảnh {{f11(x), f12(x), … ,
f1T(x)}, H(u) được tính lại như sau:
H(u) = )(1)(
)(
0
2
*
0
uDuP
UA
aa -+
e )(ui Rq
Khi một số hình ảnh đầu vào f t0 (x) vào hệ thống thì hàm H(u) đã được tối ưu sẽ sinh ra
c0(x). Với ảnh đầu vào f
t
0 (x) sẽ rạo ra hàm c t0 (x) ở đầu ra như sau:
c t0 (x) = FT-1{ F t0 (u)
)(1)(
|)(|
0
2
)(
0
0
uDuP
euA ui A
aa
q
-+
-
e )(ui Rq }
Tương tự với ảnh đầu vào f t1 (x) sẽ tạo ra hàm c t1 (x) ở đầu ra như sau:
c t1 (x) = FT-1{ F t1 (u)
)(1)(
|)(|
0
2
)(
0
0
uDuP
euA ui A
aa
q
-+
-
e )(ui Rq }
ở đây chỉ số 1 đại diện cho một ảnh thu được trong quá trình xác thực. Mẫu đầu ra c
t
1 (x) sẽ
được dùng để khôi phục khóa số trong quá trình xác thực. Rõ ràng với người dùng hợp lệ
thì c t1 (x) càng gần với c
t
o (x). Tất nhiên, nếu ảnh f t1 (x) đồng nhất với ảnh f
t
0 (x) thì c t1 (x)
® c to (x). Tuy nhiên vì những sự thay đổi theo hành vi, môi trường và những thay đổi vật
lý nên f t1 (x) sẽ không đồng nhất với f
t
0 (x). Vì vậy trong quá trình đăng ký ta phải dùng T
ảnh vân tay ( thường T » 6).
Sử dụng
A0(u) để đại diện cho F
t
0 (u)
A1(u) để đại diện cho F
t
1 (u)
Ta có
c t0 (x) = FT-1{ A0(u) )(1)(
|)(|
0
2
)(
0
0
uDuP
euA ui A
aa
q
-+
-
e )(ui Rq }
c t0 (x) = FT-1{ A0(u) )(1)(
|)(|
0
2
0
uDuP
uA
aa -+
e )(ui Rq e )(0 ui Aq- }
42
c t0 (x) = FT-1{ A0(u) . |H0(u)| . Hstored(u)} (3.8)
Tương tự :
c t1 (x) = FT-1{ A1(u) )(1)(
|)(|
0
2
)(
1
1
uDuP
euA ui A
aa
q
-+
-
e )(ui Rq }
c t1 (x) = FT-1{ A1(u) )(1)(
|)(|
0
2
1
uDuP
uA
aa -+
e )(ui Rq e )(1 ui Aq- }
c t1 (x) = FT-1{A1(u) . |H1(u)| . Hstored(u)} (3.9)
như vậy Hstored(u) sẽ được tính như sau:
Hstored(u) = e )(ui Rq e
)(0 ui Aq- (3.10)
Trong phần tiếp theo, chúng ta sẽ đi sâu hơn về khía cạnh an toàn của Hstored(u).
Trong quá trình đăng ký và xác thực, khóa số sẽ được liên kết với c0(x) trong quá trình
đăng ký và c1(x) trong quá trình xác thực.
3.7 Thiết kế bộ lọc an toàn
Trong phần trước, chúng ta đã đề cập tới bộ lọc Hstored(u). Nó được yêu cầu phải an
toàn để chống lại các cuộc tấn công. Đến năm 1917 Gilbert Vernam phát minh ra hệ
thống mã hóa với độ bảo mật cao, đáp ứng được cho các yêu cầu thiết kế bộ lọc an toàn.
Hệ thống mã hóa như sau:
P = C = K = {0,1}n với n ³ 1
Quá trình xử lý mã hóa bao gồm việc bổ sung hai module của hai chuỗi nhị phân n-bit gọi
ra bản rõ và khóa. Dữ liệu mã hóa gọi là bản mã. P, C, K lần lượt tương ứng là bản rõ, bản
mã và không gian khóa. Trong hệ thống mã hóa khóa bí mật là ngẫu nhiên và chỉ sử dụng
một lần.
Xét một hệ thống mật mã nhị phân có hai cấp: 0 và p
Cho P = K = C = {0,p }n khi n ³ 1
Quá trình mã hóa :
43
e piq . e kiq = e ciq
với q p Î P, q kÎK và q c = q p + q k (mod 2p )
Quá trình giải mã
e ciq . e kiq- = e piq
với q p = q c - q k ( mod 2p )
Tuy nhiên nếu
- q k = q k (mod 2p )
Giải mã sẽ là : e ciq . e kiq = e piq
Các yếu tố của gian đoạn tạo ra nhị phân ei0 và eip có thể kết hợp theo cách sau:
ei0 . eip = eip . ei0 = eip
eip . eip = ei0 . ei0 = ei0
Gọi t là phép biến đổi : t = { ei0 ®0, eip ®1, và . ® Å }
Với . là phép nhân còn Å là phép toán loại trừ OR
Như vậy cách kết hợp trên có thể chuyển đổi thành như sau:
0 Å 1 = 1 Å 0 = 1
0 Å 0 = 1 Å 1 = 0
3.8 Quá trình đăng ký và xác thực
3.8.1 Quá trình đăng ký
Giai đoạn E-1: Xử lý ảnh, kết hợp một tập dấu vân tay đầu vào với một mảng ngẫu
nhiên để tạo ra hai mảng đầu ra : Hstored(u) và c0(x).
Giai đoạn E-2 : Liên kết khóa(Key linking), dùng giải thuật liên kết hóa khóa mã
k0 với mẫu c0(x)
Giai đoạn E-3: Tạo mã định danh, tạo ra một mã định danh id0 từ chìa khóa k0.
44
Hình 3.1 Tổng quan quá trình đăng ký của mã hóa sinh trắc học
Mục đích của quá trình đăng ký là kết hợp khóa N-bits với dấu vân tay người dùng
để tạo ra Bioscrypt của người dùng.
Như trong hình vẽ, quá trình đăng ký cần 3 đầu vào là : tập dấu vân tay của người
dùng, R(u) được tạo ngẫu nhiên và khóa mã k0 độ dài N-bits. R(u) được tạo ra bằng sử
dụng một bộ tạo số ngẫu nhiên ( random number generator – RNG). Chìa khóa k0 có thể
sử dụng một chìa khóa đã có được dùng làm đầu vào của giải thuật mã hóa sinh trắc, hoặc
có thể sinh ra bởi RNG. Chú ý là khóa k0 và R(u) hoàn toàn độc lập với ảnh sinh trắc.
Giai đoạn E-1: Xử lý ảnh
45
Hình 3.2 : Giai đoạn xử lý ảnh trong quá trình đăng ký
Như trong hình trên, quá trình xử lý ảnh sẽ tạo ra mẫu c0(x) để chuyển cho giai
đoạn E-2 ( giai đoạn liên kết khóa) và sinh ra Hstored(u) – hàm lọc lưu trữ trong bioscrypt.
Những dấu vân tay T được thu nhận từ người sử dụng hệ thống ( khoảng 4 tới 6 ảnh được
sử dụng), sau đó những ảnh này sẽ được thực hiện biến đổi Fourier và sử dụng phương
trình (3.4) và (3.5) ở trên để tính toán A0(u) và D0(u). Sau đó, tính e )(0 ui Aq từ A0(u) và liên
hợp phức của nó. Tiếp theo ta tính được hàm lọc lưu trữ Hstored(u) từ e )(0 ui Aq và R(u) theo
phương trình (3.10). Theo phương trình (3.8) ta tính được mẫu c0(x). Hstored(u) được lử trữ
vào bioscrypt, c0(x) làm đầu vào cho giai đoạn liên kết của quá trình đăng ký.
Giai đoạn E-2: Thuật toán liên kết
Thuật toán liên kết có nhiệm vụ kết hợp giữa mẫu đầu ra c0(x) với khóa k0 N-bits dựa trên
bảng tra cứu (Lookup table), tạo ra và lưu trữ chúng vào bioscrypt để sử dụng cho việc
khôi phục khóa trong quá trình xác thực.
Một điều quan trọng là trong quá trình này là sự sai khác giữa mẫu đầu ra c0(x) và
mẫu cần kiểm tra c1(x), sự khác nhau này vì những sự thay đổi trong hàm lượng ẩm của
ngón tay người sử dụng, định vị ngón tay trên thiết bị …
46
Có nhiều cách để liên kết k0 với c0(x) , trong luận văn này sẽ đề cập đến cách sử
dụng một cấu trúc lặp đơn giản đơn giản dùng để chỉnh sửa lỗi.
Hình 3.3 : Thuật toán liên kết khóa
Như trong hình trên, giải thuật sẽ chọn lọc lấy một mảng 64x64 ở giữa của c0(x),
nhị phân hóa và chọn lọc những giá trị L để đại diện cho mỗi bits khóa. Việc này có mục
đích để cung cấp các thông số đầu vào để tạo ra mẫu đăng ký nhị phân. Tiếp theo là kết
hợp phần số thực và số ảo được nhị phân hóa của c0(x) để tạo ra mẫu đăng ký có kích
thước 128x64. Ví dụ: một mảng với 128 cột và 64 hàng, nếu phần tử a+bi xuất hiện ở vị
trí (x,y) của mảng 64x64 của c0(x), thì trong mẫu đăng ký phần số thực a sẽ xuất hiện tại
vị trí (x,y) và phần số ảo b sẽ xuất hiện tại vị trí (x+64,y). Quá trình này làm chuyển đổi
một mảng giá trị phức 64x64 thành một mảng giá trị thực 128x64. Mẫu đăng ký bây giờ
chứa đựng 8192 giá trị thực D được tạo ra từ các số thực a hay số ảo b tương ứng. Nhị
phân mỗi giá trị của mẫu đăng ký ta sẽ thu được mẫu đăng ký nhị phân dùng để liên kết
với k0. Quy tắc nhị phân mẫu đăng ký:
d ® 1 nếu d ³ 0
d ® 0 nếu d < 0
47
Giả sử bit đầu tiên của k0 có giá trị là 0. Chọn vị trí của L ở trong mẫu đăng ký nhị
phân mà có giá trị phần tử của nó bằng 0, ghi vào cột đầu tiên của lookup table. Tiếp tục
quá trình này với các bits khác của khóa. Mỗi vị trí trong mẫu đăng ký nhị phân chỉ có thể
đại diện cho một bit của chìa khóa. Cuối cùng Lookuptable sẽ bao gồm 128 cột mà mỗi
cột chứa vị trí L trong mẫu đăng ký nhị phân.
Giai đoạn E-3: Tạo mã định danh
Một yêu cầu của giải thuật mã hóa sinh trắc học là khi một người tấn công vào hệ
thống sử dụng Bioscrypt thì giải thuật sẽ sinh ra một khóa sai. Trên thực tế, để tiện lợi cho
hệ thống thì giải thuật sẽ không sinh ra một khóa sai mà thay vào đó sẽ sinh ra thông báo
từ chối và chuyển tới cho hệ thống mật mã. Việc này sẽ tránh cho hệ thống lãng phí tài
nguyên vào việc giải mã bằng khóa sai. Do đó, cần phải có kịch bản để kiểm tra khóa cho
quá trình này. Rõ ràng chìa khóa k0 không thể lưu trữ trong bioscrypt để so sánh với khóa
được sinh ra bởi quá trình kiểm tra. Thay vào đó ta sẽ kết hợp mã hóa tiêu chuẩn và giải
thuật băm để tạo ra mã định danh id0. Tương tự, quá trình kiểm tra sẽ sinh ra một mã định
danh id1, sau đó so sánh hai id này với nhau để xác minh khóa được sinh ra trong quá
trình kiểm tra có đúng hay không.
Một phương thức kiểm tra khóa thường dùng là sử dụng khóa k0 N-bit như là khóa
mã để mã hóa S bit của dữ liệu. Sau đó dùng hàm băm một chiều để băm dữ liệu đã được
mã hóa để tạo ra mã định danh id0. Lưu mã định danh vào trong Bioscrypt.
S bit được mã hóa có thể là S bit bất kỳ nào có trong quá trình đăng ký và xác thực.
S bit này là khác nhau với mỗi người dùng để đảm bảo an toàn tối đa cho thủ tục kiểm tra
khóa. Để đảm bảo điều này ta sẽ sử dụng S bit ở hàm lọc lưu trữ Hstored(u) vì nó có ở trong
cả quá trình đăng ký và quá trình xác thực. Ngoài ra còn vì Hstored(u) là tích số của dấu vân
tay và mảng ngẫu nhiên nên nó khác nhau với mỗi người dùng. Do đó ta sẽ sử dụng S bits
đầu tiên của Hstored(u) làm dữ liệu đầu vào cho giải thuật mã hóa.
Việc chọn giải thuật mã hóa và hàm băm la độc lập với quá trình mã hóa sinh trắc
học. Tiêu chí cho quá trình tạo ra mã định danh là đơn giản và tính an toàn cao. Ở đây có
thể sử dụng mã hóa AES với độ dài khóa là 256 và hàm băm SHA-256.
Bảng tra cứu và id0 được thêm vào Hstored(u) để tạo thành Bioscrypt hoàn chỉnh, nó
có thể lưu trữ trên bất cứ phương tiện lưu trữ bình thường hiện đang có trên thị trường.
3.8.2 Quá trình xác thực
Giai đoạn V-1: xử lý ảnh :
Lấy Hstored(u) từ bioscrypt, kết hợp với các dấu vân đầu vào để tạo thành c1(x)
Giai đoạn V-2 : tìm chìa khóa :
48
Sử dụng giải thuật giải mã tìm chìa khóa k1 từ c1(x)
Giai đoạn V-3 : kiểm tra khóa :
Kiểm tra k1 bằng cách tạo ra một mã định danh mới id1 và so sánh với id0 ở trên.
Hình 3.4 : Tổng quan quá trình xác thực của mã hóa sinh trắc học
Mục tiêu của quá trình là khôi phục khóa N-bit cho người dùng hợp lệ.
Như trong trình bày ở trên, tập các ảnh sinh trắc của người dùng sẽ kết hợp với
Hstored(u), bảng tra cứu Lookup Table và id0 ở trong bioscrypt để khôi phục và kiểm tra
khóa N-bit của người dùng.
Giai đoạn V-1 : Xử lý ảnh
Như trong hình trên, xử lý ảnh của quá trình xác thực cũng tương tự như quá trinh
đăng ký. Trước tiên lấy dấu vân tay T của người sử dụng, sau đó thực hiện biến đổi
Fourier và tính A1(u) và D1(u). Dựa theo phương trình (3.9) tính c1(x) với Hstored(x) lấy
được từ bioscrypt. Chuyển c1(x) sang giai đoạn V-2 của quá trình xác thực để khôi phục
lại khóa N-bit.
49
A0(u), D0(u) được tính từ dấu vân tay đầu vào trong quá trình đăng ký.
A1(u), D1(u) được tính từ dấu vân tay đầu vào trong quá trình xác thực.
Như vậy ta có:
- Nếu là người sử dụng hợp lệ thì
A1(x) » A0(x), D1(x) » D0(x) và e
)(1 ui Aq . e )(0 ui Aq- » 1
- Nếu là người tấn công thì
A1(x) ¹ A0(x), D1(x) ¹ D0(x) và e
)(1 ui Aq . e )(0 ui Aq- ¹ 1
Giai đoạn V-2 : Thuật toán khôi phục
Hình 3.5 : Giải thuật khôi phục khóa
50
Thuật toán khôi phục chịu trách nhiệm chính trong việc khôi phục khóa ngẫu nhiên
(đã được ẩn vào trong lookup table trong quá trình đăng ký) từ mẫu c1(x) trong quá trình
xác thực. Giải thuật khôi phục khóa sẽ sử dụng hàm lọc lưu trữ Hstored và Lookup Table đã
được lưu trữ trong bioscrypt và mẫu c1(x) lấy được từ quá trình xác thực. Các bước dưới
đây sẽ mô tả chi tiết từng bước của quá trình khôi phục khóa N – bit liên kết với c0(x) sử
dụng giải thuật liên kết đã đề cập phía trên.
Giải thuật khôi phục khóa:
1. Lấy một mảng kích thước 64x64 ở giữa c1(x).
2. Tương tự giai đoạn E-2, kết hợp số thực và số ảo để tạo ra mẫu kiểm tra 128x64,
nhị phân hóa mẫu này sẽ tạo thành mẫu xác thực nhị phân – tương ứng với mẫu
đăng ký nhị phân.
3. Sử dụng bảng tra cứu để lấy ra các bit cần thiết trong mẫu xác thực nhị phân để tạo
khóa. Định nghĩa k1 như là một vector N-thành phần. Với phần tử thứ n của k1,
cộng tổng các bit L của mẫu xác thực nhị phân có chỉ số ở trong cột n của bảng tra
cứu. Nếu tổng các bit đó lớn hơn L/2 thì phần tử thứ n của k1 bằng 1, nếu tổng các
bit đó nhỏ hơn hoặc bằng L/2 thì phần tử thứ n của k1 bằng 0. Hay nói cách khác,
dùng quy tắc đa số để gán giá trị cho bit thứ n của k1.
4. Xác định tính hợp lệ của khóa khôi phục được. Quá trình này sẽ được mô tả ch tiết
ở giai đoạn V-3.
5. Nếu k1 tìm được là đúng, đưa ra khóa k1. Nếu k1 sai, trở lại c1(x) và lấy một mảng
64 x 64 khác cách vị trí cũ 1 pixel. Tiếp tục quá trình từ bước 2 tới bước 5 với tất
cả phần 64 x 64 có vị trí bắt đầu cách vị trí trung tâm nhỏ hơn 16 pixel. Nếu bất kỳ
vị trí nào mà khóa khôi phục được xác minh là đúng thì ngừng quá trình và đưa ra
kết quả là khóa k1. Trong trường hợp còn lại, nếu tất cả các vị trí đều là khóa sai thì
đưa ra thông báo từ chối.
Chú ý rằng, trong bước 5 của giải thuật khôi phục khóa đòi hỏi những mảng 64x64
được lấy ra từ dấu vân tay trong quá trình đăng ký và xác thực phải không lệch vị trí quá
nhiều. Thông thường, ta chỉ cần tìm ± 16 pixel của kích thước 128x128. Trong khoảng
này, nếu không có vị trí nào trùng khớp thì quá trình sẽ được dừng lại, không cần tiếp tục
kiểm tra thêm nữa.
Giai đoạn V-3 : Kiểm tra khóa
Bước 4 của giải thuật trên yêu cầu khóa k1 cần phải được kiểm tra tính hợp lệ. Khóa
hợp lệ chỉ khi nó phù hợp hoàn toàn với khóa k0 ( trong quá trình đăng ký). Để kiểm tra
tính hợp lệ của khóa k1, ta sẽ tính mã định danh id1 rồi so sánh id1 với id0 đã được lưu trữ
trong bioscrypt. Mã định danh id1 được tính tương tự id0 , trải qua các bước :
- Coi k1 là khóa mã, mã hóa S-bit của hàm lọc lưu trữ.
51
- Sau đó băm dữ liệu mã hóa sẽ được id1.
- So sánh id1 với id0 , nếu id1=id0 thì k1=k0 tức là khóa tìm được là chính xác.
Ngược lại nếu id1 ¹ id0 thì k1 ¹ k0, hệ thống sẽ ra thông bào từ chối hay là
thuật toán khôi phục sẽ tiếp tục quay lại bước 1 trong giai đoạn V-2 với một vị
trí khác.
3.9 Kết luận
Trong chương 3 chúng ta đã tìm hiểu về các thuật toán mã hóa sinh trắc, biết
được cấu trúc của hệ thống đăng ký khóa sinh trắc và hệ thống xác thực và truy xuất khóa.
Cùng với đó là các công thức toán học, các bước thực hiện để xây dựng nên hệ thống mã
hóa sinh trắc.
Qua chương này chúng ta cũng nhận thấy sự an toàn của khóa sinh từ các đặc trưng sinh
trắc nói riêng cũng như ảnh vân tay nói chung ở các điểm sau :
- Khóa sinh trắc có tính ngẫu nhiên rất cao ( do sự tham gia của hai dãy số ngẫu
nhiên ở quá trình xử lý ảnh và mã hóa hàm lọc lưu trữ ), gây khó khăn lớn cho
việc tấn công khóa. Điều này trái ngược với các khóa thông thường : thường là
những từ khóa dễ nhớ, có liên quan tới bản thân hoặc người thân nên dễ tấn
công hơn.
- Hệ thống sử dụng khóa sinh trắc có khả năng xác thực người sử dụng, chỉ có
người sử dụng hợp lệ mới có thể sử dụng khóa. Những người sử dụng không
hợp lệ ( không có dấu vân tay trùng khớp) không thể truy xuất khóa sinh trắc.
Đặc điểm này chính là sự khác biệt lớn nhất giữa hệ thống sử dụng khóa sinh
trắc và hệ thống sử dụng khóa thường. Ở những hệ thống mật mã bình thường,
bất kỳ ai nhập vào chuỗi khóa đúng ( kể cả kẻ tấn công khóa) cũng có quyền
của chủ nhân của chúng.
52
CHƯƠNG 4 : XÂY DỰNG ỨNG DỤNG “MẬT MÃ SINH TRẮC”
4.1 Giới thiệu
Chương này sẽ tập trung vào việc mô tả chi tiết các thuật toán đã được sử dụng và
kết quả thực thi của chúng. Nó mô tả các bước cần thiết để có thể tạo ra một khóa sinh
trắc và sử dụng khóa sinh trắc đó vào việc mã hóa. Chương trình được viết bằng ngôn ngữ
lập trình hướng đối tượng Java, với các form được thiết kế đơn giản, với hai chức năng là
sinh khóa sinh trắc và mã hóa khóa sinh trắc, ngoài ra còn có các chức năng để thực thi
một số thuật toán con như : lấy màu của từng pixel ảnh, biến đổi Fourier của một ma trận
ảnh, tính toán các sai lệch….
4.2 Các thuật toán được sử dụng
4.2.1 Xử lý ảnh
Mục đích của phần này là xử lý ảnh đăng ký và đưa ra được màu sắc của các điểm
ảnh. Chương trình ứng dụng xử lý ảnh đen trắng có kích thước 128 x 128 pixel, là ảnh của
bộ scan vân tay thông thường. Trước tiên chúng ta sẽ tìm hiểu xem với ngôn ngữ lập trình
Java, ảnh và các điểm ảnh được biểu diễn như thế nào?
Một bức ảnh số là một mảng dữ liệu 2 chiều của nhiều hạt ảnh ( pixels), chúng ta sẽ
gọi một hạt ảnh là một Pixel. Mỗi pixel chứa 3 số nguyên có giá trị từ 0 cho tới 255, 3 số
nguyên này mang 3 giá trị màu của màu đỏ, xanh lục và xanh dương trong pixel đó. Gọi r,
g, b lần lượt là các giá trị màu của màu đỏ, xanh lục và xanh dương trong pixel. Nếu một
pixel có 3 giá trị màu bằng nhau thì pixel đó có màu xám. Nếu giá trị r,g,b trong một pixel
càng lớn thì pixel đó có màu càng sáng và ngược lại nếu r, g, b có giá trị càng nhỏ thì
pixel có giá trị càng tối. Dưới đây là một số màu cơ bản :
R,G,B: ---------------> Màu:
0, 0, 0 ---------------> Đen
0, 0, 255 ---------------> Xanh dương (blue)
0, 255, 0 ---------------> Xanh lục (green)
255, 0, 0 ---------------> Đỏ (red)
0, 255, 255 ---------------> Xanh lam (cyan)
255, 255,0 ---------------> Vàng
255,0,255 ---------------> Tím
255,255,255 -------------> Trắng.
Quá trình xử lý ảnh trong quá trình đăng ký sẽ đưa ra một ma trận các phần tử 0, 1
có kích thước 128 * 128. Ở đây, 0 biểu diễn điểm ảnh tương ứng có màu đen, 1 biểu diễn
điểm ảnh tương ứng có màu trắng.
53
4.2.2 Biến đổi Fourier rời rạc
Trong toán học, phép biến đổi Fourier rời rạc còn được gọi là phép biến đổi Fourier
hữu hạn. Đầu vào của biến đổi là một chuỗi hữu hạn các số thực hoặc số phức. Dãy của
N số x0, …, xN-1 ( x có thể là số thực hoặc là số phức) được biến đổi thành chuỗi của N số
phức X0, ... , XN-1 bởi công thức sau đây:
Với e là cơ sở của logarit tự nhiên, i là đơn vị ảo ( i2 = -1) , phép biến đổi được ký hiệu là
F:
X = F{X}
Phép biến đổi Fourier rời rạc ngược được cho bởi công thức:
Tuy nhiên trong quá trình xây dựng ứng dụng, việc tính toán với hàm mũ cơ số e là rất
mất thời gian, vì vậy ta áp dụng công thức Euler ( công thức đồng nhất Euler) là một công
thức toán học trong giải tích được xây dựng bởi nhà toán học người Thụy Sĩ : Leonhard
Euler. Công thức chỉ ra mối liên hệ giữa hàm số lượng giác và hàm số mũ phức. Cụ thể,
với mọi số thực x ta có :
Khai triển từ công thức trên, sin(x) và cos(x) có thể được viết như sau:
Từ đó, công thức Euler được biến đổi thành :
Xk = å
-
=
-1
0
2N
n
kn
N
i
n ex
p
Xk = å
-
=
-+-
1
0
))2sin()2(cos(
N
n
n knN
iikn
N
ix pp
54
Sau khi biến đổi Fourier cho ma trận biểu diễn màu của ảnh đầu vào, ta được một
ma trận số phức, có kích thước 128 * 128. Mỗi phần tử của ma trận phức là một số phức
được biểu diễn dưới dạng :
x = a + bi
trong đó, a là phần thực, b là phần ảo và i là đơn vị ảo.
4.2.3 Sinh mảng ngẫu nhiên
Một bộ sinh số ngẫu nhiên RNG (Random Number Generator) là một bộ tính toán
để tạo ra dãy số ngẫu nhiên. Có rất nhiều phương pháp để tạo ra số ngẫu nhiên, từ thời cổ
đại đã có những phương pháp như : tung đồng xu, súc sắc, rút thẻ… ngày nay các phương
pháp sinh số ngẫu nhiên dựa vào hệ thống phần cứng được sử dụng phổ biến. Các bộ số
ngẫu nhiên có ứng dụng nhiều trong cờ bạc, lấy mẫu thống kê, mô phỏng máy tính, mật
mã … nhằm tạo ra một kết quả xử lý không thể đoán trước.
Trong khóa luận này, bộ số ngẫu nhiên cũng đóng vai trò quan trọng trong quá trình
đăng ký được xây dựng. Bộ số ngẫu nhiên giúp chúng ta giấu các thông tin của ảnh đầu
vào, làm khóa cho quá trình mã hóa dữ liệu thu được khi xử lý ảnh … nhằm tăng độ bảo
mật cho dữ liệu.
Có 3 phương pháp sinh ra một số ngẫu nhiên:
- Phương pháp vật lý : như đã kể trên, phương pháp vật lý là phương pháp
ra đời sớm nhất để tạo ra sự ngẫu nhiên bao gồm tung đồng xu, súc sắc
… Những phương pháp này vẫn được sử dụng ở hiện tại trong các ứng
dụng về cờ bạc và một số trò chơi. Tuy nhiên với phương pháp này có
xu hướng quá chậm đối với hầu hết các ứng dụng trong thống kê và mật
mã
- Phương pháp tính toán : PRNGs là thuật toán có thể tạo ra dãy số ngẫu
nhiên, chuỗi giá trị ngẫu nhiên này được tạo ra bởi một hạt giống. Một
trong những PRNGs phổ biến nhất là bộ tuyến tính sử dụng modulo để
tạo ra các con số :
Xn+1 = (a Xn + b) mod m
Với m là số nguyên tố lớn, a và b là 2 số nguyên dương cho trước. Bộ
PRNGs sử dụng modulo nên có độ ngẫu nhiên khá tốt, có thể sử dụng
cho mật mã và thống kê. Trong khóa luận này, chúng ta sử dụng bộ
PRNGs này đế sinh các số ngẫu nhiên.
- Phương pháp dựa vào phân bố xác suất : các phương pháp này tạo ra bộ
số ngẫu nhiên dựa trên một hàm mật độ xác suất. Những phương pháp
55
này có thể làm việc tốt trong việc tạo ra bộ số ngẫu nhiên cũng như giả
ngẫu nhiên.
4.2.4 Các phép toán
Quá trình xử lý và tính toán trong “mật mã sinh trắc” là khá phức tạp. Quá trình
tính toán sử dụng khá nhiều thuật toán liên quan tới số phức, ma trận…
4.2.4.1 Các phép toán liên quan tới số phức
Giả sử có hai số phức x và x’ được biểu diễn dưới dạng :
x = a + bi
x’ = a’ + b’i
trong đó a, b là hai số thực, a biểu diễn phần thực, b biểu diễn phần ảo và i là đơn vị ảo
với i2 = -1.
- Phép cộng với hai số phức x và x’ :
x + x’ = (a +a’) + (b + b’) i
- Phép trừ với hai số phức x và x’:
x – x’ = (a – a’) + (b – b’) i
- Phép nhân với hai số phức x, x’ :
x * x’ = ( a* a’ - b * b’) + ( a*b’ + a’*b) i
- Số phức liên hợp của số phức x là :
Xlh = a – bi
- Modulo của số phức x :
M(x) = a2 + b2
- Trung bình của hai số phức x và x’:
(x + x’)/2 = (a + a’)/2 + (b+b’) * i / 2
4.2.4.2 Các phép toán liên quan tới ma trận
Gỉa sử M và N là hai ma trận có kích thước n x n.
56
- Phép cộng hai ma trận M và N cho kết quả là một ma trận P có kích
thước n x n là kết quả của đoạn giả mã sau :
For ( int i = 0; I < n; i++){
For ( int j =0; j < n; j++){
P[i][j] = M[i][j] + N[i][j];
}
}
Return P;
- Tương tự phép cộng hai ma trận, phép trừ ma trận M cho ma trận N
cũng cho kết quả là một ma trận có kích thước n x n;
- Phép nhân ma trận M với ma trận N cho kết quả là ma trận P có kích
thước n x n được mô tả như sau :
int tg = 0;
For ( int i = 0;i<n;i++){
For ( int j =0;j<n;j++){
For (int k = 0; k<n; k++){
tg =tg + M[i][k] + N[k][j];
}
P[i][j] = tg;
}
}
Return P;
- Ma trận nghịch đảo của ma trận M là ma trận P được định nghĩa :
M * P = 1;
- Chia ma trận M cho ma trận N – khả nghịch được kết quả là ma trận P :
P = M/N = M*N-1 với N-1 là ma trận nghịch đảo của
ma trận N
57
4.3 Xây dựng ứng dụng mật mã sinh trắc
Như đã đề cập ở trên, ứng dụng “mật mã sinh trắc” sẽ gồm hai chức năng là “Sinh
khóa sinh trắc” và “Mã hóa sử dụng khóa sinh trắc”. Trong đó chức năng “Mã hóa sử
dụng khóa sinh trắc” bao gồm hai chức năng nhỏ hơn là : “Mã hóa” và “Giải mã”.
Hình 4.1 : Biểu đồ chức năng chương trình ứng dụng
4.3.1 Sinh khóa sinh trắc
- Mục đích : tạo ra một định danh Id cho ảnh vân tay đầu vào và sử dụng Id này
như là khóa sinh trắc.
- Dữ liệu đầu vào : 1 bức ảnh vân tay đen trắng có kích thước 128 x 128 pixel.
- Quá trình thực hiện : gồm 4 giai đoạn
Giai đoạn 1 : Xử lý ảnh
Quá trình xử lý ảnh trải qua 3 bước : xử lý ảnh, biến đổi Fourier, tính số phức liên
hợp. Ảnh đầu vào là ảnh đen trắng, có kích thước 128 x 128 pixel sẽ được xử lý, đưa ra
58
ma trận màu của nó là một ma trận các số 0, 1. Sau đó , ma trận các số 0, 1 này sẽ được
biến đổi Fourier tạo ra một ma trận các số phức A. Ma trận phức liên hợp A' sẽ được tính
từ ma trận phức A bằng cách : với mỗi số phức là thành phần của A ta tính số phức liên
hợp của nó. Kết quả của quá trình là một ma trận phức A' là ma trận phức liên hợp của ma
trận phức A. Ma trận này sẽ là đầu vào cho quá trình tạo hàm lọc lưu trữ ở giai đoạn 3.
Hình 4.2 : Giai đoạn xử lý ảnh
Giai đoạn 2 : Sinh mảng số ngẫu nhiên.
Hình 4.3 : sinh mảng số ngẫu nhiên
Bộ sinh số ngẫu nhiên trong chương trình ứng dụng được thiết kế để tạo ra một ma
trận ngẫu nhiên các số 0, 1. Ma trận này cũng có kích thước 128 x 128 như ma trận màu
của ảnh đầu vào. Ma trận các số ngẫu nhiên 0, 1 sẽ được biến đổi Fourier tạo ra một ma
59
trận số phức R. Đây là kết quả của giai đoạn này. Nó sẽ là đầu vào cho quá trình tạo hàm
lọc lưu trữ ở giai đoạn 3.
Giai đoạn 3 : Sinh hàm lọc lưu trữ.
Hình 4.4 : Tính hàm lọc lưu trữ Hstored
Giai đoạn này sử dụng kết quả của hai giai đoạn xử lý ảnh và sinh số ngẫu nhiên.
Hai ma trận phức sẽ được nhân với nhau tạo ra ma trận số phức Hstored . Ma trận này là
đầu vào của quá trình sinh khóa dưới đây.
Giai đoạn 4 : Sinh khóa sinh trắc
Hình 4.5 : Sinh khóa sinh trắc
60
Trước tiên, bộ sinh số ngẫu nhiên sẽ sinh ra một khóa k có độ dài 256 – bit, khóa k
là ngẫu nhiên. Sau đó khóa k sẽ được sử dụng làm khóa mã của thuật toán mã hóa AES,
sử dụng để mã hóa hàm lọc lưu trữ Hstored tạo ra một bản mã hóa, bản mã hóa này sẽ được
đưa vào hàm băm SHA-256 cho kết quả băm là 256 bit. Chuỗi bit này sẽ được sử dụng
như là khóa sinh trắc của người sử dụng.
4.3.2 Mã hóa sử dụng khóa sinh trắc
Chức năng “ Mã hóa sử dụng khóa sinh trắc” thực ra chỉ là sử dụng lại thuật toán
mã hóa AES để mã hóa dữ liệu, và giải mã bản mã thành bản dữ liệu gốc. Nó gồm hai quá
trình mã hóa và giải mã với cùng một khóa k là khóa sinh trắc đã được sinh từ chức năng
“Sinh khóa sinh trắc”.
Mã hóa dữ liệu :
Hình 4.6 : Quá trình mã hóa dữ liệu
Quá trình mã hóa dữ liệu trải qua 4 giai đoạn :
· Giai đoạn 1 : Lấy dữ liệu cần mã hóa từ giao diện của ứng dụng.
· Giai đoạn 2 : Lấy 256 – bit khóa sinh trắc đã được tạo ra từ chức năng sinh
khóa sinh trắc làm khóa mã cho thuật toán mã hóa.
· Giai đoạn 3 : Sử dụng thuật toán mã hóa AES cho dữ liệu vừa lấy được với
khóa là khóa sinh trắc có độ dài 256 – bit.
· Giai đoạn 4 : Lấy kết quả của quá trình mã hóa, ta được bản mã hóa của dữ
liệu, hiển thị ra giao diện ứng dụng.
Sau khi quá trình mã hóa kết thúc, bản mã hóa dữ liệu, khóa sinh trắc đều được lưu
trữ nhằm phục vụ cho quá trình giải mã dữ liệu.
61
Giải mã dữ liệu :
Hình 4.7 : Quá trình giải mã dữ liệu
Cũng giống với quá trình mã hóa dữ liệu, quá trình giải mã dữ liệu cũng trải qua 4 giai
đoạn :
· Giai đoạn 1 : Lấy bản mã hóa dữ liệu đã được lưu trữ trong giao diện của ứng
dụng.
· Giai đoạn 2 : Lấy khóa sinh trắc làm khóa giải mã dữ liệu
· Giai đoạn 3 : Sử dụng thuật toán giải mã của AES với dữ liệu cần giải mã là
bản mã hóa dữ liệu, khóa giải mã là khóa sinh trắc.
· Giai đoạn 4 : Thu nhận kết quả của quá trình giải mã là bản rõ của dữ liệu, hiển
thị dữ liệu ra giao diện ứng dụng.
4.4 Giao diện ứng dụng “mật mã sinh trắc” và cách sử dụng.
Giao diện của ứng dụng “ mật mã sinh trắc” được xây dựng khá đơn giản, dễ sử
dụng, tách biệt các module và thể hiện rõ quá trình xây dựng ứng dụng với 3 module
chính là “Sinh khóa ”, “Mã hóa dữ liệu” và “ Giải mã”.
62
Hình 4.7 : Giao diện ứng dụng
Ở chức năng sinh khóa, giao diện ứng dụng giúp chúng ta có thể chọn ảnh vân tay
để đưa vào quá trình sinh khóa bằng hộp chọn :
63
Hình 4.8 : Hộp chọn ảnh sinh trắc
Sau khi chọn được ảnh vân tay dùng để sinh khóa sinh trắc, kích vào nút “Sinh Khóa” để
đưa ảnh vào chương trình xử lý và đưa ra khóa sinh trắc. Khóa sau khi được sinh ra sẽ
được hiển thị trên một nhãn, nhằm không cho người sử dụng thay đổi dữ liệu, anh vân tay
sẽ được hiển thị ngay trên nút chọn.
Hình 4.9: Chức năng sinh khóa
64
Giao diện ứng dụng có 3 trường text, trường “bản rõ” sử dụng để nhập dữ liệu cần
mã hóa, trường “Bản Mã” sử dụng để in ra chuỗi mã hóa thu được khi mã hóa dữ liệu
được nhập bằng thuật toán AES-256 với “khóa sinh trắc” vừa thu được trong quá trình
sinh khóa. Trường text còn lại để hiển thị chuỗi thu được khi giải mã chuỗi mã với “khóa
sinh trắc”. Các nút bấm “Mã Hóa” và “Giải Mã” lần lượt thực hiện các chức năng “Mã
hóa dữ liệu” và “Giải mã”. Dưới đây là một ví dụ về quá trình sinh khóa, mã hóa dữ liệu
và giải mã dữ liệu của chương trình ứng dụng :
Hình 4.10 : Ví dụ ứng dụng
65
4.5 Kết Luận
Trong chương “Xây dựng ứng dụng mật mã sinh trắc”, chúng ta đã biết được
những thuật toán xử lý ảnh, cách áp dụng công thức Euler vào biến đổi Fourier nhằm rút
ngắn thời gian thực thi chương trình, các phép toán liên quan tới số phức và ma trận. Tất
cả chúng đều phục vụ cho quá trình sinh khóa sinh trắc. Ngoài ra,chương còn làm rõ các
bước để sinh ra được khóa sinh trắc. Cùng với đó là quá trình xây dựng ứng dụng “ Mật
mã sinh trắc” với các chứng năng là : “Sinh khóa sinh trắc”, “Mã hóa sử dụng khóa sinh
trắc” và giao diện của ứng dụng và cách sử dụng giao diện đó.
66
KẾT LUẬN
Khóa luận tốt nghiệp “Mật mã sinh trắc” đã đạt được một số kết quả như
sau:
· Khoá luận trình bày tổng quan về mật mã, các hệ mật mã phổ biến như hệ
mật mã khóa đối xứng ( AES), hệ mật mã khóa công khai (RSA), cùng với
ứng dụng băm (SHA).
· Khóa luận đã trình bày về sinh trắc học, các đặc trưng của ảnh vân tay, và
các phương pháp ứng dụng sinh trắc học vào việc bảo mật khóa bằng mẫu
sinh trắc học là ảnh vân tay.
· Áp dụng lý thuyết đã nghiên cứu ở trên, khóa luận cũng đã đề xuất giải pháp,
các thuật toán, các công thức toán học và các bước thực hiện quá trình đăng
ký và xác thực khóa sinh trắc.
· Cài đặt thành công ứng dụng “Mật mã sinh trắc” bao gồm hai chức năng
“Sinh khóa sinh trắc” và “Mã hóa sử dụng khóa sinh trắc”. Chức năng “sinh
khóa sinh trắc” bao gồm hai giai đoạn “Xử lý ảnh” và “ Sinh khóa” của quá
trình xác thực, khóa sau khi được sinh từ ảnh sinh trắc ( ảnh vân tay ) sẽ
được sử dụng làm khóa mã và khóa giải mã trong chức năng “Mã hóa sử
dụng khóa sinh trắc”.
· Chương trình ứng dụng đã có thể sinh ra khóa sinh trắc, sử dụng khóa sinh
trắc để mã hóa và giải mã dữ liệu.
Tuy nhiên, do lần đầu tiếp cận với vấn đề mới, thời gian có hạn và khả năng
hạn chế nên đề tài chỉ mới dừng lại ở mức nghiên cứu các giải pháp bảo vệ khóa sử
dụng đặc trưng sinh trắc học và phương pháp thực thi. Khóa luận chưa áp dụng các
nghiên cứu để xây dựng chương trình trong thực tế. Nếu có thời gian và điều kiện
cho phép, tác giả sẽ đi sâu vào nghiên cứu và lập trình, xây dựng, cài đặt các
module phức tạp khác để chương trình ứng dụng ngày một hoàn thiện.
Hướng phát triển của khóa luận :
Mật mã sinh trắc có thể được ứng dụng rất nhiều trong thực tế như : thương mại
điện tử, kết hợp mật mã sinh trắc với hệ thống PKI tạo ra hệ thống Bio-PKI, ứng
dụng mật mã sinh trắc với hệ thống OpenCA,….
67
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Lương Mạnh Bá, Nguyễn Thanh Thủy. Nhập môn xử lý ảnh số. Nhà xuất bản khoa
học kỹ thuật 1999.
[2] Ngô Quốc Tạo. Tập bài giảng “ Nhập môn xử lý ảnh”.
Tiếng Anh
[1] D.Maltoni, D.Maio, A.K.Jain, “Handle book of fingerprint reconigtion”, Springer,
NewYork 2003.
[2] “Biometric for network security”, Prentice Hall PTR, December 30, 2003.
[3] Anil K.Jain et all, “Biometric Crytosystems : Isues and Challenges”, Proceeding of
the IEEE, vol. 92, No. 6, June 2004.
[4] F.Hao, R.Anderson, J.Daugman, “ Combining Cryptography with Biometric
effectively”, University Cambridge, Technical Report N. 40, July 2005.
[5] Yoshifumi Ueshige, “ A study on Biometrics Authentification in BioPKI”, Institute
& System Information Technologies/ KYUSHU, 2005.
[6] Biometric Security. Idea biometric fingerprint door lock and safes, Home Security
Store, 2007.
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- NGHIÊN CỨU TÌM HIỂU VỀ MẬT MÃ SINH TRẮC.pdf