Mật mã học là một ngành có lịch sử từ hàng nghìn năm nay. Trong phần lớn thời gian phát triển của mình (ngoại trừ mấy thập kỷ gần đây), lịch sử mật mã học chính là lịch sử của những phương pháp mật mã học cổ điển – các phương pháp mật mã hóa với bút và giấy, đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản. Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính trong những thập kỷ gần đây đã tạo điều kiện để mật mã học phát triển nhảy vọt lên một tầm cao mới. Qua đó đưa mật mã học đóng một vai trò tối quan trong an toàn và bảo mật thông tin.
Tổng quan bảo mật thông tin
1. Nhu cầu bảo mật thông tin trong môi trường mở
Trong toàn bộ bài viết này chúng ta sẽ quy ước xem xét các giao dịch giữa hai đối tác: An (A) là người gửi (phát) thông tin và Bình (B) là người nhận (thu) thông tin. Ngoài hai đối tượng nói trên chúng ta cũng giả thiết rằng tồn tại một kẻ thứ ba là Công (C), C luôn tìm cách xâm nhập những thông tin trao đổi giữa A và B để nghe lén (trộm thông tin) hoặc để thay đổi làm sai lệch các thông tin được trao đổi giữa A và B nhằm một mục đích nào đó.
Giả sử An có một câu chuyện riêng tư bí mật cần nói với Bình. Rõ ràng lý tưởng nhất là hai người có thể kéo nhau vào một căn phòng cửa đóng kín (tường cách âm càng tốt) và thì thào với nhau: mọi điều trao đổi chỉ có hai người biết, không lọt vào tai bất kỳ một người thứ ba nào. Môi trường giao dịch đó là một môi trường đóng (theo nghĩa là ngoài hai đối tác giao dịch, không có sự xâm nhập của bất kỳ một người thứ ba nào), môi trường đóng là một môi trường tin cậy.
Tuy nhiên trong thực tế, người ta thường phải tiến hành giao dịch trong những môi trường không đóng, tức là môi trường mở (open surrounding). Chẳng hạn, vì gấp quá, không tìm ra chỗ kín đáo, An phải đứng ngay đầu đường nói to lên với Bình đang đứng ở cuối đường, câu chuyện hiển nhiên lọt vào tai của nhiều người khác. Hoặc An đang ở Hà Nội phải gọi điện thoại hay gửi thư cho Bình ở TP. Hồ Chí Minh, không thể đảm bảo là nội dung cuộc nói chuyện điện thoại hoặc nội dung lá thư không bị người thứ ba nào đó nắm bắt được. Môi trường mở nói chung là môi trường không tin cậy.
2. Những nguyên lý của bảo mật thông tin
Các giao dịch điện tử nói chung là giao dịch trong môi trường mở, giao dịch trên Internet, giao dịch xuyên quốc gia. Trong các quá trình trao đổi thông tin đó các đối tác thường là không “mặt đối mặt” để có thể nhận diện ra nhau. Vì thế rất khó để có thể thực hiện được những yêu cầu sau đây của việc trao đổi thông tin được xem là những nguyên lý cơ bản của vấn đề bảo mật thông tin:
- Tính bí mật/riêng tư
- Tính toàn vẹn
- Tính xác thực
- Tính không thể chối bỏ
- Tính nhận dạng
2.1. Nguyên lý 1: Nguyên lý bí mật/riêng tư (Confidentiality/Privacy)
Giả sử A gửi một “vật mang tin” đến cho B. Nguyên lý đầu tiên của lý thuyết bảo mật là phải đảm bảo tính bí mật và tính riêng tư cho quá trình truyền tin. Điều này có nghĩa là việc truyền tin phải đảm bảo rằng chỉ có hai đối tác A và B khi tiếp cận vật mang tin mới nắm bắt được nội dung thông tin được truyền. Trong quá trình truyền tin, nếu có kẻ thứ ba C (vì một nguyên nhân nào đó) có thể tiếp cận được vật mang tin thì phải đảm bảo rằng kẻ đó vẫn không thể nắm bắt được, không thể hiểu được nội dung “thực sự” của thông tin chứa trong vật mang tin đó.
2.2. Nguyên lý 2: Nguyên lý toàn vẹn (Integrity)
Trong quá trình truyền tin, có thể vì lý do khách quan của môi trường, nhất là do sự xâm nhập phá hoại của kẻ thứ ba, nội dung của thông tin ban đầu chứa trong vật mang tin có thể bị mất mát hay bị thay đổi. Nguyên lý này không yêu cầu đến mức phải đảm bảo rằng thông tin không bị thay đổi trong quá trình truyền tin, nhưng phải đảm bảo được là mỗi khi thông tin bị thay đổi thì người nhận (và tất nhiên là cả người gửi) đều phát hiện được. Chẳng hạn vật mang tin của A gửi cho B trên đường truyền tạm thời lọt vào tay người thứ ba C. C tuy không thể hiểu được nội dung thông tin (do quá trình truyền tin đã thực hiện nguyên lý 1) nhưng vẫn có thể tác động vào vật mang tin để làm thay đổi thông tin nó mang; khi nhận được vật mang tin (đã bị làm thay đổi) B lập tức nhận biết rằng nó đã bị làm thay đổi.
2.3. Nguyên lý 3: Nguyên lý xác thực (Authentication)
Nguyên lý 3 của bảo mật thông tin yêu cầu là trong một quá trình truyền tin, người nhận tin (và có khi cả người gửi tin nữa) có biện pháp để chứng minh với đối tác rằng “họ chính là họ” chứ không phải là một người thứ ba nào khác. Chẳng hạn khi bạn nhận một lá thư bảo đảm tại Bưu điện thì bạn phải có cách nào chứng minh được rằng bạn chính là người có quyền nhận lá thư đó, bằng cách xuất trình chứng minh nhân dân hoặc một giấy giới thiệu có giá trị nào đó. Sự xác thực này có thể là xác thực một chiều (oneway authentication): người nhận phải xác thực mình với người gửi, nhưng cũng có những trường hợp đòi hỏi xác thực hai chiều (mutual authentication): người nhận với người gửi và ngược lại. Chẳng hạn khiA là khách hàng gửi tin báo cho B là chủ nhà hàng chuẩn bị cho mình một bữa tiệc, A phải xác thực được rằng người nhận tin của mình đúng là B (người có trách nhiệm của nhà hàng) chứ không phải là một nhân viên nào đó có thể vô trách nhiệm, quên lãng làm nhỡ nhàng cho khách của mình. Mặt khác khi B nhận tin cũng phải xác thực được đúng là đơn đặt hàng của A chứ không phải do một kẻ phá rối nào đó mạo danh làm cho mình bị ế bữa tiệc đã chuẩn bị.
2.4. Nguyên lý 4: Nguyên lý chống chối bỏ (Non repudition)
Nguyên lý này đòi hỏi rằng khi quá trình truyền tin kết thúc, A đã gửi cho B một thông tin và B đã nhận thông tin thì A không thể chối bỏ rằng thông tin đó không do mình gửi (hoặc mình không gửi tin) mặt khác B cũng không thể chối bỏ rằng mình chưa nhận được. Cũng trong ví dụ về việc đặt tiệc nói trên, nếu A đã đặt tiệc nhưng không đến ăn thì không thể chối là tin đặt tiệc không do mình gửi, ngược lại khi khách khứa đến mà B quên chuẩn bị thì B cũng không thể chối là do mình chưa nhận được đơn đặt hàng của A.
2.5. Nguyên lý 5: Nguyên lý nhận dạng (Identification)
Giả sử một hệ thống tài nguyên thông tin chung có nhiều người sử dụng (users) với những mức độ quyền hạn khác nhau. Nguyên lý 5 của an toàn thông tin yêu cầu phải có biện pháp để hệ thống có thể nhận dạng được các người sử dụng với quyền hạn kèm theo của họ. Chẳng hạn trong một thư viện có nhiều kho sách chứa các loại tài liệu thông thường và tài liệu mật. Người đọc chia làm nhiều loại, có loại chỉ được đọc sách thông thường tại chỗ, có loại được đọc tài liệu mật, có loại lại được mượn về nhà. Người vào thư viện phải xuất trình thẻ, có các loại thẻ khác nhau: Căn cứ vào thẻ, người thủ thư nhận dạng được ra người đó có phải là người có quyền sử dụng thư viện không và có quyền sử dụng theo dạng nào.
Trong vấn đề bảo mật còn có một điều cần lưu ý: đó là “sự tin tưởng”. Khi chia sẻ một bí mật cho một người, bạn phải tin tưởng vào khả năng bảo vệ bí mật của người đó. Nhưng một điều khó khăn ở đây là: “tin tưởng” là một phạm trù có tính tâm lý, xã hội không có các đặc trưng của một loại quan hệ toán học nào:
- Tính không phản xạ: Một người có luôn luôn tin tưởng vào chính mình không? (Điều này chưa chắc chắn đối với tất cả mọi người và trong tất cả mọi trường hợp!)
- Tính không đối xứng: A tin tưởng vào B nhưng liệu B có tin tưởng vào A không? (Chưa chắc!)
- Tính không bắc cầu: A tin tưởng B, B tin tưởng C, nhưng không có gì đảm bảo (trong rất nhiều trường hợp) là A tin tưởng vào C.
Chính vì vậy, trong các vấn đề bảo mật nhiều khi chúng ta không thể hoàn toàn dùng các phương pháp suy luận logic thông thường mà phải chú ý đến việc tuân thủ các nguyên lý bảo mật thông tin.
Mật mã học
1. Mật mã học (cryptography) là gì?
Người ta gọi mật mã học là một khoa học nghiên cứu nghệ thuật nhằm che giấu thông tin, bằng cách mã hóa (encryption) tức là biến đổi “thông tin gốc” dạng tường minh (plaintext) thành “thông tin mã hóa” dạng ẩn tàng (cipher text) bằng cách sử dụng một khóa mã (thuật toán mã hóa) nào đó. Chỉ có những người giữ chìa khóa (key) bí mật mới có thể giải mã (decryption) thông tin dạng ẩn tàng trở lại thành dạng thông tin có dạng tường minh.
Thông tin ẩn tàng đôi khi vẫn bị khám phá mà không cần biết khóa bí mật: việc đó gọi là bẻ khóa. Ngành học nghiên cứu về việc bẻ khóa (attack/crack/hack) này còn gọi là cryptanalysis. Như đã nói ở ví dụ trên, trong các phương pháp tấn công thám mã ta gọi tấn công bạo lực – brute-force attack (exhaustive key search): là phương pháp tấn công bằng cách thử tất cả những khả năng chìa khóa có thể có. Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất. Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi tấn công bạo lực nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian rất dài nên thực tế là không khả thi. Vì thế có thể coi một thuật toán là an toàn nếu như không còn cách nào khác để tấn công nó ngoài cách sử dụng brute-force attack. Để chống lại tấn công này, chìa khóa bí mật được thay đổi một cách thường xuyên hơn.
Trong lý thuyết mật mã, người ta nghiên cứu đồng thời các thuật toán lập mã và vấn đề thám mã được dùng để đánh giá mức độ an toàn và khả năng bảo mật thông tin của mỗi thuật toán mã hóa.
2. Phân loại các thuật toán mã hoá
Ngày nay người ta phân biệt ra hai nhóm thuật toán mã hóa chính là: Các thuật toán mã hóa cổ điển và các thuật toán hiện đại.
Các thuật toán cổ điển: (những thuật toán này ngày nay đôi khi vẫn còn được dùng chẳng hạn trong trò chơi tìm mật thư) gồm:
- Thuật toán thay thế (Substitution) là thuật toán mã hóa trong đó từng ký tự (hoặc từng nhóm ký tự) của plaintext được thay thế bằng một (hay một nhóm) ký tự khác. Thuật toán atbash của người Hebrew hay thuật toán vòng của Caesar đều là các thuật toán thay thế. Chính ý tưởng của mã vòng
Caesar đã được ứng dụng trong máy Enigma. - Thuật toán chuyển vị (Transposition) là thuật toán mã hóa trong đó các ký tự trong văn bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các ký tự không hề bị biến đổi.
Xét một ví dụ về thuật toán hoán vị. Trong thuật toán này chúng ta ngắt thông điệp gốc thành từng nhóm 4 ký tự đánh số trong từng nhóm từ 1 đến 4. Chìa khóa ở đây là một hoán vị bất kỳ của 1234 gán cho mỗi nhóm:
Các thuật toán hiện đại:
Có nhiều cách phân loại các thuật toán mã hóa hiện đại hiện đang sử dụng. Phổ biến là theo số khóa sử dụng trong một thuật toán và như vậy có 3 loại sau đây:
- Mã hóa đối xứng hay khóa bí mật SKC (Secret Key Cryptography): Chỉ dùng một chìa khóa cho cả mã hóa và giải mã (biến đổi theo hai chiều ngược nhau)
- Mã hóa bất đối xứng hay khóa công khai và khóa riêng PKC (Public and Private Keys Cryptography): Sử dụng hai khóa riêng biệt: một khóa để mã hóa (khóa công
khai: public key) và một khóa khác để giải mã (khóa riêng: private key). - Hàm băm (Hash function): Mã hóa một chiều (one-way cryptography) dùng một biến đổi toán học để “mã hóa” thông tin gốc thành một dạng không biến đổi ngược được: không có khóa nên từ ciphertext không tìm ngược lại được plaintext.
Trong những phần tiếp theo sẽ đi vào lần lượt nghiên cứu về các thuật toán mã hoá và giải mã cho các loại mã đối xứng, mã bất đối xứng, ưu điểm và nhược điểm của chúng và khả năng ứng dụng của chúng trong việc truyền các thông điệp điện tử.