NỘI DUNG
Trong phần Giải ngố Pretty Good Privacy (PGP) – Phần 2: Ngắn gọn thì PGP hoạt động như thế nào, tôi đã giới thiệu với bạn nguyên lý hoạt động của PGP. Tuy nhiên, do nội dung trước đó khá dài nên tôi đã tạm gác lại một ứng dụng khá hot của PGP là Chữ ký số (Digital Signature).
Vâng tôi biết bạn đã quá ngắn ngẫm với mớ lý thuyết về PGP nhưng hãy cho tôi thêm 30 giây nữa để dứt điểm thằng chữ ký số này rồi tôi sẽ sang phần demo múa lửa sinh động.
Nếu đã theo dõi Phần 2, tôi đoán bạn đã nắm được cách mã hóa và giải mã với PGP (nếu tôi đoán sai thì bạn đọc lại giùm nhé). Bây giờ bạn tưởng tượng thử nếu vai trò của public key và private key thay đổi thì sẽ thế nào?
Stt | Public key | Private key | Mục đích |
1 | Mã hóa thông tin | Giải mã thông tin | Mã hóa |
2 | Giải mã thông tin | Mã hóa thông tin | ? |
Không cần suy nghĩ chắc bạn cũng đoán ngay được cái ? to tướng ở trên chính là Chữ ký số (chứ suy nghĩ gì nữa, ở trên tôi đang dẫn dắt đến chủ đề chính là Digital Signature rồi, không lẽ đến đây tôi quay đầu 1800 sang chủ đề giá heo hơi dịp Tết được sao???).
Đến đây bạn có thể phọt ra 1 câu hỏi hết sức hiển nhiên “Dùng private key mã hóa thông tin thì cả làng nó đều đọc được thông tin mã hóa hết à?” (tất nhiên nếu cả làng có đọc xê-ri về PGP và đã lấy public key của bạn). Và câu trả lời cho câu hỏi này là “Đúng. Bạn muốn cả làng (hay cả xã càng tốt) đều đọc được” vì Chữ ký số quan tâm đến việc xác nhận chính xác có phải bạn có phải là tác giả của thông tin không chứ không quan tâm đến việc ngăn người khác đọc thông tin của bạn trong trường hợp mã hóa thông thường.
Tôi xin lấy một ví dụ minh họa để làm rõ như sau:
…Tối cuối tuần bạn và đồng bọn ngồi nhậu thì một thằng cao hứng (tạm gọi là đồng chí X) hốt hết nguyên xấp của ông vé số dạo rồi chia cho mỗi thằng 10 tờ. Và trong không khí phấn khởi đó, bạn cũng cao hứng hứa hẹn lại quả cho thằng bạn 999 củ nếu sắp vé của bạn trúng. Tuy nhiên, vì bạn cũng thuộc dạng hứa lèo có hạng nên cả bọn chỉ bĩu môi cười khinh bỉ trước lời nói gió bay của bạn. Máu dồn lên não, tối đó về đến nhà bạn gửi ngay dòng thông tin “Nếu xấp vé hôm nay trúng, tôi sẽ sút 999 củ vô tài khoản của thằng X” đã mã hóa với private key của bạn (hiển nhiên đồng bọn đã có public key của bạn). Hôm sau, thằng X đang ngoáy mũi thì thấy đài báo xấp vé của bạn trúng thật. Dã tâm nổi lên, nó lật đật mở máy lên định tìm cách sửa lại dòng thông tin thành “Nếu xấp vé hôm nay trúng, tôi sẽ sút 9999 củ vô tài khoản của thằng X“. Tuy nhiên, thằng X mặt nồi đụng ngay hòn đá tảng: Nó không có cái private key của bạn để mã hóa lại dòng thông tin đã chỉnh sửa nên dã tâm của nó đã bị bóp chết từ trong trứng nước.
Hy vọng đến đây bạn phần nào nắm được nguyên lý và ứng dụng của Chữ ký số. Ngoài ra, chỗ này còn có thể xuất hiện một tình tiết phát triển mới đó là thằng X quyết định chơi lầy, khăng khăng khẳng định bạn nhắn hứa cho nó 9999 củ. Và đến đây, vai trò của quần chúng nhân dân (cụ thể là đám bạn nhậu của bạn trong buổi tối định mệnh đó) sẽ thực sự được phát huy. Cả bọn sẽ lại làm một cái hội nghị bạn tròn ở quán quen và mở lên lại dòng thông tin bằng public key của bạn để xác định xem thằng nào định lật kèo. (Nếu bạn từng tìm hiểu về Blockchain thì chỗ sức mạnh của quần chúng nhân dân này hình như nghe quen quen đúng không?)
Phù…Cuối cùng bạn cũng đã qua được phần diễn giải lý thuyết lê thê. Bây giờ tôi xin phục vụ vài tiết mục minh họa cho không khí bớt trầm lắng. Nội dung của buổi trình diễn hôm nay sẽ xoay quanh 1 phần mềm có tên gọi là Putty với 3 lý do chính và 1 lý do phụ như sau:
– Putty cho phép tạo cặp Private – Public Keys
– Putty cho phép bạn minh họa ssh với cặp Private – Public Keys đã tạo được
– File cài đặt gọn nhẹ, có thể đập phát ăn ngay
– Lý do phụ: Máy tôi có sẵn Putty nên đỡ tốn công download cài đặt (Lý do phụ với bạn nhưng là lý do chính với tôi nhé. Nếu bạn đang có phần mềm có chức năng tương tự Putty thì dùng luôn cũng được)
Ok, hiển nhiên việc đầu tiên bạn cần làm search với từ khóa Putty và tìm chỗ download file cài đặt tương tự như sau:
Việc cài đặt khá nhanh và không có gì đặc sắc nên tôi xin bỏ qua để chuyển qua phần sử dụng với 2 bước như sau:
Bước 1: Tạo khóa với Putty Key Generator
Từ menu chính, bạn mở rộng tùy chọn rồi chọn Putty Key Generator.
Khi đó bạn sẽ thấy giao diện khá đơn giản như sau.
Ở đây tôi minh họa nhanh cách dùng nên sẽ để mặc định các thông tin Parameters mà không giải thích gì thêm nhé (có thể tôi sẽ quay lại chủ đề này trong một bài khác). Sau đó bạn chọn Generate để bắt đầu tạo key và quan sát một cửa sổ tương tự như sau.
Ở đây có một yêu cầu hơi lạ là chương trình bắt bạn di chuyển chuột qua lại vớ vẩn để nó xử lý. Tôi nghĩ chương trình sẽ dùng mấy cái thông tin ngẫu nhiên này để thêm mắm muối vào quá trình xào nấu nhằm phục vụ việc tạo key có tính khác biệt cho mỗi lần chạy (tôi không chắc nghĩ thế đúng hay sai những quá trình này cũng nhanh nên tôi tạm tin như thế chứ không tìm hiểu thêm).
Sau vài giây, bạn sẽ thấy kết quả tương tự như sau:
Ở đây bạn cần lưu ý một số điểm:
- Vị trí “Public key for pasting …“: Đây chính là Public key của bạn. Bạn có thể copy hết lưu vào file text hoặc dùng nút “Save public key” bên dưới cũng được
- Vị trí “Key passphrase” và “Confirm passphrase“: Là password và xác nhận lại password được sử dụng thêm trong xác thực bằng Private key (bạn không dùng cũng được nhưng tôi nghĩ lớp bảo mật bổ sung này là cần thiết, đặc biệt là khi thực hiện các kết nối quan trọng)
- Vị trí “Save public/private key“: hiển nhiên là để lưu Public/Private key.
- Public key thì bạn để đâu cũng được (nhưng cần bảo đảm tìm lại được nhé). Private key thì đặc biệt quan trọng nên bạn cần quản lý kỹ (có thể sử dụng thêm các giải pháp mã hóa ổ đĩa/ thư mục nếu bạn thuộc dạng thích chơi khó)
Bước 2: Sử dụng khóa với Putty
Đến đây, có thể bạn đang nghĩ “Tự nhiên nghe thằng chủ thớt mất cả buổi tạo key xong giờ chẳng biết để làm gì”. Nếu đúng là bạn đang nghĩ vậy thì bạn có thể xem xét 2 trường hợp áp dụng phổ biến sau:
- Bảo mật trong trao đổi email
- Kết nối bảo mật từ xa đến máy tính khác
Trường hợp số 1 cần cài đặt thêm một số phần mềm khác nên để tôi demo trong bài khác nhé. Ở đây chúng ta sẽ tập trung và Trường hợp 2 – Kết nối bảo mật từ xa đến máy tính khác. Tôi sẽ minh họa dựa trên một câu chuyện có thật như sau.
…Đồng chí Y hiện đang công tác tại một Starup Z chuyên về các giải pháp Cờ mờ 4.0. Y tự đánh giá mình là một tài năng thiên bẩm hiện chưa gặp thời nhưng trong tương lai gần Y sẽ thành chuyên gia đầu ngành về “AI-Mờ Lờ” và thậm chí còn có thể suýt ngồi chung mâm với các bậc thầy như Yoshua Bengio, Yann LeCun, Andrew Ng…Tuy nhiên, đời không như mơ. Sếp Y đánh giá trình của Y xài con desktop chạy Pentum II của thập niên 90 chắc cũng dư xăng rồi. Với con desktop này, Y ước tính để training xong cái model siêu cấp mà Y đang phát triển thì Y phải trải qua 7 lần 7 = 49 kiếp luân hồi. Không đầu hàng số phận, Y lân la dò hỏi và phát hiện công ty đang có 1 con server chuyên dụng để training model với GPU NVIDIA Tesla V100. Lao ngay vào phòng sếp, Y tung hết tất cả chiêu ăn vạ, dọa dẫm các kiểu và cuối cùng cũng được cho phép truy cập và sử dụng tài nguyên của con server này.
Tất nhiên Y chỉ được sử dụng Secure Shell (SSH) để kết nối từ xa đến server chứ thằng admin đời nào cho Y mó vào hàng cưng của nó. Y gửi ngay cho nó cái Public key đã tạo để nó thiết lập vào Server và mở Putty trên máy mình để chuẩn bị kết nối.
Ngay tại giao diện chính của Session, Y bắt đầu nhập các thông tin.
- Host Name (or IP adress): check email trả lời của thằng admin để lấy thông tin
- Port: thằng admin báo cứ dùng cổng mặc định 22
- Connection type: SSH
Sau đó Y chuyển qua phần Auth trong SSH,
Tại vị trí “Private key file for authenticatoin“, Y duyệt đến thư mục tối mật để nhập Private key và bấm Open để bắt đầu kết nối.
Đến đây Y nhập thêm cái “Key passphrase” trong quá trình tạo key vào chổ password là đã có thể bắt đầu khai thác con server phục vụ dã tâm của mình…
Cũng đã một thời gian trôi qua nhưng tôi vẫn không thấy báo nào đăng tin về thành tựu của Y (kể cả báo công an) nên tôi đoán Y vẫn còn là chuyên gia “đít ngành” và ngồi ở một góc tối đâu đó tiếp tục ôm ấp những giấc mơ còn đang dang dở…
Ok. Đến đây là hết Phần 3 rồi đấy. Bạn không tắt đi mà còn ngồi đây làm gì nữa?
5 thoughts on “Giải ngố Pretty Good Privacy (PGP) – Phần 3: Sử dụng PGP trong xác thực và chữ ký số như thế nào”