End-to-end encryption for Apps with NuCrypher KMS. Speaker: Sergey Zotov
В этом месяце были опубликованы короткие видео выступлений спикеров с конференции Blockchain Fairytails, узнаем о каждом из них более подробно:
В данном выпуске Сергей Золотов расскажет о деятельности компании NuCrypher.
Сергей участвует в разработке смарт-контрактов для системы NuCrypher KMS, эта система представляет собой децентрализованную систему сквозного шифрования для децентрализованных приложений.
Для понимания работы системы разберем задачи, которые данная система способна решить или улучшить:
- Передать секретные данные от одного пользователя к другому. Например: отправитель шифрует файл и сохраняет его в хранилище. Проблема состоит в том, что неизвестно когда, кому и при каких условиях понадобятся эти данные. (
- Секретные чаты - получатель передает свой публичный ключ отправителю, который шифрует сообщение и передает его получателю, который, в свою очередь расшифровывает его секретным ключом. Простая схема, но она усложняется в случае группового чата или когда в чат входит новый пользователь (
- Продажа или распространение контента. Централизованный пример - это Netflix, то есть создатель контента загружает зашифрованные данные, и пользователи, оплатившие услуги доступа, имеют возможность просматривать информацию. Но, сложности возникают при попытке использовать публичные сети, децентрализованные механизмы. (
- Получение комиссии
- Майнинг
- Децентрализованные рынки данных
- Децентрализованные базы данных
- Сервисы для доступа к медицинской информации
- Интернет вещей
На сегодняшний день вышеуказанные задачи решаются с помощью доверенного сервера:
(Доверенный сервер получает данные в зашифрованном виде, которые хранит у себя в открытом виде или шифрует своим ключом, далее отдельно зашифровывает их для каждого получателя. Но, в таком случае требуется высокий уровень доверия к серверу и всегда существует вероятность того, что его взломают и секретная информация будет в открытом доступе.
Компания NuCrypher предлагает свое решение - NuCrypher KMS:
(NuCrypher KMS состоит из двух больших блоков: proxy re-encryption и decentralization.
Proxy re-encryption
Рассмотрим процесс работы на примере:
(Задача - передать зашифрованное сообщение от Алисы Бобу. В стандартной ситуации (например в Telegram) эта задача решается следующим образом: Боб, имея пару ключей (секретный и публичный), отдает свои публичный ключ Алисе, затем Алиса шифрует сообщение и передает его Бобу, который расшифровывает его секретным ключом.
С прокси-посредником алгоритм выглядит следующим образом: у каждого пользователя есть пара ключей, Алиса хочет кому-то и, необязательно прямо сейчас, передать сообщение, она шифрует его своим публичным ключом и сохраняет в открытом источнике или в прокси. Далее, когда Алиса хочет передать доступ к сообщению, например, Бобу, она берет у Боба его публичный ключ и на основе его публичного ключа и своего секретного создает так называемый re-encryption ключ и сохраняет его в прокси. Таким образом Боб получает доступ к данным. Когда Боб хочет прочитать сообщение, он обращается в прокси с запросом трансформировать данные. Прокси трансформирует данные таким образом, что Боб может их прочитать с помощью своего секретного ключа. Как видно, в цепочке появляется посредник- прокси, но он не может расшифровать данные, только трансформировать.
Как работает централизованный KMS
(Для того, чтобы шифрование работало быстрее, используется симметричные и асимметричные алгоритмы шифрования. Для начала случайным образом генерируется ключ для симметричного шифрования Data Encryption Key (DEK). Далее, с помощью этого ключа, зашифровываются данные - получаем шифротекст (С на слайде). После зашифровывается сам DEK. Шифротекст и DEK сохраняется в хранилище.
Далее создается политика доступа: получатель отправляет свой публичный ключ отправителю, с помощью публичного ключа и секретного генерируется DEK и сохраняется в прокси. Этап расшифровки: получатель скачивает пару DEK и шифротекст, далее отправляет DEK в прокси, после чего прокси трансформирует DEK в DEK’ и возвращает обратно. Теперь получатель расшифровывает DEK секретным ключом и по цепочке полученный DEK расшифровывает шифротекст.
Это решение для централизованных систем и оно, к сожалению, небезупречно: злоумышленник может получить доступ к прокси, но даже в этом случае он не получит доступа к данным, так как ему потребуется секретный ключ.
Тогда к такому решению добавляется децентрализация
(Из схемы видно, что задействованы уже не один прокси, а множество. При этом каждый прокси обладает своим re-encryption ключом, который трансформирует только часть DEK. И получатель уже должен обратиться к множеству таких прокси, получить ответы, скомбинировать их и только тогда получится тот ключ, который он может расшифровать и остальные действия происходят по аналогии с централизованными системами.
Еще одна особенность данного алгоритма - он является пороговым, то есть не требуется участия всех прокси, достаточно порогового значения, например 70%. Это значит, что если трансформируется 70% данных - можно получить ключ.
Если злоумышленник захватит одну-три ноды - это не позволит ему трансформировать данные, поскольку у него будут лишь фрагменты ключа. Если же злоумышленник захватит нужное количество прокси, тогда он сможет трансформировать ключ, но у него все равно не будет доступа к данным. И пока он этим будет заниматься - предпринятые действия легко обнаружить, но для этого необходимо разделить доверие между узлами прокси.
На этом этапе используются смарт-контракты, Блокчейн и разработанный KMS токен
KMS токен стандарта ERC20, предназначен для того, чтобы определить кому доверять больше, у кого этих токенов больше из прокси нод - к тому больше доверия. Данный токен также используется для оплаты комиссии этих прокси нод и для наказания за нарушения.
Разберем подробнее как происходит участие в сети: новый прокси, который хочет принять участие в сети, покупает KMS токен, далее он вносит депозит на счет смарт-контракта и уже прямого доступа к нему не имеет, пока выполняет свою работу. Пользователь, который хочет воспользоваться системой, также покупает токены и вносит их на счет смарт-контракта в качестве будущей оплаты за ноду. Если нода ведет себя корректно, то она получает свою законную комиссию по истечению срока политики и не теряет ничего из депозита. В случае, если нода ведет себя некорректно, часть депозита взимается и при этом уменьшается доверие к данной ноде.
Нода получает вознаграждения двумя способами:
Майнинг пропорционален заблокированным токенам среди всех токенов и также пропорционален коэффициенту майнинга. Коэффициент на старте будет выше с целью роста сети и увеличения количества подключаемых новых нод. Постепенно он придет к нулю и, как следствие, останется только один способ вознаграждения - комиссия.
На изображении представлены первые пользователи, которые хотят апробировать систему:
(Инвесторы компании:
(Команда:
() (Если у вас остались вопросы или есть предложения, компания всегда открыта к диалогу:
(