Зашифрованные данные в цепочке блоков

Я думаю о разработке какого-то приложения, в котором мне нужно что-то public key cryptographyсделать с помощью smart contract. Отправляет senderнекоторые данные в smart contractзашифрованные с помощью smart contracts public key, smart contractсможет ли расшифровать их с помощью smart contracts private key? Во время smart contractрасшифровки данных все смогут увидеть обычный текст, поскольку он реплицируется на всех узлах?

Поскольку файл smart contractреплицируется на всех узлах сети, сможет ли каждый из них увидеть все содержимое файла smart contract?

Ответы (2)

Поскольку смарт-контракт реплицируется на всех узлах сети, сможет ли каждый из них увидеть все содержимое смарт-контракта?

Краткий ответ: да.

Если контракт выполняет расшифровку, он должен хранить закрытый ключ. Если закрытый ключ хранится в контракте, он реплицируется на каждый узел, и да, в результате каждый узел будет выполнять расшифровку.

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

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

При использовании криптографии с открытым ключом (асимметричной криптографии) необходимо различать подписание и шифрование.

  • Подпись — это доказательство того, что данные подписаны владельцем определенного открытого ключа. Открытый текст также может быть подписан, оставаясь при этом прозрачным (не зашифрованным).

  • Шифрование гарантирует, что только тот, кто имеет доступ к закрытому ключу, соответствующему определенному открытому ключу, может расшифровать содержимое.

Оба могут использоваться вместе или нет (зашифровано, подписано или зашифровано и подписано).

Помните, что:

  1. Открытый ключ нельзя использовать для расшифровки сообщения , поэтому он является открытым ключом, его можно безопасно распространять для получения зашифрованных сообщений, зашифрованных для этого ключа, или для проверки того, что некоторые данные были подписаны владельцем корреспондента. закрытый ключ.
  2. Закрытый ключ нельзя использовать для шифрования , его можно использовать только для расшифровки или подписи .
Я перепутал условия, я отредактировал вопрос.
@jgm, даже если ваш вопрос изменился, мой ответ остается в силе: открытый ключ нельзя использовать для расшифровки сообщения. Более того, закрытый ключ нельзя использовать для шифрования данных, а только для их расшифровки и/или записи.
@atfornes Различие вводит в заблуждение. Вы всегда используете ключи для шифрования/дешифрования. Подпись — это только конкретный случай, когда вы шифруете только хэш файла, а не все содержимое файла. Нет ничего, что отличало бы закрытый и открытый ключи, а только тот факт, что вы держите один в секрете, а другой — в открытом доступе. Итак, вы можете расшифровать с помощью открытого ключа : на самом деле это именно то, что вам нужно сделать, когда вы хотите проверить знак, то есть хэш, зашифрованный с помощью закрытого ключа .
Вы правы @GiuseppeBertone, спасибо за комментарий. Пожалуйста, не стесняйтесь предлагать редактирование моего ответа. Я написал ответ таким образом, чтобы можно было легко различать закрытый и открытый ключи, поскольку в первых версиях вопрос казался неясным. Теперь вопрос стал намного яснее, и у Джейми Хейл есть действительно хороший ответ на него.
«Нет ничего, что отличало бы закрытый и открытый ключи» — это не совсем так, а также зависит от криптосистемы. Вы можете получить открытый ключ из закрытого ключа, но не наоборот.