và biến đổi thông qua các hàm logic phức tạp, dựa trên khóa ban đầu và các phép hoán vị.· Lo ngại về độ dài khóa và tính an toàn Đến cuối những năm 1990, với sự phát triển của công nghệ
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN: MẠNG MÁY TÍNH VÀ CÔNG NGHỆ ĐA PHƯƠNG
TIỆN HỌC PHẦN: AN TOÀN VÀ AN NINH MẠNG
BÀI TẬP LỚN
Chủ đề Chuẩn mã hóa dữ liệu DES (Data Encryption Standard)
Sinh viên thực hiện: Nguyễn Thị Quỳnh Anh Lớp: DHMT16A2HN
Mã sinh viên: 22103200098
Giáo viên giảng dạy: Hoàng Đắc Thắng
Trang 21 Tiêu chuẩn mã hóa hiện đại DES
1.1 Lịch sử ra đời
DES (Data Encryption Standards) là mã khối sử dụng rộng rãi
nhất trên thế giới trong thời gian vừa qua Nó được đưa ra năm 1977 bởi NBS - văn phòng chuẩn Quốc gia Hoa kỳ (bây giờ là NIST - Viện chuẩn
và công nghệ Quốc gia) DES là mã khối với mỗi khối dữ liệu 64 bít và dùng khoá dài 56 bít Nó được sử dụng rộng rãi và đã được tranh luận kỹ
về mặt an toàn
· Bối cảnh ra đời và nhu cầu mã hóa
Trước khi có DES, nhu cầu bảo mật dữ liệu kỹ thuật số đã trở nên rõ ràng khi máy tính bắt đầu phổ biến trong lĩnh vực tài chính, quân sự và kinh doanh Chính phủ Mỹ, thông qua Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST - National Institute of Standards and
Technology), đã tìm kiếm một tiêu chuẩn mã hóa cho mục đích dân sự
và thương mại
· Phát triển DES bởi IBM
Vào đầu những năm 1970, IBM phát triển một hệ thống mã hóa khối (block cipher) có tên là Lucifer Với sự hợp tác của Cơ quan An ninh Quốc gia Mỹ (NSA), hệ thống này được chỉnh sửa và cải tiến để trở thành DES Năm 1973, sau khi NSA đề xuất một số thay đổi để tăng cường tính bảo mật và giảm độ dài khóa, một phiên bản mã hóa của Lucifer đã trở thành DES
· Tiêu chuẩn hóa DES (1977)
Năm 1977, DES chính thức được công nhận là tiêu chuẩn mã hóa dữ liệu đầu tiên của chính phủ Mỹ với tên gọi FIPS PUB 46 DES sử dụng thuật toán mã hóa khối với kích thước khối là 64 bit và độ dài khóa là 56bit Ban đầu, DES được cho phép sử dụng rộng rãi trong các ứng dụng tài chính, ngân hàng, và thương mại điện tử
· Các thuật toán và cấu trúc của DES
Trang 3và biến đổi thông qua các hàm logic phức tạp, dựa trên khóa ban đầu và các phép hoán vị.
· Lo ngại về độ dài khóa và tính an toàn
Đến cuối những năm 1990, với sự phát triển của công nghệ tính toán, các nhà nghiên cứu bắt đầu lo ngại về độ an toàn của DES, vì độ dài khóa 56 bit có thể bị phá vỡ bởi các cuộc tấn công brute-force Thật vậy,vào năm 1998, một máy tính được thiết kế để bẻ khóa DES đã thành công phá vỡ mã hóa trong vòng 56 giờ
· Xuất hiện của Triple DES (3DES)
Để tăng cường tính an toàn, một phiên bản cải tiến của DES gọi là TripleDES (3DES) ra đời Thay vì mã hóa dữ liệu một lần với khóa 56 bit, Triple DES sử dụng ba lần mã hóa với ba khóa khác nhau, giúp tăng độ bảo mật Mặc dù 3DES an toàn hơn, nhưng nó cũng khiến tốc độ mã hóachậm đi đáng kể
· Thay thế bằng AES (2001)
Nhận thấy những hạn chế của DES và 3DES, NIST tổ chức một cuộc thi
để tìm ra tiêu chuẩn mã hóa mới Kết quả là vào năm 2001, thuật toán AES (Advanced Encryption Standard) của các nhà nghiên cứu người Bỉ
đã được chọn làm tiêu chuẩn mã hóa mới, thay thế hoàn toàn DES và 3DES
Cuối những năm 1960, IBM phát triển mã Lucifer, được lãnh đạo bởi Fiestel Ban đầu Lucifer sử dụng khối dữ liệu 64 bít và khoá 128 bít Sau đó tiếp tục phát triển như mã thương mại Năm 1973 NBS yêu cầu
đề xuất chuẩn mã Quốc gia IBM đề nghị bản sửa đổi Lucifer, sau này gọi là DES Đã có các tranh luận về thiết kế của DES Vì chuẩn của DESđược công khai, mọi người đóng góp ý kiến về tốc độ, độ dài khoá và mức độ an toàn, khả năng thám mã Người ta đề xuất chọn khoá 56 bít thay vì 128 để tăng tốc độ xử lý và đưa ra các tiêu chuẩn thiết kế một chuẩn mã dữ liệu Các suy luận và phân tích chứng tỏ rằng thiết kế như vậy là phù hợp Do đó DES được sử dụng rộng rãi, đặc biệt trong lĩnh vực tài chính
Sơ đồ mã DES
Trang 4Hoán vị là thay đổi ví trí các bit trong một chuỗi giá trị nhưngkhông làm thay đổi giá trị của các bit này.
Hoán vị ban đầu IP: đây là bước đầu tiên của tính toán dữ liệu,hoán vị IP đảo thứ tự các bít đầu vào: các bít chẵn sàng nửa trái và cácbít lẻ sang nửa phải Hoán vị trên dễ dàng thực hiện trên phần cứng Mỗi số trong hệ 16 biểu diễn bởi 4 bit, 16 số được thể hiện bởi 64bit Mỗi bit có một vị trí xác định qua hoán vị ban đầu (xem bảng phụlục cuối tài liệu)
Sơ đồ hoán vị khởi tạo, ký hiệu IP
Ví dụ
IP(123456AB CDEF1234) = (F1571C49 7D9C4FB2)
Trang 5Chuỗi bit đầu vào được đánh số từ 1 đến 64 (tính từ trái qua phải).Sau đó, các bit này được thay đổi vị trí như sơ đồ IP, bit số 58 được đặtvào vị trí đầu tiên, bit số 50 được đặt vào vị trí thứ 2 Cứ như vậy, bit thứ
7 được đặt vào vị trí cuối cùng
Sau hoán vị, chuỗi bit mới được phân ra làm hai đoạn, mỗi đoạn 32bit để bắt đầu vào quy trình tính toán mã hóa với key Đoạn bên trái kýhiệu là L, đoạn bên phải ký hiệu là R Đoạn L gồm các bit từ bit số 1 đếnbit số 32, đoạn R gồm các bit từ bit số 33 đến bit số 64 Đoạn L của lầntính toán sau sẽ chính là đoạn R của lần tính toán trước Đoạn R của lầntính toán sau sẽ được tính từ đoạn R trước đó qua hàm mã hóa f(R, K)rồi XOR với đoạn L của lần tính trước đó
1.2 Nguyên lý hoạt động của mã DES
1 Chuẩn bị dữ liệu và khóa:
Dữ liệu đầu vào: DES xử lý dữ liệu trong các khối 64 bit Nếu dữ
liệu lớn hơn 64 bit, nó sẽ được chia thành nhiều khối 64 bit để mã hóa từng khối một
Khóa: Khóa chính dài 64 bit, nhưng chỉ có 56 bit được sử dụng để
mã hóa, 8 bit còn lại là bit chẵn lẻ
2 Hoán vị ban đầu (Initial Permutation - IP):
Khối dữ liệu 64 bit được đưa qua một hoán vị ban đầu (IP), hoán đổi vị trí của các bit để tạo ra khối dữ liệu mới 64 bit đã hoán vị Kết quả này được chia thành hai nửa: nửa trái (L0) và nửa phải (R0), mỗi nửa dài 32 bit
3 16 vòng mã hóa (16 Feistel Rounds):
DES thực hiện 16 vòng mã hóa, và ở mỗi vòng sẽ tạo ra một khóa con (subkey) 48 bit từ khóa chính 56 bit
Ở mỗi vòng, các bước sau được thực hiện:
Trang 6o Mở rộng nửa phải (Expansion): Nửa phải (R) 32 bit được
mở rộng thành 48 bit để có thể XOR với khóa con 48 bit
o XOR với khóa con: Kết quả mở rộng R được XOR với khóa
con 48 bit của vòng hiện tại
o Thay thế qua S-boxes: Kết quả 48 bit được chia thành 8
nhóm 6 bit, mỗi nhóm đi qua một S-box (hộp thay thế), mỗi S-box chuyển đổi 6 bit thành 4 bit, kết quả là 32 bit
o Hoán vị P: Kết quả 32 bit từ S-boxes được hoán vị lại bằng
bảng hoán vị P
o XOR với nửa trái: Kết quả từ hoán vị P được XOR với nửa
trái (L) của vòng hiện tại, tạo ra nửa phải mới cho vòng tiếp theo
Sau mỗi vòng, nửa trái và nửa phải được hoán đổi vị trí cho nhau Sau 16 vòng, kết quả cuối cùng là (L16, R16)
4 Hoán vị cuối (Final Permutation - IP-1):
Sau 16 vòng, nửa trái và phải được hợp lại thành khối 64 bit và đi qua một hoán vị cuối (IP-1) để tạo ra khối dữ liệu mã hóa cuối cùng
5 Giải mã:
Giải mã dữ liệu sử dụng cùng quy trình và khóa như khi mã hóa, nhưng khóa được áp dụng theo thứ tự ngược lại (bắt đầu từ khóa vòng 16 đến khóa vòng 1)
Cấu tạo một vòng của DES
Sử dụng hai nửa 32 bít trái và 32 bít phải Như đối với mọi mã
Fiestel, nửa phải của vòng trước được chuyển qua nửa trái của bước sau
và lấy đầu ra của hàm vòng trên nửa phải và khoá con cộng cơ số hai vớinửa trái Có thể biểu diễn bằng công thức như sau:
Li = Ri–1
Ri = Li–1 xor F(Ri–1, Ki )
Ở đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán vị
E, rồi cộng vào với khoá con 48 bít Sau đó chia thành tám cụm 6 bít vàcho qua 8 S-box để nhận được kết quả 32 bít Đảo lần cuối sử dụng hoán
vị 32 bít P nhận được 32 bít đầu ra, rồi cộng với nửa trái để chuyển
Trang 7Hình 2 5: Sơ đồ khởi tạo vòng của DES
Có tám hộp S khác nhau ánh xạ 6 bít vào 4 bít Các hộp S boxthực hiện các phép thế, chúng được cấu tạo không có qui luật và cố định.Mỗi S box là hộp 4 x 16 bít, mỗi hàng là một hoán vị của 16 phần tử.Giả sử ta có 6 bít đầu vào Ta lấy hai bít ngoài 1-6 ghép lại được số nhịphân xác định chọn hàng từ 0 đến 3 trong S box Bốn bít từ 2 đến 5 làmột số nhị phân xác định cột từ 0 đến 15 trong S box Lấy phần tử tươngứng trên hàng và cột mới được xác định, đây là một số từ 0 đến 15,chuyển sang số nhị phân ta được 4 bít đầu ra Như 36 vậy 48 bít chiathành có 8 cụm 6 bít, qua 8 S box được chuyển thành 8 cụm 4 bít, tổngcộng là 32 bít Việc chọn hàng trong các S box phụ thuộc cả dữ liệu vàkhoá - đặc trưng này được gọi là khoá tự xác định
Ví dụ:
S(18 09 12 3d 11 17 38 39) = 5fd25e03
Sinh khoá con của DES
Tạo 16 khoá con sử dụng cho 16 vòng của DES 56 bit khoá đầu vào được sử dụng như bảng 8 x 8, trong đó cột thứ 8 không sử dụng Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít o 16 giai đoạn bao gồm:
▪ Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tương ứng 1 và 2 bit Hai nửa này được dùng tiếp cho vòng sau
▪ Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa
24 bít gộp lại thành 48 bít để sinh khoá con
Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả
Trang 8Sơ đồ sinh khóa con của DES
Hoán vị khởi đầu IP: Hoán vị khởi đầu nhằm đổi chỗ khối dữ liệu vào, thay đổi vị trí của các bít trong khối dữ liệu vào Ví
dụ, hoán vị khởi đầu chuyển bít 1 thành bít 58, bít 2 thành bít 50, bít 3 thành bít 42,
Hoán vị khởi đầu IP-1
Trang 9Đây là bước cuối cùng để tạo ra giá trị mã hóa Giá trị của lần lặp mã hóa cuối cùng sẽ được hoán vị khởi tạo đảo IP-1 và tạo ra giá trị mã hóa plaintext.
Hộp S box:
Trang 11Việc chuyển đổi giá trị của các hàm S1, S2, , S8 được thực hiện bằng cách tách block 6 bit thành hai phần Phần thứ nhất là tổ hợp của bit đầu tiên và bit cuối cùng của block để tạo thành 2 bit chọn hàng của bảng S, bảng S có 4 hàng được đánh số từ 0 đến 3 theo thứ tự từ trên xuống Phần thứ 2 là 4 bit còn lại dùng để chọn cột của bảng S, bảng S có 16 cộtđược đánh số từ 0 đến 15 theo thứ tự từ trái qua phải Như vậy, với mỗi block 8 bit ta chọn được 1 giá trị trong bảng S Giá trị này nằm trong khoảng từ 0 đến 15 sẽ được quy đổi thành chuỗi nhị phân 4 bit tương ứng Các chuỗi nhị phân có được sau khi chuyển đổi từ S1 đến S8 sẽ được ghép lại theo thứ tự từ trái qua phải để tạo thành một giá trị 32 bit.
Ví dụ về việc thực hiện chuyển đổi hàm S, giả sử, giá trị block 6 bit đầu tiên là 011011 Ta tách chuỗi này ra làm hai tổ hợp giá trị là 01 (bit đầu tiên và bit cuối cùng) và 1101 (4 bit ở giữa) Hai tổ hợp này được dùng
để chọn hàng và cột tương ứng như hình minh họa sau:
Minh họa sử dụng hàm S1
Trang 12Tổ hợp 01 sẽ chọn hàng 1, tổ hợp 1101 sẽ chọn cột 13 và kết quả trả về
là 5 có giá trị nhị phân 4 bit là 0101.Qua bước chuyển đổi với các hàmlựa chọn S, kết quả thu được là một giá trị 32 bit Giá trị này được đưaqua một hàm hoán vị P để tạo ra giá trị hàm f
Giá trị 32 bit thu được từ các chuyển đổi với hàm lựa chọn S sẽ đượcđánh số từ 1 đến 32 theo thứ tự từ trái qua phải
Theo bảng hoán vị P, bit đầu tiên sau hoán vị sẽ là bit số 16, bit thứ 2 sẽ
là bit số 7 và bit cuối cùng sẽ là bit số 25 Hàm tính toán mã hóa f(R, K)được định nghĩa như sau:
Trong đó:
P(): là phép hoán vị P
Sn: là phép chuyển đổi block n (n chạy từ 1 đến 8) với hàm lựa chọn S
Bn: là block 6 bit thứ n (n chạy từ 1 đến 8) Block này lấy từ phép toánXOR giữa khóa vòng K và giá trị hàm E(R)
E(R): là hàm chuyển đổi giá trị R 32 bit thành giá trị 48 bit
Giải mã DES
Giải mã DES (Data Encryption Standard) thực chất là quá trình ngược lạivới mã hóa DES Mã hóa DES được thực hiện qua 16 vòng với các bướcnhư hoán vị, thay thế, XOR và dịch bit Khi giải mã, quá trình ngược lạiđược thực hiện, nhưng với thứ tự các khóa con được sử dụng theo cáchngược lại, tức là từ khóa con ở vòng cuối cùng (K16) đến vòng đầu tiên(K1)
Trang 131 Hoán vị ban đầu (Initial Permutation - IP)
Giống như mã hóa, giải mã bắt đầu bằng việc thực hiện hoán vị ban đầu (IP) đối với dữ liệu đầu vào 64 bit.
Khối dữ liệu 64 bit sau khi hoán vị ban đầu sẽ được chia thành hai phần: nửa trái (L0) và nửa phải (R0)
2 Sử dụng khóa con ngược (K16 đến K1):
Trong quá trình mã hóa DES, các khóa con (K1 đến K16) được sử dụng từ vòng 1 đến vòng 16 Tuy nhiên, trong quá trình giải mã, các khóa con này sẽ được sử dụng theo thứ tự ngược lại: từ K16 cho vòng 1 đến K1 cho vòng 16
3 16 vòng giải mã: Mỗi vòng giải mã bao gồm các bước sau:
Mở rộng nửa phải: Giống như trong mã hóa, nửa phải (R) của khối
dữ liệu (32 bit) được mở rộng thành 48 bit
XOR với khóa con: Kết quả mở rộng của R được XOR với khóa con hiện tại (K16 đến K1)
S-box: Kết quả XOR được chia thành 8 nhóm 6 bit, mỗi nhóm đi qua một S-box và trả về 4 bit từ mỗi S-box, tạo ra kết quả 32 bit
Hoán vị P: Kết quả từ các S-boxes được hoán vị theo bảng P để làm cho dữ liệu khó bị dự đoán
XOR với nửa trái: Kết quả từ hoán vị P sẽ được XOR với nửa trái (L) của khối dữ liệu, tạo thành nửa phải mới cho vòng giải mã tiếp theo
Sau mỗi vòng, nửa trái và nửa phải sẽ được hoán đổi cho nhau,
nhưng trong giải mã, nửa trái và phải không bị hoán đổi ở vòng cuối như trong mã hóa.
4 Kết thúc vòng giải mã:
Sau khi hoàn tất 16 vòng giải mã, khối dữ liệu cuối cùng sẽ có nửa trái và nửa phải (L16, R16)
Cuối cùng, nửa trái và nửa phải sẽ được kết hợp lại và thực hiện
hoán vị cuối (Inverse Initial Permutation - IP-1) để thu được dữ
liệu giải mã cuối cùng
Lưu ý:
Trang 14· Khóa con trong giải mã: Khác với mã hóa, khóa con được sử dụng theo thứ tự ngược lại trong quá trình giải mã (từ K16 đến K1).
· Hoán vị cuối: Sau 16 vòng, kết quả được hoán vị cuối (IP-1) để hoàntất quá trình giải mã
Tính chất của DES
Tác dụng đồng loạt Khi ta thay đổi 1 bit trong khoá sẽ gây ra tácđộng đồng loạt làm thay đổi nhiều bit trên bản mã Đây là tính chấtmong muốn của khoá trong thuật toán mã hoá Nếu thay đổi 1 bít đầuvào hoặc khoá sẽ kéo theo thay đổi một nửa số bít đầu ra Do đókhông thể đoán khoá được Có thể nói rằng DES thể hiện tác độngđồng loạt mạnh
Đối xứng: Cùng một khóa dùng cho mã hóa và giải mã
Cấu trúc Feistel: Chia khối dữ liệu thành hai phần và sử dụng các
phép toán thay thế, hoán vị và XOR qua nhiều vòng
Khóa con 48 bit: Sinh ra từ khóa chính 56 bit.
Tính bảo mật: DES không còn an toàn do khóa 56 bit quá ngắn,
dễ bị tấn công vét cạn
Hiệu suất: Hiệu quả khi xử lý khối 64 bit nhưng chậm dần khi sovới các thuật toán hiện đại
Được thay thế bởi AES: DES đã được thay thế bởi các thuật toán
mã hóa mới, như AES, để đáp ứng các yêu cầu bảo mật cao hơn
1.3 Độ an toàn của DES
1 Kích thước khóa và khả năng tấn công vét cạn force)
(brute-Khóa 56 bit: Một trong những yếu tố quyết định độ an toàn của DES
là kích thước khóa DES sử dụng khóa 56 bit, có nghĩa là có 2562^{56}256 (khoảng 72 triệu triệu triệu) khả năng khóa khác nhau Với sự tiến bộ của phần cứng và các công cụ tính toán mạnh
mẽ hiện nay, việc thử tất cả các khóa trong một thời gian ngắn là hoàn toàn khả thi
Tấn công vét cạn: DES đã bị suy yếu trước tấn công vét cạn Điều
này có nghĩa là kẻ tấn công chỉ cần thử tất cả các khóa có thể cho đếnkhi tìm ra khóa đúng Vào năm 1998, một nhóm nghiên cứu có tên
Trang 15chi phí thấp (250.000 USD) Các công cụ tính toán hiện đại, bao gồmcác dịch vụ tính toán đám mây, có thể làm việc nhanh hơn rất nhiều.
Khả năng phá mã nhanh chóng: Vào năm 2006, DES Cracker, một dự án phần mềm miễn phí, có thể giải mã DES trong một khoảngthời gian ngắn Vì vậy, việc bảo vệ dữ liệu bằng DES hiện nay đã không còn là một lựa chọn an toàn
2 Tấn công vi phân và tuyến tính
Tấn công vi phân (Differential Cryptanalysis): DES ban đầu được
thiết kế để chống lại tấn công vi phân Tuy nhiên, vào những năm
1990, các nhà nghiên cứu đã phát hiện ra rằng DES không hoàn toàn miễn nhiễm với phương pháp tấn công này Tấn công vi phân sử dụng các cặp dữ liệu đầu vào có sự khác biệt cố định để tìm ra mối liên hệ giữa các bit đầu vào và đầu ra
Tấn công tuyến tính (Linear Cryptanalysis): Đây là một phương
pháp phân tích mối quan hệ tuyến tính giữa các bit đầu vào và đầu ra.DES cũng có thể bị tấn công bằng phương pháp tuyến tính, mặc dù mức độ hiệu quả của phương pháp này phụ thuộc vào số lượng dữ liệu có sẵn cho phân tích
3 Khả năng tấn công bằng phần cứng
Phát triển phần cứng mạnh mẽ: Sự phát triển mạnh mẽ của công
nghệ phần cứng như FPGA (Field Programmable Gate Array) và
ASIC (Application-Specific Integrated Circuit) đã làm giảm thời
gian tấn công bằng cách thực hiện hàng triệu phép tính song song Các hệ thống phần cứng này có thể thực hiện tấn công vét cạn nhanh hơn rất nhiều so với các máy tính thông thường
Máy tính đám mây: Các công ty cung cấp dịch vụ tính toán đám
mây hiện nay có thể sử dụng hàng ngàn máy tính song song để thử các khóa trong khoảng thời gian cực ngắn Điều này làm cho việc bảo vệ dữ liệu bằng DES trở nên không thực tế trong các môi trường
có yêu cầu bảo mật cao
4 Khả năng tấn công lượng tử
Máy tính lượng tử: Dự đoán rằng trong tương lai, khi các máy tính
lượng tử trở nên phổ biến, chúng có thể sử dụng các thuật toán như
Grover's algorithm để giảm độ phức tạp của tấn công vét cạn Theo