Đồ án Bảo Mật Thông Tin-Thuật toán băm và thuật toán MAC (Bản dịch full từ Cryptography and Network Security)

Lớp phi tuyến tính SB

Hàm thay thế byte (SB) là một bảng tra cứu đơn giản cung cấp một ánh xạ tuyến tính. W định nghĩa một ma trận 16 x 16 của các giá trị byte, được gọi là S-box (Bảng12.3), có chứa một hoán vị của tất cả 256 giá trị 8-bit có thể có. Mỗi byte riêng lẻ của CState được ánh xạ vào một byte mới theo cách sau: 4 bit tận cùng bên trái của byte được sử dụng như là một giá trị hàng và 4 bit ngoài cùng bên phải được sử dụng như là một giá trị của cột. Những giá trị hàng và cột dùng như là chỉ số vào S-box để chọn một giá trị 8-bit đầu ra duy nhất. Ví dụ, giá trị thập lục phân [3]{95} tham chiếu hàng 9, cột 5 của S-box, trong đó có giá trị {BA}. Theo đó, giá trị {95} được ánh xạ vào giá trị {BA}. hàm SB có thể được thể hiện bởi sự tương ứng sau, cho một đầu vào ma trận A và đầu ra một ma trận B:

 

docx32 trang | Chia sẻ: netpro | Lượt xem: 5112 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Bảo Mật Thông Tin-Thuật toán băm và thuật toán MAC (Bản dịch full từ Cryptography and Network Security), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
guồ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ố Kt 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 (Hi-1) để tạo ra Hi. 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 Hi-1 sử dụng modulo cộng 264. 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: Trong đó: IV = giá trị ban đầu của bộ đệm abcd, được xác định trong bước 3 abcdefghi = 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) SUM64 = modulo cộng 264 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 Trong đó: ROTRn(x) = chỉ thị dịch phải (phép quay) của đối số x 64-bit n bit Wt = một word 64 bit bắt nguồn từ khối đầu vào hiện tại 512-bit Kt = một biến phụ 64-bit + = modulo cộng 264 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 Wt đượ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 Wt đượ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 đó: ROTRn(x) = chỉ thị dịch phải (phép quay) của đối số x 64-bit n bit SHRn(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 Như vậy,trong 16 bước xử lý đầu tiên giá trị của Wt 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 Wt bao gồm chỉ thị dịch trái 1 bit của phép XOR bốn giá trị trước đó của Wtvớ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: 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. 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. 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. 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ó 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: Độ dài mã hash là 512 bit, bằng mã băm dài nhất có sẵn với SHA. 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. 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ự 2n2 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ự 2n 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ự 2n 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ó 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 m1, m2,..., mt hàm băm Whirlpoolđược thể hiện như sau: H0 = giá trị ban đầu Hi = E(Hi-1, mi) Hi-1 mi = giá trị trung gian Ht = giá trị mã băm Về mô hình Hình 12.5, đầu vào mã hóa chính cho mỗi lần lặp là giá trị băm trung gian từlần 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 512-bit. 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 tắt. Điều này tuân theo cấu trúc chung mô tả trong hình 11,9. Xử lý bao gồm các bước sau: Bước 1: 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 vào chủ chốt Đệm bao gồm một bit 1 tiếp theo là số cần thiết của bit 0. Bước 2: Thêm chiều dài. Một 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 512 bit. Các khối được xem bên ngoài như là mảng các byte được tuần tự nhóm các bit trongkhối 8-bit. Tuy nhiên, nội bộ, các trạng thái băm Hi được xem như là một ma trận 8 x 8 /byte. Việc chuyển đổi giữa hai thứ được giải thích sau đó. Bước 3: Khởi tạo ma trận băm. Một ma trận  8 x 8 byte được sử dụng để giữ kết quả trung gian và cuối cùng của hàm băm. Các ma trận được khởi tạo bao gồm tất cả bit 0. Bước 4: Xử lý thông điệp trong khối 512 bit (64 byte). Trái tim của thuật toán là khối mã W. Khối Mã W Không giống như hầu hết tất cả các đề nghị khác cho một hàm băm dựa vào khối mã trên,Whirlpool sử dụng một khối mã được thiết kế để sử dụng trong các hàm băm và hàm đó không bao giờ được sử dụng như là một chức năng mã hóa độc lập. Lý do cho điều này là các nhà thiết kế muốn sử dụng một mã khối với sự an toàn và hiệu quả AES, nhưng với một chiều dài băm mà cung cấp khả năng bảo mật bằng SHA-512. Kết quả là các mã khối W, trong đó có một cấu trúc tương tự và sử dụng các chức năng cơ bản tương tự như AES, nhưng trong đó sử dụng một kích thước khối và kích thước một khóa là 512 bit. Bảng 12.2 so sánh AES và W. Mặc dù W cũng tương tự như AES, nó không chỉ đơn giản là một phần mở rộng. Hãy nhớ rằng các đề xuất của Rijndael để xác định một mã AES, trong đó chiều dài khối và chiều dài khóa có thể được độc lập quy định là 128, 192, hay 256 bit. Các đặc điểm kỹ thuật của AES sử dụng 3 khóa thay thế có cùng kích thước, nhưng giới hạn độ dài khối đến 128 bit. AES hoạt động trên một trạng thái 4 x 4 byte. Rijndael với độ dài 192 bit khối hoạt động trên một trạng thái 4 x 6 byte. Rijndael với độ dài 256 bit khối hoạt động trên một trạng thái 4 x 8 byte. W hoạt động trên một trạng thái8 x 8 byte. Càng nhiều đại diện trạng thái khác với hình vuông, khuếch tán càng chậm đi và càng nhiều các vòng mã cần. Đối với một chiều dài khối là 512 bit, các nhà phát triển Whirlpool có thể đã được xác định một hoạt động Rijndael trên một trạng thái 4 x 16 byte, nhưng mã sẽ cần nhiều vòng và nó hẳn đã rất chậm. Như Bảng 12.2 chỉ, W sử dụng một ma trận hàng trong khi AES sử dụng một ma trận. Không có lý do kỹ thuật để thích một trong những định hướng hang cột nào hơn, bởi vì một cách dễ dàng có thể xây dựng một mô tả tương đương của cùng một mã, chuyển đổi hàng với các cột. Bảng 12.2. So sánh Whirlpool Khối Mã W và AES W AES Kích thước khối (bit) 512 128 Kích thước khóa (bit) 512 128,192 hoặc 256 Định hướng ma trận Đầu vào là ma trận dòng Đầu vào là ma trận cột Số vòng 10 10,12 hoặc 14 Khóa mở rộng Hàm vòng W Thuật toán mở rộng chuyên dụng Đa thức GF(28) x8 + x4 + x3 + x2 + 1 (011D) x8 + x4 + x3 + x + 1 (011B) Nguồn gốc của S-Box Cấu trúc đệ quy Bội nghịch đảo trong GF (28) cộng với biến đổi phép chiếu Nguồn gốc của hằng số vòng Cổng tiếp theo của S-Box Phần tử 2i của GF(28) Lớp khuếch tán Nhân phải của ma trận vòng 8 x 8 MDS (1, 1, 4, 1, 8, 5, 2, 9) -trộn hàng Nhân trái của ma trận vòng MDS 4x4 Hoán vị Chuyển cột Chuyển dòng Cơ cấu tổng thể Hình 12,7 thể hiện cấu trúc tổng thể của W. Các thuật toán mã hóa lấy một khối 512-bit bản nguồn và khoá 512-bit làm đầu vào và sản xuất một khối 512-bit bản mã là đầu ra.Các thuật toán mã hóa liên quan đến việc sử dụng bốn hàm khác nhau, hoặc chuyển đổi: thêm khóa (AK), thay thế byte (NHNN), dịch cột (SC), và trộn hàng (MR),mà hoạt động được giải thích sau đó. W bao gồm một ứng dụng duy nhất của AK sau10 vòng có liên quan đến tất cả bốn hàm. Chúng ta có thể diễn tả chính xác hoạt động một vòng r như một hàm vòng RF đó là một thành phần của hàm: Phương trình 12-1 nơi Kr là ma trận khóa vòng cho vòng r. Các thuật toán tổng thể, với K đầu vào khóa, có thể được xác định như sau: nơi mà các vòng tròn lớn cho thấy sự lặp lại của các hàm thành phần với chỉ số r chạytừ 1 đến 10. Figure 12.7. Thuật toán mã Whirlpool W Các bản nguồn đầu vào  tới W là khối 512 bit đơn. Khối này được coi là một ma trận vuông 8 x 8 của byte, có nhãn CState. Hình minh họa 12.8 rằng thứ tự của byte trong một ma trận là bởi hàng. Vì vậy, ví dụ, trong tám byte đầu tiên của một đầu vào bản nguồn 512-bit tới thuật toán mã hóa chiếm hàng đầu tiên trong ma trận CState, tám byte thứ hai chiếm hàng thứ hai, và như vậy. Các biểu diễn của dòng byte tuyến tính là một ma trận vuông có thể được  thể hiện chính xác  là một hàm lập bản đồ m .Đối với một mảng byte tuyến tính X với các phần tử xk (0 ≤k ≤63),  ma trận A tương ứng với các yếu tố ai,j (0≤ i, j ≤7 ) chúng ta có sự tương ứng sau đây: A = m(X) ai,j = x8i + j Hình 12.8. Cơ cấu ma trận Whirlpool Tương tự như vậy, khóa 512-bit được mô tả như là một ma trận vuông KState byte.khóa này được sử dụng làm đầu vào tới hàm AK ban đầu. Khóa cũng mở rộng thànhmột bộ 10 khoá vòng, như được giải thích sau đó. Chúng ta bây giờ nhìn vào các hàmriêng lẻ mà là một phần của W. Lớp phi tuyến tính SB Hàm thay thế byte  (SB) là một bảng tra cứu đơn giản cung cấp một ánh xạ tuyến tính. W định nghĩa một ma trận 16 x 16  của các giá trị byte, được gọi là S-box (Bảng12.3), có chứa một hoán vị của tất cả 256 giá trị 8-bit có thể có. Mỗi byte riêng lẻ của CState được ánh xạ vào một byte mới theo cách sau: 4 bit tận cùng bên trái của byte được sử dụng như là một giá trị hàng và 4 bit ngoài cùng bên phải được sử dụng như là một giá trị của cột. Những giá trị hàng và cột dùng như là chỉ số vào S-box để chọn một giá trị 8-bit đầu ra duy nhất. Ví dụ, giá trị thập lục phân [3]{95} tham chiếu hàng 9, cột 5 của S-box, trong đó có giá trị {BA}. Theo đó, giá trị {95} được ánh xạ vào giá trị {BA}. hàm SB có thể được thể hiện bởi sự tương ứng sau, cho một đầu vào ma trận A và đầu ra một ma trận B: [3] Như chúng ta đã làm cho AES, một số thập lục phân được chỉ định bằng cách bao quanh nó trong dấu ngoặc nhọn khi điều này là cần thiết cho rõ ràng hơn. B = SB(A) bi,j = S[ai,j], 0 ≤ i,j ≤ 7 trong đó S [x] đề cập đến bản đồ của byte đầu vào x vào đầu ra byte S [x] bằng S-box. Bảng 12.3. Whirlpool S-Box S-box có thể được tạo ra bởi cấu trúc của hình 12.9. Nó bao gồm hai lớp phi tuyến tính,mỗi lớp chứa hai S-box 4 x 4 ngăn cách bởi một box 4 x 4 được tạo ra ngẫu nhiên . Mỗi bản đồ box có 4 - bit đầu vào thành đầu ra 4-bit. Box E được định nghĩa là E (u) = {B}u nếu {F} và E ({F}) = 0, trong đó tính toán được thực hiện trên trường hữu hạn GF (24) với đa thức tối giản f (x) = x4 + x + 1. Hình 12.9. Việc thực hiện Whirlpool S-box Hàm SB được thiết kế để đưa phi tuyến tính vào thuật toán. Điều này có nghĩa là hàmSB nên thể hiện không có mối tương quan giữa các kết hợp tuyến tính của một bit đầu vào và các kết hợp tuyến tính của một bit đầu ra. Ngoài ra, sự khác biệt giữa bộ củacác bit đầu vào không nên truyền vào sự khác biệt tương tự giữa bit đầu ra tương ứng;nói một cách khác, sự thay đổi đầu vào nhỏ nên gây ra thay đổi đầu ra lớn. Hai đặc tính giúp cho W chống lại các thuật thám mã tuyến tính và các thuật thám mã khác. Lớp hoán vị SC Lớp hoán vị (cột chuyển) gây ra một thỉ thị dịch cột xuống mỗi cột của CState trừ cột đầu tiên. Đối với cột thứ hai, một chỉ thị dịch xuống 1 byte được thực hiện; cho cột thứ ba, một chỉ thị dịch xuống 2 byte được thực hiện; và như vậy. Hàm SC có thể được thể hiện bởi sự tương ứng sau, cho một đầu vào ma trận A và đầu ra một ma trận B: B = SC(A) bi, j = a(i - j) mod 8, j 0 ≤ i, j ≤ 7 Việc chuyển đổi bằng phép dịch cột quan trọng hơn so với lần đầu tiên có thể hiển thị. Điều này là bởi CState được coi là một mảng của tám dòng 8-byte. Như vậy, về mã hóa, 8 byte đầu tiên của bản nguồn được sao chép sang hàng đầu tiên của CState, và như vậy. Một phép dịch cột di chuyển một byte riêng lẻ từ một hàng khác, đó là một khoảng cách tuyến tính của một bội số của 8 byte. Cũng lưu ý rằng sự chuyển đổi đảm bảo rằngtrong 8 byte của một hàng được trải ra tới tám hàng khác nhau. Lớp khuếch tán MR Nhớ lại từ chương 3 rằng đối với một hàm khuếch tán vật, cấu trúc thống kê của các đầu vào được xua tan tầm xa vào số liệu thống kê của đầu ra. Điều này đạt được bằng cách mỗi bit đầu vào ảnh hưởng đến giá trị của nhiều bit đầu ra, nói chung, kết quả nàytrong mỗi bit đầu ra bị ảnh hưởng nhiều bit đầu vào. Lớp khuếch tán (trộn hàng) đạt được khuếch tán trong mỗi dòng riêng. Mỗi byte của một hàng được ánh xạ thành một giá trị mới đó là một hàm của tất cả tám byte trong hàng đó. Chuyển đổi này có thể được xác định bởi phép nhân ma trận: B = AC Trong đó A là ma trận đầu vào, B là  ma trận đầu ra , và C là ma trận biến đổi: Mỗi phần tử trong các sản phẩm ma trận là tổng sản phẩm của các yếu tố của một hàngvà cột một. Trong trường hợp này, việc phép cộng riêng lẻ và phép nhân [4] được thực hiện trong GF (28) với các đa thức tối giản f (x) = x8 + x4 + x3 + x2 + 1. Như một ví dụ về các phép nhân ma trận có liên quan, các yếu tố đầu tiên của đầu ra các ma trận là [4] Như chúng ta đã làm cho AES, chúng ta sử dụng biểu tượng . để chỉ phép nhân trên trường hữu hạn GF (28) và  để cho thấy phép XOR trên bit, tương ứng với phép cộng trong GF (28) b0,0 = a0,0 (9 · a0,1) (2· a0,2) (5·a03) (8·a0,4) a0,5 (4·a0,6) a0,7 Lưu ý rằng mỗi hàng của C được xây dựng bằng một phép dịch phải chỉ thị của hàng trước đó. C được thiết kế để tối đa khoảng cách tách (MDS) ma trận. Trong lĩnh vực sửa lỗi mã, mã MDS lấy đầu vào là một chuỗi bit có độ dài cố định và tạo ra một chuỗi đầu ra mở rộng như vậy để có khoảng cách Hamming tối đa giữa các cặp chuỗi đầu ra. Với một mã MDS, thậm chí nhiều bit lỗi kết quả trong một mã mà gần với giá trị chính xác hơn là một số giá trị khác. Trong ngữ cảnh của mã khối, một ma trận chuyển đổi xây dựng bằng cách sử dụng một mã MDS cung cấp một mức độ cao của sự khuếch tán[JUNO04]. Việc sử dụng mã MDS cung cấp khuếch tán cao lần đầu tiên được đề xuấttrong [RIJM96]. C ma trận là một ma trận MDS có nhiều 1-yếu tố càng tốt (3 trong mỗi hàng). Nhìn chung, các hệ số trong C cung cấp phần cứng để thực hiện hiệu quả. Lớp thêm khóa AK Trong các lớp thêm khóa, các 512 bit của CState được XORed trên bit với 512 bit củakhóa vòng. Hàm AK có thể được thể hiện bởi sự tương ứng sau, cho vào một ma trậnA, B ra một ma trận, và một khóa vòng Ki: B = AK[Ki](A) bi, j = ai,j, Ki,j 0 ≤i,j ≤7 Khóa mở rộng cho các Khối Mã W Như trong hình 12,7, khóa mở rộng đạt được bằng cách sử dụng chính thuật toán mã hóa khối, với một hằng vòng phục vụ như là khóa vòng để mở rộng. Hằng số vòng cho vòng r (1 ≤r ≤10) là một ma trận RC [r], trong đó chỉ hàng đầu tiên là giá trị khác không, vàđược định nghĩa như sau: rc[r]0,j = S[8(r-1)+j], 0 ≤j ≤7,1 ≤r ≤10 rc[r]i,j = 0, 1 ≤i ≤7,0 ≤j ≤7,1 ≤r ≤10 Mỗi phần tử của hàng đầu tiên là một bản đồ sử dụng S-box. Như vậy, hàng đầu tiêncủa RC [1] là Sử dụng các hằng số vòng, tạo khóa mở rộng 512-bit khóa mã K vào một chuỗi các khóa vòng K0, K1,. . , K10: K0 = K Kr = RF[RC[r]](Kr-1) Trong đó RF là hàm vòng được xác định trong phương trình (12.1). Lưu ý rằng tronggiai đoạn AK của mỗi vòng, chỉ hàng đầu tiên của KState thay đổi. Hiệu suất của Whirlpool Như được nêu ra, đã có ít kinh nghiệm thực hiện với Whirlpool. Hãy nhớ rằng việc đánh giá của NIST của Rijndael xác định rằng nó thể hiện hiệu suất tốt trong cả phần cứng vàphần mềm và rằng nó rất phù hợp với yêu cầu về không gian hạn chế (thiếu bộ nhớ).Các tiêu chí này là quan trọng trong việc lựa chọn Rijndael cho AES. Vì Whirlpool sử dụng hàm xây dựng khối tương tự như AES và có cấu trúc giống nhau, chúng ta có thểmong đợi hiệu suất tương tự và đặc tính không gian. Một nghiên cứu đã được thực hiện được báo cáo trong [KITS04]. tác giả so Whirlpool với một số hàm băm an toàn khác, bao gồm tất cả các phiên bản của SHA. Các tác giảphát triển triển khai nhiều phần cứng của mỗi hàm băm và kết luận rằng, so với SHA-512, Whirlpool đòi hỏi nhiều tài nguyên phần cứng hơn nhưng thực hiện tốt hơn nhiều về 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 mã ( a cryptographic hash function). Sự thúc đẩy cho hướng phát triển này là: 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). 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 trên hàm băm vẫn tiếp tục được sử dụng một cách rộng rãi. Một hàm băm như SHA không được thiết kế cho việc sử dụng như là một MAC và không thể đượ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 cũng được phát hành như là một chuẩn NIST (FIPS 198). HMAC Design Objectives ( những mục đích thiết kế cho HMAC). RFC 2104 liệt kê những mục đích thiết kế sau cho HMAC: Sử dụng ( không cần cải tiến ) những hàm băm có sẳn. Cụ thể, những hàm băm hoạt động tốt trong phần mềm ,và những mã có khả năng mở rộng và miễn phí. Cho phép dễ dàng thay đổi những hàm băm thêm vào nếu có những hàm băm nhanh hơn hoặc bảo mật hơn được tìm ra hoặc đươc yêu cầu. Để duy trì hiệu suất ban đầu của hàm băm mà không bị một sự suy thoái đáng kể. Sử dụng và điều khiển các khóa theo một cách dễ dàng. Để có một bản phân tích mã hóa của sức mạnh của cơ chế xác thực dựa trên sự giả định hợp lý về hàm băm thêm vào. Hai tiêu chí đầu quan trọng cho một hàm HMAC có thể chấp nhận được, HMAC xem hàm băm như là một “hộp đen” . Điều này thì có hai lợi ích. Thứ nhất, việc sử dụng một hàm băm đã có có thể được sử dụng như là một modun trong việc thực thi một HMAC. Bằng cách này, kích thước mã HMAC được đóng gói lại và sẵn sàng để sử dụng mà không cần hiệu chỉnh. Thứ hai, nếu có bất kì sự mong muốn thay đổi một hàm băm trong việc thực thi một HMAC nào, chỉ cần thay thế hàm băm củ bằng một modun mới khi có một hàm băm nhanh hơn được mong muốn. Quan trọng hơn, nếu tính an toàn của hàm băm được nhúng vào bị suy giảm, thì tính an toàn của HMAC có thể được giữ lại bằng cách thay hàm băm củ bằng một hàm băm mới an toàn hơn( ví dụ: thay thế SHA bằng Whirlpool). THUẬT TOÁN HMAC: Ví dụ 12.10 chỉ ra tất cả các toán hạng (operation) trong HMAC. Được định nghĩa bên dưới: H = hàm băm được thêm vào ( ví dụ: MD5, SHA-1, RIPEMD-160,….). IV = giá trị đầu vào ban đầu của hàm băm. M = thông điệp đầu vào của hàm băm ( bao gồm cả the padding specificed trong hàm băm được thêm vào). Yi = khối thứ I của thông điệp M, 0<= I <= (L-1). L = số khối có trong M. b = số bit có trong một khối. n = chiều dài của mã băm từ hàm băm thêm vào. K = khóa bí mật được đề nghị có chiều dài >= n. Chiều dài khóa lớn hơn b . Khóa là đầu vào cho hàm băm để tạo ra khóa n bit. K+ = thêm 0 vào bên trái khóa K để có khóa K+ với chiều dài b bit. Ipad = 00110110 (36 trong hệ thập lục phân) được lặp lại b/8 lần. Opad = 01011100 (5C trong hệ thập lục phân) được lặp lại b/8 lần. VÍ Dụ 12.10. CẤU TRÚC HMAC. HMAC có thể được biểu diễn: Ta có: Thêm 0 vào cuối bên trái khóa K để được khóa K+ b bit chiều dài. ( ví dụ: nếu K dài 160 bit và b =512 thì ta sẽ thêm 44 byte 0 ( 0x00) vào khóa K). Thực hiện phép XOR K+ với ipad để có khối Si có b bit. Thêm M vào Si. Sử dụng H cho chuỗi được tạo ra ở bước 3. XOR K+ với opad để tạo ra khối S0 b bit.

Các file đính kèm theo tài liệu này:

  • docxĐồ án Bảo Mật Thông Tin-Thuật toán băm và thuật toán MAC (Bản dịch full từ Cryptography and Network Security).docx