Trong đó:
Mã hóa khóa bí mật, SKC: Đối với các thuật tốn loại này, cả hai phía mã và giải mã
mật sử dụng chung một khóa duy nhất. Các thuật tốn tiêu biểu là: DES, 3DES [18], RC5 [47], BlowFish [48], AES [17].
Mã hóa khóa cơng khai, PKC: Đối với các thuật tốn loại này, hai phía mã và giải mã
mật sử dụng hai khóa khác nhau – một khóa cơng khai (Public key) và một khóa bí mật gọi là khóa riêng (Private key). Ứng dụng cho mục đích bảo mật thì dùng khóa cơng khai để mã hóa và khóa riêng để giải mã. Ngược lại, ứng dụng cho mục đích xác thực thì d ng khóa riêng để mã hóa và khóa cơng khai để giải mã, xem Hình 1.5. Các thuật toán tiêu biểu là: RSA [49], DSA [19].
Hàm băm bảo mật: Đây là thuật tốn khơng d ng khóa, nó sử dụng các hàm tốn học
để biến đổi thông tin ban đầu thành một mã băm có chiều dài cố định. Hàm băm là thuật tốn một chiều, tức là khơng có thuật tốn ngược để phục hồi thông tin gốc từ mã băm của nó. Ứng dụng của hàm băm là d ng trong việc kiểm tra tính tồn vẹn và tính xác thực của bản tin. Các thuật toán tiêu biểu là: MD5 [50], SHA [16].
Câu hỏi đặt ra là tại sao lại có rất nhiều loại khác nhau của các cơ chế của các thuật toán mã mật? Tại sao chúng ta không làm tất cả mọi thứ chúng ta cần chỉ với một thuật tốn mà thơi?
Câu trả lời là mỗi cơ chế mã được tối ưu hóa cho một số ứng dụng cụ thể. Vì khơng phải ứng dụng nào cũng cần thực hiện đầy đủ các cơ chế mã trên. Ví dụ, Mã khóa bí mật
cung cấp tính riêng tư và tính bí mật. Vì vậy nó là lý tưởng để mã hóa thơng tin. Người gửi
có thể tạo ra một khóa phiên cho mỗi bản tin để mã hóa bản tin đó. Người nhận cần khóa phiên tương tự để giải mã bản tin này. Khóa này được giữ bí mật nên mọi thứ xem như “hồn tồn” bí mật. Mặt khác, để người nhận có được khóa phiên để giải mã bản tin hay nói cách khác để đảm bảo tính khả dụng của bản tin, việc trao đổi khóa bí mật giữa các bên theo một phương thức nào đó nhưng nhất thiết là phải xảy ra. Trong truyền thơng máy tính,
mật mã khóa cơng khai được áp dụng để trao đổi an tồn khóa bí mật này. Mã hóa khóa
cơng khai cũng có thể được sử dụng cho tính khơng thối thác và tính xác thực người dùng (Nếu người nhận giải mã được bản tin đã mã hóa bằng khóa cơng khai của người gửi, thì
12 có thể khẳng định rằng bản tin này là của chính người gửi vì chỉ có người gửi này mới có khóa riêng để mã hóa mật bản tin đó). Hơn nữa, về mặt lý thuyết, mật mã khóa cơng khai cũng có thể được sử dụng để bảo mật dữ liệu, mặc d điều này hiếm khi được thực hiện bởi vì mật mã khóa bí mật hoạt động nhanh hơn nhiều với những dữ liệu lớn và rất lớn
[51], [52]. Cuối cùng, hàm băm rất phù hợp để đảm bảo tính tồn vẹn dữ liệu. Vì bất kỳ sự
thay đổi nào về nội dung của bản tin sẽ dẫn đến giá trị băm khác nhau. Cho đến nay, các
hàm băm MD5 và SHA-2 vẫn đảm bảo chắc chắn tính tồn vẹn dữ liệu và tính xác thực ở mức độ rất cao.
1.1.3.2. Độ an tồn của các thuật tốn mã mật
Độ an tồn của thuật tốn bảo mật được xem xét trên hai khía cạnh: Độ phức tạp của thuật tốn và độ dài của khóa mã.
Độ phức tạp của thuật tốn sẽ được tính bằng số các phép tính cơ sở (đọc, ghi, so
sánh) mà máy tính thực hiện khi tiến hành chạy thuật tốn. Ngồi ra, số lượng phép tính phụ thuộc vào kích thước dữ liệu đầu vào của thuật toán. Như vậy, độ phức tạp của thuật tốn là một hàm theo độ lớn của kích thước dữ liệu đầu vào của nó.
Độ phức tạp của thuật toán được thiết kế nhằm mục đích ngăn chặn các dạng tấn cơng
phân tích mã (cryptanalysis). Phương pháp phân tích mã là phương pháp dựa vào bản
chất của thuật toán mã mật, c ng với một đoạn thơng tin gốc hoặc thơng tin đã mã hóa có được, kẻ tấn cơng phân tích nó để tìm ra tồn bộ thơng tin gốc hoặc tìm ra khóa, rồi sau đó thực hiện việc giải mã tồn bộ thơng tin đã mã hóa.
Độ dài của khóa mã là độ dài của khóa chính của thuật tốn mã mật. Khóa càng dài
thì độ an tồn của thuật tốn càng cao. Có nghĩa là với một khóa dài thì thời gian cần thiết để tìm khóa càng lớn, do vậy khả năng phát hiện khóa ít có khả năng xảy ra. Độ dài khóa được thiết kế nhằm mục đích tăng thời gian và chi phí đối với các phương pháp tấn cơng tìm khóa như dị tìm từ điển hoặc dị tìm tuần tự đến một giới hạn khơng thể thực hiện được. Đặc biệt, phương pháp thử tuần tự (brute-force) là phương pháp thử tất cả các khóa có thể, kẻ tấn cơng có khả năng tìm được khóa đúng và do đó giải mã được thơng tin mã hóa. Phương pháp này thường được hỗ trợ bởi máy tính và phần mềm chuyên dụng. Thông thường, để tìm được khóa đúng thì cần phải thử một số lượng khóa bằng khoảng một nửa số khóa có thể có của hệ thống mã. Ví dụ, nếu khố có chiều dài là k bit thì sẽ có tất cả 2k khố khác nhau. Để có thể tìm được khố đúng thì kẻ tấn cơng phải thử trung bình khoảng 2 / 2k
lần.
Để thấy được giá trị của độ dài khóa mã trong việc ngăn ngừa các tấn cơng dị khóa, từ đó bảo vệ được thông tin bảo mật, chúng ta xem xét số liệu trong hai bảng Bảng 1.1 và Bảng 1.2 sau đây.
13
Bảng 1.1 Chiều dài khóa tối thiểu cho thuật tốn mã mật [53].
Kẻ tấn công Ngân sách Công cụ
Thời gian và chi phí trên mỗi
khóa phục hồi được Độ dài khóa cần thiết sau năm 1995 40 bit 56 bit
Hacker thường
Nhỏ Máy tính 1 tuần Không khả thi 45 bit 400$ FPGA 5 giờ (0,08$) 38 years (5.000$) 50 bit Công ty nhỏ 10.000$ FPGA 12 phút (0,08$) 18 tháng (5.000$) 55 bit Công ty vừa 300.000$ FPGA 24 giây (0,08$) 19 ngày (5.000$) 60 bit ASIC 0,18 giây (0,001$) 3 giờ (38$) Công ty lớn 10.000.000$ FPGA 7 giây (0,08$) 13 giờ (5.000$) 70 bit ASIC 0,005 giây (0,001$) 6 phút (38$) Tổ chức thông minh 300.000.000$ ASIC 0,0002 giây (0,001$) 12 giây (38$) 75 bit
Số liệu trong Bảng 1.1 được tính tốn dựa trên kỹ thuật và cơng nghệ của những năm 1995. Qua đấy ta thấy, việc tìm khóa với độ dài khóa từ 56 bit trở lên là khó khăn đối với các kẻ tấn công đơn lẻ, nhưng đối với các cơng ty và đặc biệt là các tổ chức có sự đầu tư lớn về tài chính và cơng cụ phân tích khóa mã tinh vi thì hồn tồn có thể và dễ dàng.
Bảng 1.2 Sức mạnh của khóa mã mật [54].
Độ dài khóa (bit)
Số lượng tối đa của các phép tính
Thời gian tối đa để bẻ khóa
Thời gian dự kiến trung bình để bẻ khóa 8 256 0,0000000085 giây 0,0000000043 giây 16 65.636 0,0000022 giây 0,00000109 giây 24 16.777.216 0,00056 giây 0,00028 giây 32 4.294.967.296 0,143 giây 0,072 giây 56 72.057.594.037.927.900 27,800 ngày 13,9 ngày 64 18.446.744.073.709.600.000 19,498 năm 9,7 năm 128 3,40282E+38 359.676.102.360.201 x 106 năm 179.838.051.180.100 x 106 năm 256 1,15792E 77 122.391.435.436.027 x 1045 năm 61.195.717.718.013.400 x 1042 năm 512 1,3408E 154 14.171.960.013.891.600 x 10120 năm 7.085.980.006.945.820 x 10120 năm
14 Số liệu trong Bảng 1.2 được tính tốn dựa trên máy tính sử dụng bộ vi xử lý Dual- Core trong năm 2008 với khả năng thực hiện 30.000 MIPS. Từ đó cho thấy, với năng lực của máy tính hiện nay, thuật tốn mã mật với chiều dài khóa 56 bit, ví dụ thuật tốn DES, là không đủ để bảo mật cho những thơng tin nhạy cảm. Thuật tốn AES với khóa 128, 192 hoặc 256 bit là những lựa chọn ph hợp và tối ưu.
1.1.3.3. Thuật tốn mã hóa khóa bí mật AES
Thuật tốn mã hóa tiên tiến AES [17] là một thuật tốn mã khóa bí mật do hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen đề xuất ra và được Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ NIST chọn làm tiêu chuẩn liên bang, có hiệu lực từ ngày 26 tháng 5 năm 2002. AES cho phép xử lý các khối dữ liệu đầu vào có kích thước 128 bit và sử dụng các khóa có độ dài 128, 192 hoặc 256 bit. Các thơng số chính của AES được tóm tắt như sau:
Bảng 1.3 Các thơng số của thuật tốn AES
Thông số AES-128 AES-192 AES-256
Chiều dài khóa (bit) 128 192 256
Kích thước khối (bit) 128 128 128
Số vòng mã (vòng) 10 12 14
Chiều dài khóa phụ (bit) 128 128 128
Chiều dài khóa mở rộng (bit) 176 208 240
Cơ sở toán học và nguyên lý làm việc của AES:
Cấu trúc cơ sở và nguyên lý làm việc của thuật toán AES bao gồm bốn giai đoạn tạo nên một vòng lặp với 10 lần lặp đối với AES-128, 12 lần với AES-192 và 14 lần cho AES- 256, như được mơ tả trong Hình 1.4.