book mã hóa ứng dụng update 2 phần 5
Số trang: 22
Loại file: pdf
Dung lượng: 537.39 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
tục Key–Expansion bao gồm các bước sau: 1. Ban đầu, nội dung khóa gốc được chép vào một mảng tạm T[] (có độ dài là 15 từ), tiếp theo là số n và cuối cùng là các số 0.Sau đó, các bước dưới đây được thực hiện lặp lại bốn lần. Mỗi lần lặp sẽ tính giá trị của 10 từ kế tiếp trong khóa mở rộng: a) Mảng T[] được biến đổi sử dụng công thức tuyến tính sau:
Nội dung trích xuất từ tài liệu:
book mã hóa ứng dụng update 2 phần 5 Các thuật toán ứng cử viên AES5.1.3.1 Thủ tục Key–ExpansionThủ tục Key–Expansion bao gồm các bước sau:1. Ban đầu, nội dung khóa gốc được chép vào một mảng tạm T[] (có độ dài là 15 từ), tiếp theo là số n và cuối cùng là các số 0. Nghĩa là: T [0..n − 1] = k[0..n − 1], T [n] = n, T [n + 1..14] = 0 (5.2)2. Sau đó, các bước dưới đây được thực hiện lặp lại bốn lần. Mỗi lần lặp sẽ tính giá trị của 10 từ kế tiếp trong khóa mở rộng: a) Mảng T[] được biến đổi sử dụng công thức tuyến tính sau: for i = 0 to 14 T [i ] = T [i ] ⊕ ((T [i − 7 mod15] ⊕ T [i − 2 mod15]) Chương 53. Cuối cùng, xét 16 từ dùng cho phép nhân trong mã hóa (bao gồm các từ K[5], K[7], …, K[35]) và biến đổi chúng để có hai đặc tính nêu trên. Cần lưu ý là khả năng từ được chọn lựa ngẫu nhiên không thỏa đặc tính thứ hai (tức là từ có 10 bit liên tiếp bằng 0 hoặc bằng 1) là khoảng 1/41. Mỗi từ K[5], K[7], …, K[35] được xử lý như sau: Ghi nhận hai bit thấp nhất của K[i] bằng cách đặt j = K [i ] ∧ 3 . Sau đó, a) xây dựng từ w dựa trên K[i] bằng cách thay thế hai bit thấp nhất của K[i] bằng giá trị 1, tức là w = K [i ] ∨ 3 . b) Xây dựng một mặt nạ M của các bit trong w thuộc một dãy gồm 10 (hoặc nhiều hơn) bit 0 hoặc 1 liên tiếp. Ta có M = 1 nếu và chỉ nếu w thuộc một dãy 10 bit 0 hoặc 1 liên tục. Sau đó đặt lại 0 cho các bit 1 trong M tương ứng với điểm cuối của đường chạy các bit 0 hoặc 1 liên tục trong w, cũng làm như vậy đối với 2 bit thấp nhất và 1 bit cao nhất của M. Như vậy, bit thứ i của M được đặt lại giá trị 0 nếu i < 2, hoặc i = 31 , hoặc nếu bit thứ i của w khác bit thứ (i + 1) hoặc bit thứ (i − 1) . Ví dụ, giả sử ta có w = 03113 0121011 (ở đây 0i, 1i biểu diễn i bit 0 hoặc 1 liên tục). Trong trường hợp này, đầu tiên đặt M = 03125 0 4 , kế đến, gán lại giá trị 1 ở cho các bit ở vị trí 4, 15, 16 và 28 để có M = 0 411100110 05 . c) Tiếp theo, sử dụng một bảng B (gồm bốn từ) cố định để “sửa w”. Bốn phần tử trong B được chọn sao cho mỗi phần tử (cũng như các giá trị xoay chu kỳ khác được xây dựng từ phần tử này) không chứa bảy bit 0 hoặc mười bit 1 liên tiếp nhau. Cụ thể, các tác giả sử dụng bảng120 Các thuật toán ứng cử viên AES B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}, (đây là các phần tử thứ 265 đến 268 trong S–box). Lý do chọn các phần tử này là chỉ có 14 mẫu 8 bit xuất hiện hai lần trong các phần tử này và không có mẫu nào xuất hiện nhiều hơn hai lần. Sử dụng hai bit j (ở bước (a)) để chọn một phần tử trong B và sử dụng năm bit thấp nhất của K[i–1] để quay giá trị của phần tử được chọn này, tức là: p = B[j] Chương 5Dưới đây là mã giả cho thủ tục Key–ExpansionKey–Expansion(input: k[], n; output: K[])// n là số lượng từ trong mảng khóa k[], (4 ≤ n ≤ 14)// K[] là mảng chứa khóa mở rộng, bao gồm 40 từ// T[] là mảng tạm, bao gồm 15 từ// B[] là mảng cố định gồm 4 từ// Khởi tạo mảng B[]B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}// Khởi tạo mảng T với giá trị của mảng khóa k[]T[0…n–1] = k[0…n–1], T[n] = n, T[n+1… 14] = 0// Lặp 4 lần, mỗi lần tính giá trị 10 từ trong mảng K[]for j = 0 to 3 for i = 0 to 14 // Biến đổi tuyến tính T[i] = T[i]⊕((T[i–7 mod 15] ⊕ T[i–2 mod 15]) Các thuật toán ứng cử viên AESfor i = 5, 7, … 35 j = 2 bit thấp nhất của K[i] w = K[i] với 2 bit thấp nhất đặt lại là 1 // Phát sinh mặt nạ M M = 1 khi vào chỉ khi w thuộc về dãy 10 bit 0 hay 1 liên tiếp trong w và 2 ≤ ≤ 30 và w –1 = w = w +1 // Chọn 1 mẫu trong mảng B, quay giá trị phần tử được chọn r = 5 bit thấp của K[i – 1] // số lượng bit quay p = B[j] Chương 51. D[] là một mảng bốn từ dữ liệu 32 bit. Ban đầu D chứa các từ của văn bản ban đầu (thông tin cần mã hóa). Khi kết thúc quá trình mã hóa, D chứa các từ của thông tin đã được mã hóa.2. K[] là mảng khóa mở rộng, bao gồm 40 từ 32 bit.3. S[] là một S–box, bao gồm 512 từ 32 bit, được chia thành hai mảng: S0 gồm 256 từ đầu tiên trong S–box và S1 gồm 256 từ còn lại.Tất cả các mảng sử dụng có chỉ số mảng bắt đầu từ 0.5.1.4.1 Giai đoạn 1: Trộn “tới”Nếu ký hiệu 4 byte của các từ nguồn bằng b0, b1, b2, b3 (ở đây b0 là byte thấp nhấtvà b3 là byte cao nhất), sau đó dùng b0, b2 làm chỉ số trong S–box S0 và b1, b3làm chỉ số trong S–box S1. Đầu tiên XOR S0[b0] với từ đích thứ nhất, sau đócộng S1[b1] cũng với từ đích thứ nhất. Kế ...
Nội dung trích xuất từ tài liệu:
book mã hóa ứng dụng update 2 phần 5 Các thuật toán ứng cử viên AES5.1.3.1 Thủ tục Key–ExpansionThủ tục Key–Expansion bao gồm các bước sau:1. Ban đầu, nội dung khóa gốc được chép vào một mảng tạm T[] (có độ dài là 15 từ), tiếp theo là số n và cuối cùng là các số 0. Nghĩa là: T [0..n − 1] = k[0..n − 1], T [n] = n, T [n + 1..14] = 0 (5.2)2. Sau đó, các bước dưới đây được thực hiện lặp lại bốn lần. Mỗi lần lặp sẽ tính giá trị của 10 từ kế tiếp trong khóa mở rộng: a) Mảng T[] được biến đổi sử dụng công thức tuyến tính sau: for i = 0 to 14 T [i ] = T [i ] ⊕ ((T [i − 7 mod15] ⊕ T [i − 2 mod15]) Chương 53. Cuối cùng, xét 16 từ dùng cho phép nhân trong mã hóa (bao gồm các từ K[5], K[7], …, K[35]) và biến đổi chúng để có hai đặc tính nêu trên. Cần lưu ý là khả năng từ được chọn lựa ngẫu nhiên không thỏa đặc tính thứ hai (tức là từ có 10 bit liên tiếp bằng 0 hoặc bằng 1) là khoảng 1/41. Mỗi từ K[5], K[7], …, K[35] được xử lý như sau: Ghi nhận hai bit thấp nhất của K[i] bằng cách đặt j = K [i ] ∧ 3 . Sau đó, a) xây dựng từ w dựa trên K[i] bằng cách thay thế hai bit thấp nhất của K[i] bằng giá trị 1, tức là w = K [i ] ∨ 3 . b) Xây dựng một mặt nạ M của các bit trong w thuộc một dãy gồm 10 (hoặc nhiều hơn) bit 0 hoặc 1 liên tiếp. Ta có M = 1 nếu và chỉ nếu w thuộc một dãy 10 bit 0 hoặc 1 liên tục. Sau đó đặt lại 0 cho các bit 1 trong M tương ứng với điểm cuối của đường chạy các bit 0 hoặc 1 liên tục trong w, cũng làm như vậy đối với 2 bit thấp nhất và 1 bit cao nhất của M. Như vậy, bit thứ i của M được đặt lại giá trị 0 nếu i < 2, hoặc i = 31 , hoặc nếu bit thứ i của w khác bit thứ (i + 1) hoặc bit thứ (i − 1) . Ví dụ, giả sử ta có w = 03113 0121011 (ở đây 0i, 1i biểu diễn i bit 0 hoặc 1 liên tục). Trong trường hợp này, đầu tiên đặt M = 03125 0 4 , kế đến, gán lại giá trị 1 ở cho các bit ở vị trí 4, 15, 16 và 28 để có M = 0 411100110 05 . c) Tiếp theo, sử dụng một bảng B (gồm bốn từ) cố định để “sửa w”. Bốn phần tử trong B được chọn sao cho mỗi phần tử (cũng như các giá trị xoay chu kỳ khác được xây dựng từ phần tử này) không chứa bảy bit 0 hoặc mười bit 1 liên tiếp nhau. Cụ thể, các tác giả sử dụng bảng120 Các thuật toán ứng cử viên AES B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}, (đây là các phần tử thứ 265 đến 268 trong S–box). Lý do chọn các phần tử này là chỉ có 14 mẫu 8 bit xuất hiện hai lần trong các phần tử này và không có mẫu nào xuất hiện nhiều hơn hai lần. Sử dụng hai bit j (ở bước (a)) để chọn một phần tử trong B và sử dụng năm bit thấp nhất của K[i–1] để quay giá trị của phần tử được chọn này, tức là: p = B[j] Chương 5Dưới đây là mã giả cho thủ tục Key–ExpansionKey–Expansion(input: k[], n; output: K[])// n là số lượng từ trong mảng khóa k[], (4 ≤ n ≤ 14)// K[] là mảng chứa khóa mở rộng, bao gồm 40 từ// T[] là mảng tạm, bao gồm 15 từ// B[] là mảng cố định gồm 4 từ// Khởi tạo mảng B[]B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}// Khởi tạo mảng T với giá trị của mảng khóa k[]T[0…n–1] = k[0…n–1], T[n] = n, T[n+1… 14] = 0// Lặp 4 lần, mỗi lần tính giá trị 10 từ trong mảng K[]for j = 0 to 3 for i = 0 to 14 // Biến đổi tuyến tính T[i] = T[i]⊕((T[i–7 mod 15] ⊕ T[i–2 mod 15]) Các thuật toán ứng cử viên AESfor i = 5, 7, … 35 j = 2 bit thấp nhất của K[i] w = K[i] với 2 bit thấp nhất đặt lại là 1 // Phát sinh mặt nạ M M = 1 khi vào chỉ khi w thuộc về dãy 10 bit 0 hay 1 liên tiếp trong w và 2 ≤ ≤ 30 và w –1 = w = w +1 // Chọn 1 mẫu trong mảng B, quay giá trị phần tử được chọn r = 5 bit thấp của K[i – 1] // số lượng bit quay p = B[j] Chương 51. D[] là một mảng bốn từ dữ liệu 32 bit. Ban đầu D chứa các từ của văn bản ban đầu (thông tin cần mã hóa). Khi kết thúc quá trình mã hóa, D chứa các từ của thông tin đã được mã hóa.2. K[] là mảng khóa mở rộng, bao gồm 40 từ 32 bit.3. S[] là một S–box, bao gồm 512 từ 32 bit, được chia thành hai mảng: S0 gồm 256 từ đầu tiên trong S–box và S1 gồm 256 từ còn lại.Tất cả các mảng sử dụng có chỉ số mảng bắt đầu từ 0.5.1.4.1 Giai đoạn 1: Trộn “tới”Nếu ký hiệu 4 byte của các từ nguồn bằng b0, b1, b2, b3 (ở đây b0 là byte thấp nhấtvà b3 là byte cao nhất), sau đó dùng b0, b2 làm chỉ số trong S–box S0 và b1, b3làm chỉ số trong S–box S1. Đầu tiên XOR S0[b0] với từ đích thứ nhất, sau đócộng S1[b1] cũng với từ đích thứ nhất. Kế ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính mẹo vặt máy tính kỹ thuật lập trình mẹo hay Linux tin học căn bản thủ thuật tin học tự học tin họcTài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 320 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 311 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 269 0 0 -
Cách phân tích thiết kế hệ thống thông tin quan trọng phần 4
13 trang 223 0 0 -
Thủ thuật chặn web đen bằng phần mềm
10 trang 220 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 218 0 0 -
Xử lý tình trạng máy tính khởi động/tắt chậm
4 trang 215 0 0 -
Bài giảng điện tử môn tin học: Quản trị các hệ thống thông tin quản lý xuyên quốc gia
27 trang 214 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 211 0 0 -
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 209 0 0