Khóa luận Nghiên cứu tìm hiểu về mật mã sinh trắc

Tài liệu Khóa luận Nghiên cứu tìm hiểu về mật mã sinh trắc: 1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ THANH MINH NGHIÊN CỨU TÌM HIỂU VỀ MẬT MÃ SINH TRẮC KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ THANH MINH NGHIÊN CỨU TÌM HIỂU VỀ MẬT MÃ SINH TRẮC KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Giáo viên hướng dẫn : TS Hồ Văn Hương HÀ NỘI - 2010 3 LỜI CÁM ƠN Em xin chân thành cám ơn toàn thể các thầy cô giáo trong trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã hết lòng dạy dỗ, chỉ bảo, tạo điều kiện tốt cho em trong suốt quá trình học tập cũng như trong thời gian thực hiện khoá luận tốt nghiệp này. Đặc biệt, em gửi lời cám ơn chân thành và sâu sắc tới TS Hồ Văn Hương –Ban cơ yếu chính phủ, người đã trực tiếp quan tâm, tận tình hướng dẫn, giúp đỡ và tạo điều kiện hết sức thuận lợi cho em trong quá trình thực hiện khoá luận. Cảm ơn các bạn đồng khoá và gia...

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

Các file đính kèm theo tài liệu này:

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