Прозрачност & Техническа документация

КАК
РАБОТИ

Техническо описание на механизмите, които гарантират пълна анонимност на всеки глас — независимо от намеренията на администраторите.

Процесът стъпка по стъпка

01
🔑

Удостоверяване с Google

OAuth 2.0 токен верификация

При гласуване системата получава временен OAuth токен от Google. От него извличаме единствено вашия Google ID — уникален числов идентификатор. Паролата ви, имейлът ви и всякаква друга лична информация остават недостъпни за нас.

02

Комбиниране със Salt и Pepper

Криптографска подготовка

Всяко проучване притежава уникален "salt" — произволна низова стойност, генерирана при създаването му. Към нея се добавя и "pepper" — таен ключ, съхраняван единствено на сървъра и непознат дори на базата данни. Трите стойности се обединяват преди хеширане.

03
#

Генериране на хеш

SHA-256 — еднопосочна функция

От комбинацията Google ID + salt + pepper се изчислява SHA-256 хеш. Това е стандартна криптографска операция с математически доказана необратимост — от получения хеш е невъзможно да се възстанови оригиналният Google ID.

04

Анонимно записване на гласа

Физически разделени таблици

Гласът ви се записва в таблица votes. Хешът се записва в таблица used_hashes. Двете таблици не споделят обща колона и не могат да бъдат свързани по никакъв начин. Дори при пълен достъп до базата данни е невъзможно да се установи кой потребител е подал кой глас.

05
🛡

Предотвратяване на двойно гласуване

used_hashes таблица

Преди записване на глас системата проверява дали генерираният хеш вече съществува в used_hashes. При намиране — гласуването е отхвърлено. При липса — хешът се записва и гласът се приема. Системата не установява самоличност, а единствено уникалност.

Схема на данните

ВХОД — временно в паметта

Google ID10823456...
Salt на анкетатаa3f8c2d1...
Pepper (таен ключ)••••••••

✕ Никога не се записва

SHA-256

Еднопосочна
криптографска функция

необратима

БАЗА ДАННИ — записано

used_hashes

e3b0c44298fc1c14...

votes

choice: "ДА"

✓ Без лични данни

Таблиците used_hashes и votes не споделят обща колона — физически не могат да бъдат свързани.

Често задавани въпроси

?

Може ли Социолог.bg да установи как съм гласувал?

Не. Гласът и хешът се съхраняват в отделни таблици без каквато и да е обща колона. Дори администраторите с пълен достъп до базата данни не могат технически да свържат конкретен глас с конкретен потребител.

?

Какво се случва с Google ID-то ми след гласуване?

Google ID-то се зарежда временно в паметта на сървъра единствено за генериране на хеша. Веднага след изчислението то се освобождава от паметта. В базата данни постъпва само хешът — криптографски отпечатък без обратна връзка към оригинала.

?

Ако базата данни бъде компрометирана, застрашена ли е анонимността ми?

Не. При пълен достъп до базата данни нападателят ще открие само хешове и анонимни гласове. SHA-256 е математически необратим — от стойността "e3b0c44..." е невъзможно да се възстанови оригиналният Google ID.

?

Защо е необходим Google ID, ако не го съхранявате?

Google ID служи като уникален входен параметър за генериране на хеша, който предотвратява двойното гласуване. Необходим е за еднократно изчисление — след приключването му не се съхранява никъде.

Отворен код

Прегледайте сорс кода

Цялата логика за анонимизация е публично достъпна. Можете да проверите сами как работи системата.

GitHub Repository

Архитектурен принцип

Анонимността не е
политика — тя е
математика.

Системата е проектирана така, че установяването на самоличността на гласуващ е математически невъзможно — независимо от намеренията или правомощията на когото и да е с достъп до инфраструктурата.