intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Hàm băm mật mã

Chia sẻ: Bautroibinhyen17 Bautroibinhyen17 | Ngày: | Loại File: PDF | Số trang:8

111
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Với mong muốn làm chủ mã nguồn, làm chủ chương trình, các tác giả đã cố gắng tìm hiểu và cài đặt hàm băm SHA-256 phục vụ cho đề tài Xây dựng hệ thống chữ ký số cho trường Đại học Thăng Long. Trong bài báo sẽ mô tả chi tiết về hàm băm này.

Chủ đề:
Lưu

Nội dung Text: Hàm băm mật mã

K y u công trình khoa h c 2015 – Ph n I<br /> <br /> HÀM BĂM MẬT MÃ<br /> Nguyễn Minh Hòa<br /> Khoa Toán-Tin, Đại học Thăng Long<br /> Email: mr.nmh175@gmail.com<br /> Tóm tắt: Khái niệm hàm băm đã xuất hiện từ lâu trong lĩnh vực máy tính. Nó ánh xạ<br /> một xâu nhị phân (văn bản, hình ảnh, âm thanh,…) có độ dài bất kỳ thành một xâu có độ dài<br /> cố định. Bản chất của mã băm có thể coi như “dấu vân tay” của một văn bản. Nhờ có nó ta<br /> có thể đảm bảo rằng một văn bản là chính xác và không bị sửa đổi. Hiện nay trên thế giới có<br /> rất nhiều hàm băm phục vụ cho nhiều mục đích khác nhau như quân sự, truyền tin, xác thực…<br /> Với mong muốn làm chủ mã nguồn, làm chủ chương trình, chúng tôi đã cố gắng tìm hiểu và<br /> cài đặt hàm băm SHA-256 phục vụ cho đề tài Xây dựng hệ thống chữ ký số cho trường Đại<br /> học Thăng Long. Trong bài báo sẽ mô tả chi tiết về hàm băm này.<br /> Từ khóa:Hàm băm, Mã băm, Chữ ký số, SHA-256.<br /> 1.<br /> <br /> Giới thiệu<br /> <br /> Hàm băm là hàm ánh xạ một xâu nhị phân có độ dài bất kỳ thành một xâu nhị phân có độ dài<br /> cố định (thường được gọi là mã băm). Thông thường, độ dài của mã băm có thể là 128, 160,<br /> 256 hoặc 512 bit.Hàm băm có thể coi là hàm nén thông điệp một cách hợp lý.<br /> Để có thể dùng trong thực tế, hàm băm cần đảm bảo các tính chất như: thời gian tính toán<br /> nhanh, mã băm sinh ra phải ngẫu nhiên và thuật toán phải công khai. Nhằm mục đích đáp ứng<br /> các tính chất trên, hàm băm SHA-256 đã được xây dựng dựa trên sơ đồ Merkle-Damgard Ứng<br /> và hàm nén Davies-Meyer.Ứng dụng của nó là để kiểm tra tính toàn vẹn của thông điệp.<br /> Bài báo này sẽ trình bày chi tiết các lý thuyết và cách thức hoạt động của hàm băm SHA-256.<br /> Nội dung các phần bao gồm: Phần 2 sẽ mô tả về hàm băm kháng xung đột - một mô hình hàm<br /> băm phù hợp với thực tế; Phần 3 mô tả về hàm băm SHA-256; Phần cuối cũng sẽ nói về thực<br /> tế cài đặt hàm băm SHA-256 của dự án.<br /> 2. Hàm băm kháng xung đột<br /> 2.1. Các định nghĩa<br /> Định nghĩa 1.Hàm băm là hàm tính được một cách “hiệu quả”<br /> <br /> Nó ánh xạ một xâu nhị phân độ dài bất kỳ trong không gian thông điệp thành một xâu<br /> nhị phân độ dài cố định, gọi là mã băm.<br /> Thông thường độ dài của mã băm là d= 128, 160, 256 hoặc 512 bit.<br /> Ví dụ 1. Một số hàm băm trong thực tế.<br /> <br /> Trư ng Đ i h c Thăng Long<br /> <br /> 11<br /> <br /> K y u công trình khoa h c 2015 – Ph n I<br /> <br /> Hàm băm<br /> <br /> d<br /> <br /> MD4<br /> <br /> 128<br /> <br /> SHA-1<br /> <br /> 160<br /> <br /> SHA-256<br /> <br /> 256<br /> <br /> SHA-512<br /> <br /> 512<br /> <br /> SHA-3 (Keccak)<br /> <br /> 224, 256, 384, 512<br /> <br /> Giả sử hàm băm được thiết kế một cách lý tưởng (như ngẫu nhiên), khi đó cho trước<br /> <br /> . Con số này rất gần 0<br /> mã bămx, xác suất tìm được một dữ liệum thỏa mãn H(m) = x chỉ là<br /> khi d đủ lớn. Như vậy hàm băm cho ta một biểu diễn nén hợp lý của dữ liệu.<br /> Bên cạnh đó, để có thể dùng trong thực tế, hàm băm cần có một số tính chất sau:<br /> • Tính hiệu quả: có thuật toán “nhanh” (trong thời gian đa thức ) để tính h.<br /> • Tính ngẫu nhiên: giá trị H(m) là khó dự đoán.<br /> • Tính công khai.<br /> Định nghĩa 2.Một xung đột cho hàm H là một cặp<br /> <br /> thỏa mãn<br /> <br /> Rõ ràng, vì kích thước đầu vào của hàm băm lớn hơn so với kích thước đầu ra, nên<br /> theo nguyên lý “chuồng bồ câu”, luôn tồn tại xung đột. Tuy vậy, để hàm băm là an toàn thì<br /> việc tìm thấy xung đột phải rất “khó”. Có nghĩa rằng, xác suất tìm thấy xung đột phải “nhỏ”.<br /> Định nghĩa 3.Hàm H gọi là kháng xung độtnếu với mọi thuật toán (tường minh1)<br /> “hiệu quả” A, ta có<br /> <br /> là nhỏ “không đáng kể”.<br /> Hiệnnay, hàm băm<br /> dài tối đa<br /> đột.<br /> <br /> , ánh xạ các xâu nhị phân độ<br /> <br /> sang các xâu độ dài 256, được thừa nhận một cách rộng rãi là kháng xung<br /> <br /> Mục đích của hàm băm không phải là giữ bí mật không điệp mà là đảm bảo tính toàn<br /> vẹn thông điệp.<br /> <br /> 1<br /> <br /> Vì xung đột luôn tồn tại, nên ta có ngay thuật toán in ra xung đột đó. Tường minh ở đây hiểu rẳng thuật<br /> toán phải xây dựng xung đột từ mô tả của hàm băm, chứ không phải từ xung đột đã có.<br /> <br /> Trư ng Đ i h c Thăng Long<br /> <br /> 12<br /> <br /> K y u công trình khoa h c 2015 – Ph n I<br /> <br /> 2.2. Tấn công dùng nghịch lý ngày sinh<br /> <br /> . Thuật toán sau đây có thể được dùng để tìm xung<br /> <br /> Xét hàm băm<br /> <br /> đột cho các hàm băm trong thời gian<br /> <br /> .<br /> <br /> Thuật toán:<br /> 1. Chọn ngẫu nhiên<br /> phân biệt là cao).<br /> <br /> xâu trong<br /> <br /> (xác suất chúng đôi một<br /> <br /> :<br /> <br /> 2.<br /> <br /> Với<br /> <br /> , ta tính<br /> <br /> .<br /> <br /> 3.<br /> <br /> Tìm xung đột<br /> <br /> . Nếu không tìm thấy thì quay lại bước 1.<br /> <br /> Thuật toán được đánh giá dựa trên định lý sau đây:<br /> Định lý 1 (Nghịch lý ngày sinh nhật). Xét<br /> nhiên độc lập. Nếu<br /> <br /> là các biến ngẫu<br /> <br /> thì<br /> <br /> Từ định lý trên, ta thấy rằng kỳ vọng tìm được xung đột của thuật toán trên là 2. Thời<br /> gian cần cho thuật toán là<br /> Hàm băm<br /> <br /> và không gian cần là<br /> <br /> .<br /> <br /> Kích thước mã băm<br /> <br /> Tốc độ (MB/s)<br /> <br /> SHA-1<br /> <br /> 160<br /> <br /> 153<br /> <br /> SHA-256<br /> <br /> 256<br /> <br /> 111<br /> <br /> SHA-512<br /> <br /> 512<br /> <br /> 99<br /> <br /> Whirlpool<br /> <br /> 512<br /> <br /> Thời gian tấn công<br /> <br /> 57<br /> <br /> 2.3. Sơ đồ Merkle-Damgard<br /> Để xây dựng hàm băm kháng xung đột, kích thước mã băm tối thiểu nên là 160 bit.<br /> Tuy nhiên đầu vào có thể là một xâu với kích thước tùy ý. Trên thực tế, việc thiết kế hàm<br /> băm trên miền vô hạn là khó. Bởi vậy người ta thường thiết kế một hàm nén ánh xạ các xâu<br /> bit độ dài cố định s thành các xâu bít độ dài cố định d, sau đó thực hiện tính toán lặp với hàm<br /> nén để được hàm băm với đầu vào tùy ý.<br /> Phép biến đổi Merkle-Damgard là một cách phổ biến để mở rộng một hàm nén kháng<br /> xung đột với kích thước đầu vào cố định thành hàm băm kháng xung đột kích thước đầu vào<br /> tùy ý. Trong sơ đồ Merkle-Damgard, ta sử dụng hàm nén kích thước đầu vào cố định<br /> <br /> Trư ng Đ i h c Thăng Long<br /> <br /> 13<br /> <br /> K y u công trình khoa h c 2015 – Ph n I<br /> <br /> Hình 1. Sơ đồ Merkle-Damgard<br /> Mục đích của ta là xây dựng hàm băm kích thước đầu vào tùy ý<br /> <br /> Sơ đồ Merkle-Damgard được mô tả như trong Hình 1.<br /> Thuật toán Merkle-Damgard được mô tả như sau:<br /> 1. Dữ liệu cần bămm với độ dài |m| = L sẽ được ghép với dãy bit<br /> <br /> với l là số nguyên không âm nhỏ nhất để độ dài củam||PB chia hết cho k.<br /> 2. Thông điệp m||PB sẽ được chia thành các khốik bit:<br /> <br /> 3. Gán<br /> là một dãy d bit cố định.<br /> 4. Với i = 0, 1, …, t ta tính<br /> <br /> 5. Output<br /> <br /> .<br /> <br /> Tính an toàn của sơ đồ Merkle-Damgard được chỉ ra bởi định lý sau.<br /> Định lý 2. Nếu hàm nén h là kháng xung đột, vậy hàm H xây dựng theo sơ đồ MerkleDamgard cũng là kháng xung đột.<br /> 2.4. Xây dựng hàm nén<br /> Sơ đồ trước cho phép ta đưa bài toán thiết kế hàm băm kháng xung đột với đầu vào bất<br /> kỳ về bài toán thiết kế hàm nén với đầu vào cố định. Bây giờ ta xem xét một cách thiết kế<br /> hàm nén dựa trên mã khối an toàn.<br /> Xét hệ mã khối E trên không gian khóa K và không gian thông điệp<br /> <br /> :<br /> <br /> Hàm nén Davies-Meyer định nghĩa bởi:<br /> <br /> Trư ng Đ i h c Thăng Long<br /> <br /> 14<br /> <br /> K y u công trình khoa h c 2015 – Ph n I<br /> <br /> Giả sử (E,D) là một hệ mã khối “lý tưởng” (tập gồm |K| hoán vị ngẫu nhiên). Tìm một<br /> xung độth(x,y)= h(x',y')cho hàm nén Davies-Meyer định nghĩa ở trên mất<br /> D).<br /> <br /> lần tính (E,<br /> <br /> Để phù hợp với tiêu chuẩn quốc gia Việt Nam về chữ ký số (TCVN 7635:2007),<br /> chúng tôi sử dụng SHA-256 là hàm băm phục vụ dự án chữ ký số của trường Đại học Thăng<br /> Long. Hàm băm chuẩn SHA-256 được xây dựng dựa trên sơ đồ Merkle-Damgard,hàm nén<br /> Davies-Meyer và hệ mã khối SHACAL-2 với kích thước khối là 256.Phần tiếp theo, chúng ta<br /> sẽ mô tả chi tiết SHA-256 và SHACAL-2.<br /> 3. Hàm băm SHA-256<br /> Hàm băm SHA256 nhận đầu vào là một xâu bit (ký tự, tập tin…) bất kỳ có độ dài tối<br /> đa<br /> bit và tạo ra một mã băm có độ dài 256 bit và thường được biểu diễn dưới dạng 64<br /> chữ số trong hệ cơ số 16.<br /> 3.1. Sơ đồ chung<br /> Hàm băm này được xây dựng dựa trên sơ đồ Merkle-Damgard với<br /> là dãy 256 bit được chia thành 8 khối liên tiếp<br /> <br /> • Vector khởi tạo<br /> <br /> • Dữ liệu đầu vào được chia thành các khối m[i] kích thước 512 bit, và<br /> • Hàm nén Davies-Meyer<br /> <br /> định nghĩa bởi<br /> trong đó E là hệ mã khối an toàn<br /> <br /> 3.2. Hệ mã khối SHACAL-2<br /> Ta sử dụng một số ký hiệu sau để mô tả hệ mã khối SHACAL-2:<br /> Ký hiệu<br /> <br /> Trư ng Đ i h c Thăng Long<br /> <br /> Mô tả<br /> <br /> 15<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2