feat: phase 4 completed

This commit is contained in:
Yusuf İpek
2025-12-27 14:28:33 +03:00
parent 70d246bc17
commit 226935e67d
12 changed files with 510 additions and 31 deletions
+26 -6
View File
@@ -18,16 +18,18 @@
- [x] Mesaj düzenleme/silme
- [x] IDOR güvenlik açığı düzeltildi
### Faz 3: Dosya Yükleme (R2) 🔲
### Faz 3: Dosya Yükleme (R2)
- [x] Cloudflare R2 entegrasyonu
- [x] Dosya upload/download API
- [x] Dosya listeleme UI
### Faz 4: Client-side Encryption 🔲
- [ ] Web Crypto API wrapper
- [ ] Encrypt/decrypt utilities
- [ ] Şifreli mesaj oluşturma akışı
- [ ] Decrypt sayfası (alıcı için)
### Faz 4: Client-side Encryption
- [x] Web Crypto API wrapper
- [x] Encrypt/decrypt utilities
- [x] Şifreli mesaj oluşturma akışı
- [x] Decrypt sayfası (alıcı için)
- [x] Şifreli mesaj düzenleme
- [x] Dosya adı şifreleme
### Faz 5: Check-in & Cron 🔲
- [ ] Check-in API endpoint
@@ -54,6 +56,23 @@
- [ ] Production deployment
- [ ] Monitoring setup
### Sonradan Yapılacaklar
1. Static Salt in Key Derivation
- Severity: Medium
- Location: src/lib/crypto.ts (Lines 13-13)
- Line Content:
1 salt: encoder.encode("dead-man-switch-salt"),
- Description:
The deriveKeyFromPassword function uses a hardcoded, static salt ("dead-man-switch-salt") for all users and messages. In the event of a database compromise, this allows an attacker to
perform mass rainbow table or dictionary attacks to crack passwords for all users simultaneously. A unique salt per encryption operation is required to force attackers to crack each
password individually.
- Recommendation:
1. Generate a random, cryptographically secure salt (e.g., 16 bytes) for each new message or file encryption operation.
2. Store this salt alongside the ciphertext (e.g., as a prefix to the encrypted string or in a separate database column).
3. Update deriveKeyFromPassword to accept salt as a parameter.
4. Update the encrypt and decrypt flows to pass this unique salt during key derivation.
## Tamamlanan
- ✅ Teknoloji stack seçimi
- ✅ Memory bank oluşturma
@@ -61,6 +80,7 @@
- ✅ Faz 1: Auth sistemi
- ✅ Faz 2: Mesaj CRUD
- ✅ Faz 3: Dosya Yükleme (R2)
- ✅ Faz 4: Client-side Encryption
## Bilinen Sorunlar
(henüz yok)