TRƯỜNG ĐẠI HỌC SÀI GÒN

CHƯƠNG 3: MÃ HÓA ĐỐI XỨNG

GV: LƯƠNG MINH HUẤN

NỘI DUNG

I. Nguyên lý mã hóa đối xứng

II. Thuật toán mã hóa khối đối xứng

III. Số ngẫu nhiên và giả ngẫu nhiên

IV.Mã hóa luồng và RC4

V. Các chế độ mã hóa khối

I. NGUYÊN LÝ MÃ HÓA ĐỐI XỨNG

1. Các khái niệm về mã hóa

2. Mô hình mã hóa đối xứng

3. Mã hóa cổ điển

4. Mã hóa đối xứng hiện đại

5. Cấu trúc Feistel Cipher

6. Thám mã

I.1 CÁC KHÁI NIỆM VỀ MÃ HÓA

➢Mật mã hay mã hóa dữ liệu (cryptography), là một công cụ cơ bản

thiết yếu của bảo mật thông tin.

▪ Tính bảo mật (confidentiality);

▪ Tính chứng thực (authentication);

▪ Tính không từ chối (non-repudiation) của một hệ truyền tin.

➢Mật mã đáp ứng được các nhu cầu về

I.1 CÁC KHÁI NIỆM VỀ MÃ HÓA

➢Mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương tiện giải mã.

➢Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa

về dạng thông tin ban đầu, quá trình ngược của mã hóa.

I.1 CÁC KHÁI NIỆM VỀ MÃ HÓA

1. Thông tin trước khi mã hóa, ký hiệu là P (Plaintext).

2. Thông tin sau khi mã hóa, ký hiệu là C (Ciphertext).

3. Chìa khóa, ký hiệu là K (Key).

4. Phương pháp mã hóa/giải mã, ký hiệu là E/D (Encryption/

Decryption).

➢Một hệ thống mã hóa bao gồm các thành phần

I.1 CÁC KHÁI NIỆM VỀ MÃ HÓA

➢Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C.

ngược

lại:

áp

➢Quá trình giải mã được tiến dụng hành hàm D lên thông tin C để được thông tin đã giải mã P.

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

➢Mật mã đối xứng sử dụng cùng một khóa cho việc mã hóa và giải mã. Có thể nói mã đối xứng là mã một khóa hay mã khóa chia sẻ.

➢Ở đây người gửi và người nhận chia sẻ khóa chung K, mà họ có

thể trao đổi bí mật với nhau.

➢Ta xét hai hàm ngược nhau: E là hàm mã hóa biến đổi bản rõ thành

bản mã và D là hàm giải mã biến đổi bản mã trở về bản rõ.

➢Giả sử X là văn bản cần mã hóa gọi là bản rõ và Y là dạng văn bản

đã được thay đổi qua việc mã hóa gọi là bản mã.

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

▪ Y = EK(X) ▪ X = DK(Y)

➢Khi đó ta ký hiệu:

➢Mọi thuật toán mã cổ điển đều là mã khóa đối xứng, vì ở đó thông

tin về khóa được chia sẻ giữa người gửi và người nhận.

➢Mã đối xứng là kiểu duy nhất trước khi phát minh ra khóa mã công khai vào những năm 1970, mã công khai còn được gọi là mã không đối xứng.

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

▪ Thuật toán mã hoá mạnh: có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán, mọi người đều biết, nhưng việc thám mã là rất khó khăn và phức tạp, nếu không biết khóa.

▪ Khóa mật chỉ có người gửi và người nhận biết; có kênh an toàn để phân phối khóa giữa các người sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không thể nhận biết được.

➢Hai yêu cầu để sử dụng an toàn mã khóa đối xứng là:

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

➢Về mặt lý thuyết phương pháp duyệt tổng thể là luôn thực hiện được, do có thể tiến hành thử từng khóa, mà số khóa là hữu hạn. Phần lớn công sức của các tấn công đều tỷ lệ thuận với kích thước khóa.

➢Khóa càng dài thời gian tìm kiếm càng lâu và thường tăng theo

hàm mũ.

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

▪ An toàn không điều kiện: Ở đây cho dù máy tính thực hiện được bao nhiêu phép toán trong một giây, mã hoá không thể bị bẻ, vì bản mã không cung cấp đủ thông tin để xác định duy nhất bản rõ.

• Chưa có thuật toán mã hóa nào được coi là an toàn không điều kiện.

➢Có thể phân loại an toàn thành hai kiểu như sau:

I.2 MÔ HÌNH MÃ HÓA ĐỐI XỨNG

▪ An toàn tính toán: Với nguồn lực máy tính có giới hạn và thời gian có hạn (chẳng hạn thời gian tính toán không quá tuổi của vũ trụ) mã hoá coi như không thể bị bẻ.

• Trong trường hợp này không quan trọng máy tính mạnh như thế nào,

có thể coi như mã hóa an toàn về mặt tính toán.

• Nói chung từ nay về sau, một thuật toán mã hóa mà an toàn tính toán,

sẽ được coi là an toàn.

I.3 MÃ HÓA CỔ ĐIỂN

➢Mã hoá cổ điển là phương pháp mã hoá đơn giản nhất xuất hiện

đầu tiên trong lịch sử mã hoá.

➢Thuật toán đơn giản và dễ hiểu. Những phương pháp mã hoá này là cơ sở cho việc nghiên cứu và phát triển thuật toán mã hoá đối xứng được sử dụng ngày nay.

➢Mọi mã cổ điển đều là mã đối xứng và có hai loại mã cổ điển là

mã thay thế và mã hoán vị (hay còn gọi là dịch chuyển).

I.3 MÃ HÓA CỔ ĐIỂN

➢Mã thay thế là phương pháp mà từng kí tự (nhóm kí tự) trong bản rõ được thay thế bằng một kí tự (một nhóm kí tự) khác để tạo ra bản mã. Bên nhận chỉ cần thay thế ngược lại trên bản mã để có được bản rõ ban đầu.

➢Mã hoán vị là phương pháp mà các kí tự trong bản rõ vẫn được giữ nguyên, chúng chỉ được sắp xếp lại vị trí để tạo ra bản mã, tức là các kí tự trong bản rõ hoàn toàn không bị thay đổi bằng kí tự khác mà chỉ đảo chỗ của chúng để tạo thành bản mã.

I.3.1 MÃ CAESAR

➢Đây là mã thay thế được biết sớm nhất, được nghĩ ra bởi Julius Caesar. Lần đầu tiên được sử dụng trong quân sự. Việc mã hoá được thực hiện đơn giản là thay mỗi chữ trong bản rõ bằng chữ thứ ba tiếp theo trong bảng chữ cái.

➢Ví dụ. Mã bản rõ: “Meet me after the toga party” bằng bản mã:

“PHHW PH DIWHU WKH WRJD SDUWB”.

➢Thám mã Caesar là việc làm đơn giản, do số khóa có thể có là rất ít. Chỉ có 26 khóa có thể, vì a chỉ có thể ánh xạ vào một trong số 26 chữ cái của bảng chữ cái tiếng Anh: A, B, C,… Các chữ khác sẽ được xác định bằng số bước tịnh tiến tương ứng của a

I.3.2 MÃ DỊCH CHUYỂN DÒNG

➢Giả sử lấy một số cột xác định và chọn một hoán vị chỉ số của các

cột đó làm khóa.

➢Viết các chữ của bản rõ lần lượt theo các dòng với số cột xác định. Sau đó đọc lại chúng theo các cột với thứ tự chỉ số ở dòng khóa để nhận được bản mã.

➢Quá trình giải mã được thực hiện ngược lại.

I.3.2 MÃ DỊCH CHUYỂN DÒNG

➢Khóa: 4 3 1 2 5 6 7

➢Bản rõ: a t t a c k p o s t p o n e d u n t i l t w o a m x y z

4 3 1 2 5 6 7

a t t a c k p

o s t p o n e

d u n t i l t

w o a m x y z

Bản mã: TTNAAPTMTSUOAODWCOIXKNLYPETZ

I.3.3 BỘ ĐỆM MỘT LẦN

➢Nếu khóa thực sự ngẫu nhiên được dùng và có độ dài bằng bản rõ thì ta nói đó là bộ đệm một lần. Việc mã hóa (giải mã) được thực hiện bằng phép toán XOR từng bit giữa các bit có vị trí tương ứng ở bản rõ (bản mã) và khóa.

➢Vì khóa chỉ được dùng một lần và ngẫu nhiên, nên mã hoá sẽ an toàn. Mã sẽ không bẻ được, vì bản mã không có liên quan thống kê gì với bản rõ, do bộ đệm được sinh ngẫu nhiên.

➢Có thể nói mã bộ đệm một lần là an toàn tuyệt đối, vì với bản rõ bất kỳ và bản mã bất kỳ, luôn tồn tại một khóa để ánh xạ bản rõ đó sang bản mã đã cho

I.3.3 BỘ ĐỆM MỘT LẦN

➢Về mặt lý thuyết, xác suất để mọi mẩu tin (có cùng độ dài với bản rõ) trên bảng chữ mã là mã của một bản rõ cho trước là như nhau. Khóa chỉ sử dụng một lần, nên các lần mã là độc lập với nhau.

➢Vấn đề khó khăn của mã bộ đệm một lần là việc sinh ngẫu nhiên khóa và phân phối khóa an toàn. Do đó bộ đệm một lần ít được sử dụng và chỉ dùng trong trường hợp đòi hỏi bảo mật rất cao.

I.3.4 MÃ TÍCH

➢Mã dùng hoán vị hoặc dịch chuyển không an toàn vì các đặc trưng

tần suất của ngôn ngữ không thay đổi.

➢Mã cổ điển chỉ sử dụng một trong hai phương pháp thay thế hoặc

hoán vị.

➢Có thể sử dụng một số mã liên tiếp nhau sẽ làm cho mã khó hơn.

➢Do đó người ta nghĩ đến việc kết hợp cả hai phương pháp này trong cùng một mã và có thể sử dụng đan xen hoặc lặp nhiều vòng.

I.3.5 MỘT SỐ LOẠI MÃ HÓA KHÁC

➢Mã Playfair

➢Mã Vigenere

➢Mã Rail Fence

➢….

I.3.6 ĐIỂM YẾU CỦA MÃ CỔ ĐIỂN

➢Phương pháp mã hoá cổ điển nói riêng và mã đối xứng nói chung có thể dễ dàng bị giải mã bằng cách đoán chữ dựa trên phương pháp thống kê tần xuất xuất hiện các chữ cái trên mã và so sánh với bảng thống kê quan sát của bản rõ.

➢Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải thống nhất với nhau về cơ chế mã hoá cũng như giải mã. Nếu không thì hai bên sẽ không thể làm việc được với nhau.

I.3.7 MỘT SỐ VẤN ĐỀ KHÁC

▪ Trước khi có mã hiện đại, máy quay là mã tích thông dụng nhất.

Chúng được sử dụng rộng rãi trong chiến tranh thế giới thứ hai.

▪ Máy quay tạo nên mã thay thế rất đa dạng và phức tạp. Trong máy có sử dụng một số lõi hình trụ, mỗi lõi ứng với một phép thế, khi quay sẽ thay thế mỗi chữ bằng một chữ khác tương ứng. Với 3 hình trụ khác nhau, ta có 26 x 26 x 26 = 17576 bảng chữ.

➢Máy quay

I.3.7 MỘT SỐ VẤN ĐỀ KHÁC

I.3.7 MỘT SỐ VẤN ĐỀ KHÁC

➢Dấu tin là dấu sự tồn tại của bản tin cần bảo mật trong một thông

tin khác như:

▪ Trong bản tin dài chỉ dùng một tập con các chữ/từ được đánh dấu

bằng cách nào đó

▪ Sử dụng mực không nhìn thấy

▪ Dấu tin trong các file âm thanh hoặc hình ảnh.

▪ Chỉ dấu được lượng thông tin nhỏ

▪ Có thể kết hợp với mã.

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Đối tượng của các phương pháp mã hóa cổ điển là các bản tin ngôn ngữ, một đơn vị mã hóa là các chữ cái để áp dụng phương thức thay thế hay phương thức hoán vị.

➢Cùng với sự phát triển của máy tính, thông tin ngày một trở nên đa dạng, một bản tin bây giờ không chỉ đơn giản là bản tin gồm các chữ cái, mà có thể gồm cả các thông tin về định dạng văn bản như tài liệu HTML…

➢Ngoài ra bản tin có thế xuất hiện dưới các loại hình khác như hình ảnh, video, âm thanh… Tất các bản tin đó đều được biểu diễn trên máy vi tính dưới dạng một dãy các số nhị phân. Trong máy tính các chữ cái được biểu diễn bằng mã ASCII.

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Ví dụ:

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Và cũng tương tự như bản tin ngôn ngữ, trong bản tin nhị phân cũng tồn tại một số đặc tính thống kê nào đó mà người phá mã có thể tận dụng để phá bản mã, dù rằng bản mã bây giờ tồn tại dưới dạng nhị phân.

➢Mã hóa hiện đại quan tâm đến vấn đề chống phá mã trong các trường hợp biết trước bản rõ (known-plaintext), hay bản rõ được lựa chọn (chosen-plaintext).

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Ví dụ: chúng ta sử dụng bản rõ là các chữ cái của một ngôn ngữ gồm có 8 chữ cái A, B, C, D, E, F, G, H trong đó mỗi chữ cái được biểu diễn bằng 3 bít.

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Như vậy nếu có bản rõ là ’head’ thì biểu diễn nhị phân tương ứng

là: 111100000011

➢Giả sử dùng một khóa K gồm 4 bít 0101 để mã hóa bản rõ trên

bằng phép XOR

➢Trong phép mã hóa trên, đơn vị mã hóa không phải là một chữ cái mà là một khối 4 bít. Để giải mã, lấy bản mã XOR một lần nữa với khóa thì có lại bản rõ ban đầu.

I.4 MÃ HÓA ĐỐI XỨNG HIỆN ĐẠI

➢Mã hóa bằng phép XOR như trên thì khá đơn giản, người ta khắc

phúc bằng cách:

▪ Người ta dùng một bộ sinh số ngẫu nhiên để tạo khóa dài, giả lập mã hóa One-Time pad. Đây là cơ sở thực hiện của mã dòng (stream cipher).

▪ Một khối được mã hóa bằng phép XOR với khóa. Điều này không an toàn vì chỉ cần biết một cặp khối bản rõ - bản mã (vd: 1111 và 1010), người phá mã dễ dàng tính được khóa. Để khắc phục điều này, người ta tìm ra các phép mã hóa phức tạp hơn phép XOR, và đây là cơ sở ra đời của mã khối (block cipher).

I.6 CẤU TRÚC FEISTEL CIPHER.

➢Feistel đã đề xuất rằng chúng ta có thể tính gần đúng “idea block cipher” bằng cách sử dụng khái niệm về “product cipher”, đó là việc thực hiện hai hoặc nhiều loại mã hoá đơn giản theo cách sao cho kết quả cuối cùng hoặc sản phẩm được mã hóa mạnh hơn bất kỳ mã hoá thành phần nào.

I.6 CẤU TRÚC FEISTEL CIPHER.

➢Mã Feistel dựa trên mã tích nghịch đảo được, tức là kết hợp mã thay thế với mã hoán vị và qui trình giải mã là giống với mã hoá, chỉ cần thay đổi vai trò khối bản mã với khối bản rõ và thứ tự các khóa con được dùng.

➢Từ khóa chính sinh ra cho mỗi vòng lặp một khóa con.

I.6 CẤU TRÚC FEISTEL CIPHER.

▪ Thực hiện phép thế trên nửa trái. Sử dụng hàm vòng trên nửa phải và

khóa con, rồi tác động đến nửa trái.

▪ Sau đó hoán vị các nửa phải chưa được xử lý.

▪ Xử lý vòng tiếp theo.

➢Chia khối đầu vào thành hai nửa bằng nhau:

I.6 CẤU TRÚC FEISTEL CIPHER.

I.6 CẤU TRÚC FEISTEL CIPHER.

▪ Tăng kích thước khối sẽ làm tăng độ an toàn nhưng làm giảm tốc độ

mã.

▪ Tăng kích thước khóa sẽ làm tăng độ an toàn – tìm khóa khó hơn,

nhưng làm chậm mã.

▪ Tăng số vòng làm tăng độ an toàn nhưng làm chậm mã.

▪ Phát sinh khóa con càng phức tạp làm cho việc thám mã khó hơn

nhưng làm chậm mã.

➢Nguyên tắc thiết kế mã khối Feistel:

I.6 CẤU TRÚC FEISTEL CIPHER.

▪ Hàm vòng càng phức tạp làm cho việc thám mã khó hơn nhưng làm

chậm mã.

▪ Phần mềm mã hoá/giải mã nhanh và khó thám mã là tiêu chí hay

được đề cập đến đối với ứng dụng và kiểm nghiệm thực tế.

I.6 THÁM MÃ

➢Thám mã là công việc phân tích bản tin mã hóa để nhận được bản

tin rõ trong điều kiện không biết trước khóa mã.

➢Trong thực tế, công việc thám mã gặp nhiều khó khăn hơn khi

không biết rõ hệ mật mã nào được sử dụng.

➢Tuy nhiên, để đơn giản hóa, chúng ta giả sử người thám mã đã biết rõ hệ mật mã được sử dụng khi tiến hành phân tích mã (nguyên lý Kerckhoff).

➢Mục đích là thiết kế được một hệ mật mã an toàn bảo mật.

I.6 THÁM MÃ

▪ Tấn công chỉ biết bản mã (ciphertext-only): người thám mã chỉ có bản

tin mã hóa.

▪ Tấn công biết bản tin rõ (known plaintext): người thám mã có bản tin

rõ và bản mã.

▪ Tấn công chọn bản tin rõ (chosen plaintext): người thám mã tạm thời có quyền truy xuất tới Bộ mã hóa, do đó anh ta có khả năng chọn bản tin rõ và xây dựng bản mã tương ứng.

▪ Tấn công chọn bản mã (chosen ciphertext): người thám mã tạm thời có quyền truy xuất tới Bộ giải mã, do đó anh ta có khả năng chọn bản mã và xây dựng lại bản tin rõ tương ứng.

➢Các loại tấn công vào hệ mật mã:

I.6 THÁM MÃ

➢Nhiều kỹ thuật thám mã sử dụng đặc điểm thống kê của tiếng Anh, trong đó dựa vào tần suất xuất hiện của 26 chữ cái trong văn bản thông thường để tiến hành phân tích mã.

➢Becker và Piper đã chia 26 chữ cái thành năm nhóm và chỉ ra xác

suất của mỗi nhóm như sau:

I.6 THÁM MÃ

1.E, có xác suất khoảng 0.120

2.T, A, O, I, N, S, H, R, mỗi chữ cái có xác xuất nằm trong khoảng từ

0.06 đến 0.09

3.D, L, mỗi chữ cái có xác xuất xấp xỉ 0.04

4.C, U, M, W, F, G, Y, P, B, mỗi chữ cái có xác xuất nằm trong

khoảng từ 0.015 đến 0.023

5.V, K, J, X, Q, Z, mỗi chữ cái có xác xuất nhỏ hơn 0.01

I.6 THÁM MÃ

I.6 THÁM MÃ

▪ Thám mã tích cực là việc thám mã sau đó tìm cách làm sai lạc các dữ liệu truyền, nhận hoặc các dữ liệu lưu trữ phục vụ mục đích của người thám mã.

➢Thám mã tích cực:

➢Thám mã thụ động:

▪ Thám mã thụ động là việc thám mã để có được thông tin về bản tin

rõ phục vụ mục đích của người thám mã.

II. THUẬT TOÁN MÃ HÓA KHỐI ĐỐI XỨNG

1. Data Encryption Standard.

2. Triple DES.

3. Advanced Encryption Standard

II.1 DES

➢Vào năm 1973, khi lĩnh vực máy tính ngày càng phát triển, nhu cầu ứng dụng bảo mật vào các mục đích dân sự được đặt ra. Lúc này Cục tiêu chuẩn quốc gia Hoa Kỳ kêu gọi các công ty Mỹ thiết lập một chuẩn mã hóa quốc gia.

➢Mã hóa Lucifer của công ty IBM được chọn và sau một vài sửa đổi của cơ quan an ninh Hoa Kỳ, mã hóa Lucifer đã trở thành mã tiêu chuẩn DES (Data Encryption Standard).

➢Qua quá trình sử dụng mã DES đã chứng tỏ độ an toàn cao và

được sử dụng rộng rãi.

ĐẶC ĐIỂM CỦA MÃ DES

➢Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm một hoán vị khởi tạo trước khi vào vòng 1 và một hoán vị khởi tạo sau vòng 16.

▪ ví dụ bản tin “meetmeafterthetogaparty” biểu diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ cái (64 bít): meetmeaf - tertheto - gaparty.

➢Kích thước của khối là 64 bít:

➢Kích thước khóa là 56 bít.

➢Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích

ra từ khóa chính.

THUẬT TOÁN

➢Bước 1: Sinh khóa con: Sử dụng thuật toán sinh khóa con từ khóa

K ta sẽ được 16 khóa con K1, K2, … K16

➢Bước 2: Sử dụng phép hoán vị khởi đầu IP (Initial Permutation) để hoán vị các bit của M, kết quả nhận được chia thành 2 nửa là L0 = m63m62…m32, R0 = m31m30…m0.

➢Bước 3: Với i chạy từ i = 1 đến 16 thực hiện: Tính các Li và Ri

theo công thức: Li = Ri-1; Ri = Li-1 XOR f(Ri-1, Ki) trong đó f(Ri-1, Ki) = R(S(E(Ri-1) XOR Ki)).

THUẬT TOÁN

➢Bước 4: Đổi vị trí khối L16, R16 ta được khối R16L16 = b1b2…b64. ➢Bước 5: Sử dụng phép hoán vị kết thúc FP (Final Permutation –

nghịch đảo với hoán vị khởi đầu IP) ta thu được bản mã cần tìm : C = IP-1(b1b2…b64)

HOÁN VỊ KHỞI TẠO

➢Ta đánh số các bít của khối 64 bít theo thứ tự từ trái sang phải là 0,

1, …, 62, 63:

➢Hoán vị khởi tạo sẽ hoán đổi các bít theo quy tắc sau :

HOÁN VỊ KẾT THÚC

➢Hoán vị kết thúc hoán đổi các bít theo quy tắc sau:

➢Hoán vị kết thúc chính là hoán vị nghịch đảo của hoán vị khởi tạo.

CÁC VÒNG CỦA DES

CÁC VÒNG CỦA DES

➢Trong DES, hàm F của Feistel là:

F(Ri-1, Ki) = P-box(S-boxes(Expand( Ri-1) Ki))

▪ Hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 32 bít lên 48 bít.

▪ Hàm Sboxes nén 48 bít lại còn 32 bít.

▪ Hàm P-box là một hoán vị 32 bít. Mô tả của các hàm trên là như sau:

➢Trong đó

EXPAND

➢Expand: đánh số các bít của Ri-1 theo thứ tự từ trái sang phải là 0,

1, 2, …, 31.

➢Hàm Expand thực hiện vừa hoán vị vừa mở rộng 32 bít thành 48

bít theo quy tắc:

S-BOXES

➢Hàm S-boxes của DES biến đổi một số 48 bít thành một số 32 bít.

➢Người ta chia hàm S-boxes thành 8 hàm S-box con, mỗi hàm biến

đổi số 6 bít thành số 4 bít

S-BOXES

➢Đưa các khối 8 bit Bi vào 8 bảng S1, S2, …, S8 (được gọi là các

hộp S-box). Mỗi hộp S-Box là một bảng 4*16 cố định có các cột từ 0 đến 15 và các hàng từ 0 đến 3.

➢Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6 ta tính được SiBi như sau: hai bit b1b6 xác định hàng r trong hộp Si, bốn bit b2b3b4b5 xác định cột c trong hộp Si. Khi đó, Si(Bi) sẽ xác định phần tử Ci = Si(r,c), phần tử này viết dưới dạng nhị phân 4 bit. Như vậy, 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit Ci với (1 ≤ i ≤ 8).

S-BOXES

P-BOX

➢P-box: hàm P-box cũng thực hiện hoán vị 32 bít đầu vào:

THUẬT TOÁN SINH KHÓA CON

➢ 16 vòng lặp của DES chạy cùng thuật toán như nhau nhưng với 16 khóa con khác nhau. Các khóa con đều được sinh ra từ khóa chính của DES bằng thuật toán sinh khóa con.

THUẬT TOÁN SINH KHÓA CON

➢Khóa K 64 bít ban đầu được rút trích và hoán vị thành một khóa 56

bít (tức chỉ sử dụng 56 bít) theo quy tắc:

THUẬT TOÁN SINH KHÓA CON

➢Khóa 56 bít này được chia thành 2 nửa trái phải KL0 và KR0 , mỗi

nửa có kích thước 28 bít. Tại vòng thứ i (i = 1, 2, 3,…,16), KLi-1 và KRi-1 được dịch vòng trái ri bít để có được KLi và KRi, với ri được định nghĩa:

THUẬT TOÁN SINH KHÓA CON

➢Cuối cùng khóa Ki của mỗi vòng được tạo ra bằng cách hoán vị và

nén 56 bít của Kli và KRi thành 48 bít theo quy tắc:

HIỆU ỨNG LAN TRUYỀN

➢Một tính chất quan trọng cần thiết của mọi thuật toán mã hóa là chỉ cần một thay đổi nhỏ trong bản rõ hay trong khóa sẽ dẫn đến thay đổi lớn trong bản mã.

➢Cụ thể, chỉ cần thay đổi một bít trong bản rõ hay khóa thì dẫn đến sự thay đổi của nhiều bít bản mã. Tính chất này được gọi là hiệu ứng lan truyền.

➢Nhờ có tính chất này mà người phá mã không thể giới hạn miền tìm kiếm của bản rõ hay của khóa (dù phá mã theo known- plaintext hay chosen-plaintext) nên phải thực hiện vét cạn khóa.

➢DES là một phương pháp mã hóa có hiệu ứng lan truyền này

ĐỘ AN TOÀN CỦA DES

▪ Vì khóa của mã DES có chiều dài là 56 bít nên để tiến hành brute- force attack, cần kiểm tra 256 khóa khác nhau. Hiện nay với những thiết bị phổ dụng, thời gian gian để thử khóa là rất lớn nên việc phá mã là không khả thi (xem bảng). Tuy nhiên vào năm 1998, tổ chức Electronic Frontier Foundation (EFF) thông báo đã xây dựng được một thiết bị phá mã DES gồm nhiều máy tính chạy song song, trị giá khoảng 250.000$. Thời gian thử khóa là 3 ngày. Hiện nay mã DES vẫn còn được sử dụng trong thương mại, tuy nhiên người ta đã bắt đầu áp dụng những phương pháp mã hóa khác có chiều dài khóa lớn hơn (128 bít hay 256 bít) như TripleDES hoặc AES.

➢Tấn công vét cạn khóa (Brute Force Attack):

ĐỘ AN TOÀN CỦA DES

▪ Năm 1990 Biham và Shamir đã giới thiệu phương pháp phá mã vi sai. Phương pháp vi sai tìm khóa ít tốn thời gian hơn brute-force. Tuy nhiên phương pháp phá mã này lại đòi hỏi phải có 247 cặp bản rõ - bản mã được lựa chọn (chosen-plaintext). Vì vậy phương pháp này là bất khả thi dù rằng số lần thử có thể ít hơn phương pháp brute-force.

➢Phá mã DES theo phương pháp vi sai (differential cryptanalysis):

ĐỘ AN TOÀN CỦA DES

➢Phá mã DES theo phương pháp thử tuyến tính (linear

cryptanalysis)

▪ Năm 1997 Matsui đưa ra phương pháp phá mã tuyến tính. Trong phương pháp này, cần phải biết trước 243 cặp bản rõ-bản mã (known-plaintext). Tuy nhiên 243 cũng là một con số lớn nên phá mã tuyến tính cũng không phải là một phương pháp khả thi.

II.2 TRIPPLE DES

➢Một trong những cách để khắc phục yếu điểm kích thước khóa ngắn của mã hóa DES là sử dụng mã hóa DES nhiều lần với các khóa khác nhau cho cùng một bản tin.

➢Đơn giản nhất là dùng DES hai lần với hai khóa khác nhau, cách

thức này được gọi là Double DES:

➢Điều này giống như là Double DES dùng một khóa có kích thước là 112 byte, chỉ có một hạn chế là tốc độ chậm hơn DES vì phải dùng DES hai lần.

II.2 TRIPPLE DES

➢Tuy nhiên người ta đã tìm được một phương pháp tấn công Double

DES có tên gọi là gặp-nhau-ở-giữa (meet-in-themiddle).

➢Đây là một phương pháp tấn công chosen-plaintext.

➢Vì vậy người ta chọn dùng DES ba lần với ba khóa khác nhau,

cách thức này được gọi là Triple DES:

II.2 TRIPPLE DES

➢Chiều dài khóa là 168 bít sẽ gây phức tạp hơn nhiều cho việc phá

mã bằng phương pháp tấn công gặp-nhau-ở-giữa.

➢Trong thực tế người ta chỉ dùng Triple DES với hai khóa K1, K2

mà vẫn đảm bảo độ an toàn cần thiết. Công thức như sau:

II.3 ADVANCED ENCRYPTION STANDARD (AES)

➢Vào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích thước khóa ngắn, có thể bị phá mã trong tương lai gần, Cục tiêu chuẩn quốc gia Hoa Kỳ đã kêu gọi xây dựng một phương pháp mã hóa mới.

➢Cuối cùng một thuật toán có tên là Rijndael được chọn và đổi tên

thành Andvanced Encryption Standard hay AES.

➢Có thể nói rằng mã hóa AES với khóa có kích thước 256 bít là “an toàn mãi mãi” bất kể những tiến bộ trong ngành kỹ thuật máy tính.

II.3 ADVANCED ENCRYPTION STANDARD (AES)

➢Giống như DES, mã hóa AES là một mã khối gồm nhiều vòng. Khác với DES, mã hóa AES không phải là một mã hóa Feistel. Thuật toán AES khá phức tạp,

▪ Cho phép lựa chọn kích thước khối mã hóa là 128, 192 hay 256 bít.

▪ Cho phép lựa chọn kích thước của khóa một cách độc lập với kích

thước khối: là 128, 192 hay 256 bít.

▪ Số lượng vòng có thể thay đổi từ 10 đến 14 vòng tùy thuộc vào kích

thước khóa.

➢Một số đặc điểm chính của AES:

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Trong mật mã, tính ngẫu nhiên (entropy) đóng vai trò rất quan toán, chúng ta cần các số ngẫu trọng. Trong nhiều thuật nhiên (nghĩa là không thể đoán trước). Nếu những con số này có thể đoán trước được, các thuật toán sẽ bị xâm phạm.

➢Trong khoa học máy tính, số ngẫu nhiên thường đến từ bộ tạo số giả ngẫu nhiên (PRNG), khởi tạo bởi một số ngẫu nhiên ban đầu không thể đoán trước (entropy). Trong mật mã, các PRNG an toàn được sử dụng, được gọi là CSPRNG, thường kết hợp entropy với PRNG và các kỹ thuật khác để làm cho tính ngẫu nhiên được tạo ra không thể đoán trước.

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Trình tạo số giả ngẫu nhiên (PRNG) được sử dụng để tăng kích thước một lượng nhỏ ngẫu nhiên ban đầu thành một số lượng lớn ngẫu nhiên, thường được sử dụng trong các hệ thống mật mã.

➢Lưu ý hơn PRNG không bảo mật bằng mật mã và khác với

CSPRNG.

➢ PRNG là các hàm bắt đầu từ một số entropy ban đầu (seed) và tính số ngẫu nhiên tiếp theo bằng một số tính toán không thể đoán trước mà không biết seed. Các tính toán như vậy được gọi là pseudo-random functions.

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Các Pseudo-random functions (không an toàn cho mật mã) thường

sử dụng state nội bộ.

➢Khi bắt đầu, trạng thái được khởi tạo bởi một seed ban đầu.

➢Khi số ngẫu nhiên tiếp theo được tạo, nó được tính từ state nội bộ (sử dụng một số tính toán hoặc công thức), sau đó state nội bộ của pseudo-random function được thay đổi (sử dụng một số tính toán hoặc công thức).

➢Khi số ngẫu nhiên tiếp theo được tạo, nó lại được tính dựa trên

state nội bộ của funtion và state này lại được thay đổi.

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Initial Entropy (Seed)

➢Để an toàn, một PRNG (là ngẫu nhiên thống kê) nên bắt đầu bằng một seed ban đầu thực sự ngẫu nhiên, điều này hoàn toàn không thể đoán trước.

➢Nếu seed có thể dự đoán được, nó sẽ tạo ra chuỗi số ngẫu nhiên có thể dự đoán được và toàn bộ quá trình tạo ngẫu nhiên sẽ không an toàn.

➢Đó là lý do tại sao có sự ngẫu nhiên không thể đoán trước khi bắt

đầu (secure seed) là rất quan trọng.

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Entropy

➢Trong khoa học máy tính, "entropy" có nghĩa là tính ngẫu nhiên

không thể đoán trước và thường được đo bằng bit.

➢Ví dụ: nếu bạn di chuyển chuột máy tính của bạn, nó sẽ tạo ra một số sự kiện khó dự đoán, như vị trí bắt đầu và vị trí kết thúc của con trỏ chuột. Nếu chúng tôi cho rằng chuột đã thay đổi vị trí của nó trong phạm vi [0 ... 255] pixel, entropy được thu thập từ chuyển động chuột này sẽ vào khoảng 8 bit (vì 2 ^ 8 = 255).

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Collecting Entropy

➢Entropy có thể được thu thập từ nhiều sự kiện khó dự đoán trong máy tính: nhấp chuột trên bàn phím, hoạt động của micrô và các hoạt động khác, kết hợp với thời gian chúng xảy ra.

➢Bộ sưu tập ngẫu nhiên ban đầu này thường được thực hiện bởi hệ điều hành (HĐH), cung cấp API tiêu chuẩn để truy cập nó (ví dụ: đọc từ file /dev/random trong Linux).

III. SỐ NGẪU NHIÊN VÀ GIẢ NGẪU NHIÊN

➢Trong hệ thống máy tính để bàn, entropy máy tính xách tay hoặc điện thoại di động rất dễ thu thập, trong khi trên một số thiết bị phần cứng hạn chế (như vi điều khiển đơn giản), entropy khó hoặc không thể thu thập được.

➢Khi thu thập đủ entropy, nó được sử dụng để khởi tạo trình tạo

ngẫu nhiên.

IV. MÃ HÓA LUỒNG VÀ RC4

1. Khái niệm mã hóa luồng

2. A5/1

3. RC4

IV.1 KHÁI NIỆM MÃ HÓA LUỒNG

IV.1 KHÁI NIỆM MÃ HÓA LUỒNG

▪ Kích thước một đơn vị mã hóa: gồm k bít. Bản rõ được chia thành

các đơn vị mã hóa: P → p0p1p2…pn-1 (pi : k bit)

▪ Một bộ sinh dãy số ngẫu nhiên: dùng một khóa K ban đầu để sinh ra các số ngẫu nhiên có kích thước bằng kích thước đơn vị mã hóa:

▪ StreamCipher (K) → S = s0s1s2…sn-1 (si : k bit) ▪ Mỗi số ngẫu nhiên được XOR với đơn vị mã hóa của bản rõ để có

được bản mã.

➢Mã luồng có các đặc tính sau:

IV.1 KHÁI NIỆM MÃ HÓA LUỒNG

➢Quá trình giải mã được thực hiện ngược lại, bản mã C được XOR

với dãy số ngẫu nhiên S để cho ra lại bản rõ ban đầu:

▪ A5/1

▪ RC4

➢Hai phương pháp mã hóa luồng cơ bản là:

IV.2 A5/1

➢A5/1 được dùng trong mạng điện thoại GSM, để bảo mật dữ liệu trong quá trình liên lạc giữa máy điện thoại và trạm thu phát sóng vô tuyến.

➢Đơn vị mã hóa của A5/1 là một bít.

➢Bộ sinh số mỗi lần sẽ sinh ra hoặc bít 0 hoặc bít 1 để sử dụng trong

phép XOR.

TINY A5/1

▪ Bộ sinh số gồm 3 thanh ghi X, Y, Z. ▪ Thanh ghi X gồm 6 bit, ký hiệu là (x0, x1, …, x5). ▪ Thanh ghi Y gồm 8 bit (y0, y1, …, y7). ▪ Thanh ghi Z lưu 9 bit (z0, z1, …, z8). ▪ Khóa K ban đầu có chiều dài 23 bít và lần lượt được phân bố vào

các thanh ghi: K → XYZ .

▪ Các thanh ghi X, Y, Z được biến đổi theo 3 quy tắc:

➢Cơ chế thực hiện của bộ sinh số TinyA5/1 là như sau:

TINY A5/1

▪ t = x2 x4  x5 ▪ xj = xj-1 với j = 5, 4, 3, 2, 1 ▪ x0 = t ▪ Ví dụ: giả sử X là 100101, dẫn đến t = 0  0  1 = 1, vậy sau khi

quay giá trị của X là 110010.

➢Quay X gồm các thao tác:

TINY A5/1

▪ t = y6  y7 ▪ yj = yj-1 với j = 7, 6, 5, ..., 1 ▪ y0 = t

➢Quay Y: tương tự như quay X, quay Y là như sau:

TINY A5/1

▪ t = z2  z7  z8 ▪ zj = zj-1 với j = 8, 7, 6, ..., 1 ▪ z0 = t

➢Quay Z:

TINY A5/1

➢Cho ba bit x, y, z, ta định nghĩa một hàm maj(x, y, z) là hàm “chiếm đa số”, nghĩa là nếu trong 3 bít x, y, z có từ hai bít 0 trở lên thì hàm trả về giá trị 0, nếu không hàm trả về giá trị 1.

▪ m = maj(x1, y3, z3) ▪ If x1 = m then thực hiện quay X ▪ If y3 = m then thực hiện quay Y ▪ If z3 = m then thực hiện quay Z

➢Tại bước sinh số thứ i, các phép tính sau được thực hiện:

TINY A5/1

▪ si = x5  y7  z8

➢Và bít được sinh ra là:

➢Bít si được XOR với bít thứ i trong bản rõ để có được bít thứ i

trong bản mã theo quy tắc của mã dòng.

TINY A5/1

➢Ví dụ: mã hóa bản rõ P=111 (chữ h) với khóa K là 100101.

01001110.100110000.

TINY A5/1

IV.2 A5.1

▪ Quay X:

• t = x13  x16  x17  x18 • xj = xj-1 với j = 18, 17,16 ..., 1 • x0 = t

➢Về nguyên tắc bộ sinh số A5/1 hoạt động giống như TinyA5/1. Kích thước thanh ghi X, Y, Z lần lượt là 19, 22 và 23 bít. Các bước quay X, Y, Z cụ thể như sau:

IV.2 A5.1

▪ Quay Y:

• t = y20  y21 • yj = yj-1 với j = 21, 20, 19, ..., 1 • y0 = t ▪ Quay Z:

• t = z7  z20  z21  z22 • zj = zj-1 với j = 22, 21, 20, ..., 1 • z0 = t

IV.2 A5.1

➢Hàm maj được tính trên 3 bít x8, y10, z10. Sau khi quay xong bít

sinh ra là: si = x18  y21  z22

IV.2 A5.1

➢Mã hóa A5/1 có thể được thực hiện dễ dàng bằng các thiết bị phần cứng, tốc độ nhanh. Do đó A5/1 đã từng được sử dụng để mã hóa các dữ liệu real-time như các dãy bít audio.

➢Ngày nay A5/1 được sử dụng để mã hóa dữ liệu cuộc gọi trong

mạng điện thoại GSM.

IV.3 RC4

➢RC4 được dùng trong giao thức SSL để bảo mật dữ liệu trong quá trình truyền dữ liệu giữa Web Server và trình duyệt Web. Ngoài ra RC4 còn được sử dụng trong mã hóa WEP của mạng Wireless LAN.

TINY RC4

➢Khác với A5/1, đơn vị mã hóa của TinyRC4 là 3 bít.

➢TinyRC4 dùng 2 mảng S và T mỗi mảng gồm 8 số nguyên 3 bít (từ

0 đến 7).

➢Khóa là một dãy gồm N số nguyên 3 bít với N có thể lấy giá trị từ

1 đến 8.

➢Bộ sinh số mỗi lần sinh ra 3 bít để sử dụng trong phép XOR.

➢Quá trình sinh số của TinyRC4 gồm hai giai đoạn:

TINY RC4

▪ Trong giai đoạn này, trước tiên dãy S gồm các số nguyên 3 bít từ 0 đến 7 được sắp thứ tự tăng dần. Sau đó dựa trên các phần tử của khóa K, các phần tử của S được hoán vị lẫn nhau đến một mức độ ngẫu nhiên nào đó.

➢Giai đoạn khởi tạo:

TINY RC4

➢Ví dụ: mã hóa bản rõ P = 001000110 (từ bag) với khóa K gồm 3

số 2, 1, 3 (N=3)

TINY RC4

TINY RC4

▪ Quá trình thực hiện đến khi i=7 và lúc đó dãy S là 6 0 7 1 2 3 5 4

➢Giai đoạn sinh số:

TINY RC4

➢Trong giai đoạn này, các phần tử của S tiếp tục được hoán vị.

➢Tại mỗi bước sinh số, hai phần tử của dãy S được chọn để tính ra số k 3 bít là số được dùng để XOR với đơn vị mã hóa của bản rõ.

▪ Tiếp tục ví dụ trên, quá trình sinh số mã hóa bản rõ „bag‟ thực hiện

như sau:

TINY RC4

IV.3 RC4

➢Cơ chế hoạt động của RC4 cũng giống như TinyRC4 với các đặc

tính sau:

▪ Đơn vị mã hóa của RC4 là một byte 8 bít.

▪ Mảng S và T gồm 256 số nguyên 8 bít

▪ Khóa K là một dãy gồm N số nguyên 8 bít với N có thể lấy giá trị từ

1 đến 256.

▪ Bộ sinh số mỗi lần sinh ra một byte để sử dụng trong phép XOR.

IV.3 RC4

▪ Giai đoạn khởi tạo:

➢Hai giai đoạn của RC4 là:

IV.3 RC4

▪ Giai đoạn sinh số:

IV.3 RC4

➢Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó đoán trước, vì vậy RC4 đạt được mức độ an toàn cao theo tinh thần của mã hóa One-Time Pad.

➢Mã hóa RC4 hoàn toàn được thực hiện trên các số nguyên một byte do đó tối ưu cho việc thiết lập bằng phần mềm và tốc độ thực hiện nhanh hơn so với mã khối.

V. CÁC CHẾ ĐỘ MÃ HÓA KHỐI

1. Electronic Codebook Mode.

2. Cipher Block Chaining Mode.

3. Counter Mode.

4. Output Feedback Mode

5. Cipher Feedback Mode.

V. CÁC CHẾ ĐỘ MÃ HÓA KHỐI

➢Mã khối (như mã DES) được áp dụng để mã hóa một khối dữ liệu

có kích thước xác định.

➢Để mã hóa một bản tin dài, bản tin được chia ra thành nhiều khối

và áp dụng mã khối cho từng khối một.

➢Có nhiều mô hình áp dụng mã khối là ECB, CBC, CTR, OFB và

CFB.

V.1 ELECTRONIC CODEBOOK – ECB

➢Trong mô hình ECB, mỗi khối được mã hóa một cách riêng rẽ,

dùng chung một khóa K.

V.1 ELECTRONIC CODEBOOK – ECB

➢Trong mã hóa ECB, nếu Pi = Pj thì Ci = Cj và ngược lại. Có thể thấy rằng mã ECB tương tự như mã hóa đơn bảng cổ điển, trong đó Pi và Ci giống như là các chữ cái, còn khóa K cùng với mã khối giống như là một phép hoán vị.

➢Do đó, người phá mã có thể dựa vào một số đặc tính thống kê của dữ liệu để tiến hành phá mã, giống như dùng thống kê tần suất chữ cái để phá mã mã hóa đơn bảng.

➢Vì vậy mã hóa ECB chỉ thích hợp để mã hóa những bản tin ngắn.

V.1 ELECTRONIC CODEBOOK – ECB

V.2 CIPHER BLOCK CHAINING – CBC

➢Trong mô hình CBC, bản mã của một lần mã hóa được sử dụng

cho lần mã hóa tiếp theo:

➢Do đó để mã hóa khối đầu tiên, người ta dùng một khối dữ liệu giả được gọi là vector khởi tạo (initialization vector – IV) và được chọn ngẫu nhiên:

V.2 CIPHER BLOCK CHAINING – CBC

➢Để giải mã, tiến hành ngược lại:

V.2 CIPHER BLOCK CHAINING – CBC

➢Người mã hóa và người giải mã phải dùng chung vector khởi tạo IV. Vector khởi tạo không cần giữ bí mật nên thường được gắn vào trước bản mã trước khi truyền thông điệp.

➢Có thể thấy rằng nội dung của bản mã Ci không chỉ phụ thuộc vào bản rõ Pi mà còn phụ thuộc vào tất cả các bản rõ đứng trước và IV. ➢Do đó nếu có hai bản rõ giống nhau thì hai bản mã sẽ không giống

nhau (do IV ngẫu nhiên).

➢Điều này khắc phục được hạn chế của mô hình ECB, từ bản mã người phá mã không thể phát hiện ra những đặc tính thống kê của dữ liệu.

V.2 CIPHER BLOCK CHAINING – CBC

➢Ngược lại, đối với việc giải mã, bản rõ Pi không chỉ phụ thuộc vào

bản mã Ci mà còn phụ thuộc vào bản mã Ci-1 đứng trước.

➢Do đó nếu xảy lỗi trên đường truyền, chỉ cần một bít bị hỏng thì dẫn đến không thể giải mã được bản mã đó và bản mã tiếp theo sau

V.2 CIPHER BLOCK CHAINING – CBC

V.3 COUNTER – CTR

➢CTR thực ra là một phương pháp mã hóa thuộc loại mã dòng, tuy nhiên bộ sinh khóa ngẫu nhiên có dùng đến mã khối để sinh số.

➢Kích thước của đơn vị mã hóa là kích thước mã khối (ví dụ nếu

dùng mã DES thì đơn vị mã hóa là 64 bít).

➢Với một vector khởi tạo ban đầu, công thức sinh số như sau:

V.4 OUTPUT FEEDBACK – OFB

➢Mô hình CTR là một mã dòng trong đó đơn vị mã hóa có kích

thước cố định là b bít, với b là kích thước mã khối.

➢Để mã hóa với đơn vị mã hóa có kích thước bất kỳ, mô hình OFB

được đề xuất.

➢Mô hình này có hai điểm khác so với mô hình CTR:

V.4 OUTPUT FEEDBACK – OFB

▪ Chỉ dùng s bít đầu tiên của khóa sinh ra bởi bộ sinh khóa, với s là

kích thước đơn vị mã hóa dùng trong phép XOR.

▪ Để tăng thêm tính ngẫu nhiên của bộ sinh khóa, s bít này của khóa được ghép vào vector khởi tạo IV cho lần mã hóa tiếp theo. Phép ghép được thực hiện bằng cách đẩy trái IV s bít và đưa s bít của khóa vào s bít thấp của IV.

V.4 OUTPUT FEEDBACK – OFB

V.5 CIPHER FEEDBACK – CFB

➢Mô hình CFB có thay đổi một chút so với mô hình OFB. Mô hình OFB dùng s bít của khóa do bộ sinh khóa tạo ra để ghép với IV cho lần mã hóa tiếp theo. Còn mô hình CFB dùng s bít của bản mã để ghép với IV.

V.5 CIPHER FEEDBACK – CFB

VẤN ĐỀ TRAO ĐỔI KHÓA BÍ MẬT

➢Giả sử có N người sử dụng, trao đổi dữ liệu bằng mã hóa đối xứng, mỗi cặp người sử dụng cần có một khóa bí mật riêng, dẫn đến cần có N(N-1)/2 khóa bí mật.

➢Việc thiết lập các khóa bí mật này sẽ gây ra khó khăn cho các

người sử dụng vì mỗi người cần thiết lập N-1 khóa.

VẤN ĐỀ TRAO ĐỔI KHÓA BÍ MẬT

➢Phương pháp trao đổi khóa bằng trung tâm phân phối khóa (Key

Distribution Center – KDC) giúp đơn giản hóa vấn đề này.

➢Trong mô hình sử dụng KDC, mỗi người sử dụng chỉ cần có một khóa bí mật với KDC. Còn khóa dùng để trao đổi dữ liệu giữa các người sử dụng sẽ do KDC cung cấp

VẤN ĐỀ TRAO ĐỔI KHÓA BÍ MẬT

▪ Alice gửi yêu cầu muốn trao đổi dữ liệu với Bob cho KDC.

▪ KDC tạo một khóa bí mật KAB và mã hóa thành hai bản mã. Một bản mã được mã hóa bằng khóa bí mật của Alice E(KAB, KA) và một bản mã được mã hóa bằng khóa bí mật của Bob E(KAB, KB).

▪ Alice giải mã E(KAB, KA) để có KAB ▪ Alice gửi E(KAB, KB) cho Bob, Bob giải mã để có được KAB ▪ Alice và Bob trao đổi dữ liệu qua khóa bí mật KAB

➢Giả sử Alice có khóa bí mật KA với KDC và Bob có khóa bí mật KB với KDC. Bây giờ Alice muốn trao đổi dữ liệu với Bob. Quá trình thiết lập khóa chung KAB giữa Alice và Bob gồm các bước:

VẤN ĐỀ TRAO ĐỔI KHÓA BÍ MẬT