Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hoá và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau ví dụ như chứng thực nguồn gốc nội dung thông tin kỹ thuật chữ ký đi
Trang 1TRƯỜNG HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA MẬT MÃ - -
BÁO CÁO
TÌM HIỂU VÀ CÀI ĐẶT THUẬT
TOÁN MÃ HOÁ AES 256
Giáo viên hướng dẫn : Phạm Thị Hiên
Lớp : H25 Nhóm sinh viên thực hiện : Nguyễn Quang Vinh
Phan Văn Vương Phạm Thị Hải Yến
Hà Nội, 2017
Trang 2Mục lục
LỜI NÓI ĐẦU 2
Phần 1: Tổng quan về AES 3
1 Giới thiệu AES 3
2 Quy trình mã hoá AES 4
Phần 2: Các vòng AES 6
1 Biến đổi SubBytes trong AES 6
2 Phép biến đổi ShiftRows trong AES 7
3 Phép biến đổi MixColumns trong AES 7
4 Phép biến đổi AddRoundKey trong AES 8
5 Mở rộng khoá 9
Phần 3: Độ an toàn của AES 10
1 Đánh giá chung 10
2 Các tiêu chuẩn thiết kế an toàn trong AES 10
a Tiêu chuẩn thiết kế Rijndael nêu trong đề nghị AES 10
b Tiêu chuẩn thiết kế S-hộp 10
c Tiêu chuẩn thiết kế cho số các bước dịch 10
d Tiêu chuẩn thiết kế phép biến đổi MixColumns 11
e Tiêu chuẩn lựa chọn số vòng lặp 11
f Tiêu chuẩn mở rộng khoá 11
Phần 4: Chế độ hoạt động OFB 12
1 Giới thiệu các chế độ hoạt động của AES 12
2 Chế độ mã OFB 12
3 Độ an toàn của chế độ OFB 14
Trang 3LỜI NÓI ĐẦU
Cùng với sự phát triển của khoa học kỹ thuật và ứng dụng tin học trong mọi lĩnh vực của đời sống như an ninh quân sự quốc phòng và trong các giao dịch thương mại điện tử,…nhu cầu bảo
vệ thông tin trong các hệ thống và ứng dụng ngày càng được chú trọng Vì vậy mà khoa học mật mã được được ứng dụng rộng rãi với mong muốn bảo vệ được những thông tin cơ sở dữ liệu quan trọng Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hoá và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau
ví dụ như chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ
ký điện tử), chứng nhận tính xác thực về người sở hữu mã khoá, các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử
an toàn
Trong chương trình học tập về an toàn thông tin của sinh viên hiện nay thì việc tự mã và giải mã dữ liệu là khá quan trọng
Nó sẽ giúp sinh viên tìm hiểu sâu hơn về các thuật toán mã và giải
mã cũng như cung cấp cách cài đặt các thuật toán trên hệ điều hành Với những lý do trên, nhóm sinh viên chúng em chọn đề tài Tìm hiểu và cài đặt thuật toán mã hoá AES 256
Trang 4Phần 1: Tổng quan về AES
1 Chuẩn mã hóa dữ liệu tiên tiến AES
Standard) là một hệ mã khóa bí mật có tên là Rijdael (do hai nhà
các khóa và các khối dữ liệu có độ dài lớn hơn tuy nhiên khi được
2001, nó được qui đi ̣nh chỉ làm việc với các khối dữ liệu 128 bit và các khóa có độ dài 128, 192 hoặc 256 bit (do đó còn đặt cho các
dụng)
AES trở thành một trong những thuật toán mã hóa phổ biến nhất sử dụng khóa mã đối xứng để mã hóa và giải mã
AES có độ dài khóa là 128 bit (một chữ số nhị phân có giá trị
0 hoặc 1), 192 bít và 256 bít tương ứng gọi là AES-128, AES-192
và AES-256
2 Cơ sở toán học của AES:
a Các biểu diễn Byte
Byte là đơn vị xử lý cơ bản trong hệ mật AES, đó là 1 dãy 8 bit
được viết thành {63}
Trang 5Phép nhân
3 Ký hiệu và quy ước
Độ dài
Độ dài khối
Số vòng (Nr)
Bảng 1: Tổ hợp Khóa-khối-vòng
k 0,0 k 0,1 k 0,2 k 0,3 k 0,4 k 0,5 k 0,6 k 0,7
k 1,0 k 1,1 k 1,2 k 1,3 k 1,4 k 1,5 k 1,6 k 1,7
k 2,0 k 2,1 k 2,2 k 2,3 k 2,4 k 2,5 k 2,6 k 2,7
k 3,0 k 3,1 k 3,2 k 3,3 k 3,4 k 3,5 k 3,6 k 3,7
Bảng 2: Biểu diễn trạng thái khoá N k = 8
Vòng lặp chính của AES thực hiện các hàm sau: SubBytes(), ShiftRows(), MixColumns() và AddRoundKey() Ba hàm đầu của một vòng AES được thiết kế để ngăn chặn phân tích mã bằng phương thức “mập mờ“ (confusion) và phương thức “khuếch tán“ (diffusion), còn hàm thứ tư được thiết kế để mã hóa dữ liệu
4 Quy trình mã hoá AES
Trang 6 Thực hiện vòng lặp: Thực hiện (Nr – 1) chu kỳ mã hoá sử dụng cùng thủ tục mã hoá Mỗi chu kỳ mã hoá gồm 4 thao tác biến đổi: SubBytes, ShiftRows, MixColumns và AddRoundKey
qua thao tác MixColumns
Trang 7Phần 2: Các vòng AES
1 Biến đổi SubBytes trong AES
Phép biến đổi SubBytes là phép thay thế phi tuyến được thực hiện độc lập trên mỗi byte của trạng thái sử dụng một bảng thay thế hộp S-hộp này có tính khả nghịch được tạo bởi 2 phép biến đổi:
xạ affine
byte với giá trị {63} hay {01100011}
[
𝑏0′
𝑏1′
𝑏2′
𝑏3′
𝑏4′
𝑏5′
𝑏6′
𝑏7′ ]
=
[
𝑏0
𝑏1
𝑏2
𝑏3
𝑏4
𝑏5
𝑏6
𝑏7]
+
[
1 1 0 0 0 1 1 0]
y
x
0 63 7c 77 7b f2 6b 6f c5 30 01 67 ab fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e e1 s8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
Bảng 2: S-hộp, thay thế các giá trị theo byte {xy} (dạng
hexa)
Trang 82 Phép biến đổi ShiftRows trong AES
Phép biến đổi ShiftRows thực hiện biến đổi trên các hàng của mảng trạng thái Hàng đầu tiên r = 0 không dịch chuyển, tấy cả các hàng khác được dịch vòng trái theo số lượng byte khác nhau Cụ thể:
𝑠𝑟,𝑐′ = 𝑠𝑟,(𝑐+𝑠ℎ𝑖𝑓𝑡(𝑟,𝑁𝑏))𝑚𝑜𝑑𝑁𝑏 𝑣ớ𝑖 0 < 𝑟 < 4 𝑣à 0 ≤ 𝑐 < 𝑁𝑏
shift (2,4) = 2, shift (3,4) = 3
Hàm ShiftRows() dịch vòng 3 hàng cuối của mạng trạng thái
3 Phép biến đổi MixColumns trong AES
Phép biến đổi MixColumn thực hiện biến đổi theo từng cột Mỗi cột được xem như là một đa thức 4 hạng tử, các cột được
Điều này có thể biểu diễn dưới dạng 1 phép nhân ma trận:
Trang 9Phép MixColumns() thao tác trên mảng trạng thái theo cách cột – cột
[
𝑠0,𝑐′
𝑠1,𝑐′
𝑠2,𝑐′
𝑠3,𝑐′ ]
= [
02𝐻 03𝐻
01𝐻 02𝐻
01𝐻 01𝐻
03𝐻 01𝐻
01𝐻 01𝐻
03𝐻 01𝐻
02𝐻 03𝐻
01𝐻 02𝐻
] [
𝑆0,𝐶
𝑆1,𝐶
𝑆2,𝐶
𝑆3,𝐶] với 0 ≤ 𝑐 < 𝑁𝑏
4 Phép biến đổi AddRoundKey trong AES
Phép biến đổi AddRoundKey() được gọi là phép cộng khoá Trong phép biến đổi này, một khoá vòng được cộng với trạng thái bằng 1 phép toán XOR đơn giản trên bit Mỗi khoá vòng
cộng với các cột của trạng thái sao cho:
[𝑠0,𝑐′ , 𝑠1,𝑐′ , 𝑠2,𝑐′ , 𝑠3,𝑐′ ] = [𝑠0,𝑐, 𝑠1,𝑐, 𝑠2,𝑐, 𝑠3,𝑐]⨁[𝑤𝑟𝑜𝑢𝑛𝑑 + 𝑁𝑏 + 𝑐]
Thao tác AddRoundKey tác động lên mỗi cột của trạng thái
Trang 105 Mở rộng khoá
Thuật toán AES nhận vào khoá mã K và thực hiện phép mở rộng khoá để tạo ra 1 lược đồ khoá Phép mở rộng khoá tạo ra
Hàm SubWord(): là hàm nhận từ 4 byte làm đầu vào và áp dụng S-Hộp đối với mỗi byte để tạo thành đầu ra là một từ
thực hiện phép hoán vị tuần hoàn và cho kết quả đầu ra là một từ [𝑎1, 𝑎2, 𝑎3, 𝑎0]
SubWord() được áp dụng cho w[i – 1] trước khi áp dụng XOR
Phép tạo các hằng: Rcon[i]
Rcon[i]=(Rc[1],’00’,’00’,’00’) với Rc[1]=01, Rc[i]={02}.Rc[1-1];(i ≥ 2)
Trang 11Phần 3: Độ an toàn của AES
1 Đánh giá chung
AES sử dụng các phép biến đổi là các phép thay thế và hoán vị nên dễ hiểu và dễ cài đặt Do sử dụng phép tra bảng nên AES có tốc độ tính toán rất nhanh
Thiết kế và độ dài khoá của thuật toán AES (128, 192 và 256 bít) là đủ an toàn để bảo vệ các thông tin được xếp vào loại tối mật Các thông tin tuyệt mật sẽ phải dùng khóa 192 hoặc 256 bít AES dường như thách thức các kiểu tấn công hiện nay Ví dụ như tấn công bằng phương pháp vét cạn, ta phải mất 2128 phép tính toán mới có thể tìm ra được khoá Đối với tốc độ máy tính hiện nay thì điều này được cho là an toàn
Vào thời điểm năm 2006, dạng tấn công lên AES duy nhất thành công là tấn công kênh bên Tấn công kênh bên không tấn công trực tiếp vào thuật toán mã hóa mà thay vào đó, tấn công lên các hệ thống thực hiện thuật toán có sơ hở làm lộ dữ liệu
2 Các tiêu chuẩn thiết kế an toàn trong AES
a Tiêu chuẩn thiết kế Rijndael nêu trong đề nghị AES
Kháng cự chống lại tất cả các tấn công đã biết
Tốc độ và tính gọn của mã lệnh trên một miền rộng của các kiến trúc phần cứng khác nhau
Tính đơn giản của thiết kế
b Tiêu chuẩn thiết kế S-hộp
Tính phi tuyến:
- Độ lớn tương quan đầu vào – đầu ra tối đa càng nhỏ càng tốt để chống lại tấn công tuyến tính
- Xác suất lan truyền sai khác cực đại càng nhỏ càng tốt để chống lại tấn công vi sai
Độ phức tạp đại số: biểu diễn đại số của S-Hộp trong GF(28) cần phải phức tạp để chống lại tấn công nội suy
c Tiêu chuẩn thiết kế cho số các bước dịch
Tối ưu tính khuếch tán: để đảm bảo tính kháng cự chống lại các tấn công vi sai và tuyến tính
Tính kháng cự chống lại các tấn công vi sai chặt cụt và các tấn công bão hoà cần phải được cực đại
Trang 12d Tiêu chuẩn thiết kế phép biến đổi MixColumns
Kích thước: Phép biến đổi là một biến đổi xếp gạch thao tác trên các cột gồm 4-byte
Tính tuyến tính
Khuếch tán
Hiệu suất trên các bộ xử lý 8-bit: hiệu suất xử lý trên các bộ
xử lý 8-bit cần phải cao Điều kiệ này cần bởi vì MixColumns
là bước duy nhất mà việc đạt được hiệu suất tốt trên các bộ
xử lý 8-bit là không
e Tiêu chuẩn lựa chọn số vòng lặp
Phân tích mã khối chỉ ra rằng sức kháng cự của các mã khối nhièu vòng chống lại các tấn công mã thám tăng lên cùng với số vòng của mã khối
Số vòng lặp của mã khối được xác định bằng cách xem xét số tối
đa các vòng mà đối với chúng còn tìm được các tấn công đường tắt hiệu quả hơn đáng kể so với duyệt khoá vét cạn Sau đó thêm một số dư an toàn đáng kể Đối với AES có độ dài khối và độ dài khoá bằng 128 bit, không có tấn công đường tắt đã được tìm thấy cho các phiên bản rút gọn nhiều hơn 6 vòng Người ta thêm vào 4 vòng như 1 độ dư an toàn
Đối với các phiên bản AES có khoá dài hơn, các vòng được tăng thêm 1 cho mỗi 32 bit được thêm vào trong khoá mã
f Tiêu chuẩn mở rộng khoá
Tính hiệu quả:
sử dụng ít lượng bộ nhớ làm việc
xử lý
Loại bỏ tính đối xứng: Tính phi đối xứng trong lược đồ khoá chống lại tính đối xứng trong các biến đổi vòng và giữa các vòng dẫn tới các điểm yếu hoặc cho phép các tấn công Ví dụ: các khoá yếu trong DES, tấn công trượt khối
Khuếch tán: Cần có độ khuếch tán hiệu quả các sai khác khoá mã vào các khoá được mở rộng
Phi tuyến: Cần đảm bảo đủ tính phi tuyến để ngăn cản việc xác định hoàn toàn các sai khác trong khoá mở rộng chỉ từ các sai khác của khoá mã
Trang 13Phần 4: Chế độ hoạt động OFB
1 Giới thiệu các chế độ hoạt động của AES
Mật mã khối xử lý các thông báo có cỡ bằng cỡ khối dữ liệu của nó Thông thường, độ dài của thông báo lớn hơn cỡ của khối
dữ liệu, khó đó thông báo được chia thành các khối dữ liệu liên tiếp nhau và mã khối tuần tự xử lý lần lượt từng khối một
Có nhiều chế độ hoạt động khác nhau cho mã khối Sau khi AES ra đời, NIST đã định nghĩa 5 chế độ hoạt động:
Ký hiệu:
khoá K
các khối n-bit cho các chế độ ECB và CBC và các khối r-bit cho các chế độ CFB và OFB với 𝑟 ≤ 𝑛 cố định thích hợp
IV: vecto khởi tạo n-bit
2 Chế độ mã OFB
Chế độ mã dòng OFB có thể được sử dụng cho những ứng dụng trong đó tấn công lan sai cần phải tránh Chế độ này cho phép mã hoá các khối có kích thước khác nhau và đầu ra của hàm
mã E được phản hồi
Có hai phiên bản của OFB sử dụng mã khối n-bit: Chế độ OFB phản hồi đầy đủ và Chế độ OFB phản hồi r-bit
Trang 14Chế độ phản hồi đầu ra OFB
Thuật toán 1: Chế độ OFB phản hồi đầy đủ
Mã hoá
Đầu vào: Khoá K có k-bit, n-bit IV, các khối bản rõ r-bit
a) 𝑂𝑗 ← 𝐸𝐾(𝐼𝑗)
được định danh như là bit thứ nhất)
sau)
Giải mã
khối có r-bit
Đầu ra: các khối rõ, mỗi khối có r-bit
Trang 15Thuật toán 2: Chế độ OFB phản hồi đầu ra r-bit
Mã hoá
Đầu vào: Khoá K có k-bit, n-bit IV, các khối bản rõ r-bit
a) 𝑂𝑗 ← 𝐸𝐾(𝐼𝑗)
được định danh như là bit thứ nhất)
trái của thanh ghi)
Giải mã
khối có r-bit
Đầu ra: các khối rõ, mỗi khối có r-bit
Các tính chất:
1 bản rõ được mã thành đầu ra khác nhau
được khôi phục tương ứng bị đảo ngược
các lỗi bit bản mã, nhưng không thể tự đồng bộ sau khi
mất các bit bản mã
3 Độ an toàn của chế độ OFB
Trang 16- Nhiều thông báo được mã hoá với cùng một khoá với điều kiện IV khác nhau được sử dụng
trong bản mã sẽ ảnh hưởng trực tiếp đến bản rõ