Chương 1. CÁC KHÁI NIỆM CƠ BẢN 1. HỆ MÃ HÓA KHÓA ĐỐI XỨNG (Symmetric Key Cryptosystems) 1. Khái niệm mã hóa khóa đối xứng.
Để đảm bảo tính bí mật, các thông điệp trong kênh truyền tin cần phải được mã hoá. Mô hình về truyền tin có bảo mật có thể xem xét như sau: Kênh Người gửi Mã hóa truyền tin Người nhận Giải mã Hình 1-1. Mô hình truyền tin có bảo mật Cơ chế hoạt động: Người phát tin S muốn gửi một thông tin X tới người nhận R qua một kênh truyền tin, “đối tượng thứ 3” E có thể nghe trộm để lấy được thông tin X. S sử dụng một phép mã hoá thông tin X, để tạo ra đoạn mã Y khó có thể đọc được.
Y đã che giấu nội dung của thông tin X. Khoá là thông số điều khiển của phép biến đổi này. Giải mã là quá trình ngược lại cho phép người nhận thu được thông tin ban đầu X từ đoạn mã Y. Nếu biết khóa lập mã, dễ dàng tính được khóa giải mã và ngược lại, hệ mã hoá khi đó gọi là hệ mã khoá đối xứng( trong một số hệ mã hóa khóa đối xứng, khóa lập mã và khóa giải mã là trùng nhau) 10 TIEU LUAN MOI download : skknchat@gmail.
Hệ mã hóa DES (Data Encryption Standard) Chuẩn mã hoá dữ liệu DES do hãng IBM đề xuất năm 1974 gây tiếng vang lớn và nhanh chóng được sử dụng rộng rãi, đến năm 1977 được chấp nhận là chuẩn liên bang Mỹ. Với DES dữ liệu được mã hoá theo từng khối 64-bits sử dụng khoá 56-bits. Thuật toán chuyển đổi 64-bits đầu vào qua một dãy các bước và đưa ra 64-bits mã hoá. Sơ đồ mã hóa DES: Việc mã hoá trong DES được thực hiện theo các pha với hai đầu vào Dữ liệu cần mã hoá và khoá.
Dữ liệu vào phải là các khối 64-bits và khoá là 56-bits (thực tế 64 bits khoá được đưa vào hàm xử lý, tuy nhiên chỉ có 56 bits được sử dụng cho mã hoá và 8 bits còn lại sử dụng cho parity kiểm tra chẵn lẻ). 64-bits bản tin rõ (plaintext) được đưa qua một cơ chế hoán vị ban đầu (IP- initial permutation) sau đó chúng phải đi qua 16 vòng lặp với cùng chức năng bao gồm cả hàm hoán vị và thay thế. Sau 16 vòng lặp thu được 64-bits dữ liệu là tổ hợp của bản tin rõ và khóa và phải qua đổi chỗ 32-bit, tiếp theo là hoán vị ngược (IP- 1 ) với hoán vị ban đầu để được bản mã. 56 – bit key 64-bit plaintext Hoán vị chọn 1 Hoán vị ban đầu Dịch trái Lặp 1 Hoán vị chọn 2 Dịchtrái Lặp 2 Hoán vị chọn 2 Dịch trái Lặp 16 Hoán vị chọn 2 Dịch trái Đổi chỗ 32 -bit Hoán vị ngược Hình 1-2.
Mã hóa trong DES 64-bit ciphertext 11 TIEU LUAN MOI download : skknchat@gmail.com Trường hợp truyền không bị lỗi Key 00000001 00000001 00000001 00000001 00000001 00000001 00000001 00000001 Plaintext: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 DES Mã hoá Ciphertext:10011000 10100110 01001101 11101001 11000001 10110011 00100011 10100111 Ciphertext:10011000 10100110 01001101 11101001 11000001 10110011 00100011 10100111 DES Giải mã Plaintext: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 12 TIEU LUAN MOI download : skknchat@gmail.com Trường hợp truyền bị lỗi Key 00000001 00000001 00000001 00000001 00000001 00000001 00000001 00000001 Plaintext: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 DES Mã hoá Ciphertext:10011000 10100110 01001101 11101001 11000001 10110011 00100011 10100111 Truyền lỗi Bit bị lỗi Ciphertext:10011000 10100110 01001001 11101001 11000001 10110011 00100011 10100111 DES Giải mã Plaintext: 00110101 10010101 10001101 11010011 11100110 00111100 01101100 01000011 Ta thấy rằng, chỉ sai số 1 bit ciphertext trong quá trình truyền, dữ liệu giải mã đã khác hoàn toàn plaintext ban đầu. Điều này tuy gây một số phức tạp trong quá trình hiệu chỉnh lỗi, nhưng lại là ưu điểm của cơ chế mã hoá DES bởi vì nếu một thay đổi nhỏ trong ciphertext dẫn đến một thay đổi nhỏ trong plaintext, thì sẽ dễ tìm được một thủ tục để làm vô hiệu hoá quá trình. Hệ mã hoá DES đạt được những yêu cầu sau đối với mật mã khối: Confusion (Hỗn loạn): Sự phụ thuộc của mã đối với tin phải thật phức tạp để gây rắc rối hỗn loạn đối với các đối tượng có ý định tìm qui luật để phá mã. Quan hệ của mã với tin là phi tuyến.
Diffusion (khuyếch tán): Làm khuyếch tán văn bản mang tính thống kê. Như vậy đối tượng thứ 3 khó có thể phá mã nhờ dựa vào các mẫu có tần suất lặp cao. 13 TIEU LUAN MOI download : skknchat@gmail.3 Hệ mã hóa RC2 Hệ mã hóa RC2 là hệ mã hoá khối với các khối đầu vào và đầu ra có độ dài 64 bits, tốc độ mã hoá nhanh gấp hai lần thuật toán mã hoá chuẩn DES (với giả thiết thao tác mở rộng khoá đã được thực hiện). Đặc điểm nổi bật của RC2 làm cho nó được sử dụng rộng rãi là kích thước khoá vào biến đổi (từ 1 đến 128 byte), đây chính là một trong những yêu cầu quan trọng của các ứng dụng mã hoá áp dụng trong thương mại hiện nay.
Chính vì những đặc điểm nổi bật được hướng tới ngay từ khi thiết kế này mà RC2 được khuyến nghị thay thế hệ mã hoá chuẩn DES và đã trở thành chuẩn trong mã hoá thông điệp S/MIME. Hoạt động của RC2 gồm 3 bước. Bước 1 : Mở rộng khoá. Do kích thước của khoá biến đổi trong khoảng từ 1 đến 128 byte, nên trước khi sử dụng để mã hoá và giải mã cần phải có thao tác chuẩn hoá khoá gọi là mở rộng khoá (Key Expansion).
Trước khi mô tả hoạt động của thuật toán mở rộng khoá, ta quy ước một số ký hiệu. Ở đây ta nhìn bộ đệm khoá mở rộng theo byte và theo word. - Nhìn theo byte, ta ký hiệu bộ đệm khoá là mảng byte L có kích thước 128 byte từ L[0] tới L[127]. - Nhìn theo word, ta ký hiệu bộ đêm khoá là K có kích thước 64 word từ K[0] tới K[63].
Chú ý ở đây ta sử dụng ký hiệu mảng K và L cùng chỉ tới bộ đệm khoá vào, do đó ta có : K[i] = L[2*i] + 256*L[2*i+1] Giả thiết độ dài của khoá là T byte, với 1 ≤ T ≤ 128. Thuật toán mở rộng khoá đặt T byte khoá vào bộ đệm khoá từ L[0] tới L[T-1]. Ký hiệu số bit có hiệu lực của khoá vào là T1, số byte đầu vào có hiệu lực là T8 = T1 / 8 và mặt nạ bit TM được tính theo công thức: TM = 255 mod 2 8(1-T8)+T1. 14 TIEU LUAN MOI download : skknchat@gmail.com Thuật toán như sau: 1., 0 do L[i] = PITABLE[L[i+1] XOR L[i+T8]] Trong đó PITABLE là một mảng 256 byte ngẫu nhiên, hoán vị của các giá trị từ 0 tới 255.
Sau thuật toán mở rộng khoá, mảng K chứa 64 word sử dụng trong quá trình mã hoá và giải mã. 15 TIEU LUAN MOI download : skknchat@gmail.com Bước 2 : Mã hoá. Mã hoá được thực hiện bởi hai thao tác cơ bản là "mix" và "mash". R là mảng 4 word, R[0].
R[3] là bộ đệm dữ liệu với quá trình mã hoá nó được khởi tạo bản rõ (plaintext) quá trình mã hoá được thao tác trên mảng R, kết quả bản mã cũng được lưu trữ trong mảng R. a) Các bước mix và mash được định nghĩa như sau: Mix up R[i]: R[i] = R[i]+K[j] + (R[i-1] AND R[i-2]) + (NOT(R[i-1]) AND R[i3]); j = j+1; R[i] = R[i] rol s[i]; Trong đó các chỉ số của mảng R và s luôn được thực hiện modulo 4 : R[i] = R[i MOD 4], s[i] = s[i MOD 4] mảng có s[0] = 1; s[1] = 2; s[2] = 3; s[3] = 5; Mixing round: Mix up R[0], Mix up R[1], Mix up R[2], Mix up R[3] Mash R[i]: R[i] = R[i] + K[R[i-1] AND 63]; Mashing round: Mash R[0], Mash R[1], Mash R[2], Mash R[3] b) Mã hoá được thực hiện như sau: 1. Khởi tạo mảng R[0], ., R[3] chứa khối 64 bit bản rõ. Mở rộng khoá tạo mảng khoá mở rộng K[0],.
Thực hiện 5 lần Mixing round. Thực hiện 1 lần Mashing round. Thực hiện 6 lần Mixing round. Thực hiện 1 lần Mashing round.
Thực hiện 5 lần Mixing round. Bản mã trong mảng R[0],. 16 TIEU LUAN MOI download : skknchat@gmail.com Bước 3: Giải mã. Giải mã thực hiện các thao tác ngược với quá trình "mix", "mash" trong quá trình mã hoá, được ký hiệu lần lượt là "R-mix" và "R-mash".
a) Các bước R-mix và R-mash thực hiện như sau: R-Mix up R[i]: R[i] = R[i] ROR s[i]; R[i] = R[i]-K[j]-(((R[i-1] AND R[i-2]))-(NOT(R[i-1]) AND R[i3])); j = j-1; R-Mixing round: R-Mix up R[3], R-Mix up R[2], R-Mix up R[1], R-Mix up R[0] R-Mash R[i]: R[i] = R[i] - K[R[i-1] AND 63]; R-Mashing round: R-Mash R[3], R-Mash R[2], R-Mash R[1], R-Mash R[0] b) Giải mã được thực hiện như sau: 1. Khởi tạo mảng R[0], ., R[3] chứa 64 bit bản mã. Mở rộng khoá tạo mảng K[0],. Thực hiện 5 lần r-mixing round.
Thực hiện 1 lần r-mashing round. Thực hiện 6 lần r-mixing round. Thực hiện 1 lần r-mashing round. Thực hiện 5 lần r-mixing round.
Bản rõ chứa trong mảng R[0],. 17 TIEU LUAN MOI download : skknchat@gmail. Hệ mã hóa RC4 RC4 là hệ mã hoá dòng, dữ liệu có độ dài khoá biến đổi, được phát triển vào năm 1987 bởi Ron Rivest, được đánh giá là nhanh gấp 10 lần thuật toán DES, dễ thiết kế và cài đặt. RC4 làm việc ở chế độ OFB (Output Feedback Mode).
RC4 sử dụng 8x8 S-box từ S0 tới S255. Các S-box khởi tạo như sau: for i = 0 to 255 do S(i) = i; j = 0; for i = 0 to 255 do begin j = (j+S(i)+K(i)) mod 256; swap S(i) and S(j); end; Trong đó K là mảng 256 byte K[0], ., K[255] được điền đầy bằng khoá vào lặp đi lặp lại. Mỗi byte trong luồng dữ liệu lần lượt được mã hoá (giải mã) như sau: Khởi tạo i = 0; j = 0. Tạo số ngẫu nhiên: i = (i+1) mod 256; j = (j+Si) mod 256; swap Si and Sj t = (Si+Sj) mod 256 K = St.
K XOR với bản rõ thì tạo ra bản mã, K XOR với bản mã thì tạo ra bản rõ. 18 TIEU LUAN MOI download : skknchat@gmail. Hệ mã hóa IDEA IDEA được xem là hệ mã hoá khối mạnh nhất hiện nay, nó thao tác trên các khối 64 bit bản rõ. Kích thước khoá vào là 128 bit, sử dụng cùng thuật toán để mã hoá và giải mã.
Thuật toán hoạt động dựa trên sự kết hợp của ba nhóm các phép biến đổi đại số. Các phép biến đổi đại số này dễ cài đặt cả về phần cứng lẫn phần mềm, đó là các phép biến đổi: +XOR. +Cộng theo module 216. +Nhân theo module 216+1.
Sơ đồ hệ mã hóa IDEA Hình 1-3 mô tả hoạt động của IDEA.