Tải bản đầy đủ
Hình 2.7 Bảo mật thông tin bằng mã hóa theo đường truyền

Hình 2.7 Bảo mật thông tin bằng mã hóa theo đường truyền

Tải bản đầy đủ

56

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.

57

+ 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)

58

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 f 1,f2,f3,f4.

59

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
0 ≤ t ≤ 19
20 ≤ t ≤ 39
40 ≤ t ≤ 59
60 ≤ t ≤ 79

kt
kt
kt
kt

Giá trị k( Hexa)
= 5A827999
= 6ED9EBA11
= 8F1BBCDC
= 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

60

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.

61

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

Thông điệp gốc

Thông điệp gốc

Thông điệp gốc

Nút lưới nguồn

Thông điệp gốc

+ Nếu khác nhau thì thông điệp ban đầu không toàn vẹn

Nút lưới đích

H

H

So sánh

H

Hàm băm

Đại diện thông điệp

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.