HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG TIỂU LUẬN MÔN HỌC AN NINH MẠNG VIỄN THÔNG ĐỀ TÀI TÌM HIỂU VỀ MẬT MÃ KHỐI FEISTEL VÀ ỨNG DỤNG Tiểu luận cuối kỳ an ninh mạng viễn thông 1 MỤC LỤC LỜI NÓI ĐẦU[.]
Trang 1- -
TIỂU LUẬN MÔN HỌC: AN NINH MẠNG VIỄN THÔNG
ĐỀ TÀI: TÌM HIỂU VỀ MẬT MÃ KHỐI FEISTEL
VÀ ỨNG DỤNG
Trang 2
MỤC LỤC
LỜI NÓI ĐẦU 2
BẢNG THUẬT NGỮ - VIẾT TẮT 3
DANH MỤC HÌNH ẢNH 4
I Tổng quan về mật mã khối Feistel 5
1.1 Lịch sử hình thành và phát triển 5
1.2 Mật mã khối 6
1.3 Đặc điểm mật mã khối Feistel 9
1.3.1 Thiết kế mật mã khối feistel 9
II Cấu trúc, quá trình mã hóa, giải mã mật mã khối feistel 10
2.1 Cấu trúc mật mã khối Feistel 10
2.2 Mã hóa mật mã khối Feistel 11
2.3 Giải mã mật mã khối Feistel 12
III Ưu, nhược điểm của mật mã khối feistel 14
3.1 Ưu điểm 14
3.2 Nhược điểm 14
IV Mật mã khối feistel mở rộng 14
V Ứng dụng mật mã khối Feistel 18
5.1 Ứng dụng trong DES 18
5.1.1 Các vòng của DES 18
5.1.2 Thuật sinh khóa trong DES 21
5.1.3 Triple DES 23
5.2 Ứng dụng trong GOST 24
5.3 Ứng dụng trong Twofish 26
KẾT LUẬN 28
Tài liệu tham khảo 29
Trang 3LỜI NÓI ĐẦU
Với sự phát triển chóng mặt của internet và máy tính ngày này cùng với nhu cầu làm việc từ xa gia tăng dẫn đến vấn đề đảm bảo an ninh an toàn thông tin phải được đảm bảo Đối với những thông tin bình thường thì không ai chú ý đến nhưng đối với những thông tin mang tính chất quan trọng thì vấn đề bảo mật cần phải đảm bảo tuyệt đối Do đó cần mã hóa để các thông tin để truyền đi được bảo mật Feistel là mật mã khối đảm bảo được điều
đó Tuy đã ra đời từ lâu nhưng được ứng dụng trong các loại mật mã hóa hiện nay và là nền tảng phát triển các loại mật mã hóa trong tương lai
Trong bài tiểu luận nhóm tìm hiểu các nội dung lý thuyết liên quan đến mật mã khối feistel từ đó tìm ra ưu, nhược điểm của mật mã khối feistel và các ứng dụng của mật mã khối feistel Nội dung tìm hiểu được dựa trên nội dung trong môn học an ninh mạng viễn thông và có sự mở rộng đến các nội dung liên quan
Bài tiểu luận nhóm em sẽ chia các nội dung cụ thể như sau
- Phần 1: Tổng quan về mật mã khối feistel: Phần này sẽ trình bày tổng quan quá
trình hình thành và phát triển cũng như đặc điểm của mật mã khối feistel
- Phần 2: Cấu trúc, quá trình mã hóa, giải mã của mật mã khối feistel: Phần này
sẽ trình bày 1 cách cụ thể về cấu trúc, quá trình mã hóa, giải mã của mật mã khối feistel cũng với các hình ảnh phân tích
- Phần 3: Ưu , nhược điểm của mật mã khối feistel: Từ các đặc điểm, cấu trúc, quá
trình mã hóa, giải mã của mật mã khối feistel rút ra được các ưu, nhược điểm của mật mã khối feistel
- Phần 4: Mật mã khối feistel: Trong các trường hợp mà kích thước dữ liệu lớn do
đó cần mật mã khối feistel Trong phần này sẽ trình bày điều đó
- Phần 5: Ứng dụng của mật mã khối feistel: Phần này sẽ trình bày các ứng dụng
của mật mã khối feistel trong DES, GOST, TWOFISH
Trang 4BẢNG THUẬT NGỮ - VIẾT TẮT
MIT
Massachusetts Institute of
Trang 5DANH MỤC HÌNH ẢNH
Hình 5.4: Cấu trúc hàm S-Boxes khi chia thành 8 hàm con 20
Trang 6I Tổng quan về mật mã khối Feistel
1.1 Lịch sử hình thành và phát triển
Trong mật mã, một mật mã Feistel (còn được gọi là mật mã khối Luby-Rackoff) là một cấu trúc đối xứng được sử dụng trong việc xây dựng các mật mã, chúng được đặt tên theo tên của nhà vật lý và mật mã người Đức, Horst Femstel Feistel sinh ra ở Berlin, Đức vào năm 1915 và chuyển đến Hoa Kỳ vào năm 1934
Trong Thế chiến thứ hai, ông bị quản thúc tại gia, nhưng vẫn được nhập quốc tịch Hoa
Kỳ vào ngày 31 tháng 1 năm 1944 Ngày hôm sau, ông được cấp phép an ninh và bắt đầu làm việc cho Trung tâm Nghiên cứu Cambridge của Không quân Hoa Kỳ (AFCRC) về các thiết bị Identification Friend or Foe (IFF) cho đến những năm 1950 Sau đó, ông được làm việc tại Phòng thí nghiệm Lincoln của MIT, tiếp đó là tập đoàn MITER
Cuối cùng, ông chuyển đến IBM, nơi ông nhận được giải thưởng cho công việc mật mã của mình Nghiên cứu của ông tại IBM đã dẫn đến sự phát triển của mật mã Lucifer và tiêu chuẩn mã hóa dữ liệu (DES)
Feistel là một trong những nhà nghiên cứu phi chính phủ đầu tiên nghiên cứu thiết kế
và lý thuyết về mật mã khối Feistel đã lấy tên của mình để xây dựng mạng Feistel, một phương pháp phổ biến để xây dựng mật mã khối (ví dụ DES) Feistel có bằng cử nhân tại MIT và bằng thạc sĩ tại Harvard, chúng đều về lĩnh vực vật lý
Mật mã Feistel hay nó cũng thường được gọi là một mạng lưới feistel Có nhiều mật
mã khối sử dụng mạng lưới feistel, bao gồm tiêu chuẩn mã hóa dữ liệu DES Hoa Kỳ, GOST Nga và gần đây là mật mã Blowfish và Twodish Trong một mật mã, mã hóa và giải mã là các thao tác rất giống nhau và cả hai bao gồm việc điều khiển một hàm được gọi là "round funtion" một số lần cố định
Mật mã khối Feistel là một cấu trúc được sử dụng cho nhiều mật mã khối đối xứng như DES, Mật mã Feistel đề xuất một cấu trúc thực hiện thay thế và hoán vị xen kẽ để thu được văn bản mật mã từ văn bản đầu và ngược lại Việc thay thế được thực hiện bằng cách thay thế các phần tử của văn bản thuần túy hoặc tập hợp các phần tử của văn bản thuần túy bằng phần tử của văn bản mật mã hoặc tập hợp các phần tử của văn bản mật mã Một hoán
vị được thực hiện bằng cách thay đổi thứ tự của các phần tử của văn bản thuần túy Không
có phần tử nào ở đây bị thay thế bởi bất kỳ phần tử nào khác, chỉ có thứ tự của các phần tử được thay đổi
Bây giờ, tiến tới cấu trúc của mật mã Feistel Nhiều mật mã khối đối xứng hiện đại dựa trên mạng Feistel Mạng Feistel lần đầu tiên được nhìn thấy thương mại trong mật
Trang 7mã Lucifer của IBM , được thiết kế bởi Horst Feistel và Don Coppersmith vào năm 1973 Mạng Feistel đã được tôn trọng khi Chính phủ Liên bang Hoa Kỳ thông qua DES (một mật
mã dựa trên Lucifer, với những thay đổi do NSA thực hiện ) vào năm 1976
Giống như các thành phần khác của DES, bản chất lặp đi lặp lại của cấu trúc Feistel làm cho việc triển khai hệ thống mật mã trong phần cứng dễ dàng hơn (đặc biệt là trên phần cứng có sẵn tại thời điểm thiết kế của DES)
Chẳng hạn một thuật toán mã hóa khối có thể xử lý khối 128 bít đầu vào và biến nó thành khối 128 bít ở đầu ra Quá trình chuyển đổi còn sử dụng thêm một tham số nữa: khóa bí mật để cá biệt hóa quá trình Việc giải mã cũng diễn ra tương tự: xử lý khối
mã hóa 128 bít cùng với khóa để trả về khối 128 bít bản rõ ban đầu Chúng là các thành phần cơ bản được chỉ định trong thiết kế của nhiều giao thức mật mã và được sử dụng rộng rãi để thực hiện mã hóa một lượng lớn dữ liệu, bao gồm cả các giao thức trao đổi dữ liệu Phương pháp mật mã khối được Claude Shannon đề xuất lần đầu tiên vào năm 1949 trong một bài báo có ảnh hưởng gọi là “Lý thuyết Truyền thông của Hệ thống Bí mật” Chúng là một thành phần trung tâm của nhiều mật mã mã hóa được sử dụng rộng rãi như DES và AES
•
So sánh mật mã dòng và mật mã khốiMật mã dòng (Stream Cipher) là loại mã hóa luồng dữ liệu số một bit hoặc một byte mỗi lần Trong Stream Cipher sử dụng keystream (ki) vào quá trình mã hóa plaintext (pi) Nếu keystream mật mã là ngẫu nhiên, thì mật mã này không thể bị phá vỡ bằng bất kỳ phương tiện nào khác ngoài việc có được keystream
Tuy nhiên, keystream phải được cung cấp cho cả hai phía người dùng trước thông qua một số kênh độc lập và an toàn Điều này dẫn đến một số vấn đề không thể sử dụng đối với
dữ liệu lớn
Theo đó, vì lý do thực tế, trình tạo bit-stream phải được xem là một thủ tục thuật toán,
vì vậy bit-stream mã hoá có thể được tạo bởi cả hai phía người dùng Bộ tạo bit-stream là
Trang 8một thuật toán được điều khiển bằng khóa và phải tạo ra một bit-stream mạnh về mặt mã hoá
Nghĩa là, phải tính toán để dự đoán các phần trong tương lai của bit-stream dựa trên các phần trước của bit-stream Hai người dùng chỉ cần chia sẻ khóa tạo và mỗi người có thể tạo ra keystream
Hình 1.1 : Sơ đồ mã hóa mật mã dòng
Mật mã khối (Block Cipher) là một khố trong đó 1 khối plaintext được coi là khối văn bản gốc cần được xử lý và được sử dụng để tạo ra một khối cipher text có độ dài bằng nhau Thông thường, kích thước khối 64 hoặc 128 bit được sử dụng, giống như Steam Cipher, hai người dùng chia sẻ khóa mã hóa đối xứng
Sử dụng một số chế độ hoạt động, một Block Cipher có thể được sử dụng để đạt được hiệu quả tương tự như Stream Cipher Cần nhiều nỗ lực hơn nữa để đi vào phân tích mật
mã khối Nhìn chung, Block cipher dường như có thể áp dụng cho một phạm vi ứng dụng rộng hơn so với Stream Cipher Phần lớn các ứng dụng mã hóa đối xứng dựa trên mạng sử dụng Block Cipher
Trang 9Hình 1.2 : Sơ đồ mã hóa mật mã khối
Tuy nhiên, sự phân biệt giữa 2 phương pháp nhiều khi không rõ ràng vì mã hóa khối khi hoạt động theo một chế độ nhất định nào đó thì tác dụng của nó cũng giống như một phương pháp mã hóa dòng
Thuật toán mã hóa khối ra đời sớm và có nhiều ảnh hưởng là thuật toán DES (Data Encryption Standard - Tiêu chuẩn mã hóa dữ liệu) do công ty IBM phát triển và được ban hành làm tiêu chuẩn năm 1977 Tiêu chuẩn thay thế DES có tên là AES (Advanced Encryption Standard - Tiêu chuẩn mã hóa nâng cao) được ban hành năm 2001
Quá trình mã hóa khối bao gồm 2 thuật toán: mã hóa - ký hiệu E và giải mã - ký hiệu
E -1 Cả hai thuật toán đều tác động lên một khối đầu vào n bít sử dụng một khóa k bít để cho ra một khối đầu ra n bít Đối với bất kỳ khóa nào, giải mã là hàm ngược của mã hóa,
nghĩa là:
𝐸𝐾−1(𝐸𝐾(𝑀)) = 𝑀 Trong đó M là khối thông tin và K là khóa bất kỳ
Độ dài của khối thông tin, ký hiệu là n, thông thường là cố định ở 64 hoặc 128 bít Một
số thuật toán có độ dài khối thay đổi nhưng không phổ biến Tính đến trước những năm giữa của thập kỷ 1990 thì độ dài 64 bít thường được sử dụng Từ đó trở về sau thì khối 128 bít được sử dụng rộng rãi hơn
Trong các chế độ mã hóa khối thì người ta thường phải bổ sung thêm một số bít cho văn bản để văn bản chứa số nguyên lần các khối Mỗi chế độ mã hóa có đặc tính khác nhau
về lan truyền lỗi (lỗi mã hóa trong khối này ảnh hưởng tới khối khác), khả năng truy xuất
Trang 10ngẫu nhiên và khả năng chống lại các kiểu tấn công khác nhau Độ dài thông thường của khóa là 40, 56, 64, 80, 128, 192 và 256 bít Vào năm 2006 thì 80 bít là độ dài tối thiểu của khóa để có thể chống lại tấn công kiểu duyệt toàn bộ
1.3 Đặc điểm mật mã khối Feistel
1.3.1 Thiết kế mật mã khối feistel
Mặc dù đã có rất nhiều nghiên cứu để nâng cao tính an toàn trong việc thiết kế mật mã khối nhưng các nguyên lý cơ bản vẫn không thay đổi nhiều so với hoạt động của mã Feistel
từ những năm 1970 Ba khía cạnh cốt lỗi trong việc thiết kế mật mã khối đó là số vòng tạo
mã, thiết kế hàm F và thuật tạo khóa
- Số vòng tạo mã: Với số vòng tạo mã càng lớn thì càng khó khăn cho kẻ tấn công kể
cả trong trường hợp hàm F tương đối yếu Nhìn chung, số vòng tạo mã nên được chọn sao cho độ khó tấn công phức tạp hơn kiểu tấn công tìm khóa brute-force Tiêu chí này được
sử dụng trong thiết kế DES Đối với mật mã DES sử dụng 16 vòng mã hóa, tấn công mật
mã yêu cầu 255 Một hành động trong khi kiểu tấn công brute force yêu cầu 255 hành động Như vậy, nếu DES có 15 hoặc ít hơn 15 vòng tạo mã, số hành động yêu cầu để phá mã
sẽ nhỏ hơn số hành động yêu cầu phá mã theo kiểu tấn công brute force Tiêu chí này được quan tâm rất nhiều vì nó có thể dễ dàng điều chỉnh tính an toàn của thuật toán và so sánh với các thuật toán khác
- Thiết kế hàm F: Thành phần quan trọng nhất của mật mã khối Feistel là hàm F Hàm
F có chức năng cung cấp sự hỗn loạn trong mã Feistel, do đó nó cần phải khó khôi phục lại bằng phép thay thế Một tiêu chí rõ ràng nhất đối với hàm F đó là tính phi tuyến Hàm F càng phi tuyến thì càng khó khăn cho kẻ tấn công
Có một số tiêu chí khác được xem xét khi thiết kế hàm F Trong đó các thuật toán phải
có hiệu ứng lan truyền tốt Điều này có nghĩa là khi thay đổi một bit đầu vào thì sẽ làm thay đổi nhiều bit ở đầu ra Tiêu chí lan truyền nghiêm ngặt (SAC) được phát biểu rằng bất kỳ bit đầu ra nào của S-box sẽ thay đổi xác suất bằng 1/2 khi bất kỳ một bit đầu vào nào bị thay đổi Mặc dù SAC chỉ mô tả với S-box nhưng nó cũng là tiêu chí tương tự được áp dụng
với hàm F Một tiêu chí khác đó là tiêu chí độc lập bit (BIC) phát biểu rằng các bit đầu ra j
và k sẽ thay đổi một cách độc lập khi bất kỳ một bit đầu vào i nào bị thay đổi với mọi i, j
và k
- Thuật toán tạo khóa: Với bất kỳ mật mã Feistel nào, một khóa chính sẽ được sử
dụng để tạo ra một khóa con cho mỗi vòng tạo mã Thông thường các khóa con sẽ được lựa chọn để hạn chế tối đa việc suy diễn ra các khóa con và khôi phục khóa chính Thuật toán tạo khóa nên đảm bảo được hai tiêu chí SAC và BIC
Trang 11II Cấu trúc, quá trình mã hóa, giải mã mật mã khối feistel
2.1 Cấu trúc mật mã khối Feistel
Cấu trúc mật mã khối Feistel do Horst Feistel đề xuất, là sự kết hợp của các phép thay thế và hoán vị Trong mô hình mật mã Feistel, bản rõ được biến đổi qua một số vòng để cho ra bản mã cuối cùng Mô hình mật mã khối Feistel được mô tả trong hình 2.1
Hình 2.1: Cấu trúc mật mã hóa và giải mật mã Feistel
Trang 12Cụ thể, Feistel đề xuất sử dụng một mã hóa thay thế các thay thế và hóa vị, trong đó các thuật ngữ này được định nghĩa như sau:
- Substitution (Thay thế): Mỗi thành phần hoặc nhóm yếu tố văn bản gốc được thay thế duy nhất bằng một yếu tố mã hóa tương ứng hoặc nhóm các yếu tố mã hóa liên quan
- Permutation (Hoán vị): Một chuỗi các thành phần của văn bản được thay thế bằng hoán vị của chuỗi đó Nghĩa là không có phần tử nào được thêm hoặc xóa trong chuỗi, thay vào đó là thứ tự các phần tử xuất hiện trong chuỗi được thay đổi
Các phép biến đổi trong cấu trúc mật mã Feistel được mô tả như sau:
𝑃𝐾→ 𝐶1 1→ 𝐶𝐾2 2→ …𝐾3 𝐾→ 𝐶𝑛−1 𝑛Trong đó, P là bản rõ, 𝐶𝑖(𝑖 = 1,2,3, … 𝑛) là các bản mã
2.2 Mã hóa mật mã khối Feistel
Hình 2.2: Mật mã hóa khối Feistel
Trang 13Bản rõ được chia thành hai nửa trái và phải như sau:
𝑃 = (𝐿𝐸0, 𝑅𝐸0) Hai nửa dữ liệu đi qua n vòng xử lý và sau đó kết hợp để tạo ra khối bản mã Qua mỗi vòng, quy tắc biến đổi các nửa trái phải là:
𝐿𝐸𝑖 = 𝑅𝐸𝑖−1
𝑅𝐸𝑖 = 𝐿𝐸𝑖−1⊕ 𝐹(𝑅𝐸𝑖−1, 𝐾𝑖) Trong đó toán tử ⊕ thể hiện phép XOR Mỗi vòng i có đầu vào là 𝐿𝐸𝑖−1 và 𝑅𝐸𝑖−1 xuất phát từ vòng trước cùng một khóa con 𝐾𝑖 được tạo ra từ khóa K ban đầu theo một thuật toán sinh khóa con sao cho mỗi khóa con là khác nhau và khác khóa K F là một hàm mật
mã hóa giống nhau ở tất cả các vòng Hàm F thể hiện phép thay thế còn việc tráo đổi nửa trái và nửa phải thể hiện phép hoán vị
Bản mã của hệ thống sẽ là bản mã đầu ra của vòng cuối cùng được hoán vị
𝐶 = (𝑅𝐸𝑛, 𝐿𝐸𝑛)
2.3 Giải mã mật mã khối Feistel
Hình 2.3: Giải mã khối Feistel
Trang 14Quá trình giải mật mã được thực hiện ngược lại cũng với số vòng như ở phần mật
mã hóa Khi đó, đầu vào bộ giải mật mã sẽ là bản mã C có giá trị như sau:
𝐿𝐷0 = 𝑅𝐸𝑛
𝑅𝐷0 = 𝐿𝐸𝑛Qua các vòng các bản mã được giải:
𝐿𝐷𝑖 = 𝑅𝐷𝑖−1
𝑅𝐷𝑖 = 𝐿𝐷𝑖−1⊕ 𝐹(𝑅𝐷𝑖−1, 𝐾𝑖) Sau vòng cuối cùng, bản rõ được giải ra với giá trị như sau:
𝑃 = (𝑅𝐷𝑛, 𝐿𝐷𝑛) Việc thực hiện chính xác hệ thống mật mã Feistel phụ thuộc vào việc lựa chọn các tham số và các đặc tính thiết kế dưới đây:
- Kích thước khối: Kích thước khối lớn có nghĩa là an toàn cao hơn (với giả thiết
là tất cả các tham số khác là như nhau) nhưng tốc độ mật mã hóa/giải mã bị giảm đối với một thuật toán cho trước Thông thương, kích thước khối 64 bit là kích thước phổ biến, được sử dụng trong thiết kế mật mã khối
- Kích thước khóa: Kích thước khóa lớn có nghĩa là độ an toàn cao hơn nhưng có thể làm giảm tốc độ mật mã hóa/giải mã An toàn cao hoan có nghĩa là chống lại được các tấn công brute-force tốt hơn Kích thước khóa 64 bit hoặc ít hơn 64 bit hiện nay được coi là không đủ và khóa 128 bit đã trở thành kích thước phổ biến
- Số vòng: Bản chất của mật mã Feistel là một vòng mật mã đơn không đủ để cung cấp tính an toàn nhưng nhiều vòng mật mã sẽ làm tăng tính an toàn hơn Kích thước phổ biến là 16 vòng
- Thuật toán tạo khóa con: Tính phức tạp trong thuật toán này sẽ gây khó khăn cho
Trang 15III Ưu, nhược điểm của mật mã khối feistel
3.1 Ưu điểm
- Quá trình mã hóa và giải mã trùng nhau, mà chỉ khác nhau ở thứ tự khóa con, điều này sẽ tiết kiệm được nữa tài nguyên khi thực hiện thuật toán trên phần cứng vì khi quá trình mã hóa, giải mã trùng nhau thì chỉ cần cài đặt thuật toán 1 lần là sẽ tự chạy cho cả quá trình và tài nguyên phần cứng cũng không phần chứa nhiều thuật toán
- Hàm F có thể chọn với độ khó bất kỳ do đó chỉ cần thay đổi độ phức tạp của hàm F cũng là cách để làm tăng tính bảo mật của thông tin hơn
- Ngoài việc tăng độ khó hàm F thì cũng có thể dễ dàng tăng số vòng mã hóa cũng sẽ đảm bảo được quá trình mã hóa phức tạp hơn
3.2 Nhược điểm
- Vì mỗi vòng mã chỉ thực hiện biến đổi nửa khối dữ liệu, nên cần số vòng mã hóa lớn
để đảm bảo độ an toàn của hệ mật Nhưng chính điều này lại làm giảm đáng kể tốc độ mã
vì khi đó hệ thống cần phải chạy với số vòng mã hóa nhiều hơn
- Cấu trúc vòng mã hóa và giải mã giống nhau nên khi hacker tìm được quy luật 1 vòng
sẽ dựa vào cấu trúc đó để giải mã của hệ thống phụ thuộc vào việc tìm khóa để mở
IV Mật mã khối feistel mở rộng
Vấn đề được đặt ra là nếu xây dựng một mã khối có kích cở lớn thì dùng mạng Feistel với hai nhánh ở trên không thuận lợi vì khi chia làm 2 nửa thì kích thước cũng tương đối lớn, lúc này chúng ta dùng mạng Feistel 4 nhánh với các kiểu của nó biểu diễn ở hình 4.1 Khối plaintext được chia thành 4 thành phần X1, X2, X3, X4 Các phần dữ liệu đi qua
n vòng xử lý và sau đó kết hợp tạo ra khối ciphertext
Mỗi vòng i có đầu vào X1i-1, X2i-1, X3i-1, X4i-1xuất phát từ đầu ra của vòng trước và khóa Ki Với mỗi vòng khác nhau thì khóa các vùng cũng khác nhau