Các thuật toán được sử dụng

Một phần của tài liệu nghiên cứu tìm hiểu về mật mã sinh trắc (Trang 58 - 76)

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: 0, 0, 0 0, 0, 255 0, 255, 0 255, 0, 0 ---> Màu: ---> Đen

---> Xanh dương (blue) ---> Xanh lục (green) ---> Đỏ (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.

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 = N − 1 n = 0 x n e − 2 i N kn Xk = N − 1 n = 0 x n (cos( − 2 i N kn ) + i sin( − 2 i N kn )) 53 ∑ ∑

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 (adsbygoogle = window.adsbygoogle || []).push({});

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.

-

-

-

-

-

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]; }

} (adsbygoogle = window.adsbygoogle || []).push({});

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

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

đưa ra

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

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.

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. (adsbygoogle = window.adsbygoogle || []).push({});

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.

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ã”.

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 :

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.

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

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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,

Một phần của tài liệu nghiên cứu tìm hiểu về mật mã sinh trắc (Trang 58 - 76)