fxpc, apxu, ollsanek, спасибо за участие в решение задачи!
Вернусь в начало и перефразирую задачку.
Представьте себе систему пользователи которой должны иметь неоспоримую статистику своей деятельности. На пример результаты по исполнению контрактов.
Пользователи должны быть уверены в том, что исторические данные были подделаны никем, даже владельцем системы.
Уверенность должна быть в:
- Никто не может исправить результаты по прошлым контрактам даже путем взлома
- Никто не может добавить нового пользователя в прошлое и провести его в настоящее создав ему нужную историю (создать успешного исполнителя).
В теории все можно подделать, но сравнение бекапов баз данных сразу выявит нарушения (несоответствия).
1. В системе все доверяют валидатору
2. Валидатор делает
публичный бекап базы данных раз в сутки
3.
Каждый может провести сравнение бекапов с помощью
открытого инструментаЧто помешает валидатору вести две базы одновременно? Одна типа честная, другая (или другие) имеют иное содержимое, но во всем остальном подписаны так же и теми же ключами? Первую запись в базе можно и прежней оставить в принципе. Это роли не играет. Фальсификацию можно вообще с любого места начинать.
Очень правильный вопрос. Действительно, можно вести сколько угодно баз.
Что можно с этим сделать:
1. Сделать подмену бекапов начиная с определенного момента в прошлом до текущего дня.
2. Сделать подмену всех бекапов, кроме первого, до текущего дня (считай заменить все, т.к первый ранний бекап может быть практически пустым и ни на что влиять).
Кто это заметит?
Те кто скачивали бекапы и фиксировали их хеши у себя. Они увидят что с определенного момента хеши перестали совпадать.Будет ли кто-то этим заниматься?
Не думаю. По этому тот кейс о котором ты говоришь вполне прокатит.
Что можно сделать:
В публичный токен компании вложить хеш первого бекапа
Это зафиксирует его в доверительном месте и исключит возможность подмены всех бекапов.
В каждый следующий бекап вкладывать хеш предыдущего и хеш суммы всех хешей
Это даст уверенность в том что вся цепочка верна.
Задействовать блокчейн
В блокчейн биткойна или эфира создавать транзакцию с одного и того же кошелька на каждый бекап и фиксировать там его хеш, хеш прошлого, и сумму хешей. Список хешей будет доступен каждому, в любое время и не обязательно скачивать бекапы и сохранять их хеши у себя вручную.
Сделать кошелек неизменнымВложить его номер так-же в публичный токен компании. Тогда будет уверенность в том что именно эта история хешей верна.
При этой схеме, зачем валидатору ключ?
Какие возможности взлома или узкие места вы видите?
Вести ничего не помешает, но вассалы не согласятся с такой подменой, да и валидатору оно нахуй не нужно, потому что это бизнес-логика насколько я понял, разве что проебёт свой ключ и это провернёт злоумышленник.
Да, сам валидатор не заинтересован в мошенничестве. Задача сделать механизм, который позволит это не доказывать.
Как неоспоримый факт: Здесь все данные верны. Никто в этом не сомневается. Открытую бд может проверить любой. Она никогда не была изменена.
2. перезаливать всю базу - некруто, надо чтоб была возможность скачивать/проверять только изменения. Но этот способ тоже имеет недостатки. Всегда компромис, который можно решить только зная все детали задачи.
Почему не круто?
Какие недостатки?
ээээHuh ну клади в точку доверия кроме хеша ещё и ссылки на базу в нескольких р2р сетях .....
Если бекапы никто не скачает?