Post
Topic
Board Кодеры
Re: Большие данные с защитой от подделки
by
Frankwood
on 06/01/2019, 18:58:52 UTC
fxpc, apxu, ollsanek, спасибо за участие в решение задачи!

Вернусь в начало и перефразирую задачку.

Представьте себе систему пользователи которой должны иметь неоспоримую статистику своей деятельности. На пример результаты по исполнению контрактов.
Пользователи должны быть уверены в том, что исторические данные были подделаны никем, даже владельцем системы.

Уверенность должна быть в:
  • Никто не может исправить результаты по прошлым контрактам даже путем взлома
  • Никто не может добавить нового пользователя в прошлое и провести его в настоящее создав ему нужную историю (создать успешного исполнителя).
В теории все можно подделать, но сравнение бекапов баз данных сразу выявит нарушения (несоответствия).

1. В системе все доверяют валидатору
2. Валидатор делает публичный бекап базы данных раз в сутки
3. Каждый может провести сравнение бекапов с помощью открытого инструмента

Quote from: apxu
Что помешает валидатору вести две базы одновременно? Одна типа честная, другая (или другие) имеют иное содержимое, но во всем остальном подписаны так же и теми же ключами? Первую запись в базе можно и прежней оставить в принципе. Это роли не играет. Фальсификацию можно вообще с любого места начинать.

Очень правильный вопрос. Действительно, можно вести сколько угодно баз.

Что можно с этим сделать:

1. Сделать подмену бекапов начиная с определенного момента в прошлом до текущего дня.
2. Сделать подмену всех бекапов, кроме первого, до текущего дня (считай заменить все, т.к первый ранний бекап может быть практически пустым и ни на что влиять).

Кто это заметит?
Те кто скачивали бекапы и фиксировали их хеши у себя. Они увидят что с определенного момента хеши перестали совпадать.

Будет ли кто-то этим заниматься?
Не думаю. По этому тот кейс о котором ты говоришь вполне прокатит.


Что можно сделать:

В публичный токен компании вложить хеш первого бекапа
Это зафиксирует его в доверительном месте и исключит возможность подмены всех бекапов.

В каждый следующий бекап вкладывать хеш предыдущего и хеш суммы всех хешей
Это даст уверенность в том что вся цепочка верна.

Задействовать блокчейн
В блокчейн биткойна или эфира создавать транзакцию с одного и того же кошелька на каждый бекап и фиксировать там его хеш, хеш прошлого, и сумму хешей. Список хешей будет доступен каждому, в любое время и не обязательно скачивать бекапы и сохранять их хеши у себя вручную.

Сделать кошелек неизменным
Вложить его номер так-же в публичный токен компании. Тогда будет уверенность в том что именно эта история хешей верна.

При этой схеме, зачем валидатору ключ?
Какие возможности взлома или узкие места вы видите?

Quote from: fxpc
Вести ничего не помешает, но вассалы не согласятся с такой подменой, да и валидатору оно нахуй не нужно, потому что это бизнес-логика насколько я понял, разве что проебёт свой ключ и это провернёт злоумышленник.

Да, сам валидатор не заинтересован в мошенничестве. Задача сделать механизм, который позволит это не доказывать.

Как неоспоримый факт: Здесь все данные верны. Никто в этом не сомневается. Открытую бд может проверить любой. Она никогда не была изменена.

Quote from: ollsanek
2. перезаливать всю базу - некруто, надо чтоб была возможность скачивать/проверять только изменения. Но этот способ тоже имеет недостатки. Всегда компромис, который можно решить только зная все детали задачи.

Почему не круто?
Какие недостатки?

Quote from: ollsanek
ээээHuh ну клади в точку доверия кроме хеша ещё и ссылки на базу в нескольких р2р сетях .....
Если бекапы никто не скачает?