3. An toàn thông tin trên mạng
3.3. Bảo vệ thông tin bằng mật mã
Để bảo vệ thông tin trên đường truyền, người ta biến đổi thông tin từ dạng nhận thức được sang dạng không nhận thức được và gởi đi trên đường truyền.
Một hệ mã hóa phải bảo đảm chống truy nhập thông tin không đúng quyền hành, phải đảm bảo độ phức tạp mà kẻ trộm phải giải quyết khi lấy cắp thông tin.
Một hệ mật mã bao gồm các thành phần như sau:
Văn bản M: là văn bản gốc.
Văn bản C: là văn bản mã hóa.
Một tập khóa K: gọi là không gian khóa.
Một ánh xạ E: M*K C là ánh xạ mã hóa.
Một ánh xạ D: C*K M là ánh xạ giải mã.
Như vậy E(M): là hàm mã hóa.
D(C): là hàm giải mã.
C = E(M) , M = D(C) = D(E(M)).
Với phương pháp mã hóa cổ điển, người ta thường dùng cùng một khóa để mã hóa và giải mã, lúc này khóa phải được giữ bí mật tuyệt đối. Với phương pháp mã hóa công khai, người ta dùng hai khóa khác nhau để mã hóa và giải mã, do đó không có khóa nào được suy ra từ khóa kia và khóa giải mã phải được giữ bí mật. Sau đây chúng ta sẽ xem xét một số phương pháp mật mã cơ bản:
* Phương pháp đổi chỗ
Ý tưởng của phương pháp này là sắp xếp lại các ký tự trong văn bản gốc để tạo ra văn bản mật mã.
+ Đảo ngược toàn bộ văn bản gốc: phương pháp này đơn giản, không đảm bảo an toàn.
Ví dụ: M = INFOR C = ROFNI
+ Mã hóa hình học: Văn bản gốc được sắp xếp theo ma trận nào đó rồi lấy ra theo cột.
Ví dụ: M = 23 giờ sân trường! được viết thành ma trận 3x5 như sau:
1 2 3 4 5 1 2 i a r n 2 3 o n u g 3 g s t o !
Nếu lấy ra theo thứ tự cột 3 2 1 5 4, ta có văn bản C như sau:
C = antios23g!ruo
+ Đổi chỗ cột: văn bản gốc được sắp xếp theo ma trận, sau đó hóan vị các cột rồi lấy ra theo chiều ngang.
Ví dụ: với thứ tự cột là 23154, ta được văn bản C như sau:
C = ia2nron3gustg!o
* Phương pháp thế
Ta thay thế mỗi ký tự trong văn bản gốc thành một ký tự khác nào đó.
Ví dụ: M = BCDE C = KLMN (B K)
*Phương pháp công khai
Phương pháp này dùng 2 khóa, một khóa công khai để mã hóa và một khóa bí mật để giải mã. Mặc dù hai khóa này có liên quan với nhau nhưng không thể suy ra khóa bí mật từ khóa công khai.
Năm 1978, Rivest, Shamir và Adleman đã đề xuất một phương pháp (sau này được gọi là phương pháp RSA) để thực hiện mật mã bằng khóa công khai.
Phương pháp RSA dựa trên nhận xét: có thể dễ dàng sinh ra hai số nguyên tố lớn và nhân chúng với nhau nhưng cực kỳ khó khăn khi muốn phân tích thừa số cho tích của chúng. Các bước tìm khoá công khai như sau:
Chọn ngẫu nhiên 2 số nguyên tố lớn p và q
Tính tích n = p*q
Tính hàm (n) = (p-1)(q-1)
Chọn ngẫu nhiên số nguyên E (3<E<(n)-1) sao cho USCLN(E, (n)) =1
Tìm số nguyên D sao cho: ED mod (n)=1 Trong đó E là khóa công khai và D là khóa bí mật.
Với: văn bản gốc là M thì
văn bản mật mã: C = ME mod n văn bản giải mã: M = CD mod n
= MED mod n
Như vậy, trạng thái các đại lượng dùng trong RSA như sau:
Đại lượng Trạng thái 2 số nguyên tố p và
q n =pq
(n) = (p-1)(q-1) Khóa E
Khóa D
Văn bản gốc M Văn bản mật mã C
Bí mật Công khai Bí mật Công khai Bí mật Bí mật Công khai Ví dụ:
chọn p = 7, q = 17
n = 7*17=119
(n) = 616 =96
chọn E, ta có USCLN(E, (n)) = 1 Hay USCLN (E,96) = 1
Vì 3 < E < 96 nên chọn E = 5
Tìm khóa D thỏa DE mod (n) = 1 5D mod 96 = 1
5D = 96K + 1
5D = 964 + 1 = 385
D =77
Giả sử M = 19
Khóa công khai (5,119) Khóa bí mật (77)
C = 195 mod n = 195 mod 119 = 66
Giải mã D = CD mod n = 6677 mod 119 = 19
Khóa D có thể xác định được nếu phân tích được n thành hai số nguyên tố p, q. Xong điều này là không khả thi vì hiện nay chưa có phương pháp nào tối ưu để phân tích các số lớn thành các thừa số nguyên tố.
Xét máy tính có tốc độ thực hiện 1012 phép tính/giây
Với số có 100 chữ số, khi đó máy tính phải phân tích khoảng 1 tuần Với số có 150 chữ số, khi đó máy tính phải phân tích khoảng 1 năm Với số có 200 chữ số, khi đó máy tính phải phân tích hàng nghìn năm.
Như vậy ta chọn n khoảng 150 chữ số thì có thể xem là đã đủ phức tạp để đạt được độ an toàn thông tin mong muốn.