MỞ ĐẦU
Với sức mạnh và lợi ích đa dạng của máy tính và các thiết bị di động đi kèm với nó là hệ thống dịch vụ tiện ích cũng gia tăng không ngừng để đáp ứng nhu cầu của con người. Hơn nữa chúng ta biết rằng Internet ngày nay phát triển như vũ bão nên vấn đề tăng cường độ an toàn cho các dịch vụ và các hệ thống khác trên internet sẽ đem lại sự yên tâm cho người sử dụng như việc quản lý dữ liệu bí mật của các tổ chức, công ty hoặc thông tin cá nhân hoặc tài khoản cá nhân ở ngân hàng Làm thế nào để có thể bảo đảm những thông tin đó được an toàn? – Đó là một câu hỏi lớn đối với những người xây dựng hệ thống.
Trong những năm gần đây nó đã được các nước có nền công nghệ phát triển rất quan tâm. Việt Nam cũng là một nước không ngoại trừ có rất nhiều tổ chức và cá nhân quân tâm đến vấn đề nay.
Hơn nữa cùng với sự đi lên của toàn xã hội, ứng dụng công nghệ thông tin trong tất cả các nghành tăng trưởng một cách đáng kể. Nhu cầu đảm bảo an toàn thông tin trên internet, thông tin trên thiết bị di động, tài khoản trong ngân hàng phải được nâng cao.
Trên thế giới hiện nay sử dụng rất nhiều công nghệ để nâng cao an toàn cho các hệ thống người xác thực người dùng. Trong đó công nghệ xác thực người dùng dựa trên ý thức là phổ biến nhất và đã rất quen thuộc đối với người dùng bằng việc sử dụng tên người dùng và mật khẩu.Trong thời gian tới yêu cầu nâng cao độ an toàn cho các hệ thống xác thực người dùng sẽ tiếp tục phát triển mạnh và đa dạng. Đó là việc sử dụng hình ảnh vào xác thực người dùng đó là một xu thế phát triển của thế giới và cũng là một nhu cầu to lớn của nước ta. Vì những lí do đó mà đề tài : “ Sử dụng hình ảnh để xác thực người dùng “ cụ thể là tập trung vào nghiên cứu các hệ thống xác thực người dùng truyền thống cùng với hệ thống xác thực người dùng bằng hình ảnh đã có để xây dựng một hệ thống xác thực người dùng bằng hình ảnh mới.
Với vấn đề đặt ra, khoá luận hướng vào xây dựng và phát triển một hệ thống xác thực người dùng bằng hình ảnh. Đó là hệ thống cho phép người dùng đăng nhập an toàn hơn vào các hệ thống như Linux hoặc ATM và nhiểu hệ thống khác, và hạn chế sự tấn công của những người dùng không mong muốn.
Mục tiêu của khoá luận
ã Nghiên cứu hoạt động của các phương thức xác thực người dùng truyền thống.
ã Nghiên cứu hoạt động của phương thức xác thực người dùng bằng hình ảnh đã có.
ã Tiến tới bước xây dựng hệ thống xác thực người dùng bằng hình ảnh trên Linux hay trên hệ thống ATM,
ã Hệ thống được xây dựng sẽ gần gũi và thân thiên với người dùng.
NỘI DUNG KHOÁ LUẬN :
Khoá luận được chia thành hai phần chính:
Phần A : Cơ sở lý thuyết chung.
Trong phần này có 3 chương :
ã Chương 1. Chương này giới thiệu chung về bảo mật và xác thực, tình hình phát triển của các hệ thống xác thực người dùng đang có trên thế giới và tầm quan trọng của các hệ thống này đối với bí mật của các cá nhân và tập thể.
ã Chương 2. Chương này trình bày khái quát và ưu nhược điểm của các phương thức xác thực phổ biến trên thế giới hiện nay. Các phương thức đó là xác thực thẻ, xác thực dựa theo nhân trắc quan và xác thực dựa trên ý thức.
ã Chương 3. Chương này đưa ra một cách nhìn tổng quan về các hệ thống xác thực người dùng bằng hình ảnh. Bằng cách đưa ra các hệ thống xác thực đang sử dụng trên thế giới : Dejavu, DAS( Draw a secrec ), PassPoint và Passface cùng với những thuận lợi và khó khăn của những hệ thống này.
Phần B : Bài toán “Phát triển hệ thống xác thực người dùng bằng hình ảnh”.
ã Chương 1 . Mô tả hệ thống xác thực người dùng. Chương này sẽ giới thiệu khái quát về hệ thống được xây dựng. Mục đích và ứng dụng của chương trình.
ã Chương 2. Phân tích thiết kế hệ thống.
ã Chương 3. Cài đặt và triển khai hệ thống. Hướng dẫn cách cài đặt và sử dụng chương trình. Kết quả đã đạt được và hướng khai thác hệ thống trên thực tế.
Luận văn được nhóm hai người thực hiện. Các công việc được phân công cho các thành viên trong nhóm :
Nguyễn Văn Quyết : xây dựng chương trình xác thực người dùng trên ứng dụng Web và trên ứng dụng Desktop. Phần này có các công việc sau :
Hiển thị hình ảnh để người dùng học password và mã hóa password của người dùng sau đó lưu vào cơ sở dữ liệu của hệ thống bằng phương thức MD5
Người dùng đăng nhập vào hệ thống.
Lê Mạnh Hùng :
Nghiên cứu các hệ thống xác thực người dùng truyền thống và các hệ thống xác thực người dùng bằng hình ảnh đã và đang phát triển trên thế giới.
Phân tích và thiết kết hệ thống xác thực người dùng bằng hình ảnh do nhóm phát triển.
66 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2343 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Sử dụng hình ảnh để xác thực người dùng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
một vài kí tự đặc biệt…Khi lần đầu đăng kí vào hệ thống người dùng sẽ phải tạo mật khẩu cho mình, mật khẩu mà người dùng đặt là một dãy các kí tự mà người dùng bắt buộc phải nhớ. Mật khẩu của người dùng sẽ được hệ thống mã hoã và lưu vào cơ sở dữ liệu trên máy chủ. Sau đó để đăng nhập vào hệ thống thì người dùng phải nhập tên và mật khẩu. Mật khẩu mà người dùng nhập vào sẽ đuợc mã hoá sau đó so sánh với mật khẩu đã có trong cơ sở dữ liệu ứng với tên của người dùng. Nếu đúng thì người dùng sẽ đăng nhập được vào hệ thống. Tên của người mỗi người dùng là khác nhau. Nếu nhập sai thì người dùng phải đăng nhập lại. Quá trình này sẽ chỉ lập lại một vài lần. Có một số hệ thống còn yêu cầu mật khẩu phải dài trên 6 hoặc 8 kí tự để hệ thống được an toàn hơn, ví dụ như một số hệ thống thư điện tử của Yahoo hay Hotmail...
Nhưng với hệ thống này không cần phải sử dụng các thiết bị vật lý như hệ thống xác thực người dùng dựa theo nhân trắc quan nên rất tiết kiệm về mặt kinh tế. Do đó hệ thống này đã và đang sử dụng rất phổ biến trên thế giới cũng như ở Việt Nam. Và có thể thích hợp với mọi ứng dụng, Web, và mọi thiết bị (PCs, PDA…).
Hình ảnh dưới đây mô tả hệ thống xác thực người dùng dựa theo ý thức:
Hình 6: Hệ thống xác thực người dùng của Yahoo mail.
Đối với những hệ thống mà mật khẩu là dãy kí tự thì rất dễ bị tấn công và dễ dự đoán đuợc mật khẩu của người dùng. Vì mật khẩu mà nguời dùng sử dụng thường được đặt dựa trên các thói quen hằng ngày, các sở thích, hoặc cũng có thể là tên của những nhân vật nổi tiếng mà họ yêu thích… Hơn nữa mật khẩu dạng kí tự thì rất dễ miêu tả, tiết lộ với người khác hay ghi lại được. Các hacker lại có rất nhiều công cụ hoặc có thể dùng từ điển dò mật khẩu để có thể crack được mật khẩu của người dùng… Do đó tài khoản của người dùng sẽ dễ bị người khác tấn công. Để hạn chế được sự tấn công của kẻ xấu thì người dùng phải tạo được mật khẩu có tính an toàn cao, tránh sử dụng các từ quá dễ nhớ để làm mật khẩu như là: millionair, football, darling’s name, số điện thoại, ngày sinh nhật… theo như
các khuyến cáo và phải thay đổi mật khẩu định kì. Nhưng như vậy sẽ khó nhớ đối với người dùng.
Còn đối với việc sử dụng mật khẩu là hình ảnh thì hiện nay mới chỉ được dùng ít chưa được dùng phổ biến trên thế giới. Mặc dù hệ thống xác thực người dùng dựa theo nhân trắc quan có tính an toàn cao hơn, nhưng để triển khai thì hệ thống xác thực nguời dùng dựa theo ý thức dễ dàng hơn, vì đối với hệ thống này không yêu cầu các thiết bị vật lý mà giá cả rất đắt và bất tiện như hệ thống xác thực người dùng dựa theo nhân trắc quan.Do đó lợi ích mà hệ thống này đem lại là lớn và đây cũng là chủ đề chính mà chúng em trình bày trong khoá luận này.
CHUƠNG 3: CÁC HỆ THỐNG XÁC THỰC NGUỜI DÙNG BẰNG HÌNH ẢNH HIỆN NAY
3.1. Tại sao sử dụng Graphical Password lại tốt hơn.
Graphical password là gì? Là một hệ thống xác thực người dùng bằng cách yêu cầu người dùng chọn những hình ảnh làm mật khẩu. Sau đó sẽ chọn lại những hình ảnh đó để đăng nhập vào hệ thống.
Mật khẩu hình ảnh ( Graphical Password ) được Blonder đề xuất [3] vào năm 1996 cho đến nay nó đã được phát triển thành nhiều hệ thống đa dạng khác nhau. Đặc điểm chung của tất cả những hệ thống này đó là khi người dùng đăng nhập hệ thống sẽ đưa ra một hoặc tập hợp các ảnh trên màn hình.Người dùng sẽ phải kích chọn vào các vùng trên ảnh. Nếu vùng hoặc ảnh mà người dùng chọn đúng với mật khẩu mà họ đã tạo trước đó thì đăng nhập thành công. Đối với hệ thống xác thực người dùng bằng hình ảnh, để tạo mật khẩu thì người dùng phải nhớ một tập hợp ảnh trong tập ảnh có sẵn của hệ thống (Passface,Dejavu) hoặc phải nhớ các điểm đã chọn trên một ảnh (Passpoint)... Việc nhớ mật khẩu là dễ dàng đối với người dùng. Bởi vì mật khẩu là ảnh nên so với kí tự là dễ nhớ hơn và cũng khó miêu tả. Do đó một người muôn tấn công vào hệ thống GraphicalPassword là khó dự đoán được như so với các hệ thống xác thực sử dụng mật khẩu là kí tự. Hơn nữa đối với các hệ thống xác thực thông thường các hacker có các công cụ để dò tìm mật khẩu, đối với các hệ thống xác thực người dùng bằng hình ảnh hiện tại vẫn chưa có nhiều phần mềm dò mật khẩu. Giả sử rằng có một người muốn tấn công vào hệ thống của bạn, họ sẽ chọn ngẫu nhiên các ảnh mà hệ thống đưa ra với hi vọng kích đúng số ảnh chọn làm mật khẩu của bạn thì xác xuất để kích đúng là, trong đó n là ảnh mà hệ thống đưa ra còn m là số ảnh mà người dùng phải chọn, nếu n=20 và m=5 thì xác suất sẽ là 1/15504 nó tương đương với 4 số PIN. Hơn thế đối với các hệ thống xác thực người dùng bằng hình ảnh mật khẩu có tính chất đổi mới liên tục tức là có thể thay đổi các hình ảnh, do đó người dùng sẽ không nhàm chán và yêu thích hơn. Vì những lí do này mà sử dụng hệ thống xác thực người dùng bằng hình ảnh sẽ hiệu quả và an toàn hơn so vơi việc sử dụng mật khẩu là xâu kí tự. Nhưng mặt khác thời gian để đăng nhập các hệ thống xác thực bằng hình ảnh lâu hơn so với các hệ thống truyền thống như sử dụng kí là mật khẩu, đặc biệt là hệ thống Passface thì người dùng phải qua nhiều quá trình chọn ảnh thì mới có thể đăng nhập vào hệ thống. Dưới đây là hình ảnh của một số hệ thống xác thực người dùng bằng hình ảnh:
Hình 7: Hệ thống xác thực người dùng bằng hình ảnh.
Chương này sẽ trình bày chi tiết về một số hệ thống thống sử dụng phương thức xác thực người dùng bằng hình ảnh đó là : Hệ thống Dejavu, hệ thống Draw a scret (DAS), Passface và Passpoint… Qua đó đưa ra ưu, nhược điểm cũng như ứng dụng của hệ thống thống trong thực tế.
3.2. Một số hệ thống xác thực người dùng bằng hình ảnh.
3.2.1. Dejavu.
Đây là một hệ thống xác thực người dùng bằng hình ảnh được Rachna và Adrian Perriq [4],[5] đưa ra. Cho đến nay Dejavu được công nhận là một hệ thống rất thực tế và dễ sử dụng. Có thể nói đây là hệ thống xác thực người dùng bằng hình được sử dụng phổ biến nhất. Password của người dùng rất dễ hình dung nhưng lại không thể ghi lại được hay nói cách khác là khó miêu tả với người khác. Dejavu được sử dụng rất nhiều trên PDA, PC...
Để đăng nhập vào hệ thống Dejavu thì người dùng bắt buộc phải học một danh sách gồm p hình ảnh gọi là images portfilio (là những hình ảnh khó miêu tả). Khi đăng nhập hệ thống sẽ đưa ra n hình ảnh và người dùng phải chọn m hình ảnh( trong đó tập m hình ảnh là tập con của p hình ảnh đã học ban đầu). Các ảnh mà hệ thống sinh ra là ảnh màu rất đặc biệt không phải là các ảnh phong cảnh, vật, hay là gương mặt người sẽ được giới thiệu trong các hệ thống xác thực bằng hình ảnh khác ở phần sau. Sử dụng hệ thống lần đầu tiên người dùng sẽ phải đăng kí và học một số ảnh tuỳ theo người quản trị đặt ra.Với giao diện rất thiện và dễ sử dụng của hệ thống và sử dụng hệ thống Random Art của Adrej Bouer để sinh ra các ảnh ngẫu nhiên. Ảnh ngẫu nhiên được sinh ra từ hệ thống Random Art:
Hình 8: Ảnh được sinh ra từ hệ thống Random Art.
Hệ thống Dejavu đuợc mô tả qua hình vẽ dưới đây:
Hinh 8: Giao diện của hệ thống xác thực người dùng Dejavu.
Random Art là chương trình sinh ra các công thức toán học một cách ngẫu nhiên . Các công thức này sẽ định nghĩa màu cho mỗi pixel trên ảnh. Mỗi hình ảnh được sinh ra từ Random Art có tính thẩm mĩ cao. Đặc biệt những ảnh này khó miêu tả bởi vì chúng không phải là ảnh phong cảnh hay ảnh
những nhân vật nổi tiếng…
Sau đây là thuật toán Randon Art dùng để sinh ra hình ảnh :
algorithm RandomArt(G; i; d)
input: grammar G = [r1,...,rn]
initial rule i
depth d
output: expression E
begin
(1) Suppose ri = [(a1,p1),...,(ak; pk)].
(2) If d <= 0 then let a = a1 and goto step (4).
(3) Let a be one of (a1,...,ak), picking ai with probability pi.
(4) If a is a terminal rule let E = a and go to step (6).
(5) Suppose a = f(ri1,..,rim) where m is the arity of f.
While d >= 0 and rnd() <= 0.5 do d : = d-1.
for each j=1,...,m let Ej=RandomArt(G,Ij,d-1).
let E=f(E1,...,Em).
(6)return E.
end
Về việc hệ thống Dejavu lưu trữ các hình ảnh : Mỗi hình ảnh là một seed, hệ thống chỉ cần lưu seed chứ không cần phải lưu toàn bộ hình ảnh (seed is 8 byte long) và Portfilio được tách ra và lưu trên nhiều server, khi người dùng login nó sẽ được gộp lại. Trong hệ thống Dejavu thì có khoảng 10.000 ảnh có sẵn đuợc sinh ra từ Random Art.
Mỗi lần người dùng đăng nhập vào hệ thống sẽ đưa ra một danh sách các ảnh trong đó gồm có : Porfilio images (là những ảnh mà người dùng đã học) và Decoy images (là những ảnh bẫy). Nếu người dùng chọn đúng các ảnh đã học thì đăng nhập thành công. Nếu chọn sai thì người dùng sẽ phải đăng nhập lại với danh sách các ảnh mới đã thay đổi. Sau một vài lần đăng nhập không thành công hệ thống sẽ từ chối việc đăng nhập tiếp. Xét tính an toàn của hệ thống Dejavu giả sử một người cố tình tấn công vào hệ thống thì khả năng sẽ là : 1/mn trong đó m là số lượng ảnh của người dùng đã học,n là số lượng ảnh của hệ thống đưa ra. Theo như kết quả của những cuộc kiểm tra tính khả thi của hệ thống : 90% người đăng nhập thành công khi sử dụng Dejavu so với phương thức sử dụng mật khẩu kí tự hay sử dụng hệ thống xác thực bằng thẻ là 70%. Nhưng nhược điểm của Dejavu là thời gian đăng nhập so với các phương pháp truyền thống là lâu hơn và không gian để hiển thị các ảnh làm mật khẩu cũng lớn hơn so với các không gian nhập mật khẩu của các hệ thống xác thực truyền thống..
3.2.2. Draw A Secret (DAS).
Hệ thống đuợc K.Reiter và đồng nghiệp cùng nghiên cứu và phát triển [6]. Đối với hệ thống DAS thì mật khẩu sử dụng là những hình ảnh đơn giản được vẽ trên một lưới 2D. Hệ thống DAS được thiết kế chủ yếu cho PDA, bởi vì các thiết bị này sử dụng bút điện tử rất tiện cho việc vẽ các ảnh đơn giản. Nhưng hệ thống này cũng có thể dùng trên PC. Hệ thống sẽ yêu cầu người dùng vẽ một ảnh mẫu trên một lưới 2D để tạo mật khẩu. Dưới đây là một ví dụ về mât khẩu của hệ thống DAS, Jermyn là người đã đưa ra việc vẽ một hình ảnh trên một luới hai chiều 5x5 để làm mật khẩu. So với mật khẩu là chuỗi các kí tự thì không gian để nhập mật khẩu của hệ thống DAS là lớn hơn vì hình ảnh vẽ ra phải đủ lớn thì nguời dùng mới dễ nhớ. Hình ảnh dưới đây là một ví dụ về hệ thống DAS:
Hình 9: Hệ thống sử dụng công nghệ Draw-a-Secret của Jermyn.
Hệ thống DAS sử dụng công nghệ “Passdoodle”đó là những hình vẽ nguệch ngoạc được vẽ trên một lưới 2 chiều GxG. Mật khẩu chính là hình ảnh mà người dùng vẽ tính từ khi đặt bút xuống cho đến lúc kết thúc và được lưu vào thiết bị bằng cách sử dụng hàm băm. Trong quá trình đăng nhập người dùng sẽ phải vẽ lại ảnh trên lưới. Hình ảnh vẽ sẽ sinh ra một hàm băm. Sau đó hệ thống sẽ so sánh hàm băm có trong cơ sở dữ liệu để xác thực người dùng. Nếu đúng thì người dùng đăng nhập thành công còn nếu ảnh vẽ vào không đúng thì hệ thống sẽ bắt người dùng đăng nhập lại. Sau một vài lần hệ thống sẽ từ chối quá trình đăng nhập. Đối với hệ thống DAS thì có tính an toàn cao vì mật khẩu là do người dùng tự định nghĩa bằng những hình ảnh tự vẽ. So với mật khẩu là các kí tự thì mật khẩu của hệ thống DAS là dễ nhớ hơn. Đối với dạng mật khẩu thông thường thì các hacker có thể sử dụng các công cụ hay phần mềm để dò ra mật khẩu người dùng. Nhưng đối với hệ thống DAS mật khẩu là do người dùng nghĩ và vẽ ra, nó có thể chỉ có nghĩa với người dùng mà bất cứ ai khác cũng không hiểu được do đó việc đánh cắp mật khẩu của người dùng là rất khó. Giả sử chúng ta xét mật khẩu nhập vào trên một luới 2D 5x5 như hình vẽ dưới đây :
Hình 10: Ví dụ về mật khẩu của hệ thống DAS.
Gọi L là độ dài của mật khẩu trong hệ thống xác thực DAS thì L chính là tổng số các ô trên lưới mà người dùng vẽ mật khẩu. Mỗi ô được xem như là toạ độ hai chiều (x,y) Є [1…G] x [1…G]. Thì theo như kết quả thu được thì với L=12 và được vẽ trên lưới 5x5số mật khẩu sẽ là hơn hẳn so với mật khẩu dạng chuỗi kí tự với độ dài là của mật khẩu là 8.
Vì hệ thống thiết kế chủ yếu cho các thiết bị di động yêu cầu phải có bút và màn hình cảm ứng nên phạm vi sử dụng của hệ thống cũng không lớn và cũng chưa phổ biến trên thế giới cũng như ở nước ta. Tuy nhiên hệ thống DAS cũng được sử dụng trên các PC thay vì vẽ hình ảnh để làm mật khẩu thì người dùng sẽ dùng chuột để tạo các chữ kí. Mật khẩu được tính từ khi nguời dùng đạt chuột vẽ cho đến khi kết thúc. Cũng tương tự như hình ảnh chữ ký cũng được lưu lại bằng cách sử dụng hàm băm. Nali và Thorpe đã xây dựng hệ thống xác thực người dùng DAS trên PC. Hệ thống sẽ yêu cầu người dùng tạo chữ ký làm mật khẩu. Khi đăng nhập vào hệ thống người dùng sẽ phải dùng chuột vẽ lại chữ ký đó để đăng nhập với một dung sai do hệ thống đặt ra. Mật khẩu mà người dùng vẽ sẽ được mã hoã bằng hàm băm sau đó so sánh với mật khẩu đã được lưu trong cơ sở dữ liêu của hệ thống. Nếu đúng người dùng sẽ đăng nhập vào hệ thống thành công. Hệ thống đuợc mô tả bằng hình vẽ dưới đây:
Hinh 11: Chữ ký đuợc vẽ bằng chuột.
Hoặc hệ thống DAS xác thực người dùng trên PC mật khẩu cũng có thể là các điểm được vẽ trên lưới, nhưng nếu mật khẩu là các điểm thì độ an toàn của hệ thống không cao. Vì vậy mật khẩu là các điểm vẫn chưa được dùng phổ biến. Nó được mô tả bằng hình vẽ dưới đây:
Hình 12: Ví dụ về mật khẩu là các điểm được vẽ trên lưới.
Nhưng trong một tương lai gần khi tất cả các chức năng được tích hợp vào các thiết bị di động đặc biệt là trên điện thoại di động thì hệ thống DAS sẽ đáp ứng đuợc yêu cầu của người dùng về yêu cầu an toàn của hệ thống.
3.2.3. Passface.
Passface là công nghệ được Deal Use Coporation đưa ra và phát triển [7],[8],[9]. Hệ thống Passface được miêu tả cụ thể như sau: Hệ thống sẽ yêu cầu người dùng học 4 hình ảnh là gương mặt trong tập các hình ảnh có sẵn trong cơ sở dữ liệu và 4 hình ảnh đó chính là password của người dùng. Khi đăng nhập, hệ thống sẽ đưa cho người dùng một lưới 3x3 gồm 9 hình ảnh (là những gương mặt). Trong 9 ảnh đó chỉ có một ảnh mà người dùng đã học. Người dùng sẽ phải chọn ảnh đó. Quá trình này sẽ lặp lại 4 lần cho đến khi người dùng chọn hết ảnh đã học (Người dùng có thể click vào bất cứ vị trí nào trên ảnh mà mình chọn). Sau khi chọn hết ảnh người dùng sẽ đăng nhập vào hệ thống. Đây là một số hình ảnh của hệ thống Passface :
Hình 13: Hệ thống Passface.
Hình ảnh mà hệ thống Passface sử dụng không chỉ là những gương mặt mà còn sử dụng rất nhiều hình ảnh rất thẩm mĩ khác :
Hình 14: Ví dụ về hệ thống Passface.
Nếu chọn sai ảnh thì hệ thống sẽ lặp lại quá trình đăng nhập một vài lần.
Hệ thống xác thực người dùng Passface SDK dươi đây sẽ cho chúng ta hiểu rõ hơn về hệ thống xác thực người dùng bằng hình ảnh. Hệ thống này xác thực người dùng trên các ứng dụng web. Hình ảnh sau mô tả cấu trúc hệ thống:
Hinh 15: Cấu trúc hệ thống Passface SDK.
Passfaceclient là một giao diện người dùng để người dùng chọn những hình ảnh, Database là thư viện ảnh của hệ thống Passface lưu trữ các file ảnh có định dạng .JPG. Thay vì phải nhỡ mật khẩu chữ thông thường thì người dùng phải nhớ được những gương mặt mà mình đã chọn. Đối với những người dùng mới thì hệ thống sẽ yêu cầu người dùng đăng kí và học ảnh để làm mật khẩu, số ảnh mà người dùng phải học phụ thuộc vào từng hệ thống thường là trong khoảng 3 đến 7 ảnh. Nếu số ảnh người dùng học là 3 ảnh thì khi đăng nhập hệ thống sẽ đưa ra một luới có 9 ảnh trong đó có một ảnh người dùng đã học và 8 ảnh bẫy. Quá trình này sẽ lặp lại 3 lần mỗi lần nguời dùng phải chọn một ảnh mà mình đã học. Tất cả những ảnh bao gồm mật khẩu của người dùng và ảnh bẫy đều được lưu trên máy chủ (application server). Dưới đây là một số skin khi đăng nhập của hệ thống Passface SDK:
Hình 16: Quá trình đăng nhập của hệ thống Passface SDK.
Hệ thống Passface sử dụng hình ảnh là chủ yếu là gương mặt người hoặc
một số hình ảnh đặc biệt khác nên so với các hệ thống Graphical Password khác dễ nhớ đối với người dùng. Những hệ thống mà Passface sử dụng được lấy từ địa chỉ : Do các ảnh là dễ nhớ nên cũng rất dễ bị lộ và dễ bị tấn công so với các hệ thống đã nói ở trên. Vì vậy để an toàn thì Passface khuyến cáo với người dùng là không nên sử dụng ảnh là guơng mặt của những người nổi tiếng mà mình yêu thích.
3.2.4. Passpoint.
Passpoint là công nghệ được Blonder phát triển. Đây là một hệ thống xác thực người dùng đặc biệt được đánh giá có độ an toàn cao. Hệ thống Passpoint được mô tả như sau : Hệ thống sẽ đưa ra một ảnh có sẵn trong cơ sở dữ liệu có độ phân giải lớn rõ nét. Người dùng sẽ click vào một số toạ độ trên ảnh để tạo password cho mình những toạ độ này do người dùng lựa chọn bất kì trên ảnh mẫu sao cho dễ nhớ nhất. Password của người dùng chính là toạ độ mà người dùng đã click trên ảnh sau đó hệ thống sẽ lưu password với một dụng sai do hệ thống đặt ra. Dung sai càng bé thì độ an toàn càng của hệ thống càng cao nhưng lại càng khó đối với người dùng vì khi đó yêu cầu tính chính xác cao. Hệ thống lưu mật khẩu của người dùng bằng cách sử dụng hàm băm. Khi đăng nhập vào hệ thống yêu cầu người dùng kích vào các vị đã chọn với sai số cho phép. Mật khẩu mà người dùng kích trên ảnh cũng được chương trình chuyển thành dạng hàm băm, sau đó sẽ được so sánh với hàm băm đã lưu. Nếu chọn đúng thì hệ thống đăng nhập thành công. Nếu sai sẽ quay trở lại quá trình đăng nhập. Quá trình này chỉ lặp lại một vài lần. Những hình ảnh mà hệ thống Passpoit sử dụng cho người dùng kích chọn toạ độ là những hình ảnh có độ phân giải cao, trên ảnh có nhiều đối tuợng có thể là người , hay là các đồ vật để khi người dùng dễ dàng nhớ những vị trí mà mình đã kích thông qua những đặc điểm này. Ví dụ như hình ảnh được đưa ra dưới đây được sử dụng để người dùng kích chon mật khẩu :
Hình 17: Giao diện của hệ thống Passpoint.
Hình 18: Người dùng chọn các điểm để đăng nhập.
Hình 19: Hình ảnh dùng trong hệ thống Passpoint của Wiedenbeck.
Để đánh giá mức độ an toàn của hể thống Passpoint so với các hệ thống khác đặc biệt là các hệ thống xác thực truyền thống. Ta so sánh hệ thống Passpoint và hệ thống Textpassword. Giả sử trong textpass độ dài của password là 8-64 ký tự thì số password có thể là :
còn trong Passpoint nếu hình ảnh có độ phân giải 1024x752 với dung sai 20x20 pixel và 5 lần click thì số password có thể là : . Do đó hệ thống Passpoint có độ an toàn cao và đặc biệt hơn cả là người dùng không thể trao đổi mật khẩu với người khác vì nó là toạ độ nên không tốn không gian lưu trữ và trước khi lưu trữ trên cơ sở dữ liệu của hệ thống thì các toạ độ này còn được mã hoá bằng các thuật toán như là DES, MD5.
Một số hệ thống yêu cầu người dùng kích đúng thư tự mà người dùng đã kích tạo mật khẩu, do các điểm trên ảnh là nhỏ. Do đó có nhược điểm là khó nhớ đối với nguời dùng. Hệ thống Passpoin vẫn chưa hỗ trợ được người dùng trong trường hợp người dùng không thể nhớ được các toạ độ mà mình đã kích chọn làm mật khẩu, do đó đây cũng là một hanh chế của hệ thống.
PHẦN B . BÀI TOÁN XÁC THỰC NGƯỜI DÙNG BẰNG HÌNH ẢNH.
CHƯƠNG 4: MÔ TẢ BÀI TOÁN
4.1. Giới thiệu.
Chương này mô tả chi tiết về hệ thống xác thực người dùng bằng hình ảnh dựa vào những hệ thống đã tồn tại và hệ thống đang phát triển đã đưa ra ở phần trên. Chương 4 sẽ mô tả chi tiết hệ thống xác thực người dùng đang xây dựng trong thực tế cụ thể là xác thực người dùng bằng hình ảnh khi đăng nhậptrên website và mô hình chạy Demo mô tả nguyên tắc hoạt động của hệ thống trên các ứng dụng. Các yêu cầu của hệ thống, cũng như yêu cầu về kỹ thuật về phần cứng và phần mềm.
4.2. Mô tả khái quát hệ thống.
Hệ thống xác thực người dùng bằng hình ảnh đã được sử dụng trên thế giới trong vài năm gấn đây, còn ở Việt Nam hệ thống này vẫn chưa được sử dụng phổ biến. Như đã giới thiệu ở trên hệ thống xác thực người dùng bằng hình ảnh thay vì yêu cầu người dùng nhập mật khẩu bằng các kí tự thì hệ thống sẽ yêu cầu người dùng kích chọn ảnh hoặc các điểm trên ảnh làm mật khẩu để đăng nhập. Ta có thể xem bức tranh toàn cảnh hệ thống xác thực người dùng trong hình vẽ dưới:
Hình 20: Quá trình xác thực người dùng.
Hệ thống xác thực người dùng cấu hình bao gồm những phần chính :
Một máy chủ lưu thông tin chi tiết của người dùng như là: Thông tin cá nhân của người dùng khi đăng kí hệ thống..
Các client là user interface để người dùng chọn ảnh.
Thư viện các hình ảnh chính là cơ sở dữ liệu của hệ thống. Cơ sở dữ liệu này chứa ảnh bẫy và ảnh mà người dùng chọn làm mật khẩu, các ảnh này thường có dịnh dạng .GIF hoặc .JPG.
Với sự phát triển như vũ bão và xâm nhập vào cuộc sống con người mạnh mẽ của internet ở Việt Nam hiện nay. Để đáp ứng được nhu cầu an toàn cho những thông tin cá nhân, nguồn tài nguyên chia sẻ… của người dùng trên internet, chính vì lý do này ý tưởng “Phát triển hệ thống xác thực người dùng bằng hình ảnh “ ra đời.
Loại hệ thống xác thực người dùng bằng hình ảnh :
Hệ thống sẽ đưa ra một danh sách các ảnh nhỏ cho nguời dùng chọn, người dùng sẽ phải chọn một số ảnh mà người dùng đã học trong số các ảnh đó để đăng nhập vào hệ thống.
Hệ thống sẽ cho người dùng chọn một ảnh trong một tập ảnh, sau đó hệ thống sẽ hiển thị ảnh đó với độ phân giải cao để người dùng kích chọn vào các toạ độ mà người dùng đã học trước đó trên ảnh để đăng nhập vào hệ thống.
Công nghệ sử dụng:
Ngôn ngữ lập trình: Hệ thống xác thực người dùng bằng hình ảnh được xây dựng bằng kỹ thuật và ngôn ngữ lập trình hiện đại .NET.
Hệ quản trị cơ sở dữ liệu: Yêu cầu hệ quản trị cơ sở dữ liệu phổ biến, với năng lực đảm bảo độ tin cậy tối thiểu. Cơ sở dữ liệu dùng trong hệ thống: SQL server 2000. Trong tương lai các hệ quản trị dữ liệu như Oracle sẽ được cân nhắc chính khi hệ thống đạt được các điều kiện sau:
Ổn định cao về mô hình phát triển.
Tốc độ phát triển cơ sở dữ liệu tăng nhanh.
Số lượng người đăng nhập vào hệ thống tăng nhanh và lớn.
Trong thời gian thử nghiệm chúng tôi tập trung mô phỏng mô hình kết nối của hệ thống xác thực người dùng truy suất vào cơ sơ dữ liệu trên SQL server 2000.
Máy thử nghiệm trên web:
Hệ điều hành : Window server 2003.
Ram từ 512Mb trở lên, chip 2.06 Ghz.
Máy thử nghiệm trên Application:
Hệ điều hành : Window XP professional.
Ram từ 128 Mb trở lên, chip 1,7 Ghz.
4.3. Kết luận.
Hệ thống mới chỉ được chạy thử nghiệm chưa được sử dụng một cách rộng rãi. Và đang hoàn thiện để đưa vào khai thác. Từ mô hình này là cơ sở để chúng em sẽ xây dựng những phần mềm sử dụng để xác thực người dùng trên Web cũng như trên các ứng dụng sử dụng trên PC trong tuơng lai gần.
CHƯƠNG 5: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH ỨNG DỤNG.
5.1 Giới thiệu.
Sau khi nghiên cứu hoạt động của các hệ thống xác thực người dùng bằng hình ảnh(Chương 3), chúng ta đi xây dựng ứng dụng. Ứng dụng của chúng ta bao gồm các phần sau :
Xây dựng hệ thống xác thực người dùng trên ứng dụng Web, hệ thống xác thực có chức năng sau:
Người dùng là một thành viên của Website để có quyền của member thì người dùng phải đăng nhập vào hệ thống bằng hệ thống xác thực người dùng bằng hình ảnh.
Hệ thống xác thực sẽ đưa ra một danh sách các ảnh cho người dùng chọn sau khi chọn đúng người dùng sẽ đăng nhập vào h thống.
Xây dựng hệ thống xác thực người dùng trên ứng dụng Desktop, hệ thống này sử dụng trên các ứng dụng trên máy Desktop bao gồm các chức năng sau:
Để sử dụng các ứng dụng trên máy Desktop thì người dùng phải đăng nhập, chương trình sẽ xác thực người dùng, nếu đúng người dùng sẽ có quyền sử dụng các chương trình trên máy.
Hệ thống đưa ra một ảnh có độ phân giải lớn, người dùng sẽ phải kích chọn các điểm trên ảnh, Nếu chọn đúng các điểm mà người dùng đã học mật khẩu thì đăng nhập thành công.
5.2. Hệ thống xác thực.
5.2.1. Yêu cầu đối với hệ thống.
Hệ thống xác thực trên ứng dụng Destop dựa trên việc nhận dạng toạ độ của những điểm do người dùng kích trên ảnh, còn đối với hệ thống xác thực trên Website thì các ảnh trong một danh sách các ảnh mà hệ thống đưa ra. Nhưng quá trình này phải dễ dàng cho người sử dụng và cũng phải tin cậy.
Hệ thống cũng phải ngăn ngừa người dùng chọn một mật khẩu không đủ mạnh, để nâng cao tính an toàn cho hệ thống.
Mật khẩu của hệ thống phải đạt được yêu cầu là khó trao đổi giữa các người dùng.
5.2.2. Các quá trình của hệ thống.
Một số quá trình của hệ thống xác thực người dùng:
Quá trình tạo người dùng mới:
Người dùng sẽ phải nhập thông tin cá nhân của mình.
Người dùng sẽ phải chọn mật khẩu từ hình ảnh do hệ thống đưa ra. Bằng cách chọn một số ảnh làm mật khẩu đối với hệ thống xác thực trên Web, hay chọn toạ độ trên một ảnh làm mật khẩu đối với hệ thống xác thực trên các ứng dụng Desktop.
Quá trình đăng nhập:
Người dùng nhập lại mật khẩu mình đã đăng kí bằng các hình ảnh hệ thống đưa ra.
Chương trình phía máy khách chuyển các thông tin đăng nhập của người dùng về cho phía máy chủ xử lý.
Máy chủ so sánh thông tin nhận được từ máy khách để xác thực người dùng sau đó trả lại kết quả cho phía máy khách. Nếu đúng thì người dùng đăng nhập thành công. Hệ thống sẽ từ chối quá trình đăng nhập sau một vài lần đăng nhập không thành công của người dùng.
Trợ giúp người dùng:
Trong trường hợp người dùng quên mật khẩu, hệ thống sẽ trợ giúp người dùng nhớ lại mật khẩu bằng những thông tin mà người dùng chỉ ra từ quá trình đăng kí.
5.2.3. Mô tả bài toán xác thực người dùng.
Mô hình tổng quát của quá trình xác thực người dùng:
Hình 21: Mô hình tổng quá của hệ thống.
Hệ thống trong bài toán mô tả phương thức và trình tự mà một hệ thống xác thực người dùng. Hệ thốn sẽ đưa ra cho nguời dùng hình ảnh để nguời dùng sẽ nhập mật khẩu để đăng nhập. Hệ thống sẽ mã hoá mật khẩu của người dùng bằng thuật toán MD5, sau đó sẽ so sánh với mật khẩu mà người dùng đã học đã được mã hoá và lưu vào trong cơ sở dữ liệu của hệ thống. Nếu sai thì gửi help cho người dùng thông báo cho người dùng biết và yêu cầu người dùng nhập lại. Nếu đúng thì hệ thống cũng gửi cho người dùng thông báo đã nhập đúng mật khẩu và đăng nhập thành công. Hệ thống được chạy Demo trên Website và trên máy Desktop và từ ứng dụng này sẽ được mở rộng ra vô số các ứng dụng hay bất cứ hệ thống nào trên internet trong tương lai không xa.
Khách hàng có thể khai thác hệ thống như sau:
Khách hàng sử dụng hệ thống đăng nhập người dùng vào việc xác thực người dùng trên các ứng dụng thương mại điện tử trên internet, các ứng dụng trên Desktop PC, hay xác thực tài khoản của người dùng tại ngân hàng…
Sau quá trình đăng nhập , người dùng sẽ nhận được kết quả phản hồi từ hệ thống là quá trình có đăng nhập thành công hay không.
Việc so sánh mật khẩu của người dùng nhập vào với mật khẩu mà người dùng đã chọn trong quá trình đăng nhập sẽ được hệ thống tự động xử lý. Các yêu cầu đã được lập trình đầy đủ sẽ được xử lý hoàn toàn tự động và đáp ứng ngay.
5.2.4. Thiết kế cơ sở dữ liệu.
Với hệ thống thực thì cơ sở dữ liệu mà hệ thống truy cập vào và lấy dữ liệu ra nằm trên máy chủ cở sở dữ liệu, mật khẩu người dùng nhập vào sẽ được so sánh với mật khẩu mà người dùng đã học được lấy ra từ cơ sở dữ liệu của máy chủ. Việc cập nhật hình ảnh và thông tin trong cơ sở dữ liệu là do người quản trị hệ thống của Website cập nhật, còn người dùng chỉ có thể cập nhật được mật khẩu của mình trong cơ sở dữ liệu trong hệ thống sau mỗi lần thay đổi mật khẩu hay thông tin của mình.
Trong hệ thống xác thực người dùng mà chúng em xây dựng Application server và Database server đều nằm cùng trên một máy chủ.
*Cơ sở dữ liệu mô phỏng cho hệ thống xác thực người dùng trên Web:
Bảng User lưu danh sách và thông tin của người dùng tương ứng với mã người dùng.
STT
Tên Trường
Kiểu
Mô tả
1
Acount_ID
Int
Mã người dùng
2
Acount_Name
Text
Tên đăng nhập
3
FistName
Text
Tên đệm
4
LastName
Text
Tên người dùng
5
Gender
Bit
Giới tính
6
Age
Int
Tuổi
7
Email
Text
Email của người dùng
8
Address
Text
Địa chỉ người dùng
9
City_ID
Int
Mã thành phố
10
Country_ID
Int
Mã quốc gia
11
Phone
Text
Số điện thoại
12
Fax
Text
Số fax
13
Postcode
Text
Mã bưu điện
14
Note
Text
Ghi chú
15
UserPassWord
text
Mật khẩu người dùng
Bảng Country lưu tên quốc gia tương ứng với mã quốc gia.
STT
Tên Trường
Kiểu
Mô tả
1
Country_ID
Int
Mã quốc gia
2
Country_Name
Text
Tên quốc gia
Bảng City lưu mã thành phố và tên thành phố ứng với mỗi mã quốc gia.
STT
Tên Trường
Kiểu
Mô tả
1
City_ID
Int
Mã thành phố
2
City_Name
Text
Tên thành phố
3
Country_ID
Int
Mã quốc gia
Bảng Images lưu tất cả các ảnh của hệ thống.
STT
Tên Trường
Kiểu
Mô tả
1
Image_ID
Int
Mã ảnh
2
Image_Url
Text
Đường dẫn ảnh
3
Signature
Text
Vì trong hệ thống xác thực người dùng không phải lưu các ảnh mà chỉ lưu đường dẫn các ảnh và thông tin của người dùng đều dưới dạng text, nên các trường trong cơ sở dữ liệu đặt là kiểu text để không phải chuyển kiểu khi thực hiện chương trình.
*Cơ sở dữ liệu mô phỏng cho hệ thống xác thực người dùng trên các ứng dụng trên máy Desktop:
Các bảng trong cơ sở dữ liệu của hệ thống xác thực người đối với các ứng dụng trên máy Desktop sẽ giống hệt các bảng trong hệ thống xác thực người dùng trên Web. Nhưng có hai đặc điểm khác nhau là:
Số hình ảnh lưu trong cơ sở dữ liệu của hệ thống xác thực trên Web thì nhiều hơn so với hệ thống xác thực trên các ứng dụng của Desktop. Hơn nữa những vì khi đăng nhập trên Web thì người dùng phải chọn một số ảnh trong số danh sách các ảnh mà hệ thống đưa ra, còn đối với các ứng dụng trên Desktop thì người dùng phải chọn các toạ độ trên một ảnh lớn. Vì vậy các ảnh trên sử dụng trên hệ thống xác thực trên các ứng dụng của Desktop là lớn và có độ phân giải cao hơn rất nhiều.
Mật khẩu và hệ thống lưu vào trong cơ sở dữ liệu đối với ứng dụng Web là đường dẫn của các ảnh mà người dùng chọn. Còn đối với hệ thống xác thực trên các ứng dụng của Desktop là toạ độ của các điểm mà người dùng kích đã đuợc mã hoá. Đó là sự khác biệt giữa hai hệ thống trên.
5.2.5. Mô tả các module của chương trình nguồn.
Chương trình gồm 3 phần:
Database server: SQL SERVER 2000, lưu thư viện ảnh và thông tin của người dùng người dùng.
Application Server: Bao gồm các lớp chịu trách nhiệm tiếp nhận yêu cầu từ Application Client, thao tác với Database, xử lý kết quả trả lại cho Application Client. Cài đặt các lớp:
Lớp Common: Lấy thông tin cấu hình từ file cấu hình.
namespace ImageAuthentication.Library
{
public class Common
{
public static AccountInfo curAccount = null;
public static string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager
.AppSettings["ConnectionString"];
}
}
public static int GRID
{
get
{
if (System.Configuration.ConfigurationManager
.AppSettings["Grid"] != null)
return Convert.ToInt32(System.Configuration
.ConfigurationManager.AppSettings["Grid"]);
else
return 50;
}
}
}
}
Lớp AccountInfo: Là lớp tiện ích, lưu thông tin về người dùng.
namespace ImageAuthentication.Library.Data
{
public class AccountInfo
{
private int _accountID;
public int AccountID
{
get { return _accountID; }
set { _accountID = value; }
}
private string _account;
public string Account
{
get { return _account; }
set { _account = value; }
}
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
private string _lastName;
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
private string _title;
public string Title
{
get { return _title; }
set { _title = value; }
}
private bool _gender;
public bool Gender
{
get { return _gender; }
set { _gender = value; }
}
private DateTime _birthday;
public DateTime Birthday
{
get { return _birthday; }
set { _birthday = value; }
}
private string _address;
public string Address
{
get { return _address; }
set { _address = value; }
}
private int _city;
public int City
{
get { return _city; }
set { _city = value; }
}
private string _password;
public string Password
{
get { return _password; }
set { _password = value; }
}
}
}
Lớp ImageInfo: Là lớp tiện ích, lưu thông tin của một ảnh trong cơ sở dữ liệu ảnh
using System;
namespace ImageAuthentication.Library.Data
{
public class ImageInfo
{
private int _imageID;
public int ImageID
{
get { return _imageID; }
set { _imageID = value; }
}
private string _friendlyName;
public string FriendlyName
{
get { return _friendlyName; }
set { _friendlyName = value; }
}
private byte[] _realImage;
public byte[] RealImage
{
get { return _realImage; }
set { _realImage = value; }
}
}
}
Lớp AccountDB: Là lớp tiện ích, có nhiệm vụ tiếp nhận yêu cầu về người dùng như đăng nhập, tạo người dùng mới,… từ Application Client, kết nối và thao tác với Database để xử lý và trả lại kết quả cho Application Client
using System;
using System.Data;
using System.Data.SqlClient;
using ImageAuthentication.Library.Data;
namespace ImageAuthentication.Library.DataAccess
{
public class AccountDB
{
public static DataTable GetAll()
{
DataTable retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Accounts_GetAll", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
try
{
retVal = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(dbCmd);
da.Fill(retVal);
}
finally
{
dbConn.Close();
}
return retVal;
}
public static void Delete(int _accountID)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Accounts_Delete", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters.AddWithValue("@AccountID", _accountID);
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
finally
{
dbConn.Close();
}
}
public static int Insert(AccountInfo _accountInfo)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Accounts_Insert", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters
.AddWithValue("@Account", _accountInfo.Account);
dbCmd.Parameters
.AddWithValue("@FirstName", _accountInfo.FirstName);
dbCmd.Parameters
.AddWithValue("@LastName", _accountInfo.LastName);
dbCmd.Parameters
.AddWithValue("@Title", _accountInfo.Title);
dbCmd.Parameters
.AddWithValue("@Gender", _accountInfo.Gender);
dbCmd.Parameters
.AddWithValue("@Birthday", _accountInfo.Birthday);
dbCmd.Parameters
.AddWithValue("@Address", _accountInfo.Address);
dbCmd.Parameters
.AddWithValue("@City", _accountInfo.City);
dbCmd.Parameters
.AddWithValue("@Password", _accountInfo.Password);
dbCmd.Parameters
.AddWithValue("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
return (int)dbCmd.Parameters["@RETURN_VALUE"].Value;
}
finally
{
dbConn.Close();
}
}
public static AccountInfo Login(
string _account, string _password)
{
AccountInfo retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
string sql = "SELECT * FROM Accounts WHERE Account = @Account AND Password = @Password";
SqlCommand dbCmd = new SqlCommand(sql, dbConn);
dbCmd.CommandType = CommandType.Text;
dbCmd.Parameters.AddWithValue("@Account", _account);
dbCmd.Parameters.AddWithValue("@Password", _password);
try
{
dbConn.Open();
SqlDataReader dr = dbCmd.ExecuteReader();
if (dr.Read())
{
retVal = new AccountInfo();
retVal
.AccountID = Convert.ToInt32(dr["AccountID"]);
retVal.Account = Convert.ToString(dr["Account"]);
retVal
.FirstName = Convert.ToString(dr["FirstName"]);
retVal.LastName = Convert.ToString(dr["LastName"]);
retVal.Title = Convert.ToString(dr["Title"]);
retVal.Gender = Convert.ToBoolean(dr["Gender"]);
retVal
.Birthday = Convert.ToDateTime(dr["Birthday"]);
retVal.Address = Convert.ToString(dr["Address"]);
retVal.City = Convert.ToInt32(dr["City"]);
retVal.Password = Convert.ToString(dr["Password"]);
}
if (dr != null) dr.Close();
}
finally
{
dbConn.Close();
}
return retVal;
}
public static void UpdatePassword
(int _accountId, string _newPass)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
string sql = "UPDATE Accounts SET Password = @Password WHERE AccountID = @AccountID";
SqlCommand dbCmd = new SqlCommand(sql, dbConn);
dbCmd.CommandType = CommandType.Text;
dbCmd.Parameters.AddWithValue("@AccountID", _accountId);
dbCmd.Parameters.AddWithValue("@Password", _newPass);
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
finally
{
dbConn.Close();
}
}
public static void Update(AccountInfo _accountInfo)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Accounts_Update", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters
.AddWithValue("@AccountID", _accountInfo.AccountID);
dbCmd.Parameters
.AddWithValue("@Account", _accountInfo.Account);
dbCmd.Parameters
.AddWithValue("@FirstName", _accountInfo.FirstName);
dbCmd.Parameters
.AddWithValue("@LastName", _accountInfo.LastName);
dbCmd.Parameters
.AddWithValue("@Title", _accountInfo.Title);
dbCmd.Parameters
.AddWithValue("@Gender", _accountInfo.Gender);
dbCmd.Parameters
.AddWithValue("@Birthday", _accountInfo.Birthday);
dbCmd.Parameters
.AddWithValue("@Address", _accountInfo.Address);
dbCmd.Parameters.AddWithValue("@City", _accountInfo.City);
dbCmd.Parameters
.AddWithValue("@Password", _accountInfo.Password);
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
finally
{
dbConn.Close();
}
}
public static AccountInfo GetInfo(int _accountID)
{
AccountInfo retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Accounts_GetInfo", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters.AddWithValue("@AccountID", _accountID);
try
{
dbConn.Open();
SqlDataReader dr = dbCmd.ExecuteReader();
if (dr.Read())
{
retVal = new AccountInfo();
retVal
.AccountID = Convert.ToInt32(dr["AccountID"]);
retVal.Account = Convert.ToString(dr["Account"]);
retVal
.FirstName = Convert.ToString(dr["FirstName"]);
retVal.LastName = Convert.ToString(dr["LastName"]);
retVal.Title = Convert.ToString(dr["Title"]);
retVal.Gender = Convert.ToBoolean(dr["Gender"]);
retVal
.Birthday = Convert.ToDateTime(dr["Birthday"]);
retVal.Address = Convert.ToString(dr["Address"]);
retVal.City = Convert.ToInt32(dr["City"]);
retVal.Password = Convert.ToString(dr["Password"]);
}
if (dr != null) dr.Close();
}
finally
{
dbConn.Close();
}
return retVal;
}
}
}
Lớp ImageDB: Là lớp tiện ích có nhiệm vụ cập nhật thư viện ảnh vào trong database, Lấy toàn bộ danh sách các ảnh có trong thư viện đưa ra màn hình cho người dùng chọn.
using System;
using System.Data;
using System.Data.SqlClient;
using ImageAuthentication.Library.Data;
namespace ImageAuthentication.Library.DataAccess
{
public class ImageDB
{
public static DataTable GetAll()
{
DataTable retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd = new SqlCommand("Images_GetAll", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
try
{
retVal = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(dbCmd);
da.Fill(retVal);
}
finally
{
dbConn.Close();
}
return retVal;
}
public static void Delete(int _imageID)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd = new SqlCommand("Images_Delete", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters.AddWithValue("@ImageID", _imageID);
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
finally
{
dbConn.Close();
}
}
public static int Insert(ImageInfo _imageInfo)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd = new SqlCommand("Images_Insert", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters
.AddWithValue("@FriendlyName",_imageInfo.FriendlyName);
dbCmd.Parameters
.AddWithValue("@RealImage", _imageInfo.RealImage);
dbCmd.Parameters
.AddWithValue("@RETURN_VALUE", SqlDbType.Int)
.Direction = ParameterDirection.ReturnValue;
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
return (int)dbCmd.Parameters["@RETURN_VALUE"].Value;
}
finally
{
dbConn.Close();
}
}
public static void Update(ImageInfo _imageInfo)
{
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Images_Update", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters
.AddWithValue("@ImageID", _imageInfo.ImageID);
dbCmd.Parameters
.AddWithValue("@FriendlyName",_imageInfo.FriendlyName);
dbCmd.Parameters
.AddWithValue("@RealImage", _imageInfo.RealImage);
try
{
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
finally
{
dbConn.Close();
}
}
public static ImageInfo GetInfo(int _imageID)
{
ImageInfo retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Images_GetInfo", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.Parameters.AddWithValue("@ImageID", _imageID);
try
{
dbConn.Open();
SqlDataReader dr = dbCmd.ExecuteReader();
if (dr.Read())
{
retVal = new ImageInfo();
retVal.ImageID = Convert.ToInt32(dr["ImageID"]);
retVal.
FriendlyName = Convert.ToString(dr["FriendlyName"]);
retVal.RealImage = (byte[])(dr["RealImage"]);
}
if (dr != null) dr.Close();
}
finally
{
dbConn.Close();
}
return retVal;
}
}
}
Các lớp CityDB và CountryDB là các lớp tiện ích phụ thêm để lấy danh sách các thành phố theo mỗi quốc gia phục vụ cho việc tạo người dùng mới.
namespace ImageAuthentication.Library.DataAccess
{
public class CityDB
{
public static DataTable GetAll()
{
DataTable retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd = new SqlCommand("Cities_GetAll", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
try
{
retVal = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(dbCmd);
da.Fill(retVal);
}
finally
{
dbConn.Close();
}
return retVal;
}
public static DataTable GetByCountryID(int _id)
{
DataTable retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
string sql = "SELECT * FROM Cities WHERE CountryID = " + _id;
SqlCommand dbCmd = new SqlCommand(sql, dbConn);
dbCmd.CommandType = CommandType.Text;
try
{
retVal = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(dbCmd);
da.Fill(retVal);
}
finally
{
dbConn.Close();
}
return retVal;
}
}
}
using System;
using System.Data;
using System.Data.SqlClient;
namespace ImageAuthentication.Library.DataAccess
{
public class CountryDB
{
public static DataTable GetAll()
{
DataTable retVal = null;
SqlConnection dbConn =
new SqlConnection(Common.ConnectionString);
SqlCommand dbCmd =
new SqlCommand("Countries_GetAll", dbConn);
dbCmd.CommandType = CommandType.StoredProcedure;
try
{
retVal = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(dbCmd);
da.Fill(retVal);
}
finally
{
dbConn.Close();
}
return retVal;
}
}
}
Application Client: Là chương trình ứng dụng windows có nhiệm vụ đưa ra môi trường làm việc, tiếp nhận các yêu cầu người dùng rồi chuyển cho Application Server xửlý. Cài đặt các màn hình người dùng:
Màn hình giao diện chính của chương trình.
Hình 22: Giao diện của hệ thống.
Màn hình giao diện đăng nhập.
Hình 23: Giao diện đăng nhập của hệ thống.
Màn hình giao diện tạo người dùng mới.
Hình 24: Giao diện tạo người dùng mới của hệ thống.
Màn hình giao diện cập nhật ảnh vào thư viện.
Hình 25 : Giao diện cập nhật hình ảnh vào hệ thống.
CHƯƠNG 6 : GIỚI THIỆU CHƯƠNG TRÌNH.
6.1. Giới thiệu chương trình.
Hệ thống thử nghiệm xác thực người dùng bằng hình ảnh do chúng em xây dựng thực hiện nhiệm vụ: Sử dụng các hình ảnh có sẵn để xác thực người dùng trên các Website và trên ứng dụng của máy Desktop.
6.2. Mô tả hệ thống được phát triển.
Hệ thống xác thực người dùng bằng hình ảnh có độ tin cậy cao. Người dùng sử dụng hệ thống để đăng nhập vào các Website hay các ứng dụng của mình trên PC.
Hệ thống được xây dựng :
Hệ thống xác thực người dùng trên Web: Để đăng nhập vào một Website thì người dùng phải có tài khoản. Nếu chưa có thì người dùng phải đăng kí một tài khoản. Hệ thống sẽ đưa ra một danh sách các ảnh và yêu cầu người dùng học 5 ảnh để làm mật khẩu ứng với một tên đăng nhập mà người dùng chọn. Khi đã có tài khoản người dùng đăng nhập vào hệ thống. Hệ thống sẽ đưa ra cho người dùng 20 ảnh trong đó có 5 ảnh là mật khẩu mà người dùng đã học, 15 ảnh còn lại là ảnh bẫy. Ảnh mà hệ thống sử dụng là những ảnh có kích thước nhỏ và có thể sử dụng ảnh là những guơng mặt người. Khi người dùng chọn ảnh xong hệ thống xử lý và đưa ra thông báo. Nếu mật khẩu mà người dùng nhập là đúng thì quá trình đăng nhập thành công và kết thúc, người dùng sẽ có đủ quyền do người quản trị quy định. Nếu mật khẩu nhập vào là không đúng thì hệ thống sẽ yêu cầu người dùng đăng nhập lại và quá trình này sẽ lặp lại một vài lần. Nếu người dùng vẫn tiếp tục nhập sai mật khẩu thì hệ thống sẽ từ chối không cho đăng nhập tiếp.
Hệ thống xác thực người dùng trên các ứng dụng Desktop: Cũng như hệ thống trên người dùng muốn sử dụng các ứng dụng trên Desktop thì phải có tài khoản. Để tạo tài khoản người dùng sẽ phải đăng ký với hệ thống. Nhưng khác với hệ thống xác thực người dùng trên Web thì hệ thống này sẽ đưa một tâp các ảnh nhỏ. Sau khi chọn vào một ảnh mà người dùng cảm thấy dễ nhớ. Hệ thống sẽ hiển thị ảnh đó với độ phân giải cao và kích thước lớn. Sau đó người sẽ phải kích vào một số điểm trên ảnh đó. Toạ độ của người dùng kích tren ảnh sẽ được hệ thống lưu làm mật khẩu người dùng. Khi đăng nhập người dùng sẽ phải nhập tên đăng nhập sau đó chọn ảnh mà người dùng đã chọn. Khi ảnh được phóng to người dùng tiếp tục chọn vào các điểm trên ảnh với một dung sai hệ thông đặt ra là 20x20 pixel, để đảm bảo cho toạ độ mà người dùng kích là tương đối. Một điều quan trọng là người dùng phải kích đúng thứ tự của các toạ độ. Hệ thống sẽ tự động so sánh mật khẩu của người dùng nhập vào với mật khẩu lưu trong cơ sơ dữ liêu. Nếu chọn đúng thì hệ thống sẽ đưa ra thông báo người dùng đăng nhập thành công. Nếu sai thì quá trình đăng nhập thất bại. Sau một vài lần hệ thống từ chối việc đăng nhập của người dùng.
Mọi yêu cầu và quá trình xử lý của hệ thống đã được lập trình đầy đủ sẽ xử lý hoàn toàn tự động và đáp ứng ngay. Ví dụ việc lưu thông tin người dùng vào cơ sở dữ liệu hay quá trình so sánh mật khẩu người dùng nhập vào với mật khẩu của người dùng đã được lưu trong cơ sở dữ liệu của máy chủ. Các quá trình đó sẽ được hệ thống xử lý tự động và đưa ra thông báo cho người dùng.
6.3. Cách sử dụng và khai thác hệ thống.
Bởi vì hệ thống xác thực đã quá phổ biến do đó cách sử dụng hệ thống sẽ tương tự như các hệ thống xác thực truyền thống trên thế giới hiện nay. Hệ thống có thể tích hợp vào ứng dụng như đăng nhập vào hệ thống Linux, hay tích hợp vào hệ thống ATM của các ngân hàng… trong tương lai.
KẾT LUẬN
Kết quả đạt được và những vấn đề hạn chế:
Qua thời gian thực hiện khoá luận này, chúng em đã nắm được cách thức hoạt động của hệ thống xác thực người dùng nói chung và hệ thống xác thực người dùng bằng hình ảnh nói riêng. Từ đó tìm hiểu cách tích hợp hệ thống vào các ứng dùng trên Website hay các ứng dụng trên Desktop. Đó chính là cơ sở để nâng cao độ an toàn cho các hệ thống xác thực ngày nay. Đồng thời trong quá trình xây dựng hệ thống chúng em đã được tiếp cận với công nghệ .NET và ngôn ngữ lập trình JAVA.
Vận dụng các kiến thức về thuật toán mã hoá an toàn cao… Chúng em đã xây dựng thành công hệ thống xác thực người dùng bằng hình ảnh. Hệ thống này đã đạt được những yêu cầu đặt ra. Với hệ thống này người dùng có thể sử dụng dễ dàng. Đặc biệt là bằng việc sử dụng mật khẩu là những hình ảnh nên người dùng rất dễ nhớ và cũng khó trong việc miêu tả mật khẩu.
Với hệ thống này có thể mở rộng và tích hợp cho rất nhiều ứng dụng trên internet, trên hệ điều hành, hay trong các lĩnh vực kinh doanh…
Tuy nhiên hệ thống vẫn còn có hạn chế đó là khoảng thời gian để đăng nhập vào hệ thống là lâu hơn so với các hệ thống truyền thống trên thế giới vẫn đang sử dụng đặc biệt là hệ thống sử dụng mật khẩu là các xâu ký tự. Hơn nữa hệ thống mới chỉ đang ở mức độ thử nghiệm chưa được sử dụng một cách rộng rãi. Và đang hoàn thiện để đưa vào sử dụng.
Hướng phát triển:
Trong thời gian thực hiện khoá luận này chúng em cùng với sự hướng dẫn của thầy giáo, giảng viên trường Đại Học Công Nghệ cố gắng xây dựng hệ thống để đưa vào sử dụng. Để hệ thống đem lại kết quả cao, thì một số hướng sau đây cần được nghiên cứu và phát triển :
Tiếp tục nghiên cứu để xây dựng hệ thống xác thực người dùng bằng hình ảnh có hiệu quả.
Tích hợp hệ thống vào một số hệ điều hành lớn như Linux, hay hệ thống ATM của các ngân hàng…
Triển khai các hệ thống mới dựa trên các hệ thống đã có.
TÀI LIỆU THAM KHẢO
[1]. A Field Trial Investigation- Sacha Brostoff & M. Angela Sasse :
“Are Passfaces1 More Usable Than Passwords?”
[2]. Graphical Passwords: A Survey.
[3]. Authentication Using Graphical Passwords: Basic Results.
[4]. Rachna Dhamija and Adrian Perrig - Dèja vu : A user study using images for authentication.Proceeding of 9th USENIX Security Symposium, Ausgust 2000.
[5]. Chirayusapre - Analysis and improvements to graphical password.
[6]. Alain Mayer, Fabian Monrose, Michael K. Reiter - The Design and Analysis of Graphical Passwords.
[7]. Xiaoyuan Suo Ying Zhu G. Scott. Owen Department of Computer Science Georgia State University - Graphical Passwords: A Survey.
[8]. A Field Trial Investigation - Sacha Brostoff & M. Angela Sasse : Are Passfaces1 More Usable Than Passwords?
[9]. On User Choice in Graphical Password Schemes .
[10]. PassPoints: Design and longitudinal evaluation of a graphical password system.
[11]. Julie Thorpe - Towards Secure Design Choices for Implementing GraphicalPassWords.