Sinh số giả ngẫu nhiên sử dụng hàm băm và MAC

Một phần của tài liệu Yêu cầu đối với mã xác thực thông điệp một mac, hay còn được gọi là tổng kiểm tra mật mã, được tạo ra bởi một hàm c có dạng (Trang 29 - 32)

Các thành phần cơ bản của bất kỳ trình tạo số giả ngẫu nhiên (PRNG) nào là giá trị hạt giống và thuật toán xác định để tạo ra một luồng các bit giả ngẫu nhiên.

Nếu thuật toán được sử dụng như một hàm giả ngẫu nhiên (PRF) để tạo ra một giá trị yêu cầu, chẳng hạn như khóa phiên, thì chỉ người dùng PRF mới biết hạt giống.

Nếu thuật toán được sử dụng để tạo ra một hàm mã hóa luồng, thì hạt giống có vai trò là khóa bí mật mà người gửi và người nhận phải biết.

Chúng tôi đã lưu ý trong Chương 8 và 10 rằng, vì thuật toán mã hóa tạo ra kết quả đầu ra có vẻ ngẫu nhiên, nên nó có thể được sử dụng làm cơ sở của một PRNG. Tương tự, hàm băm hoặc MAC tạo ra kết quả đầu ra có vẻ ngẫu nhiên và có thể được sử dụng để xây dựng PRNG. Cả tiêu chuẩn ISO 18031 (Tạo bit ngẫu nhiên) và NIST SP 800-90 (Đề xuất tạo số ngẫu nhiên sử dụng trình tạo bit ngẫu nhiên xác định) đều định nghĩa một phương pháp tạo số ngẫu nhiên sử dụng hàm băm mật mã. SP 800-90 cũng định nghĩa trình tạo số ngẫu nhiên dựa trên HMAC.

Chúng ta sẽ xem xét hai phương pháp này theo lượt.

PRNG dựa trên hàm băm

Hình 12.14a cho thấy chiến lược cơ bản cho một PRNG dựa trên hàm băm được quy định trong SP 800-90 và ISO 18031. Thuật toán nhận đầu vào sau:

V = hạt giống

seedlen = độ dài bit của V K + 64, trong đó k là mức bảo mật mong muốn được thể hiện bằng bit

n = số bit đầu ra mong muốn

(a) PRNG sử dụng hàm băm mật mã

(b) PRNG sử dụng HMAC

Hình 12.14 Cấu trúc cơ bản của PRNG dựa trên hàm băm (SP 800-90)

Thuật toán sử dụng hàm băm mật mã H với đầu ra giá trị băm là outlen bit.

Hoạt động cơ bản của thuật toán là:

m = ⌈n/outlen⌉

data = V

W = the null string For i = 1 to m

wi = H (data) W = || wi

data = (data + 1) mod 2seedlen

Return leftmost n bits of W

Do đó, luồng bit giả ngẫu nhiên là w1 || w2 ||…|| wm với khối cuối cùng được cắt ngắn nếu cần.

Thông số kỹ thuật SP 800-90 cũng cung cấp cho việc cập nhật V thường xuyên để tăng cường bảo mật. Thông số kỹ thuật cũng chỉ ra rằng không có điểm yếu nào được biết đến hoặc nghi ngờ trong cách tiếp cận dựa trên hàm băm cho một thuật toán băm mật mã mạnh, chẳng hạn như SHA-2.

PRNG dựa trên hàm MAC

Mặc dù không có điểm yếu nào được biết đến hoặc nghi ngờ trong việc sử dụng hàm băm mật mã cho PRNG theo cách của Hình 12.14a, nhưng có thể đạt được mức độ tin cậy cao hơn bằng cách sử dụng hàm MAC. Hầu hết mọi lúc,

HMAC được sử dụng để xây dựng PRNG dựa trên MAC. Điều này là do HMAC là một hàm MAC được tiêu chuẩn hóa và được sử dụng rộng rãi trong nhiều giao thức và ứng dụng. Như SP 800-90 chỉ ra, nhược điểm của cách tiếp cận này so với cách tiếp cận dựa trên hàm băm là thời gian thực thi lâu gấp hai lần, vì HMAC bao gồm hai lần thực thi hàm băm cơ bản cho mỗi khối đầu ra. Ưu điểm của cách tiếp cận HMAC là nó cung cấp mức độ tin cậy cao hơn về bảo mật của nó, so với cách tiếp cận dựa trên hàm băm thuần túy.

Đối với cách tiếp cận dựa trên MAC, có hai đầu vào: khóa K và hạt giống V.

Trên thực tế, sự kết hợp của K và V tạo thành hạt giống tổng thể cho PRNG được quy định trong SP 800-90. Hình 12.14b cho thấy cấu trúc cơ bản của cơ chế PRNG và cột bên trái của Hình 12.15 cho thấy logic. Lưu ý rằng khóa vẫn giữ nguyên cho mỗi khối đầu ra và dữ liệu đầu vào cho mỗi khối bằng với thẻ đầu ra của khối trước đó. Thông số kỹ thuật SP 800-90 cũng cung cấp cho việc cập nhật K và V thường xuyên để tăng cường bảo mật.

Thật bổ ích khi so sánh khuyến nghị SP 800-90 với việc sử dụng HMAC cho PRNG trong một số ứng dụng và điều này được hiển thị trong Hình 12.15. Đối với tiêu chuẩn bảo mật LAN không dây IEEE 802.11i (Chương 18), dữ liệu đầu vào bao gồm hạt giống được nối với một bộ đếm. Bộ đếm được tăng lên đối với mỗi khối wi của đầu ra. Cách tiếp cận này dường như mang lại bảo mật cao hơn so với cách tiếp cận SP 800-90. Xem xét rằng đối với SP 800-90, dữ liệu đầu vào cho khối đầu ra wi chỉ là đầu ra wi-1 của lần thực thi HMAC trước đó. Do đó, kẻ tấn công có thể quan sát đầu ra giả ngẫu nhiên biết cả đầu vào và đầu ra của HMAC.

Mặc dù vậy, với giả định rằng HMAC là an toàn, việc biết đầu vào và đầu ra không nên đủ để thu hồi K và do đó không đủ để dự đoán các bit giả ngẫu nhiên trong tương lai.

Cách tiếp cận được thực hiện bởi giao thức Transport Layer Security (Chương 17) và Giao thức Wireless Transport Layer Security (Chương 18) liên quan đến việc gọi HMAC hai lần cho mỗi khối đầu ra wi. Giống như IEEE 802.11, điều này được thực hiện theo cách mà đầu ra không cung cấp thông tin trực tiếp về đầu vào. Việc sử dụng HMAC hai lần làm tăng gấp đôi gánh nặng thực thi và dường như là quá mức cần thiết về bảo mật.

Một phần của tài liệu Yêu cầu đối với mã xác thực thông điệp một mac, hay còn được gọi là tổng kiểm tra mật mã, được tạo ra bởi một hàm c có dạng (Trang 29 - 32)

Tải bản đầy đủ (DOCX)

(36 trang)
w