Tạo cặp khóa

Chọn một thuật toán và tạo một cặp khóa mới để dùng cho SSH, ký số hoặc mục đích chung. Bạn sẽ nhận được khóa riêng tư PEM, khóa công khai PEM, và một dòng khóa công khai OpenSSH, sẵn sàng để sao chép hoặc tải xuống. Mọi thứ chạy cục bộ — khóa riêng tư của bạn không bao giờ rời khỏi thiết bị.

File không bao giờ rời khỏi thiết bị của bạn

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.

Mẹo: Khóa riêng tư mới là thứ quan trọng về mặt bảo mật — hãy chia sẻ khóa công khai thoải mái, nhưng đối xử với khóa riêng tư giống như một mật khẩu chủ: tạo cục bộ, copy một lần, và không bao giờ gửi tới nơi bạn không hoàn toàn tin tưởng.

Nên chọn thuật toán nào?

Thuật toánKích thước khóaPhù hợp cho
Ed25519Khóa nhỏ, kích thước cố địnhLự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-256Khóa nhỏ, kích thước cố địnhChọn khi một dịch vụ hoặc chuẩn cụ thể yêu cầu ECDSA thay vì Ed25519
RSA-2048Khóa lớn hơn nhiềuChỉ 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.

Câu hỏi thường gặp

Khóa riêng tư có bị upload lên đâu không?
Không. Cặp khóa được tạo hoàn toàn ngay trên trình duyệt bằng WebAssembly — khóa riêng tư được sinh ra ngay trên thiết bị của bạn và không bao giờ được gửi qua mạng. Copy hoặc tải xuống trực tiếp từ trang; không có server nào từng thấy nó cả.
Tôi nên dùng thuật toán nào?
Ed25519, trừ khi có yêu cầu cụ thể khác. Đây là thuật toán hiện đại, tạo ra khóa nhỏ gọn, và nhanh cả khi tạo lẫn khi xác minh. Chỉ dùng ECDSA P-256 hoặc RSA-2048 khi một dịch vụ, chuẩn, hoặc phần mềm bạn không kiểm soát yêu cầu cụ thể một trong hai loại đó để tương thích — ví dụ một hệ thống cũ chưa hỗ trợ khóa Ed25519.
Tôi có thể dùng khóa này cho SSH không?
Có. Tạo một cặp khóa, rồi copy dòng khóa công khai OpenSSH vào file authorized_keys trên server đích, và giữ khóa riêng tư PEM để cấu hình trong SSH client của bạn. Ed25519 là lựa chọn phổ biến, được hỗ trợ rộng rãi cho khóa SSH trên các hệ thống hiện đại.
Tại sao RSA tạo khóa chậm hơn Ed25519?
Việc tạo khóa RSA đòi hỏi tìm hai số nguyên tố ngẫu nhiên lớn rồi kết hợp chúng lại, việc này nặng hơn về mặt tính toán khi khóa càng lớn — một khóa RSA 2048-bit mất nhiều thời gian hơn rõ rệt để tạo so với một khóa đường cong elliptic có độ an toàn tương đương hoặc cao hơn. Ed25519 và ECDSA P-256 dùng một loại toán học khác (đường cong elliptic) cho phép tạo ra khóa nhỏ, mạnh gần như tức thì so với RSA.
Khóa công khai dạng PEM và dòng OpenSSH khác nhau ở đâu?
Cả hai mã hóa cùng một khóa công khai theo hai định dạng văn bản khác nhau. Khóa công khai PEM dùng định dạng SPKI, bọc trong khối BEGIN PUBLIC KEY, đây là định dạng mà hầu hết thư viện mật mã và công cụ chứng chỉ mong đợi. Dòng OpenSSH là định dạng một dòng riêng mà chính SSH sử dụng, dùng để dán trực tiếp vào file authorized_keys hoặc nhập vào ô khóa SSH trên một dịch vụ lưu trữ mã nguồn.
Tôi có thể dùng cùng một cặp khóa cho cả ký số lẫn SSH không?
Bản chất khóa vẫn giống nhau bất kể mục đích sử dụng, nhưng hai trường hợp này mong đợi định dạng file khác nhau: SSH cần dòng khóa công khai OpenSSH và khóa riêng tư PEM cấu hình trong SSH client, còn công cụ ký số (hay JWT dùng RS256/ES256) thường cần trực tiếp khóa riêng tư PEM (PKCS#8) và khóa công khai PEM (SPKI). Công cụ này cho ra cả ba định dạng chỉ từ một lần tạo, nên bạn có thể dùng bất kỳ định dạng nào nơi đích yêu cầu.
Điều gì xảy ra với khóa của tôi khi đóng tab?
Nó biến mất. Không có gì được lưu trên server, cơ sở dữ liệu, hay bất kỳ tài khoản nào gắn với bạn — cặp khóa chỉ tồn tại trong bộ nhớ của tab trình duyệt trong thời gian trang còn mở. Hãy copy hoặc tải xuống khóa riêng tư trước khi đóng tab, vì không có cách nào tạo lại chính xác cặp khóa đó sau này.