Удивительное рядом. Вас хотят слышать. Все хотят. А то вдруг, вы шепнёте на ухо знакомому в парке мем «Хайль Гидра!»?! Непорядок!
И на кухне ваши разговоры — остаются вашими. Но в интернете, вдруг, всем нужно знать, что за данные идут от узла А к узлу Б. Да ещё в открытом виде.
Шифрование сообщение через shared key существует давно (относительно). Те же заметки к переводам в сети BitShares реализованы через aes-256-cbc, используя в качестве пароля shared key между двумя узлами.
В предлагаемом протоколе VIZ Whisper есть важное отличие. В операции нет конкретного получателя. Более того, отправитель ТОЖЕ может быть скрыт, а кто-то будет использовать промежуточный аккаунт, возможно служебный/общий/анонимный, чтобы доставить шепот в сеть.
Алгоритм работы для отправителя
- Получение shared key из memo private key и публичного ключа получателя.
- Шифрование сообщения и получение стандартного набора данных, которое можно преобразовать в base58 строку.
- Создание приватного ключа Whisper из строки: «VIZ Whisper» + (unixtime / 10 | 0).
- Получение whisper shared key из полученного whisper private key и публичного ключа получателя.
- Новое шифрование сообщение, используя whisper shared key в качестве пароля, на данном этапе можно дополнить набор данных отправителем, чтобы упростить расшифровку вложенного сообщения.
- Загрузка сообщения в сеть через операцию custom с названием протокола W (сокращаем Whisper для экономии пропускной способности).
Алгоритм работы для получателя
- Мониторим блоки, ищем custom операции с протоколом W.
- В цикле вычисляем приватный ключ VIZ Whisper» + (block_unixtime / 10 | 0) и пытаемся расшифровать сообщение через общий shared key. Если не подходит отнимаем по 10 секунд у unixtime для каждой попытки (около 3 или 6 хватит, чтобы избежать большого лага у отправителя).
- Если успех, то расшифровываем сообщение внутри по shared key с отправителем транзакции ИЛИ, если в массиве данных присутствует указание на другой аккаунт — с указанным аккаунтом.
- Расшифровываем сообщение и выводим на экране.
Данный протокол успешно скрывает получателя (что не исключает догадку, кто с кем общается, если участников в протоколе несколько) и потенциально — отправителя.
Предлагаю участникам VIZ подключиться к обсуждению протокола, может кто-то захочет разработать экспериментальную версию dapp для тестирования в действующей сети. Ну а пока… Вспомним вселенную Marvel 😀
Наградить автора поста