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)
┌─────────────────────────────────────────────┐
│ DVDAddin (chạy local) │
├─────────────────────────────────────────────┤
│ • Local computation (UDF text/date/math) │ ← KHÔNG ra mạng
│ • Translate cell (Google/Gemini/ChatGPT) │ ← Ra mạng
│ • AI Assistant chat │ ← Ra mạng
│ • License heartbeat (4h/lần) │ ← Ra mạng (chỉ JWT)
│ • Update check (1 lần/khởi động) │ ← Ra mạng (chỉ version)
└─────────────────────────────────────────────┘
│
↓ HTTPS encrypted
┌─────────────────────────────────────────────────────────────┐
│ Third-party services (chỉ khi user chủ động dùng) │
├─────────────────────────────────────────────────────────────┤
│ • translate.google.com (text bạn dịch) │
│ • generativelanguage.googleapis.com (Gemini) │
│ • api.openai.com (ChatGPT, nếu config) │
│ • api.groq.com, api.cerebras.ai (nếu config) │
└─────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│ dvdpm.net Cloudflare backend (license + update) │
├─────────────────────────────────────────────────────────────┤
│ • License heartbeat (JWT verify, no workbook data) │
│ • Update notification check (version compare) │
│ • Optional: Connect Server (team sync — chỉ user opt-in) │
└─────────────────────────────────────────────────────────────┘Loại data và destination
| Loại data | Có ra mạng? | Đi đâu? | Encrypted? |
|---|---|---|---|
| Workbook content (cell values) | KHÔNG | — | — |
| Filename / path | KHÔNG | — | — |
| Personal info (email, tên) | Chỉ login | dvdpm.net | TLS 1.3 |
| Text bạn dịch | Có | Google / Gemini / ChatGPT | TLS 1.3 |
| AI Assistant chat | Có | Gemini / OpenAI / Groq | TLS 1.3 |
| Audio bạn transcribe | Có | Gemini Vision | TLS 1.3 |
| Ảnh bạn OCR | Có | Gemini Vision | TLS 1.3 |
| License token | Có (4h/lần) | Cloudflare Worker (dvdpm.net) | TLS 1.3 |
| Machine ID hash | Có (kèm license) | Cloudflare Worker | TLS 1.3 |
| App version | Có (mỗi khởi động) | Cloudflare Worker | TLS 1.3 |
| Telemetry (opt-in) | Chỉ khi tick | dvdpm.net | TLS 1.3 |
| Connect Server data (opt-in) | Có | dvdpm.net | TLS 1.3 |
Encryption layers
1. Network (TLS 1.3)
Tất cả communication addin → server qua HTTPS với TLS 1.3:
- AES-256-GCM cipher.
- Certificate pinning (in 2.8+).
- Không chấp nhận TLS < 1.2.
2. License file (HMAC)
%LocalAppData%\DVDAddin\license.dat lưu format:
{json-content}|{hmac-hex}HMAC-SHA256 với key hardcoded trong DLL (obfuscated). Nếu file bị tampering → HMAC mismatch → addin reject.
3. JWT signature (RS256)
License token là JWT signed bằng RS256:
- Server có private key (Cloudflare secret).
- Client có public key (hardcoded trong DLL).
- Client verify signature mỗi lần load license → đảm bảo không bị forge.
4. Per-install signing salt (HKDF)
Mỗi machine có random 32-byte salt generated trên client, sent lên server qua /auth/login.
Mỗi API request sign bằng HKDF-derived key = HKDF(rootKey, machineId, saltHex).
→ Forge request giả từ machine khác cần cả root key + salt + mid → cực khó.
5. Clock-rollback anchor
HKCU registry value MaxSeenUtc lưu high-water mark của clock đã thấy.
Nếu clock máy < high-water mark - 1h → suspect rollback → lock license cho đến online verify.
Third-party API privacy
Google Translate (free)
- Endpoint:
translate.googleapis.com/translate_a/single. - Privacy: Google Translate Privacy Policy — text được train AI improvement.
- Recommendation: KHÔNG dùng cho data nhạy cảm (lương, bí mật kinh doanh).
Google Gemini
- Endpoint:
generativelanguage.googleapis.com. - API key: do user tự lấy từ Google AI Studio (cá nhân).
- Privacy: Google Gemini API Privacy — free tier có thể được dùng train model.
- Paid tier (Gemini Pro qua Vertex AI) — KHÔNG train, enterprise privacy.
OpenAI ChatGPT
- Endpoint:
api.openai.com/v1/chat/completions. - Privacy: API tier (vs ChatGPT consumer) KHÔNG train data.
- Recommendation: dùng ChatGPT API cho data nhạy cảm.
Groq / Cerebras
- Endpoint:
api.groq.com/api.cerebras.ai. - Privacy: tương tự OpenAI — API tier không train.
Cloudflare Workers (dvdpm.net)
- Vị trí server: Cloudflare edge — closest data center (thường Singapore / HK cho user VN).
- Data stored: license info (email, edition, expires_at, machine ID hash, salt). KHÔNG có workbook content.
- GDPR / Vietnam Personal Data Law: compliant — user có quyền request xóa account.
What DVDAddin does NOT send
❌ KHÔNG gửi:
- Workbook content (trừ phần text bạn chủ động dịch / hỏi AI).
- Filename, folder path.
- Computer info ngoài OS version, Excel version, machine ID hash.
- IP address (server log nhưng không link cá nhân).
- Browsing history.
- Other apps installed.
Audit: kiểm tra network traffic
Nếu paranoid, dùng tool monitor network:
Wireshark
- Cài Wireshark.
- Capture filter:
tcp port 443 and host dvdpm.net or host *.googleapis.com. - Mở Excel → dùng DVDAddin → quan sát traffic.
- SHOULD chỉ thấy outgoing tới:
*.googleapis.com(nếu dùng Translate Gemini).translate.googleapis.com(nếu dùng Google Translate).*.workers.devhoặcdvdpm.net(license heartbeat).api.openai.com/api.groq.com/api.cerebras.ai(nếu config).github.com(download installer).
KHÔNG thấy traffic suspicious → an toàn.
Fiddler / Charles Proxy
Decrypt HTTPS để xem body:
- Cài Fiddler + trust root cert.
- Capture traffic Excel.
- Verify body chỉ chứa text bạn chủ động dịch.
Compliance
Việt Nam — Luật An toàn thông tin mạng 2015
- Data cá nhân lưu trong nước (Cloudflare có edge tại Việt Nam — Hà Nội + TP.HCM).
- User có quyền access / xóa account qua email [email protected].
GDPR (EU)
- DVDAddin chưa target EU market. Nếu sau này:
- Sẽ thêm cookie consent banner.
- Right-to-be-forgotten workflow.
- Data Processing Agreement với CĐT-side EU.
HIPAA (US healthcare)
KHÔNG tuyên bố HIPAA-compliant. KHÔNG dùng DVDAddin cho data y tế.
Security best practices
1. KHÔNG nhập password vào AI
=DvdAskGemini("Mật khẩu admin là: ???") ← NEVERAI service log query → password leak.
2. Verify SHA-256 của setup.exe
Mỗi release publish SHA-256 trong release notes. Verify trước khi cài:
Get-FileHash setup.exe -Algorithm SHA256So sánh với hash trên dvdpm.net.
3. Whitelist DVDAddin trong Antivirus
Một số AV (Bitdefender, Kaspersky) đôi khi flag .xll file. Whitelist:
C:\DVDAddin\.
4. Backup license.dat trước khi reset Windows
→ Xem Backup & Restore.
5. Disable Telemetry nếu không cần
Preferences → General → Telemetry → bỏ tick. (Mặc định đã tắt.)
Open source verification
Source code đầy đủ tại github.com/dangdvd/DVDAddin.
Review:
- Mọi network call → grep
httpClient.SendAsync/HttpRequestMessage. - License logic →
src/DVDAddin.Services/Licensing/. - Telemetry →
src/DVDAddin.Services/Common/Telemetry*.
Build từ source:
git clone https://github.com/dangdvd/DVDAddin.git
cd DVDAddin
dotnet build -c Release→ Verify binary giống setup.exe (reproducible build).
Report security vulnerability
⚠️ Tìm thấy lỗ hổng security:
- Email [email protected] (KHÔNG public).
- Hoặc GitHub Security Advisory (private).
- KHÔNG đăng GitHub Issue public.
Tác giả sẽ trả lời trong 48h và fix trong 7 ngày cho critical issue.
Liên quan
- Bản quyền — chi tiết license system.
- Preferences → API Keys — manage API keys.
- Backup & Restore.
- FAQ #20-22 — security questions.