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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 )

Đồ á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 [...]... lặp trước đó; bản nguồn là khối thông điệp hiện tại ; và giá trị trước là các phép XOR trên bit của khối thông điệp hiện tại và giá trị băm trung gian lần lặp trước đó 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 2256 bit và tạo ra đầu ra một thông điệp tóm tắt 512-bit Đầu vào được xử lý trong khối 512bit Hình 12.6 mô tả các xử lý tổng thể của một thông điệp để tạo ra một tóm... được sử dụng trực tiếp cho mục đích này bởi vì nó không dựa vào một khóa bí mật Có nhiều đề xuất việc sát nhập một khóa bí mật vào một thuật toán băm đã có Thuật toán HMAC thích hợp nhất cho đề xuất này HMAC được phát hành như là RFC 2104, và được chọn như là MAC bắt buộc để thi hành ( the mandatory-to-implement MAC) cho bảo mật IP, và được sử dụng cho những phương thức internet khác, như là SSL HMAC... Thêm bit đệm Thông điệp được đệm để chiều dài của tính bằng bit là bội lẻ 256 Đệm là luôn luôn thêm, ngay cả khi tin nhắn đã được chiều dài mong muốn Ví dụ, nếu thông điệp này là 256x 3 = 768 bit dài, nó được đệm bằng 512 bit chiều dài 256 x 5 = 1280 bit Như vậy, số lượng các bit đệm nằm trong khoảng từ 1 đến 512 Hình 12.6 Sự sinh ra Thông điệp tóm tắt Sử dụng Whirlpool Ghi chú:3 cổng vào đánh dấu đầu... khối 256 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 256-bit (byte đầu tiên quan trọng nhất) và có chiều dài theo bit 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 thông điệp là bội số của 512 bit chiều dài.Trong Hình 12.6, thông điệp mở rộng được biểu diễn như dãy của các khối 512-bit m1,m2, , MT để tổng chiều dài của thông điệp mở rộng là tx... 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... lượng cặp thông điệp-MAC được tạo ra với cùng một khóa Về bản chất, nó được chứng minh trong 26 [BELL96a] rằng với mức độ sự nổ lực cho trước ( về thời gian, các cặp thông điệpMAC) trong thông điệp được tạo ra bởi người dùng chính đáng và cả người tấn công, thì khả năng có thể tấn công thành công tương đương với một trong hai cách tấn công vào hàm băm sau: 1 Người tấn công có khả năng tính toán được... người tấn công có thể chọn một bộ thông điệp bất kì và cố gắng tìm ra sự đụng độ Bởi vì khi biết thuật toán băm và giá trị đầu vào thì người tấn công có thể sinh ra mã băm cho mỗi thông điệp mà người tấn công tạo ra Tuy nhiên khi tấn công HMAC, người tấn công không thể tạo ra cặp thông điệp/mã off line vì không biết khóa K Vì vậy, người tấn công phải quan sát một dãy thông điệp được sinh ra bởi HMAC... mặt thông lượng 12.3 HMAC: Trong chương 11, chúng ta đã xem qua một ví dụ về một mã xác thực thông điệp MAC ( Message Authentication Code) dựa trên khối mã hóa đối xứng (symmetric block cypher), cụ thể là Thuật toán xác thực dữ liệu ( The Data Authentication Algorithm) được định nghĩa trong FIPS PUB 113.Trong những năm gần đây, có nhiều quan tâm trong việc phát triển một MAC từ một hàm băm bằng mật. .. function) Sự thúc đẩy cho hướng phát triển này là: 1 Hàm băm bằng mật mã như MD5 và SHA-1 nhìn chung xử lí nhanh hơn khối mã hóa đối xứng ( symmetric block cyphers) trong phần mềm ( sotfware) 2 Library code của hàm băm bằng mật mã có thể được mở rộng Với sự phát triển của AES và việc có khả năng sử dụng rộng hơn của mật mã của các thuật toán mã hóa, những nhận xét này ít quan trọng, nhưng những MAC dựa... 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 m1, m2,

Ngày đăng: 26/04/2013, 11:44

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan