Предлагает ли Ethereum зашифрованные приложения для одноранговой связи?

Мне интересно, можно ли использовать Ethereum для зашифрованной одноранговой связи, такой как доставка зашифрованных коротких сообщений или зашифрованных данных в большом количестве между двумя или несколькими сторонами.

Есть ли примеры или приложения, которые я могу просмотреть?

Ответы (2)

Ознакомьтесь с разделом Use Cases в протоколе Ethereum Whisper по адресу https://github.com/ethereum/wiki/wiki/Whisper-Overview :

  • shh.post({ "topic": t, "payload": p });Без подписи, без шифрования: анонимная трансляция; немного похоже на анонимную ленту твиттера с фильтрацией по теме.
  • shh.post({ "from": myIdentity, "topic": t, "payload": p });Открытая подпись, без шифрования: трансляция с четкой подписью; немного похоже на обычную ленту твиттера - любой заинтересованный может увидеть, что конкретная личность не отправляет определенные вещи никому в частности.
  • shh.post({ "to": recipient, "topic": t, "payload": p });Без подписи, шифрование: Зашифрованное анонимное сообщение; немного похоже на анонимный дропбокс - сообщение является личным для владельца дропбокса. Они не могут сказать, от кого это.
  • shh.post({ "from": myIdentity, "to": recipient, "topic": t, "payload": p });Секретная подпись, шифрование: Зашифрованное подписанное сообщение; как защищенная электронная почта. Одна личность что-то сообщает другой — никто другой не может это прочитать. Только получатель знает, что оно пришло от отправителя.
  • shh.post({ "from": myIdentity, "to": recipient, "topic": t, "payload": p, "deniable": d });Секретная подпись, шифрование с возможностью правдоподобного отрицания. Если логический параметр d равен false, он эквивалентен предыдущему вызову. Если d истинно, получатель не может доказать какой-либо третьей стороне, что сообщение исходит от отправителя, хотя все еще может проверить это для себя. Это достигается за счет того, что цифровая подпись рассчитывается для симметричного ключа шифрования сеанса, а не для тела сообщения.

Ответ на ваш комментарий ниже

Цитата Péter Szilágyiиз Каковы эффективные методы шифрования/дешифрования данных, хранящихся в смарт-контракте? :

Поскольку все транзакции и данные в блокчейне общедоступны, вам необходимо зашифровать данные за пределами Ethereum и вставить уже зашифрованные данные. Точно так же вам нужно извлечь зашифрованные данные и расшифровать их локально. Я уверен, что есть много криптобиблиотек для javascript, которые позволят вам это сделать, я сомневаюсь, что web3 содержит такую ​​​​функциональность, поскольку она выходит за рамки ее возможностей.

И цитата dbrysonиз « Могут ли смарт-контракты вычислять зашифрованные данные?» :

Если я правильно понимаю ваш вопрос, то, что вы имеете в виду, называется безопасным многосторонним вычислением, которое не является текущей возможностью смарт-контрактов. На самом деле, это сложная задача, которую, вероятно, лучше всего решать вне блокчейна, так как она может потребовать больших вычислительных ресурсов. Я бы порекомендовал для начала взглянуть на проекты MIT enigma и openPDS. Я не видел каких-либо запланированных вех для этой возможности в Ethereum.

Вы также можете проверить следующее:

@BokkyPoohBah Большое спасибо за ваш ответ. Знаете ли вы какие-либо Dapps, которые реализованы для небольшого или массового шифрования? Как можно интегрировать смарт-контракт с шифрованием с помощью Whisper, чтобы, например, после завершения шифрования расшифровка выполнялась в течение 24 часов, а после завершения расшифровки ее нельзя было выполнить снова. Имеет ли это смысл?
Есть ли ограничение на размер зашифрованных данных, которые можно поместить в блокчейн Ethereum?

Мы только что предложили наш проект UnwiredApp на основе Ethereum. это в основном смарт-контракт, который записывает сообщения, относящиеся к данному пользователю, и позволяет получателю и только ему читать их. Видео питча здесь .

Существенный код надежности в смарт-контракте следующий:

struct mess {
  uint256 idMessage;
  uint256 idPrevious;
  uint256 timestamp;
  address from;
  string message;
}

/* Array with all messages with structure messages[to][idMessage] */
mapping (address => mapping (uint256 => mess)) public messages;

Таким образом, каждое сохраненное сообщение представляет собой структуру, содержащую значения для идентификатора, указателя на предыдущее сообщение, метку времени, отправителя (от) и само сообщение в виде строки.

Все сообщения хранятся в сопоставлении с двумя индексами: «to» и «idMessage». Таким образом, смарт-контракт всегда может ответить о последних сообщениях для данной учетной записи.

И как работает этот контракт? Хотя теоретически это может ответить на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки.
Ну, я добавил некоторые пояснения. Я надеюсь, что это помогает.