Как защищены сделки?

Я программист и хочу узнать больше о шифровании и о том, как работает Биткойн, но в Интернете не так много описаний, как работает весь этот код. Было бы полезно, если бы был какой-то визуальный способ описать концепцию того, как и что он делает.

Как кто-то может отправить открытый ключ и закрытый ключ на другой компьютер, не выдавая закрытый ключ? Если вы не отправили закрытый ключ, как другой компьютер узнает, что транзакция была совершена вами, а не кем-то другим, притворяющимся вами?

Я прочитал о парах ключей и сумел сгенерировать пару ключей в java. Каждый пример «использования» пары ключей очень расплывчатый. Как вы «используете» пару ключей для подтверждения транзакции. Я знаю, что у вас есть закрытый ключ, который подписывает транзакцию, и открытый ключ каким-то образом подтверждает транзакцию, но я не понимаю, «как» он «используется», если вы отправляете транзакцию со своим секретным ключом, не так ли? быть секретным ключом? Как открытый ключ подтверждает, что транзакция была подписана правильно? Как вы можете отправить свой секретный ключ так, чтобы кто-то не использовал его после того, как он его получил? Если Боб отправит транзакцию Тиму, не будет ли у Тима ключа безопасности Боба?

Мне очень жаль, если этот вопрос звучит глупо. Мне просто трудно понять, как вы можете отправить кому-то транзакцию и иметь возможность «подписать» эту транзакцию и как ее подтвердить. во многих сообщениях люди говорят о его алгоритме цифровой подписи на эллиптических кривых (ECDSA), но как он все это делает.

Что вы подразумеваете под «кодом безопасности» и «ключом безопасности»?
Из того, что я вижу, он использует пару ключей. Где он делает два ключа: один открытый и один закрытый. Я могу ошибаться.
Привет, Патрик, добро пожаловать в Bitcoin.SE. Пожалуйста, ознакомьтесь с нашим туром , чтобы получить краткий обзор того, как работает наш сайт. Как вы понимаете, многие вопросы уже были заданы и на них были даны ответы, поэтому, пожалуйста, проверьте, существует ли вопрос, прежде чем задавать его снова. Кроме того, легче сравнивать ответы и объединять вопросы, когда в сообщении есть только один вопрос. Я предлагаю вам проверить, что такое закрытый ключ и открытый ключ? и, возможно, этот набор вопросов: я новичок в биткойнах, с чего мне начать?
Патрик: Было бы здорово, если бы вы могли отредактировать свой вопрос, задав только одну тему и дав ей описательное название. Вы можете задать столько вопросов, сколько хотите, поэтому вы можете создать новый для каждой из других тем. :)
Я думаю, что я должен начать с более общего понимания того, что происходит под капотом, прежде чем углубляться в два вопроса.
В дополнение к страницам, на которые ссылался @Murch, я также считаю очень информативным это видео: youtube.com/watch?v=Lx9zgZCMqXE .
Вы никогда не делитесь своим секретным ключом. Вы делитесь только своим открытым ключом и подписью, которая доказывает, что у вас есть закрытый ключ (без раскрытия фактического закрытого ключа). Смотрите более подробный ответ ниже.
Хочу поблагодарить всех за предоставленную информацию. Я все еще изучаю этот материал, и мне предстоит пройти долгий путь, чтобы понять внутреннюю работу цифровых валют.

Ответы (2)

Во-первых, в Биткойне ничего не зашифровано, никакого «шифрования» нет. Криптография: да, но шифрование: нет.

Основным аспектом подписания закрытого и открытого ключа является то, что вы можете открыто поделиться своим открытым ключом (именно с этим связаны балансы биткойнов), а затем, используя свой закрытый ключ, вы можете создать «цифровую подпись» для транзакции, тратя монеты из этого открытый ключ. Другие люди могут проверить правильность этой подписи, таким образом зная, что транзакция была подписана тем, у кого есть закрытый ключ. Но вот в чем загвоздка: эту проверку можно выполнить без закрытого ключа.

Таким образом, алгоритм цифровой подписи позволяет вам доказать, что у вас есть закрытый ключ, соответствующий определенному открытому ключу, без предоставления фактического закрытого ключа .

И, очевидно, также не существует реального способа восстановить закрытый ключ из заданного открытого ключа и действительной подписи.

Это называется ECDSA или «алгоритм цифровой подписи на эллиптических кривых», потому что внутренняя работа основана на эллиптических кривых.

Как все это работает технически, несколько сложно, здесь задействована некоторая причудливая математика. Если вы хотите углубиться в грязные подробности, вот хорошее объяснение: http://kakaroto.homelinux.net/2012/01/how-the-ecdsa-algorithm-works/

Я собираюсь сказать заранее, я сослался на несколько источников, но на данном этапе еще не отправил необработанную транзакцию самостоятельно. Поэтому я думаю, что вопрос OP весьма актуален, поскольку в Bitcoin SE нет конкретного примера, описывающего процесс транзакции (который запутан, особенно для новичков). Начните с этого блога , а затем проверьте:

  1. Раздел разработчиков Bitcoin.org (самые важные детали)
  2. Технический раздел BTC Wiki (более подробно)

http://www.royalforkblog.com/2014/09/04/ecc/

Не совсем актуально, вопрос касается только ECDSA, а хэши, погашение или необработанный макет tx не являются частью этого.
Ты прав. На самом деле я был ограничен приложением iOS SE, которое, наконец , HD (т.е. не порт iPhone); могу четко прочитать пост ОП (я пропустил его конец)