Genel Bakış
Prometheus, yüksek ölçekli oylama senaryoları için geliştirmeye başladığım, güvenlik ve gizlilik odaklı bir e-oylama sistemidir.
Amaç basit gibi görünse de uygulaması oldukça zordur:
Kullanıcıların anonim şekilde oy verebildiği, ancak sistemin tamamen doğrulanabilir ve manipülasyona kapalı olduğu bir yapı kurmak.
Proje başlangıçta IEEE ekibi içerisinde ortaya çıktı. Ancak problemin karmaşıklığı ve derinliği nedeniyle sistemin tasarımını ve geliştirme sürecini tamamen sahiplenerek projeyi bireysel olarak ilerlettim.
Problem Tanımı
Dijital oylama sistemleri temel bir çelişkiyle karşı karşıyadır:
- Kimlik doğrulama gerekir (sadece yetkili kişiler oy verebilmeli)
- Anonimlik gerekir (oyların kime ait olduğu bilinmemeli)
Prometheus, bu iki ihtiyacı sistem içerisinde farklı katmanlara ayırarak çözmeyi hedefler.
Sistem Mimarisi
Sistem, domain ayrımı (domain separation) ve kontrollü güven bölgeleri üzerine kuruludur:
Kimlik Katmanı (Identity Zone)
- Kullanıcı doğrulama (OTP tabanlı)
- Yetki token’ı (JWT) üretimi
- Token üretildikten sonra kimlik ile bağın koparılması
Anonim Oylama Katmanı (Anonymous Voting Zone)
- Token ile oy kabulü
- Kullanıcı kimliğine erişmeden doğrulama
- Tekrar oy kullanımını engelleyen mekanizmalar
Doğrulama Katmanı (Verification Layer)
- Kullanıcının oyunu tracker ID ile doğrulaması
- Sistem bütünlüğü için açık endpoint’ler
- Doğrulanabilir oy zinciri yapısı
Teknik Yapı
- Backend: .NET 8 (Clean Architecture)
- API: REST tabanlı servisler
- Veritabanı: PostgreSQL (domain bazlı ayrılmış yapı)
- Güvenlik:
- ECDSA (P-256) imzalama
- SHA-256 hashing
- Altyapı: Docker Compose (çok servisli yapı)
Kritik Kararlar
Domain Ayrımı
Tüm sorumlulukları tek sistemde toplamak yerine şu katmanlara ayrıldı:
- Kimlik doğrulama
- Token üretimi
- Oylama
- Doğrulama
Bu yaklaşım hem güvenliği artırır hem de kimlik sızıntısı riskini azaltır.
Tek Kullanımlık Token Yapısı
Her kullanıcıya yalnızca bir kez kullanılabilen bir token verilir:
- Kriptografik olarak imzalanır
- Hash olarak saklanır
- Kullanıldıktan sonra tekrar kullanılamaz
Bu sayede kimlik saklanmadan çift oy engellenir.
Doğrulanabilir Oy Zinciri
Oylar zincir benzeri bir yapıda tutulur:
- Her oy sistemin hash yapısına katkı sağlar
- Sistem bütünlüğü endpoint üzerinden kontrol edilebilir
- Herhangi bir müdahale tespit edilebilir
Stateless ve Denetlenebilir Yapı
Sistem:
- Mümkün olduğunca stateless
- Dışarıdan denetlenebilir
- Şeffaf ama veri sızıntısı yaratmayacak şekilde tasarlanmıştır
Karşılaşılan Zorluklar
Bu proje klasik CRUD uygulamalarının ötesine geçmeyi gerektirdi.
Özellikle:
- Güven sınırlarının doğru tasarlanması
- Kimlik ile oy arasındaki bağın tamamen koparılması
- Dağıtık yapıdaki tutarlılığın sağlanması
- Hem anonim hem doğrulanabilir bir sistem kurulması
ciddi mühendislik kararları gerektirdi.
Mevcut Durum
- Temel mimari tamamlandı
- Uçtan uca oylama akışı çalışır durumda
- Doğrulama endpoint’leri aktif
- Sistem container tabanlı çok servisli yapı ile çalışıyor
Geliştirme süreci güvenlik ve ölçeklenebilirlik odaklı olarak devam etmektedir.
Rolüm
- Projeyi fikir aşamasından çalışan sisteme taşıdım
- Tüm sistem mimarisini ve teknik yaklaşımı tasarladım
- Backend kodunun yaklaşık %99’unu geliştirdim
- Güvenlik modelini ve veri akışını kurguladım
- Geliştirme ortamını kurdum ve yönettim
Proje başlangıçta ekip içerisinde ortaya çıkmış olsa da, mevcut hali büyük ölçüde bireysel sahiplenmem ve geliştirme sürecim sonucunda oluşmuştur.
Sonraki Adımlar
- Gelişmiş kriptografik yapılar (mixnet, threshold sistemler)
- Yük altında performans optimizasyonu
- Doğrulama deneyiminin iyileştirilmesi
- Production ortamına uygun güvenlik sertleştirmeleri
Kısa Not
Prometheus sadece bir oylama sistemi değil.
Güvenin varsayılmadığı, mühendislikle inşa edildiği bir sistemdir.