Security & Privacy
Giải thích chi tiết DVDAddin xử lý data như thế nào — data flow, encryption, third-party services.
Data flow tổng quan
┌─────────────────┐
│ Workbook Excel │ (local trên máy bạn)
└────────┬────────┘
│
↓ (chỉ data bạn chủ động dịch / hỏi AI / gửi đi)
┌─────────────────────────────────────────────┐
│ DVDAddin (chạy local) │
├─────────────────────────────────────────────┤
│ • 47 hàm UDF tính toán local │ ← KHÔNG ra mạng
│ • Dịch thuật (Google / Gemini / ChatGPT…) │ ← Ra mạng
│ • Trợ lý AI, OCR, Trích bảng, Ghi âm→chữ │ ← Ra mạng
│ • DVD Chat (nhắn tin nhóm) │ ← Ra mạng
│ • Kết nối Server (LAN hoặc MQTT) │ ← Ra mạng (khi bật)
│ • License heartbeat (30 phút/lần) │ ← Ra mạng (chỉ JWT + machineId)
│ • Kiểm tra cập nhật (khi bạn bấm) │ ← Ra mạng (chỉ version)
└─────────────────────────────────────────────┘
│
↓ HTTPS
┌─────────────────────────────────────────────────────────────┐
│ Dịch vụ bên thứ ba (chỉ khi user chủ động dùng) │
├─────────────────────────────────────────────────────────────┤
│ • translate.google.com/m (Dịch — Google) │
│ • generativelanguage.googleapis.com (Gemini) │
│ • api.openai.com (ChatGPT, nếu config) │
│ • api.groq.com (Groq, nếu config) │
│ • integrate.api.nvidia.com (NVIDIA NIM, nếu config) │
│ • *.firebasedatabase.app (DVD Chat) │
│ • open.er-api.com / api.frankfurter.app (hàm DVDFx) │
│ • PriceBoard.vcbs.com.vn (hàm dvdStock) │
└─────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│ Cloudflare Worker — dvdaddin-license-server…workers.dev │
├─────────────────────────────────────────────────────────────┤
│ • Đăng nhập / heartbeat / neo ngày bắt đầu Trial │
│ • Đơn hàng + bảng giá (mua bản quyền) │
│ • Feed cập nhật (/api/update/latest) │
│ • KHÔNG nhận nội dung workbook │
└─────────────────────────────────────────────────────────────┘Loại data và destination
| Loại data | Có ra mạng? | Đi đâu? |
|---|---|---|
| Nội dung workbook (giá trị ô nói chung) | KHÔNG | — |
| Tên file / đường dẫn | KHÔNG | — |
| Kết quả 47 hàm UDF tính toán | KHÔNG | — |
| Text bạn chủ động dịch | Có | Google / Gemini / OpenAI / Groq / NVIDIA |
| Câu hỏi + vùng ô đính kèm trong Trợ lý AI | Có | Nhà cung cấp AI đang chọn |
| Ảnh / PDF bạn OCR hoặc Trích bảng | Có | Gemini (mặc định) hoặc OpenAI / Groq / NVIDIA |
| File âm thanh bạn chuyển thành chữ | Có | OpenAI hoặc Groq (endpoint /audio/transcriptions) |
| Tin nhắn + file trong DVD Chat | Có | Firebase Realtime DB + Firebase Storage (asia-southeast1) |
| Ô và định dạng khi bật Kết nối Server | Có | Máy host trong LAN, hoặc broker MQTT bạn khai |
| Email + mật khẩu đăng nhập license | Chỉ khi login | Cloudflare Worker |
| Machine ID (băm SHA-256, 16 ký tự) | Có, kèm mọi lệnh gọi license | Cloudflare Worker |
| Tên máy Windows + phiên bản OS | Có, khi neo Trial / đăng nhập | Cloudflare Worker |
| Phiên bản add-in | Khi bấm Kiểm tra cập nhật | Cloudflare Worker |
Đọc kỹ dòng "tên máy"
DVDAddin có gửi tên máy Windows (Environment.MachineName) và chuỗi phiên bản hệ điều hành lên máy chủ license, kèm trong payload neo ngày dùng thử và đăng nhập. Đây là dữ liệu chống gian lận trial, nhưng nó không phải "không gửi gì cả" — nếu tên máy của bạn chứa thông tin nhạy cảm (tên người, mã dự án), hãy biết điều đó.
Machine ID được tính thế nào
MachineId = SHA-256( MachineGuid | TenMay | PhienBanOS ) → lấy 16 ký tự hex đầuMachineGuid đọc từ HKLM\SOFTWARE\Microsoft\Cryptography (view 64-bit). Ba thành phần được trộn để hai máy nhân bản từ cùng một image vẫn ra ID khác nhau.
Hệ quả cần biết: đổi tên máy Windows hoặc nâng cấp phiên bản Windows sẽ đổi Machine ID — license coi đó là một máy mới và có thể yêu cầu đăng nhập lại.
Encryption layers
1. Network — HTTPS
Mọi lệnh gọi ra ngoài đều qua HTTPS, dùng đúng stack TLS của Windows/.NET 8 (mặc định TLS 1.2/1.3). Add-in không làm certificate pinning: nó tin kho chứng chỉ gốc của Windows, nên proxy kiểm tra nội dung của doanh nghiệp (đã cài root CA riêng) vẫn giải mã được lưu lượng.
2. License file (HMAC-SHA256)
%LocalAppData%\DVDAddin\license.dat lưu dạng JSON + HMAC-SHA256 với khoá nhúng trong DLL.
HMAC ở đây không phải cơ chế bảo mật — máy chủ mới là bên có thẩm quyền; nó chỉ chặn việc sửa tay file cache.
Khi thư mục đó không ghi được (ACL, Controlled Folder Access), add-in lưu dự phòng vào HKCU\Software\DVD\DVDAddin\Licensing\LicenseBlob.
3. JWT signature (RS256)
Token license là JWT ký RS256:
- Máy chủ giữ private key (secret của Cloudflare Worker).
- Client giữ public key RSA-2048 (nhúng trong DLL).
- Mỗi lần nạp license, client tự xác minh chữ ký — token không qua được thì bị coi là giả và bỏ đi.
Thời hạn JWT là 7 ngày, cộng thêm ~1 ngày đệm của bộ nhớ tạm phía client. Nghĩa là add-in chạy đầy đủ offline tối đa khoảng 8 ngày kể từ lần kiểm tra online cuối.
4. Per-install signing salt (HKDF)
Mỗi lần đăng nhập, client sinh (hoặc dùng lại) một salt ngẫu nhiên 32 byte cho máy đó.
Mọi request tới các endpoint license/purchase được ký thêm hai header:
X-DVDA-Ts: <unix seconds>
X-DVDA-Sig: HMAC-SHA256(METHOD + "\n" + PATH + "\n" + sha256(body) + "\n" + TS, key)trong đó key = HKDF(rootKey, machineId, salt). Request phát lại quá 5 phút bị máy chủ từ chối theo lệch thời gian; gọi bằng curl/Postman không có header thì nhận 403.
5. Clock-rollback anchor
HKCU\Software\DVD\DVDAddin\Licensing\MaxSeenUtc ghi mốc thời gian cao nhất add-in từng thấy. Đồng hồ máy lùi lại quá xa so với mốc đó bị coi là chỉnh giờ để kéo dài trial/license.
Third-party API privacy
Google Translate (miễn phí, không cần key)
- Endpoint:
https://translate.google.com/m?hl=…— add-in đọc trang dịch bản mobile rồi bóc kết quả, không dùng API có hợp đồng. - Hệ quả: không có thỏa thuận xử lý dữ liệu nào giữa bạn và Google cho luồng này.
- Khuyến nghị: KHÔNG dùng cho dữ liệu nhạy cảm (đơn giá, lương, điều khoản hợp đồng chưa ký).
Google Gemini
- Endpoint:
generativelanguage.googleapis.com. - API key: do bạn tự lấy ở Google AI Studio và tự khai vào add-in — key là của bạn, không đi qua máy chủ DVDAddin.
- Privacy: theo điều khoản Gemini API, nội dung ở bậc miễn phí có thể được dùng để cải thiện dịch vụ; bậc trả phí thì không.
OpenAI / Groq / NVIDIA NIM
- Endpoint:
api.openai.com/v1/chat/completions,api.groq.com/openai/v1/chat/completions,integrate.api.nvidia.com/v1/chat/completions. - Cả ba đều dùng key riêng của bạn. Chính sách của bậc API thường không dùng dữ liệu để huấn luyện — hãy tự đọc điều khoản của nhà cung cấp bạn chọn, vì chính sách thay đổi theo thời gian.
- NVIDIA NIM thay thế nhà cung cấp Cerebras cũ từ 2026-06; cấu hình cũ ghi "Cerebras" được add-in tự ánh xạ sang NVIDIA.
DVD Chat (Firebase)
DVD Chat là kênh chat nhóm chạy trên Firebase Realtime Database + Firebase Storage đặt tại vùng asia-southeast1. Tin nhắn và file bạn gửi trong chat nằm trên hạ tầng Google, không nằm trên máy bạn. Đừng dán mật khẩu, đơn giá thầu hay dữ liệu cần bảo mật vào đó.
Kết nối Server (làm việc nhóm)
Kết nối Server có hai đường và không đi qua máy chủ của DVDAddin:
- LAN — một máy trong mạng chạy server ở cổng (mặc định 8888), các máy khác nối theo IP. Dữ liệu không rời khỏi mạng nội bộ. Gói tin được mã hoá bằng Mật khẩu Dữ liệu mà cả nhóm cùng nhập.
- Internet (MQTT) — mặc định trỏ tới broker công cộng
broker.hivemq.com. Đây là hạ tầng dùng chung, ai biết mã phòng cũng vào được. Với dữ liệu dự án thật, hãy dựng broker riêng và đặt mã phòng khó đoán, đồng thời đặt Mật khẩu Dữ liệu mạnh.
Cloudflare Worker (license)
- Địa chỉ:
dvdaddin-license-server.dangvandangdvd.workers.dev. - Vị trí: chạy trên mạng biên Cloudflare, thường là trung tâm dữ liệu gần bạn nhất.
- Data lưu trữ: email, edition, hạn dùng, machine ID băm, salt ký, tên máy. Không có nội dung workbook.
- Yêu cầu xoá tài khoản/dữ liệu: gửi email tới [email protected].
What DVDAddin does NOT send
Không gửi:
- Nội dung workbook (trừ đúng phần bạn chủ động dịch, hỏi AI, OCR, chat hoặc đồng bộ nhóm).
- Tên file, đường dẫn thư mục, danh sách sheet.
- Lịch sử duyệt web, danh sách ứng dụng đã cài, dữ liệu từ phần mềm khác.
- Kết quả tính toán của 47 hàm UDF — trừ bốn hàm vốn dĩ phải ra mạng:
dvdTranslate,dvdAIExplain,DVDFx,dvdStock.
Có gửi (đã nói ở trên, nhắc lại cho rõ): machine ID băm, tên máy Windows, phiên bản hệ điều hành, phiên bản add-in, email đăng nhập.
Audit: kiểm tra network traffic
Wireshark
- Cài Wireshark, bắt trên card mạng đang dùng.
- Đặt display filter
tls.handshake.type == 1để chỉ xem các phiên TLS mới, rồi đọc cột Server Name (SNI) — đây là cách xem đích đến mà không cần giải mã. - Mở Excel, chạy lần lượt từng lệnh và quan sát SNI xuất hiện.
Danh sách tên miền hợp lệ có thể thấy:
dvdaddin-license-server.dangvandangdvd.workers.dev— license, đơn hàng, feed cập nhật.translate.google.com— khi dịch bằng Google.generativelanguage.googleapis.com— Gemini (dịch, AI, OCR, Trích bảng).api.openai.com,api.groq.com,integrate.api.nvidia.com— khi bạn chọn nhà cung cấp đó.*.firebasedatabase.app,firebasestorage.googleapis.com,identitytoolkit.googleapis.com,securetoken.googleapis.com— DVD Chat.open.er-api.com,api.frankfurter.app,cdn.jsdelivr.net— hàmDVDFx.priceboard.vcbs.com.vnhoặcquotes.vcbs.com.vn— hàmdvdStock.github.com/objects.githubusercontent.com— khi tải bộ cài.
Ngoài ra add-in còn mở trình duyệt tới vài địa chỉ khi bạn bấm vào liên kết trong giao diện — lưu lượng đó là của trình duyệt, không phải của Excel: dvdaddin.dvdpm.net và youtube.com, zalo.me, github.com (cửa sổ Tác giả); aistudio.google.com, platform.openai.com, console.groq.com, build.nvidia.com (các nút "lấy API key" trong Tùy chọn).
Thấy tên miền ngoài hai danh sách này trong lúc chỉ dùng DVDAddin thì đáng đặt câu hỏi.
Fiddler / mitmproxy
Muốn xem cả phần thân request thì cần proxy giải mã HTTPS (cài root cert của công cụ). Vì add-in không pin certificate nên cách này hoạt động. Kiểm tra được:
- Payload gửi lên nhà cung cấp AI đúng bằng phần text bạn chọn, không kèm thêm ô khác.
- Payload gửi lên Worker chỉ chứa machineId, tên máy, email — không có dữ liệu bảng tính.
Compliance
Việt Nam
- Dữ liệu cá nhân được lưu ở mức tối thiểu: email, tên máy, machine ID băm, thông tin license.
- Bạn có quyền yêu cầu truy cập hoặc xoá tài khoản qua [email protected].
- Cần dữ liệu không rời khỏi mạng nội bộ: dùng Kết nối Server ở chế độ LAN, tránh các lệnh AI/dịch/chat.
GDPR (EU)
DVDAddin chưa nhắm thị trường EU và chưa có quy trình DPA/right-to-be-forgotten chính thức. Đơn vị có nghĩa vụ GDPR nên đánh giá riêng trước khi triển khai.
HIPAA (y tế Mỹ)
DVDAddin không tuyên bố tuân thủ HIPAA. Không dùng cho dữ liệu bệnh án.
Security best practices
1. Không đưa bí mật vào bất kỳ lệnh AI nào
Mọi thứ bạn chọn trước khi bấm Dịch thuật, Trợ lý AI, OCR hay Trích bảng đều được gửi nguyên văn tới nhà cung cấp AI. Trước khi chạy lệnh trên một sheet, hãy nhìn lại vùng chọn — dịch cả cột "Ghi chú nội bộ" là chuyện đã xảy ra với nhiều người.
2. Đối chiếu SHA-256 của bộ cài
Feed cập nhật của add-in có thể kèm trường sha256 cho gói tải về. Kiểm tra trước khi cài:
Get-FileHash .\DVDAddin.rar -Algorithm SHA256Chỉ tải bộ cài từ liên kết mà lệnh Cập nhật hoặc Tải Tool mở ra, không tải từ nguồn chia sẻ lại.
3. Whitelist DVDAddin trong Antivirus
Một số AV đôi khi cách ly file .xll. Thêm ngoại lệ cho thư mục C:\DVDAddin\.
Lưu ý ngược lại: giữ antivirus bật cũng có lợi — Outlook chỉ bỏ cảnh báo "một chương trình đang truy cập email" khi Windows Security báo máy đang được bảo vệ.
4. Bảo vệ API key của bạn
API key nằm trong HKCU\Software\DVD\DVDAddin\API Keys\ (GeminiAPI, ChatGPTAPI, GroqAPI, NvidiaAPI) dưới dạng văn bản thường, không mã hoá. Ai truy cập được hồ sơ Windows của bạn là đọc được key.
- Máy dùng chung: đăng xuất Windows khi rời máy, đừng dùng chung tài khoản Windows.
- Nghi ngờ lộ: thu hồi key ở bảng điều khiển của nhà cung cấp rồi khai key mới trong Tùy chọn → mục Trợ lý AI.
5. Sao lưu license.dat trước khi cài lại Windows
→ Xem Backup & Restore.
6. Cẩn thận với chế độ MQTT của Kết nối Server
Broker mặc định là hạ tầng công cộng. Đặt mã phòng riêng, Mật khẩu Dữ liệu mạnh, và ngắt kết nối khi họp xong bằng lệnh Ngắt kết nối.
Báo lỗ hổng bảo mật
Tìm thấy lỗ hổng:
- Email [email protected] với tiêu đề bắt đầu bằng
[SECURITY], mô tả kèm bước tái hiện. - Không đăng công khai chi tiết khai thác trước khi có bản vá.
Liên quan
- Bản quyền — chi tiết hệ thống license và cách kích hoạt.
- Tùy chọn — nơi khai API key (mục Trợ lý AI).
- Kết nối Server — LAN và MQTT, hai mô hình rủi ro khác nhau.
- DVD Chat — chat nhóm chạy trên Firebase.
- Backup & Restore.
- FAQ — Bảo mật & Privacy.