Мне интересно, можно ли использовать Ethereum для зашифрованной одноранговой связи, такой как доставка зашифрованных коротких сообщений или зашифрованных данных в большом количестве между двумя или несколькими сторонами.
Есть ли примеры или приложения, которые я могу просмотреть?
Ознакомьтесь с разделом 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.
Вы также можете проверить следующее:
Мы только что предложили наш проект 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». Таким образом, смарт-контракт всегда может ответить о последних сообщениях для данной учетной записи.
пользователь2065276
пользователь2065276