Khóa luận Nghiên cứu tìm hiểu về mật mã sinh trắc
ĐẠ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
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
Giáo viên hướng dẫn : TS Hồ Văn Hương
HÀ NỘI - 2010
2
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
3
DANH MỤC CÁC HÌNH
Tên hình
Trang
8
Hình 1.1: Quá trình mã hóa và giải mã
Hình 1.2: AddRoundKey bản rõ và khóa
Hình 1.3: Bước SubBytes
Hình 1.4: Bước ShiftRow
Hình 1.5: Bước MixColumns
Hình 1.6: Bước InvShiftRow
Hình 1.7: Hộp S-nghịch
Hình 1.8: Sơ đồ hệ mật RSA
Hình 1.9: Chữ ký số RSA
Hình 1.10:Quá trình băm thông điệp
Hình 1.11:Quá trình ký số
Hình 1.12:Gửi thông điệp
Hình 1.13:Xác minh chữ ký số
Hình 1.14:Băm thông điệp
Hình 1.15:Xác minh thông điệp
Hình 1.16:Băm nhiều thông điệp cho ra cùng một kết quả băm
Hình 1.17: Mảng 64 hằng số 32-bit Ki{256}
Hình 1.18 : Các giá trị khởi tạo của giá trị băm
Hình 2.1: Một số vân tay tìm được từ thời xưa
Hình 2.2: Các loại vân tay
9
10
10
11
11
12
13
14
15
15
15
16
16
17
17
22
23
26
30
31
44
45
46
48
49
57
58
58
59
Hình 2.3 : Số đếm các đường vân
Hình 3.1 : Tổng quan quá trình đăng ký của mã hóa sinh trắc học
Hình 3.2 : Giai đoạn xử lý ảnh trong quá trình đăng ký
Hình 3.3 : Thuật toán liên kết khóa
Hình 3.4 : Tổng quan quá trình xác thực của mã hóa sinh trắc học
Hình 3.5 : Giải thuật khôi phục khóa
Hình 4.1 : Biểu đồ chức năng chương trình ứng dụng
Hình 4.2 : Giai đoạn xử lý ảnh
Hình 4.3 : Sinh mảng số ngẫu nhiên
Hình 4.4 : Tính hàm lọc lưu trữ Hstored
Hình 4.5 : Sinh khóa sinh trắc
59
60
61
62
63
Hình 4.6 : Quá trình mã hóa dữ liệu
Hình 4.7 : Quá trình giải mã dữ liệu
Hình 4.8 : Giao diện ứng dụng
Hình 4.9 : Hộp chọn ảnh sinh trắc
Hình 4.10 : Chức năng sinh khóa
Hình 4.12 : Ví dụ ứng dụng
63
64
4
Ký hiệu các cụm từ viết tắt
Viết tắt
AES
Bio
Tiếng Anh
Advanced Encryption Standard
Biometric
Tiếng Việt
Chuẩn mã hóa tiên tiến
Sinh trắc
CA
Certificate Authority
Data Encryption Standard
Data Security Standard
Fourier Tranform
Chủ quyền chứng nhận
Chuẩn mã hóa dữ liệu
Chuẩn bảo mật dữ liệu
Biến đổi Fourier rời rạc
Thuật toán băm
Hạ tầng khóa công khai
Tên các nhà khoa học
Thuật toán băm an toàn
DES
DSS
FT
MD
PKI
RSA
SHA
Message Degist
Public Key Infrastructure
Rivest-Shamir-Adlman
Secure Hash Algorithm
5
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
6
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
7
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ã
®
Î
k Î
k Î
Với mỗi k K có một hàm lập mã e
E, e
P.
k
: P
C và một hàm giải mã d
D,
®
Î
"
d
k
: C
P sao cho dk(ek(x)) = x với
x
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
8
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
9
·
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
10
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
11
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
12
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.
13
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:
14
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
15
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
16
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.
17
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
18
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
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
Hj(i)
Kt
k
hằng số sử dụng cho vòng lặp thứ t của tính toán băm
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
số bit trong 1 block
m
19
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
số block của thông điệp chuẩn
w-bit thứ t của thông điệp liệt kê
N
Wt
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”
20
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à
w
w
£
£
biểu diễn của 2 số nguyên dương X và Y với 0 X < 2 và 0 Y<2 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<<n) v (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} (x)
Å
Å
2
13
= ROTR (x) ROTR (x) ROTR22(x)
å 0
å 1
{256} (x)
Å
Å
6
11
= ROTR (x) ROTR (x) ROTR25(x)
{256}
7
18
(x) = ROTR (x) ROTR (x) SHR3(x)
σ
Å
Å
0
{256}
17
19
(x) = ROTR (x) ROTR (x) SHR10(x)
σ
Å
Å
1
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):
21
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
(i)
(i)
của block thứ i là M0 , 32 bit tiếp theo là M1(i) và tới M15
22
- 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
< 264. Thuật toán sử dụng :
L
1. Thông điệp M đã được xử lý chuẩn hóa
Mảng 64 từ 32-bit W0 , …, W63
2.
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.
(0)
(0)
Một giá trị băm ban đầu là 8 chuỗi 32-bit,có nhãn H0 ,…, H7
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
{256}
{256} (Wt-15) + Wt-16 với 16 £ t £ 63
σ
σ
Wt =
(Wt-2) + Wt-7 +
1
0
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)
(i-1)
a = H0
23
(i-1)
(i-1)
(i-1)
(i-1)
b = H1
c = H2
d = H3
e = H4
(i-1)
(i-1)
f = H5
g = H6
(i-1)
h = H7
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} (e) + Ch (e, f, g) + Kt{256} + Wt
å 1
{256} (a) + Maj (a, b, c)
T = å 0
2
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)
(i)
(i -1)
(i -1)
(i -1)
H0 = a + H0
(i)
H1 = b + H1
(i)
H2 = c + H2
(i)
(i -1)
H3 = d + H3
(i)
(i -1)
H4 = e + H4
(i)
(i -1)
H5 = f + H5
24
(i)
(i -1)
(i -1)
H6 = g + H6
(i)
H7 = h + H7
Sau khi vòng lặp chạy N lần, được kết quả băm của M là :
(N)
H0(N)|| H1(N)|| H2(N)|| H3(N)|| H4(N)|| H5(N)|| H6(N)|| H7
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.
25
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
26
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 :
27
- Ả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ừ
28
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.
29
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
30
Tải về để xem bản đầy đủ
Bạn đang xem 30 trang mẫu của 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 hãy click vào nút Download ở trên.
File đính kèm:
khoa_luan_nghien_cuu_tim_hieu_ve_mat_ma_sinh_trac.pdf