Giải ngố Pretty Good Privacy (PGP) – Phần 2: Ngắn gọn thì PGP hoạt động như thế nào

Không dài dòng văn tự, kỳ này tôi xin vào thẳng ngày vấn đề về Pretty Good Privacy (PGP) như nội dung tiếp nối của Giải ngố Pretty Good Privacy (PGP) – Phần 1: Câu chuyện về mã hóa và vị cứu tinh PGP.

Cảnh báo: Nội dung bài viết có thể đề cập đến nhiều vấn đề hại não, người đọc cần cân nhắc trước khi tiếp tục! Tôi sẽ cố gắng trình bày những suy nghĩ/ cảm nhận về các vấn đề theo cách đơn giản nhất có thể, tuy nhiên, các nội dung liên quan đến PGP có thể sẽ khá rối rắm nên tôi giả định bạn ít nhiều cũng có hứng thú với vấn đề mã hóa để có đủ động lực theo dõi cả bài (nếu bạn ngủ gục khi ngồi rạp xem phim về Edward Snowden thì đó là dấu hiệu cho thấy bạn nên đọc bài này vào một lúc khác).

Nếu theo dõi kỳ trước, bạn đã biết một vấn đề rất lớn của việc mã hóa – giải mã đòi hỏi khóa mã hóa bằng cách nào đó phải được chuyển đến tay người nhận mà không ai khác có thể can thiệp/ sao chép. Việc này nghe có vẻ đơn giản nhưng thật ra đến cả thời điểm hiện nay với sự hỗ trợ của rất nhiều phương tiện thông tin liên lạc, một người bình thường khó có thể kết luận 100% kênh liên lạc là an toàn. Cho đến trước thời điểm xuất hiện PGP, các giang hồ ám ảnh với việc bảo mật thông tin hẳn đã phải vặt trụi cả lông đầu để tìm ra một kênh bảo đảm an toàn để truyền khóa mã hóa.

Và cuối cùng, sau bao năm bị dày vò, chà đạp, các đại ca mới tìm ra được đáp án hoàn hảo: cách truyền khóa mã hóa an toàn nhất là đừng truyền. Vâng, đến đây nếu bạn nghĩ “Mịa, thế này bố cũng biết chức cần méo gì nghe thằng chủ thớt lê thê nãy giờ” thì cũng đúng nhưng để tôi diễn giải lại để hạn chế ăn gạch đá như sau: cách truyền khóa mã hóa an toàn nhất là đừng truyền khóa mã hóa mà hãy truyền cách khóa.

Tôi xin kể lại một câu chuyện dựa trên các tình tiết có thật với bối cảnh cụ thể để làm rõ như sau: Hôm nọ thứ 7 cuối tuần, 2 đồng chí Gan U Xơ (mật danh là Mr. X) và đồng chí Xôi Y Mốc (mật danh là Mr. M) muốn set kèo nhậu tẹt ga nhưng các giải pháp liên lạc thông thường đều đã bị các gấu mẹ kiểm soát. Mr. X và Mr. M đã mã hóa thông tin thời gian và địa điểm theo phương pháp siêu cấp vô địch và cũng đụng phải vấn đề nan giải là làm sao truyền được khóa mã mà không bị các gấu mẹ chặn.

Trong lúc bế tắt nhất, tưởng chừng phải buông xuôi mọi thứ, Mr. X lỡ tay click nhầm đường link về PGP trên chuyên trang dành cho gà mờ và đọc được dòng chân lý “cách truyền khóa mã hóa an toàn nhất là đừng truyền khóa mã hóa mà hãy truyền cách khóa“. Sau 3 giây sững sờ, X bỗng như hiểu được hết mọi khoa học trên thế gian (nhưng không nhìn được sóng điện thoại như một siêu nhân bán café nào đấy) và hiển nhiên biết mình cần phải làm gì. X gấp rút đánh xe ra cửa hàng két sắt lớn nhất Sài thành và múc ngay một con có ổ khóa hàng Việt Nam nhưng chất lượng đẳng cấp Thái Dương Hệ. Trên đường chở cái két sắt tới nhà Mr. M, X không quên gọi thông báo để M cũng kịp múc 1 con két sắt khác chở tới nhà X (Lưu ý quan trọng: chở két sắt thôi nhé, còn chìa khóa thì mạnh ai nấy giữ).

Vì chủ động hơn, X về đến nhà trước và viết vội các dòng thông tin mật “06:09 tối nay, quán cũ, ok ko?” và nhanh tay ném vào két của M rồi bấm khóa lại và giao cho Transporter Jason Statham chuyển đến nhà M. Khi vừa thấy bóng dáng Transporter xuất hiện, M rút vội chìa khóa két của mình, bóc tem ngay cái két sắt và gật gù đọc mật thư của X. Ngay bên dưới bút tích của X, M để lại 1 câu trả lời đanh thép “Ngon!“. Mật thư lần này chui qua cái két của X để lại lúc nãy trước khi lên con “Ao-đì” của Transporter thẳng tiến nhà X…

Hình minh họa để đỡ mỏi mắt tí

Đến đoạn này tôi có việc phải về nên không xem tiếp được nhưng nghe đồn tối đó có người thấy Jason Statham ngồi nhậu rôm rả với X và M ở lẩu cá kéo Bà Huyện…Quay lại với câu chuyện ban đầu, đến đây tôi hi vọng bạn đã rõ ý của tôi khi nói “cách truyền khóa mã hóa an toàn nhất là đừng truyền khóa mã hóa mà hãy truyền cách khóa“. Tất nhiên ở đây bạn không thể dùng y chang cách của X và M được (nếu cố dùng thì chắc bạn sẽ bán thận sớm vì theo tôi được biết đơn giá vận chuyển của Transporter khá cao). May mắn thay, bạn có một giải pháp minh họa ngon bổ rẻ với nguyên lý tương tự thông qua việc sử dụng số nguyên tố như RSA Algorithm trình bày sau đây.

Như vậy, trước hết bạn cần nắm rõ khái niệm số nguyên tố là số chỉ chia hết cho 1 và cho chính nó. Ngoài ra, còn có một số khái niệm khác cần nắm rõ như…blablabla…Đùa thôi chứ tôi không nghĩ bạn định vào đây để ôn tập toán học đâu đúng không? Do vậy, chỗ này tôi sẽ minh họa việc áp dụng với số nguyên tố theo tinh thần đơn giản nhất như sau.

Sau một thời gian mò mẫm mân mê danh sách các số nguyên tố, tôi xác định cặp số may mắn đóng vai trò private key cho tôi là p=11q=17. Tôi nghiên cứu và chọn thêm 1 số e = 7 (cái này có nguyên tắc chọn nhưng cho tôi bỏ qua ở đây nhé, nếu bạn có hứng thú biết thêm thì comment cho tôi vậy). Ok, xong bước chuẩn bị, giờ tôi lên phường thông báo cho bà con biết cái public key của tôi là N=187 và e=7. Lưu ý ở đây N=p*q=11*17=187 thì chỉ mỗi mình bạn biết thôi nhé, các giang hồ mạng chỉ biết N=187 và e=7 thôi.

Đến đây chắc bạn nghĩ “Ông ơi, tôi bấm máy dò mấy phút là biết N=p*q=11*17=187” rồi, bảo mật cái vẹo gì ở đây???” Vâng rất chính xác vì ở đây tôi đang minh họa đơn giản nhất có thể. Giả sử N = 82,885,603 thì “tối kiến” ngồi bấm máy dò bắt đầu nghe hơi đuối. Ok, câu tiếp theo “Tôi lập trình cho máy tính chạy dò cái vèo là xong, dò tay làm gì?”. Câu này cũng đúng nhưng thực tế N sẽ có thể rất lớn và bạn chỉ có một khoảng thời gian nhất định để giải mã trước khi mọi thứ thay đổi.

Giả sử bạn đã tạm hài lòng với các câu trả lời trên và bắt đầu test việc mã hóa với plain text đầu vào là i=99. Lúc này cipher text o = số dư của (ie)/N = 176.

Khi nhận được cipher text của bạn, tôi tính d = [(p-1)*(q-1)+1]/e = 23. Và tính lại plain text i = số dư của [(od)/N]. Tôi đọc báo thấy người ta nói tính lại i = 99, bạn kiểm lại giúp nếu sai thì báo tôi sang đấy ném đá nhé.

Tôi hy vọng đến đây bạn đã hình dung được các két sắt và chìa khóa với số nguyên tố ra sao rồi. Kỳ tới tôi sẽ demo một tí về việc tạo khóa và sử dụng vì các bài gần đây toàn nói mồm không nên tôi bắt đầu hơi nghi ngờ lời tôi nói rồi.

 

4 thoughts on “Giải ngố Pretty Good Privacy (PGP) – Phần 2: Ngắn gọn thì PGP hoạt động như thế nào”

Leave a Reply

Your email address will not be published. Required fields are marked *