Данные
Описание перечня данных хранимых на каждом узле в распределенной системе. Для хранения рекомендуется использовать БД Berkeley DB.
Содержание |
Перечень данных пользователя
Каждый узел должен хранить данные для каждого пользователя который пользуется узлом. Т.е. каждый пользователь имеет свой набор данных. Набор данных пользователя включает в себя:
Мастер ключ
???
Идентифицирующий хэш
??? Для идентификации пользователя и его ключа будет служить специальное значение - идентифицирующий хэш. В одном из идентификаторов публичного ключа должно ставиться значение вида (пример укорочен):
IDHASH:3C65C65D4F8166C21823F253CE6F14037128DD614B43390535667AAE2CC518E2
Хэш формируется по алгоритму SHA512 в рекурсивном цикле уровня 128 по символьному его представлению в 16-ричном виде в верхнем регистре. Идентифицирующий хэш должен формироваться из соединения нескольких строк:
- Дата рождения в формате YYYYMMDD (Y - год, M - месяц, D - день. Считается с начала Нашей Эры).
- Номер свидетельства о рождении. Серия и номер пишутся вместе. Все незначащие разделительные знаки опускаются. Если присутствуют буквы - вводятся в кодировке UTF-8 в верхнем регистре.
- Идентификационный социальный номер в стране гражданства (страна рождения или первая по алфавиту в написании латиницей страна гражданства). Все незначащие разделительные знаки опускаются. Если присутствуют буквы - вводятся в кодировке UTF-8 в верхнем регистре. Номер СНИЛС в России или SSN в США.
Данный хэш будет легко проверятся подписывающим ключ, т.к. он имеет четкие правила формирования. Помощник по формированию идентифицирующего хэша: http://test.cdemocracy.ru/register/gpghelp_idhash
Перечень данных узла
Кроме того каждый узел имеет общий набор данных для всех пользователей. Набор данных узла включает в себя:
Транспортный ключ
???
Список соседних узлов
??? IP-адрес, ключи субъектов голосования используемых на узле
Перечень транзитных данных
Протоколы
Структура пакетов
Предлагаю следующую структуру пакетов:
- <type> - 1 байт - Тип пакета. Т.к. у многих пакетов их размер может быть жестко фиксированным в зависимости от типа, тип лучше размещать в первом байте;
- <packet> - пакет;
Если тип пакета подразумевает его идентификацию, то в начале <packet> следует
- <id> - 16 байт - идентификатор пакета (UUID);
Если тип данных подразумевает определенный размер этих данных, то далее в <packet> для таких типов содержатся данные. Если тип данных переменного размера, то далее следует:
- <size> - 2 байта - общий размер данных пакета;
- <data> - данные пакета;
Данные пакеты представляют из себя набор записей вида:
- <field type> - 1 или 2 байта - тип поля;
- <field record> - Данные поля;
Если данные поля не фиксированного размера, то в <field record> сохраняются данные с указанием размера:
- <field size> - 2 байта - размер данных поля;
- <field data> - данные поля;
Типы пакетов
Требует согласования с разработчиками. Возможно, не актуально.
Код типа пакета | Размер данных | Идентифицируемый | Описание типа |
---|---|---|---|
0x00 | 0 | - | Пинг |
0x01 | 0 | - | Понг |
0x02 | ~ | + | Запрос на данные |
0x03 | ~ | + | Публичный ключ |
0x04 | ~ | + | Голосование |
Коды данных
Требует согласования с разработчиками. Возможно, не актуально.
На этой странице собраны коды для различных данных в системе.
Мнемокод | Числовой код | Назначение данных |
---|---|---|
NULL | 0x00 | Пустые данные |
U.PKEY.FP | 0x01 | Отпечаток персонального ключа пользователя |
U.PTKEY.FP | 0x02 | Отпечаток транспортного ключа пользователя |
U.BD | 0x03 | Дата рождения пользователя из программы |
U.TR | 0x04 | Основная территория пользователя из программы |
U.ATR | 0x05 | Дополнительная территория пользователя из программы |
U.TID | 0x06 | Налоговый идентификатор пользователя из программы |
U.SID | 0x07 | Социальный идентификатор пользователя из программы |
U.PKEY | 0x08 | Публичный персональный ключ пользователя |
U.PTKEY | 0x09 | Публичный транспортный ключ пользователя |
S.TYPE | 0x10 | Тип голосования |
Коды типов голосований
Требует согласования с разработчиками. Возможно, не актуально.
Код | Описание |
---|---|
0x00 | Открытое голосование в субъекте |
0x01 | Тайное голосование в субъекте |
0x02 | Голосование по субъекту (создание, изменение параметров) |
0x03 | Вотум недоверия |
Конфигурационные файлы
Конфиг. файл back-end
???