Bài giảng An ninh mạng máy tính Chương 5 Mã đối xứng hiện đại Mã khối với các nội dung chính như: Mã khối an toàn lý tưởng, mô hình mã Feistel, các vòng của TinyDES,... Bài giảng An ninh mạng máy tính Chương 5 Mã đối xứng hiện đại Mã khối với các nội dung chính như: Mã khối an toàn lý tưởng, mô hình mã Feistel, các vòng của TinyDES,...
Trang 2• Mã khối (Block Cipher)
• Mã khối an toàn lý tưởng
Phép toán XOR có một hạn chế là chỉ cần biết một cặp khối bản rõ và bản mã, người ta có thể dễ dàng suy ra được
khóa và dùng khóa đó để giải các khối bản mã khác
(known- plaintext attack)
Xét lại ví dụ đầu chương: Bản rõ: 1111 0000 0011
Khóa: 0101 0101 0101 Bản mã: 1010 0101 0110
Trang 3rõ và bản mã.
Trang 4Ví dụ:
Trang 5Lúc này khóa là toàn bộ bảng trên Người gởi cũng như người nhận phải biết toàn bộ bảng trên để mã hóa và giải mã Đối với người phá mã, nếu biết một số cặp bản rõ - bản mã thì cũng chỉ biết được một phần của bảng tra cứu trên Do đó không suy ra được bản rõ cho các bản mã còn lại Hay nói cách khác, muốn phá mã thì phải biết được tất cả các cặp bản rõ và bản mã Nếu chọn kích thước của khối là 64 bít thì số dòng của bảng khóa là
264, một con số rất lớn (và có khoảng 264! bảng khóa như vậy) Lúc này việc nắm tất cả các cặp bản rõ-bản mã của bảng khóa
là điều không thể đối với người phá mã Trường hợp này ta gọi
là mã khối an toàn lý tưởng.
Trang 6Tuy nhiên, khi kích thước khối lớn thì số dòng của bảng khóa cũng lớn và gây trở ngại cho việc lưu trữ cũng như trao đổi khóa giữa người gởi và người nhận.
Bảng khóa có 264 dòng mỗi dòng 64 bít do đó kích thước khóa sẽ là 64x 264= 270 ≈ 1021 bít.
Do đó mã khối an toàn lý tưởng là không khả thi trong thực tế.
Trang 7Mạng SPN
Trong thực tế, người ta chỉ tìm cách để chỉ cần dùng một khóa cókích thước ngắn để giả lập một bảng tra cứu có độ an toàn xấp xỉ
độ an toàn của mã khối lý tưởng
Cách thực hiện là kết hợp hai hay nhiều mã hóa đơn giản lại vớinhau để tạo thành một mã hóa tổng (product cipher), trong đó mãhóa tổng an toàn hơn rất nhiều so với các mã hóa thành phần
Các mã hóa đơn giản thường là phép thay thế (substitution, S-box)
và hoán vị (Permutation, P-box)
Do đó người ta hay gọi mã hóa tổng là Substitution-PermutationNetwork (mạng SPN) Hình dưới minh họa một mạng SP
Trang 9Việc kết hợp các S-box và P-box tạo ra hai tính chất quan trọng của
mã hóa là tính khuếch tán (diffusion) và tính gây lẫn (confusion) Haitính chất này do Claude Shannon giới thiệu vào năm 1946, và là cơ sởcủa tất cả các mã khối hiện nay
Tính khuếch tán: một bít của bản rõ tác động đến tất cả các bít củabản mã, hay nói cách khác, một bít của bản mã chịu tác động của tất
cả các bít trong bản rõ Việc làm như vậy nhằm làm giảm tối đa mốiliên quan giữa bản rõ và bản mã, ngăn chặn việc suy ra lại khóa Tínhchất này có được dựa vào sử dụng P-box kết hợp S-box
Tính gây lẫn: làm phức tạp hóa mối liên quan giữa bản mã và khóa
Do đó cũng ngăn chặn việc suy ra lại khóa Tính chất này có đượcdựa vào sử dụng S-box
Trang 10Mô hình mã Feistel
Mô hình mã Feistel là một dạng tiếp cận khác
so với mạng SP Mô hình do Horst Feistel đề xuất, cũng là sự kết hợp các phép thay thế và hoán vị Trong hệ mã Feistel, bản rõ sẽ được biến đổi qua một số vòng để cho ra bản mã cuối cùng:
Trang 12F là một hàm mã hóa dùng chung cho tất cả các vòng.
Hàm F đóng vai trò như là phép thay thế còn việc hoán đổi các nửa trái phải có vai trò hoán vị.
Bản mã C được tính từ kết xuất của vòng cuối cùng:
C = Cn = (Ln, Rn)
Trang 14Để giải mã quá trình được thực hiện qua các vòng theo thứ
tự ngược lại:
Và cuối cùng bản rõ là P = (L0, R0)
Trang 15Hệ mã Feistel có điểm quan trọng là việc chia các bản mã thành hai nửa trái phải giúp cho hàm F không cần khả nghịch (không cần có F-1).
Mã hóa và giải mã đều dùng chiều thuận của hàm F.
Hàm F và thuật toán sinh khóa con càng phức tạp thì càng khó phá mã.
Ứng với các hàm F và thuật toán sinh khóa con khác nhau thì
ta sẽ có các phương pháp mã hóa khác nhau, phần tiếp theo
sẽ trình bày mã hóa DES, là một phương pháp mã hóa dựa trên nguyên tắc của hệ mã Feistel.
Trang 16• Mã TinyDES
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àyCục tiêu chuẩn quốc gia Hoa Kỳ kêu gọi các công ty Mỹ thiết lậpmộ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 đổicủa cơ quan an ninh Hoa Kỳ, mã hóa Lucifer đã trở thành mã tiêuchuẩ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
Trang 17Tương tự như mã dòng A5/1 và RC4, chúng ta cũng sẽ xem xét một mô hình thu nhỏ của mã DES là TinyDES.
Trang 18Sơ đồ mã TinyDES trên gồm hai phần, phần thứ nhất là các vòng Feistel, phần thứ hai là thuật toán sinh khóa con.
Chúng ta sẽ lần lượt đi vào chi tiết của từng phần.
Trang 19Các vòng của TinyDES Hình sau minh họa một vòng Feistel của TinyDES
Trang 20Trong đó hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 4 bít lên 6 bít Hàm S-boxes biến đổi một số 6 bít đầu vào thành một số 4 bít đầu ra Hàm P-box là một hoán vị 4 bít
Mô tả của các hàm trên là như sau:
Expand: gọi 4 bít của Ri-1 là: b 0 b 1 b 2 b 3
Hàm Expand hoán vị và mở rộng 4 bít thành 6 bít cho ra kết quả:
b 2 b 3 b 1 b 2 b 1 b 0 Ví dụ: R 0 = 0110 Expand(R0) = 101110
S-box: Gọi b 0 b 1 b 2 b 3 b 4 b 5 là 6 bít đầu vào của S-box, ứng với mỗi trường hợp của 6 bít đầu vào sẽ có 4 bít đầu ra Việc tính các bít đầu ra dựa trên bảng sau:
Trang 22Hai bít b0b1 xác định thứ tự hang.
Bốn bít b1b2b3b4 xác định thứ tự cột của bảng.
Từ đó dựa vào bảng tính được 4 bít đầu ra.
Để cho đơn giản, ta có thể viết lại bảng trên dưới dạng số thập lục phân.
Trang 23Ví dụ: X = 101010 Tra bảng ta có S-box(X) = 0110
Trang 24P-box:
Thực hiện hoán vị 4 bít đầu b0b1b2b3 cho ra kết quả b2b0b3b1
Thuật toán sinh khóa con của TinyDES
Khóa K 8 bít ban đầu được chia thành 2 nửa trái phải KL0 và KR0 ,mỗi nửa có kích thước 4 bít
Tại vòng thứ nhất KL0 và KR0 được dịch vòng trái 1 bít để có được
Trang 25Cuố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 (compress) 8 bít của:
KLi và KRi (k0k1k2k3k4k5k6k7)
Thành kết quả gồm 6 bít : k5k1k3k2k7k0
Trang 26Ví dụ vềTinyDES
Ví dụ: mã hóa bản rõ P = 0101.1100 (5C) với khóa K = 1001.1010 TinyDES
Trang 29Khả năng chống phá mã known-plaintext của TinyDES :
Xét trường hợp mã TinyDES chỉ có 1 vòng, tức P = (L0, R0)
và C = (L1, R1)
Trang 30Trong trường hợp này người phá mã biết P và C, tuy nhiên khôngbiết K Giả sử P = 0101.1100 và C = 1100.0001 Người phá mã tiếnhành tính K như sau:
Trang 31Tuy nhiên với mã TinyDES ba vòng, việc phá mã không còn đơn giảnnhư vậy, người phá mã chỉ biết được input của vòng đầu là P vàoutput của vòng cuối là C.
Giá trị trung gian L1R1, L2R2 bị ẩn giấu nên không thể giới hạn miềntìm kiếm của các khóa K1, K2, K3 theo phương pháp trên
Dưới tác động của S-box, việc thay đổi 1 bít trong bản rõ hoặc khóa
K sẽ ảnh hưởng đến nhiều bít khác nhau trong các giá trị trung gian
nên khó phân tích mối liên quan giữa bản rõ, bản mã và khóa
Việc phá mã còn khó khăn hơn nữa trong trường hợp mã DES gồm
16 vòng và kích thước khối là 64 bít