Để tránh bị liệt kê vào danh sách trùm hứa lèo, ngay sau nội dung Giải ngố Tor Browser – Phần 3: Làm sao để kiểm tra signature file cài đặt, tôi xin phép quay lại ngay với phần Pretty Good Privacy – PGP, public-private key như đã hứa.
Ok, bạn kiếm cái ghế nào thoải mái để ngồi đi nhé, hôm nay bạn sẽ chỉ nghe kể chuyện mà không phải động tay động chân và chúng ta sẽ đi ngược thời gian khá xa đấy. Quay lại vài ngàn năm về thời Julius Caesar, lúc mà việc sử dụng mật mã bắt đầu được ghi nhận. Người ta đồn rằng lúc đó, để ngồi nhà nhậu mà vẫn chỉ đạo được mấy thằng đệ đang đánh nhau ngoài chiến tuyến thực hiện đúng ý đồ chiến thuật, ổng sẽ sai tụi bên phòng thông tin liên lạc cưỡi ngựa cầm thư tay của ổng đem đi. Tuy nhiên, ở đây có một số điểm tiềm ẩn vấn đề:
- Thằng cầm thư đi giữa đường bị quân địch bắt giết thịt và hiển nhiên thông tin mật bị bại lộ;
- Thằng cầm thư chơi 2 mang, có nội dung mật thì nó đọc và truyền tin ngay lập tức cho phe địch;
- Thằng cầm thư tò mò đọc trộm nội dung sau đó đi bép xép lung tung nên cuối cùng cả xóm ai cũng biết hết bí mật quân sự.
Để xử lý vấn đề trên, ông Caesar nhận thấy cần phải viết lại cái thư tay sao cho chỉ có thằng cần biết mới đọc được. Nghĩ vậy, ổng và mấy thằng đệ ở văn phòng hì hục chế ra một cái máy kiểu như sau.

Với món này, từ giờ, thư tay của ổng sẽ bị mã hóa để không bị đọc trộm (hiển nhiên so với mặt bằng công nghệ lúc đó, bây giờ nếu ổng còn sống mà vẫn dùng cách này thì ổng bán lúa giống là cái chắc!). Ví dụ: Ổng muốn báo cho đàn em thời gian đồng loạt tấn công úp sọt phe địch là “sáng mai” (tôi minh họa bằng tiếng anh “tomorrow morning” nhưng hình như lúc đó người ta dùng tiếng Latin).

Chỗ này bạn cần lưu ý thông tin chỗ “Shift 3 a –> d” có nghĩ là vị trí trên bảng chữ cái trước và sau khi mã hóa sẽ chênh nhau 3 vị trí (a thành d, b thành e, c thành f, …). Khi đó, dòng thông tin “tomorrow morning” sẽ trở thành “wrpruurz pruqlqj” khá nhức mắt.
Ở đây bạn cần lưu ý 1 điểm cực kỳ quan trọng là thông tin mã khóa “dịch đi 3 vị trí” bằng cách nào đó cũng phải được chuyển đến thì đàn em của ông Caesar mới biết là phải xoay cái đĩa mã hóa trên qua 3 nấc để đọc mật thư.
Tua nhanh đến thế kỷ 16, lúc này đột nhiên xuất hiện một cao thủ tên là Blaise de Vigenère. Ông này đã cải tiến để đưa Caesar Cipher lên một tầm cao mới bằng cách tăng số lần mã hóa từ thông tin gốc (plaintext) sang thông tin mã hóa (ciphertext). Về cơ bản, có thể hiểu phương pháp này sẽ tăng số đĩa từ 2 lên 26 trong đó các kết quả ciphertext trung gian sẽ là đầu vào cho các lần mã hóa tiếp theo. Vigenère Cipher có nhiều biến thể và cũng có nhiều vấn đề khác so với Caesar Cipher nhưng điểm mấu chốt là người nhận vẫn phải biết mã khóa của tất cả các đĩa theo đúng thứ tự thì mới giải mã được.
Tiếp tục tua đến giai đoạn sau chiến tranh thế giới lần 1, lúc này xuất hiện một cao thủ khác là Dr. Arthur Scherbius. Theo các nguồn tin đáng tin cậy, ông này được biết đến như là cha đẻ của cỗ máy mã hóa nổi tiếng Enigma (cỗ máy giúp Phát xít Đứt cho bón cho phe Đồng minh vô số hành trong suốt thế chiến thứ 2 trước khi bị team của ông Alan Turing lật kèo). Về nguyên lý, cỗ máy này vẫn chuyển đổi plaintext sang ciphertext thông qua tổ hợp các cách kết hợp với sự hỗ trợ của hệ thống cơ khí và điện (tôi nói về nguyên lý thôi nhé, còn thực tế thì khi nào mua được máy Enigma tôi mới test và demo chi tiết được). Điểm mấu chốt ở đây vẫn là thông tin khóa mã hóa (thiết lập của máy Enigma) vẫn phải được ghi lại và chuyển cho người nhận thì mới có thể giải mã được ciphertext.

Tôi nghĩ đến đây bạn đã lờ mờ nhận ra vấn đề chính của các phương pháp mã hóa nói trên. Cho dù phương án mã hóa được cải tiến đáng kể nhưng nếu không thể bảo đảm kiểm soát việc trao đổi khóa mã hóa thì việc mã hóa cũng chỉ để múa lửa minh họa (đối với các phương pháp mã hóa hiện đại, trao đổi khóa mã hóa cũng vẫn là vấn đề quan trọng). Vấn đề này chỉ có thể giải quyết khi bạn trao tận tay khóa mã hóa cho người nhận trong môi trường an toàn không có thằng nào dóm ngó và đồng thời người nhận phải bảo đảm quản lý khóa 24/7.
Vâng, giải pháp nghe hết sức cực đoạn và rất may cho bạn đến năm 1991, đại cao thủ Phil Zimmermann trong một phút xuất thần đã nghĩ ra phương án thay thế cho giải pháp trên với chương trình mã hóa Pretty Good Privacy (PGP) hay còn gọi là mã hóa chìa khóa công khai. Với PGP bạn sẽ có thể trao đổi khóa mã một cách công khai cho mấy tỉ dân trên thế giới cũng không ảnh hưởng gì đến hiệu quả mã hóa. Vâng bạn không đọc nhầm đâu, chỉ có điều khóa mã chia sẻ ở đây là khóa công khai (public) trong cặp chìa khóa public-private key và cái khóa riêng tư (private) sẽ chỉ có duy nhất một người được phép truy cập là bạn.
Ok, tôi nghĩ câu chuyện kỳ này sẽ tạm dừng ở đây để bạn ngẫm nghĩ tí về PGP trước khi đi sâu vào các chi tiết ly kỳ của nó trong Giải ngố Pretty Good Privacy (PGP) – Phần 2: Ngắn gọn thì PGP hoạt động như thế nào.
1 thought on “Giải ngố Pretty Good Privacy (PGP) – Phần 1: Câu chuyện về mã hóa và vị cứu tinh PGP”