Hàm băm (Cryptographic hash function)

Một phần của tài liệu NGHIÊN CỨU VẤN ĐỀ BẢO MẬT TRONG XÂY DỰNG ỨNG DỤNG ECOMMERCE (ONLINE PAYMENT) (Trang 29 - 33)

2.1.2.1. Giới thiệu hàm băm

Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint).

Hình 2.2 Ví dụ hàm băm

Nói rộng, một hàm băm phải hoạt động càng giống với một hàm ngẫu nhiên càng tốt, trong khi vẫn có tính chất đơn định và tính toán có hiệu quả.

Một hàm băm mật mã học được coi là không an toàn nếu một trong các việc sau là khả thi về mặt tính toán:

64. Cho một tóm tắt (digest), tìm một thông điệp (chưa biết) khớp với tóm tắt đó

65. Tìm các "xung đột băm" (hash collision), trong đó

hai thông điệp khác nhau có tóm tắt trùng nhau.

Nếu có thể thực hiện một trong hai việc trên, một người có thể tấn công bằng cách dùng các cách trên để thay một thông điệp không được xác nhận (unauthorized message) vào chỗ của một thông điệp được xác nhận.

2.1.2.2. Ứng dụng của hàm băm

Một ứng dụng điển hình của một hàm băm mật mã học như sau: Alice đưa cho Bob một câu đố khó và tuyên bố rằng cô ấy đã giải được rồi. Bob muốn tự giải, nhưng cũng muốn chắc chắn là Alice đúng là đã giải được. Do đó, Alice viết đáp án, gắn thêm một nonce ngẫu nhiên, tính giá trị băm của nó, và đưa kết quả băm cho Bob (trong khi vẫn giữ bí mật đáp án và nonce). Bằng cách này, khi Bob tự giải xong, Alice có thể chứng minh rằng cô đã có đáp án từ trước bằng cách đưa nonce cho Bob.

Trong thực tiễn, Alice và Bob thường là các chương trình máy tính, và bí mật thường là cái gì đó không dễ lừa bằng một lời giải cho câu đó. Ứng dụng trên được gọi là một hệ thống tin cậy (commitment scheme).

Một ứng dụng quan trọng khác của các hàm băm bảo mật là sự kiểm tra tính toàn vẹn của thông điệp. Ví dụ, việc xác định xem một file hay một thông điệp có bị sửa đổi hay không có thể thực hiện bằng cách so sánh tóm tắt được tính trước và sau khi gửi (hoặc một sự kiện bất kỳ nào đó). Còn có thể dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho việc nhận dạng file. Một ứng dụng có liên quan là kiểm tra mật khẩu. Mật khẩu thường không được lưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt. Để xác thực một người dùng, mật khẩu do người đó nhập vào được băm và so sánh với kết quả băm được lưu trữ.

Do các lý do cả về bảo mật và hiệu năng chương trình, đa số các thuật toán chữ ký số nói rằng chỉ có tóm lược của thông điệp, chứ không phải toàn văn thông điệp, được "ký". Các hàm băm còn có thể được dùng để tạo các bit giả ngẫu nhiên (pseudorandom).

SHA-1, MD5, và RIPEMD-160 nằm trong số các thuật toán tóm tắt thông điệp được dùng rộng rãi nhất của năm 2005. Tháng 8 năm 2004, các nhà nghiên cứu đã tìm được các điểm yếu của một loạt hàm băm, trong đó có MD5, SHA-0 và RIPEMD. Tháng 2 năm 2005, người ta ghi nhận một tấn công đối với SHA-1. Tháng 8 năm 2005, người ta lại ghi nhận một tấn công khác đối với SHA-1.

Các hàm băm được dùng để nhận dạng các file trong các mạng chia sẻ tệp đồng đẳng. Ví dụ, trong một ed2k link, một biến thể của MD4 được kết hợp với kích thước file để cung cấp thông tin cho việc xác định nguồn file, tải xuống và kiểm tra nội dung.

2.1.2.3. MD5 (Message-Digest algorithm 5)

MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit. Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rông rải trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin.

MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2).

MD5 có 2 ứng dụng quan trọng:

66. MD5 được sử dụng rộng rải trong thế giới phần mềm

để đảm bảo rằng tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5. Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.

67. MD5 được dùng để mã hóa mật khẩu. Mục đích của

từ đoạn mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)

Một vài bảng băm MD5

68. Bảng băm MD5 128 bit (16 byte) (còn được gọi là

message digests) được biểu diễn bằng chuỗi 32 số thập lục phân. MD5("hello") = 5d41402abc4b2a76b9719d911017c592

69. Thậm chí một sự thay đổi nhỏ trong mẩu tin cũng

dẫn đến thay đổi hoàn toàn bảng băm, do hiệu ứng thác. Ví dụ, thay “e” thành “a”:

MD5("hallo") = 598d4c200461b81522a3328565c25f7c

70. Bảng băm của một chuỗi rỗng là: (adsbygoogle = window.adsbygoogle || []).push({});

MD5("") = d41d8cd98f00b204e9800998ecf8427e 2.1.2.4. SHA (Secure Hash Algorithm)

SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là năm thuật giải được chấp nhận bởi FIPS dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao.

Năm thuật giải SHA là:

71. SHA-1 : trả lại kết quả dài 160 bit

72. SHA-224 : trả lại kết quả dài 224 bit

73. SHA-256: trả lại kết quả dài 256 bit

74. SHA-384: trả lại kết quả dài 384 bit

75. SHA-512: trả lại kết quả dài 512 bit.

bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute of Standards and Technology hay NIST). Bốn thuật giải sau thường được gọi chung là SHA-2.

SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME, và IPSec. SHA-1 được coi là thuật giải thay thế MD5, một thuật giải băm 128 bit phổ biến khác.

Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật mã học người Trung Quốc đã phát triển thành công một thuật giải dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi SHA-1[1]. Mặc dù chưa có ai làm được điều tương tự với SHA-2, nhưng vì về thuật giải, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật giải khác tốt hơn SHA. NIST cũng đã khởi đầu một cuộc thi phát triển thuật giải băm mới an toàn hơn SHA, giống như quy trình phát triển chuẩn mã hóa tiên tiến (Advanced Encryption Standard hay AES).

Một vài bảng băm SHA-1

76. Đoạn dữ liệu gốc sử dụng bảng mã ASCII được biểu

diễn bằng chuỗi 40 số thập lục phân

SHA-1 ("hello") = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

77. Thay “e” thành “a”:

SHA-1 ("hallo") = fd4cef7a4e607f1fcc920ad6329a6df2df99a4e8

78. Bảng băm của một chuỗi rỗng là:

SHA-1 ("") = da39a3ee5e6b4b0d3255bfef95601890afd80709

Một phần của tài liệu NGHIÊN CỨU VẤN ĐỀ BẢO MẬT TRONG XÂY DỰNG ỨNG DỤNG ECOMMERCE (ONLINE PAYMENT) (Trang 29 - 33)