Introduction
This Security Guide explains how "dAIly Planner" Chrome Extension ("we", "our", or "the extension") handles your data securely and what security measures are in place to protect your information.
Data Storage and Security
โ
Local Storage Only
- All data is stored locally on your device using Chrome's
chrome.storage.local API
- No data is sent to our servers (we don't have any servers)
- Your data never leaves your device except when you explicitly request AI analysis
What Data is Stored Locally?
- Schedule Data: Your daily, weekly, monthly, and quarterly schedules
- User Settings: Your name, preferences, and configuration
- Gemini API Key: Stored securely using Chrome's encrypted storage
- Language Preference: Your selected language (Korean/English)
๐ Chrome Storage Security
Chrome's chrome.storage.local API provides:
- Encrypted storage on your device
- Isolation from other extensions
- Automatic cleanup if extension is uninstalled
API Key Security
How Your API Key is Protected
- Local Storage Only: Your Gemini API key is stored only on your device
- No Transmission: The API key is never sent to our servers
- Direct API Calls: API calls are made directly from your browser to Google's servers
- Password Field: The API key input uses a password field to prevent shoulder surfing
โ ๏ธ Important Security Notes
- Never share your API key with anyone
- If you suspect your API key is compromised, regenerate it in Google Cloud Console
- Regularly review your API usage in Google Cloud Console
- Set API usage limits in Google Cloud Console to prevent unexpected charges
Data Transmission
When Data Leaves Your Device
Data is only transmitted in the following scenarios:
1. AI Analysis Requests
- What: Schedule descriptions and context
- Where: Directly to Google's Gemini API servers
- When: Only when you explicitly request AI analysis or chat assistance
- Encryption: All transmissions use HTTPS (TLS 1.2+)
2. Chat Messages
- What: Your chat messages and schedule queries
- Where: Directly to Google's Gemini API servers
- Storage: Chat history is stored locally, not sent to Google
๐ HTTPS Encryption
All API communications use HTTPS encryption, ensuring:
- Data cannot be intercepted in transit
- Server identity is verified
- Data integrity is maintained
Third-Party Services
Google Gemini API
๐ก Best Practices
- Review your API usage regularly in Google Cloud Console
- Set up billing alerts to monitor costs
- Use API key restrictions in Google Cloud Console
- Rotate your API key periodically
Permissions Explained
Required Permissions
- storage: To save your schedules and settings locally
- sidePanel: To display the extension interface
- activeTab: To detect text selection on web pages
Content Scripts
- Content Scripts: Declared in manifest.json to automatically inject content.js into web pages for text selection detection and "Add as Task" button display. No dynamic scripting permission is required.
Host Permissions
- https://generativelanguage.googleapis.com/*: To communicate with Google's Gemini API
Note: We request only the minimum permissions necessary for the extension to function. We do not request access to your browsing history, bookmarks, or other personal data.
Data Deletion
How to Delete Your Data
- Open the extension side panel
- Go to Settings
- Clear your API key (optional)
- Uninstall the extension from
chrome://extensions/
โ
Complete Deletion: When you uninstall the extension, all stored data is automatically deleted from your device. Chrome's storage API ensures complete removal.
Security Best Practices
For Users
- Keep your Chrome browser updated
- Use a strong, unique API key
- Regularly review your schedule data
- Don't share your device with untrusted users
- Monitor your Google Cloud Console for unusual API usage
For Developers
- Review the source code on GitHub
- Report security vulnerabilities responsibly
- Keep the extension updated
Vulnerability Reporting
If you discover a security vulnerability, please report it responsibly:
Please include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
์๊ฐ
๋ณธ ๋ณด์ ๊ฐ์ด๋๋ "dAIly Planner" Chrome ํ์ฅ ํ๋ก๊ทธ๋จ("๋ณธ ํ์ฅ ํ๋ก๊ทธ๋จ")์ด ๊ทํ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ๋ณด๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๋ณด์ ์กฐ์น๋ฅผ ์ค๋ช
ํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ณด์
โ
๋ก์ปฌ ์ ์ฅ๋ง ์ฌ์ฉ
- ๋ชจ๋ ๋ฐ์ดํฐ๋ Chrome์
chrome.storage.local API๋ฅผ ์ฌ์ฉํ์ฌ ๊ทํ์ ๊ธฐ๊ธฐ์๋ง ๋ก์ปฌ๋ก ์ ์ฅ๋ฉ๋๋ค
- ์์ฒด ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง ์์ต๋๋ค (์์ฒด ์๋ฒ๊ฐ ์์ต๋๋ค)
- AI ๋ถ์์ ๋ช
์์ ์ผ๋ก ์์ฒญํ ๋๋ฅผ ์ ์ธํ๊ณ ๋ ๊ทํ์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ธฐ๋ฅผ ๋ ๋์ง ์์ต๋๋ค
๋ก์ปฌ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ
- ์ผ์ ๋ฐ์ดํฐ: ์ผ๊ฐ, ์ฃผ๊ฐ, ์๊ฐ, ๋ถ๊ธฐ๋ณ ์ผ์
- ์ฌ์ฉ์ ์ค์ : ์ด๋ฆ, ์ ํธ๋, ๊ตฌ์ฑ
- Gemini API ํค: Chrome์ ์ํธํ๋ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๊ฒ ์ ์ฅ
- ์ธ์ด ์ค์ : ์ ํํ ์ธ์ด (ํ๊ตญ์ด/์์ด)
๐ Chrome ์ ์ฅ์ ๋ณด์
Chrome์ chrome.storage.local API๋ ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๊ธฐ๊ธฐ์์์ ์ํธํ๋ ์ ์ฅ
- ๋ค๋ฅธ ํ์ฅ ํ๋ก๊ทธ๋จ๊ณผ์ ๊ฒฉ๋ฆฌ
- ํ์ฅ ํ๋ก๊ทธ๋จ ์ ๊ฑฐ ์ ์๋ ์ ๋ฆฌ
API ํค ๋ณด์
API ํค ๋ณดํธ ๋ฐฉ๋ฒ
- ๋ก์ปฌ ์ ์ฅ๋ง: Gemini API ํค๋ ๊ทํ์ ๊ธฐ๊ธฐ์๋ง ์ ์ฅ๋ฉ๋๋ค
- ์ ์ก ์์: API ํค๋ ์์ฒด ์๋ฒ๋ก ์ ์ก๋์ง ์์ต๋๋ค
- ์ง์ API ํธ์ถ: API ํธ์ถ์ ๋ธ๋ผ์ฐ์ ์์ Google ์๋ฒ๋ก ์ง์ ์ด๋ฃจ์ด์ง๋๋ค
- ๋น๋ฐ๋ฒํธ ํ๋: API ํค ์
๋ ฅ์ ์ด๊นจ๋๋จธ ์์ฒญ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋น๋ฐ๋ฒํธ ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค
โ ๏ธ ์ค์ํ ๋ณด์ ์ฌํญ
- API ํค๋ฅผ ๋๊ตฌ์๋ ๊ณต์ ํ์ง ๋ง์ธ์
- API ํค๊ฐ ์ ์ถ๋์๋ค๊ณ ์์ฌ๋๋ฉด Google Cloud Console์์ ์ฌ์์ฑํ์ธ์
- Google Cloud Console์์ API ์ฌ์ฉ๋์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ์ธ์
- ์์์น ๋ชปํ ์๊ธ์ ๋ฐฉ์งํ๊ธฐ ์ํด Google Cloud Console์์ API ์ฌ์ฉ๋ ์ ํ์ ์ค์ ํ์ธ์
๋ฐ์ดํฐ ์ ์ก
๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ธฐ๋ฅผ ๋ ๋๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ๋ ๋ค์ ์๋๋ฆฌ์ค์์๋ง ์ ์ก๋ฉ๋๋ค:
1. AI ๋ถ์ ์์ฒญ
- ๋ด์ฉ: ์ผ์ ์ค๋ช
๋ฐ ์ปจํ
์คํธ
- ๋์: Google์ Gemini API ์๋ฒ๋ก ์ง์
- ์๊ธฐ: AI ๋ถ์์ด๋ ์ฑํ
์ง์์ ๋ช
์์ ์ผ๋ก ์์ฒญํ ๋๋ง
- ์ํธํ: ๋ชจ๋ ์ ์ก์ HTTPS(TLS 1.2+)๋ฅผ ์ฌ์ฉํฉ๋๋ค
2. ์ฑํ
๋ฉ์์ง
- ๋ด์ฉ: ์ฑํ
๋ฉ์์ง ๋ฐ ์ผ์ ์ฟผ๋ฆฌ
- ๋์: Google์ Gemini API ์๋ฒ๋ก ์ง์
- ์ ์ฅ: ์ฑํ
๊ธฐ๋ก์ ๋ก์ปฌ์ ์ ์ฅ๋๋ฉฐ Google๋ก ์ ์ก๋์ง ์์ต๋๋ค
๐ HTTPS ์ํธํ
๋ชจ๋ API ํต์ ์ HTTPS ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ๋ณด์ฅํฉ๋๋ค:
- ์ ์ก ์ค ๋ฐ์ดํฐ ๊ฐ๋ก์ฑ๊ธฐ ๋ถ๊ฐ๋ฅ
- ์๋ฒ ์ ์ ํ์ธ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง
์ 3์ ์๋น์ค
Google Gemini API
- AI ๊ธฐ๋ฐ ์ผ์ ๋ถ์ ๋ฐ ์ฑํ
์ ์ํด Google์ Gemini API๋ฅผ ์ฌ์ฉํฉ๋๋ค
- AI ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ๋ฐ์ดํฐ๊ฐ Google ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค
- Google์ ๊ฐ์ธ์ ๋ณด์ฒ๋ฆฌ๋ฐฉ์นจ์ด ์ ์ฉ๋ฉ๋๋ค: https://policies.google.com/privacy?hl=ko
- Google์ด ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ณธ ํ์ฅ ํ๋ก๊ทธ๋จ์ด ํต์ ํ์ง ์์ต๋๋ค
- Google์ ๋ณด์ ๊ดํ์ ๊ฒํ ํ ์ ์์ต๋๋ค: https://cloud.google.com/security
๐ก ๋ชจ๋ฒ ์ฌ๋ก
- Google Cloud Console์์ API ์ฌ์ฉ๋์ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ์ธ์
- ๋น์ฉ ๋ชจ๋ํฐ๋ง์ ์ํ ์ฒญ๊ตฌ ์๋ฆผ์ ์ค์ ํ์ธ์
- Google Cloud Console์์ API ํค ์ ํ์ ์ฌ์ฉํ์ธ์
- ์ ๊ธฐ์ ์ผ๋ก API ํค๋ฅผ ๊ต์ฒดํ์ธ์
๊ถํ ์ค๋ช
ํ์ ๊ถํ
- storage: ์ผ์ ๋ฐ ์ค์ ์ ๋ก์ปฌ์ ์ ์ฅํ๊ธฐ ์ํด
- sidePanel: ํ์ฅ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค๋ฅผ ํ์ํ๊ธฐ ์ํด
- activeTab: ์น ํ์ด์ง์์ ํ
์คํธ ์ ํ์ ๊ฐ์งํ๊ธฐ ์ํด
์ฝํ
์ธ ์คํฌ๋ฆฝํธ
- ์ฝํ
์ธ ์คํฌ๋ฆฝํธ: manifest.json์ ์ ์ธ๋์ด content.js๋ฅผ ์น ํ์ด์ง์ ์๋์ผ๋ก ์ฃผ์
ํ์ฌ ํ
์คํธ ์ ํ ๊ฐ์ง ๋ฐ "ํ ์ผ๋ก ์ถ๊ฐ" ๋ฒํผ ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋์ ์คํฌ๋ฆฝํ
๊ถํ์ด ํ์ํ์ง ์์ต๋๋ค.
ํธ์คํธ ๊ถํ
- https://generativelanguage.googleapis.com/*: Google์ Gemini API์ ํต์ ํ๊ธฐ ์ํด
์ฐธ๊ณ : ํ์ฅ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ ๋ฐ ํ์ํ ์ต์ํ์ ๊ถํ๋ง ์์ฒญํฉ๋๋ค. ๋ธ๋ผ์ฐ์ง ๊ธฐ๋ก, ๋ถ๋งํฌ ๋๋ ๊ธฐํ ๊ฐ์ธ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค๋ ์์ฒญํ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ์ญ์
๋ฐ์ดํฐ ์ญ์ ๋ฐฉ๋ฒ
- ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ด๋ ํจ๋ ์ด๊ธฐ
- ์ค์ ์ผ๋ก ์ด๋
- API ํค ์ง์ฐ๊ธฐ (์ ํ์ฌํญ)
chrome://extensions/์์ ํ์ฅ ํ๋ก๊ทธ๋จ ์ ๊ฑฐ
โ
์์ ์ญ์ : ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํ๋ฉด ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ธฐ์์ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค. Chrome์ ์ ์ฅ์ API๊ฐ ์์ ํ ์ ๊ฑฐ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก
์ฌ์ฉ์๋ฅผ ์ํ
- Chrome ๋ธ๋ผ์ฐ์ ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์
- ๊ฐ๋ ฅํ๊ณ ๊ณ ์ ํ API ํค๋ฅผ ์ฌ์ฉํ์ธ์
- ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ์ธ์
- ์ ๋ขฐํ ์ ์๋ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ๋ฅผ ๊ณต์ ํ์ง ๋ง์ธ์
- Google Cloud Console์์ ๋น์ ์์ ์ธ API ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ์ธ์
๊ฐ๋ฐ์๋ฅผ ์ํ
- GitHub์์ ์์ค ์ฝ๋๋ฅผ ๊ฒํ ํ์ธ์
- ๋ณด์ ์ทจ์ฝ์ ์ ์ฑ
์๊ฐ ์๊ฒ ๋ณด๊ณ ํ์ธ์
- ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ต์ ์ํ๋ก ์ ์งํ์ธ์
์ทจ์ฝ์ ๋ณด๊ณ
๋ณด์ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ ์ฑ
์๊ฐ ์๊ฒ ๋ณด๊ณ ํด์ฃผ์ธ์:
๋ค์์ ํฌํจํด์ฃผ์ธ์:
- ์ทจ์ฝ์ ์ค๋ช
- ์ฌํ ๋จ๊ณ
- ์ ์ฌ์ ์ํฅ
- ์ ์๋ ์์ ์ฌํญ (์๋ ๊ฒฝ์ฐ)