Đồ án Bảo Mật Thông
Tin
Người thực hiện:
Võ Công Tâm
Nguyễn Quang Kỳ
Giáo viên hướng dẫn:
thầy Đặng Trường Sơn
1
Nội dung chính: Trong chương này ta sẽ tìm hiểu các thuật toán băm an toàn
(SHA- Secure Hash Algorithm ) và các thông điệp xác thực (MAC- Message
Authentication Codes )
Hàm Hash :
Nén mẩu tin vê kích thước cố định
Bằng cách xử lý mẩu tin theo từng khối
Theo một hàm nén nào đó
Sử dụng mã khối hoặc tuỳ chọn
Mã xác thực mẩu tin (MAC)
Phần xác thực mẩu tin có kích thước cố định
Để cung cấp tính xác thực cho mẫu tin
Bằng cách sử dụng mã khối với chế độ móc nối hoặc hàm Hash
Các thuật toán băm an toàn được đề cập:
• SHA-512
• Whirlpool
Các thông điệp xác thực được đề cập:
• HMAC
• CMAC
2
Chương 12: Thuật toán băm và thuật
toán MAC
Nội dung
12.1 Thuật toán băm an toàn
dài mã băm. Trong cấu trúc cơ bản này, hai cách tiếp cận đã được theo
sau trong việc thiết kế các hàm nén, là khối xây dựng cơ bản của hàm băm.Theo
truyền thống, hầu hết các hàm băm đó đã được sử dụng rộng rãi dựa vào hàm
nén đặc biệt thiết kế cho các hàm băm . Thông thường, hàm nén này sử dụng các
modun số học và phép tính nhị phân logich. Một phương pháp khác là sử
dụng một mã khối đối xứng như hàm nén. Trong chương này, chúng tôi kiểm tra có
lẽ là ví dụ quan trọng nhất của mỗi phương pháp tiếp cận: các Thuật toán băm an
toàn (SHA) và Whirlpool.
MAC cũng thuận tiện chia thành hai loại dựa trên khối xây dựng cơ bản của
chúng. Một cách tiếp cận phổ biến là sử dụng một thuật toán băm như SHA như là
cốt lõi của thuật toán MAC. Một phương pháp khác là sử dụng một mã khối đối
xứng trong phương thức khối mã trung gian. Một lần nữa, chúng ta nhìn vào ví dụ
này có lẽ quan trọng nhất của từng phương pháp tiếp cận: HMAC và CMAC.
12.1. Thuật toán băm an toàn:
Các Secure Hash Algorithm (SHA) được phát triển bởi Viện Tiêu chuẩn và Công
nghệ(NIST) và được xuất bản như là một tiêu chuẩn xử lý thông tin liên
bang (FIPS 180) năm 1993, một phiên bản sửa đổi đã được ban
hành như FIPS 180-1 vào năm 1995 và thường gọi là SHA-1. Các tài liệu tiêu
chuẩn thực tế được đặt tên Thuật toán băm an
toàn. SHA dựa trên hàm băm MD4 và thiết kế các mô hình chặt chẽ MD4. SHA-
1cũng được quy định trong RFC 3174, mà thực chất là các bản sao các tài liệu
trongFIPS 180-1, nhưng thêm một đoạn mã C thực hiện.
SHA-1 tạo ra một giá trị băm 160 bit. Năm 2002, NIST sản xuất một phiên bản sửa
đổitiêu chuẩn, FIPS 180-2, đã xác định ba phiên bản mới SHA, với độ dài giá
trị băm 256,384, và 512 bit, được gọi là SHA-256, SHA-384 và SHA -512 (Bảng
12.1). Những phiên bản này mới có cùng một cấu trúc cơ bản và sử dụng cùng
loại modun số học và phép tính nhị phân logich như SHA-1. Năm 2005, NIST công
bố ý định ngưng phê duyệt SHA-1 và tin cậy vào các phiên bản SHA khác vào năm
2010. Ngay sau đó, một nhóm nghiên cứu đã mô tả một cuộc tấn công, trong đó hai
thông điệp riêng biệt có thể được nhận thấy rằng thực hiện cùng một thuật SHA-1
n/2
SHA-512 Logic
Thuật toán có đầu vào một thông điệp với một chiều dài tối đa nhỏ hơn 2
128
bit và tạo
ra tóm tắt thông điệp 512-bit. Đầu vào được xử lý trong khối 1024-bit.Hình 12.1 mô
tả tổng thể xử lý của một thông điệp để tạo ra tóm tắt.
Hình 12.1.Sự sinh ra tóm tắt thông điệp sử dụng SHA-512
5
Điều này tuân theo cấu trúc tổng quát mô tả trong hình 11,9. Xử lý bao gồm các
bước sau:
• Bước 1: Nối bit đệm. Thông điệp này được đệm để chiều dài của nó là đồng
dư với 896 modulo 1024 [chiều dài ≡ 896 (mod 1024)]. Đệm là luôn
luôn thêm, ngay cả khi thông điệp đã được chiều dài mong muốn. Như vậy,
số lượng các bit đệm nằm trong khoảngtừ 1 đến 1024. Đệm bao gồm một bit
đơn 1- tiếp theo là số cần thiết của bit 0-.
• Bước 2: Nối chiều dài. Một khối 128 bit được nối vào thông
điệp. Khối này được coi là một số nguyên không dấu 128-bit (byte đầu
tiên quan trọng nhất) và chứa độ dài của thông điệp ban đầu (trước khi đệm).
Kết quả của hai bước đầu tiên mang lại một thông điệp là bội số
nguyên của 1024 bit chiều dài. Trong hình 12,1, thông điệp mở
rộng được biểu diễn như chuỗi khối 1024-bit M
1
, M
2
,..., M
N
, sao cho tổng
chiều dài của thông điệp mở rộng là N x 1024 bit.
• Bước 3: Khởi tạo băm đệm. Một bộ đệm 512-bit được sử dụng để giữ kết
dụng một lịch trình thông điệp mô tả sau đó. Mỗi vòng cũng sử
dụng một hằng số K
t
phụ trong đó 0≤t≤79 cho biết một trong số 80 vòng.
Những Word này biểu diễn 64-bit đầu tiên của phần thập phân của căn bậc
ba 80 số nguyên tố đầu tiên. Các hằng số cung cấp một "ngẫu nhiên" tập các
mẫu 64-bit, cần loại bỏ bất kỳ qui luật trong các dữ liệu đầu vào.
Kết quả của vòng tám mươi được cộng vào đầu vào vòng đầu tiên (H
i-
1
) để tạo ra H
i
. Việc cộng thêm được thực hiện độc lập cho mỗi
tám word trong bộ đệm với nhau của các word tương ứng trong H
i-1
sử
dụng modulo cộng 2
64
.
Bước 5: Kết quả. Sau khi tất cả N khối 1024-bit đã được xử lý, kết quả từ giai
đoạn thứ N là thông điệp tóm tắt 512-bit.
Chúng ta có thể tóm tắt các hoạt động của SHA-512 như sau:
7
Trong đó:
IV = giá trị ban đầu của bộ đệm abcd, được xác định trong bước 3
abcdefgh
i
= kết quả của vòng xử lý cuối của khối thông điệp thứ i
N = số lượng các khối trong thông điệp (bao gồm cả các vùng đệm và chiều
dài)
Hình 12.3. Hoạt động cơ bản của SHA 512 (một vòng)
Nó vẫn còn để chỉ ra làm thế nào các giá trị word 64-bit W
t
được bắt nguồn từ thông
điệp 1024-bit. Hình 12.4 minh họa cho bản đồ. 16 giá trị đầu
tiên của W
t
được lấy trực tiếp từ trong 16 word của khối hiện hành. Các giá trị còn
lại được quy định như sau:
Trong đó:
ROTR
n
(x) = chỉ thị dịch phải (phép quay) của đối số x 64-bit n bit
SHR
n
(x) = dịch trái đối số 64-bit x n bit với đệm 0 về bên phải
Hình 12.4. Sự tạo thành dãy 80 word đầu vào cho xử lý khối
đơn giải thuật SHA-512
9
Như vậy,trong 16 bước xử lý đầu tiên giá trị của W
t
bằng word tương ứng trong khối
thông điệp. Đối với 64 bước còn lại, giá trị của W
t
bao gồm chỉ thị dịch trái 1 bit của
phép XOR bốn giá trị trước đó của W
t
với 2 trong số các gí trị đó tùy vào phép dịch và
quay.Điều này mở đầu cho rất nhiều sự thừa thãi và phụ thuộc vào khối thông điệp
được nén, làm phức tạp nhiệm vụ của việc tìm kiếm một khối thông điệp khác
việc phát triển một hàm băm an toàn dựa trên một mã khối mạnh mẽ thể
hiện hiệu suất tốt. Whirlpool là một hàm băm dựa trên mã khối nhằm cung
cấp bảo mật và hiệu suất có thể so sánh, nếu không tốt hơn, hàm băm
không dựa vào mã khối, như SHA. Whirlpool có các tính năng sau đây:
1. Độ dài mã hash là 512 bit, bằng mã băm dài nhất có sẵn với SHA.
2. Cơ cấu tổng thể của hàm băm là một trong đó đã được thể hiện
được khả năng chốngcác cuộc tấn công thông thường lên các
mã băm dựa trên mật mã khối.
3. Các mã khối cơ bản dựa trên AES và được thiết kế để cung cấp để
triển khai ở cả hai phần mềm và phần cứng đó là đó là vừa nhỏ
gọn vừa đạt hiệu suất tốt
Thiết kế Whirlpool đặt các mục tiêu bảo mật sau: Giả sử chúng ta có kết
quả băm giá trị của bất kỳ chuỗi n-bit của đầu ra Whirlpool đầy đủ.
• Khối lượng công việc dự kiến sẽ tạo ra một đụng độ theo thứ tự
2
n
2
thi
hành Whirlpool.
• Với một giá trị n-bit, các khối lượng công việc dự kiến của việc tìm kiếm thông
điệp đó băm giá trị đó theo thứ tự 2
n
thi hành Whirlpool.
• Với một tin nhắn và kết quả n-bit băm của nó, các khối lượng công việc dự
kiến sẽ tìm được một tin nhắn thứ hai với giá trị băm tương tự theo thứ
tự 2
n
thi hành Whirlpool.
• Không khả thi để phát hiện mối tương quan có hệ thống giữa các tổ hợp
tuyến tính bitđầu vào và sự kết hợp bất kỳ tuyến tính của các bit của kết
Lưu ý: hình thang cho biết đầu vào khóa mã hóa.
Whirlpool Logic
Với một thông điệp bao
gồm một chuỗi các khối m
1
, m
2
,..., m
t
hàm băm Whirlpoolđược thể hiện như sau:
H0 = giá trị ban đầu
H
i
= E(H
i-1
, m
i
) H
i-1
m
i
= giá trị trung gian
12