Tài liệu Kỹ thuật Bảo mật

Kiến trúc Bảo mật
& Mã hóa Đầu cuối Đầu tiên

Nhiều khách hàng đã lựa chọn AIGet Chatbot chính vì tính năng đặc biệt này. Giờ đây bạn không còn nỗi lo rò rỉ thông tin khách hàng khi phải dùng Chatbot hay Messenger Automation bên ngoài, kể cả của các Công ty lớn như F., Z.,...

AIGet Chatbot không những bảo mật cho dữ liệu của bạn, mà còn công khai mã nguồn và hướng dẫn bạn tự kiểm tra cơ chế này.

Hệ thống AI Chatbot Widget tại www.aiget.art được xây dựng theo nguyên lý Zero-Knowledge End-to-End Encryption (E2EE) – đảm bảo quyền riêng tư tuyệt đối cho mọi dữ liệu hội thoại.

0% Khả năng đọc trộm dữ liệu
2048-bit Khóa RSA-OAEP Asymmetric
256-bit Khóa AES-GCM Symmetric

Cam kết Bảo mật Cốt lõi

Chúng tôi không thể đọc, giải mã hay can thiệp vào lịch sử chat và ghi chú của doanh nghiệp bạn trên cơ sở dữ liệu.

🔒

Mã hóa Đầu-Cuối (E2EE)

Toàn bộ tin nhắn và thông tin ghi chú form khách hàng được mã hóa trực tiếp trong trình duyệt trước khi truyền tải.

🛡️

Zero-Knowledge Server

Khóa bí mật (Private Key) chỉ lưu trữ tại trình duyệt của bạn. Máy chủ AIGet hoàn toàn không sở hữu khóa giải mã.

♻️

Database mù (Blind DB)

Lưu trữ dữ liệu mã hóa (Ciphertext) ở bảng an toàn chatbot_history_safe. Lộ dữ liệu DB vẫn an toàn 100%.

1

Kiến trúc Trình duyệt Frontend & Mã hóa E2EE

Web Crypto API – Asymmetric Cryptography trong trình duyệt của bạn

🔑

Mã hóa Lai (Hybrid Encryption)

Trình duyệt khách truy cập tự tạo một khóa phiên ngẫu nhiên AES-GCM 256-bit. Khóa phiên này được mã hóa bằng khóa công khai RSA-OAEP 2048-bit của chủ website trước khi gửi lên máy chủ.

Định dạng gói E2EE trong DB aiget_e2ee:v1:<encrypted_session_key>:<iv>:<ciphertext>
🏖️

Cô lập Khóa Bí mật tuyệt đối (Private Key Isolation)

Khóa bí mật (Private Key) được xuất ra dưới dạng file .pem và chỉ được lưu trữ trong localStorage / sessionStorage tại trình duyệt của chủ sở hữu website phục vụ cho việc giải mã xem log. Máy chủ hoàn toàn không lưu trữ và không bao giờ nhận được khóa này.

🗑️

Xác thực và mã hóa thông tin liên hệ (Notes Field Encryption)

Khi khách hàng điền các form nhập liệu, toàn bộ trường thông tin đặc biệt (email, số điện thoại, lời nhắn) được gộp lại, mã hóa cục bộ thành ciphertext và đẩy lên trường notes của database, ngăn chặn hoàn toàn việc rò rỉ dữ liệu nhạy cảm.

2

Kiến trúc Máy chủ Stateless Proxy

Google Cloud Run / Vercel Serverless – Không lưu trữ plaintext

🌀

Stateless Processing (Xử lý không lưu vết)

Toàn bộ máy chủ API backend chạy ở chế độ stateless. Để duy trì ngữ cảnh trò chuyện cho AI, trình duyệt khách gửi kèm danh sách hội thoại đã được giải mã cục bộ trực tiếp trong RAM của yêu cầu hiện tại. API chỉ chuyển tiếp thông tin này đến nhà cung cấp LLM qua RAM và không bao giờ ghi plaintext xuống disk.

Mù thông tin giải mã (Zero Decryption Capabilities)

Do máy chủ hoàn toàn không có khóa bí mật (Private Key), máy chủ không có khả năng đọc hoặc giải mã bất kỳ dữ liệu cũ nào từ cơ sở dữ liệu để phục vụ cho các tiến trình xử lý ngầm, đảm bảo tính riêng tư tuyệt đối cho hệ thống.

3

Lưu trữ Cơ sở Dữ liệu mù (Blind Database)

Google Cloud SQL MySQL – Table chatbot_history_safe

🗄️

Bảo vệ dữ liệu ngay cả khi bị hack Database (Data Breach Immunity)

Lịch sử trò chuyện và các thông tin ghi chú được lưu trữ hoàn toàn dưới dạng ciphertext trong bảng chatbot_history_safe. Kẻ tấn công hoặc quản trị viên cơ sở dữ liệu nếu truy cập vào SQL cũng chỉ thấy các chuỗi ký tự base64 vô nghĩa đã được mã hóa.

MySQL Record user_message: "aiget_e2ee:v1:Am9D...:iv_data...:cipher..."
bot_response: "aiget_e2ee:v1:Am9D...:iv_data...:cipher..."
notes: "aiget_e2ee:v1:Am9D...:iv_data...:cipher..."

Hướng dẫn Sử dụng Khóa E2EE User Guide

Quy trình vận hành, quản lý khóa bảo mật và kích hoạt Zero-Knowledge cho tài khoản của bạn.

Bạn muốn thử nghiệm cơ chế mã hóa / giải mã E2EE cục bộ và xem mã nguồn công khai?
Thử nghiệm ngay
Bạn có tệp tin lịch sử xuất bản JSON và muốn giải mã an toàn offline?
Giải mã lịch sử
1

Kích hoạt E2EE (Chỉ dành cho các gói trả phí)

Tính năng Mã hóa đầu cuối (E2EE) chỉ áp dụng cho người dùng thuộc các gói dịch vụ có phí (Paid Plans). Bạn có thể bật tùy chọn E2EE tại mục Cài đặt trên trang quản trị Manage.html sau khi nâng cấp tài khoản.

2

Khởi tạo và tải về Cặp Khóa Bảo mật

Tại giao diện Cài đặt E2EE, nhấn nút "Tạo Khóa Mới". Hệ thống sẽ sinh cặp khóa RSA-OAEP trên trình duyệt của bạn. Trình duyệt sẽ tự động gửi khóa công khai (Public Key) lên server để mã hóa các cuộc gọi chat mới và tự động tải khóa bí mật (Private Key) về thiết bị của bạn dưới dạng file .pem.

3

Cất giữ Khóa Bí mật cẩn thận

CẢNH BÁO QUAN TRỌNG: Vì hệ thống được xây dựng theo mô hình Zero-Knowledge, máy chủ AIGet không lưu trữ Private Key của bạn. Nếu bạn làm mất file Private Key và xóa dữ liệu trình duyệt, toàn bộ lịch sử trò chuyện đã mã hóa của bạn sẽ bị mất vĩnh viễn và không thể khôi phục lại dưới bất kỳ hình thức nào.

4

Giải mã Xem Lịch sử Ngoại tuyến (decrypto_test)

Để bảo mật tối đa và tránh việc nhập Private Key trên trang quản trị trực tuyến, bạn có thể xuất dữ liệu JSON tại trang Lịch sử Chat, sau đó truy cập công cụ decrypto_test. Công cụ này hoạt động hoàn toàn cục bộ, hỗ trợ chạy offline không cần mạng, giúp giải mã an toàn các bản ghi mà không lo rò rỉ khóa.

Hướng dẫn Kiểm tra Thực tế Audit Checklist

Chúng tôi khuyến khích bộ phận An ninh thông tin của Khách hàng tự thực hiện kiểm tra Live Audit để xác thực các cam kết trên.

1

Kiểm tra Network trên Trình duyệt

Bật F12 (Developer Tools) → Tab Network → Nhắn tin và kiểm tra payload. Đối với các kịch bản QA có sẵn, trình duyệt sẽ xử lý cục bộ và gọi /get_qa_result với 0% dữ liệu lịch sử hoặc plaintext được gửi lên. Nếu cần gọi AI (/ai_only_handler), bạn sẽ thấy tham số message chứa chuỗi E2EE aiget_e2ee:v1:.... Bản tin text thường và decrypted_history chỉ được truyền tạm thời để máy chủ chuyển tiếp đến OpenAI làm ngữ cảnh, và tuyệt đối không được lưu trữ.

2

Kiểm tra cô lập Khóa bí mật (Private Key) tại Trang Cấu hình (manage.html)

Bật F12 (Developer Tools) → Tab Network. Tiến hành nhấp nút "Tạo Khóa Mới" hoặc tải file Private Key lên. Hãy kiểm tra các gói tin gửi đi (request payload) tới API máy chủ như /api/e2ee/config. Bạn sẽ thấy chỉ có khóa công khai (Public Key) được gửi lên máy chủ; toàn bộ chuỗi PEM chứa khóa bí mật (Private Key) hoàn toàn nằm lại cục bộ trong trình duyệt tại máy của bạn.

3

Kiểm tra bảo mật tại Trang Giải mã Offline (decrypto_test)

Bật F12 → Tab Network hoặc ngắt kết nối mạng hoàn toàn. Nhập Private Key và tải tệp JSON lịch sử đã xuất để thực hiện giải mã cục bộ. Hãy giám sát danh sách Network truyền tải hoặc chạy ngoại tuyến: tuyệt đối không có bất kỳ gói tin mạng nào gửi khóa Private Key hay dữ liệu của bạn đi. Mọi thao tác giải mã đều thực hiện cục bộ bằng Web Crypto API.

Đại diện Đội ngũ Kỹ thuật Hệ thống