2.2. VẤN ĐỀ BẢO VỆ THÔNG TIN TRÊN ĐƯỜNG TRUYỀN LƯỚI
2.2.2. Phương pháp tạo đại diện thông điệp
Trên thực tế, các thông điệp sử dụng chữ ký điện tử có độ dài bất kỳ, thậm chí có kích thước lên đến vài Megabye. Trong khi đó, việc ký số thực hiện trên từng bit tài liệu nên độ dài của chữ ký số ít nhất cũng bằng độ dài của thông điệp. Một số chữ ký trên thông điệp có kích thước gấp đôi thông điệp đó, chẳng hạn như phương pháp DSS sử dụng chữ ký 320 bit trên thông điệp 160 bit.
Để giải quyết vấn đề này, chúng ta có thể chia nhỏ thông điệp cần ký thành các đoạn có độ dài thích hợp và ký trên từng mảnh thông điệp này. Tuy nhiên giải pháp này lại có nhiều khuyết điểm và không thích hợp áp dụng trong thực tế.
Nếu văn bản cần được ký quá dài thì số lượng chữ ký được tạo ra sẽ nhiều và kết quả nhận được là một thông điệp có kích thước rất lớn.
Hầu hết các phương pháp chữ ký điện tử có độ an toàn cao đều đòi hỏi chi phí tính toán cao và do đó, tốc độ xử lý rất chậm. Việc áp dụng thuật toán tạo chữ ký điện tử nhiều lần trên một văn bản sẽ thực hiện rất lâu.
Từng đoạn văn bản sau khi ký có thể dễ dàng bị thay đổi thứ tự hay bỏ bớt đi mà không làm mất đi tính hợp lệ của văn bản. Việc chia nhỏ văn bản sẽ không thể bảo đảm được tính toàn vẹn của thông tin ban đầu.
Thay vì ký trên tài liệu dài, người ta thường dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó mới “ký số” lên đại diện này. Đại diện của tài liệu chính là giá trị của hàm băm trên tài liệu, nó còn được gọi là “tóm lược” hay “bản thu gọn”
của tài liệu. Đại diện của tài liệu được xem như là “đặc thù” của tài liệu (thông điệp).
2.2.2.1. Cấu trúc hàm băm mật mã
Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau:
Cho trước một thông điệp M có độ dài bất kỳ, tuỳ theo thuật toán được sử dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được thông điệp có độ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp thành từng khối có kích thước bằng nhau M1,M2,...,Ms.
+ Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành.
+ Khởi gán H bằng một vectơ khởi tạo nào đó.
+ Hi=f(Hi-1,Mi) với i=1,2,3,...,s
+ Hs chính là thông điệp rút gọn của thông điệp ban đầu.
2.2.2.2. Đặc tính của hàm băm
Hàm băm h là hàm băm một chiều (one-way Hash) với các đặc tính sau:
1/. Với tài liệu đầu vào x, chỉ thu được một giá trị băm duy nhất z=h(x)
2/. Nếu dữ liệu trong bản tin x bị thay đổi hay bị xoá để thành bản tin x’ thì giá trị băm h(x’)≠h(x).
3./ Nội dung của tin gốc khó có thể suy ra từ giá trị hàm băm của nó. Nghĩa là: với thông điệp x thì dễ tính được z=h(x), nhưng lại khó tính ngược lại được x nếu biết giá trị băm h(x) (kể cả khi biết hàm băm h)
2.2.2.3.Thuật toán băm SHA
SHA (Secure Hash Function) được chuẩn hoá năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên bản cũ được gọi là SHA-0.
SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit, Về sau có nhiều nâng cấp đối với SHA, chủ yếu là tăng chiều dài mã băm, từ đó xuất hiện các phiên bản khác nhau của SHA bao gồm: SHA-256, SHA-512, SHA-224
Sau đây là mô tả thuật toán SHA-1
Đầu vào: Thông điệp với độ dài tối đa 264 bit.
Đầu ra: Giá trị băm có độ dài 160 bit
Thuật toán gồm năm bước thao tác trên các khối 512 bit.
- Gắn bit đệm (Append pauding bit) - Gắn chiều dài (Append length)
- Khởi tạo bộ đệm MD (Initialize MD buffer)
- Xử lý thông tin theo từng khối 512 bit (Process message) - Xuất kết quả (Output)
Bước 1: Gắn bit đệm (Append pauding bit)
Thông điệp gốc được gắn thêm các bit thừa để có chiều dài 448 mod 512 bit, tức là tất cả các khối trước có chiều dài bằng nhau là 512 bit, riêng khối cuối cùng là 448 bit. Thông điệp gốc luôn luôn được chèn thêm các bit, kể cả khi thông điệp gốc có số bit chính xác bằng 448 mod 512 (khi đó ta chèn chuỗi 512 bit). Phần thêm vào cuối dữ liệu gồm một bit 1 và theo sau là các bit 0.
Bước 2: Gắn chiều dài (Append length)
Độ dài của thông điệp ban đầu được biểu diễn dưới dạng nhị phân 64 bit và được thêm vào cuối chuỗi nhị phân mà ta thu được ở bước 1. Chuỗi nhị phân này được xử lý như số nguyên không dấu, cho biết chiều dài của thông điệp gốc khi chưa thực hiện bước 1.
Kết quả thu được sau bước này, khối thông tin nhận được có chiều dài là bội số của 512, được chia thành các nhóm, mỗi nhóm tương đương với 16 thanh ghi 32 bit (16 x 32 =512 bit).
Bước 3: Khởi tạo bộ đệm MD (Initialize MD buffer)
Bộ đệm MD (Message Digest) là bộ nhớ dung lượng 160 bit được dùng lưu trữ các giá trị trung gian và kết quả cuối cùng của mã băm. Bộ đệm được biểu diễn bằng 5 thanh ghi 32 bit với các giá trị khởi tạo ở dạng big-endian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất) và có hai bộ đệm.
Bộ đệm đầu tiên có 5 thanh ghi được đặt tên là A,B,C,D,E và bộ đệm thứ hai cũng có 5 thanh ghi đặt tên là H0 ,H1,H2,H3,H4 có giá trị như sau (Hex)
H0=67452301 H1=EFCDAB89 H2=98BADCFE H3=10325476 H4=C3D2E1F0
Bước 4: Xử lý thông tin theo từng khối 512 bit (Process message)
Đây là bước trung tâm của giải thuật gồm 4 vòng lặp, mỗi vòng bao gồm 20 bước. Cấu trúc của 4 vòng lặp là như nhau, chỉ khác nhau ở các hàm logic f1,f2,f3,f4.
Mỗi vòng có đầu vào là khối 512 bit hiện thời cùng với giá trị của đệm thứ nhất A,B,C,D,E. Mỗi vòng sử dụng một biến cộng kt(0≤ ≤t 79) biểu diễn cho 80 bước của 4 vòng. Tuy nhiên chỉ có 4 giá trị k khác nhau như sau:
Bước Giá trị k( Hexa)
0≤ ≤t 19 kt =5A827999 20≤ ≤t 39 kt =6ED9EBA11 40≤ ≤t 59 kt =8F1BBCDC 60≤ ≤t 79 kt =CA62C1D6
Đầu ra của vòng 4 (bước 80) được cộng với giá trị bộ đệm khởi tạo đầu tiên để tạo ra CVq+1.
Thao tác cộng được thực hiện một cách độc lập ứng với từng thanh ghi trong bộ đệm MD với một từ tương ứng trong CVq, sử dụng phép cộng modulo 232.
Bước 5: Xuất kết quả (Output)
Sau khi tất cả các khối 512 bit đã được xử lý, đâu ra của khối cuối cùng chính là mã băm. H=H0H1H2H3H4 với
H0=H0+A H1=H1+B H2=H2+C H3=H3+D H4=H4+E
trong đó A,B,C,D,E lúc này là kết cuối cùng tại t=79
Hình 2.8 Xử lý thông tin trong SHA-1
Một thuộc tính quan trọng của thuật toán băm SHA-1là mỗi bit trong mã băm đều có quan hệ với tất cả các bit trong thông tin gốc. Việc lặp lại các hàm f một cách phức tạp như vậy nhằm mục đích bảo đảm rằng dữ liệu đã được trộn một cách kỹ lưỡng và do đó rất khó tìm được hai khối thông tin gốc khác nhau có thể tạo ra cùng một mã băm.
2.2.2.4. Sử dụng phương pháp tạo đại diện thông điệp để kiểm tra tính toàn vẹn Để kiểm tra tính toàn vẹn của thông điệp truyền trên lưới ta thực hiện như sau: Tại nút lưới nguồn, ta sử dụng hàm băm tạo đại diện của thông điệp rồi gửi đại diện đó kèm theo thông điệp gốc. Ở nút lưới đích, ta tách riêng thông điệp gốc và sử dụng đúng hàm băm đã dùng ở nút lưới nguồn để tạo đại diện mới. So sánh hai đại diện và kết luận tính toàn vẹn của của thông điệp ban đầu:
+ Nếu giống nhau thì thông điệp ban đầu là toàn vẹn + Nếu khác nhau thì thông điệp ban đầu không toàn vẹn
Hình 2.9 Kiểm tra tính toàn vẹn bằng phương pháp tạo đại diện thông điệp Trong chương này đã trình bày để thấy được hai vấn đề bảo vệ thông tin trong hệ thống tính toán lưới là vấn đề xác thực thực thể sử dụng lưới và bảo vệ thông tin trên đường truyền lưới. Đồng thời cũng trình bày phương pháp sử dụng chữ ký số, mã hoá và tạo đại diện thông điệp để giải quyết hai vấn đề trên. Trong chương cuối, luận văn sẽ đưa ra hai chương trình thử nghiệm để bảo vệ thông tin trên lưới.
H Hàm băm Đại diện thông điệp Nút lưới nguồn
Thông điệp gốc
H
Thông điệpgốc
Nút lưới đích
Thông điệpgốc Thông điệpgốc
So sánh H