1. Xác thực dựa trên mật khẩu
Vì mật khẩu rất dễ nhớ bởi bộ óc con người nên xác thực dựa trên mật khẩu được ứng dụng rộng rãi trong giao thức “người sử dụng tới trạm” đối với những hệ thống máy tính có thể truy cập từ xa.
Ở dạng xác thực này người sử dụng và trạm chia sẻ mật khẩu về cơ bản là dài hạn nhưng lại là khoá đối xứng kích thước nhỏ.
Người sử dụng U muốn sử dụng dịch vụ của trạm H thì đầu tiên phải được khởi hoạt bởi H và được cấp phát mật khẩu. H lưu trữ một kho mật khẩu của tất cả người sử dụng. Mỗi mục của kho lưu trữ mật khẩu là một cặp (IDU, PU), với IDU là định danh của U còn PU là mật khẩu tương ứng của U.
Cũng cần nói thêm rằng, ngày nay trong một số giao thức xác thực mật khẩu từ xa dùng thẻ thông minh (smart card), H không cần lưu trữ kho mật khẩu của người dùng cả ở dạng rõ lẫn ở dạng mã (xem [2]).
Giao thức mật khẩu Needham
Needham có sáng kiến đưa ra một phương pháp hiệu quả và đơn giản để lưu trữ an toàn mật khẩu tại máy trạm. Trạm H nên sử dụng hàm một chiều để lập mã mật khẩu tức là mục (IDU,PU) được thay bằng (IDU, f(PU)) ở đó f là hàm một chiều cực kỳ khó nghịch đảo.
Mặc dù tính bí mật của tệp mật khẩu đã được bảo đảm hơn vì đã được mã hóa nhưng tính nguyên vẹn dữ liệu vẫn phải được duy trì. Ngoài ra, mật khẩu vẫn có thể bị nghe trộm trực tuyến, vì vậy mà mật khẩu sử dụng một lần được đề xuất để ngăn chặn kiểu tấn công này.
Sơ đồ mật khẩu sử dụng một lần
Lamport đề xuất ý tưởng đơn giản để cản phá nghe trộm mật khẩu trực tuyến. Kỹ thuật này có thể được coi là sơ đồ mật khẩu một lần. “Một lần” có nghĩa là những mật khẩu được truyền từ U đến H không lặp lại, tuy chúng có quan hệ tính toán với nhau. Như thế, một mật khẩu bị nghe trộm từ một lần thực hiện giao thức sẽ không được sử dụng tiếp và từ đó vấn đề nghe trộm mật khẩu được ngăn ngừa thành công.
Trong thời gian khởi hoạt của người sử dụng, mục mật khẩu của U được thiết lập là (IDU, fn(PU)),ở đó
đối với số nguyên lớn n. Người sử dụng U sẽ chỉ phải nhớ PU như trong trường hợp giao thức xác thực mật khẩu.
Khi U và H lần đầu tiên thực hiện xác thực mật khẩu, sau khi có lời nhắc “Mật khẩu”, thiết bị tính của U sẽ yêu cầu U nhập khoá PU vào rồi sau đó tính fn-1(PU) bằng cách áp dụng lặp lại f đúng n-1 lần. Điều này có thể hiệu quả ngay cả khi n lớn, chẳng hạn n = 1000. Kết quả sẽ được gửi cho H (giao thức không chỉ ra P).
Nhận được fn-1(PU), H chỉ việc áp dụng f một lần trên giá trị mật khẩu nhận được để được fn(PU) và thực hiện kiểm tra tính đúng đắn giao thức không chỉ ra P. Ngoài ra H còn cập nhật mục mật khẩu của U bằng cách thay thế fn(PU) bằng fn-1(PU). Giao thức này có trạng thái với con đếm giảm dần từ n đến 1. Khi con đếm đạt đến 1 thì U và H phải thiết lập lại mật khẩu mới cho U, do đó phải duy trì sự đồng bộ con đếm mật khẩu giữa U và H.
Thêm thành phần phụ gia vào giao thức
Đa số những hệ thống dựa trên mật khẩu khuyên người sử dụng chọn mật khẩu có 8 ký tự bàn phím. Bởi vì, đa số người sử dụng có thể nhớ được mật khẩu có độ dài như vậy mà không cần phải viết ra giấy. Vì các ký tự ASCII được biểu diễn bằng một byte gồm 8 bit nên mật khẩu 8 ký tự sẽ tương ứng với xâu 64 bit. Không gian của những xâu 64 bit có 264 khả năng và như vậy là đủ để chống lại được việc đoán mật khẩu hoặc thậm chí những tấn công duyệt tự động.
Mặc dù vậy, người sử dụng thường chọn mật khẩu dễ nhớ là những mật khẩu “tồi” như chọn từ trong từ điển, tên người sử dụng. Do đó không gian mật khẩu nhỏ hơn 264 rất nhiều và là đối tượng cho tấn công từ điển phi trực tuyến. Malice sẽ sử dụng f(PU) để dò tìm trong từ điển tất cả những từ “tồi” để khớp với PU. Thực hiện phi trực tuyến sẽ tự động và nhanh. Sơ đồ mật khẩu một lần của Lamport cũng không chống lại được tấn công từ điển phi trực tuyến: Malice có thể nghe trộm giá trị trạng thái hiện hành i, fi(PU) và từ đó có thể tiến hành duyệt tìm từ điển.
Bellovin và Merritt đề xuất một giao thức hấp dẫn đạt được xác thực dựa trên mật khẩu an toàn có tên là Trao đổi khoá được mã EKE. Giao thức bảo vệ mật khẩu chống lại cả những tấn công nghe trộm trực tuyến và từ điển phi trực tuyến. Kỹ thuật sử dụng là lập mã xác suất cơ bản.
Giao thức Trao đổi khoá được mã EKE.
Giả thiết:
- Người sử dụng U và trạm H chia sẻ mật khẩu PU;
- Hệ thống thoả thuận thuật toán mã hóa đối xứng;
- K() ký hiệu phép mã đối xứng sử dụng khoá K;
- U và H cũng thoả thuận sơ đồ mã hóa phi đối xứng;
eu Ký hiệu phép mã phi đối xứng nhờ khóa của U.
Mục đích U và H đạt được xác thực thực thể hai chiều và họ cũng thoả thuận được khoá bí mật chia sẻ, các bước:
1) U sinh khoá “công khai” ngẫu nhiên eu (nó là khóa mã của thuật toán mã hóa không đối xứng) và gửi cho H: U, PU(eu);
2) H sử dụng PU để giải đoạn mã và phục hồi eu; H sinh khoá ngẫu nhiên đối xứng K và gửi cho U: PU (eu(K));
3) U giải đoạn bản mã kép và thu được khoá K; U sinh ra số ngẫu nhiên NU và gửi cho H : K(NU);
4) H giải đoạn mã hoá sử dụng K rồi sinh ra số ngẫu nhiên NH và gửi cho U : K(NU, NH);
5) U sử dụng K giải đoạn bản mã và trả về cho H: K(NU);
6) Nếu thách đố - giải đố tại các bước 3, 4, 5 thành công thì đăng nhập được cấp quyền và các bên tiếp tục liên lạc an toàn sử dụng khoá chia sẻ K.
Ưu việt của giao thức EKE là ở hai bước đầu tiên. Trong bước một, đoạn mã PU(eu) là kết quả của việc mã hóa một đoạn thông tin ngẫu nhiên một lần eu nhờ khoá PU. Trong bước hai, nội dung được mã hai lần trong đoạn bản mã PU (eu(K)) lại là số ngẫu nhiên một lần khác: Đó là khoá phiên K. Vì PU là dễ nhớ với con người nên nhỏ, còn các xâu ngẫu nhiên eu và K phải có kích cỡ lớn hơn so với PU do đó mà hai đoạn bản mã trong các dòng thông báo 1 và 2 có thể che giấu PU sao cho PU vẫn độc lập thống kê đối với hai đoạn bản mã này.
Tính ngẫu nhiên một lần của eu đóng vai trò “thêm phụ gia”. Nếu “khoá công khai” không là một lần thì chức năng duy nhất của giao thức EKE sẽ thất bại hoàn toàn. Thậm chí có thể dễ dàng cho Malice tìm kiếm mật khẩu PU nhờ sử dụng điểm yếu của thuật toán mật mã khoá công khai, chẳng hạn tấn công “gặp nhau ở giữa”.
Nếu những số ngẫu nhiên NU, NH trong các dòng 3, 4, 5 được sinh ra ngẫu nhiên và có kích cỡ lớn phù hợp, chẳng hạn lớn hơn so với khoá phiên K, thì chúng che giấu tiếp được khoá phiên K giống như cách mật khẩu PU được che giấu trong hai thông báo đầu. Do đó mà PU vẫn còn độc lập thống kê đối với bất kỳ thông báo nào đi qua trong giao thức EKE.
Sự độc lập thống kê của mật khẩu PU đối với những thông báo đi qua giao thức có nghĩa là mật khẩu được che giấu khỏi kẻ nghe trộm theo nghĩa an toàn lý thuyết thông tin.
Về bản chất, “phụ gia” thêm vào mật khẩu đã “khuyếch đại” kích cỡ của không gian mật khẩu từ kích cỡ từ điển lên đến kích cỡ khoá phi đối xứng ngẫu nhiên. Đó chính là một ưu thế của giao thức EKE.
6. Trao đổi khoá có xác thực dựa trên mật mã phi đối xứng
Vận chuyển khoá là giao thức thiết lập khoá phiên chung, trong đó khoá phiên đến từ một trong các bên tham gia giao thức
Trao đổi khoá hay thoả thuận khoá cũng là giao thức thiết lập khoá phiên chung, trong đó khoá chia sẻ là hàm của đầu vào ngẫu nhiên của tất cả các bên tham gia giao thức. Lợi thế của trao đổi khoá so với vận chuyển khoá là mỗi một trong các bên chia sẻ khoá có thể có sự kiểm soát của mình, từ đó mà có độ tự tin cao hơn về chất lượng của đầu ra khoá.
Trao đổi khoá có thể đạt được bằng cách sinh khoá như là đầu ra của hàm giả ngẫu nhiên hay hàm băm một chiều mà các bên chia sẻ khoá có đầu vào của chính họ đối với hàm này. Phương pháp được sử dụng phổ biến là Trao đổi khoá Diffie-Hellman.
Giao thức trạm tới trạm STS
Giả thiết:
- Alice có chứng chỉ khoá công khai CertA,
- Bob có chứng chỉ khoá công khai CertB
- Những người sử dụng trong toàn hệ thống chia sẻ một nhóm Abel hữu hạn lớn desc+%, và thoả thuận thuật toán mã hóa đối xứng eu. Mục đích Alice và Bob đạt được xác thực lẫn nhau và thoả thuận khoá được xác thực lẫn nhau, gồm các bước sau:
- Alice lấy một số nguyên lớn ngẫu nhiên x và gửi cho Bob : %x;
- Bob lấy một số nguyên lớn ngẫu nhiên y và gửi cho Alice : %y,CertB, ek(sigB(%y, %x));
- Alice gửi cho Bob: CertA, ek(sigA(%x, %y)), ở đó K = %xy = %yx.
Giao thức STS có các tính chất an toàn sau đây:
1. Xác thực thực thể hai chiều;
2. Thoả thuận khoá có xác thực hai chiều;
3. Xác nhận khoá hai chiều;
4. Bí mật ngược hoàn thiện: Nếu khoá bí mật dài hạn trong giao thức thiết lập khoá bị lộ vào một thời điểm nào đó thì bí mật của phiên liên lạc được thiết lập bất kỳ trước thời điểm đó sẽ không bị ảnh hưởng.
5. Tính nặc danh hay chối bỏ được: Nếu những chứng chỉ khoá công khai việc mã hóa được thực hiện trong các đoạn bản mã tương ứng thì những thông báo được liên lạc trong phiên liên lạc của giao thức sẽ không bị lộ ra cho bất kỳ bên thứ ba nào liên quan đến trao đổi thông báo. “Nặc danh” cũng có thể thay bằng “chối bỏ được” có nghĩa là giám sát mạng không thể chứng minh rằng giữa hai thực thể chỉ ra đã ghi để phát lại giao thức đã cho.
Lawe đã khám phá ra một tấn công nhỏ trên giao thức STS. Hậu quả là Alice bị đánh lừa hoàn hảo và nghĩ cô ta đang nói chuyện và chia sẻ khoá phiên với Bob trong khi Bob lại nghĩ anh ta đang nói chuyện với Malice trong một giao dịch chưa hoàn tất. Alice sẽ không bao giờ được thông báo về sự bất bình thường và những yêu cầu tiếp theo của cô hay những chuẩn bị đối với những cuộc liên lạc an toàn với Bob sẽ bị từ chối không có bất kỳ sự giải thích nào.
Trên đây là những vấn đề rất cơ bản của xác thực. Những tấn công lên các giao thức xác thực sẽ được giới thiệu trong một bài báo khác.