Tải bản đầy đủ (.docx) (32 trang)

Đồ án Bảo Mật Thông Tin

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (939.13 KB, 32 trang )

Đồ á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


SHA-512 Logic
SHA-512 Round Function
12.2 Whirlpool
Whirlpool Hash Structure
Block Cipher W
Performance of Whirlpool
12.3 HMAC
HMAC Design Objectives
HMAC Algorithm
Security of HMAC
12.4 CMAC
12.5 Recommended Reading and Web Sites
12.6 Key Terms, Review Questions, and Problems
Key Terms
Review Questions
Problems
Những điểm chính:
● Hầu như tất cả các thuật toán băm an toàn có cấu trúc tổng quát thể hiện trong
hình11,9.
● Các hàm nén được sử dụng trong các thuật toán băm an toàn rơi vào một
3
trong hai loại: một hàm đặc biệt thiết kế cho các hàm băm hoặc một khối mã đối
xứng. SHA và Whirlpool là những ví dụ của hai phương pháp tiếp cận, tương ứng.
● Thông điệp mã xác thực cũng rơi vào hai loại, dựa vào việc sử dụng
của một thuật toán băm an toàn và dựa trên việc sử dụng một khối mã đối xứng.
HMAC và CMAC là những ví dụ của hai phương pháp tiếp cận, tương ứng.
Trong chương này, chúng ta nhìn vào ví dụ quan trọng của cả hai thuật toán băm an
toàn và mã xác thực thông điệp (MAC). Hầu hết các hàm băm quan trọng hiện
đại theo cấu trúc cơ bản của hình 11,9. Điều này đã chứng tỏ là một cấu trúc âm
thanh cơ bản và các thiết kế mới hơn chỉ cần tinh chỉnh cấu trúc và thêm vào độ

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

bằng cách sử dụng 2
69
phép tính, ít hơn 2
80
phép tính như trước đây cần thiết để tìm
4
thấy một dụng độ với một thuật toán băm SHA-1 [WANG05 ]. Kết quả này sẽ đẩy
nhanh quá trình chuyển đổi đến các phiên bản khác của SHA.
Bảng 12.1. So sánh thông số SHA
SHA-1 SHA-256 SHA-384 SHA-512
Tóm tắt thông
điệp
160 256 384 512
Độ dài thông
điệp
<2
64
<2
64
<2
128
<2
128
Độ dài khối 512 512 1024 1024
Độ dài WORD 32 32 64 64
Số bước 80 64 80 80
Độ an toàn 80 128 192 256
Ghi chú: 1. Tất cả kích thước được đo bằng bit.
2. Độ an toàn đề cập đến thực tế là một cuộc tấn công ngày sinh nhật vào tóm
tắt thông điệp kích thước n tạo ra một đụng độ với chi phí khoảng 2

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

quả trung gian và kết quả của hàm băm. Đệm này có thể được biểu diễn như
là tám thanh ghi 64-bit (a, b, c, d, đ, e, g, h). Những thanh ghi được khởi
tạo với các số nguyên 64-bit sau đây (giá trị ở hệ thập lục phân):
a = 6A09E667F3BCC908
b = BB67AE8584CAA73B
c = 3C6EF372FE94F82B
c = A54FF53A5F1D36F1
e = 510E527FADE682D1
f = 9B05688C2B3E6C1F
g = 1F83D9ABFB41BD6B
h = 5BE0CDI9137E2179
Những giá trị này được lưu trữ ở định dạng big- endian, byte có trọng số lớn
nhất trong word nằm ở địa chỉ thấp nhất (ngoài cùng bên trái). Những
word này thu được bằng cách lấy 64-bit của phần thập phân của căn bậc
hai của tám mươi số nguyên tố đầu tiên.
• Bước 4: Xử lý thông điệp trong các khối 1024-bit (128 word). Trái
tim của thuật toán là một module bao gồm 80 vòng; module này được gắn
nhãn F trong hình 12.1. Logic được minh họa trong hình 12.2.
Hình 12.2. SHA-512 Xử lý một khối đơn 1024-Bit
6
Mỗi vòng lấy giá trị đầu vào 512-bit đệm abcdefgh, và cập nhật nội dung của bộ đệm.
Tại đầu vào vòng đầu tiên, bộ đệm có giá trị của các giá trị băm trung gian, H
i-
1
. Mỗi vòng t sử dụng giá trị 64-bit W
t
bắt nguồn từ khối 1024-bit hiện tại đang
được xử lý (M
i
). Những giá trị này được bắt nguồn bằng cách sử

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)

SUM
64
= modulo cộng 2
64
thực hiện một cách riêng
biệt trên mỗi word của các cặp đầu vào
MD = giá trị tóm tắt thông điệp cuối cùng
SHA-512 Hàm Vòng
Chúng ta hãy xem xét chi tiết hơn tại logic trong mỗi của 80 bước của quy
trình xử lý một khối 512-bit (Hình 12.3). Mỗi vòng được định
nghĩa bởi các tập phương trình sau:
Trong đó:
t = số bước (0≤t≤79)
ch(e,f,g) = (e AND f) (NOT e AND g) hàm có điều kiện If e then f
else g
Maj(a,b,c) = = (a AND b) (a AND c) (b AND c) hàm true
chỉ khi phần lớn (2 hoặc 3) đối số là true
8
Trong đó:
ROTR
n
(x) = chỉ thị dịch phải (phép quay) của đối số x 64-bit n bit
W
t
= một word 64 bit bắt nguồn từ khối đầu vào hiện tại 512-bit
K
t
= một biến phụ 64-bit
+ = modulo cộng 2
64

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

nhau mà vạch ra với cùng hàm nén đầu ra.
12.2. Whirlpool
Trong phần này, chúng ta khảo sát hàm băm Whirlpool, một trong
những người thiết kế cũng là đồng tác giả sáng chế
của Rijndael, được thông qua là Advanced Encryption Standard (AES).
Whirlpool là một trong hai hàm băm xác nhận bởi NESSIE (New châu Âu theo
hệ thống các chữ ký, Integrity, và Mật mã). Các dự án NESSIE là một Liên
minh châu Âu tài trợ nỗ lực để đưa ra một danh mục các nguyên
thủy mạnh mật mã các loại.
Whirlpool dựa trên việc sử dụng một thuật toán mã
hóa khối cho hàm nén. Như đã đề cập trong chương 11, có truyền
thống ít được quan tâm trong việc sử dụng các hàm băm dựa trên mật
mã khối vì những lỗ hổng bảo mật thể hiện của cấu trúc. Sau đây là
những hạn chế tiềm năng:
1. Khối mật mã không có các tính chất của hàm ngẫu nhiên. Ví dụ,
họ khả nghịch. Điều nàythiếu tính ngẫu nhiên có thể dẫn đến những
điểm yếu có thể khai thác.
2. Khối mật mã thường thể hiện qui luật khác hoặc các điểm yếu. Ví
dụ, cho thấy làm thế nào để thỏa hiệp nhiều chương trình băm dựa
trên thuộc tính của các mã khối cơ bản.
3. Thông thường, các hàm băm dựa trên mật mã khối chậm hơn so
với hàm băm dựa trên hàm nén đặc biệt thiết kế cho các hàm băm.
4. Một đánh giá chủ yếu về sức mạnh của một hàm băm là chiều
dài của mã băm theo bit.Đối với mã băm dựa trên thuật toán mã hóa
khối, thiết kế đề xuất có chiều dài mã băm không bằng chiều dài khối
mã, hoặc hai lần chiều dài khối mã. Theo truyền thống, mật mã khối có
10
chiều dài đã được hạn chế tới 64 bit (như DES, triple DES), kết quả là
mã băm có vấn đề về chiều dài.
Tuy nhiên, kể từ khi áp dụng AES, đã có nhiều đổi mới quan tâm đến

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

quả băm, hoặc để dự đoánnhững gì bit của kết quả băm sẽ thay đổi giá
trị khi một số bit đầu vào đảo ngược (điều này có nghĩa là đề
kháng chống tuyến tính và tấn công).
Các nhà thiết kế khẳng định sự tự tin của họ rằng các mục tiêu này đã được đáp
ứngvới một ngưỡng an toàn đáng kể. Tuy nhiên, các mục tiêu không nhạy cảm
với mộtchứng minh hình thức.
Chúng ta bắt đầu với một cuộc thảo luận về cấu trúc của hàm băm tổng thể, và sau
đókiểm tra mã khối được sử dụng như là khối xây dựng cơ bản.
Cơ cấu Băm Whirlpool
Bối cảnh
Cấu trúc chung hàm băm lặp được đề xuất bởi Merkle (hình 11,9) được sử dụng
trong hầu như tất cả các hàm băm an toàn. Tuy nhiên, như đã được chỉ ra, có khó
11
khăn trong việc thiết kế một hàm băm lặp thực sự an toàn khi chức
năng nén là một thuật toán mã hóa khối. Preneel biểu diễn một phân tích hệ
thống về các hàm băm dựa trên mật mã khối, sử dụng mô hình mô tả trong Hình
12.5. Trong mô hình này, chiều dài mã băm bằng với chiều dài khối mã. Vấn đề an
ninh bổ sung được giới thiệu và phân tích là khó khăn hơn nếu độ dài mã băm vượt
quá chiều dài khối mã. Preneel nghĩ ra 64 hoán vị có thể có của mô hình cơ
bản, trên cơ sở đó đầu vào phục vụ như khoá mật mã và được phục vụ như là bản
nguồn và trên những gì nhập vào, nếu có, được kết hợp với bản mã để tạo
ra mã bămtrung gian. Dựa trên phân tích của ông, ông kết luận rằng các quy trình,
trong đó chỉ rõ được cho ăn về phía trước và kết hợp với bản mã đã được an
toàn. Như một sắp xếp làm cho hàm nén khó đảo ngược. [BLAC02] xác nhận các
kết quả này, nhưng chỉ ra các vấn đề an ninh của việc sử dụngmột thuật toán mã
hóa khối được thiết lập như là AES: Các mã băm 128-bit giá trị thu được từ việc sử
dụng AES hay quy trình khác với cùng một khối có kích thước có thểkhông
đủ để bảo mật.
Hình 12.5. Mô hình đơn lặp lại của hàm Hash (mã băm bằng độ dài
khối)

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×