Công cụ này làm gì
Công cụ này tạo một cặp khóa công khai/riêng tư mới để dùng cho ký số, SSH, hoặc mục đích mật mã học nói chung. Chọn một thuật toán, bấm tạo, và bạn sẽ nhận về ba kết quả sẵn sàng để copy hoặc tải xuống: một khóa riêng tư PEM, một khóa công khai PEM, và một dòng khóa công khai OpenSSH cho các tài khoản và dịch vụ mong đợi đúng định dạng đó.
Mọi thứ diễn ra ngay trên thiết bị của bạn. Khóa riêng tư được tạo bên trong một module WebAssembly chạy trong tab trình duyệt và không bao giờ đi qua mạng — chỉ bạn mới thấy nó.
Cặp khóa là gì
Cặp khóa gồm hai khóa liên kết với nhau về mặt toán học: một khóa riêng tư bạn giữ bí mật, và một khóa công khai bạn có thể chia sẻ thoải mái. Bất cứ thứ gì được ký bằng khóa riêng tư đều có thể được xác minh bởi bất kỳ ai nắm giữ khóa công khai, mà người đó không bao giờ cần quyền truy cập vào khóa riêng tư — đây chính là nền tảng cho xác thực SSH, ký số mã nguồn, và các thuật toán như RS256, ES256 của JWT.
Nên chọn thuật toán nào?
| Thuật toán | Kích thước khóa | Phù hợp cho |
|---|---|---|
| Ed25519 | Khóa nhỏ, kích thước cố định | Lựa chọn mặc định được khuyến nghị — hiện đại, nhanh khi tạo và xác minh, được hỗ trợ rộng rãi bởi các công cụ SSH và ký số hiện nay |
| ECDSA P-256 | Khóa nhỏ, kích thước cố định | Chọn khi một dịch vụ hoặc chuẩn cụ thể yêu cầu ECDSA thay vì Ed25519 |
| RSA-2048 | Khóa lớn hơn nhiều | Chỉ chọn để tương thích với hệ thống cũ hoặc yêu cầu bắt buộc dùng RSA |
Ed25519 là lựa chọn mặc định đúng đắn cho hầu hết mọi người: hiện đại, cho ra khóa nhỏ gọn, và cả việc tạo lẫn xác minh đều nhanh. Chỉ chuyển sang ECDSA P-256 hoặc RSA-2048 khi có điều gì đó ngoài tầm kiểm soát của bạn — một server cũ, một chính sách tuân thủ, một công cụ cũ — yêu cầu cụ thể một trong hai loại đó.
PEM và OpenSSH khác nhau thế nào
Khóa riêng tư PEM dùng định dạng PKCS#8, bọc giữa các dòng BEGIN PRIVATE KEY và END PRIVATE KEY — đây là định dạng mà hầu hết ngôn ngữ lập trình và thư viện mật mã mong đợi khi nạp một khóa riêng tư. Khóa công khai PEM dùng định dạng SPKI theo cách tương tự, bọc giữa các dòng BEGIN PUBLIC KEY và END PUBLIC KEY. Dòng khóa công khai OpenSSH là một cách mã hóa khác, dạng một dòng, cho cùng khóa công khai đó, theo đúng định dạng SSH mong đợi — đây là thứ được dán vào file authorized_keys hoặc ô khóa SSH trên một dịch vụ lưu trữ mã nguồn.
Dùng khóa này cho SSH
Copy dòng khóa công khai OpenSSH vào file authorized_keys trên bất kỳ server nào bạn muốn truy cập, hoặc dán vào ô khóa SSH trên một dịch vụ lưu trữ mã nguồn. Giữ khóa riêng tư PEM trên máy của bạn và trỏ SSH client tới nó — miễn khóa riêng tư còn được giữ bí mật, chỉ bạn mới xác thực được với khóa công khai tương ứng.
Khóa riêng tư của bạn không bao giờ rời khỏi thiết bị
Việc tạo khóa chạy hoàn toàn bên trong một module WebAssembly được tải vào tab trình duyệt của bạn. Không có gì được upload, ghi log, hay truyền đi — khóa riêng tư chỉ tồn tại trong bộ nhớ của trang này trong thời gian tab còn mở, nên hãy copy hoặc tải xuống nó trước khi rời trang, vì sau đó không thể khôi phục lại được.
Nếu bạn cần giải mã hoặc xác minh một JWT được ký bằng RS256 hoặc ES256, xem Giải mã & Xác minh JWT. Nếu bạn cần thiết lập xác thực hai yếu tố, xem Tạo mã TOTP & Thiết lập 2FA — cả hai đều xử lý ngay trên thiết bị giống như công cụ này.