Đề tài : ỨNG DỤNG CHUẨN MÃ HÓA NÂNG CAO (AES) TRONG GIAO THỨC ĐÓNG GÓI BẢO MẬT DỮ LIỆU (ESP) Ngoài phần mở đầu, kết luận và mục tài liệu tham khảo luận văn gồm 3 chương: Chương 1: Tổng quan về chuẩn mã hóa nâng cao (AES) Chương 2: Giao thức đóng gói bảo mật dữ liệu (ESP) Chương 3: Ứng dụng của chuẩn mã hóa nâng cao trong giao thức đóng gói bảo mật dữ liệu
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
ĐẶNG VĂN TUẤN
ỨNG DỤNG CHUẨN MÃ HÓA NÂNG CAO (AES) TRONG GIAO
THỨC ĐÓNG GÓI BẢO MẬT DỮ LIỆU (ESP)
CHUYÊN NGÀNH : KỸ THUẬT VIỄN THÔNG
MÃ SỐ: 60.52.02.08
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI – NĂM 2014
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Phản biện 2: PGS.TS Trương Vũ Bằng Giang
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: 8 giờ 30 ngày 15 tháng 02 năm 2014
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3MỞ ĐẦU
Với sự phát triển nhanh chóng của khoa hoc và công nghệ, tốc độ xử
lý của các bộ vi xử lý ngày càng cao, phương pháp mã hóa tiêu chuẩn (DES - Data Encryption Standard) đã trở nên không an toàn trong bảo mật thông tin do độ dài khóa mã ngắn (56 bits) Thuật toán Rijndael của hai tác giả Vincent Rijmen và Joan Daeman đã được Viện tiêu chuẩn và công nghệ Hoa kỳ (NIST - National Institute Standards of Technology) chính thức chọn trở thành chuẩn mã hóa nâng cao (AES - Advanced Encryption Standard) từ ngày 02 tháng 10 năm 2000 nhằm phục vụ nhu cầu bảo mật thông tin liên lạc của Chính phủ Hoa Kỳ cũng như trong các ứng dụng dân
Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Vì thế việc nghiên cứu về chuẩn mật mã nâng cao và ứng dụng
nó trong các trường bảo mật thông tin là rất cần thiết
Ngoài phần mở đầu, kết luận và mục tài liệu tham khảo luận văn gồm 3 chương:
Chương 1: Tổng quan về chuẩn mã hóa nâng cao (AES)
Chương 2: Giao thức đóng gói bảo mật dữ liệu (ESP)
Chương 3: Ứng dụng của chuẩn mã hóa nâng cao trong giao thức
đóng gói bảo mật dữ liệu
Trang 4CHƯƠNG 1: TỔNG QUAN VỀ CHUẨN MÃ HÓA NÂNG CAO
(AES) 1.1 Đặt vấn đề
Với tốc độ và khả năng xử lý của các bộ vi xử lý ngày càng được nâng cao, phương pháp mã hóa chuẩn DES, Tri DES đã trở nên không an toàn trong bảo mật thông tin Vì thế cần nghiên cứu chuẩn mật mã đáp ứng được nhu cầu bảo mật thông tin, và chuẩn mã hóa nâng cao AES ra đời
Có năm thuật toán được vào vòng chung kết, gồm có: Mars, RC6, Serpent, Twofish và Rijndael Các thuật toán này đều đạt các yêu cầu của AES nên được gọi chung là các thuật toán ứng viên AES Các thuật toán ứng viên AES có độ an toàn cao, chi phí thực hiện thấp Tuy nhiên với thiết kế đẹp và đơn giản thuật toán Rijndael do hai nhà mật mã học người
Bỉ là Joan Deamen và Vincent Rijmen thiết kế đã được chọn là thuật toán của AES
1.2 Thuật toán AES
Cơ sở toán học của AES
Trong AES các phép toán cộng và nhân được thực hiện trên các byte trong trường hữu hạn Galois GF( ) Các phần tử của trường GF( ) được xem như là các đa thức [1]
Phép cộng:
Phép cộng giữa hai phần tử (các byte) trong trường hữu hạn được thực hiện bằng cách cộng theo modulo 2 các bít tương ứng trong biểu diễn của các byte này Phép cộng các byte A và B với:
trong đó Ci ai b mod 2i với i 1,8
Các phần tử của trường hữu hạn còn có thể được biểu diễn dưới dạng
đa thức Ví dụ tổng của A 73H và B 4E H (viết dưới dạng cơ số 16 - hexa) là:
73 4E 3D
Trang 5Viết dưới dạng nhị phân:
1.3 Mô tả AES theo Rijndael
1.3.1 Đầu vào và đầu ra của phép mã và giải mã
AES mã hóa một khối bản rõ M 128 bít thành một khối bản mã C
128 bít bằng cách dùng một khóa mã K có độ dài 128 bít (hoặc 192 hoặc
256 bít) tương ứng với AES-128 (hoặc AES-192 hoặc AES-256) Thuật toán thực hiện trên các byte và kích thước khối đối với đầu vào đầu ra và khóa được biểu thị bằng các từ 32 bít (4 byte) Đối với phép mã hóa, đầu vào là khối rõ và khóa, đầu ra là bản mã Đối với phép giải mã, đầu vào là khối mã và khóa, đầu ra là khối rõ Biến đổi vòng của Rijndael và các bước của nó, thao tác trên một kết quả trung gian, được gọi là trạng thái Trạng thái có thể được vẽ như là một mảng chữ nhật các byte với 4 dòng
Số các cột trong trạng thái được ký hiệu bởi Nb và bằng độ dài khối chia cho 32 (đối với AES thì Nb bằng 4) Độ dài khóa thì được ký hiệu bởi Nk
=4, 6, hoặc 8 (bằng độ dài khóa chia cho 32 bit word) Số các vòng được
Trang 6ký hiệu bởi Nr và phụ thuộc vào độ dài khối và độ dài khóa, với Nr = 10 khi Nk = 4, Nr = 12 khi Nk = 6, Nr = 14 khi Nk = 8
Bảng 1.1: Bảng kết hợp độ dài khóa- kích thước khối- số vòng
Rijndael là một mã khối khóa - lặp: nó bao gồm việc áp dụng lặp một ánh xạ vòng trên trạng thái Hình vẽ 1.1 sau minh họa cấu trúc cơ sở của thuật toán AES
Hình 1.1: Cấu trúc cơ sở của thuật toán AES
Tầng phi tuyến: Áp dụng song song của các S - box mà có các tính
chất phi tuyến trong trường hợp tối ưu nhất
Tầng trộn tuyến tính: Đảm bảo khuếch tán cao qua nhiều vòng
Tầng cộng khóa: Là phép XOR từng bit của Round key và trạng thái
trung gian
Trong thực tế, tầng trộn tuyến tính của Rijndael lại bao gồm hai tầng con, đó là ShiftRows và MixColumns
Quy trình mã hóa và giải mã AES sử dụng một hàm lặp là kết hợp
Trang 7của bốn hàm biến đổi sau (đơn vị xử lý là byte):
+ Mỗi byte trong trạng thái sẽ được thay thế bằng một byte khác sử dụng theo bảng thế (S-box)
+ Dịch chuyển, các hàng trong trạng thái được dịch vòng theo số bước khác nhau
+ Quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính
+ Cộng một khóa RoundKey vào trạng thái
Giải mã AES bằng cách biến đổi ngược của các biến đổi ở phép mã hóa AES hoặc bằng cách biến đổi tương đương Các biến đổi này được minh họa qua hình 1.2 dưới đây (với độ dài khóa 128bits, Nr =10) [1]:
Hình 1.2: Quy trình mã hóa và giải mã AES
Trang 8(4) C = AddRoundKey (S, WNr)
1.3.3.2 Quy trình giải mã
Giải mã Rijndael có 2 cách giải mã đó là: giải mã trực tiếp và giải mã bằng thuật toán giải mã tương đương
Giải mã trực tiếp: Mọi biến đổi được dùng trong các phép tính mã
hóa là khả nghịch Cài đặt phép tính giải mã là giữ nguyên các thứ tự các
biến đổi đã dùng trong phép mã hóa, chỉ thay các phép biến đổi bằng các biến đổi ngược của chúng
Giải mã tương đương: được thực hiện bằng cách đảo ngược thứ tự
của hàm SubByte-1() và ShiftRows-1(), thay đổi thứ tự của AddRoundKey(), MixColumns-1 () trong các lần lặp sau khi thay đổi khóa cho giá trị Round = 1 → Nr-1 bằng cách sử dụng biến đổi MixColumns() Các từ đầu tiên và cuối cùng của danh sách khóa không bị thay đổi khi ta
áp dụng phương pháp này
1.3.4.1 Biến đổi SubBytes()
Biến đổi SubBytes() thay thế mỗi byte riêng rẽ của state s r,c bằng một giá trị mới s’r,c sử dụng bảng thay thế (S - box), nó là bảng có ngược Hình
1.3 chỉ ra ảnh hưởng của biến đổi SubBytes() trên state [1]
Hình 1.3: SubBytes() áp dụng S - box cho mỗi byte của state
1.3.4.2 Biến đổi ShiftRows()
Hình 1.4 chỉ ra biến đổi ShiftRows()
Trang 9Hình 1.4: Dịch vòng ShiftRows() ba hàng cuối cùng trong state
Trong biến đổi ShiftRows(), các byte trong ba hàng cuối cùng của
trạng thái được dịch vòng đi các số byte khác nhau (độ lệch) Cụ thể, biến
đổi ShiftRows(), xử lý như sau:
s’rc = sr(c+r) mod 4, với 0 < r < 4 và 0 c <4 (trong đó r là số hàng)
1.3.4.3 Biến đổi MixColumns()
Biến đổi MixColumns() tính toán trên từng cột của state Các cột
được coi như là đa thức trong trường GF(28) và nhân với một đa thức a(x) theo modulo (x4+1), với [1]
a(x) = (03)x3 +(01)x2 +(01)x + (02) Biến đổi này có thể được trình bày như phép nhân một ma trận, mà mỗi byte được hiểu như là một phần tử trong trường GF(28
tương ứng với phép XOR từng bit Hình 1.5 chỉ ra biến đổi MixColumns ()
Trang 10Hình 1.5: MixColumns() tính toán trên từng cột của state
1.3.4.4 Biến đổi Addroundkey()
Trong biến đổi Addroundkey(), một khóa vòng được cộng với state
bằng một phép XOR theo từng bit đơn giản Mỗi khóa vòng gồm có 4 từ (128 bit) được lấy từ lịch trình khóa 4 từ đó được cộng vào mỗi cột của
state, sao cho:
[s’0,c, s’1,c, s’2,c, s’3,c ] = [s0,c, s1,c, s2,c, s3,c ] [w(4*i + c)] với 0 c < 4 Trong đó w(4*i + c) là các từ thứ c của khóa vòng thứ i
wi = [w(4*i), w(4*i + 1), w(4*i + 2), w(4*i + 3) ]
của lịch trình khóa và i là một giá trị nằm trong khoảng 0 i N r Trong
phép mã hóa, phép cộng khóa vòng khởi đầu thực hiện với i = 0, trước khi
áp dụng đầu tiên của hàm vòng Việc áp dụng biến đổi Addroundkey() vào
N r vòng của phép mã hóa xày ra khi 1 i N r
Biến đổi vòng của Rijndael và các bước của nó, thao tác trên một kết quả trung gian, được gọi là byte với 4 dòng Số các cột trong trạng thái ký hiệu bởi Nb và bằng độ dài khối chia cho 32 (đối với AES thì Nb bằng 4)
Số vòng biến đổi, ký hiệu là Nr theo công thức: Nr = max {Nb, Nk} +
Trang 11nhận Việc áp dụng phép thế SRD phi tuyến đảm bảo tính phi tuyến của lược đồ, không cần phải thêm nhiều các yêu cầu lưu trữ tạm thời trên bộ
xử lý 8 bit
Trong khi kéo dài khóa, khóa mã được kéo dài thành mảng khóa kéo dài, bao gồm 4 dòng và Nb(Nr + 1) cột Mảng này được ký hiệu bởi W[4][Nb (Nr +1)] Hàm kéo dài khóa phụ thuộc vào giá trị của Nk: Có một phiên bản cho Nk 6, và một phiên bản cho Nk > 6
1.4 Phạm vi, ý nghĩa và ứng dụng của AES
Phạm vi chính thức của một chuẩn FIPS là tương đối hạn chế: FIPS chỉ áp dụng cho hành chính liên bang Hơn thế nữa, AES mới chỉ được sử dụng cho các tài liệu chứa thông tin nhạy cảm nhưng không mật AES từ khi được chấp nhận đã được sử dụng như một chuẩn mật mã ngầm định trên toàn thế giới Việc chấp nhận Rijndael như một chuẩn chính phủ đã đem đến cho nó một số sự chứng thực về chất lượng
Các nhân tố chính làm cho sự chấp nhận nhanh chóng đối với Rijndael là việc nó không có bản quyền, có thể cài đặt dễ dàng
1.4.2 Ưu, nhược điểm của AES
1.4.2.1 Ưu điểm
+) AES đã được chính phủ Hoa kỳ tuyến bố là có độ an toàn cao, và
đã được sử dụng thông tin mật;
+) AES có mô tả toán học đơn giản;
+) Cấu trúc rõ ràng đơn giản
Trang 121.4.3 Ứng dụng của AES
+) Hiện nay, AES được sử dụng phổ biến trên toàn thế giới để bảo vệ
dữ liệu ở các tổ chức ngân hàng, tài chính, chính phủ, thương mại điện tử, chữ ký điện tử;…
+) Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, và chỉ yêu cầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã hóa những thiết bị cầm tay nhỏ như ổ USB flash, ổ đĩa CD;…
+) Sử dụng trong đóng gói bảo mật dữ liệu;
+) Sử dụng trong các giao thức mạng như VPN-IPsec, wifi
Kết luận chương I
Chương I đã đưa ra được cấu trúc của AES, các bước mã hóa và giải
mã của thuật toán AES Ngoài ra, tất cả các bước của việc mã hóa và giải
mã đều được thiết kế thích hợp với cơ chế xử lý song song nên AES càng chứng tỏ thế mạnh của mình trên các hệ thống thiết bị mới Tuy nhiên, vẫn tồn tại một số hạn chế mà hầu hết liên quan đến quá trình giải mã
Trang 13CHƯƠNG II: GIAO THỨC ĐÓNG GÓI BẢO MẬT DỮ LIỆU (ESP) 2.1 Giới thiệu về giao thức ESP
Tiêu đề ESP được thiết kế để cung cấp một kết hợp các dịch vụ bảo mật trong IPv4 và IPv6 ESP có thể được áp dụng một mình, hoặc kết hợp với AH, hoặc trong dạng kết hợp cả ESP và AH Dịch vụ bảo mật có thể được cung cấp giữa một cặp giao tiếp máy chủ, giữa một cặp giao tiếp cổng an ninh, hoặc giữa một cổng an ninh và một máy chủ Tiêu đề ESP được chèn vào sau tiêu đề IP và trước tiêu đề giao thức lớp kế tiếp (chế độ vận chuyển) hoặc trước một tiêu đề IP đóng gói (chế độ đường hầm) [10]
Mặc dù bảo mật và toàn vẹn có thể được cung cấp một cách độc lập, ESP thường sẽ sử dụng cả hai dịch vụ, tức là, các gói dữ liệu sẽ được bảo
vệ liên quan đến bảo mật và tính toàn vẹn Do đó, có ba kết hợp dịch vụ bảo mật ESP có thể liên quan đến các dịch vụ:
- Chỉ có bảo mật (có thể được hỗ trợ)
- Chỉ có tính toàn vẹn (phải được hỗ trợ)
- Kết hợp cả bảo mật và tính toàn vẹn (phải được hỗ trợ)
2.2 Định dạng gói tin của ESP
Hình 2.1: Định dạng Top-Level của một gói ESP
Hình 2.1 minh họa định dạng Top-Level của một gói ESP [10]
Gói tin bắt đầu với hai trường 4-byte (Security parameters index (SPI) và Sequence Number) Sau các trường này là Payload Data, mà cấu trúc của
nó phụ thuộc vào sự lựa chọn chế độ và thuật toán mã hóa, và việc sử dụng TFC (Traffic Flow Confidentiality) đệm Sau trường Payload Data là
Trang 14các trường Padding và Pad Length, và trường Next Header Trường Integrity Check Value (ICV) là cuối cùng của gói
Payload Data có thể có cấu trúc con Một thuật toán mã hóa đòi hỏi một Vector khởi tạo rõ ràng (IV), ví dụ như, chế độ chuỗi khối mã (CBC), thường thì tiền tố Payload Data được bảo vệ với giá trị đó Một số thuật toán kết hợp chế độ bảo mật và toàn vẹn vào một hoạt động đơn lẻ, chế độ thuật toán như vậy là "thuật toán chế độ kết hợp" Sự thuận tiện của thuật toán chế độ kết hợp đòi hỏi rằng thuật toán mô tả một cách rõ ràng cấu trúc con của tải trọng được sử dụng để truyền tải toàn vẹn dữ liệu
Hình 2.2: Cấu trúc con của Payload Data
2.2.1 Chỉ số các tham số bảo mật ( SPI )
SPI là một giá trị 32-bit tùy ý được sử dụng bởi phía thu để xác định
SA mà một gói tin đến được ràng buộc Trường SPI là bắt buộc
2.2.2 Chuỗi số
Trường 32- bit này chứa một giá trị đếm mà sẽ tăng một cho mỗi gói tin gửi đi, tức là, một số thứ tự trên mỗi gói SA Đối với một SA unicast hoặc một người gửi đơn lẻ SA multicast, người gửi phải tăng trường này cho mỗi gói tin truyền đi
Chuỗi số mở rộng ( 64-bit)
Cơ sở ESN cho phép sử dụng một chuỗi số 64-bit cho một SA Chỉ
có 32 bits bậc thấp của chuỗi số được truyền đi trong bản rõ ESP header của mỗi gói tin, do đó giảm thiểu chi phí gói Các 32 bits bậc cao được duy trì như một phần của bộ đếm chuỗi số bởi cả hai bộ truyền và nhận và
Trang 15được bao gồm trong các tính toán của ICV (nếu dịch vụ toàn vẹn được chọn) Nếu một thuật toán toàn vẹn riêng biệt được sử dụng, các bits bậc cao có trong ESP trailer ngầm định, nhưng không truyền đi, tương tự như thuật toán toàn vẹn bits đệm Nếu một thuật toán chế độ kết hợp được sử dụng, sự lựa chọn thuật toán xác định xem ESN bits bậc cao được truyền hoặc được bao gồm ngầm định trong tính toán
2.2.3 Tải trọng dữ liệu
Tải trọng dữ liệu là một trường có chiều dài thay đổi chứa dữ liệu (
từ các gói tin IP ban đầu ) được mô tả bởi trường Next Header Trường Payload Data là bắt buộc và có chiều dài là một số nguyên byte Nếu thuật toán được sử dụng để mã hóa tải trọng yêu cầu đồng bộ hóa dữ liệu mã hóa, ví dụ như, một vector khởi tạo (IV), sau đó dữ liệu này được thực hiện một cách rõ ràng trong trường Payload, nhưng nó không được gọi ra như là một trường riêng biệt trong ESP, tức là, việc truyền tải của một IV
rõ ràng là vô hình đối với ESP
2.2.4 Đệm ( cho mã hóa )
Hai yếu tố chính yêu cầu hoặc khuyến khích sử dụng trường đệm
- Nếu một thuật toán mã hóa được sử dụng yêu cầu phải có bản rõ là một bội số của một số của byte, ví dụ, kích thước khối của một khối mã, trường đệm được sử dụng để điền vào bản rõ (bao gồm các trường Payload Data, Padding, Pad Length, và Next Header) với kích thước theo yêu cầu của thuật toán
- Đệm cũng có thể được yêu cầu, không phân biệt các yêu cầu về thuật toán mã hóa, để đảm bảo rằng kết quả bản mã kết thúc trong một giới hạn 4 bytes Cụ thể, các trường Pad Length và Next Header phải được phải liên kết trong một từ 4 bytes, như minh họa trong định dạng gói tin ESP phía trên, để đảm bảo rằng trường ICV (nếu có) được xếp trên một giới hạn 4 bytes