Thực tế trờn đó đặt ra một yêu cầu cấp bách là phải xây dựng những hệthống bảo vệ các chương trình và dữ liệu của chúng ta trên môi trường không antoàn, có khả năng phát hiện sớm sự tấn
Trang 1Lời nói đầu
Sự phát triển nhanh chóng của công nghệ thông tin hiện nay đã mang lạinhững lợi Ých to lớn cho chóng ta Nhờ có mạng máy tính mà chúng ta có thểkhai thác, truyền, nhận thông tin một cách rất nhanh chóng Tuy nhiên, cùng vớinhững lợi Ých trên, mạng máy tính cũng đã tạo ra một môi trường không an toàn.Khi đã kết nối vào mạng, chúng ta có thể bị tấn công bất kỳ lúc nào Những dữliệu và thông tin quan trọng bị các hacker lấy cắp, chương trình bị virus lâynhiễm… Sự phổ biến của mạng Internet nh hiện nay đã làm môi trường này trởnên phổ biến Mặc dù những công cụ nhằm bảo vệ chương trình và dữ liệu liêntục được phát triển: Những chương trình diệt virus liên tục được cập nhật, các hệthống bảo mật của hệ điều hành cũng liên tục được cải tiến Tuy nhiên, việc pháttriển các hệ thống trên vẫn không thể theo kịp được với nhu cầu thực tế Do vậy,đối với công nghệ thông tin hiện nay, làm việc trên môi trường không an toàn làđiều tất yếu
Thực tế trờn đó đặt ra một yêu cầu cấp bách là phải xây dựng những hệthống bảo vệ các chương trình và dữ liệu của chúng ta trên môi trường không antoàn, có khả năng phát hiện sớm sự tấn công của virus, tránh được việc lấy cắpnhững thông tin quan trọng
Xuất phát từ yêu cầu này, đề tài tốt nghiệp của chúng em đã nghiên cứu vàứng dụng những lý thuyết về mã hóa và chữ ký số hiện đại để xây dựng chươngtrình bảo vệ dữ liệu trên môi trường không an toàn Cụ thể, đề tài đã xây dựng
thành công một cấu trúc dữ liệu đặc biệt gọi là “volume ảo” Cấu trúc này có khả
năng lưu trữ dữ liệu dưới dạng các file có phân cấp theo thư mục tương tù nh các
hệ thống file trờn cỏc hệ điều hành hiện nay Tuy nhiên, không chỉ có chức nănglưu trữ file thông thường, nú cũn cú khả năng bảo vệ được dữ liệu bên trongbằng việc sử dụng những thuật toán mã hóa phức tạp với khóa động được sinh từnhững thông tin xác thực người dùng Vì lý do bảo mật, volume ảo không tíchhợp với hệ thống vào ra file của hệ điều hành Do vậy, đÒ tài đã xây dựng những
Trang 2Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàncông cụ riêng cung cấp các dịch vụ vào ra trờn bao gồm trình quản lý volume ảo
và công cụ tìm kiếm mờ trên môi trường này
Với mục đích nh trên, đề tài được chia làm 3 phần:
- Phần 1: Trình bày cơ sở lý thuyết mã hóa và chữ ký sè
- Phần 2: Trình bày cấu trúc của volume ảo và xây dựng trình điều khiểnvolume ảo
- Phân 3: Trình bày chi tiết về công cụ tìm kiếm mờ trên môi trườngvolume ảo này
Để hoàn thành được đề tài này, chúng em đã phân công nhau thực hiện cácphần việc của đề tài nh sau:
- Ngô Thế Trung:
+ Nghiên cứu lý thuyết mã hóa và chữ ký sè
+ Xây dựng các modul mã hóa cơ bản ứng dụng trong hệ thống
- Phạm Quang Huy:
+ Xây dựng cấu trúc volume ảo và trình quản lý volume ảo
+ Xậy dựng công cụ tìm kiếm mờ trên môi trường volume ảo
được
Mặc dù hết sức cố gắng trong quá trình làm đồ án Tuy nhiên chúng em vẫnkhông thể tránh khỏi những thiếu sót Em rất mong nhận được những ý kiến đónggóp của các thầy cô và các bạn để hệ thống được hoàn thiện hơn
Trang 3Chóng em còng xin được cảm ơn tất cả các thầy cô giáo trong khoa Toán –Tin ứng dụng Các thày cô đã truyền đạt cho chóng em những kiến thức nền tảngtrong quá trình học tập tại khoa.
Chóng con xin cảm ơn bố, mẹ Bố mẹ đã tạo mọi điều kiện tốt nhất chochóng con cả về chất lẫn tinh thần trong suốt quá trình học tập cũng như làm đồ
án tốt nghiệp, giỳp chóng con có được kết quả như ngày hôm nay
Trang 4Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Mục lục
Phần 1 Mã hóa và chữ ký sè 8
Chương 1 Một số kiến thức toán học cơ sở 9
1.1 Thuật toán và độ phức tạp 9
1.1.1 Thuật toán 9
1.1.2 Độ phức tạp của thuật toán 9
1.2 Phép tính đồng dư và các vấn đề liên quan 10
1.2.1 Số nguyên tố và định lý cơ bản của số học: 10
1.2.2 Thuật toán Euclid và mở rộng 11
1.2.2.1 Thuật toán Euclid: 11
1.2.2.2 Thuật toán Euclid mở rộng 12
1.2.3 Phi hàm Euler 12
1.2.4 Định lý Fermat và các mở rộng 13
1.2.5 Thuật toán bình phương nhân liên tiếp 13
1.2.6 Định lý Trung quốc về phần dư 14
1.3 Trường hữu hạn 14
1.3.1 Trường Fp 14
1.3.2 Trường F2r 15
Chương 2 Các khái niệm cơ bản về mã hoá 17
2.1 Một số thuật ngữ và khái niệm 17
2.2 Định nghĩa và các tích chất của hệ mật 18
Chương 3 Các hệ mã hoá cổ điển 20
3.1 Mã dịch vòng ( shift cipher) 20
3.2 Mã thay thế 20
3.3 Mã Affine 21
3.4 Mã Vigenère 22
3.5 Mật mã Hill 23
3.6 Các hệ mã dòng khoá 24
Chương 4 Các hệ mã hóa hiện đại 28
4.1 Hệ mã hoá khoá đối xứng 28
4.1.1 Giới thiệu chung 28
4.1.2 AES 29
4.1.2.3 Quá trình hình thành 29
4.1.2.4 Công cụ chuẩn bị 31
4.1.2.5 Trường các byte 31
Trang 54.1.2.7 Phép nhân 32
4.1.2.8 Nhân với x 33
4.1.2.9 Đa thức với hệ số byte ( trong trường GF(28)) 34
4.1.2.10 Thuật toán 36
4.1.2.11 Trạng thái, khoá mã và số lượng vòng 37
4.1.2.12 Các phép biến đổi trong một vòng 39
4.1.2.13 Phép thế byte ( subbyte transformation) 39
4.1.2.14 Phép dịch hàng( ShiftRows Transformation) 40
4.1.2.15 Phép trộn cột (MixColumn Transformation) 41
4.1.2.16 Cộng với khoá của vòng ( Round Key addition) 41
4.1.2.17 Thuật toán mã hoá 42
4.1.2.18 Quy trình sinh khoá 42
4.1.2.19 Thuật toán giải mã 43
4.2 Hệ mã hoá khoá công khai 45
4.2.1 Nguyên tắc chung 45
4.2.2 Hệ mã RSA 45
4.2.2.20 Thuật toán 45
4.2.2.21 Các phương pháp tấn công hệ mật RSA 47
4.2.2.22 Phương pháp p-1: 47
4.2.2.23 Phương pháp tấn công liên tiếp 48
4.2.2.24 Sù che dấu thông tin trong hệ thống RSA 49
4.2.2.25 Bình luận về RSA 49
Chương 5 Chữ ký sè - hệ hàm băm mật mã 51
5.1 Sơ lược về hàm băm mật mã 51
5.2 Thuật toán MD5 52
Phần 2 Bảo vệ dữ liệu trên môi trường không an toàn 60
Chương 1 Khảo sát và xác lập giải pháp thiết kết cấu trúc volume ảo 61
1.1 Những yêu cầu đặt ra đối với đối với cấu trúc volume ảo 61
1.2 Khảo sát một số hệ thống quản lý và lưu trữ file 61
1.2.1 Hệ thống FAT, FAT32 61
1.2.2 Hệ thống NTFS 62
1.2.3 Hệ thống Extfs và Ext2fs 64
1.2.4 Nhận xét chung 66
1.3 Giải pháp thiết kế cấu trúc volume ảo 66
Chương 2 Cấu trúc volume ảo 67
2.2 Bảng thông tin volume 67
2.3 Phân vùng dữ liệu 69
2.4 Lưu trữ file trên volume ảo 70
Trang 6Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
2.5 Lưu trữ thư mục trên volume ảo 72
2.5.1 Cấu trúc thư mục 72
2.5.2 Nội dung Entry của thư mục 73
2.6 Các dạng volume ảo 74
2.6.1 Volume ảo lưu trên 1 file 74
2.6.2 Volume ảo lưu trên nhiều file 75
2.6.3 Volume ảo lưu trên phân vùng của ổ cứng 77
2.6.3.1 Sơ lược về phân vùng trên ổ cứng 77
2.6.3.2 Cấu trúc của volume ảo lưu trên phân vùng của ổ cứng 78
2.7 Bảo mật dữ liệu trên volume ảo 78
2.8 Bảo đảm an toàn dữ liệu trên volume ảo 79
Chương 3 Trình điều khiển vào ra trên volume ảo 81
3.1 Chức năng tự kiểm tra 82
3.2 Tạo và định dạng cho volume ảo 83
3.3 Thao tác cơ bản trên volume ảo 83
3.3.1 Xây dựng tầng truy cập mức thấp 84
3.3.2 Quản lý block và phân vùng 86
3.3.2.3 Địa chỉ các đối tượng của volume ảo 87
3.3.2.4 Cấp phát phân vùng mới cho volume 89
3.3.2.5 Cấp phát block 90
3.3.2.6 Nạp thông tin block 93
3.3.3 Tầng truy cập file cơ bản 94
3.3.4 Tầng dịch vụ 96
3.3.4.7 Định vị, tìm kiếm file và thư mục – Quy tắc đặt tên file 96
3.3.4.8 Quản lý khóa file 97
3.3.4.9 Bảo mật dữ liệu 97
3.3.4.10 Vào ra file 98
3.3.4.11 Tạo file, thư mục mới 99
3.3.4.12 Mở, đóng, đọc và ghi file 100
3.3.4.13 Copy, di chuyển, đổi tên, xoá các file và thư mục 101
Phần 3 Công cụ tìm kiếm mờ trên môi trường volume ảo 103
Chương 1 khảo sát một số hệ thống tìm kiếm hiện nay 104
1.1 Google 105
1.1.1 Giới thiệu chung về Google 105
1.1.2 Cấu trúc và hoạt động của hệ thống Google 105
1.1.3 Phương pháp đánh hạng kết quả trong Google 107
1.1.4 Phương pháp đánh giá thông tin 107
Trang 71.1.6 Hỗ trợ tiếng Việt và một số tính năng khác của Google 109
1.1.7 Nhận xét chung về ưu, nhược điểm của google: 112
1.2 Altavista 112
1.2.1 Cấu trúc của altavista 113
1.2.2 Hỗ trợ tìm kiếm trên altavista 113
1.3 Nhận xét chung 113
Chương 2 Cơ sở lý thuyết của thuật toán tìm kiếm mờ 114
2.1 Ôtômat mờ tổng quát 115
2.2 Thuật toán so mẫu tìm xâu con sử dụng ôtômat mờ 115
2.2.1 Đặt bài toán 115
2.2.2 Trạng thái có nghĩa 116
2.2.3 Xây dựng luật chuyển trạng thái của ôtômat 116
2.2.3.1 Định nghĩa 116
2.2.3.2 Tính chất của hàm TFuzz 117
2.2.4 Phương pháp tính TFuzz 121
2.3 Ôtômat sánh tìm xâu con 123
2.3.1 Định nghĩa 123
2.3.2 Cơ sở toán học của ôtômát tìm xâu con của mẫu 124
2.3.3 Hoạt động của ôtômát 124
2.4 Tìm kiếm tựa ngữ nghĩa với tiếp cận mờ 125
2.4.1 Độ tương tự giữa hai từ 125
2.4.2 Đặt bài toán 126
2.4.3 Thuận thế 126
2.4.3.3 Khái niệm thuận thế 126
2.4.3.4 Mét sè tính chÊt của thuận thÕ 128
2.4.3.5 Thuật toán đếm số thuận thế 130
2.5 Kết luận 132
Chương 3 Xây dựng modul tìm kiếm mờ 133
3.1 Cải tiến thuật toán tìm kiếm mờ 133
3.1.1 Tìm kiếm trên văn bản tiếng Việt 133
3.1.2 Thay đổi trọng số giữa các ký tù trong từ 134
3.2 Xây dựng thuật toán tìm kiếm mờ 136
3.2.1 Xây dựng thuật toán LCS 136
3.2.2 Xây dựng thuật toán đếm số thuận thế 139
3.2.3 Trình diễn kết quả 142
Trang 8Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
PhÇn 1 Mã hóa và chữ ký sè
Các hệ mật mã đóng một vai trò rất quan trọng trong quá trình phát triểncông nghệ thông tin Các hệ mật riêng lẻ nh hệ mó hoỏ khoỏ đối xứng, hệ móhoỏ khoỏ công khai, các hệ hàm băm mật mã đều có những đặc trưng nhất định.Ngoài việc sử dụng riêng lẻ các hệ mật trên theo đúng tư tưởng thiết kế củachúng thì việc kết hợp chúng với nhau để tạo thành các giao thức hoặc các ứngdụng trong những trường hợp đặc biệt có thể nói là một nghệ thuật
Để trình bày cơ sở của hệ thống này, sau đây ta điểm qua một số vấn đề của
lý thuyết mã hóa và chữ ký số hiện đại, phục vụ cho việc bảo vệ chương trình và
dữ liệu
Trang 9Ch¬ng 1 Một số kiến thức toán học cơ sở
1.1.1 Thuật toán
§Þnh nghÜa 1.1: Thuật toán bao gồm một quy tắc để với những dữ liệu ban đầu đã cho ta tìm được lời giải của bài toán được xét sau một khoảng thời gian hữu hạn.
Nh vậy, thuật toán phải thoả mãn 2 yêu cầu:
1) Tính hữu hạn: Thuật toán cần phải kết thúc sau một số hữu hạn bước.Khi thuật toán ngừng làm việc, ta phải thu được câu trả lời cho vấn đềđặt ra
2) Tính xác định: Ở mỗi bước, thuật toán cần phải xác định, nghĩa là chỉ rõviệc cần làm Nếu đối với người đọc, nếu chưa thoả món trờn chưa thoảmãn điều kiện này thì đó là lỗi của người viết
Ngoài ra, ta còn phải xét đến tính hiệu quả của thuật toán, có nhiều thuật toán về
lý thuyết là kết thúc sau hữu hạn bước, tuy nhiên thời gian hữu hạn đó vượt quákhả năng làm việc của chúng ta ( Ví dụ: 100 năm) Các thuật toán loại này khôngđược xét đến ở đây
1.1.2 Độ phức tạp của thuật toán
Thời gian làm việc của máy tính khi chạy một thuật toán không chỉ phụthuộc vào thuật toán mà còn phụ thuộc vào máy tính được sử dụng Do đó, xétmột tiêu chuẩn chung để đo độ phức tạp của thuật toán đó là dùa vào số thao tác
cơ sở phải làm khi thực hiện thuật toán
Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số nguyên dương
Ta nói f(n) có bậc O-lớn của g(n), và viết f(n)=O(g(n)) hoặc f=O(g), nếu tồn tạimột số C > 0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều dương, đồng thờif(n) <= Cg(n)
Trang 10Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
§Þnh nghÜa 1.2: Một thuật toán được gọi là có độ phức tạp đa thức theo cỡ (dữ liệu) n , hoặc có thời gian đa thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không vượt quá O(n d ), trong đó n là độ lớn của đầu vào,
và d là số nguyên dương nào đó.
Nh vậy, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật toán là đa thứcbậc d theo k nghĩa là là O(kd), tức là tương đương với một đa thức của k (bậc d)
Các thuật toán với thời gian O(αn), α >1 , được gọi là các thuật toán với độ phứctạp mũ, hoặc thời gian mò
Các thuật toán có độ phức tạp trung gian giữa đa thức và mũ được gọi là thuậttoán dưới mũ
1.2.1 Số nguyên tố và định lý cơ bản của số học:
Ký hiệu Z là tập các số nguyên: …,-2,-1,0,1,2,… và N là tập các số tự nhiên (tức
là các số nguyên dương: 1,2,3…)
Với a, b Z ta nói rằng b chia hết cho a nếu như b có thể viết thành tích của avới một số nguyờn khỏc; khi Êy ta cũng có thể nói rằng a chia hết b, hay a là mộtước số của b, và ký hiệu a | b Ta có một số tính chất:
1) Nếu a, b, c Z và a | b thì a | bc;
2) Nếu a | b và b | c thì a | c;
3) Nếu a | b và a | c thì a | b ± c;
4) Nếu a | b và a không chia hết c thì a không chia hết b ± c;
§Þnh nghÜa 1.3: Sè tự nhiên lớn hơn 1 mà không chia hết cho số tự nhiên nào khác, trừ chính nó và 1, thì được gọi là số nguyên tè
Trang 11p α| b nhưng p α+1 không chia hết b.
§Þnh lý 1.1 Mọi số nguyên lớn hơn 1 đều có thể phân tích một cách duy nhất dưới dạng tớch cỏc luỹ thừa của các số nguyên tố khác nhau Nếu p là một số nguyên tố và p | ab thì Ýt nhất một trong 2 sè a,b phải chia hết cho p.
Ước chung lớn nhất của hai số tự nhiên a,b là số lớn nhất trong tập các ướcchung của 2 số đó, được ký hiệu là gcd( a, b) hay đơn giản là (a,b)
Nh vậy, nếu d | a và d | b thì d | gcd(a,b)
Khi hai số tự nhiên có ước chung lớn nhất là 1 thỡ chỳng được gọi là nguyên tốcùng nhau
1.2.2 Thuật toán Euclid và mở rộng
Giả sử m là một số nguyên dương ta nói hai số nguyên a và b đồng dư vớinhau modulo m nếu m chia hết hiệu a-b ( Tức là m | gcd(a,b)) Ký hiệu là ab(mod m)
Nh vậy, ab(mod m) khi và chỉ khi tồn tại số nguyên k sao cho a=b+km
để tìm gcd( a,b) có một thuật toán nổi tiếng đó là thuật toán Euclid
1.2.2.1 Thuật toán Euclid:
B0: Nếu a<b đổi chỗ a cho b ( khẳng định a≥b)
B1: Nếu b=0, in ra a và kết thóc
B2: Đặt r = a mod b, a=b, b= r quay về B1
§Þnh lý 1.2 (Lamộ): Số phép chia cần thiết để tìm gcd (a,b) bằng thuật toán Euclid không vượt quá 5 lần số chữ số thập phân của số bé trong hai
số đã cho.
Trang 12Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Hệ quả: Giả sử a< b, khi đó số các phép tính bit cần thiết để thực hiện thuậttoán Euclid là O(log2a)3)
Ngoài thuật toán Euclid nói trên, trong nhiều trường hợp, ta cần đến thuậttoán Euclid mở rộng Thuật toán này không những cho ta tìm gcd(a,b), mà cònbiểu diễn d=gdc( a,b)=ma+nb, trong đó m,n là các số nguyên
Bổ đề: gdc(a,b) là số d dương nhỏ nhất biểu diễn được dưới dạng tổ hợptuyến tính của a và b
d=gcd(a,b)=ma+nb
1.2.2.2 Thuật toán Euclid mở rộng
Cho hai số nguyên khụng õm u,v, tìm (x, y, z) sao cho
gcd(u,v)=z=ux+vy
Trong tính toán, thêm vào các Èn phô (p, q, r), (m, n, t) với
um+vn=t, up+vq=r, ux+vy=z
Trang 13 Tính chất:
là hàm nhân tính : (mn)= (m) (n)
p là số nguyên tố thì (p )=p-1
1.2.4 Định lý Fermat và các mở rộng
§Þnh lý 1.3 (Định lý Fermat (bé)): Nếu p là một số nguyên tố và a là một số
nguyờn thỡ ap a (mod p) Nếu p không chia hết a ( tức là a mod p #
NÕu e,d là các số nguyên thoả mãn ed 1 (mod (m)) thì, với mọi số c
nguyên tố cùng nhau với m, ta có (ce)d
m)mod
2(mmod021
222
121
a
k k a
k k
k k
Trang 14Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
1.2.6 Định lý Trung quốc về phần dư
§Þnh lý 1.5 Cho tập số nguyên tố cùng nhau từng đôi một: m1, m2,…, mr Với mỗi bộ số nguyên bất kỳ a1, a2,…, ar, hệ phương trình đồng dư
x a i (mod m i ) i=1 r, luụn có nghiệm và là duy nhất theo modulo m= m 1 m 2 …m r Nghiệm này
có thể tính được trực tiếp theo công thức:
x = a1m2…mr b1+ m1 a2…mr b2+ + arm1m2…mr-1br (mod m1m2… mr) trong đó bi=(( m1m2…mr)/mi)-1(mod mi) i=1 r
1.3.1 Trường Fp
Với p là một số nguyên bất kỳ, trên tập cỏc lớp đồng dư theo modulo p, tức
là Z/ pZ, ta có thể thực hiện được các phép tính +, - , x như đã biết ở phần trên.Khi p là một số nguyên tố thì với mỗi phần tử khỏc khụng α Z/ pZ ta luôn tìmđược phần tử nghịch đảo α-1 Z / pZ theo nghĩa αxα -1 1 (mod p) và do đó cóthể thực hiện phép chia ( cho các phần tử khác 0) theo nghĩa α / = α x -1
Nh vậy, Z/ Zp có cấu trúc của một trường và ta ký hiệu trường này là Fp* Nh vậy
Fp*= Fp \ {0}={1,2, ,p-1}
Ở các phần tiếp thep khi nói đến Fp hay Fp là ta đề cập đến p nguyên tố
Một phần tử g Fp*được gọi là phần tử sinh (hay căn nguyên thuỷ ) của nhóm
Fp* nếu tập các luỹ thừa của g cũng chính là nhóm này, tức là 2 tập sau trùngnhau:
Trang 15 Bài toán logarit rời rạc
Cho phần tử sinh g Fp* Khi đó mọi phần tử h Fp* có thể được biểu diễndưới dạng một luỹ thừa nào đó của g Vấn đề là tìm x để h=gx Đây là một việcrất khó và độ khó của nó được dùng làm độ an toàn cho một vài hệ mã liên quanđến logarit rời rạc
1.3.2 Trường F2r
Đây cũng là một trường hữu hạn phần tử, nhưng có bản chất khác biệt so với loạitrường hữu hạn đã xét đến ở trên
Ta ký hiệu F2[x] là tập các đa thức với hệ số nằm trong trường F2 Có thể liệt kê
ra rằng tập này có 2 đa thức bậc 0 (là 2 hằng số 0, 1), 2 đa thức bậc 1( là x vàx+1), tức là có 4 đa thức bậc không vượt quá 1, và không khó khăn lắm ta có thểnhận ra rằng, với mỗi số tự nhiên n, có cả thảy 2n+1 đa thức với bậc không vượtquá n, với dạng tổng quát là:
Hai đa thức được cộng hoặc nhân với nhau theo quy tắc thông thường, chỉ lưu ý
là các hệ số là những phần tử của trường F2, trong đó 1+1=0
Đa thức gọi là bất khả quy( trên một trường nào đó) nếu nó không thể phân tíchthành tích của các đa thức bậc nhỏ hơn (với các hệ số trên trường đã nói)
Tương tự trên Z, trên F2[x] ta cũng đưa vào phép tính đồng dư theo modulo mộtphần tử (tức là một đa thức) nào đó, và khi Êy F2[x] sẽ được phân tích thành cỏclớp với các đại diện là đa thức bậc thấp hơn đa thức ta đã lấy làm modulo
Trong trường hợp chung, người ta chứng minh được rằng, với mỗi đa thức bấtkhả quy Pd(x) với bậc d, tập hợp F2[x]/Pd(x) là một trường chứa đúng 2d phần tử,
ký hiệu là F2d; mỗi phần tử của nó được đại diện bởi một đa thức với bậc khôngvượt quá d-1
Trang 16Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toànNgười ta cũng chứng minh được rằng tập hợp các phần tử khác 0 của trường F2d,được ký hiệu là F2d*, còng lập thành một nhóm và được sinh bởi một phần tử nào
đó, tức là cũng có cấu trúc tương tự như nhóm Fp đã được xét ở trên Phần tửsinh của nó cũng phải cú cỏc luỹ thừa bậc là ước của (2d-1) khác đơn vị, và sốlượng phần tử sinh là (2d-1)
Trang 17Ch¬ng 2 Các khái niệm cơ bản về mó hoá
- Văn bản (plaintext) là một thông báo gốc cần chuyển, được ghi bằng
hình ảnh, âm thanh, chữ số, chữ viết,… Về sau, khi đưa ra các ví dụ, tathường xem các văn bản được viết bằng chữ viết, hoặc bằng chữ số Tuynhiên, ngày nay mọi tín hiệu đề có thể được số hoá, cho nên việc nghiêncứu trờn cỏc văn bản số không hạn chế các ứng dụng của nó
- Mó hoá (encryption) là việc “ngụy trang” văn bản ( thông tin nói chung)
sang một dạng khác để cho những người “ngoài cuộc” không thể đọcđược, phục vụ cho nhu cầu trao đổi thông tin, dữ liệu và các cuộc giaodịch tài chính, thương mại… Quá trình “nguỵ trang” văn bản gọi là quátrình lập mó, cũn quá trình “khụi phục” lại văn bản được gọi là quá trìnhgiải mã Nguyên tắc chung của mó hoỏ là việc giải mã phải rất dễ dàngvới “người trong cuộc” nhưng rất khó khăn với “người ngoài cuộc” Vănbản gốc (trước khi mó hoỏ) thường được ký hiệu là PT, hay đơn giản là P.Văn bản mó (đó được “nguỵ trang”)thường ký hiệu là CT, hay C
- Hệ mã( Cryptosystem) là một phương pháp nguỵ trang văn bản Nghệ
thuật tao ra và sử dụng các hệ mã là thuật mó hoỏ hay mật mã học(Cryptography)
- Phân tích mã (Cryptanalysis) , hay thỏm mó, là nghệ thuật phỏ cỏc hệ
mã
- Công nghệ mã (cryptology) là việc nghiên cứu tổng hợp cả cryptography
và cryptanalysis
- Lập mã (encrypt) là việc biến văn bản nguồn thành văn bản mã.
- Giải mã (decrypt) là việc đưa văn bản đó mó hoỏ trở về dạng văn bản
nguồn;
- Định mã (encode/decode) là việc định ra phép tương ứng giữa các chữ và
số (việc này không bao giê được xem là bí mật, vì máy tính ngày nay dễdàng tìm ra phép tương ứng trong một thời gian ngắn
- Mó dòng( stream cipher) là việc tiến hành mó hoỏ liên tục trên từng ký
tù ( hay từng bit)
- Mã khối (block cipher) là việc tiến hành mó hoỏ trờn từng khối văn bản (
khi khối văn bản là một cặp 2 ký tự gọi là digraph, còn khi nó là bộ 3 chữthì gọi là trigraph);
Trang 18Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
- Phộp mã chuyển vị (transposition cipher) là việc tráo đổi vị trí giữa các
ký tự (các bit) trong văn bản;
- Phộp mã tích hợp (product cipher) là việc tiến hành xen kẽ 2 phộp mó
chuyển vị và thay thế;
- Chỡa khoỏ mó (cipher key) là bí quyết lập mã và giải mã Nếu như quy
trình mó hỏo được xem như một hàm y=f(x,k), trong đó x là đầu vào (vănbản nguồn), y là đầu ra ( văn bản mã), f là phương pháp ( hay thuật toán)
mó hoỏ, cũn k lf mét tham số điều khiển, thì bí quyết trước đây thườngbao gồm cả phương pháp f, và tham sè k (nếu có) Nhu cầu của thực tiễnhiện nay đã khiến công nghệ mó hoỏ hiện đại phải thay đổi quan điểmnày Phương pháp f là cái thường do không chỉ một người nắm , nênkhông thể giữ được bí mật lâu, và do đó phải được xem là công khai.Tham số điều khiển k, có tác dụng làm thay đổi kết quả mó hoỏ (tuỳ thuộcvào giá trị của nó), được xem là chỡa khoỏ mó Thông thường, nó là mộtxâu bit ( hay mét con số nào đó) mà người ta có thể giữ cho riêng mình
- Hệ mã bí mật (secret key cryptosystem – SKC) hay hệ mã phi đối xứng
(non symmetric cryptosystem) là hệ mã mà trong đó việc lập mã và giải
mã sử dụng 2 chỡa khoỏ mó riêng biệt, từ chỡa khoỏ này không thể tìm rachỡa khoỏ kia một cách dễ dàng; chỡa dựng để lập mã thường được thôngbáo công khai, cũn chỡa dành cho việc giải mã phải luôn giữ bí mật,thường được gọi là chỡa khoỏ riờng
Đối tượng cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh chohai người sử dụng (tạm gọi là A và B) sao cho người thứ ba (O) không thể hiểuđược thông tin được truyền đi trờn kờnh Kờnh này có thể là một đường dây điệnthoại hoặc một mạng máy tính Thông tin mà A muốn gửi cho B có thể là mộtvăn bản tiếng Anh, các dữ liệu bằng số hoặc bất cứ tài liệu nào có cấu trúc tuỳ ýgọi là bản rõ A sẽ mó hoỏ bản rõ bằng một khoỏ đó được xác định trước và gửibản mã kết quả trờn kờnh O có bản mã thu trộm được trờn kờnh song không thểxác định nội dung của bản rõ, nhưng B (người đã biết khoỏ mó) có thể giải mã vàthu được bản rõ
Trang 19§Þnh nghÜa 1.4: Một hệ mật là một bộ 5 (P,C,K,E,D) thoả món cỏc điều
kiện sau:
1) P là một tập hữu hạn các bản rõ có thể
2) C là một tập hữu hạn các bản mã có thể
3) K (không gian khoá) là tập hữu hạn cỏc khoỏ có thể
4) Đối với mỗi k K có một quy tắc mã K có một quy tắc mã ek: P C và một quy tắc giải mã C và một quy tắc giải mãtương ứng dk D Cặp K có một quy tắc mã ek: P C và C và một quy tắc giải mã dk: C P là những hàm thoả mãn: C và một quy tắc giải mã
dk(ek (x)) = x với mọi bản rõ x P. K có một quy tắc mã
Tính chất:
Hàm mó hoỏ và hàm giải mã là một hàm đơn ánh
Chứng minh:
Giả sử e k : P C C không phải là hàm đơn ánh Nghĩa là, x1 x2 sao
cho e k (x1) =e k (x2) suy ra d k (e k (x1))= d k (e k (x2)) tương đương x1 = x2 vô lý
Nhận xét:
- NÕu | P |=| C | thì hàm mó hoỏ là một song ánh
- Nếu P=C thỡ phộp mó hoỏ là một phộp hoán vị.
Trang 20Xõy dựng chương trỡnh bảo vệ dữ liệu trờn mụi trường khụng an toàn
Chơng 3 Cỏc hệ mú hoỏ cổ điển
Xột vành Zm là một vành số nguyờn hữu hạn m phần tử được trang bị hai phộptoỏn + và * trờn modulo m
Hệ mó dịch vũng được xỏc định trờn Zm và mụ tả trong bảng sau:
Giả sử P = C = K = Zm với 0 k m-1 , định nghĩa:
eK(x) = x +K mod m
và dK(x) = y -K mod m
(x,y Z26)
Hình 1.1 Thuật toỏn thể hiện mó dịch vũng
Chú ý là một hệ mật dựng được trong thực tế thỡ phải thoả món rất nhiều tớnhchất mà hai trong số đú thể hiện nh sau:
+ Mỗi hàm mú hoỏ eK và mỗi hàm giải mó dK phải cú khả năng tớnhtoỏn được một cỏch hiệu quả
+ Đối phương dựa trờn xừu bản mó phải khụng cú khả năng xỏc địnhkhoỏ K đú dựng hoặc khụng cú khả năng xỏc định được xõu bản rừ x
Hệ mó dịch vũng cú khụng gian khoỏ K với độ lớn là m vỡ vậy, bằng phương
phỏp thử giải mó với nhiều nhất m khoỏ khỏc nhau ta cú sẽ thu được bản rừ Nhvậy, hệ mó dịch vũng khụng đỏp ứng được yờu cầu nờu trờn
Mó thay thế là một hệ mật nổi tiếng, tồn tại hàng trăm năm Trờn thực tế mó
Trang 21trong mó thay thế, thớch hợp hơn là xem phộp mú và giải mó nh cỏc hoỏn vị củacỏc kớ tự.
Mó thay thế được mụ tả trong hỡnh sau:
Hình 1.2 Thuật toỏn thể hiện mó thay thế
Khoỏ của mó thay thế được lấy trong tập hoỏn vị của 26 Vậy, số khoỏ của
mó thay thế là : 26! > 4 x 1026 dẫn đến việc vột cạn khoỏ của mó thay thế là mộtđiều hết sức khú khăn Tuy nhiờn, với phương phỏp tấn cụng theo xỏc suất móthay thế vẫn khụng đủ đảm bảo an toàn
Giống nh mó dịch vũng mú Affine cũng là trường hợp đặc biệt của mó thay thế.Hàm giải mó của hệ mó Affine nh sau:
e(x) = ax + b mod 26Nếu a= 1 hệ mó Anffine chớnh là hệ mó dịch vũng
Để cú thể giải mó thành cụng cỏc hệ số a,b của hệ Affine phải thoả món yờucầu sau: y Z26 luụn x để ax+b y (mod 26)
Cho P =C = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, ,25
Với mỗi phép hoán vị K , ta định nghĩa:
e(x) = (x)và
d(y) = -1(y)trong đó -1 là hoán vị ngợc của
Trang 22Xõy dựng chương trỡnh bảo vệ dữ liệu trờn mụi trường khụng an toàntương đương: ax y-b (mod 26).
Do y-b Z26 nờn đặt y-b=Y ta cú đồng nhất thức:
ax Y (mod 26)
Xột x là biến thỡ phương trỡnh đồng dư trờn cỳ nghiệm duy nhất x phụ thuộc
Y khi và chỉ khi gcd(a,26) = 1
mó Vigenốre nổi tiếng Mật mó này lấy tờn của Blaise de Vigenốre sống vào thế
kỷ XVI
Cho m là một số nguyên dơng cố định nào đó Định nghĩa P = C = K = (Z26)m Vớikhoá K = (k1, k2, ,km) ta xác định :
eK(x1, x2, ,xm) = (x1+k1, x2+k2, , xm+km)và
dK(y1, y2, ,ym) = (y1-k1, y2-k2, , ym-km)trong đó tất cả các phép toán đợc thực hiện trong Z26
Trang 23Ta thấy rằng các từ khoá có thể với số độ dài m trong mật mã Vigenốre là
26m, bởi vậy, thậm chí với các giá trị m khá nhỏ, phương pháp tìm kiếm vét cạncũng yêu cầu thời gian khá lớn Ví dụ, nếu m = 5 thì không gian khoá cũng cókích thước lớn hơn 1,1 10 10 7 Lượng khoá này đã đủ lớn để ngăn ngõa việc tỡmkhoỏ bằng tay
Trong hệ mật Vigenốre cú từ khoá độ dài m, mỗi ký tự có thể được ánh xạvào trong m ký tự có thể có (giả sử rằng từ khoá chứa m ký tự phân biệt) Một hệmật nh vậy được gọi là hệ mật thay thế đa biểu (polyalphabetic) Nói chung, việcthỏm mó hệ thay thế đa biểu sẽ khó khăn hơn so việc thỏm mó hệ đơn biểu
Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác được gọi là mật
mã Hill Mật mã này do Lester S.Hill đưa ra năm 1929 Giả sử m là một số
nguyên dương, đặt P = C = (Z26)m í tưởng ở đây là lấy m tổ hợp tuyến tính
của m ký tù trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử củabản mã
Nói chung, có thể lấy một ma trận K kích thước m m làm khoá Nếu một 10phần tử ở hàng i và cột j của K là ki,,j thì có thể viết K = (ki,,j), với x = (x1,x2, ,xm) K có một quy tắc mã P và K K có một quy tắc mã K , ta tính y = eK(x) = (y1, y2, ,ym) như sau:
Trang 24Xõy dựng chương trỡnh bảo vệ dữ liệu trờn mụi trường khụng an toàn
Nh vậy, khụng gian khoỏ chớnh là cỏc ma trận cấp m cú ma trận nghịch đảo.Sau đõy là mụ tả của hệ mật Hill:
Trong cỏc hệ mật nghiờn cứu ở trờn, cỏc phần tử liờn tiếp của bản rừ đều được
mú hoỏ bằng cựng một khoỏ K Tức xõu bản mó y nhạn được cú dạng:
y = y1y2 = eK(x1) eK(x2 )
Cho m là một số nguyên dơng có định Cho P = C = (Z26 )m và cho
K = { các ma trận khả nghịch cấp m m trên Z26}Với một khoá K K ta xác định
eK(x) = xK
Tất cả các phép toán đợc thực hiện trong Z26
Trang 25Các hệ mật thuộc dạng này thường được gọi là cỏc mó khối khoá Một quanđiểm sử dụng khác là mật mã dũng khoỏ Ý tưởng cơ bản ở đây là tạo ra mộtdũng khoỏ z = z1z2 và dựng nú để mó hoỏ một xâu bản rõ x = x1x2 theoquy tắc:
y = y1y2 = ez1(x1) ez2(x1)
Mó dũng khoỏ hoạt động nh sau Giả sử K K có một quy tắc mã K là khoá và x = x1x2 là xâu bản
rõ Hàm fi được dùng để tạo zi (zi là phần tử thứ i của dũng khoỏ) trong đó fi làmột hàm của khoá K và i-1 là ký tự đầu tiên của bản rõ:
zi = fi (K, x1 , , xi -1 )Phần tử zi của dũng khoỏ được dùng để mã xi tạo ra yi = eiz(xi) Bởi vậy, để móhoỏ xõu bản rõ x1 x2 ta phải tính liên tiếp: z1, y1, z2 , y2
Việc giải mã xâu bản mã y1y2 có thể được thực hiện bằng cách tính liên tiếp:z1, x1, z2 , x2
Sau đây là định nghĩa dưới dạng toán học:
§Þnh nghÜa 1.5: Mật mã dũng khoỏ là một bộ (P,C,K,L,F,E,D) thoả mãn
dược các điều kiện sau:
1) P là một tập hữu hạn các bản rõ có thể
2) C là tập hữu hạn các bản mã có thể
3) K là tập hữu hạn cỏc khoỏ có thể ( không gian khoá)
4) L là tập hữu hạn các bộ chữ của dũng khoỏ
5) F = (f1 f2 ) là bộ tạo dũng khoỏ Với i 1 1
Trang 26Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn6) fi : K P 10 i -1 L C và một quy tắc giải mã
7) Với mỗi z L có một quy tắc mã K có một quy tắc mã ez E và mét quy tắc giải mã tương K có một quy tắc mã ứng dz D K có một quy tắc mã ez : P C và C và một quy tắc giải mã dz : C P là các hàm thoả mãn C và một quy tắc giải mã dz(ez(x))= x vớimọi bản rõ x P. K có một quy tắc mã
Ta có thể coi mã khối khoá là một trường hợp đặc biệt của mó dũng khoỏ trong
đó dựng khoỏ không đổi: Zi = K với mọi i 1. 1
Một hệ mó dũng khoỏ được gọi là tuần hoàn với chu kỳ d nếu zi+d= zi với sốnguyên i 1 Mó Vigenốre với độ dài từ khoá m có thể coi là mó dũng khoỏ tuần 1hoàn với chu kỳ m Trong trường hợp này, khoá là K = (k1, km ) Bản thân K
sẽ tạo m phần tử đầu tiên của dũng khoỏ: zi = ki, 1 i m Sau đó dũng khoỏ sẽ j m) sao cho y j m) sao cho y
j
j i
j z c
trong đó c0, , cm-1 K có một quy tắc mã Z2 là các hằng số cho trước
Trang 27c0, , cm-1 thì một véc tơ khởi đầu bất kỡ khỏc (k1, , km) sẽ tạo nên mộtdũng khoỏ cú chu kỳ 2m -1 Bởi vậy một khoá ngắn sẽ tạo nên một dũng khoỏ cúchu kỳ rất lớn.
Kết luận:
Các hệ mó hoỏ cổ điển không thể đáp ứng được nhu cầu bảo mật dữ liệutrờn cỏc phương tiện công nghệ thông tin hiện nay, nhưng các tư tưởng củachúng vẫn còn nguyên giá trị Các hệ mó hoỏ mạnh nhất bõy giờ vẫn luụn cúbóng dáng của các hệ mó hoỏ cổ điển kèm theo Các hệ này được chia làm haidòng chính là các hệ mó hoỏ khoỏ đối xứng và các hệ mó hoỏ khoỏ công khai
Trang 28Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Ch¬ng 4 Các hệ mã hóa hiện đại
4.1.1 Giới thiệu chung
Thuật toán mó hoỏ đối xứng là thuật toán cú khoỏ dựng để giải mã có thểtính toán được từ khoỏ dựng để mó hoỏ Trong nhiều hệ thống khoỏ dựng để móhoỏ và khoỏ dựng để giải mã là giống nhau Những thuật toán mó hoỏ này đượcgọi là thuật toán mó hoỏ bí mật, khoá đơn, hay một khoá (secret-key algorithms,single-key algorithms, one-key algorithms) Thuật toán mó hoỏ này cần ngườigửi và người nhận thống nhất một khoá trước khi trao đổi thông tin Khoá nàycần phải được cả hai giữ bí mật
Sự bảo mật của một thuật toán đối xứng dựa trờn khoỏ Tiết lộ khoỏ có nghĩarằng bất cứ ai biết khoá đều có thể mó hoỏ và giải mã thông tin trên hệ thốngnày
Nhúm mó hoỏ và giải mã bằng thuật toán đối xứng được thể hiện bằng côngthức:
Ek(P)=C
Dk(C)=P
Dk(Ek(P))=P
Thuật toán đối xứng lại được chia làm hai loại Một loại thực hiện trên bản
rõ từng bít một, gọi là thuật toán mó hoỏ dũng (stream algorithms, streamciphers) Còn một loại thực hiện trên bản rõ theo từng nhúm bớt một, và thuật
toán này được gọi là thuật toán mó hoỏ khối (block algorithms, block ciphers).
Những thuật toán mó hoá khối thường được thực hiện trên máy tính, thôngthường cỡ của một khối là 64 bít - đây là khối đủ lớn để ngăn ngõa sự phân tíchcủa các nhà thỏm mó và cũng đủ nhỏ để nó làm việc một cách hiệu quả Trước
Trang 29tù Ta có thể xem nh là thuật toán mó hoỏ dũng thực hiện trên một dũng cỏc ký
tự còn thuật toán mó hoỏ khối thực hiện trờn cỏc khối 8 bít
Hai thuật toán mó hoỏ khúa đỗi xứng nổi tiếng là DES và AES Cho đến thờiđiểm này DES với số lượng khoá tối đa là 256 đã không còn được coi là an toàn.Giải pháp thay thế cho DES chính là AES Sau đây là các trình bày về AES
4.1.2 AES
4.1.2.1 Quá trình hình thành
Trước nguy cơ sụp đổ của DES trước các cuộc tấn công của các siêu máy tínhđương thời, ngày 2/1/1997 Viện tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ(NIST) đã chính thức đưa ra đề nghị cộng đồng tham gia vào việc xây dựng mộtchuẩn mó hoỏ nâng cao( Advanced Encryption Standard-AES) Các tiêu chí củaviệc xây dựng này có một số điểm đáng chú ý nh sau:
+ AES được xác lập công khai
+ AES là hệ mã khối đối xứng
+ AES được thiết kế sao cho có độ dài khoá có thể mở rộng theo yêu cầu.+ AES có thể triển khai được trên cả phần cứng và phần mềm
+ AES cần phải là sản phẩm miễn phí hoặc được cho dưới các điều kiệnphù hợp với chính sách về bản quyền của Viện tiêu chuẩn quốc gia HoaKỳ
+ Các thuật toán thoả món cỏc điều kiện trên được xem xét trên cơ sở cácphương diện sau:
Tính bảo mật;
Tính hiệu quả về mặt tính toán;
Nhu cầu đòi hỏi về bộ nhớ;
Tính đơn giản;
Tính mềm dẻo, linh động;
Các yêu cầu về phương diện bản quyền
Trang 30Xõy dựng chương trỡnh bảo vệ dữ liệu trờn mụi trường khụng an toànSau một thời gian xem xột và thảo luận thờm, thỏng 9/1997 NIST chớnhthức đưa ra lời kờu gọi hưởng ứng cuộc thi xõy dựng thuật toỏn cho AES.
Trong vũng I, từ thỏng 8/98 đến 4/99, sau khi loại bỏ cỏc phương ỏn khụngthoả mún cỏc tiờu chớ đề ra, người ta chớnh thức đưa vào xem xột 15 phương ỏn(gửi đến từ khắp nơi trờn thế giới: Đức, Bỉ, ỏo, Phỏp, Nhật…)
Trong vũng 2, từ 8/1999 đến 5/2000, từ 15 phương ỏn xem xột người ta lọc
ra được 5 phương ỏn để đưa vào vũng chung kết, đú là:
Trong vũng chung kết, diễn ra trong 90 ngày từ đầu thỏng 3 đến cuối thỏng5/2001, với sự xem xột tỷ mỷ cả 5 thuật toỏn từ mọi phương diện, người ta đóchọn Rijndael làm thuật toỏn cho AES NIST tổng hợp cỏc thụng tin về Rijndael
và tiếp tục đưa ra cho cộng đồng xem xột và bỡnh luận lần cuối, trước khi đến kếtluận cuối cựng vào cuối mựa hố năm 2001
Thuật toỏn Rijdael mang đậm màu sắc toỏn học Trong thuật toỏn này,ngoài cỏc tớnh toỏn đồng dư và cỏc phộp tớnh bit (thường gặp trong cỏc thuật toỏnkhỏc), người ta đó thiết lập những phộp toỏn khỏ đặc biệt trong trường hữu hạn
và trong vành đa thức trờn trường hữu hạn
Tên thuật toán Những ngời sáng chế
RC6 RSA Laboratories (đại diện bởi Burt Kaliski)
Serpent Ross Anderson, Eli Biham, Lars Knudsen
Towfish Burce Schneier, John Kelsey, Doug Whiting,
David Wagner, Chirs Hall, Niels Ferguson
Trang 31AES sử dụng khối đầu vào, khối đầu ra và khối trung gian State có chiềudài 128 bit Khoá được sử dụng có chiều dài 128, 192 hoặc 256 bit tuỳ chọn.Tương ứng với khoá ta có 3 phiên bản AES là AES-128, AES-192, AES-256 Sau đây là các thông số tương ứng với 3 phiên bản AES:
Chiều dài khoá Nk
(Đơn vị 32 bit)
Cỡ khối Nb(Đơn vị 32 bit)
Số vòng Nr
H×nh 1.5 Bảng mô tả các thông số của 3 phiên bản AES
Các thông số ở bảng này sẽ được mô tả kỹ hơn trong các mục tiếp theo
Vì thuật toán Rijndael có những phương pháp tiếp cận tương đối mới nên nhữngkiến thức cơ sở hầu nh khụng đáp ứng được do đó trong phần này cơ sở toán họccủa thuật toán được đề cập tới trong phần công cụ chuẩn bị
Trang 32Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàntrương các byte) như tập các hệ số của một đa thức (cú cỏc hệ số là byte và cóbậc kém số chiều của không gian vộctơ một đơn vị) Nh vậy, các phép toán trờncỏc từ có thể được định nghĩa thông qua các phép toán trờn cỏc đa thức (với các
hệ số là byte)
4.1.2.3 Trường các byte
Ta biết rằng mỗi byte (chứa 8 bit) biểu diễn một số trong khoảng từ 0 đến
255 Tên của byte được đặt theo giá trị mà nó biểu diễn: có thể được viết trong hệ
cơ số 16 với dấu nháy đơn ‘…’, hoặc trong hệ nhị phân( cơ số 2) với dấu nhỏykép ”…”
Mỗi byte b chứa các bit “b7 b6 b5 b4 b3 b2 b1 b0” được biểu diễn nh mét đa thức bậckhông quá 7 với các hệ số trong trường {0, 1}, xác định nh sau:
b7x7 +b6x6 +b5x5 +b4x4 +b3x3 +b2x2 +b1x +b0.Trong trường hợp này ta cũng nói b là byte biểu diễn các hệ số của đa thức nêutrên
4.1.2.4 Phép cộng
Trong phép biểu diễn dạng đa thức, tổng của 2 phần tử ( byte) sẽ là một đathức bằng tổng của 2 đa thức biểu diễn các phần tử đó, trong đó các hệ số đượccộng theo modulo 2 (tức là theo nguyên tắc 1+1=0)
Nh vậy, có thể thấy phép cộng trong trường hợp này chính là phép loại bit ở mứcbyte (8 bit) cho nên sẽ được ký hiệu là ).)
Dễ nhận thấy phép cộng trên thoả mãn đầy đủ các yêu cầu đối với một nhómAbel (với phần tử trung hoà là ‘00’, và mọi phần tử đều là ngược của chớnh nó
Nh vậy phép trừ cũng chính là phép cộng
4.1.2.5 Phép nhân
Trang 33Một cách tự nhiên là định nghĩa tích của 2 byte thông qua tích của hai đathức biểu diễn các byte đó Tuy nhiên, tích của 2 đa thức bậc nhỏ hơn 7 có khảnăng có bậc lớn hơn 7, cho nên để có được một đa thức bậc không quá 7 người tatiến hành rút gọn theo modulo một đa thức bậc 8 Chớnh vỡ lý do này, để địnhnghĩa phép nhân trên tập các byte, người ta lấy một đa thức bất khả quy bậc 8 sauđây:
Tóm lại, tập hợp 256 phần tử byte với phép cộng là và phép nhân định nghĩa ở).trên cú cựng cấu trúc của một trường Đây cũng chính là trường Galois GF(28)
Để tiến hành nhân nhanh trong trường các byte ta để ý như sau:
Bản thân phép nhân 2 byte nêu trên không được ứng với một phép toán đơn giảnnào ở mức byte Nhưng một tính chất đáng lưu ý của phép nhân này là nó có thểquy về các phép nhân đơn giản hơn, vì phép nhân với một đa thức có thể xem làtổng của vài phép nhân với biến x Như vậy, phép nhân ( với một phần tử bất kỳ)
sẽ trở nên dễ dàng nếu như phép nhân với x được thực thi dễ dàng
Chó ý:
Đa thức x biểu diễn một phần tử byte ‘02’ ( ”00000010”), cho nên phép nhân với
x sẽ được triển khai tương đối thuận lợi
4.1.2.6 Nhân với x
Trang 34Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toànVới byte b= “b7 b6 b5 b4 b3 b2 b1 b0”, ta có
0, 7 b khi xb(x),
Khi b7=0, biểu thức xb(x) là một đa thức bậc không quá 7 và byte biểu diễn hệ sốcủa nó thu được từ byte b bằng cách cho các bit dịch trái (shift left) Khi b7 =1 thìxb(x) là một đa thức bậc 8 và do m(x) cũng là một đa thức bậc 8 nên ta có:
xb(x)-m(x)=(xb(x)-x8)-(m(x)-x8),Nhân với x là một hàm cơ bản trong thuật toán được ký hiệu là xtime và chỉ tốn 4phép loại bit trong các phần cứng có tính “chuyờn nghiệp”
4.1.2.7 Đa thức với hệ số byte ( trong trường GF(28))
Ta biết rằng trên một trường hữu hạn bất kỳ có thể xây dựng các không gianvecto, hoặc các vành đa thức, và điều này không là ngoại lệ đối với trường cácbyte, GF(28), mà ta đã thiết lập ở trên Luôn tồn tại mối quan hệ tương ứng giữacỏc vộctơ và đa thức xác định trên cùng một trường, trong đó các toạ độ của mộtvộctơ k chiều được ứng với các hệ số của một đa thức bậc không vượt quá k-1.Sau này ta sẽ xem xét các bộ 4 byte và các đa thức ( hay cỏc vộctơ tương ứng)được thực hiện theo thông lệ quen biết Phép cộng này được quy về phép cộng ()).các byte trong trường GF(28)
Phép nhân hai đa thức có phần phức tạp hơn, do 2 yếu tố:
Các hệ số của đa thức tích phải được tính theo quy tắc nhân ( ) và cộng () các) và cộng () các ) các
hệ số trong trường GF(28)
Trang 35Đa thức tích phải có bậc nhỏ hơn 4 cho nên sau các tính toán “thụng thường”phải tiến hành rút gọn theo modulo một đa thức tối giản bậc 4 nào đó Trongthuật toán Rijndael đa thức này là M(x)=x4 + 1.
Xét hai đa thức với hệ số byte:
Trang 36Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
a a a a
a a a a
a a a a
3
1
0 1 2 3
3 0 1 2
2 3 0 1
1 2 3 0
b b d
Vài nét đặc trưng về thiết kế
Ba tiêu chí được quán triệt trong quá trình thiết kế là:
+ Có khả năng chống được các phương pháp thám mó đã biết;
+ Chương trình gọn, tốc độ nhanh và đa nền( platforms);
+ Thiết kế sáng sủa;
Trong hầu hết các hệ mã đối xứng, phép biến đổi các dữ liệu tại mỗi vòngthường có cấu trúc feistel, nghĩa là ở đó một phần các bit ( của trạng thái trunggian) được chuyển sang một vị trí mới mà không thay đổi gì Trong Rijndael thìđiều này không xảy ra Thay vào đó, tại mỗi vòng, sự biến đổi dữ liệu được cấuthành từ 3 phép biến đổi khả nghịch, gọi là các tầng( layer), tuy độc lập với nhaunhưng tương tù nh nhau Mỗi tầng có hàm của riêng mình Trong đó:
Trang 37Tầng trộn tuyến tính (linear mixing) mang lại tính khuếch tán cao độ qua cỏcvũng (nghĩa là sự thay đổi ở một vị trí sẽ kéo theo sù thay đổi ở nhiều vị trí trongcỏc vũng tiếp theo).
Tầng phi tuyến sử dụng cỏc phộp thay thế song song (thông qua các S-box) manglại các tính chất phi tuyến tối ưu
Tầng cộng với khoá thực hiện phép loại bit giữa trạng thái dữ liệu trung gian vớikhoá của vòng
Trước khi tiến hành vòng đầu tiên, tầng cộng với khoá được sử dụng để chống lạicác khả năng phát hiện các tầng khác (thực hiện trước hoặc sau tầng này)
Tầng trộn tuyến tính của vòng cuối cùng được thiết kế khác với cỏc vũng khỏcchỉ để nhằm mục đích làm cho tiến trình mó hoỏ và giải mã được giống nhau hơn( còng như việc vỏ đi phép “ tráo đổi các vế dữ liệu” tại vòng cuối cùng trongDES) Có thể chứng minh được rằng điều này không làm tăng hoặc giảm độ antoàn của thuật toán Một điều đáng lưu ý là độ dài khoá và độ dài khối trongRijndael có thể thay đổi ( hoàn toàn độc lập với nhau) trong tập các giá trị 128,
192 hoặc 256 bit
4.1.2.9 Trạng thái, khoỏ mó và số lượng vòng
Trạng thái ( state) là kết quả mó hoỏ trung gian ( chưa phải là văn bản mó) Núđược mô tả bằng một mảng chữ nhật ( với phần tử là các byte), có 4 dòng và ssốlượng cột thay đổi theo độ dài khối sử dụng( bằng độ dài khối chia cho 32) Trênthực tế, mỗi phần tử của mảng là 1 byte ( 8 bit), và mỗi cột của mảng là mộtvectơ 4- byte ( hay cũng chính là một từ theo cách gọi ở trên) Người ta ký hiệu
số lượng cột của mảng trạng thái Nb, và nh vậy 32 Nb chính là độ dài khối
Khoỏ mã ( cipher key) cũng được mô tả tương tự bởi một mảng chữ nhật với 4dòng và số lượng cột bằng độ dài khoá chia cho 32, ký hiệu là Nk (hay nói cỏch:khoỏ cú độ dài là 32Nk)
Trang 38Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
Do độ dài khối là độc lập với độ dài khóa cho nên Nb và Nk nói chung là khácnhau
Trong một số trường hợp người ta cũng biểu diễn các khối state dưới dạng cácmảng 1 chiều, trong đó mỗi phàn tử của mảng không phải là một byte mà là một
từ ( tức là một vectơ 4 – byte, và cũng là một cột trong mảng chữ nhậtt nêu trên)
Để thuận tiện cho việc đánh chỉ số, các byte trong mảng một chiều được đánhliên tiếp nhau (từ 0 đến (4 x Nb -1) trong mảng trạng thái, và từ 0 đến ( 4x Nk -1)trong mảng khoỏ mó ), để không phải ding tới 2 chỉ số
Đầu vào (input) và đầu ra (output) tại các “ cửa giao tiếp” của thuật toán sẽ lànhững mảng một chiều tương ứng với khối, với các byte được đánh thứ tự từ 0đến (4x Nb-1) Các khối này sẽ có độ dài là 16, 24 hay 32 byte ( tuỳ theo việcthuộc vào việc lấy độ dài khối là 128, 192 hay 256 bit), và chỉ số cho các phần tửđược đánh, tương ứng, trờn cỏc dải 0….15, 0… 23 hay 0…… 31
Khoỏ mã cũng được xem cột như các mảng một chiều với phần tử là các byte ( 8bit) được đánh chỉ số từ 0 đến ( 4x Nk -1), và do đó cũng có độ dài là 16, 24, hay
32 byte, cũn cỏc phần tử của mảng cũng được đánh chỉ số, tương ứng, trờn cỏcdải 0…15, 0…23 hay 0…31
Từng khối dữ liệu đầu vào được xếp thành mảng chữ nhật theo thứ tự xếp đầytừng cột ( từ trên xuống dưới và từ trái qua phải) nghĩa là được ánh xạ lần lượtvào các vị trí:
Trang 39Sau quá trình mó hoỏ thỡ trong khối dữ liệu đầu ra cũng được lấy ra từ mảngtheo thể thức tương ứng
Nh vậy, nếu một byte có chỉ số trong mảng một chiều là n và chỉ số trong mảngchữ nhật ( 2 chiều) là ( i, j ) thỡ cỏc chỉ số này sẽ thoả mãn quan hệ sau đây:n= i+ 4.j ; i = n mod 4 ; j =| n / 4 |
Rõ ràng, chỉ số i cũng cớnh là chỉ số của byte trong từ ( vectơ 4-byte), và j cũngchính là chỉ số của từ trong lòng một khối
Số lượng vòng trong thuật toán Rijndael, ký hiệu là Nr, được xác định trong mốitương quan khăng khít với độ dài khối và độ dài khoá, tức là với các giá trị Nb và
Nk xem hình phía trên
4.1.2.10 Các phép biến đổi trong một vòng
Trước hết ta đưa ra 4 phép biến đổi cơ bản và sau đó, trên cơ sở các phép biếnđổi này, ta trình bày thuật toán biến đổi của mỗi vòng
4.1.2.11 Phép thế byte ( subbyte transformation)
Đây là phép biến đổi phi tuyến được thực hiện một cách độc lập trên trong bytecủa trạng thái Hộp thay thế ( hay còn gọi là S- box) là “ khả nghịch “ và đượcthiết lập trên cơ sở tích của 2 phép toán sau:
Phép lấy byte ngược thay thế mỗi byte bằng nghịch đảo của nó (theo phép nhântrong trường các byte GF (28)
Phép biến đổi affine, theo đó byte ‘x’=” x0 x1 x2 x3 x4 x5 x6 x7” ( kết quả có đượcsau phép lấy byte ngược đó nờu ở trên), được chuyển thành byte ‘y’=” y0 y1 y2 y3
y4 y5 y6 y7” xác định theo công thức sau:
Trang 40Xây dùng chương trình bảo vệ dữ liệu trên môi trường không an toàn
y y y y
1 1
1 0
0 0
0 1
1 1
1 1
0 0
0 0
1 1
1 1
1 0
0 0
0 1
1 1
1 1
1 0
0 0
1 1
1 1
1 1
0 0
0 1
1 1
1 1
1 0
0 0
1 1
1 1
1 1
0 0
0 1
x x x x
Nh vậy, phép thế byte biến từng byte aij ( trong mảng trạng thái chữ nhật) thành
trong byte bij ( trong mảng trạng thái mới, cũng hình chữ nhật ) một cỏch độc lập
với nhau Xét về mặt bản chất, nó hoạt động giống nh mét hộp thay thế ( S- box)
thường gặp trong một số hệ mã đối xứng quen biết
Do phép biến đổi affine với ma trận như trên là khả nghịch, cho nên phép thay
thế byte cũng là khả nghịch( phép toán ngược của nó cũng là tích cảu một phép
biến đổi affine với mà trận ngược một phép lấy byte nghịch đảo theo phép nhân
trng trường các byte GF (28)
Phép thế byte có thể được viết thành một hàm ( lệnh) với tên sau đây:
SubBytes (state) 4.1.2.12 Phép dịch hàng( ShiftRows Transformation)
Trong phép biến đổi này, các hàng trong mảng trạng thái được dịch xoay vòng
sang phớa trỏi, nhưng số lượng vị trí dịch chuyển của các hàng là không giống
nhau Hàng 0 ( trên cùng trong mảng ) là đứng yên khong dịch chuyển Các hàng
thứ 1 thứ 2, thứ 3 được dịch vòng sang phớa trỏi theo các số lượng byte tương
ứng là C1, C2, C3 xác định trong mối tương quan với độ dài khối theo bảng sau