Ngƣời dùng muốn truy nhập vào hòm thƣ của mình, họ gõ tên tài khoản và mật khẩu, sau đó tên tài khoản và mật khẩu đƣợc băm bằng một thuật toán băm nào đó, để thu đƣợc một văn bản đại diện – bản tóm lƣợc của thông tin tài khoản và mật khẩu, có kích thƣớc cố định (128 hoặc 160 bit). Bản đại diện này đƣợc gửi cho nhà cung cấp qua mạng.
Tại phía nhà cung cấp, họ có một cơ sở dữ liệu lƣu trữ thông tin về tài khoản và mật khẩu của ngƣời dùng là các giá trị băm – bản đại diện cho thông tin đó. Khi nhà cung cấp nhận đƣợc thông tin từ phía ngƣời dùng, họ sẽ kiểm tra thông tin bằng cách so sánh với cơ sở dữ liệu lƣu trữ thông tin về ngƣời dùng. Nếu thông tin đúng, họ sẽ cấp quyền truy nhập, ngƣợc lại thì không cấp quyền.
Theo tính chất của hàm băm, với mỗi thông điệp đầu vào chỉ cho ra duy nhất một giá trị băm đầu ra, hai bản thông điệp khác nhau cho ra hai giá trị băm khác nhau. Do đó mỗi giá trị băm là duy nhất trong cơ sở dữ liệu của nhà cung cấp. Giá trị băm đƣợc coi là khóa định danh để phân biệt các ngƣời dùng khác nhau, hay các thông tin về tài khoản và mật khẩu khác nhau.
b. Xác thực bằng việc sử dụng giao thức “xưng danh”:
Mục tiêu an toàn của việc xƣng danh là bảo đảm sao cho khi “nghe” một chủ thể A xƣng danh với một chủ thể B, bất kỳ một ai khác A cũng không thể sau đó mạo mhận mình là A, kể cả chính B cũng không thể mạo xƣng mình là A sau khi đƣợc A xƣng danh với mình. Nói cách khác, A muốn chứng minh để đƣợc đối tác xác nhận danh tính của mình mà không để lộ bất cứ thông tin nào về việc chứng minh danh tính đó.
Việc xƣng danh thƣờng phải thông qua một giao thức hỏi-đáp nào đó, qua giao thức đó, để B có thể xác nhận danh tính của A, B đặt cho A một câu hỏi; A phải trả lời, trong trả lời đó A phải chứng tỏ cho B biết là A có sở hữu một bí mật riêng A mới có, điều đó thuyết phục B tin chắc rằng ngƣời trả lời đúng là A và do đó xác nhận danh tính của A. Vấn đề khó ở đây là A phải làm cho B biết là A có sở hữu một bí mật
chỉ riêng A mới có, nhƣng lại không đƣợc lộ cho B biết cái bí mật riêng A mới có đó là cái gì. Mặt khác, để cho việc “A có sở hữu một bí mật của riêng A” đó là đáng tin (dù là không biết) thì cần đƣợc chứng thực bởi một bên thứ ba nào đó,chẳng hạn bởi một cơ quan đƣợc uỷ thác (trusted authority). Tất nhiên cơ quan đƣợc uỷ thác này cũng không biết bản thân bí mật của A, nhƣng biết và chứng nhận A là chủ sở hữu của một yếu tố công khai mà việc A sử dụng nó chứng tỏ A có cái bí mật nói trên.
Giao thức xƣng danh Schnorr.
Trong sơ đồ xƣng danh này có sự tham gia của một cơ quan đƣợc uỷ thác mà ta ký hiệu là TA. TA sẽ chọn các tham số cho sơ đồ xƣng danh nhƣ sau:
- một số nguyên tố lớn p sao cho bài toán tính lôgarit rời rạc theo mod p là rất khó; và một ƣớc số nguyên tố q của p -1 (ngƣời ta khuyên nên chọn p 2512 và q 2140 ).
- một phần tử p
Z có cấp q.
- TA chọn cho mình một sơ đồ chữ ký gồm một thuật toán ký (bí mật) sigTA và một thuật toán kiểm thử (công khai) verTA.
Các tham số p, q, , thuật toán kiểm thử verTAvà hàm băm đều có thể đƣợc công bố công khai. Bây giờ, một chủ thể A cần xƣng danh sẽ yêu cầu TA cấp cho mình một chứng chỉ. Thủ tục cấp chứng chỉ cho A đƣợc tiến hành nhƣ sau:
Thủ tục TA cấp chứng chỉ cho thực thể A
1. TA xức lập danh tính của A, ID(A)
2. A chọn bí mật một số ngẫu nhiên a (0 a q-1), tính a
v m o d
p
và chuyển số v cho TA.
3. TA tính s =sigTA(IA, v) và cấp cho A chứng chỉ C(A) = (ID(A), v, s ).
Nhƣ vậy, chứng chỉ mà TA cấp cho A gồm (ID(A),v) và chữ ký của TA trên thông tin (ID(A), v) đó. Chú ý rằng TA cấp chứng chỉ cho A mà hoàn toàn không biết gì về thông tin bí mật của A là số a. Bây giờ, với chứng chỉ C(A) đó, A có thể xƣng danh với bất kỳ đối tác B nào bằng cách cùng B thực hiện một giao thức xác nhận danh tính nhƣ sau:
Giao thức Xƣng danh Schnorr
1. A chọn một số ngẫu nhiên k (0 k q-1), tính k
m o d
p , và gửi cho B các thông tin C(A) và .
2. B kiểm thử chữ ký của TA trong chứng chỉ C(A) bởi hệ thức
verTA(ID(A), v, s) =đúng. Kiểm thử xong, B chọn một số ngẫu nhiên
r (1 r 2t ) và gửi r cho A.
3. A tính y =k +armod q và gửi y cho B. 4. B thử điều kiện y r
v
Chứng minh giao thức:
A sẽ chứng minh đƣợc danh tính của mình, vì
y r k a r r k a r a r k v v (mod p) (mod p), tức điều kiện mà B cần thử là đúng. c. Xác thực bằng việc sử dụng Chứng chỉ số:
Không giống nhƣ các mã khóa bí mật, mã khóa công cộng vẫn có thể đảm bảo đƣợc an toàn thông tin ngay cả khi đƣợc công bố rộng rãi. Điều này giúp cho vấn đề trao đổi mã khóa trở nên dễ dàng hơn. Tuy nhiên, vẫn còn tồn tại một số vấn đề liên quan đến việc trao đổi mã khóa công cộng, đặc biệt là vấn đề làm thế nào xác định đƣợc ai thật sự là chủ của một mã khóa. Một hệ thống sử dụng khóa công cộng chỉ thật sự an toàn khi xác định đƣợc chính xác ngƣời chủ sở hữu của mã khóa.
Bài t o á n đặt ra là phải có một giải pháp để đảm bảo rằng khoá công khai đƣợc trao đổi an toàn, không có giả mạo.
Để giải quyết vấn đề này cần có một tổ chức cung cấp chứng nhận, nó xác nhận: khoá công khai này thuộc về một ngƣời, công ty hay tổ chức nào đó. Tổ chức cung cấp các chứng nhận khoá công khai đƣợc gọi là CA (Certificate Authority), và chứng nhận này gọi là chứng chỉ số.
CA phải đảm bảo về độ tin cậy, chịu trách nhiệm về độ chính xác của chứng chỉ số mà họ cấp. Nhiệm vụ chính của nhà cung cấp CA là gắn kết khoá công khai với tên của ngƣời đăng ký (cá nhân, công ty hay tổ chức) sở hữu khoá đó.
Trong chứng chỉ số có ba thành phần chính:
Thông tin cá nhân:
Đây là các thông tin của đối tƣợng đƣợc cấp chứng chỉ số, gồm tên, quốc tịch, địa chỉ, điện thoại, email, tên tổ chức .v.v. Phần này giống nhƣ các thông tin trên chứng minh thƣ của mỗi ngƣời.
Khoá công khai:
Trong mật mã, khoá công khai là một giá trị đƣợc CA chứng thực, đó là khoá mã hoá, kết hợp với khoá bí mật duy nhất đƣợc tạo ra từ khoá công khai, để tạo thành cặp khoá mật mã bất đối xứng.
Chữ ký số của CA cấp chứng chỉ:
Đây chính là sự xác nhận của CA, bảo đảm tính chính xác và hợp lệ của chứng chỉ. Muốn kiểm tra một chứng chỉ số, trƣớc tiên phải kiểm tra chữ ký số của CA có hợp lệ hay không.