Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
135
docs/architecture/security.md
Normal file
135
docs/architecture/security.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# Security Architecture
|
||||
|
||||
This document describes the security architecture of Crypto Trader.
|
||||
|
||||
## Security Layers
|
||||
|
||||
```
|
||||
Application Layer
|
||||
├──► API Key Encryption
|
||||
├──► Permission Management
|
||||
└──► Audit Logging
|
||||
│
|
||||
▼
|
||||
Storage Layer
|
||||
├──► Encrypted Storage
|
||||
└──► Secure Key Management
|
||||
```
|
||||
|
||||
## API Key Encryption
|
||||
|
||||
### Encryption Process
|
||||
|
||||
```
|
||||
Plain API Key
|
||||
│
|
||||
▼
|
||||
Fernet Encryption
|
||||
│
|
||||
▼
|
||||
Encrypted Key (Stored in Database)
|
||||
```
|
||||
|
||||
### Key Management
|
||||
|
||||
- **Encryption Key**: Stored securely (environment variable or keyring)
|
||||
- **Key Generation**: Automatic on first use
|
||||
- **Key Rotation**: Manual rotation process
|
||||
|
||||
## Permission Management
|
||||
|
||||
### Permission Levels
|
||||
|
||||
- **Read-Only**: Data collection, backtesting only
|
||||
- **Trading Enabled**: Full trading capabilities
|
||||
|
||||
### Permission Enforcement
|
||||
|
||||
```
|
||||
API Request
|
||||
│
|
||||
▼
|
||||
Permission Check
|
||||
│
|
||||
├──► Read-Only Request
|
||||
│ │
|
||||
│ └──► Allow (read operations)
|
||||
│
|
||||
└──► Trading Request
|
||||
│
|
||||
├──► Trading Enabled?
|
||||
│ │
|
||||
│ ├──► Yes: Allow
|
||||
│ └──► No: Reject
|
||||
```
|
||||
|
||||
## Secure Storage
|
||||
|
||||
### Keyring Integration
|
||||
|
||||
- **Linux**: Secret Service (GNOME Keyring)
|
||||
- **macOS**: Keychain
|
||||
- **Windows**: Windows Credential Manager
|
||||
|
||||
### Fallback Storage
|
||||
|
||||
If keyring unavailable:
|
||||
- Environment variable (development only)
|
||||
- Encrypted file with user permission
|
||||
|
||||
## Audit Logging
|
||||
|
||||
All security events are logged:
|
||||
|
||||
- API key changes
|
||||
- Permission changes
|
||||
- Trading operations
|
||||
- Configuration changes
|
||||
- Error events
|
||||
|
||||
### Audit Log Format
|
||||
|
||||
```python
|
||||
{
|
||||
"timestamp": "2025-12-13T19:00:00Z",
|
||||
"event_type": "API_KEY_CHANGED",
|
||||
"user_id": "system",
|
||||
"details": {
|
||||
"exchange": "coinbase",
|
||||
"action": "updated"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Data Privacy
|
||||
|
||||
- **Local Storage**: All data stored locally
|
||||
- **No Telemetry**: No data sent externally
|
||||
- **Encryption**: Sensitive data encrypted at rest
|
||||
- **Access Control**: File system permissions
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use Read-Only Keys**: When possible, use read-only API keys
|
||||
2. **IP Whitelisting**: Enable IP whitelisting on exchange accounts
|
||||
3. **Regular Rotation**: Rotate API keys periodically
|
||||
4. **Secure Environment**: Keep encryption keys secure
|
||||
5. **Audit Review**: Regularly review audit logs
|
||||
|
||||
## Threat Model
|
||||
|
||||
### Threats Addressed
|
||||
|
||||
- **API Key Theft**: Encryption at rest
|
||||
- **Unauthorized Trading**: Permission checks
|
||||
- **Data Breach**: Local storage, encryption
|
||||
- **Man-in-the-Middle**: HTTPS for API calls
|
||||
- **Key Logging**: Secure keyring storage
|
||||
|
||||
### Security Boundaries
|
||||
|
||||
- **Application Boundary**: Application code
|
||||
- **Storage Boundary**: Encrypted database
|
||||
- **Network Boundary**: Secure API connections
|
||||
- **System Boundary**: File system permissions
|
||||
|
||||
Reference in New Issue
Block a user