Bỏ qua đến nội dung chính

Tạo Khóa Ngoại Tuyến: Hướng Dẫn Bảo Mật Air-Gapped

Việc tạo khóa tiền mã hóa trên máy tính có kết nối internet khiến chúng bị phơi bày trước malware, keylogger, chụp màn hình, chiếm quyền clipboard và rò rỉ dữ liệu từ xa. Với ví giá trị cao dùng cho lưu trữ lạnh dài hạn, tiêu chuẩn vàng là tạo khóa ngoại tuyến air-gapped: tạo khóa trên thiết bị chưa từng và sẽ không bao giờ kết nối với bất kỳ mạng nào.

Hướng dẫn này cung cấp quy trình đầy đủ theo từng bước để tạo khóa ngoại tuyến, bao gồm chọn phần cứng, thiết lập hệ điều hành, tạo khóa, xác minh và dọn dẹp an toàn.

Vì Sao Tạo Khóa Air-Gapped Quan Trọng

Mô Hình Đe Dọa

Khi bạn tạo seed phrase hoặc private key trên máy tính dùng hằng ngày, dữ liệu khóa tồn tại trong:

  • RAM — Có thể bị truy cập bởi bất kỳ tiến trình nào đang chạy trên hệ thống.
  • Ổ đĩa — Có thể bị swap ra đĩa bởi hệ thống bộ nhớ ảo của hệ điều hành.
  • Clipboard — Nếu copy-paste, mọi ứng dụng đều có thể truy cập.
  • Mạng — Nếu máy đang kết nối, malware có thể rò rỉ khóa ngay lập tức.
  • Màn hình — Malware chụp màn hình hoặc bị nhìn trộm trực tiếp.
  • Bàn phím — Keylogger (phần mềm hoặc phần cứng) ghi lại toàn bộ đầu vào.

Máy tính air-gapped loại bỏ hoàn toàn vector tấn công qua mạng. Kết hợp với quy trình vận hành bảo mật phù hợp, nó cũng giảm đáng kể hoặc loại bỏ các vector còn lại.

Ai Cần Tạo Khóa Air-Gapped?

  • Bất kỳ ai lưu trữ số tiền lớn hơn mức có thể chấp nhận mất.
  • Lưu trữ "lạnh sâu" dài hạn (nhiều năm hoặc nhiều thập kỷ).
  • Lưu ký tổ chức và quản trị ngân quỹ.
  • Bất kỳ ai muốn chuẩn bảo mật cao nhất có thể đạt được.

Với ví chi tiêu hằng ngày có số dư nhỏ, hardware wallet đã cung cấp mức bảo mật đủ tốt mà không cần độ phức tạp của quy trình air-gapped.

Lựa Chọn Phần Cứng

Tùy Chọn 1: Laptop Chuyên Dụng (Khuyến Nghị)

Mua laptop mới hoặc đã khôi phục cài đặt gốc, chỉ dùng để tạo khóa và không bao giờ kết nối internet:

  • Tháo hoặc vô hiệu hóa toàn bộ phần cứng mạng. Nếu có thể, tháo vật lý card Wi-Fi và module Bluetooth. Tối thiểu, tắt chúng trong BIOS/UEFI firmware.
  • Vô hiệu hóa camera và micro. Tháo hoặc che/ngắt kết nối vật lý.
  • Dùng laptop không có modem di động.
  • Tùy chọn tiết kiệm: ThinkPad cũ (X230, T440) — rẻ, hỗ trợ Linux tốt, dễ sửa đổi phần cứng.

Tùy Chọn 2: Raspberry Pi

Raspberry Pi (Model 3B+ hoặc 4) là máy tính bo mạch đơn chi phí thấp và không có Wi-Fi nếu dùng Pi Zero không có module không dây, hoặc nếu bạn tắt mạng:

  • Khởi động từ thẻ microSD.
  • Không có lưu trữ bền vững ngoài thẻ SD (thẻ này sẽ bị hủy sau đó).
  • Không có phần cứng không dây nếu dùng đúng model.
  • Chi phí thấp hơn ($35–$75 gồm phụ kiện).

Tùy Chọn 3: Live USB Trên Phần Cứng Sẵn Có

Khởi động Linux live USB chuyên dụng trên máy tính hiện có với toàn bộ kết nối mạng đã tắt:

  • Môi trường live chạy hoàn toàn trong RAM.
  • Không ghi dữ liệu vào ổ trong (nếu cấu hình đúng).
  • Sau khi tắt máy, RAM được xóa.
  • Rủi ro: Máy tính hiện có có thể đã bị xâm nhập ở cấp phần cứng (firmware rootkit, keylogger phần cứng) và vẫn tồn tại qua các lần khởi động OS. Thiết bị chuyên dụng sẽ loại bỏ rủi ro này.

Thiết Lập Hệ Điều Hành

Tails OS (Khuyến Nghị)

Tails là bản phân phối Linux tập trung quyền riêng tư, được thiết kế để không để lại dấu vết:

  • Khởi động từ USB và chạy hoàn toàn trong RAM.
  • Mọi kết nối mạng mặc định đi qua Tor — nhưng với mục đích air-gapped, bạn sẽ không bật mạng.
  • Thiết kế cho chế độ không lưu dấu vết: không có trạng thái bền vững trừ khi cấu hình rõ ràng.
  • Có sẵn các công cụ phổ biến và có thể chạy Python cho script tạo khóa.

Các bước thiết lập:

  1. Tải Tails ISO trên máy tính thường dùng của bạn.
  2. Xác minh chữ ký ISO bằng khóa ký của Tails.
  3. Ghi ISO vào USB bằng Tails Installer, Etcher hoặc dd.
  4. Khởi động máy air-gapped từ USB.
  5. Ở màn hình Tails Greeter, không cấu hình bất kỳ kết nối mạng nào.
  6. Xác minh không có giao diện mạng nào hoạt động: ip link show phải hiển thị tất cả giao diện ở trạng thái DOWN.

Ubuntu Live USB (Phương Án Thay Thế)

Nếu Tails không phù hợp:

  1. Tải Ubuntu ISO và xác minh checksum.
  2. Ghi vào USB.
  3. Khởi động với mạng đã tắt trong BIOS.
  4. Trong trình cài Ubuntu, chọn "Try Ubuntu" (không cài đặt).
  5. Xác minh không có kết nối mạng.

Xác Minh Tính Toàn Vẹn Air-Gap

Sau khi khởi động, xác minh air gap:

# Check that no network interfaces are UP
ip link show

# Verify no IP addresses assigned
ip addr show

# Attempt to reach the internet (should fail)
ping -c 1 8.8.8.8

# Check for Wi-Fi and Bluetooth
rfkill list all

Tất cả giao diện mạng phải ở trạng thái DOWN, không có địa chỉ IP nào được gán và lệnh ping phải thất bại. Nếu bất kỳ bài kiểm tra nào cho thấy có kết nối, hãy dừng lại và xử lý trước khi tiếp tục.

Quy Trình Tạo Khóa

Phương Pháp 1: Dùng Công Cụ SafeSeed Ngoại Tuyến

Các công cụ của SafeSeed là ứng dụng web chạy phía client, có thể chạy trong trình duyệt mà không cần kết nối internet.

Công Cụ SafeSeed

SafeSeed Seed Phrase GeneratorPaper Wallet Creator có thể được lưu để dùng ngoại tuyến. Trước khi ngắt mạng, hãy lưu toàn bộ trang web (Ctrl+S / Cmd+S), chuyển sang máy air-gapped qua USB và mở bằng trình duyệt. Mọi thao tác mật mã chạy cục bộ bằng JavaScript — không cần giao tiếp máy chủ.

Các bước:

  1. Trên máy tính thường dùng (online), truy cập công cụ SafeSeed.
  2. Lưu toàn bộ trang web vào USB.
  3. Xác minh tính toàn vẹn tệp (so sánh checksum nếu có).
  4. Chuyển USB sang máy air-gapped.
  5. Mở tệp HTML đã lưu trong trình duyệt.
  6. Tạo seed phrase.
  7. Ghi ra giấy (không lưu kỹ thuật số trên máy air-gapped).
  8. Xác minh seed phrase bằng cách nhập lại và xác nhận tạo ra cùng địa chỉ.

Phương Pháp 2: Dùng Công Cụ BIP-39 Của Ian Coleman

Công cụ Ian Coleman BIP-39 là trang HTML độc lập mã nguồn mở, được dùng rộng rãi để tạo khóa ngoại tuyến:

  1. Tải bản phát hành mới nhất từ GitHub trên máy online.
  2. Xác minh chữ ký PGP.
  3. Chuyển sang máy air-gapped qua USB.
  4. Mở bip39-standalone.html trong trình duyệt.
  5. Tạo hoặc nhập mnemonic.
  6. Chọn coin và đường dẫn dẫn xuất.
  7. Ghi lại seed phrase và các địa chỉ.

Phương Pháp 3: Entropy Dựa Trên Xúc Xắc

Để giảm tối đa niềm tin vào RNG phần mềm, hãy tạo entropy thủ công bằng xúc xắc:

  1. Dùng xúc xắc chuẩn casino (xúc xắc chính xác cạnh sắc, không phải xúc xắc bo tròn dân dụng).
  2. Tung một viên xúc xắc 99 lần để có 256 bit entropy (mỗi lần tung cho ~2.585 bit; 99 lần cho ~255.9 bit).
  3. Chuyển kết quả tung xúc xắc thành chuỗi nhị phân.
  4. Dùng công cụ BIP-39 (ngoại tuyến) để chuyển entropy nhị phân thành mnemonic.
  5. Hoặc tung 50 lần để có 128 bit entropy (cụm 12 từ).

Các phương pháp chuyển đổi xúc xắc:

  • Phương pháp base-6: Ghi mỗi lần tung (1-6), chuyển chuỗi sang nhị phân.
  • Phương pháp xúc xắc nhị phân: Dùng đồng xu (ngửa=1, sấp=0) 256 lần.
  • Xúc xắc sang nhị phân: Tung xúc xắc; nếu ra 1-3 ghi 0; nếu ra 4-6 ghi 1. Lặp lại 256 lần.

Phương pháp thứ ba lãng phí entropy nhiều nhất nhưng đơn giản nhất. Để tìm hiểu sâu về chất lượng entropy, xem hướng dẫn Entropy and Randomness.

Phương Pháp 4: Command Line (Python)

Với người dùng quen command line, script Python tối giản có thể tạo mnemonic BIP-39:

import hashlib
import os

# BIP-39 word list must be loaded from a file
with open('english.txt', 'r') as f:
wordlist = [w.strip() for w in f.readlines()]

# Generate 256 bits of entropy
entropy = os.urandom(32) # Uses OS CSPRNG

# Compute checksum
h = hashlib.sha256(entropy).digest()
checksum_bits = bin(h[0])[2:].zfill(8) # First 8 bits for 256-bit entropy

# Convert entropy to binary string
entropy_bits = bin(int.from_bytes(entropy, 'big'))[2:].zfill(256)
all_bits = entropy_bits + checksum_bits

# Split into 11-bit groups and map to words
words = []
for i in range(0, len(all_bits), 11):
index = int(all_bits[i:i+11], 2)
words.append(wordlist[index])

print(' '.join(words))

Quan trọng: Đây là ví dụ đơn giản hóa cho mục đích giáo dục. Để dùng thực tế, hãy dùng thư viện đã được kiểm toán kỹ như mnemonic từ python-mnemonic.

Xác Minh

Sau khi tạo seed phrase, hãy xác minh trước khi tin tưởng lưu trữ tài sản:

1. Xác Minh Checksum

Nhập lại seed phrase vào công cụ tạo. Nếu công cụ chấp nhận mà không lỗi, checksum hợp lệ.

2. Xác Minh Dẫn Xuất Địa Chỉ

Dẫn xuất vài địa chỉ đầu tiên cho loại tiền mã hóa mục tiêu và derivation path. Ghi lại các địa chỉ này. Sau đó, trên thiết bị khác (hoặc sau khi khởi động lại máy air-gapped), nhập lại seed phrase và xác minh tạo ra cùng địa chỉ.

3. Xác Minh Chéo Giữa Các Công Cụ

Nếu có thể, xác minh seed phrase bằng hai công cụ khác nhau (ví dụ: trình tạo SafeSeed và công cụ Ian Coleman). Cả hai phải tạo ra địa chỉ giống hệt nhau từ cùng seed phrase, derivation path và passphrase.

4. Kiểm Tra Giao Dịch Nhỏ

Trước khi lưu trữ giá trị lớn:

  1. Gửi một lượng tiền mã hóa nhỏ đến địa chỉ nhận đầu tiên.
  2. Trên thiết bị khác, khôi phục ví từ seed phrase.
  3. Xác minh số dư hiển thị và bạn có thể ký giao dịch để gửi lại.

Điều này xác nhận toàn bộ chuỗi: tạo entropy, mã hóa mnemonic, dẫn xuất seed, dẫn xuất khóa và tạo địa chỉ đều chính xác.

Ghi Lại Seed Phrase

Giấy

  • Viết rõ ràng bằng bút mực không phai trên giấy không axit.
  • Đánh số từng từ (1-24).
  • Không viết trên bề mặt có thể để lại vết hằn (không viết trên tập giấy mà vết hằn hiện xuống các tờ dưới).
  • Bảo quản trong hộp chống cháy, chống nước.

Kim Loại

  • Dập hoặc khắc lên tấm thép không gỉ.
  • Thử phương pháp viết tắt 4 chữ cái đầu nếu không gian hạn chế.
  • Xác minh khả năng đọc ngay sau khi dập.
  • Kim loại chịu được lửa và ngập nước — khuyến nghị cho lưu trữ dài hạn.

Những Điều Không Nên Làm

  • Không chụp ảnh seed phrase.
  • Không gõ vào bất kỳ tệp nào trên máy air-gapped.
  • Không in ra (máy in có bộ nhớ và khả năng kết nối mạng).
  • Không lưu vào USB.

Dọn Dẹp An Toàn

Sau khi tạo và ghi seed phrase, hãy loại bỏ mọi dấu vết trên thiết bị air-gapped:

1. Xóa Clipboard và Màn Hình

  • Đóng tất cả ứng dụng.
  • Xóa clipboard (Ctrl+C một đoạn văn bản không liên quan).

2. Tắt Máy

  • Tắt nguồn máy tính. Nội dung RAM suy giảm trong vài giây đến vài phút sau khi mất điện.
  • Để chắc chắn hơn, giữ máy tắt ít nhất 15 phút (DRAM giữ dữ liệu trong thời gian ngắn ở nhiệt độ phòng, lâu hơn trong môi trường lạnh).

3. Thiết Bị Lưu Trữ

  • Nếu dùng Tails live USB, không có gì được ghi ra đĩa. USB có thể tái sử dụng.
  • Nếu dùng thẻ SD Raspberry Pi với OS có lưu trạng thái, xóa an toàn thẻ SD (dd if=/dev/urandom of=/dev/sdX bs=1M) hoặc hủy vật lý.
  • Nếu bạn vô tình lưu bất cứ thứ gì vào ổ trong của máy air-gapped, hãy xóa an toàn.

4. USB

  • USB dùng để chuyển công cụ tạo khóa không nên chứa bất kỳ dữ liệu khóa nào nếu bạn làm đúng hướng dẫn.
  • Xác minh USB chỉ chứa tệp công cụ gốc, không có gì khác.
  • Để bảo mật tối đa, xóa sạch USB sau khi dùng.

Nâng Cao: Ký Giao Dịch Air-Gapped

Máy tính air-gapped không chỉ hữu ích cho tạo khóa mà còn cho ký giao dịch lâu dài:

Quy Trình

  1. Máy online (watch-only): Tạo giao dịch chưa ký.
  2. Chuyển dữ liệu: Chuyển giao dịch chưa ký sang máy air-gapped qua USB hoặc mã QR.
  3. Máy air-gapped: Ký giao dịch bằng private key.
  4. Chuyển dữ liệu: Chuyển giao dịch đã ký trở lại máy online.
  5. Máy online: Phát giao dịch đã ký lên mạng.

Chuyển Bằng Mã QR (Ưu Tiên)

Dùng mã QR loại bỏ hoàn toàn USB, đóng một vector malware tiềm ẩn (thiết bị USB có thể mang payload tự chạy):

  • Hiển thị giao dịch chưa ký dưới dạng mã QR trên máy online.
  • Quét mã QR bằng camera gắn với máy air-gapped.
  • Ký giao dịch.
  • Hiển thị giao dịch đã ký dưới dạng mã QR trên máy air-gapped.
  • Quét bằng máy online.

Các ví hỗ trợ ký air-gapped qua QR gồm Coldcard, Keystone và Sparrow Wallet (với thiết lập webcam).

PSBTs (Partially Signed Bitcoin Transactions)

Định dạng PSBT của Bitcoin (BIP-174) được thiết kế riêng cho quy trình air-gapped. Một PSBT chứa mọi thông tin cần để ký giao dịch mà không yêu cầu thiết bị ký có dữ liệu blockchain.

Thiết Lập Air-Gapped Đa Chữ Ký

Để đạt bảo mật cao nhất, kết hợp tạo khóa air-gapped với đa chữ ký:

  1. Tạo ba seed phrase riêng biệt trong ba phiên air-gapped riêng biệt (lý tưởng là trên các thiết bị khác nhau).
  2. Thiết lập ví đa chữ ký 2-of-3.
  3. Lưu mỗi seed phrase ở một vị trí vật lý khác nhau.
  4. Giao dịch cần ký trên hai trong ba thiết bị air-gapped.

Cách này bảo vệ trước:

  • Một thiết bị bị xâm nhập (chỉ lộ một khóa).
  • Một seed phrase bị mất (hai khóa còn lại vẫn có thể ký).
  • Một vị trí lưu trữ bị xâm nhập.

Các Lỗi Thường Gặp

Lỗi 1: Dùng Máy "Sạch" Nhưng Từng Kết Nối Internet

Xóa sạch và cài lại OS trên máy từng kết nối internet là không đủ. Malware cấp firmware (UEFI rootkit) có thể tồn tại sau khi cài lại OS. Thiết bị chuyên dụng chưa từng kết nối sẽ loại bỏ rủi ro này.

Lỗi 2: Kết Nối Máy Air-Gapped "Chỉ Một Lát"

Bất kỳ kết nối mạng nào, dù rất ngắn, đều phá vỡ air gap. Malware có thể rò rỉ private key trong mili giây. Một khi đã kết nối, thiết bị không còn được xem là air-gapped.

Lỗi 3: Dùng Máy In

Máy in thường có bộ nhớ riêng (để spool lệnh in) và nhiều máy in hiện đại có Wi-Fi hoặc Bluetooth. In seed phrase có thể lưu nó trong bộ nhớ máy in và có thể truyền ra ngoài. Hãy viết tay thay thế.

Lỗi 4: Chuyển Seed Phrase Dưới Dạng Kỹ Thuật Số

Seed phrase không bao giờ nên tồn tại dưới dạng kỹ thuật số ngoài khoảnh khắc ngắn nó hiển thị trên màn hình air-gapped. Không copy vào USB, lưu vào tệp, hoặc mã hóa thành QR để chuyển. Hãy ghi trực tiếp lên giấy hoặc dập lên kim loại.

Lỗi 5: Không Xác Minh Công Cụ Tạo Khóa

Công cụ bạn chuyển sang máy air-gapped phải được xác minh trước khi dùng. Kiểm tra hash tệp, chữ ký PGP, hoặc tối thiểu so sánh kích thước tệp. Công cụ bị can thiệp có thể tạo khóa có tính xác định mà kẻ tấn công đã biết trước.

FAQ

Vì sao không chỉ dùng hardware wallet?

Hardware wallet rất tốt và đủ cho đa số người dùng. Tạo khóa air-gapped cung cấp thêm biên độ an toàn cho lưu trữ giá trị rất lớn vì loại bỏ niềm tin vào bộ tạo số ngẫu nhiên và firmware của hardware wallet. Cách tiếp cận air-gapped cũng cho phép xác minh bằng nhiều công cụ độc lập, trong khi hardware wallet là một điểm tin cậy duy nhất.

Toàn bộ quy trình air-gapped mất bao lâu?

Với lần đầu thiết lập, dự kiến 2-4 giờ gồm chuẩn bị OS, xác minh, tạo khóa và dọn dẹp. Các lần sau trên thiết bị đã chuẩn bị sẵn mất 30-60 phút.

Có thể dùng smartphone làm thiết bị air-gapped không?

Smartphone khó air-gap hoàn toàn vì có nhiều radio (di động, Wi-Fi, Bluetooth, NFC) không phải lúc nào cũng có thể tắt vật lý. Laptop đã tháo phần cứng mạng đáng tin hơn. Một số thiết bị chuyên dụng (như ví Keystone) được thiết kế làm thiết bị ký air-gapped.

Tạo khóa air-gapped có cần cho mọi ví không?

Không. Với ví chi tiêu hằng ngày số tiền nhỏ, hardware wallet uy tín hoặc thậm chí software wallet được bảo vệ tốt là đủ. Tạo khóa air-gapped được khuyến nghị cho lưu trữ lạnh dài hạn giá trị lớn.

Cập nhật phần mềm trên máy air-gapped như thế nào?

Bạn không cập nhật. Máy air-gapped nên chạy cùng một phiên bản phần mềm vô thời hạn. Nếu cần phiên bản công cụ mới hơn, tải và xác minh trên máy online, chuyển qua USB, rồi xác minh checksum trên máy air-gapped trước khi dùng.

Nếu bộ tạo số ngẫu nhiên của máy air-gapped bị lỗi thì sao?

Đó là lý do entropy dựa trên xúc xắc tồn tại như phương án dự phòng. Nếu bạn không tin mọi RNG phần cứng và phần mềm, hãy tự tạo entropy bằng xúc xắc và đưa vào công cụ BIP-39. Độ an toàn của seed phrase khi đó chỉ phụ thuộc chất lượng lần tung xúc xắc, không phụ thuộc linh kiện điện tử nào.

Malware có thể vượt air gap không?

Về lý thuyết, các tác nhân cấp quốc gia tinh vi đã chứng minh kỹ thuật vượt air gap bằng phát xạ điện từ, tín hiệu âm thanh hoặc nhấp nháy LED. Trong thực tế, các tấn công này đòi hỏi khoảng cách vật lý gần, thiết bị chuyên dụng, và vượt xa năng lực của phần lớn kẻ trộm crypto thông thường. Với đa số người dùng, air gap được duy trì đúng cách gần như không thể xuyên thủng.

Hướng Dẫn Liên Quan