24/05/2018, 20:21

Xác thực mẩu tin và các hàm HASH

Các khái niệm Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng o Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát hiện nếu mẩu tin bị thay đổi ...

Các khái niệm

Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng

o Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát hiện nếu mẩu tin bị thay đổi trên đường truyền.

o Kiểm chứng danh tính và nguồn gốc: xem xét mẩu tin có đúng do người xưng tên gửi không hay một kẻ mạo danh nào khác gửi.

o Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa các thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó. Như vậy người gửi không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin.

Ngoài ra có thể xem xét bổ sung thêm các yêu cầu bảo mật như mã hoá. Với mong muốn đáp ứng các yêu cầu trên, có 3 hàm lựa chọn sau đây được sử dụng:

o Mã mẩu tin bằng mã đối xứng hoặc mã công khai.

o Mã xác thực mẩu tin (MAC): dùng khoá và một hàm nén mẩu tin cần gửi để nhận được một đặc trưng đính kèm với mẩu tin và người gửi đó.

o Hàm hash (hàm băm) là hàm nén mẩu tin tạo thành “dấu vân tay” cho mẩu tin.

Các yêu cầu bảo mật khi truyền mẩu tin trên mạng.

Tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:

o Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết.

o Thám mã đường truyền: không cho theo dõi hoặc làm trì hoãn việc truyền tin.

o Giả mạo: lấy danh nghĩa người khác để gửi tin.

o Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin.

o Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền.

o Sửa đổi thời gian: làm trì hoãn mẩu tin.

o Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu tin.

o Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích của mẩu tin đã gửi.

Mã mẩu tin

  • Mã mẩu tin bản thân đã cung cấp một phần tính xác thực, vì khoá được chia sẻ giữa người gửi và người nhận cũng như việc thay đổi nội dung cũng không dễ dàng thực hiện nếu không có khoá.
  • Cụ thể nếu mã đối xứng được sử dụng thì người nhận biết người gửi phải tạo ra mẩu tin, vì chỉ có người gửi và người nhận biết được khoá sử dụng.

Người nhận có thể biết nội dung không bị sửa đổi, nếu mẩu tin có cấu trúc phù hợp, tính dư thừa và tổng kiểm tra để phát hiện bất cứ thay đổi nào.

  • Nếu khoá công khai được sử dụng thì mã cung cấp không đủ độ tin cậy về người gửi, vì mọi người đều có thể biết khoá công khai của người nhận. Tuy nhiên nếu người gửi ký mẩu tin sử dụng khoá riêng của họ và sau đó mã với khoá công khai của người nhận, thì khi đó đảm bảo cả tính bảo mật và xác thực của mẩu tin. Cần phải bổ sung các biện pháp để phát hiện các mẩu tin đã bị làm hỏng. Việc sử dụng khoá riêng của người gửi kết hợp với khoá công khai của người nhận có nhiều ưu việt, nhưng với giá phải trả là chậm do dùng 2 mã khoá công khai trên mẩu tin.

Mã xác thực mẩu tin (MAC – Message Authentication Code)

  • Sinh ra bởi một thuật toán mà tạo ra một khối thông tin nhỏ có kích thước cố định

o Phụ thuộc vào cả mẩu tin và khoá nào đó.

o Giống như mã nhưng không cần phải giải mã.

  • Bổ sung vào mẩu tin như chữ ký để gửi kèm theo làm bằng chứng xác thực.
  • Người nhận thực hiện tính toán nào đó trên mẩu tin và kiểm tra xem nó có phù hợp với MAC đính kèm không.
  • Tạo niềm tin rằng mẩu tin không bị thay đổi và đến từ người gửi.

Các mã xác thực mẩu tin MAC cung cấp sự tin cậy cho người nhận là mẩu tin không bị thay đổi và từ đích danh người gửi. Cũng có thể sử dụng mã xác thực MAC kèm theo với việc mã hoá để bảo mật. Nói chung người ta sử dụng các khoá riêng biệt cho mỗi MAC và có thể tính MAC trước hoặc sau mã hoá, tốt hơn là thực hiện MAC trước và mã hoá sau.

Sử dụng MAC có nhược điểm là MAC phụ thuộc vào cả mẩu tin và cả người gửi, nhưng đôi khi chỉ cần xác thực mẩu tin và thông tin xác thực đó chỉ phụ thuộc mẩu tin để lưu trữ làm bằng chứng cho tính toàn vẹn của nó. Khi đó người ta sử dụng hàm Hash thay vì MAC. Cần lưu ý rằng MAC không phải là chữ ký điện tử, vì cả người gửi và người nhận đều biết thông tin về khoá.

Các tính chất của MAC

MAC là thông tin nén của mẩu tin kết hợp với khoá MAC = CK(M)

o Nén bản tin M có độ dài tùy ý

o Sử dụng khoá mật K

o Tạo nên dấu xác thực có độ dài cố định

o Là hàm nhiều - một, nghĩa là có nhiều bản tin khác nhau nhưng có cùng

MAC. Tuy nhiên ta phải lựa chọn hàm MAC sao cho xác suất để các mẩu tin có ý nghĩa có MAC trùng nhau là rất nhỏ. Việc tìm được các mẩu tin như vậy là rất khó khăn

Yêu cầu đối với MAC

Tuỳ thuộc vào kiểu tấn công mà MAC phải có các tính chất khác nhau để chống đối lại. Nhưng nói chung MAC phải thỏa mãn các điều sau

o Biết mẫu tin và MAC, không thể tìm được mẩu tin khác có cùng MAC.

o Các MAC cần phải phân bố đều

o MAC phải phụ thuộc như nhau vào tất cả các bit trong mẩu tin. Tức là khi thay đổi một bit thông tin nào đó, MAC sẽ có những thay đổi kéo theo.

Sử dụng mã đối xứng cho MAC

- Có thể dùng mã khối với chế độ chuỗi móc nối bất kỳ và sử dụng khối cuối cùng của mã khối làm MAC của mẩu tin.

- Thuật toán xác thực dữ liệu (DAA – Data Authentication Algorithm) là MAC được sử dụng rộng rãi dựa trên chế độ DES-CBC, trong đó

o Sử dụng véc tơ ban đầu IV = 0 và bộ đệm 0 của block cuối cùng

o Và mã mẩu tin sử dụng chuẩn mã dữ liệu DES trong chế độ CBC

o Gửi lấy block cuối cùng như là MAC của cả mẩu tin

- hoặc M bit trái nhất (16 ≤ M ≤ 64) của khối cuối cùng

- Nhưng bây giờ MAC cuối cùng với kích thước 64 bit cũng là quá nhỏ để đảm bảo an toàn. Do đó người ta tìm cách tạo nên các MAC có kích thước lớn hơn.

Các yêu cầu

  • Nén mẩu tin bất kỳ về kích thước cố định. Và giả thiết là hàm hash là công khai và không dùng khoá. Hash chỉ phụ thuộc mẩu tin, còn MAC phụ thuộc thêm cả vào khoá.
  • Hash được sử dụng để phát hiện thay đổi của mẩu tin. Hash có thể sử dụng nhiều cách khác nhau với mẩu tin, Hash thường được kết hợp dùng để tạo chữ ký trên mẩu tin.

Các tính chất của hàm Hash

  • Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp, mẩu tin hay dữ liệu

h = H(M)

  • Nén mẩu tin có kích thước tùy ý về dấu vân tay có kích thước cố định. Hàm Hash được giả thiết là công khai, mọi người đều biết cách sử dụng

Các yêu cầu của hàm Hash

  • Có thể áp dụng cho mọi mẩu tin có kích thước tuỳ ý. Tuy nhiên phải tạo đầu ra h có kích thước cố định, thường là 128 bit đến 1024 bit.
  • Dễ tính h = H(M)cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả phụ thuộc chặt vào mẩu tin M và không tính toán ngược lại.
  • Cho trước h không thể tìm được (rất khó) x sao cho H(x) = h. Tính chất này gọi là tính chất một chiều, chiều tìm nghịch ảnh rất khó khăn, tuy chiều tìm ảnh lại dễ dàng.
  • Cho x không thể tìm được y sao cho H(y) = H(x). Đây là tính chất chống đỡ va chạm yếu, không tìm được mẩu tin có cùng Hash với mẩu tin đã cho.
  • Và không thể tìm được x, y sao cho H(y) = H(x). Đây gọi là tính chất chống đỡ va chạm mạnh, đây là yêu cầu cao hơn tính chống đỡ va chạm yếu.

Các hàm hash đơn giản

Có một số đề xuất cho một số hàm hash đơn giản. Chẳng hạn biểu diễn mẩu tin dưới dạng bit sau đó chia chúng thành các khối bit có kích thước bằng kích thước mong muốn của Hash. Rồi dựa trên phép toán XOR các bit thông tin ở cùng vị trí tương ứng của các khối, kết quả nhận được là Hash của cả mẩu tin. Hàm hash trên là không an toàn vì đối với mẩu tin bất kỳ có thể tìm được mẩu tin mà có cùng hàm hash.Cần phải có hàm mạnh hơn, mà sẽ xét trong chương sau.

Tấn công ngày sinh nhật

Có thể nghĩ hash 64 bit là an toàn, có nghĩa là khó tìm được bản tin có cùng hash. Nhưng không phải vậy vì nghịch lý ngày sinh nhật như sau: trong lớp có ít nhất bao nhiêu sinh viên, để xác suất có ít nhất 2 sinh viên trùng ngày sinh nhật là lớn hớn 0.5. Theo lý thuyết xác suất thống kê gọi số sinh viên ít nhất trong lớp là k, khi đó xác suất q để không có 2 người nào trùng ngày sinh là tỷ số giữa cách chọn k ngày khác nhau trong 365 ngày trên số cách chọn k ngày bất kỳ trong 365 ngày. Vậy

Do đó, xác suất p để có ít nhất 2 người trùng ngày sinh là

Để p > 0.5 thì k > 22 hay k =23, cụ thể khi đó p = 0.5073.

Khi chưa tính toán chi tiết chúng ta nghĩ là trong lớp phải có ít nhất khoảng 365/2 tức là 184 sinh viên. Nhưng trên thực tế con số đó ít hơn rất nhiều chỉ cần 23 sinh viên, chính vì vậy ta gọi đây là nghịch lý ngày sinh nhật.

Điều đó muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẩu tin có cùng bản Hash là không nhỏ như chúng ta tưởng.

Tấn công ngày sinh nhật hoạt động như sau

o Kẻ thám mã tạo ra 2m/2 size 12{2 rSup { size 8{m/2} } } {} biến thể của mẩu tin đúng mà tất cả đều có bản chất ngữ nghĩa như nhau, với m ở đây là độ dài của bản mã hash.

o Kẻ thám mã cũng có thể tạo ra 2m/2 size 12{2 rSup { size 8{m/2} } } {}biến thể khác nhau của mẩu tin lừa dối, tức là có ngữ nghĩa ngược lại

o Hai tập tin được so sánh với nhau để tìm cặp có cùng bản hash (xác suất >=0.5 dựa vào nghịch lý ngày sinh nhật)

o Người dùng ký vào mẩu tin đúng, sau đó bị thay thế bằng mẩu tin giả mà cũng có chữ ký đúng.

  • Kết luận là cần phải dùng MAC có kích thước lớn hơn nữa.

Mã khối như hàm Hash

  • Có thể sử dụng mã khối như hàm Hash

o Sử dụng H0 = 0 và bộ đệm không cho khối cuối cùng

o Tính Hi = EMi [Hi-1]

o Và sử dụng khối cuối cùng như giá trị hàm hash

o Giống chế độ CBC nhưng không có khoá

  • Hash kết quả quá nhỏ (64 bit)

o Cả vì tấn công sinh nhật trực tiếp

o Cả tấn công ở giữa chừng

  • Các phương án khác cũng dễ bị tấn công

Kẻ thám mã cũng có thể tạo ra 2m/2 biến thể khác nhau của mẩu tin

Tính an toàn của hàm Hash và MAC.

Giống như đối với mã khối, hàm hash cũng có tấn công vét cạn, cụ thể: Hash chống va chạm mạnh có giá 2m/2 size 12{2 rSup { size 8{m/2} } } {}, có nghĩa là với m là độ dài mã hash thì 2m/2 size 12{2 rSup { size 8{m/2} } } {}xác định sức mạnh của nó chống đối lại tấn công vét cạn. Ta cần lựa chọn m đủ lớn để việc duỵêt tìm 2m/2 size 12{2 rSup { size 8{m/2} } } {} phương án là không khả thi. Có đề xuất Hash 128 bit cho MD5 phần cứng. Nhưng có thể tìm được va chạm sau 24 ngày. Do đó có thể coi là hash 128 bit có thể có lỗ hổng, không an toàn, tốt hơn dùng hash 160 bit.

Tấn công vét cạn trên MAC khó hơn, vì chúng đòi hỏi một cặp MAC của mẩu tin đã biết, do nó phụ thuộc thêm vào khoá. Có thể tấn công vào không gian khoá (như là tìm khoá) hoặc MAC. Độ dài ít nhất 128 bit MAC là cần thiết để đảm bảo an toàn

Thám mã tấn công có cấu trúc

Giống như mã khối muốn dùng tấn công vét cạn, có một số các tấn công thám mã là lựa chọn tốt nhất hiện có. Chẳng hạn

  • Nếu CVi = f[CVi-1, Mi]; H(M)=CVN
  • Thì ở đây thông thường khai thác sự va chạm của hàm f
  • Giống mã khối thường gồm một số vòng lặp
  • Khi đó tân công sử dụng các tính chất của các hàm vòng.

Các thuật toán Hash và MAC

  • Hàm Hash: thực hiện việc nén mẩu tin vê kích thước cố định bằng cách xử lý mẩu tin theo từng khối kết hợp dùng một hàm nén nào đó và có thể sử dụng mã khối.
  • Mã xác thực mẩu tin (MAC): thực hiện tạo phần xác thực cho mẩu tin có kích thước cố định, để cung cấp tính toàn vẹn của mẩu tin và tính xác thực thông qua việc sử dụng khoá. Có thể tiíen hành bằng cách sử dụng mã khối với chế độ móc nối hoặc hàm Hash.

Cấu trúc thuật toán Hash

Thuật toán Hash an toàn SHA (Secure Hash Algorithm)

SHA có nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa kỳ - NIST & NSA vào năm 1993, sau đó được nâng cấp vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet RFC3174, được nhắc đến như SHA-1. Nó được sử dụng với sơ đồ chữ ký điện tử DSA (Digital Signature Algorithm).

Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị Hash 160 bit. Các kết quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất sử dụng nó trong tương lai.

Sau đây ta mô tả chi tiết thuật toán SHA-1 và MD5:

Thuật toán SHA-1

Mô tả thụât toán

Đầu vào của thuật toán là một thông điệp có chiều dài bất kỳ nhỏ hơn 264 size 12{2 rSup { size 8{"64"} } } {} bit, SHA-1 cho ra kết quả là một thông điệp rút gọn có độ dài là 160 bit

Mở rộng thông điệp

F(t;B,C,D) được định nghĩa như sau:

f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0≤t≤19)

f(t;B,C,D) = B XOR C XOR D (20≤t≤39)

f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40≤t≤59)

f(t;B,C,D) = B XOR C XOR D (60≤t≤79).

Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích của việc mở rộng này là để đảm bảo cho thông điệp mở rộng có độ dài là bội số của 512.

Giả sử độ dài của thông điệp là l bit. Thêm bit 1 vào cuối thông điệp, theo sau là k bit 0 (k là số dương không âm nhỏ nhất sao cho l+1+k=448 (mod512)) . Sau đó thêm khối 64 bit là biểu diễn nhị phân của l.

Phân tích thông điệp mở rộng:

Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích thành N khối 512 bit M(1),M(2),…,M(N). Trong đó 512 bit của khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit,

Khởi tạo giá trị băm:

Giá trị băm là một chuỗi bit có kích thước bằng kích thước của thông điệp băm (trừ SHA-384) gồm các từ ghép lại.Trong đó Hj(i) size 12{H rSub { size 8{j} rSup { size 8{ ( i ) } } } } {} là từ j trong giá trị băm ở lần lặp I với 0≤i≤N size 12{0 <= i <= N} {}(số block có được sau khi chia văn bản được đệm) và 0≤j≤(số từ trong giá trị băm -1).Trước khi thực hiện giá trị băm, với mỗi thuật toán băm an toàn, giá trị băm ban đầu H(0) phải được thiết lập. Kích thước và số lượng từ trong H(0) tuỳ thuộc vào kích thước thông điệp rút gọn.

SHA-1 sử dụng dãy các hằng số K(0),…K(79) có giá trị như sau: K(t) = 5A827999 ( 0 <= t <= 19)

K(t) = 6ED9EBA1 (20 <= t <= 39) K(t) = 8F1BBCDC (40 <= t <= 59) K(t) = CA62C1D6 (60 <= t <= 79).

Thuật toán của bứơc tính giá trị băm SHA-1

SHA-1 được sử dụng để băm thông điệp M có độ dài l bit thoả mãn điều kiện 0≤l≤264 . Thuật toán sử dụng:

- Một bảng phân bố thông điệp gồm 80 từ 32 bit

- 5 biến 32 bit

- Một giá trị băm gồm 5 từ 32 bit

Kết quả của SHA-1 là một thông điệp rút gọn có độ dài 160 bit. Các từ của bảng phân bố thông điệp được ký hiệu W(0),W(1),…,W(79). 5 biến được ký hiệu là a,b,c,d,e.Các từ của giá trị băm ký hiệu giữ giá trị băm ban đầu thay thế bằng các giá trị băm thành công.H(i) sau mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N).

Tính toán thông điệp băm

Định nghĩa: S^n(X)=(X<<n) or (X>>32-n).

X<<n có nghĩa là loại bỏ từ trái sang phải n bit và thêm vào kết quả n số 0 vào bên phải. X>> có nghĩa là loại bỏ từ phải qua trái n bit và thêm vào kết quả n số 0 vào bên trái.

Khởi tạo H

H0 = 67452301 ; H1 = EFCDAB89

H2 = 98BADCFE ; H3 = 10325476

H4 = C3D2E1F0.

Chia M(i) thành 16 từ W(0), W(1),…,W(15) For t = 16 to 79

- W(t) = S^1(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)).

- Đặt a=H0 , b=H1,c=H2,d=H3,e=H4

For t = 0 to 79 do

- TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);

- e = d; d = c; c = S^30(b); b = a; a = TEMP;

- Đặt H0 = H0 + a,H1 = H1 + b,H2 = H2 + c,H3 = H3 + d,H4 = H4+ e.

Sau khi tính toán được hết M(n), thông điệp rút gọn là một chuỗi 160 bit là biểu diễn của 5 từ: H0 H1 H2 H3 H4

Đánh giá thuật toán

- SHA-1 được xem là an toàn đối với hiện tượng đụng độ vì rất khó tìm được hai thông điệp khác nhau có giá trị băm giống nhau

- SHA-1 được coi là chuẩn của việc bảo vệ các kênh liên lạc trực tuyến tồn tại trong 9 năm qua.

- SHA-1 được thiết kế cho bộ xử lý 32 bit, thế hệ sắp tới của máy tính dùng các bộ xử lý 64 bit mà SHA-1 không hiệu quả trên bộ xử lý này.

- Tháng 2 năm 2005 SHA-1 bị tấn công bời 3 chuyên gia người Trung Quốc. Thuật toán này đã bị giải mã thông qua phương pháp tính phân bổ.

Thuật toán MD5

Mô tả thuật toán

Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ dài cố định là 128 bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit.

Thuật toán:

Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0]m[1] m[2] ... m[b-1]

Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ dài của nó (bit) đồng dư với 448 theo môđun 512. Nghĩa là thông điệp được mở rộng sao cho nó còn thiếu 64 bit nữa thì sẽ có một độ dài chia hết cho 512. Việc thêm bit này được thực hiện như sau: một bit ‘1’ được thêm vào sau thông điệp, sau đó các bit ‘0’ được thêm vào để có một độ dài đồng dư với 448 môđun 512.

Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1.

Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau :

A=0x01234567

B=0x89abcdef

C=0xfedcba98

D=0x76543210

Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này nhận giá trị đầu vào là 3 từ 32 bit và tạo tạo ra một word 32 bit.

F(X,Y,Z) = XY v not(X) Z G(X,Y,Z)= XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z))

Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T là phần tử thứ i của bảng, thì T là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian. Thuật toán

/* Xử lý với mỗi khối 16 bit từ */

For i = 0 to N/16-1 do

/* Sao khối i vào X. */ For j = 0 to 15 do

Set X[j] to M[i*16+j]. end

AA = A BB = B CC = C DD = D

/* Vòng 1: Ký hiệu [abcd k s i] là thao tác sau

a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */

/* Làm 16 thao tác sau đây*/

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]

[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]

[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

/* Vòng 2: Ký hiệu [abcd k s i] là thao tác sau đây

a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */

/* Làm 16 thao tác sau đây*/

[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

/* Vòng 3: Ký hiệu [abcd k s t] là thao tác sau đây

a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */

/* Làm 16 thao tác sau đây*/

[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]

[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]

/* Vòng 4: Ký hiệu [abcd k s t] là thao tác sau đây

a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */

/* Làm 16 thao tác sau đây*/

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

/* Tính */

A = A + AA B = B + BB C = C + CC D = D + DD

end /* Kêt thúc vòng lặp trên i*/

Bước 5: Thông điệp rút gọn = A||B||C||D.

Đánh giá thuật toán MD5

Về tốc độ sinh ra chuỗi cốt yếu thì MD5 chậm hơn so với MD4 nhưng nó lại an toàn hơn rất nhiều so với MD4. Thuật toán số hóa thông điệp MD5 khá đơn giản để thực hiện, cung cấp một giá trị băm của thông điệp với độ dài tuỳ ý. Người ta cho rằng độ khó để tìm được 2 thông điệp có cùng giá trị băm là khoảng 264 bước tính, và độ khó để tìm được một thông điệp với giá trị băm cho trước là 2128 bước tính. Tuy nhiên lỗ hổng mới phát hiện trong thuật toán MD5 sẽ cho phép kẻ tấn công có thể tạo ra file giả mạo trong vòng vài giờ với loại máy tính đạt chuẩn.

Chuẩn Hash an toàn nâng cao

Viện chuẩn công nghệ quốc gia NIST xuất bản bản sửa FIPS 180-2 vào năm 2002, đề nghị bổ sung 3 phiên bản mới của SHA: SHA-256, SHA-384, SHA-512. Các phiên bản trên được thiết kế tương thích với việc tăng độ an toàn được cung cấp bởi chuẩn mã nâng cao AES. Về cấu trúc và chi tiết giống SHA-1, suy ra việc phân tích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so với SHA-1.

Tổng quan SHA 512

Hàm nén SHA-512

SHA-512 là trọng tâm của thuật toán. Ở đây xử lý mẩu tin với các khối 1024 bit và bao gồm 80 vòng

o cập nhật bộ đệm 512 bit

o Sử dụng giá trị Wt 64 bit được lấy ra từ block hiện tại của mẩu tin

o Và hằng số quay vòng dựa trên căn bậc ba của 80 số nguyên tố đầu tiên

Hàm quay vòng của SHA-512

Hàm Hash Whirlpool

Bây giờ xem xét hàm Hash Whirlpool, được tán thành bởi dự án NESSIE của châu Âu. Ở đây sử dụng biến đổi bên trong của chuẩn mã nâng cao AES làm hàm nén và hướng tới sử dụng mã khối như trước. Chất lượng thực hiện của Whirrlpool sánh được với các thuật toán nổi tiếng như SHA.

Tổng quan Whirlpool được trình bày trên hình vẽ sau

Mã khối Whirlpool

Whirlpool được thiết kế riêng cho việc sử dụng hàm Hash với độ an toàn và hiệu quả như chuẩn mã nâng cao AES, nhưng với kích thước khối 512 bit hash. Hàm và cấu trúc tương tự như AES nhưng đầu vào được ánh xạ khéo léo vào 10 hàng và các đa thức nguyên tố khác trên GF(28). Ở đây sử dụng giá trị và thiết kế S-box khác.

An toàn và chất lượng thực hiện của Whirlpool

Whirlpool mới được đề xuất, nên có ít kinh nghiệm sử dụng. Tuy nhiên nó được xây dựng dựa trên kỹ thuật của AES đã được dùng nhiều. Có thể Whirlpool cần nhiều thiết bị phần cứng hơn SHA, nhưng chất lượng thực hiện sẽ tốt hơn.

Hàm Hash có khoá giống như MAC

Khi đã có các hàm Hash tốt, chúng ta muốn có các mã xác thực mẩu tin MAC dựa trên các hàm Hash đó. Vì hàm Hash thông thường nhanh hơn và mã nguồn của hàm Hash được phổ biến rộng rãi hơn, nên việc sử dụng chúng tạo nên MAC sẽ hiệu quả hơn. Ta có thể coi MAC là Hash bao gồm cả khoá với mẩu tin, cụ thể được đề xuất như sau

KeyedHash = Hash (Key | Message)

Trong trường hợp này có một số điểm yếu đã được tìm thấy. Chính vì muốn khắc phục các điểm yếu đó, một phương án kết hợp Hash để tạo nên MAC được phát triển là HMAC.

HMAC

HMAC được thiết kế theo chuẩn Internet RFC2104, sử dụng hàm Hash trên mẩu tin:

HMACK = Hash [(K+ XOR opad) || Hash [(K+ XOR ipad) || M)]]

trong đó K+ là khoá đệm mở rộng của K và opad, ipad là các hằng bộ đệm đặc biệt, M là mẩu tin. Như vậy cần tính nhiều hơn 3 hàm Hash so với nếu bản tin đứng một mình. Bất cứ hàm Hash nào cũng có thể được sử dụng trong sơ đồ trên: MD5, SHA-1, RIPEMD-160 hay Whirlpool.

Tổng quan HMAC

An toàn HMAC

Sự an toàn được chứng minh liên quan đến thuật toán Hash nền trong sơ đồ trên. Tấn công HMAC yêu cầu phải hoặc:

o Tấn công vét cạn khoá đã sử dụng hoặc

o Tấn công ngày sinh nhật (tuy cần quan sát số lượng rất lớn mẩu tin)

Có thể lựa chọn phán đoán hàm Hash được sử dụng dựa trên tốc độ và các ràng buộc an toàn.

CMAC

Trước kia đã xét Thuật toán xác thực dữ liệu DAA (CBC-MAC), được sử dụng rộng rãi trong các chính phủ và công nghiệp. Nhưng kích thước bản MAC có giới hạn nhỏ hơn hoặc bằng 64 bit. Có thể khắc phục nhược điểm trên bằng cách sử dụng 2 khoá và bộ đệm như sau: phương pháp được viết tắt từ Mã xác thực mẩu tin dựa trên mã (Cipher-based Message Authentication Code (CMAC) và được đề xuất bởi NIST SP800-38B:

Tổng quan CMAC

Chúng ta sẽ xem xét các hàm xác thực được phát triển để hỗ trợ xác thực mức ứng dụng và chữ ký điện tử. Đồng thời cũng xem xét dịch vụ xác thực dùng khoá riêng Kerrberros. Và sau đó xét dịch vụ xác thực dùng khoá công khai X.509.

Kerberos

Đây là mô hình Hệ thống khoá máy chủ tin cậy của MIT (Trường Đại học Kỹ thuật Massachusetts) để cung cấp xác thực có bên thứ ba dùng khoá riêng và tập trung. Cho phép người sử dụng truy cập vào các dịch vụ phân tán trong mạng. Tuy nhiên không cần thiết phải tin cậy mọi máy trạm, thay vì đó chỉ cần tin cậy máy chủ xác thực trung tâm.

Đã có hai phiên bản đang sử dụng là: Kerberos 4 và Kerberos 5.

Các yêu cầu của Kerrberos

Báo cáo đầu tiên của: Kerberos nêu các yêu cầu sau

o An toàn

o Tin cậy

o Trong suốt

o Có thể mở rộng

Ở đây cài đặt sử dụng thủ tục xác thực Needham-Schroeder.

Tổng quan Kerberos 4

Là sơ đồ xác thực dùng bên thứ ba cơ bản và có máy chủ xác thực (AS – Authentication Server). Người dùng thỏa thuận với AS về danh tính của mình, AS cung cấp sự tin cậy xác thực thông qua thẻ cấp thẻ TGT (Ticket Granting Ticket) và máy chủ cung cấp thẻ (TGS – Ticket Granting Server). Người sử dụng thường xuyên yêu cầu TGS cho truy cập đến các dịch vụ khác dựa trên thẻ cấp thẻ TGT của người sử dụng.

Trao đổi Kerberos 4

Người sử dụng nhận thẻ được cấp từ máy chủ xác thực AS, mỗi thẻ cho một phiên làm việc và cũng nhận thẻ cấp dùng dịch vụ (service granting ticket) từ TGT. Mỗi thẻ dùng cho một dịch vụ khác nhau được yêu cầu, thông qua việc trao đổi giữa máy chủ/trạm để nhận được dịch vụ.

Các lãnh địa Kerberos

Môi trường Kerberos bao gồm: máy chủ Kerberos, một số máy trạm đã được đăng ký với máy chủ, các máy chủ ứng dụng chia sẻ khoá với máy chủ. Một hệ thống như vậy được gọi là một lãnh địa Kerberos. Thông thường là một miền hành chính duy nhất. Nếu có nhiều lãnh địa, thì các máy chủ Kerberos cần phải chia sẻ khoá và tin cậy nhau.

Kerberos phiên bản 5

Kerberos 5 được phát triển vào giữa những năm 1990, được thiết kế theo chuẩn RFC 1510. Nó cung cấp những cải tiến so với phiên bản 4, cụ thể hướng tới các thiếu xót về môi trường, thuật toán mã, thủ tục mạng thứ tự byte, thời gian sử dụng thẻ, truyền tiếp xác thực, xác thực lãnh địa con. Và các sự khác biệt về kỹ thuật như: mã kép, các dạng sử dụng không chuẩn, khoá phiên, chống tấn công mật khẩu.

Sau đây ta xem xét chi tiết mô hình Kerberos

Kerberos là một giao thức xác thực mạng, nó cho phép các cá nhân giao tiếp với nhau trên một mạng không an toàn bằng cách xác thực người dùng này với người dùng khác theo một cơ chế bảo mật và an toàn. Kerberos ngăn chặn việc nghe trộm thông tin cũng như tấn công thay thế và đảm bảo tính toàn vẹn của dữ liệu. Kerberos hoạt động theo mô hình máy trạm/máy chủ và nó thực hiện quá trình xác thực 2 chiều - cả người dùng và dịch vụ xác thực lẫn nhau. Kerberos được xây dựng dựa trên mô hình mã hóa khóa đối xứng và đòi hỏi một thành phần thứ ba tin cậy tham gia vào quá trình xác thực.

Mô tả giao thức

Kerberos sử dụng một đối tác tin cậy thứ ba để thực hiện quá trình chứng thực được gọi là Trung tâm phân phối khóa bao gồm 2 phần riêng biệt: một máy chủ chứng thực (AS) và một máy chủ cấp thẻ (TGS). Kerberos làm việc dựa trên các thẻ để thực hiện quá trình chứng thực người dùng.

Kerberos duy trì một cơ sở dữ liệu chứa các khoá bí mật. Mỗi thực thể trên mạng (máy trạm hoặc máy chủ) đều chia sẽ một khoá bí mật chỉ giữa bản thân nó với Kerberos. Để thực hiện quá trình giao tiếp giữa 2 thực thể, Kerberos tạo ra một khoá phiên. Khóa này dùng để bảo mật quá trình tương tác giữa các thực thể với nhau.

Hoạt động của Kerberos:

Quá trình hoạt động của giao thức (AS = Máy chủ xác thực, TGS = Máy chủ cấp thẻ, C = Máy trạm, S = Dịch vụ):

1. Người dùng nhập vào tên truy cập và mật khẩu ở phía máy trạm.

2. Máy trạm thực hiện thuật toán băm một chiều trên mật khẩu được nhập vào và nó trở thành khoá bí mật của máy trạm.

3. Máy trạm gởi một thông điệp dưới dạng bản rõ đến AS để yêu cầu dịch vụ. Không có khoá bí mật cũng như mật khẩu nào được gởi đến AS.

4. AS kiểm tra xem có tồn tại người dùng C trong cở sở dữ liệu của nó hay không. Nếu có, nó gởi ngược lại cho máy trạm 2 thông điệp:

o Thông điệp A: chứa khoá phiên Máy trạm/TGS được mã hóa bởi khoá bí mật của người dùng.

o Thông điệp B: chứa Thẻ (bao gồm ID của máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ có giá trị và một khoá phiên máy trạm/TGS) được mã hóa sử dụng khoá bí mật của TGS.

5. Khi máy trạm nhận được thông điệp A và B, nó giải mã thông điệp A để lấy khoá phiên máy trạm/TGS. Khoá phiên này được sử dụng cho quá trình giao đổi tiếp theo với TGS. Ở đây máy trạm không thể giải mã thông điệp B bởi vì nó được mã hóa bởi khoá bí mật của TGS.

6. Khi yêu cầu dịch vụ (S), máy trạm gởi 2 thông điệp sau đến TGS:

o Thông điệp C: Gồm thông điệp B và ID của dịch vụ được yêu cầu

o Thông điệp D: chứa Authenticator (gồm ID máy trạm và nhãn thời gian -timestamp) được mã hóa bởi khoá phiên Máy trạm/TGS.

7. Khi nhận được thông điệp C và D, TGS giải mã thông điệp D sử dụng khoá phiên máy trạm/TGS và gởi 2 thông điệp ngược lại cho máy trạm:

o Thông điệp E: chứa thẻ (máy trạm đến máy chủ) (bao gồm ID máy trạm, địa chỉ mạng của máy trạm, kỳ hạn thẻ có giá trị và một khoá phiên máy trạm/dịch vụ) được mã hóa bởi khoá bí mật của dịch vụ.

o Thông điệp F: chứa khoá phiên của máy trạm/máy chủ được mã hóa bởi khoá phiên máy trạm/TGS.

8. Khi nhận được thông điệp E và F, máy trạm sau đó gởi một Authenticator mới và một thẻ (máy trạm đến máy chủ) đến máy chủ chứa dịch vụ được yêu cầu.

o Thông điệp G: chứa thẻ (máy trạm đến máy chủ) được mã hóa sử dụng khoá bí mật của máy chủ.

o Thông điệp H: một Authenticator mới chứa ID máy trạm, Timestamp và được mã hóa sử dụng khoá phiên máy trạm/máy chủ.

9. Sau đó, máy chủ giải mã thẻ sử dụng khoá bí mật của chính nó, và gởi một thông điệp cho máy trạm để xác nhận tính hợp lệ thực sự của máy trạm và sự sẵn sàng cung cấp dịch vụ cho máy trạm.

o Thông điệp I: chứa giá trị Timestamp trong Authenticator được gởi bởi máy trạm sẽ được cộng thêm 1, được mã hóa bởi khoá phiên máy trạm/máy chủ.

10. Máy trạm sẽ giải mã sự xác nhận này sử dụng khóa chia sẽ giữa nó với máy chủ, và kiểm tra xem giá trị timestamp có được cập nhật đúng hay không. Nếu đúng, máy trạm có thể tin tưởng máy chủ và bắt đầu đưa ra các yêu cầu dịch vụ gởi đến máy chủ.

11. Máy chủ cung cấp dịch vụ được yêu cầu đến máy trạm.

Hạn chế của Kerberos

Kerberos thích hợp cho việc cung cấp các dịch vụ xác thực, phân quyền và bảo đảm tính mật của thông tin trao đổi trong phạm vi một mạng hay một tập hợp nhỏ các mạng. Tuy nhiên, nó không thật thích hợp cho một số chức năng khác, chẳng hạn như ký điện tử (yêu cầu đáp ứng cả hai nhu cầu xác thực và bảo đảm không chối cãi được). Một trong những giả thiết quan trọng của giao thức Kerberos là các máy chủ trên mạng cần phải tin cậy được. Ngoài ra, nếu người dùng chọn những mật khẩu dễ đoán thì hệ thống dễ bị mất an toàn trước kiểu tấn công từ điển, tức là kẻ tấn công sẽ sử dụng phương thức đơn giản là thử nhiều mật khẩu khác nhau cho đến khi tìm được giá trị đúng.

Do hệ thống hoàn toàn dựa trên mật khẩu để xác thực người dùng, nếu bản thân các mật khẩu bị đánh cắp thì khả năng tấn công hệ thống là không có giới hạn. Điều này dẫn đến một yêu cầu rất căn bản là Trung tâm phân phối khóa cần được bảo vệ nghiêm ngặt. Nếu không thì toàn bộ hệ thống sẽ trở nên mất an toàn.

Toàn vẹn dữ liệu

Đối với mỗi hệ bảo mật toàn vẹn dữ liệu là một yêu cầu không thể thiếu, để đảm bảo tính toàn vẹn dữ liệu thực sự, các thuật mã hoá như mã hoá băm, mã xác nhận thông điệp (MAC) và chữ ký điện tử có thể cùng được triển khai đồng loạt. Về cơ bản, những biện pháp này sử dụng các hàm một chiều, nghĩa là dữ liệu không thể bị giải mã ngay cả khi đã biết khoá để mã hoá nó.

Dịch vụ xác thực X.509

Dịch vụ xác thực X.509 là một phần của chuẩn dịch vụ thư mục CCITT X.500. Ở đây các máy chủ phân tán bảo trì cơ sở dữ liệu thông tin của người sử dụng và xác định khung cho các dịch vụ xác thực. Thư mục chứa các chứng nhận khoá công khai, khoá công khai của người sử dụng được ký bởi chủ quyền chứng nhận. Để thống nhất dịch vụ cũng xác định các thủ tục xác thực, sử dụng mã khoá công khai và chữ ký điện tử. Tuy thuật toán không chuẩn nhưng được RSA đề xuất. Các chứng nhận X.509 được sử dụng rộng rãi.

Các chứng nhận X.509

Được phát hành bởi Chủ quyền chứng nhận (Certification Authority – CA) bao gồm:

o Các phiên bản 1,2 hoặc 3

o Số sổ (duy nhất với CA) xác định chứng nhận

o Thuật toán xác định chữ ký

o Xuất bản tên X.500 (CA)

o Chu kỳ hiệu lực (từ-đến ngày)

o Đối tượng của tên X.500 (tên của người sở hữu)

o Đối tượng thông tin khoá công khai (thuật toán, các tham số,khoá)

o Định danh duy nhất xuất bản (phiên bản 2+)

o Định danh duy nhất đối tượng (phiên bản 2+)

o Các trường mở rộng (phiên bản 3)

o Chữ ký (hoặc hash của các trường trong chứng nhận) Ký hiệu CA<<A>> là chứng nhận cho A được ký bởi CA

Nhận chứng nhận

Người sử dụng bất kỳ có thể trao đổi với CA để nhận được chứng nhận. Chỉ CA có thể sửa chứng nhận. Vì không thể bị giả mạo nên chứng nhận có thể được đặt trong thư mục công cộng.

Sơ đồ phân cấp CA

Nếu cả hai người sử dụng chia sẻ chung CA thì họ được giả thiết là biết khoá công khai của CA đó. Ngược lại các CA cần tạo nên sơ đồ phân cấp để trao đổi chứng nhận với nhau. Sử dụng chứng nhận liên kết các thành viên của sơ đồ để có được chứng nhận của các CA khác. Mỗi CA có thể gửi tiếp (forward) các chứng nhận của mình cho clients và có thể gửi lại (backward) chứng nhận của mình cho cha của nó. Mỗi client tin tưởng các chứng nhận của cha. Có thể kiểm chứng chứng nhận bất kỳ của một CA cho người sử dụng bằng các CA khác trong sơ đồ phân cấp.

Sự thu hồi chứng nhận

Giấy chứng nhận có chu kỳ sử dụng, có thể thu hồi trước thời hạn trong những trường hợp cần thiết như: khoá riêng của người sử dụng bị lộ, người dùng không tiếp tục được chứng nhận bởi CA đó, Giấy chứng nhận của CA bị làm hại. Nói chung CA bảo trì danh sách các chứng nhận bị thu hôì (CRL – Certificate Revocation List). Người sử dụng có thể kiểm tra lại các chứng nhận đã bị thu hồi.

Các thủ tục xác thực

X.509 bao gồm ba thủ tục xác thực tùy chọn: xác thực một chiều, xác thực hai chiều và xác thực ba chiều. Mọi thủ tục trên đều sử dụng các chữ ký khoá công khai.

Xác thực một chiều

Một chiều A->B được sử dụng để thiết lập

o Danh tính của A và rằng mẩu tin là từ A

o Mẩu tin được gửi cho B

o Tính toàn vẹn và gốc gác của mẩu tin

Mẩu tin có thể bao gồm cả nhãn thời gian, ký hiệu đặc trưng của mẩu tin (nonce), danh tính của B và nó được ký bởi A. Có thể bao gồm một số thông tin bổ sung cho B như khoá phiên.

Xác thực hai chiều

Hai mẩu tin A->B và B->A được thiết lập, ngoài mẩu tin từ A đến B như trên còn có:

o Danh tính của B và trả lời từ B

o Trả lời này dành cho A

o Tính toàn vẹn và gốc gác của trả lời

Trả lời bao gồm cả ký hiệu đặc trưng của mẩu tin (nonce) từ A, cả nhãn thời gian và ký hiệu đặc trưng trả lời từ B. Có thể bao gồm một số thông tin bổ sung cho A.

Xác thực ba chiều

Ba mẩu tin A->B, B->A và A->B được thiết lập như trên mà không có đồng hồ đồng bộ. Ngoài 2 chiều như trên còn có trả lời lại từ A đến B chứa bản sao nonce của trả lời từ B, nghĩa là các nhãn thời gian mà không cần kiểm tra.

X.509 phiên bản 3

Trong phiên bản 3 được bổ sung một số thông tin cần thiết trong giấy chứng nhận như: Email/URL, chi tiết về đợt phát hành, các ràng buộc sử dụng. Tốt hơn hết là đặt tên tường minh cho các cột mới xác định trong phương pháp mở rộng tổng quát. Các mở rộng bao gồm:

o Danh tính mở rộng

o Chỉ dẫn tính quan trọng

o Giá trị mở rộng

Các mở rộng xác thực

Khoá và các thông tin đợt phát hành

o Bao trùm thông tin về đối tượng, khoá người phát hành, chỉ thị kiểu phát hành, chứng nhận

Đối tượng chứng nhận và các thuộc tính người phát hành

o Hỗ trợ có tên phụ, định dạng phụ cho các đối tượng và người phát hành

Chứng nhận các ràng buộc phát hành

o Cho phép sử dụng các ràng buộc trong chứng nhận bởi các CA khác

Bài tập

Chữ ký điện tử DSA:

  • Cho p = 23, q = 11, h=3
  • Tính g
  • NSA A chọn khoá riêng xA = 7, tính khoá công khai của yA của A
  • Cho bản Hash của M là H(M) = 15
  • Chọn số ngẫu nhiên k = 6
  • Tính chữ ký điện tử của A: (r, s)
  • Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M.

Chữ ký điện tử DSA:

  • Cho p = 53, q = 13, h=5
  • Tính g
  • NSA A chọn khoá riêng xA = 11, tính khoá công khai của yA của A
  • Cho bản Hash của M là H(M) = 17
  • Chọn số ngẫu nhiên k = 9
  • Tính chữ ký điện tử của A: (r, s)
  • Nêu cách người nhận kiểm chứng chữ ký điện tử của A trên bản tin M.

Hãy cho biết các phương pháp phân phối khoá công khai. Và các cách trao đổi công khai khoá mật giữa hai người sử dụng

Nêu sự khác biệt giữa MAC và Hash và nêu tác dụng của chúng. Cho một số ví dụ về các hàm MAC và Hash.

Cho biết HMAC là gì, sử dụng chúng vào mục đích nào?

Nêu một số cách tạo và kiểm chứng chữ ký điện tử?

Chứng minh “Nghịch lý Ngày sinh nhật”, tức là có ít nhất 23 người, thì xác suất để có hai người trùng ngày sinh nhật sẽ lớn hơn hoặc bằng 0.5?

Các hàm số học và logic cơ bản nào dùng trong MD5?

Các hàm số học và logic cơ bản nào dùng trong SHA-1?

10. Các hàm số học và logic cơ bản nào dùng trong RIPEMD-160?

Trình bày hoạt động của các giao thức xác thực trên mô hình Kerberos.

Nêu nội dung dịch vụ xác thực X.509?

0