Сценарии использования
---TODO (на что обратить внимание)---
- Просмотреть все существительные на предмет нового термина. Ввести новые термины
- Просмотреть какие типы данных и протоколы используются в сценарии. Ввести новые данные и протоколы
- Разобраться в действиях на каждом слое архитектуры
Создание ключей
Ключи можно создать и без использования нашего ПО. Для работы системы необходимо иметь следующие идентификаторы:
- Мастер ключ (public и private части). Ключ идентифицирующий пользователя
- Транспортный ключ (public и private части). Public часть обязательно подписана хотя-бы одним мастер ключом
Опционально:
- Идентифицирующий хэш, подписанный мастер ключом
---TODO (в процессе редактирования)---
Back-end запускается в большинстве случаев автостартом с запуском системы. При запуске back-end проверяет наличие мастер ключа, транспортного ключа и идентифицирующего хэша (idhash) по пути указанному в конфигурационном файле для back-end или из командной строки. По умолчанию это хранилище GPG. При наличии ключей выполняется сценарий "подключение к сети". При отсутствии ключей они будут созданы автоматически (по пути указанному в конфигурационном файле). В процессе генерации ключа пользователю предлагается ввести данные для idhash. При отсутствии idhash, back-end считается анонимным. После этого будет выполнятся сценарий "подключение к сети". В дальнейшем продвинутые пользователи могу перенести ключи в другое место соответственно изменив настройки в конфигурационном файле.
Подключение к сети
---TODO (в процессе редактирования)---
При запуске пользователем front-end (GUI), он подключается к back-end и установив что последний еще не имеет идентификатора, предлагает зарегистрировать наш узел в системе. Для этого нам нужно подключиться к известному узлу с запросом на регистрацию. По умолчанию предлагается узел gplvote.org. В случае успешной процедуры back-end получает идентификатор узла. В случае неудачи (если умолчательный узел по какой-либо причине недоступен) GUI должен сообщить о недоступности и предложить ввести новые адреса. В данном случае список адресов следует попросить у знакомого который уже пользуется системой (эта информация в виде подсказки должна быть рядом с полем для ввода списка адресов). Список адресов вы можете получить любым удобным для вас способом. Back-end будет снова выполнять запрос на регистрацию подключаясь к узлам из списка, до тех пор пока получит идентификатор или дойдет до конца списка. В случае доступности, но занятости какого-либо узла, последний передаст адрес "свободного" узла для получения идентификатора. Все успешные и неудачные подключения записываем в базу (адреса и доступность). Этот список будет использоваться в дальнейшем для поиска доступных узлов при соединении с "сетью".
---TODO (в процессе редактирования)---
При дальнейших запусках back-end уже будет иметь идентификатор и список адресов и будет даже без запуска front-end пытаться подключится к сети. В случае неудач при подключении ко всем узлам из списка, пользователю при запущенном front-ent будет предлагаться снова ввести список адресов доступных узлов.
По ходу работы back-end ищет "соседние" узлы и строит (редактирует) свой список узлов которые нашло, запрашивая адреса "соседей" у каждого найденного узла. В дальнейшем обмен технической и пользовательской информацией будет вестись через этих "соседей", которые будут отранжированы по различным параметрам. Список "соседей" будет динамический и постоянно обновляемый.
При запуске программы на компьютере ищется перечень электронных паспортов пользователей которые ранее авторизировались. Если ни одного не нашло то предлагается создать электронный паспорт, если нашло то предлагает авторизироваться (ввести пароль). Доступ к кнопке создания электронного паспорта должен быть в любом случае, чтоб была возможность всегда завести нового пользователя.
При холодном подключении узел должен сообщить подключающему узлу ЭП владельца. И получить тикет "запрос возможно будет обработан через x часов тикет действителен y дней". Придя через x часов узел получит или продление тикета, или информацию для подключения с сертификатом подписанным подключающим узлом. В информации для подключения будет список IP через которые уже можно осуществить горячее подключение.
Не желающие ждать продолжительное время могут сделать запрос на личный узел который будет выполнять только этот один запрос. В случае если ЭП владельца подключаемого узла совпадает с ЭП владельца подключающего узла, то он просто подписывает сертификат и делится списком известных ему адресов.
Информация работы back-end должна логироваться и/или выводится на front-end
Доп. информация:
Подписывание чего либо
Основной интерфейс и система меню
Получение доверия
Создание субъекта голосования
Поиск субъектов голосования
Поиск пользователей
Вступление в субъекты голосования
Подписи доверия и недоверия
Распределение (делегирование) голосов в субъекте голосования
Голосования
Открытое
Тайное
Общение пользователей
Инициация голосования в субъекте голосования
Модерирование инициаторов голосования
Основной режим: проставление рейтингов инициаторам голосования.
Дополнительный режим: возможность совместного бана инициаторов "спама" вплоть до исключения из субъекта голосования.