Public Key và Private Key là gì ? Cách hoạt động, khi nào sử dụng và hướng dẫn tạo chi tiết
Trong bảo mật hệ thống, đặc biệt là khi làm việc với SSH, VPS, Git hoặc mã hóa dữ liệu, bạn sẽ thường xuyên nghe đến hai khái niệm Public Key và Private Key. Đây là nền tảng của cơ chế mã hóa bất đối xứng (Asymmetric Encryption) giúp xác thực và truyền dữ liệu an toàn trên Internet. Bài viết này sẽ giúp bạn nắm rõ về Public Key và Private Key
Bài viết này sẽ chuyên về kỹ thuật, không có hình ảnh, hơi khô khan, nhưng bạn đọc và làm theo sẽ dễ hiểu hơn
Public Key và Private Key là gì ?
Public Key và Private Key là một cặp khóa trong cơ chế mã hóa bất đối xứng, trong đó Public Key có thể chia sẻ công khai để mã hóa dữ liệu hoặc xác minh chữ ký, còn Private Key phải được giữ bí mật và dùng để giải mã hoặc ký dữ liệu
Public Key
Public Key là khóa công khai
Đặc điểm:
- Có thể chia sẻ cho bất kỳ ai
- Dùng để mã hóa dữ liệu
- Không thể dùng để giải mã dữ liệu đã mã hóa bằng chính nó
Ví dụ:
- Được lưu trên server
- Dùng để xác thực SSH
- Dùng trong SSL/TLS
Private Key
Private Key là khóa bí mật
Đặc điểm:
- Chỉ chủ sở hữu được giữ
- Không được chia sẻ cho người khác
- Dùng để giải mã dữ liệu
Nếu ai đó có được Private Key, họ có thể truy cập vào hệ thống hoặc dữ liệu được bảo vệ

Cách Public Key và Private Key hoạt động
Nguyên lý hoạt động của cặp khóa như sau:
- Hệ thống tạo ra một cặp khóa
- Public Key
- Private Key
- Public Key được chia sẻ cho server hoặc người nhận
- Khi dữ liệu được mã hóa bằng Public Key
- Chỉ có Private Key tương ứng mới có thể giải mã
Giả sử bạn có một ổ khóa (Public Key) và chìa khóa (Private Key). Bạn có thể gửi ổ khóa cho nhiều người, khi họ muốn gửi dữ liệu cho bạn, họ khóa dữ liệu bằng ổ khóa đó, sau đó chỉ có bạn dùng Private Key mới mở được
Public Key và Private Key được sử dụng khi nào ?
Cặp khóa này được sử dụng rất nhiều trong các hệ thống bảo mật hiện đại như:
1. SSH đăng nhập VPS / Server
Đây là trường hợp phổ biến nhất, thay vì đăng nhập bằng mật khẩu thì bạn dùng SSH Key Authentication
- Public Key lưu trên server
- Private Key lưu trên máy cá nhân
Khi kết nối SSH, server sẽ xác thực bằng khóa thay vì mật khẩu.
Ưu điểm:
- An toàn hơn
- Không bị brute force password
- Đăng nhập nhanh hơn
2. Git (GitHub, GitLab)
Public Key được dùng để xác thực khi:
- Push code
- Pull code
- Clone repository
Ví dụ:
git@github.com:user/repo.gitGitHub sẽ kiểm tra Public Key đã đăng ký trong tài khoản.
3. SSL / HTTPS
Website HTTPS sử dụng cặp khóa:
- Public Key nằm trong SSL Certificate
- Private Key nằm trên server
Trình duyệt dùng Public Key để mã hóa dữ liệu gửi đến server
4. Mã hóa dữ liệu
Public Key / Private Key được sử dụng trong:
- PGP Email
- Blockchain
- Cryptocurrency wallet
- Digital Signature
Hướng dẫn tạo Public Key và Private Key
Có nhiều cách để tạo cặp khóa, phổ biến nhất là dùng SSH Keygen
Tạo SSH Key trên Linux / Mac
Mở terminal và chạy:
ssh-keygen -t rsa -b 4096Hệ thống sẽ hỏi chỗ bạn muốn lưu key
Enter file in which to save the keyNhấn Enter để lưu mặc định
~/.ssh/id_rsaSau khi tạo xong sẽ có
id_rsa
id_rsa.pubTrong đó:
- id_rsa = Private Key
- id_rsa.pub = Public Key
Tạo SSH Key trên Windows
Mở PowerShell và nhập
ssh-keygen -t ed25519Sau đó hệ thống sẽ hỏi chỗ bạn muốn lưu key “Enter file in which to save the key“. Nhấn Enter để lưu mặc định

Trong hình có dòng Overwrite là do máy có key sẵn nên hỏi có muốn ghi đè không, nhấn y (yes) để đồng ý hoặc n (no) là không
Nhập passphrase
Passphrase là một lớp bảo mật bổ sung cho Private Key. Khi bạn đặt passphrase, mỗi lần sử dụng Private Key để đăng nhập SSH, hệ thống sẽ yêu cầu nhập thêm passphrase này
Bạn có thể nhấn Enter để bỏ qua
Lưu ý:
- Nếu quên passphrase, bạn sẽ không thể sử dụng Private Key đó
- Có thể dùng ssh-agent để lưu passphrase tạm thời, giúp không phải nhập lại mỗi lần đăng nhập SSH

- Your indentification chính là Private Key, được lưu tại C:\Users\username/.ssh/
- Your public key chính là Public Key, được lưu tại C:\Users\username/.ssh/ với đuôi .pub
Cách sử dụng Public Key để đăng nhập SSH
Bước 1: Copy Public Key
- Trên Linux/Mac:
cat ~/.ssh/id_ed25519.pub- Trên Windows PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pubBạn sẽ thấy một chuỗi dạng
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user@pcHãy copy toàn bộ dòng này
Bước 2: Thêm Public Key vào VPS
- Đăng nhập VPS bằng mật khẩu lần đầu
ssh root@IP_VPS- Sau đó tạo thư mục SSH nếu chưa có
mkdir -p ~/.sshTạo file authorized_keys:
nano ~/.ssh/authorized_keysDán Public Key của bạn vào, lưu lại (Ctrl+O, Enter) và thoát (Ctrl+X)

Bước 4: Phân quyền cho SSH
Đây là bước rất quan trọng, nếu quyền sai, SSH sẽ từ chối key. Chạy các lệnh sau
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysNếu dùng user khác root:
chown -R user:user ~/.sshBước 5: Đăng nhập VPS bằng SSH Key
Bây giờ bạn có thể đăng nhập VPS bằng Private Key, mở PowerShell và nhập
ssh root@IP_VPSNếu Private Key nằm đúng vị trí ~/.ssh, SSH sẽ tự động dùng key. Hoặc chỉ định key thủ công
ssh -i ~/.ssh/id_ed25519 root@IP_VPSNếu cấu hình đúng, hệ thống sẽ đăng nhập ngay mà không cần mật khẩu

Các thuật toán khóa phổ biến
Một số thuật toán tạo key thường dùng:
| Thuật toán | Độ bảo mật | Khuyến nghị |
|---|---|---|
| RSA | Cao | Phổ biến |
| DSA | Thấp | Không khuyến nghị |
| ECDSA | Cao | Tốt |
| ED25519 | Rất cao | Khuyến nghị |
Hiện nay ED25519 được đánh giá:
- Nhanh hơn
- Bảo mật tốt hơn
- Khóa nhỏ hơn
Một số lưu ý bảo mật quan trọng
Để bảo vệ hệ thống khi sử dụng SSH Key
Không bao giờ chia sẻ Private Key
- Lưu Private Key trên máy cá nhân
- Đặt quyền truy cập 600
chmod 600 ~/.ssh/id_rsaSử dụng Passphrase
Nếu không an tâm khi giữ Private Key bên mình, bạn có thể cân nhắc sử dụng thêm Passphrase
Không upload Private Key lên Git
Đây là lỗi rất phổ biến, nếu lỡ lộ Private Key bạn cần thực hiện ngay lập tức để tránh rủi ro:
- Xóa key cũ khỏi server
- Tạo cặp key mới
Kết luận
Public Key và Private Key là nền tảng quan trọng trong hệ thống mã hóa và bảo mật hiện đại. Chúng giúp xác thực danh tính, bảo vệ dữ liệu và thay thế phương thức đăng nhập bằng mật khẩu kém an toàn.
- Public Key có thể chia sẻ công khai
- Private Key phải được giữ bí mật
- Hai khóa hoạt động theo cơ chế mã hóa bất đối xứng
- Được sử dụng rộng rãi trong SSH, Git, HTTPS và blockchain
Việc hiểu và sử dụng đúng Public Key và Private Key sẽ giúp bạn bảo vệ hệ thống server, VPS và dữ liệu một cách an toàn hơn
Tham khảo: VPS giá rẻ
