پرش به محتوای اصلی
داریان تک
CS-04رمزنگاری

رای مخفی بماند،
شمارش قابل بازرسی باشد.

رای‌گیری الکترونیکی یک تناقض ظاهری دارد: باید مطمئن شوید هر نفر یک بار رای داده، ولی نباید بدانید چه رایی داده. حل این تناقض، کل مسئلهٔ مهندسی این پروژه بود.

۰۱مسئله

چه چیزی باید حل می‌شد

در فرآیند کاغذی، مخفی بودن رای با صندوق و پاکت تأمین می‌شود. در نسخهٔ دیجیتال، اگر رای و هویت در یک رکورد ذخیره شوند، هرکسی که به پایگاه داده دسترسی دارد می‌تواند ببیند چه کسی چه رایی داده — و همین یک نکته کل اعتماد را از بین می‌برد.

۰۲رویکرد

تصمیم‌های فنی و دلیلشان

هر بند اینجا یک تصمیم است که می‌شد جور دیگری گرفته شود. اگر تیم فنی دارید، همین‌ها را زیر سؤال ببرید.

  • احراز هویت و ثبت رای دو مسیر جداگانه‌اند؛ هیچ رکوردی این دو را به هم وصل نمی‌کند
  • فهرست «چه کسی رای داده» جدا از «چه رایی ثبت شده» نگهداری می‌شود
  • هر رای‌دهنده رسید تأیید می‌گیرد که فقط خودش می‌تواند با آن ثبت رایش را بررسی کند
  • شمارش قابل بازتولید است: نتیجه هر بار از روی داده‌های خام دوباره محاسبه می‌شود
  • لاگ تغییرناپذیر رخدادها برای بازرسی پس از انتخابات
۰۳دموی تعاملی

خودتان امتحان کنید

این دمو با دادهٔ نمونه کار می‌کند و به سیستم واقعی وصل نیست. برای درک رفتار سامانه ساخته شده، نه برای نمایش.

۰۴مشخصات فنی

با چه چیزی ساخته شده

بک‌اند
Python · FastAPI
پایگاه داده
PostgreSQL
احراز هویت
دومرحله‌ای · پیامکی
لاگ
Append-only Audit Log
استقرار
On-Premises · Docker

ظرفیت و اعداد عملکردی به منابع سروری بستگی دارد که پروژه رویش مستقر می‌شود. عدد قطعی پس از تست بار روی همان سرور اندازه‌گیری و در قرارداد ثبت می‌شود.

قدم بعدی

مسئلهٔ مشابهی دارید؟

اگر چیزی از این صفحه به کار شما می‌خورد، یک جلسهٔ کوتاه کافی است تا بگوییم برای مورد شما چه چیزی منطقی است — و چه چیزی نیست.