Thuật toán băm

Một phần của tài liệu LUẬN VĂN: XÁC THỰC TRONG CÁC MẠNG VÔ TUYẾN pptx (Trang 34)

Trong các hệ thống an ninh, thuật toán băm thường được sử dụng và giữ một vai trò quan trọng trong các hệ thống mật mã. Một hàm băm H ánh xạ xâu dữ liệu có độ dài hữu hạn tùy ý thành một xâu khác được gọi là mã băm có độ dài cố định n, chiều dài cố định n phụ thuộc vào hàm băm H. Mã băm của một thông điệp được băm bởi hàm H có đặc điểm là khi thay đổi, dù chỉ là 1 bit dữ liệu đầu vào, thì mã băm bị thay đổi hoàn toàn mà không tuân theo một quy luật logic nào, so với mã băm trước khi bị thay đổi.

Một hàm băm H có những đặc điểm sau:

 Có thể áp dụng với thông báo M có độ dài bất kỳ.

 Tạo ra giá trị băm có độ dài cố định.

 H(M) có thể được tính dễ dàng với bất cứ thông báo M nào.

 Từ mã băm h rất khó tìm lại được thông điệp M thỏa mã H(M)=h. Đây là

tính một chiều của hàm băm.

 Từ thông báo M1, rất khó để tìm được thông điệp M2 thỏa mãn

H(M1)=H(M2). Tức hàm băm có tính chống xung đột yếu.

 Rất khó để tìm được 2 thông điệp ( M1, M2 ) thỏa mãn H(M1)=H(M2). Tức hàm băm có tính chống xung đột mạnh.

Hiện nay có rất nhiều loại hàm băm khác nhau như MD5, SHA-1, SHA-256, SHA-512. Độ an toàn của hàm băm phụ thuộc vào loại hàm băm, cũng như chiều dài kết quả băm.

Ví dụ: Xét hàm băm SHA-256 SHA(“”)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 SHA(“mobile”)=d524c1a0811da49592f841085cc0063eb62b3001252a94542795d1ca9824a941 SHA(“mobilz”) = “0617a2dd1e4d7c1e00b15bf723c6a77baa7c2a74e1bbb8a97b817ba5a870cbb3” SHA(“mobil”)=”403b42efc1997638d33da8f5282c7579d00a885c3e7bd0193fd2d26fd7ef72e0” 1.4. Xác thực và các các mô hình xác thực

Xác thực là quá trình nhằm xác nhận định danh của một thực thể truyền thống, cũng nhưng các thông tin quan trọng đi kèm khác như tên, mật khẩu, và một số

thông tin khác. Thực thể cần xác thực ở đây có thể là người sử dụng cuối, thiết bị di động, máy tính, ứng dụng, một dịch vụ, hoặc một hệ thống.

Quá trình xác thực bao gồm 2 bên: Bên cần xác thực (claimant) và bên xác thực (verifier). Bên cần xác thực sẽ khai báo định danh và các thông tin để bên xác thực có thể xác thực lại định danh đó. Khái niệm “xác thực” ( authentication) là một khái niệm đặc biệt, nó có ý nghĩa khác hẳn với khái niệm “định danh” (identification) – Là việc xác định danh tính của thực thể đang giao tiếp – Khái niệm xác thực cũng khác với khái niệm “quyền truy cập” ( authorization) - là việc xác định quyền truy cập dữ liệu và tài nguyên của một thực thể đã được “xác thực” (authentication)

Ta cần phân biệt 2 khái niệm xác thực, là xác thực thực thể (entity authentication) và xác thực thông điệp (message authentication). Xác thực thực thể là quá trình xác thực danh tính của một thực thể, xem liệu thực thể đang được xác thực có đúng với danh tính của nó, ví dụ là xác thực người dùng đăng nhập vào hệ thống, và đó là một quá trình thời gian thực. Ngược lại xác thực thông điệp là một quá trình không là quá trình thời gian thực, nó đảm bảo việc thông điệp được xác thực không bị thay đổi và thông điệp đó được gửi bởi một thực thể đã xác định danh tính.

Trong xã hội thông tin ngày nay, việc xác thực thông báo trở thành một vấn đề quan trọng trên nhiều lĩnh vực, đặc biệt là lĩnh vực kinh doanh và lĩnh vực quân sự. Đã có rất nhiều phương pháp, nhiều công nghệ được phát minh cung cấp nhiều kỹ thuật, nhiều dịch vụ xác thực an toàn và tiện lợi. Tuy nhiên, có thể phân loại kỹ thuật xác thực thành 3 nhóm:

 Xác thực dựa trên mã hóa thông điệp: Là kỹ thuật sử dụng phương pháp

mã hóa để mã hóa toàn bộ thông điệp, sau đó làm căn cứ để xác thực.

 Xác thực mật mã kiểm tra : Sử dụng 1 hàm tổng kiểm tra công khai, với

1 khóa bí mật sẽ được mã hóa thành 1 xâu giá trị có độ dài cố định, làm căn cứ xác thực.

 Xác thực dựa trên hàm băm: Sử dụng các hàm băm một chiều, mã hóa thông điệp có độ dài bất kỳ thành xâu có độ dài cố định, làm căn cứ xác thực.

Như đã nêu ở trên, xác thực thực thể là một quá trình thời gian thực, các giao thức xác thực thực thể (entity authentication protocol) phải đảm bảo được những tiêu chí sau:

 Không có một bên thứ ba nào có thể giả mạo được.

 Bên xác thực không thể tái sử dụng được các thông tin xác thực cũ của

thực thể cần xác thực để cung cấp khả năng giả mạo cho một bên thứ ba.

 Thông báo được ký không thể được khôi phục lại từ mã của chữ ký trong

suốt quá trình xác thực.

Trong phần này, ta sẽ xét lần lượt các các mô hình xác thực và các đặc điểm của các mô hình đó.

1.4.1. Mô hình xác thực yếu

Mô hình xác thực yếu là một mô hình xác thực, nhưng nó không cung cấp một giải pháp xác thực hiệu quả và đầy đủ về tổng thể. Có hai loại hình xác thực yếu rất được quan tâm bởi đó là các phương pháp xác thực tự nhiên và rất phổ biến hiện này, đó là mô hình xác thực dựa trên mật khẩu (Password-based Authentication) và mô hình xác thực dựa trên mã cá nhân (PIN-based Authentication) (adsbygoogle = window.adsbygoogle || []).push({});

1.4.1.1. Xác thực dựa trên mật khẩu

Xác thực dựa trên mật khẩu là phương pháp xác thực người dùng phổ biến nhất hiện nay. Hệ xác thực dựa trên mật khẩu được xây dựng trên mô hình chia sẻ mật khẩu giữa người sử dụng và hệ thống, hệ thống sẽ lưu các bản ghi chứa mật khẩu chia sẻ của người dùng, mật khẩu này sẽ được người sử dụng dùng để cung cấp cùng với tên định danh khi đăng nhập trong bước xác thực.

Các hệ xác thực dựa trên mật khẩu thường được phân biệt bởi phương thức lưu trữ mật khẩu trong hệ thống. Ở các hệ thống thế hệ trước, mật khẩu thường được lưu dưới dạng bản rõ (plaintext) trên hệ thống file hoặc trong một cơ sở dữ liệu. Việc lưu như vậy khá nguy hiểm, bởi ai có thẩm quyền truy cập hệ thống (Quản trị viên, hoặc hacker khi chiếm được quyền kiểm soát) đều có thể lấy cắp được mật khẩu và thông tin của người dùng. Để khắc phục nhược điểm này, các hệ thống ngày nay thường lưu mật khẩu dưới dạng mã băm sử dụng hàm băm 1 chiều (Ví dụ là MD5, SHA-256) của mật khẩu người dùng. Theo đó, khi người dùng nhập mật khẩu đăng nhập, mật khẩu đó sẽ được băm thành mã băm, sau đó hệ thống sẽ so sánh mã băm đó với mã băm mật khẩu được lưu trong hệ thống. Biện pháp này đảm bảo rằng mật khẩu nguyên gốc của người dùng không bị lộ, ngay cả khi người quản trị hay hacker xem được bản chứa mật khẩu được lưu trong hệ thống.

Mô hình xác thực dựa trên mật khẩu hiện nay đã bộc lộ một số yếu điểm về an ninh. Kẻ tấn công có nhiều phương pháp chiếm quyền kiểm soát của người sử dụng bằng cách đánh cắp mật khẩu. Phương pháp đơn giản nhất là kẻ tấn công sẽ sử dụng

phương pháp nghe lén đường truyền, nếu mật khẩu không được mã hóa trên đường truyền, kẻ tấn công có thể dễ dàng lấy được mật khẩu của người sử dụng. Nếu mật khẩu đã được mã hóa trên đường truyền, kẻ tấn công có phương pháp khác là sử dụng tấn công bằng từ điển (Dictionary attack – Là cách tấn công sử dụng 1 từ điển các mật khẩu thường được sử dụng – Hoặc sử dụng phương pháp tấn công ngày sinh (Birthday attack) [31] để tìm ra điểm xung đột của thuật toán băm.

Tuy nhiên, có một kỹ thuật để cải tiến nâng cao độ an toàn trong hệ thống xác thực dựa trên mật khẩu, đó là sử dụng mật khẩu một lần (One time password). Nguyên lý của hệ mật khẩu một lần là mỗi mật khẩu được chỉ có hiệu lực 1 lần, trong một khoảng thời gian nhất định. Mật khẩu một lần đảm bảo việc cho dù kẻ tấn công có lấy được mật khẩu trên đường truyền, thì kẻ đó cũng không sử dụng lại mật khẩu đó. Mật khẩu một lần được hệ thống sinh ra theo một thuật toán ngẫu nhiên, hoặc giả ngẫu nhiên, có kích thước cố định và được thông báo lại cho người sử dụng bằng một kênh truyền thông nào đó như qua tin nhắn di động, qua internet, hoặc qua các thiết bị chuyên dụng. , ví dụ như thiết bị Secure ID của hãng bảo mật RSA, hay OTP token của hãng VeriSign.

1.4.1.2. Xác thực dựa trên mã định danh cá nhân (PIN-based Authentication) Authentication)

Mô hình xác thực dựa trên mã định danh cá nhân sử dụng các thiết bị vật lý để lưu trữ mã định danh cá nhân như thẻ SmartCard, hay USB Token. Mỗi người sử dụng được cấp một mã cá nhân (PIN) có chiều dài từ 4-10 chữ số, mã cá nhân được bảo vệ trong thiết bị vật lý bằng mật khẩu tự đặt của người sử dụng. Khi đăng nhập vào hệ thống, ở bước xác thực, người dùng phải cắm thiết bị vào máy tính để nhập mã PIN, thông thường khi đó thiết bị sẽ yêu cầu người sử dụng nhập mật khẩu để có thể kích hoạt mã PIN được lưu trong thiết bị. Để đảm bảo mã PIN của người sử dụng được an toàn ngay cả trong trường hợp người sử dụng bị mất, thiết bị token sẽ khóa hoặc tự hủy nếu kẻ tấn công nhập sai mật khẩu sử dụng trong một số lần liên tiếp (Thường là 3 lần hoặc 5 lần).

1.4.2. Mô hình xác thực mạnh

Thông thường, mô hình xác thực mạnh thường sử dụng các giao thức xác thực dựa trên việc hỏi và trả lời (Challenge-Response), các giao thức đó có thể được mô tả như sau: Một người sử dụng khi muốn truy cập vào một dịch vụ hay một hệ thống, anh ta phải chứng minh được danh tính của mình với hệ thống bằng những

Comment [u9]: William Stalling (2005) “Cryptography and Network Security”, Prentice Hall Publisher, pp 338

những kiến thức của anh ta về một thông tin bí mật, có liên quan tới anh ta và chỉ anh ta mới có thể tạo ra câu trả lời chính xác mà không cần tiết lộ thông tin bí mật đó cho bên xác thực. Ta gọi chung các giao thức xác thực đó là giao thức hỏi trả lời (challenge-Response Protocol )

Các giao thức xác thực thường được xây dựng trên hệ mã hóa chia sẻ khóa, hoặc hệ mã hóa khóa công khai, hoặc các kỹ thuật zero-knowledge – là kỹ thuật được sử dụng để chứng minh danh tính dựa trên thông tin bí mật của chủ thể mà không cần tiết lộ bí mật đó của chủ thể - Giao thức xác thực thường sử dụng các tham số thời gian, hoặc kỹ thuật đánh số thông điệp để nhận biết thông điệp nào là thông điệp mới, thông điệp nào là thông điệp đã được gửi rồi, để tránh tấn công lặp lại, kỹ thuật này được gọi là kỹ thuật đóng dấu thời gian. Kỹ thuật đóng dấu thời gian được thực hiện như sau: Khi 1 thông điệp được gửi từ bên gửi, bên gửi sẽ chèn 1 con dấu thời gian (timestamp) đi kèm thông điệp và nó được mã hóa cùng thông điệp. Khi bên nhận nhận được thông điệp, bên nhận sẽ giải mã thông điệp và sẽ thu

được con dấu thời gian đó, bên nhận sẽ tính toán độ lệch thời gian so thời điểm

nhận, tính theo đồng hồ của máy nhận. Nếu độ lệch thời gian nằm trong một giới hạn cho phép thì thông điệp đó là hợp lệ qua bước kiểm chứng con dấu thời gian. Khi thực thi phương pháp này, cần chú ý tính đồng bộ của đồng hồ bên gửi và đồng hồ bên nhận.

Các hệ xác thực mạnh được xây dựng theo 3 loại sau: Giao thức xác thực trên hệ mật mã , giao thức xác thực lời dựa trên các kỹ thuật zero-knowledge, và xác thực dựa trên thiết bị hỗ trợ

1.4.2.1. Giao thức xác thực dựa trên hệ mật mã

Là các giao thức sử dụng các hệ mã hóa để bảo mật và xác thực, có hai hệ mã hóa tương ứng với 2 hệ giao thức xác thực đó là: Giao thức xác thực dựa trên mật mã đối xứng (Hay mật mã khóa chung), và giao thức xác thực dựa trên mật mã khóa công khai.

a. Giao thức xác thực dựa trên mật mã khóa đối xứng

Với giao thức xác thực sử dụng mật mã khóa đối xứng, các bước được thực hiện có thể được mô tả như sau: Xét một phiên xác thực giữa người dùng A và hệ thống B sử dụng giao thức xác thực mật mã khóa đối xứng, do sử dụng mật mã

khóa đối xứng, nên A và B cùng thống nhất sử dụng khóa chung k và hệ mã hóa Ek.

 Để bắt đầu phiên, bên A sẽ gửi yêu cầu xác thực sang bên B

 Bên B sẽ sinh ra 1 số ngẫu nhiên r, sau đó dùng hàm mã hóa với khóa

phục vụ cho việc định danh hoặc chống tấn công lặp lại, tức B sẽ gửi lại

cho A thông điệp Ek(r || m) (Ký hiệu || là ký hiệu nối giữa các thông điệp

nhỏ trong 1 thông điệp tổng)

 Bên A nhận được thông điệp Ek(r || m) từ bên B gửi, do A và B cùng chia

sẻ 1 khóa chung k, nên chỉ có A mới có thể giải mã thông điệp B gửi để nhận được số ngẫu nhiên r và thông điệp tùy chọn m. Sau đó bên A sẽ gửi lại cho bên B một thông điệp có chứa số ngẫu nhiên r kèm 1 thông

điệp tùy chọn m’ được mã hóa bởi hàm mã tức thông điệp Ek(r || m’)

 Bên B nhận lại thông điệp bên A gửi, bên B sẽ giải mã thông điệp và nhận lại số ngẫu nhiên r, B sẽ so sánh số r nhận được với số r trước đó B đã gửi cho A. Nếu trùng nhau thì A được xác thực và ngược lại. (adsbygoogle = window.adsbygoogle || []).push({});

Trong trường hợp A cũng cần xác thực lại B, ở bước yêu cầu xác thực A sẽ gửi định danh của A (IDA) cho B, B sẽ gửi kèm lại số ngẫu nhiên r và IDA trong

được mã hóa bởi Ek. Ta có thể tóm tắt lại quá trình xác thực như sau:

(1)A → B : IDA

(2)B → A : Ek( IDA || r || m)

(3)A → B : Ek(r || m’)

Chú ý thông điệp m và m’ là các thông điệp tùy chọn được B và A sinh ra nhằm phục vụ các mục đích khác như chống tấn công lặp lại.

b. Giao thức xác thực dựa trên mật mã công khai

Giao thức xác thực dựa trên mật mã công khai cũng tương tự như giao thức dựa trên mật khẩu khóa đối xứng, chỉ khác ở điểm là hệ mật mã sử dụng là mật mã

công khai. Nguyên lý chung của giao thức vẫn là bên B sẽ gửi cho bên A một số ngẫu nhiên r, nhưng thay vì sử dụng mật mã khóa đối xứng, B sẽ mã hóa số r và thông điệp tùy chọn m bằng khóa công khai của A, và gửi cho A. A nhận được sẽ giải mã bằng khóa bí mật, rồi gửi lại cho B số r và thông điệp m’, sử dụng khóa công khai của B. B sẽ dùng khóa bí mật của B để lấy ra số r, so sánh với số ngẫu nhiên B đã gửi cho A, nếu trùng thì A được xác thực và ngược lại.

Nếu A và B cần xác thực nhau, ta áp dụng kỹ thuật tương tự với trường hợp xác thực khóa đối xứng, ta có quá trình xác thực như sau:

(1)A → B : IDA

(2)B → A : E(PUA, IDA || r || m)

(3)A → B : E(PUB, r || m’)

1.4.2.2. Giao thức xác thực dựa trên kỹ thuật zero-knowledge

Như đã đề cập ở phần trên, các phương pháp xác thực thường bên cần xác thực phải công bố hoặc tiết lộ một phần hoặc những thông tin liên quan tới những bí mật của họ để được xác thực. Sẽ rất nguy hiểm nếu bên xác thực có ý đồ xấu muốn khôi phục lại những thông tin bí mật của người cần xác thực dựa trên những thông tin bên cần xác thực cung cấp cho ở những phiên xác thực trước. Ví dụ với giao thức xác thực dùng mật mã khóa đối xứng, bên A sẽ bị tổn thương nếu bên B cố tình tiết lộ khóa chia sẻ của A và B cho một bên thứ ba khác. Kỹ thuật xác thực zero-knowledge được đề xuất cho phép người cần xác thực vẫn có thể xác thực

Một phần của tài liệu LUẬN VĂN: XÁC THỰC TRONG CÁC MẠNG VÔ TUYẾN pptx (Trang 34)