Процесът стъпка по стъпка
Удостоверяване с Google
OAuth 2.0 токен верификацияПри гласуване системата получава временен OAuth токен от Google. От него извличаме единствено вашия Google ID — уникален числов идентификатор. Паролата ви, имейлът ви и всякаква друга лична информация остават недостъпни за нас.
Комбиниране със Salt и Pepper
Криптографска подготовкаВсяко проучване притежава уникален "salt" — произволна низова стойност, генерирана при създаването му. Към нея се добавя и "pepper" — таен ключ, съхраняван единствено на сървъра и непознат дори на базата данни. Трите стойности се обединяват преди хеширане.
Генериране на хеш
SHA-256 — еднопосочна функцияОт комбинацията Google ID + salt + pepper се изчислява SHA-256 хеш. Това е стандартна криптографска операция с математически доказана необратимост — от получения хеш е невъзможно да се възстанови оригиналният Google ID.
Анонимно записване на гласа
Физически разделени таблициГласът ви се записва в таблица votes. Хешът се записва в таблица used_hashes. Двете таблици не споделят обща колона и не могат да бъдат свързани по никакъв начин. Дори при пълен достъп до базата данни е невъзможно да се установи кой потребител е подал кой глас.
Предотвратяване на двойно гласуване
used_hashes таблицаПреди записване на глас системата проверява дали генерираният хеш вече съществува в used_hashes. При намиране — гласуването е отхвърлено. При липса — хешът се записва и гласът се приема. Системата не установява самоличност, а единствено уникалност.
Схема на данните
ВХОД — временно в паметта
✕ Никога не се записва
SHA-256
Еднопосочна
криптографска функция
необратима
БАЗА ДАННИ — записано
used_hashes
e3b0c44298fc1c14...
votes
choice: "ДА"
✓ Без лични данни
Таблиците used_hashes и votes не споделят обща колона — физически не могат да бъдат свързани.
Често задавани въпроси
Може ли Социолог.bg да установи как съм гласувал?
Не. Гласът и хешът се съхраняват в отделни таблици без каквато и да е обща колона. Дори администраторите с пълен достъп до базата данни не могат технически да свържат конкретен глас с конкретен потребител.
Какво се случва с Google ID-то ми след гласуване?
Google ID-то се зарежда временно в паметта на сървъра единствено за генериране на хеша. Веднага след изчислението то се освобождава от паметта. В базата данни постъпва само хешът — криптографски отпечатък без обратна връзка към оригинала.
Ако базата данни бъде компрометирана, застрашена ли е анонимността ми?
Не. При пълен достъп до базата данни нападателят ще открие само хешове и анонимни гласове. SHA-256 е математически необратим — от стойността "e3b0c44..." е невъзможно да се възстанови оригиналният Google ID.
Защо е необходим Google ID, ако не го съхранявате?
Google ID служи като уникален входен параметър за генериране на хеша, който предотвратява двойното гласуване. Необходим е за еднократно изчисление — след приключването му не се съхранява никъде.
Отворен код
Прегледайте сорс кода
Цялата логика за анонимизация е публично достъпна. Можете да проверите сами как работи системата.
Архитектурен принцип
Анонимността не е
политика — тя е
математика.
Системата е проектирана така, че установяването на самоличността на гласуващ е математически невъзможно — независимо от намеренията или правомощията на когото и да е с достъп до инфраструктурата.