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 đó.
67 trang |
Chia sẻ: lylyngoc | Lượt xem: 2684 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu tìm hiểu về mật mã sinh trắc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hể đạ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