Trình Tạo Khóa API Ngẫu Nhiên - Khóa 32 Ký Tự Miễn Phí An Toàn
Tạo khóa API an toàn về mặt mật mã một cách tức thì. Công cụ trực tuyến miễn phí tạo ra các khóa chữ và số ngẫu nhiên 32 ký tự để xác thực. Tạo khóa phía máy khách, không lưu trữ.
Trình Tạo Khóa API
Tài liệu hướng dẫn
Trình tạo khóa API ngẫu nhiên là công cụ tạo ra một chuỗi chữ cái và chữ số ngẫu nhiên để dùng làm mã giống mật khẩu giữa hai chương trình máy tính. Công cụ này chạy hoàn toàn bên trong trình duyệt web của người truy cập. Người dùng có thể chọn độ dài khóa từ 8 đến 128 ký tự, với 32 ký tự được đặt làm mặc định.
Khóa API là gì?
Khóa API là một chuỗi ký tự mà chương trình gửi kèm một yêu cầu để chứng minh chương trình được phép sử dụng một dịch vụ. Máy chủ web kiểm tra khóa trước khi trả lời yêu cầu. Không giống tên người dùng và mật khẩu, khóa API thường xác định một ứng dụng hoặc tập lệnh, không phải một người.
Khóa hoạt động tốt nhất khi không ai có thể đoán được chúng. Trình tạo sử dụng tính ngẫu nhiên thực sự sẽ tránh được các mẫu thường xuất hiện trong khóa do con người nhập, chẳng hạn như ký tự lặp lại hoặc những từ ngắn, dễ nhớ.
Trình tạo này hoạt động như thế nào
Công cụ tạo mỗi khóa từ một tập cố định gồm 62 ký tự: 26 chữ cái viết hoa A–Z, 26 chữ cái viết thường a–z và 10 chữ số 0–9. Với khóa có độ dài n, công cụ lần lượt chọn n ký tự từ tập đó.
Mỗi ký tự được lấy từ Web Crypto API của trình duyệt, cụ thể là crypto.getRandomValues(). Đây là bộ sinh số ngẫu nhiên an toàn về mặt mật mã (CSPRNG), không giống Math.random() của JavaScript, vốn có thể dự đoán và không phù hợp với các giá trị nhạy cảm về bảo mật.
Để chọn công bằng một ký tự trong 62 khả năng từ một byte ngẫu nhiên (256 giá trị có thể có), trình tạo không thể chỉ dùng byte % 62. Vì 256 không chia hết cho 62, phép modulo đơn thuần sẽ khiến một vài ký tự đầu tiên trong tập có khả năng xuất hiện cao hơn một chút so với các ký tự còn lại. Công cụ tránh điều này bằng phương pháp lấy mẫu loại bỏ: loại bỏ mọi byte ngẫu nhiên có thể gây ra sai lệch đó rồi lấy byte mới. Vì vậy, mỗi ký tự trong khóa cuối cùng có cơ hội xuất hiện ngang nhau, không thiên lệch, tại mỗi vị trí.
Cách tạo khóa API
- Nhập độ dài khóa từ 8 đến 128 ký tự hoặc giữ giá trị mặc định là 32. Số nằm ngoài phạm vi này sẽ bị đánh dấu và độ dài được phép gần nhất sẽ được dùng thay thế.
- Nhấp vào “Generate”. Khóa xuất hiện trong một hộp văn bản được tạo hoàn toàn trong trình duyệt. Nhấp vào hộp sẽ chọn toàn bộ khóa.
- Nhấp vào “Copy” để sao chép khóa vào bộ nhớ tạm. Một số trình duyệt sẽ yêu cầu cấp quyền trong lần đầu tiên.
- Nhấp vào “Regenerate” để tạo khóa mới có cùng độ dài hoặc nhấp vào “Reset” để xóa khóa và đưa độ dài về giá trị mặc định là 32.
Bên dưới khóa, công cụ hiển thị ba thông số: độ dài khóa tính bằng ký tự, kích thước tập ký tự (luôn là 62) và entropy tính bằng bit.
Không có khóa nào được gửi đến máy chủ, ghi nhật ký hoặc lưu trữ. Việc tạo khóa diễn ra bằng mã JavaScript cục bộ, nên khi kiểm tra hoạt động mạng của trình duyệt trong lúc tạo khóa sẽ không thấy yêu cầu gửi đi.
Cách tính số lượng khóa có thể có
Số lượng khóa khác nhau mà một độ dài nhất định có thể tạo ra tuân theo công thức đơn giản:
trong đó N là số khóa có thể có, c là kích thước của tập ký tự và n là độ dài khóa.
Kích thước tập ký tự của công cụ này luôn là 62. Với độ dài mặc định là 32:
N = 62³² ≈ 2,27 × 10⁵⁷
Con số này cũng được biểu thị dưới dạng entropy, đo bằng bit, theo công thức:
trong đó H là entropy tính bằng bit.
Với khóa gồm 32 ký tự: 32 × log₂(62) ≈ 32 × 5,95 ≈ 190,5 bit.
Ví dụ tính toán: Thời gian thử mọi khóa
Giả sử kẻ tấn công có thể kiểm tra một tỷ (10⁹) khóa mỗi giây, một tốc độ nhanh đến phi thực tế đối với bất kỳ hệ thống thực nào. Việc thử mọi khóa gồm 32 ký tự có thể có sẽ mất:
2,27 × 10⁵⁷ ÷ 10⁹ = 2,27 × 10⁴⁸ giây ≈ 7,2 × 10⁴⁰ năm
Để so sánh, vũ trụ có tuổi khoảng 1,4 × 10¹⁰ năm. Việc tìm kiếm vét cạn qua mọi khóa có thể có không phải là mối đe dọa thực tế ở độ dài này. Khóa ngắn hơn làm con số giảm nhanh: khóa gồm 8 ký tự chỉ có 62⁸ ≈ 2,18 × 10¹⁴ giá trị có thể có, một máy tính nhanh có thể tìm hết trong vài ngày.
Vì sao các ứng dụng sử dụng khóa API
Khóa API cung cấp cho dịch vụ một cách đơn giản để xác định ứng dụng nào đang gửi yêu cầu. Điều này quan trọng vì một vài lý do.
Xác thực. Máy chủ có thể từ chối các yêu cầu không có khóa hợp lệ, qua đó ngăn chặn phần lớn hành vi lạm dụng thông thường.
Theo dõi mức sử dụng. Vì mỗi máy khách có thể giữ một khóa khác nhau, dịch vụ có thể đo mức sử dụng của từng máy khách và áp dụng giới hạn tốc độ riêng cho từng khóa.
Thu hồi. Một khóa bị lộ duy nhất có thể bị vô hiệu hóa mà không ảnh hưởng đến bất kỳ máy khách nào khác, vì mỗi khóa hoạt động độc lập.
Khóa API dễ triển khai hơn OAuth 2,0, một tiêu chuẩn xác thực dựa trên các mã thông báo tạm thời được tự động gia hạn. OAuth phù hợp với các dịch vụ công khai xử lý dữ liệu cá nhân của người dùng. Khóa API thường được dùng cho các công cụ nội bộ, tập lệnh và các lệnh gọi giữa các dịch vụ, trong đó việc sử dụng một thông tin xác thực có thời hạn dài là chấp nhận được.
Biện pháp bảo mật dành cho khóa API
Một số biện pháp có thể giảm nguy cơ khóa bị lộ:
- Không lưu khóa trong mã nguồn. Lịch sử kiểm soát phiên bản khó xóa, còn các kho mã công khai liên tục được quét để tìm thông tin xác thực bị lộ. Thay vào đó, hãy lưu khóa trong biến môi trường hoặc trình quản lý bí mật.
- Định kỳ thay đổi khóa. Thay khóa vài tháng một lần sẽ giới hạn khoảng thời gian khóa bị lộ còn có ích với kẻ tấn công.
- Chỉ cấp quyền truy cập tối thiểu mà khóa cần. Khóa chỉ dùng để đọc dữ liệu không nên đồng thời có quyền ghi hoặc xóa dữ liệu.
- Theo dõi hoạt động bất thường, chẳng hạn như số lượng yêu cầu từ một khóa đột ngột tăng vọt.
Hạn chế
Công cụ này không lưu lại các khóa đã tạo, nên không thể đảm bảo rằng một khóa chưa từng được tạo trước đó. Xác suất hai khóa ngẫu nhiên gồm 32 ký tự trùng nhau là khoảng 1 trên 2,27 × 10⁵⁷, đủ gần bằng không cho mục đích sử dụng thông thường; tuy nhiên, các hệ thống cần bảo đảm tuyệt đối về tính duy nhất, chẳng hạn khóa chính cơ sở dữ liệu, nên kiểm tra các giá trị mới với những giá trị hiện có trên máy chủ.
Tập ký tự được cố định gồm chữ cái viết hoa, chữ cái viết thường và chữ số. Tập này không bao gồm các ký hiệu như ! hoặc -, nhờ đó khóa có thể được dán an toàn vào hầu hết URL, tiêu đề và tệp cấu hình mà không cần thoát ký tự.
Các câu hỏi thường gặp
Trình tạo khóa API là gì?
Đây là công cụ tạo ra các chuỗi ngẫu nhiên để dùng làm thông tin xác thực giữa các ứng dụng phần mềm. Công cụ này tạo khóa có độ dài từ 8 đến 128 ký tự, lấy từ 62 ký tự có thể có và sử dụng bộ sinh số ngẫu nhiên an toàn về mặt mật mã của trình duyệt.
Khóa từ công cụ này có đủ an toàn để dùng trong môi trường vận hành thực tế không?
Bản thân tính ngẫu nhiên được bảo mật bằng mật mã. Mức độ an toàn tổng thể cũng phụ thuộc vào cách khóa được lưu trữ và truyền đi sau đó: không bao giờ đưa khóa vào hệ thống quản lý mã nguồn, luôn gửi khóa qua HTTPS và định kỳ thay khóa.
Nên chọn độ dài bao nhiêu?
Giá trị mặc định 32 ký tự tạo ra khoảng 2,27 × 10⁵⁷ tổ hợp có thể có, nhiều hơn rất nhiều so với số lượng mà bất kỳ cuộc tấn công vét cạn thực tế nào có thể tìm kiếm. Các khóa ngắn hơn, chẳng hạn 16 ký tự, có thể phù hợp với các công cụ nội bộ ít rủi ro. Khóa quá dài chỉ tăng thêm rất ít mức bảo vệ nhưng khó lưu trữ và dán hơn.
Có thể đặt độ dài tùy chỉnh không?
Có. Trường độ dài chấp nhận mọi số nguyên từ 8 đến 128. Tập ký tự (A–Z, a–z, 0–9) vẫn được giữ cố định.
Công cụ có lưu trữ hoặc truyền đi các khóa đã tạo không?
Không. Mỗi khóa được tạo bằng JavaScript cục bộ trong trình duyệt. Không có dữ liệu nào được gửi đến máy chủ, ghi nhật ký hoặc lưu lại.
Khóa API khác mã thông báo OAuth như thế nào?
Khóa API là thông tin xác thực có thời hạn dài và vẫn hợp lệ cho đến khi bị thu hồi. Mã thông báo OAuth tự động hết hạn sau một khoảng thời gian nhất định và có thể được làm mới mà không cần người dùng trực tiếp tham gia. OAuth phù hợp với các dịch vụ công khai xử lý dữ liệu cá nhân; khóa API phù hợp với các mục đích đơn giản hơn, nội bộ hoặc phát triển.
Công cụ này hỗ trợ những trình duyệt nào?
Bất kỳ trình duyệt nào cung cấp Web Crypto API, bao gồm mọi phiên bản Chrome, Firefox, Safari, Edge và Opera được phát hành trong thập kỷ qua. Nếu API đó không có, công cụ sẽ hiển thị thông báo lỗi. Công cụ không bao giờ chuyển sang dùng Math.random(), vì cách này không an toàn.