Danh mục

thuật toán mã hóa và ứng dụng phần 6

Số trang: 23      Loại file: pdf      Dung lượng: 480.08 KB      Lượt xem: 24      Lượt tải: 0    
tailieu_vip

Phí tải xuống: 15,000 VND Tải xuống file đầy đủ (23 trang) 0
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Các thuật toán ứng cử viên AES2 1 t
Nội dung trích xuất từ tài liệu:
thuật toán mã hóa và ứng dụng phần 6 Các thuật toán ứng cử viên AES A B C D 2 2 1 1 t u Chương 5Sau khi thực hiện xong 20 chu kỳ, từ A cộng thêm vào từ khóa thứ 2r + 2(ở đây r là số chu kỳ = 20, từ khóa thứ 42) và từ C cộng thêm vào từ khóa thứ2r + 3 (từ khóa thứ 43).Mã giả quy trình mã hóa RC6–w/r/b:Encryption RC6–w/r/bInput: Dữ liệu cần mã hóa được lưu trữ trong bốn thanh ghi w bit A, B, C, D r: số lượng chu kỳ Các khóa chu kỳ (w bit) S[0, …, 2r + 3]Output: Thông tin đã mã hóa được lưu trữ trong bốn thanh ghi A, B, C, DBegin B = B + S[0] D = D + S[1] for i = 1 to r t = (B × (2B + 1)) Các thuật toán ứng cử viên AES5.2.3 Quy trình giải mãQuy trình giải mã của RC6 là nghịch đảo của quy trình mã hóa. Dưới đây là đoạnmã giả cho quy trình giải mã RC6–w/r/b:Input: Thông tin đã mã hóa cần được giải mã được lưu trữ trong bốn thanh ghi w bitA, B, C, D r: số lượng chu kỳ Các khóa chu kỳ (w bit) S[0, …, 2r + 3]Output: Dữ liệu được giải mã được lưu trữ trong 4 thanh ghi A, B, C, Dbegin C = C – S[2r + 3] A = A – S[2r + 2] for i = r downto 1 (A, B, C, D) = (D, A, B, C) u = (D × (2D + 1)) >> u) ⊕ t end for D = D – S[1] B = B – S[0]end 143Chương 55.3 Phương pháp mã hóa Serpent5.3.1 Thuật toán SERPENTSerpent là một hệ thống 32 chu kỳ thực hiện trên 4 từ 32 bit, do đó nó đưa ra kíchthước khối là 128 bit. Tất cả các giá trị dùng trong việc mã hóa được xem như cácdòng bit. Ứng với mỗi từ 32 bit, chỉ số bit được đánh từ 0 đến 31, các khối128 bit có chỉ số từ 0 đến 127 và các khóa 256 bit có chỉ số từ 0 đến 255… Đốivới các phép tính bên trong, tất cả các giá trị đặt trong little–endian, ở đó từ đầutiên (từ có chỉ số 0) là từ thấp nhất, từ cuối cùng là từ cao nhất và bit 0 của từ 0 làbit thấp nhất. Ở ngoài, ta viết mỗi khối dưới dạng số hexa 128 bit.Serpent mã hóa một văn bản ban đầu P 128 bit thành một văn bản mã hóa C128 bit qua 32 chu kỳ với sự điều khiển của 33 subkey 128 bit (KÂ0, …, KÂ32).Chiều dài khóa người dùng là biến số (nếu ta cố định chiều dài khóa là 128, 192hoặc 256 bit thì khi người sử dụng đưa vào chiều dài khóa ngắn hơn, ta đặt mộtbit 1 vào cuối MSB, còn lại điền các bit 0).5.3.2 Khởi tạo và phân bố khóaViệc mã hóa đòi hỏi 132 từ 32 bit của toàn bộ khóa. Đầu tiên từ khóa ngườisử dụng cung cấp (nếu cần ta biến đổi theo chiều dài khóa đã định như đã trìnhbày ở trên). Sau đó ta mở rộng thành 33 subkey 128 bit (K0, …, K32) bằng cáchghi khóa K thành 8 từ 32 bit (w–8, …, w–1) và mở rộng các từ này thành khóatrung gian w0, …, w131 bằng công thức sau: wi =(wi–8 ⊕ wi–5 ⊕ wi–3 ⊕ wi–1 ⊕ φ ⊗ i) Các thuật toán ứng cử viên AESở đây φ là phần phân số của tỉ số vàng ( 5 + 1) / 2 hoặc số hexa 0x9e3779b9. Đathức cơ sở x8 + x7 + x5 + x3 + 1 cùng với phép cộng của chỉ số chu kỳ được chọnđảm bảo một sự phân bố đều đặn các bit khóa qua các chu kỳ, loại các khóa yếuvà các khóa buộc.Những khóa thực hiện một chu kỳ được suy ra từ các khóa trước khi sử dụng cácS–box. Sử dụng S–box để biến đổi các khóa wi thành các từ ki của khóa chu kỳtheo cách sau: {k0, k1, k2, k3} = S3(w0, w1, w2, w3) {k4, k5, k6, k7} = S2(w4, w5, w6, w7) {k8, k9, k10, k11} = S1(w8, w9, w10, w11) {k12, k13, k14, k15} = S0(w12, w13, w14, w15) {k16, k17, k18, k19} = S7(w16, w17, w18, w19) … {k124, k125, k126, k127} = S4(w124, w125, w126, w127) {k128, k129, k130, k131} = S3(w128, w129, w130, w131) (5.4)Ta đánh số lại các giá trị 32 bit kj giống các subkey 128 bit Ki (cho i ∈ 0, …, r)như sau: Ki = {k4i, k4i+1, k4i+2, k4i+3} (5.5) 145Chương 5Kế đến áp dụng phép hoán vị đầu (IP) vào khóa thực hiện một chu kỳ để định vịcác bit khóa vào đúng vị trí (cột). w–1 w–2 w–3 w–4 w–5 w–6 w–7 w–8 32 32 wi–1 32 ...

Tài liệu được xem nhiều: