Ứng dụng của h m băm trong chữ ký số

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu chữ ký không thể phủ nhận và ứng dụng trong quản lý hoạt động của doanh nghiệp (Trang 24 - 27)

Chương 1: CÁC KHÁI NIỆM CƠ BẢN

1.3.2.2. Ứng dụng của h m băm trong chữ ký số

Theo lý thuyết, xZp, tức là bản thông điệp x dùng để ký có độ dài không được quá số p. Tuy nhiên, trong thực tế thì bản thông điệp thường có độ dài lớn hơn rất nhiều lần số p. Sẽ là bất tiện nếu x quá lớn, vì thế người ta có thể cắt x thành từng khối có độ dài đủ bé rồi ký lên từng khối đó. Tuy nhiên, biện pháp này tồn tại một số vấn đề là: tốn bộ nhớ để lưu chữ ký, tốc độ truyền chữ ký trên mạng chậm, thậm chí sau khi ký, nội dung của thông điệp x có thể bị xáo trộn hoặc mất một số khối.

Để khắc phục những vấn đề trên, có một phương pháp tỏ ra rất hiệu quả mà hiện nay các nước đang sử dụng và phát triển là sử dụng hàm băm. Thay vì phải ký trên cả thông điệp x, ta có thể sử dụng hàm băm để tạo đại diện cho thông điệp và ký trên đại diện thông điệp này. Đại diện của thông điệp chính là giá trị băm hay mã băm của thông điệp. Với mỗi thông điệp xử lý qua hàm băm sẽ có đại diện thông điệp là

Fox

The red fox walks across the ice

Hàm băm Hàm băm Hàm băm

46042841 935C7FB0 9158585A B94AE214 26EB3CEA

52ED879E 70F71D92 6EB69570 08E03CE4 CA6945D3

DFCD3454 BBEA788A 751A696C 24D97009 CA992D17

The red fox runs across the ice

Đầu vào Giá trị

băm

duy nhất. Vì thế, việc ký trên thông điệp x có thể đƣợc thay bằng ký trên đại diện thông điệp là rất hợp lý.

1.3.3. Một số hàm băm sử dụng trong chữ ký số 1.3.3.1. H m băm MD5

MD5 (Message-Digest algorithm 5) [5] là một hàm băm đƣợc sử dụng phổ biến với giá trị băm 128 bit, đƣợc phát triển bởi Ron Rivest tại đại học MIT.

MD5 chuyển một đoạn thông tin chiều dài bất kỳ thành một giá trị băm chiều dài 128 bit. Giải thuật MD5 gồm 5 bước thao tác trên khối 512 bit.

Mẩu tin đầu vào đƣợc chia thành từng đoạn 512 bit, sau đó đƣợc ghép thêm các bit sao cho chiều dài của nó chia hết cho 512.

Giải thuật MD5:

- Bước 1: Ghép thêm dữ liệu

Hình 1.4: Ghép thêm dữ liệu hàm băm MD5

Ghép thêm các bit sao cho dữ liệu có độ dài l ≡ 448 mod 512 hay l = n * 512 + 448 (n, l nguyên). Luôn thực hiện việc ghép dữ liệu ngay cả khi dữ liệu ban đầu có độ dài mong muốn. Ví dụ, dữ liệu có độ dài 448 đƣợc ghép thêm 512 bit để đƣợc độ dài 960 bit. Số lƣợng bit đƣợc ghép thêm vào nằm trong khoảng từ 1 đến 512. Các bit ghép vào gồm có một bit 1 ở đầu và theo sau là các bit 0.

- Bước 2: Thêm độ dài

Khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64 bit (chưa tính phần được ghép thêm vào) và được thêm vào cuối chuỗi nhị phân kết quả của bước 1. Nếu độ dài của khối dữ liệu ban đầu lớn hơn 264 thì chỉ 64 bit thấp đƣợc sử dụng, nghĩa là giá trị được thêm vào bằng K mod 264. Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của 512. Khối dữ liệu đƣợc biểu diễn:

Bằng một dãy L khối 512 bit Y0, Y1,…, YL-1

Bằng một dãy N từ (word) 32-bit M0, M1, MN-1. Vậy N= L x 16 (32 x 16 = 512).

Hình 1.5: Khối dữ liệu sau khi thêm độ dài của hàm băm MD5

512 bits 512 bits 512 bits

512 bits

Y0 Y1 YL-1

L x 512 bits = N x 32 bits

Yq

Khối dữ liệu ban đầu 100……00

0

64b K bits

l=488(mod 512)

Padding

(LUAN.van.THAC.si).tim.hieu.chu.ky.khong.the.phu.nhan.va.ung.dung.trong.quan.ly.hoat.dong.cua.doanh.nghiep(LUAN.van.THAC.si).tim.hieu.chu.ky.khong.the.phu.nhan.va.ung.dung.trong.quan.ly.hoat.dong.cua.doanh.nghiep(LUAN.van.THAC.si).tim.hieu.chu.ky.khong.the.phu.nhan.va.ung.dung.trong.quan.ly.hoat.dong.cua.doanh.nghiep(LUAN.van.THAC.si).tim.hieu.chu.ky.khong.the.phu.nhan.va.ung.dung.trong.quan.ly.hoat.dong.cua.doanh.nghiep

- Bước 3: Khởi tạo bộ đệm MD

Một bộ đệm 128 bit được khởi tạo để lưu trữ các giá trị băm trung gian và kết quả trong bộ đệm đƣợc biểu diễn bằng 4 thanh ghi 32 bit (ký hiệu A, B, C, D) với các giá trị khởi tạo với những hằng số cố định ở dạng little-endian (byte có trọng số nhỏ nhất trong từ nằm ở địa chỉ thấp nhất) nhƣ sau:

A = 67 45 23 01 B = EF CD AB 89 C = 98 BA DC FE D = 10 32 54 76

Các giá trị này tương đương với các từ 32 bit như sau:

A = 0x01234567 B = 0x89abcdef C = 0xfedcba98 D = 0x76543210

- Bước 4: Xử lý các khối dữ liệu 512 bit

Thuật toán sử dụng hàm nén thực hiện qua 4 vòng lặp, mỗi vòng gồm 16 tác vụ giống nhau, nhƣng sử dụng các phép toán logic khác nhau. Các phép toán logic đƣợc sử dụng bao gồm: AND, OR, XOR và MODULO 232.

- Bước 5: Đầu ra (tính kết quả giá trị băm)

Sau khi xử lý hết L khối 512 bit, đầu ra của lần xử lý thứ L là giá trị băm 128 bit.

Giải thuật MD5 đƣợc tóm tắt nhƣ sau:

CV0 = IV

CVq+1 = SUM32[CVq,RFI(Yq,RFH(Yq,RFG(Yq,RFF(Yq,CVq))))]

MD = CVL-1

Với các tham số:

IV: bộ đệm gồm 4 thanh ghi ABCD Yq: khối dữ liệu thứ q gồm 512 bit L: số khối 512 bit sau khi ghép dữ liệu

CVq: đầu ra của khối thứ q sau khi áp dụng hàm nén RFx: hàm luận lý sử dụng trong các “vòng” (F,G,H,I) MD: message digest – giá trị băm

SUM32: cộng modulo 232

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu chữ ký không thể phủ nhận và ứng dụng trong quản lý hoạt động của doanh nghiệp (Trang 24 - 27)

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

(64 trang)