Данные
Oleg (обсуждение | вклад) |
Oleg (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
== Перечень данных пользователя == | == Перечень данных пользователя == | ||
Каждый узел должен хранить данные для каждого пользователя который пользуется узлом. Т.е. каждый пользователь имеет свой набор данных. Набор данных пользователя включает в себя: | Каждый узел должен хранить данные для каждого пользователя который пользуется узлом. Т.е. каждый пользователь имеет свой набор данных. Набор данных пользователя включает в себя: | ||
+ | === Мастер ключ === | ||
=== Идентифицирующий хэш === | === Идентифицирующий хэш === | ||
Для идентификации пользователя и его ключа будет служить специальное значение - идентифицирующий хэш. В одном из идентификаторов публичного ключа должно ставиться значение вида (пример укорочен): | Для идентификации пользователя и его ключа будет служить специальное значение - идентифицирующий хэш. В одном из идентификаторов публичного ключа должно ставиться значение вида (пример укорочен): | ||
Строка 18: | Строка 19: | ||
== Перечень данных узла == | == Перечень данных узла == | ||
Кроме того каждый узел имеет общий набор данных для всех пользователей. Набор данных узла включает в себя: | Кроме того каждый узел имеет общий набор данных для всех пользователей. Набор данных узла включает в себя: | ||
+ | === Транспортный ключ === | ||
=== Список соседних узлов === | === Список соседних узлов === | ||
IP-адрес, ключи субъектов голосования используемых на узле | IP-адрес, ключи субъектов голосования используемых на узле | ||
Строка 148: | Строка 150: | ||
|align="left" |Вотум недоверия | |align="left" |Вотум недоверия | ||
|} | |} | ||
+ | |||
+ | == Конфигурационные файлы == | ||
+ | === Конфиг. файл back-end === | ||
[[Category:Распределенная система]] | [[Category:Распределенная система]] |
Версия 11:15, 14 марта 2012
Описание перечня данных хранимых на каждом узле в распределенной системе. Все данные хранятся в БД Berkeley DB.
TODO: Наполнять перечни данных по ходу обсуждения сценариев использования
Содержание |
Перечень данных пользователя
Каждый узел должен хранить данные для каждого пользователя который пользуется узлом. Т.е. каждый пользователь имеет свой набор данных. Набор данных пользователя включает в себя:
Мастер ключ
Идентифицирующий хэш
Для идентификации пользователя и его ключа будет служить специальное значение - идентифицирующий хэш. В одном из идентификаторов публичного ключа должно ставиться значение вида (пример укорочен):
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 | Вотум недоверия |