Что такое публичный ключ биткоина и зачем он нужен

Что такое публичный ключ и как он выглядит?

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

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

Состоит публичный ключ 26-35 символов, которые могут быть буквами латинского алфавита (кроме O, l и I) в нижнем и верхнем регистре и цифрами (кроме 0). Выглядит биткоин-адрес примерно так:

1EhAppLe4FaBiTca1NADr3sSV56sGaMG6hP

Также при создании кошелька пользователь получает открытый ключ в виде QR-кода для простоты использования — если нужно отправить биткоины на определенный адрес, то можно просто просканировать код.     

Файлы GPG

Имеется несколько конфигурационных файлов для контроля определённых аспектов операций gpg. Если не сказано другое, ожидается что они размещены в домашней директории текущего пользователя.

gpg.conf

Стандартный конфигурационный файл, который gpg считывает при запуске. Он может содержать любое количество валидных длинных опций; можно не вводить начальные две чёрточки, нельзя использовать короткую запись опции. В командной строке можно изменить значение по умолчанию. Следует делать резервную копию этого файла.

~/.gnupg

Это домашняя папка по умолчанию, которая используется если не установлено другое в переменной окружения GNUPGHOME или опцией —homedir.

~/.gnupg/pubring.gpg

Публичный киринг (public keyring). Следует иметь резервную копию этого файла

~/.gnupg/pubring.gpg.lock

Файл блокировки для публичного киринга.

~/.gnupg/pubring.kbx

Публичный киринг использует различные форматы. Этот файл поделён с gpgsm. Следует иметь резервную копию этого файла. Фактически, это база данных, где хранятся все ключи. Структуру этого файла можно посмотреть командой:

kbxutil ~/.gnupg/pubring.kbx

~/.gnupg/pubring.kbx.lock

Файл блокировки для ‘pubring.kbx’.

~/.gnupg/secring.gpg

Секретный киринг используемой GnuPG версией до 2.1. Он не используется GnuPG 2.1 и более поздними.

~/.gnupg/secring.gpg.lock

Файл блокировки для секретного киринга.

~/.gnupg/.gpg-v21-migrated

Файл, показывающий, что сделан переход на GnuPG 2.1.

~/.gnupg/trustdb.gpg

Доверенная база данных. Нет нужды делать резервную копию этого файла; лучше делать резервную копию значений ownertrust, смотрите опцию —export-ownertrust.

~/.gnupg/trustdb.gpg.lock

Файл блокировки для доверенной базы данных.

~/.gnupg/random_seed

Файл, используемый для сохранения состояния внутреннего пула случайных чисел.

~/.gnupg/openpgp-revocs.d/

Директория, где хранятся предварительно сгенерированные сертификаты отзыва. Имя файла соответствует отпечатку OpenPGP ключа, для которого этот сертификат. У каждого, у кого есть доступ к этим файлам, может отозвать ваши ключи. Поэтому эти файлы нужно хранить в секрете и иметь их резервные копии.

Этапы возникновения криптосистем

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

Этапы процесса создания:

  • 1977 год. Изобретен RSA группой программистов Р. Ривест, А. Шамир и Л. Адлеман.
  • 1978 год. Создан МакЭлис из-за проблем декодирования для кодов Goppa.
  • 1979 год. Вышел Рабин, основанный на проблеме факторинга и связанный с RSA.
  • 1984 год. Издан Chor-Rivest.
  • 1985 год. Вышел Elgamal на основе дискретного логарифма.
  1. Эллиптический метод на основе эллиптических кривых, напоминающий Elgamal.
  2. Merkle / Hellman — на основе задачи о рюкзаке LUC, как и RSA, образует последовательность Лукаса.
  3. MNLN — такой же, как RSA.

Как узнать открытый ключ

Если вы используете биткоин-кошелек, то публичный ключ можно найти настройках. Если же у вас на руках только закрытый ключ, то самым простым способом будет перенести его в кошелек (смотрите раздел «Свиппинг» в указанной выше статье о приватном ключе), а потом уже узнать его в интерфейсе.

Место хранения адреса зависит от используемого кошелька, но обычно есть два варианта:

  1. Перейдите по Настройки — Адреса. В некоторых кошельках по умолчанию установлена функция создания нового адреса при каждой входящей транзакции. Это сделано с целью повышения анонимности пользователя. Но если вы не нуждаетесь в этой функции, то можно поменять настройки, установив галочку напротив опции «Вечный адрес». Но ничего страшного не произойдет, если вам отправят криптовалюты на любой из уже используемых ранее адресов — они просто перенаправятся на актуальный. Чтобы увидеть все адреса, привязанные к приватному ключу, нужно перейти в раздел «Управление адресами».
  2. Перейдите в раздел «Кошелек — Баланс» и нажмите на кнопку пополнения кошелька. На экране появится строка «Адрес кошелька для пополнения вашего баланса» — это актуальный адрес, который можно скопировать и передать отправителю.          

Дополнительную информацию вы найдете в этом видео:

🖐Как узнать адрес Биткоин кошелька, ☝как создать Биткоин адрес, где он находится, как выглядит?🖐Как узнать адрес Биткоин кошелька, ☝как создать Биткоин адрес, где он находится, как выглядит?

Как в GPG подписать файл

Как было сказано выше, для подписи файла используется приватный ключ. Поскольку приватный (секретный) ключ хранится (очевидно же) в секрете владельцем, то исходя из предположения, что никто кроме владельца не имеет доступ к приватному ключу, мы можем быть уверены, что файл, который подписан этим приватным ключом, исходит от этого определённого лица. Если файл как либо после подписи был изменён, то эта подпись перестаёт быть верной (валидной) для данного файла. Поэтому, проверка подписи позволяет гарантировать:

  • файл исходит от того лица, которое её подписало;
  • файл не был как либо модифицирован с момента подписи.

Для проверки подписи определённого лица у вас должен быть публичный ключ этого лица.

Для подписи файла используется опция -s или её более длинный вариант —sign. Если у вас на компьютере только один приватный ключ, то он будет выбран автоматически.

Если у вас на компьютере несколько приватных ключей, то нужно использовать также опцию -u ИМЯ или её более длинный вариант —local-user ИМЯ. Эта опция перезаписывает значение —default-key.

Кстати про —default-key. Она устанавливает ключ, который будет использоваться по умолчанию, чтобы его не нужно было вводить каждый раз.

Итак, я хочу подписать файл test.php, приватным ключом пользователя Alexey Miloserdov, тогда моя команда следующая:

gpg -u 'Alexey Miloserdov' -s test.php

Будет создан файл с расширением .gpg, в моём случае это файл test.php.gpg. Этот файл включает И исходный файл, И его цифровую подпись. Новый файл в бинарном формате — то есть даже если ранее это было сообщение или текстовый файл, то он становится нечитаемым.

С помощью опции —clear-sign (другое её написание —clearsign) можно создать файл в виде обычного текста.

gpg -u 'Alexey Miloserdov' --clear-sign test.php

Будет создан файл test.php.asc, который будет содержать исходный текст после ——BEGIN PGP SIGNED MESSAGE——, а также блок с подписью:

-----BEGIN PGP SIGNATURE-----
…………………………
…………………………
…………………………
…………………………
-----END PGP SIGNATURE-----

Текстовое содержимое можно извлечь без сторонних инструментов, а для проверки подписи всё равно нужна программа PGP.

В реальной жизни публичные программы и другие файлы намного чаще распространяются в виде пары: исходный файл программы + отдельно подпись. Можно догадаться почему: большинству пользователей до фонаря эта электронная подпись и они не смогли бы извлечь файлы из .gpg формата. В принципе, их позиция понятна: какой смысл проверять подпись, если мы всё равно лично не знаем тех, кто именно подписал файл, да и тех, кто удостоверяет подлинность публичного ключа мы тоже не знаем. Разве что, можно быть уверенным, что файл действительно подписан автором программы, а не хакером, который взломал сервер, где хранятся файлы для скачивания, и что хакер не подменил файл в процессе его «путешествия» к нам на компьютер.

Так вот, чтобы делать такую пару (точнее говоря, нам нужно сделать только отдельный файл подписи — с исходным файлом вообще ничего не происходит) в PGP есть опция -b (или более длинное написание —detach-sign), которая применяется следующим образом:

gpg -u 'Alexey Miloserdov' -b test.php

Будет создан дополнительный файл .sig (в моём случае это test.php.sig). В этом файле нет ничего, кроме цифровой подписи. Поэтому вам нужно предоставлять и оригинальный файл, и файл .sig.

Роль адреса в отправке транзакций

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

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

А что если подменят сам сертификат?

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

Текст и схе­мы:Миха­ил Полянин
Редак­тор:Мак­сим Ильяхов
Худож­ник:Даня Бер­ков­ский
Кор­рек­тор:Ири­на Михеева
Вёрст­ка:Мария Дро­но­ва
Соц­се­ти:Олег Веш­кур­цев

Каким должен быть хороший закрытый ключ

Приватный ключ открывает доступ к пользовательским цифровым активам

Поэтому важно подобрать  надежный код. Неправильный подбор ключа приведет к краже средства пользователя

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

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

В некачественном генераторе случайных чисел итоговые значения сконцентрированы вокруг некоторой цифры, что может привести к негативным последствиям.

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

Поэтому подбирайте надежный приватный ключ. Это актуально при создании «мозгового» кошелька. Суть метода заключается в том, что пользователь придумывает какую-нибудь фразу. Затем ее подвергают математической конверсии, и получают хаотичный набор букв и цифр.

Существуют сервисы в сети, которые решают эту задачу, например, сайт iancoleman.io. Чтобы создать уникальный приватный ключ нужно выбрать протокол bip3. На его основе можно генерировать код для любой криптовалюты.

Сайт прост в использовании. Операции по генерации ключей происходят в браузере пользователя. Поэтому можно не беспокоится относительно того, что информация будет отправлена третьим лицам.

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

Что такое асимметричная криптография?

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

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

Открытые ключи должны и обычно совместно используются публично, это вызывает беспокойство — т.к. общий ключ может быть изменен или заменен хакером. Идеального решения для такой проблемы, к сожалению, не существует. Некоторые организации выдают сертификаты, подтверждающие оригинальность открытого ключа. Это, как правило, используется для проверки зашифрованных интернет-соединений и цифровых подписей (например, для HTTPS). Также существуют алгоритмы шифрования, такие как OpenPGP, которые полагаются на децентрализованные системы, где отдельные лица подтверждают оригинальность ключа.

Система использования биткоин-адресов

Прежде всего нужно понимать, что адрес и кошелек — это не одно и то же. Адрес или приватный ключ — это «путь», который позволяет принимать транзакции. Кошелек — это ПО, которое, по сути, состоит из приватного ключа и одного или множества публичных ключей. Он хранит в себе информацию обо всех ранее использованных ключах, а также входящих и исходящих транзакциях биткоин. Кроме того, в кошелек могут быть встроены дополнительные функции, повышающие анонимность транзакций.   

А теперь о том, как технически проходит транзакция.  

После того как сгенерирован приватный ключ, на его основе создается публичный ключ, состоящий из ряда символов (максимум 35) и отображается на экране в виде QR-кода.

При повторном использовании приватного ключа на его основе заново генерируется рандомный публичный ключ. Но, как уже говорилось выше, данную функцию можно отключить и использовать «вечный» адрес. Каждый ключ весит около 500 байт, благодаря чему даже на мобильных кошельках можно хранить множество адресов.  

Процесс генерации публичных ключей основывается на рандомном подборе символов и решении сложных математических задач. За минуту алгоритм может создавать до 1000 адресов, причем некоторое ПО позволяет генерировать публичные ключи без выхода в интернет. Есть очень маленькая вероятность, что к двум разным приватным ключам будет привязан один и тот же публичный, однако она составляет всего лишь 1:43 млрд.

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

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

В любом случае, прежде чем нажать на кнопку «Отправить», лучше еще раз перепроверить правильность введенного адреса, или для большей уверенности пользоваться QR-кодами.

Самые последние новости криптовалютного рынка и майнинга:

The following two tabs change content below.

Mining-Cryptocurrency.ru

Материал подготовлен редакцией сайта «Майнинг Криптовалюты», в составе: Главный редактор — Антон Сизов, Журналисты — Игорь Лосев, Виталий Воронов, Дмитрий Марков, Елена Карпина. Мы предоставляем самую актуальную информацию о рынке криптовалют, майнинге и технологии блокчейн.

Новости Mining-Cryptocurrency.ru

  • Tesla купила биткоин на $1,5 млрд и добавит оплату криптовалютой для клиентов — 08.02.2021
  • Инвесторы из США выбирают биткоин вместо золота, исследование BitFlyer — 08.02.2021
  • Какие DeFi-проекты покажут максимальный рост в 2021 году? ТОП-5 категорий — 08.02.2021
  • Соотношение длинных и коротких позиций сигнализирует о скором росте BTC до $42 000 — 08.02.2021

Основа ЭП — асимметричное шифрование

Мы уже писа­ли об асим­мет­рич­ном шиф­ро­ва­нии. Вот основ­ные мысли: 

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

Принцип действия асимметричного шифрования

Схема передачи данных между двумя субъектами (А и Б) с использованием открытого ключа выглядит следующим образом:

  • Субъект А генерирует пару ключей, открытый и закрытый (публичный и приватный).
  • Субъект А передает открытый ключ субъекту Б. Передача может осуществляться по незащищенным каналам.
  • Субъект Б шифрует пакет данных при помощи полученного открытого ключа и передает его А. Передача может осуществляться по незащищенным каналам.
  • Субъект А расшифровывает полученную от Б информацию при помощи секретного, закрытого ключа.

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

Как посмотреть получателей зашифрованного в GPG файла

Если вы не хотите расшифровывать файл (а может быть просто не можете из-за отсутствия приватного ключа), но хотите посмотреть, кому он предназначен (это можно сделать даже для зашифрованных файлов, если специально не зашифрованы получатели как это показано выше), то для этого имеется опция —list-only.

Вместе с этой опцией нужно использовать опцию -d, а также указать проверяемый файл, пример:

gpg --list-only -d test.php.gpg

Может быть выведено:

gpg: зашифровано 2048-битным ключом RSA с идентификатором 0E5137A9EF8E8F15, созданным 2019-02-22
      "Alexey Miloserdov <proghoster@gmail.com>"

Или без локализации:

gpg: encrypted with 2048-bit RSA key, ID 0x0E5137A9EF8E8F15, created 2019-02-22
      "Alexey Miloserdov <proghoster@gmail.com>"

Это сообщение означает, что выполнено ассиметричное шифрование для пользователя Alexey Miloserdov <proghoster@gmail.com>.

При симметричном шифровании сообщение будет таким:

gpg: сеансовый ключ зашифрован по AES
gpg: зашифровано одной фразой-паролем
gpg: зашифровано 2048-битным ключом RSA с идентификатором 0E5137A9EF8E8F15, созданным 2019-02-22
      "Alexey Miloserdov <proghoster@gmail.com>"

Или без локализации:

gpg: AES encrypted session key
gpg: encrypted with 1 passphrase
gpg: encrypted with 2048-bit RSA key, ID 0x0E5137A9EF8E8F15, created 2019-02-22
      "Alexey Miloserdov <proghoster@gmail.com>"

Причём вплоть до 2019 года, почти до самых последних версий gpg, у опции —list-only есть интересный баг: если на компьютере, где выполняется проверка, имеется приватный ключ пользователя, кому предназначен данный файл, то не выводиться ничего. Это может запутать, поскольку также ничего не выводиться в случае, если получатель зашифрован. Я нашёл упоминание об этой ошибке в 2013 году (смотрите список источников), и она до сих присутствует в 2019 в самой последней версии Tails. Чтобы обойти этот баг, используйте опцию -v, получается примерно следующая команда:

gpg --list-only -v -d test.php.gpg

Будет выведено что-то вроде:

gpg: public key is 0x0E5137A9EF8E8F15

И уже по идентификатору публичного ключа можно найти пользователя.

В самых последних версиях gpg (например в Arch Linux и BlackArch) эта ошибка уже исправлена. То есть —list-only работает именно так, как это интуитивно ожидается и костыля в виде опции -v больше не требуется.

Принцип шифрования, преимущества и недостатки

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

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

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

Такие криптосистемы применяются для шифрования данных открытым ключом, аутентификации и целостности. Известными примерами, основанными на асимметричных методах, являются OpenPGP или S/MIME, а также криптографические протоколы, такие как SSH, SSL/TLS и даже https основаны на асимметричных криптосистемах.

Преимущества:

  1. Относительно высокая безопасность.
  2. Не требуется столько ключей, как в симметричном методе шифрования, тем самым меньше усилий для создания секретности.
  3. Отсутствие проблемы с передачей ключей.
  4. Возможность аутентификации с помощью цифровых подписей.

Недостатками систем шифрования с открытым ключом являются:

  1. Алгоритмы работают очень медленно: примерно в 10 000 раз медленнее симметричных.
  2. Большая требуемая длина ключа.
  3. Проблемы с несколькими получателями, когда сообщение должно быть дополнительно зашифровано.
  4. Средства защиты гибридных процедур.
  5. Риск безопасности, доступный для каждого открытого ключа, также является недостатком систем шифрования с открытым ключом.

Протокол Secure Sockets Layer (SSL)

Интернет-трафик, который передает информацию через промежуточные компьютеры, может быть перехвачен третьей стороной:

  1. Подслушивание. Информация остается нетронутой, но ее конфиденциальность скомпрометирована. Например, кто-то может собирать номера кредитных карт, записывать конфиденциальную беседу или перехватывать секретную информацию.
  2. Подделка. Информация в пути изменяется или заменяется, а затем отправляется получателю. Например, кто-то может изменить заказ товаров или изменить резюме человека.
  3. Олицетворение. Информация переходит к человеку, который представляет в качестве предполагаемого получателя.

Олицетворение может иметь две формы:

  1. Подмена. Человек может притворяться кем-то другим.
  2. Искажение. Человек или организация могут исказить себя. Например, названный сайт может претендовать на роль в онлайн-магазине мебели, когда он действительно получает платежи по кредитным картам, но никогда не отправляет какие-либо товары.

Криптография с открытым ключом обеспечивает защиту от интернет-атак.

Асимметричная криптография

PKC также известен как шифрование с открытым ключом, асимметричное шифрование, асимметричная криптография, асимметричный шифр, асимметричное шифрование ключей и шифрование Diffie-Hellman. PKC — это криптографический алгоритм и компонент криптосистемы, реализованный различными интернет-стандартами, включая безопасность транспортного уровня (TLS), Pretty Good Privacy (PGP), GNU Privacy Guard (GPG), Secure Socket Layer (SSL) и протокол передачи гипертекста (HTTP).

PKC обеспечивает безопасную связь через небезопасный канал, который позволяет считывать сообщение только предполагаемым получателем. Например, A использует открытый ключ B для шифрования сообщения, которое может быть расшифровано с использованием уникального частного ключа B.

PKC поддерживает конфиденциальность электронной почты и обеспечивает безопасность связи, когда сообщения находятся в пути или хранятся на почтовых серверах. PKC также является компонентом DSA, используемым для аутентификации секретного ключа, который может быть проверен любым лицом, имеющим разрешенный доступ к открытым ключам. Таким образом, PKC облегчает конфиденциальность, целостность данных и аутентификацию, которые формируют параметры ключевой информации (IA).

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

Как хранить ключи

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

Последний рекомендуют не хранить в цифровом виде.

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

Рекомендуется хранить приватный и публичный ключ на бумажном носителе в виде QR-кодов. Сканируя их, пользователь получает доступ к аккаунту. Подход абсолютно безопасен. Вариант утери ключей в результате хакерской атаки практически неосуществим. Однако нужно обеспечить сохранность бумаги с кодами и ограничить доступ со стороны третьих лиц.

Асимметричные ключиAsymmetric Keys

.NET предоставляет RSA класс для асимметричного шифрования..NET provides the RSA class for asymmetric encryption. Этот класс создает пару открытого и закрытого ключей при использовании метода без параметров для создания нового экземпляра.This class creates a public/private key pair when you use the parameterless method to create a new instance. Асимметричные ключи можно сохранять для использования в нескольких сеансах или создавать только для отдельного сеанса.Asymmetric keys can be either stored for use in multiple sessions or generated for one session only. В то время как открытый ключ можно сделать общедоступным, закрытый ключ должен быть надежно защищен.While the public key can be made generally available, the private key should be closely guarded.

Пара из открытого и закрытого ключей создается каждый раз, когда создается новый экземпляр класса асимметричного алгоритма.A public/private key pair is generated whenever a new instance of an asymmetric algorithm class is created. После создания нового экземпляра класса сведения о ключе можно извлечь с помощью ExportParameters метода, который возвращает RSAParameters структуру, содержащую сведения о ключе.After a new instance of the class is created, the key information can be extracted using the ExportParameters method, which returns an RSAParameters structure that holds the key information. Метод принимает логическое значение, указывающее, следует ли возвращать только сведения об открытом ключе или как сведения об открытом ключе, так и о закрытом ключе.The method accepts a Boolean value that indicates whether to return only the public key information or to return both the public-key and the private-key information.

Существуют также и другие методы, позволяющие извлекать ключевые сведения, например:There are also other methods that let you extract key information, such as:

  • RSA.ExportRSAPublicKey
  • RSA.ExportRSAPrivateKey
  • AsymmetricAlgorithm.ExportSubjectPublicKeyInfo
  • AsymmetricAlgorithm.ExportPkcs8PrivateKey
  • AsymmetricAlgorithm.ExportEncryptedPkcs8PrivateKey

Экземпляр RSA можно инициализировать со значением структуры RSAParameters с помощью ImportParameters метода.An RSA instance can be initialized to the value of an RSAParameters structure by using the ImportParameters method. Или создайте новый экземпляр с помощью метода.Or create a new instance by using the method.

Асимметричные закрытые ключи никогда не следует хранить буквальной форме или в формате обычного текста на локальном компьютере.Asymmetric private keys should never be stored verbatim or in plain text on the local computer. Если необходимо хранить закрытый ключ, следует использовать для этого контейнер ключа.If you need to store a private key, you should use a key container. Дополнительные сведения о хранении закрытого ключа в контейнере ключей см. в разделе как хранить асимметричные ключи в контейнере ключей.For more information about how to store a private key in a key container, see How to: Store Asymmetric Keys in a Key Container.

В следующем примере кода создается новый экземпляр класса RSA , который создает пару из открытого и закрытого ключей и сохраняет сведения об открытом ключе в структуре RSAParameters .The following code example creates a new instance of the RSA class, creating a public/private key pair, and saves the public key information to an RSAParameters structure.

Криптосистема ElGamal

Наряду с RSA, существуют и другие криптосистемы с открытым ключом. Многие из них основаны на разных версиях проблемы дискретного логарифма.

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

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

  1. Выбор большого простого числа p. Обычно выбирается простое число от 1024 до 2048 бит.
  2. Выбор генераторного элемента g. Это число должно быть от 1 до p — 1.
  3. Он является генератором мультипликативной группы целых чисел по модулю р. Это означает, что для любого целого m co-prime с p существует целое число k такое, что g k = a mod n. Например, 3 является генератором группы 5 (Z 5 = {1, 2, 3, 4}).

N

3 n

3 n mod 5

1

3

3

2

9

4

3

27

2

4

81

1

Выбор секретного ключа. Частным ключом x является любое число, большее 1 и меньше, чем (p-1). Вычисление части открытого ключа. Значение y вычисляется по параметрам p, g и закрытому ключу x следующим образом:

y = gx mod p.

Получение открытого ключа. Открытый ключ ElGamal состоит из трех параметров (p, g, y).Предположим, например, что p = 17 и g = 6. Можно утверждать, что 6 является генератором группы Z 17. Закрытый ключ x может быть любым числом больше 1 и меньше 71, поэтому выбирают x = 5. Затем значение y вычисляется следующим образом:

y = 65 mod 17 = 7.

Таким образом, закрытый ключ равен 62, а открытый ключ — (17, 6, 7).

Эллиптическая кривая ECC

Эллиптическая кривая криптографии (ECC) — это термин, используемый для описания набора криптографических инструментов и протоколов, безопасность которых основана на специальных версиях проблемы дискретного логарифма. Он не использует числа modulo p. ECC основан на наборах чисел, связанных с математическими объектами, называемыми эллиптическими кривыми. Существуют правила для добавления и вычисления кратных этих чисел, как и для чисел по модулю p.

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

Это вызывает переход от чисел по модулю «p» к точкам на эллиптической кривой. Также эквивалентный уровень безопасности может быть получен с более короткими ключами, если используют варианты с эллиптической кривой. Более короткие клавиши приводят к двум преимуществам шифрования информации открытым ключом:

  1. Простота управления ключами.
  2. Эффективное вычисление.

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

RSA

ElGamal

Более эффективный для шифрования.

Более эффективный для дешифрования.

Менее эффективный для дешифрования.

Более эффективный для дешифрования.

Для определенного уровня безопасности в RSA требуются длинные ключи.

Для того же уровня безопасности требуются очень короткие ключи.

Метод широко используется.

Новый метод и пока не очень популярный на рынке.

Шаг второй. Шифрование

Теперь пришла ваша очередь шифровать ваше сообщение.
Допустим, ваше сообщение это число 19. Обозначим его
. Кроме него у вас уже есть мой открытый ключ:
. Шифрование выполняется по следующему
алгоритму:

Возводите ваше сообщение в степень e по модулю n.
То есть, вычисляете 19 в степени 5 (2476099) и берёте
остаток от деления на 21. Получается 10 — это ваши закодированные данные.

Строго говоря, вам вовсе незачем вычислять огромное число
«19 в степени 5». При каждом умножении достаточно вычислять
не полное произведение, а только остаток от деления на 21.
Но это уже детали реализации вычислений, давайте не будем
в них углубляться.

Полученные данные , вы отправляете мне.

Здесь надо заметить, что сообщение не должно быть больше
. иначе ничего не получится.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий