NGHIÊN CỨU VỀ ỨNG DỤNG CHUẨN MẬT MÃ NÂNG CAO (AES) TRONG XÂY DỰNG HÀM BĂM. Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiện nay, phương pháp mã...
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
Trần Thị Kim Thùy
NGHIÊN CỨU VỀ ỨNG DỤNG CHUẨN MẬT MÃ NÂNG CAO
(AES) TRONG XÂY DỰNG HÀM BĂM
Chuyên ngành: Kỹ thuật điện tử
Mã số: 60.52.70
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI - 2012
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
Người hướng dẫn khoa học: GS.TS.NGUYỄN BÌNH
Phản biện 1: ………
Phản biện 2: ……… ………
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: giờ ngày tháng năm
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 tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiện nay, phương pháp mã hóa chuẩn (DES - Data Encryption Standard) đã trở nên không
an toàn trong bảo mật thông tin Do đó, Viện tiêu chuẩn và công nghệ Hoa kỳ (NIST
- National Institute Standards of Technology) đã quyết định chọn một chuẩn mã hóa mới với độ an toàn cao 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 sự Thuật toán Rijndael do Vincent Rijmen và Joan Daeman đã được 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
Ngày nay, ứng dụng của chuẩn mật mã nâng cao đang được sử dụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết như ứng dụng xây dựng các hàm băm phục
vụ việc chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), xác thực tính nguyên vẹn dữ liệu
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 lĩnh vực 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à danh mục tài liệu tham khảo luận văn được kết cấu thành 3 chương:
Chương 1: Sơ lược về chuẩn mật mã nâng cao (AES)
Chương 2: Hàm băm mật mã
Chương 3: Ứng dụng chuẩn mật mã nâng cao để xây dựng một vài hàm băm cụ thể
Trong quá trình thực hiện Luận văn, do thời gian cũng như trình độ của tác giả
có những hạn chế nhất định nên không thể tránh khỏi những sai sót Rất mong nhận được sự góp ý của các thầy, cô giáo và các bạn để Luận văn hoàn thiện hơn Tôi xin
chân thành cám ơn sự hướng dẫn, và giúp đỡ tận tình của GS.TS Nguyễn Bình, các
thầy trong khoa Quốc tế và Đào tạo sau đại học – Học viện Công nghệ Bưu chính Viễn thông đã giúp đỡ tôi trong quá trình học tập cũng như trong quá trình làm Luận
văn
Trang 4CHƯƠNG 1: SƠ LƯỢC VỀ CHUẨN MẬT MÃ NÂNG CAO
1.1 Đặt vấn đề
Hiện nay 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, chuẩn mật mã nâng cao AES ra đời
Sau khi thực hiện hai lần tuyển chọn công khai, 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ỉ thiết kế
đã được chọn là thuật toán của AES
1.2 Cơ sở toán học của AES
AES sử dụng trường hữu hạn Galois (GF(28) để thực hiện các phép toán: phép cộng, phép trừ, phép nhân, và phép chia Các phần tử của trường GF(28) được xem như là các đa thức
1.3 Các thuật toán ứng viên AES
1.3.1 Thuật toán Marc
1.3.2 Thuật toán RC6
1.3.3 Thuật toán Rijndael
1.3.4 Thuật toán Serpent
1.3.5 Thuật toán TwoFish
1.3.6 Nhận xét các thuật toán ứng viên AES
Quy trình mã hóa gồm: khởi tạo, phân bố khóa và mã hóa
Quy trình giải mã gồm: khởi tạo, phân bố khóa và giải mã
Phân bố khóa được thực hiện dựa trên khóa người sử dụng cung cấp để phát sinh
bộ subkey phục vụ cho việc mã hóa và giải mã
Dữ liệu vào và ra trong quy trình mã hóa, giải mã là khối dữ liệu 128 bit
1.4 Mô tả AES theo Rijndael
1.4.1 Đầu vào và đầu ra của phép mã và giải mã
AES là một trường hợp riêng của Rijndael AES có độ dài khối bằng 128 bit và
hỗ trợ các độ dài khóa bằng 128, 192, hay 256 bit Đầu vào và đầu ra của Rijndael được xem như là mảng một chiều của các byte 8bit Đối với phép mã, đầ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
Trang 5ra 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)
1.4.2 Cấu trúc AES
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 Số các vòng được ký hiệu bởi Nr và phụ thuộc vào độ dài khối
và độ dài khóa Hình vẽ 1.8 trên minh họa cấu trúc cơ sở của thuật toán AES
Hình 1.8: 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 nhất tối ưu
Tầng trộn tuyến tính: Đảm bảo khuyế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
1.4.3 Quy trình mã hóa và giải mã
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 của bốn hàm biến đổi (đơn vị xử lý là byte) sau: 1) biến đổi thay thế byte sử dụng một bảng thế (S-box), 2) dịch các hàng của mảng trạng thái với số lần dịch của mỗi hàng là khác nhau, 3) kết hợp dữ liệu của mỗi cột trong mảng trạng thái và 4) cộng một khóa RoundKey vào trạng thái Giải mã AES bằng cách thực hiện biến đổi ngược của các biến đổi ở
Trang 6phé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 bằng hình vẽ 1.10 dưới đây:
Hình 1.10 Quy trình mã hóa và giải mã AES
Trang 7Giả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 to Nr-1 bằng cách sử dụng biến đổi MixColumns() Các word đầ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.4.3.2.Các phép biến đổi trong mã hóa và giải mã AES
a) 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.13 chỉ ra ảnh
hưởng của biến đổi SubBytes() trên state
Hình 1 13 SubBytes() áp dụng S - box cho mỗi byte của state
S - box dùng trong biến đổi SubBytes() được trình bày ở dạng cơ số 16 như
Trang 8Trong 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à 0c<4 (trong đó r là số hàng)
Biến đổi này có tác dụng dịch chuyển các byte sang bên trái, trong khi đó các
byte bên trái nhất được chuyển vòng về các vị trí bên phải nhất của hàng
Bảng 1.1 S - box được dùng trong biến đổi SubBytes ()
c Biến đổi MixColumns()
Biến đổi MixColumns() tính toán trên từng cột của state 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
c s c s c
s c s
x s x
a
x
s
,3
,2
,1
,0
02010103
03020101
01030201
01010302
,3',2',1'0':)()
Trang 9,2,
1),0}
),2}02({
,1,
),1}02({
2)
,1}03({
),0}
s c
s c s c
s c
s c
s c
s
c
s c s c
s c
s
c
s
c s c
s c
s c
s c
chỉ ra biến đổi MixColumns ()
Hình 1.16 MixColumns() tính toán trên từng cột của state
d 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ược đồ khóa 4 từ đó được cộng vào mỗi cột của state, sao cho:
của lịch trình khóa và i là một giá trị nằm trong khoảng 0iN 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 1iN r.
Các phép biến đổi SubBytes -1 (), ShiftRows -1 (), MixColumns -1 () trong giải mã
AES là các phép biến đổi ngược của SubBytes(), ShiftRows(), MixColumns()
1.4.4 Biến đổi vòng và số các vòng
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
Trang 10byte 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} + 6
Biến đổi vòng được ký hiệu là Round và là một dãy của 4 phép biến đổi AddRoundKey, SubBytes, ShiftRows, MixColumns chúng được gọi là các bước (Steps) Vòng cuối cùng của phép mã có khác đi một chút, nó không có phép MixColumns
1.4.5 Lịch trình khóa
Lịch trình khóa bao gồm 2 thành phần: mở rộng khóa (Key Expansion) và chọn khóa vòng (Round Key Selection) Mở rộng khóa chỉ ra các ExpandedKey
nhận được từ khóa mã Nguyên tắc chính như sau:
- Tổng số các bit trong ExpandedKey bằng độ dài khối nhân với số các vòng cộng
thêm một, (ví dụ độ dài khóa là 128 bit và 10 vòng lặp thì khóa kéo dài có 1408 bit)
- Cipher Key được kéo dài thành ExpandedKey
- Chú ý rằng ExpandedKey luôn nhận được từ khóa mã, nó không bao giờ chỉ ra một
cách trực tiếp: Round Key đầu tiên bao gồm Nb từ đầu tiên, Round Key thứ hai bao gồm Nb từ tiếp theo, và tương tự đối với Round Key thứ ba…
Việc kéo dài khóa đã được chọn phải theo tiêu chuẩn về tính hiệu quả, loại bỏ tính đối xứng, khuếch tán, phi tuyến Ngoài ra còn một vài tiêu chuẩn khác cho lịch trình khóa như sau:
- Nó sử dụng một biến đổi có ngược, tức là việc biết bất kỳ Nk từ liên kết của
ExpandedKey sẽ cho phép tạo lại toàn bộ bảng
- Việc biết một phần các bit của Cipher Key hoặc Roundkey sẽ không cho phép tính được nhiều bit Roundkeys khác
- Chống lại được các tấn công trong đó một phần Cipher Keys là được biết bởi kẻ
mã thám
- Các tấn công mà Cipher Keys là được biết hoặc có thể được chọn, ví dụ như khi
mã pháp được sử dụng như hàm nén (hàm vòng) của hàm băm
Để có tính hiệu quả đối với các bộ xử lý 8 bit, lược đồ kéo dài đơn giản, định hướng byte đã được chấp nhậ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
Thuật toán AES lấy khóa mã K và thực hiện một thủ tục mở rộng khóa để tạo
ra một lược đồ khóa Việc mở rộng khóa tạo ra tổng số 4(N r+1) từ, thuật toán yêu cầu
một tập 4 từ khởi đầu, và mỗi vòng trong N r vòng yêu cầu 4 từ dữ liệu khóa Lược đồ
Trang 11khóa kết quả gồm một mảng tuyến tính của các từ 4 byte, được ký hiệu là w j , với j
nằm trong khoảng 0j4(N r +1)
1.4.6 Kéo dài khóa
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 bằng hoặc nhỏ hơn 6, và một phiên bản cho Nk lớn hơn 6
1.5 Phạm vi, ý nghĩa và ứng dụng của AES
1.5.1 Phạm vi và ý nghĩa 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 bố 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à sự kiện nó không có bản quyền, nó có thể được cài đặt một cách dễ dàng
1.5.2 Ưu, nhược điểm của AES
1.5.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
1.5.2.2 Nhược điểm
+) AES không đủ an toàn đối với dạng tấn (side channel attack])
+) Cấu trúc toán học của AES có mô tả toán học khá đơn giản Tuy điều này chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi dụng được cấu trúc này trong tương lai
+) Sử dụng như một hàm băm;
+) Xây dựng các hàm băm Hàm băm Whilrpool là một ví dụ điển hình
1.6 Kết luận chương 1
Trang 122.2.2 Tính chất cơ bản của hàm băm mật mã
c Tính khó va chạm
b Khó tìm nghịch ảnh thứ hai
c Tính khó tính toán nghịch ảnh
2.2.3 Phân loại hàm băm mật mã
Hình 2.1: Sơ đồ phân loại hàm băm
2.2.3.1.Hàm băm mật mã có khóa
Hàm băm mật mã có khóa là hàm băm có dữ liệu đầu vào ngoài thông điệp ra còn có thông điệp khác là một khóa bí mật, nếu không có khóa bí mật này thì không thể băm thông điệp đầu vào theo đúng yêu cầu Các hàm băm có khoá được sử dụng
để xác thực thông báo và thường được gọi là các thuật toán tạo mã xác thực thông
báo (MAC)
2.2.3.2 Hàm băm mật mã không khóa (các hàm băm dựa trên mật mã khối)
Hàm băm không khóa là hàm băm có dữ liệu đầu vào chỉ là thông điệp, không chứa khóa Hàm băm không khóa có một số tính chất như sau:
Trang 13Hàm băm không khóa bao gồm các lớp con MDC Các MDC được sử dụng để tạo ra ảnh đặc trưng của thông điệp, đảm bảo sự toàn vẹn của dữ liệu Bản thân MDC lại được chia thành hai lớp hàm sau:
+) Hàm băm một chiều (OWHF - One Way Hash Function) có nghĩa là với một mã băm biết trước, khó có thể tính toán để tìm ra thông điệp đầu vào có mã băm bằng với
mã băm đã cho Hàm băm một chiều thoả mãn tính chất:
- Khó tìm nghịch ảnh
- Khó tìm nghịch ảnh thứ hai
+) Hàm băm khó va chạm (CRHF - Collision Resistant Hash Function) có nghĩa là khó có thể tính toán để tìm ra hai thông điệp khác nhau và có cùng giá trị mã băm Hàm băm khó va chạm ngoài hai tính chất cơ bản còn thoả mãn các tính chất sau:
- Khó tìm nghịch ảnh thứ hai
- Khó và chạm
Mã phát hiện sự sửa đổi MDC được chia thành MDC độ dài đơn và MDC độ dài kép
2.3 Giới thiệu cấu trúc, vai trò hàm băm mật mã
2.3.1 Cấu trúc của hàm băm mật mã
Thành phần chính của một hàm băm là một hàm nén và các hàm biến đổi khác Hàm nén được thực thi nhiều lần để băm thông điệp ban đầu của hàm băm thành một chuỗi có chiều dài cố định Các hàm biến đổi khác (có thể có hoặc không) nhận vào chuỗi bít sau lần cuối cùng thực thi hàm nén và cho kết quả chính là mã băm cuối cùng của hàm băm Hình 2.3 dưới đây là cấu trúc tổng quát của hàm băm
Hình 2.3: Cấu trúc tổng quát của hàm băm
Có rất nhiều thuật toán hàm băm cho đến nay sử dụng chung một cấu trúc cơ bản Cụ thể, một hàm băm thường gồm các bước như sau:
Bước 1: Phân chia thông điệp đầu vào chiều dài hữu hạn thành các khối thông điệp
con liên tiếp có chiều dài cố định r (giả sử là m 1 , m 2 , , m 3 ,, m k)