Luận văn Nghiên cứu tìm hiểu về mật mã sinh trắc

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 đó.

pdf67 trang | Chia sẻ: lylyngoc | Lượt xem: 2590 | Lượt tải: 3download
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:

  • pdfLUẬN VĂN- NGHIÊN CỨU TÌM HIỂU VỀ MẬT MÃ SINH TRẮC.pdf