что такое ключевая пара

Инфраструктура открытых ключей

В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов:

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

Содержание

История

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Объекты PKI

PKI реализуется в модели клиент-сервер, то есть проверка какой-либо информации, предоставляемой инфраструктурой может происходить только по инициативе клиента.

Основные задачи

Основные задачи системы информационной безопасности, которые решает инфраструктура управления открытыми ключами:

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

Основная идея

Задачей PKI является определение политики выпуска цифровых сертификатов, выдача их и аннулирование, хранение информации, необходимой для последующей проверки правильности сертификатов. В число приложений, поддерживающих PKI, входят: защищенная электронная почта, протоколы платежей, электронные чеки, электронный обмен информацией, защита данных в сетях с протоколом IP, электронные формы и документы с электронной цифровой подписью (ЭЦП).

Деятельность инфраструктуры управления открытыми ключами осуществляется на основе регламента системы. Инфраструктура открытых ключей основывается на использовании принципов криптографической системы с открытым ключом. Инфраструктура управления открытыми ключами состоит из центра сертификации (удостоверяющего центра — УЦ), конечных пользователей, и опциональных компонентов: центра регистрации и сетевого справочника.

PKI оперирует в работе сертификатами. Сертификат — это электронный документ, который содержит электронный ключ пользователя, — открытый или же ключевую пару (keypair), — информацию о пользователе, которому принадлежит сертификат, удостоверяющую подпись центра выдачи сертификатов (УЦ) и информацию о сроке действия сертификата.

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

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

Ключевая пара — это набор, состоящий из двух ключей: закрытого ключа (private key) и открытого ключа (public key). Эти ключи создаются вместе, являются комплементарными по отношению друг к другу (то, что зашифровано с помощью открытого ключа можно расшифровать, только имея закрытый ключ, а подпись сделанную с помощью закрытого ключа можно проверить используя открытый ключ).

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

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

Некоторые основные моменты

Стиль этого раздела неэнциклопедичен или нарушает нормы русского языка.

Разберём подробнее следующие моменты:

УЦ и его работа

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

Процесс работы с сертификатами

Какие же бывают PKI по архитектуре, кроме как одиночные УЦ?

Архитектуры PKI

В основном выделяют 5 видов архитектур PKI, это:

В основном PKI делятся на разные архитектуры по следующим признакам:

Рассмотрим более подробно каждую из архитектур PKI в отдельности.

1. Простая PKI

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

2. Иерархическая PKI

Иерархическая структура — это наиболее часто встречающаяся архитектура PKI. В данном случае во главе всей структуры стоит один Головной УЦ, которому все доверяют и ему подчиняются нижестоящие УЦ. Кроме этого головного УЦ в структуре присутствуют ещё не один УЦ, который подчиняется вышестоящему, которому в свою очередь приписаны какие-либо пользователи или нижестоящие УЦ. Частный пример иерархической PKI — корпоративная PKI. Например если у нас есть одна большая фирма, у которой в подчинении множество филиалов по всей стране. В главном здании фирмы есть головной УЦ и в каждом филиале есть УЦ, который подчиняется головному. В иерархической PKI, даже если злоумышленник выдал себя за какой — либо УЦ, сеть продолжает работать без него, а когда он восстанавливает нормальную работоспособность — он просто снова включается в структуру.

3. Сетевая PKI

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

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

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

4. Архитектура кросс-сертифицированной корпоративной PKI

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

5. Архитектура мостового УЦ

Архитектура мостового УЦ разрабатывалась для того, чтобы убрать недостатки сложного процесса сертификации в кросс-сертифицированной корпоративной PKI. В данном случае все компании доверяют не какой-то одной или двум фирмам, а одному определённому мостовому УЦ, который является практически их головным УЦ, но он не является основным пунктом доверия, а выступает в роли посредника между другими УЦ.

Внедрение PKI

Внедрение инфраструктуры управления открытыми ключами с учетом снижения затрат и сроков внедрения осуществляется в течение семи этапов.

Примеры использования PKI

Электронно-цифровая подпись (ЭЦП)

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

Шифрование сообщений

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

Авторизация

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

Терминология PKI

Из всего выше сказанного можно выделить некоторые пункты, а также добавить новые, для того чтобы определить основные термины, используемые в PKI. Итак, в PKI используются термины:

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

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

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

электронный отпечаток (fingerprint)

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

данные, подписанные при помощи закрытого ключа пользователя

данные, зашифрованные при помощи открытого ключа пользователя

Термины, которые необходимы для общего понимания:

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

сертификаты которые хранятся у пользователя в личном хранилище сертификатов.

корневые центры сертификации

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

доверенные центры сертификации

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

Источник

Что такое ключевая пара

На устройстве Рутокен могут храниться сертификаты, за которые вы или ваша компания заплатили деньги. Такие сертификаты помогают решать следующие задачи: сдавать электронную отчетность; участвовать в торгах; продавать алкоголь; осуществлять безопасный доступ к компьютеру, банковской системе или имеют другое применение.

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

Для удаления сертификата (ключевой пары, личного сертификата) из памяти устройства Рутокен необходимо:

Определение криптопровайдера или формата сертификата (ключевой пары, личного сертификата)

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

Для определения криптопровайдера или формата:

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Рутокен Плагин или PKCS#11

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Запись имени контейнера (КриптоПро CSP, ViPNet CSP)

Так как удаление контейнеров КриптоПро CSP и ViPNet CSP реализуется не через Панель управления Рутокен, следует записать имена контейнеров, которые необходимо удалить. Это необходимо сделать, чтобы не ошибиться с выбором.

Для записи имени контейнера:

Удаление сертификата (ключевой пары, личного сертификата) КриптоПро CSP

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

Для удаления сертификата (ключевой пары, личного сертификата):

В окне для выбора контейнера щелкните по имени контейнера, который необходимо удалить.

Обязательно сверьте имя контейнера с записанными ранее символами.

Удаление сертификата (ключевой пары, личного сертификата) ViPNet CSP

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

Для удаления сертификата (ключевой пары, личного сертификата):

Щелкните по имени контейнера, который необходимо удалить.

Обязательно сверьте имя контейнера с записанным ранее символами

Удаление сертификата (ключевой пары, личного сертификата) Aktiv ruToken CSP

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

Для удаления сертификата (ключевой пары, личного сертификата):

Удаление сертификата (ключевой пары, личного сертификата) PKCS#11 или Рутокен Плагина

Для удаления сертификата (ключевой пары, личного сертификата) PKCS#11 или Рутокен Плагина вам необходимо знать PIN-код Администратора устройства Рутокен.

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

Для удаления сертификата (ключевой пары, личного сертификата):

Удаление сертификата (ключевой пары, личного сертификата) ФСРАР

Для удаления сертификата (ключевой пары, личного сертификата):

Источник

Криптография в Java. Класс KeyPair

Привет, Хабр! Представляю вашему вниманию перевод 6, 7 и 8 статей автора Jakob Jenkov из серии статей для начинающих, желающих освоить основы криптографии в Java.

Оглавление:

Ключевая пара

Класс KeyPair (java.security.KeyPair) представляет собой пару асимметричных ключей (открытый ключ + закрытый ключ). Экземпляр KeyPair обычно используется в асимметричной криптографии(шифрование или подпись данных). Обычно экземпляр KeyPair получают из хранилища ключей Java или KeyPairGenerator который будет рассмотрен далее в этой статье.

Доступ к открытому ключу

Вы можете получить доступ к открытому ключу экземпляра KeyPair, вызвав его метод getPublic(). Пример получения открытого ключа:

Доступ к закрытому ключу

Так же можно получить доступ к закрытому ключу экземпляра KeyPair, вызвав его метод getPrivate(). Вот пример получения закрытого ключа:

Генератор ключей

Класс KeyGenerator (javax.crypto.KeyGenerator) используется для генерации симметричных ключей шифрования. Симметричный ключ шифрования — это ключ, который используется для шифрования и дешифрования данных алгоритмом симметричного шифрования.

Создание экземпляра KeyGenerator

Прежде чем вы сможете использовать класс KeyGenerator, вы должны создать экземпляр KeyGenerator. Экземпляр KeyGenerator создается вызывом статического метода getInstance(), в качестве параметра принимающего имя алгоритма шифрования, для которого создается ключ. Вот пример создания экземпляра KeyGenerator:

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

Инициализация KeyGenerator

После создания экземпляра KeyGenerator его необходимо инициализировать. Инициализация экземпляра выполняется путем вызова метода init(). Пример инициализации экземпляра KeyGenerator:

Метод init() принимает два параметра: длина ключа и SecureRandom, который используется во время генерации ключа.

Генерация ключа

После инициализации экземпляра KeyGenerator вы можете использовать его для генерации ключей. Генерация ключа выполняется путем вызова метода generateKey(). Вот пример генерации симметричного ключа:

Генератор ключевой пары

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

Открытые и закрытые ключи

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

Создание экземпляра KeyPairGenerator

Чтобы использовать KeyPairGenerator, вы должны сначала создать экземпляр класса KeyPairGenerator. Создание экземпляра KeyPairGenerator выполняется путем вызова метода getInstance(). Вот пример создания экземпляра:

Метод getInstance() принимает имя алгоритма шифрования, который будет использоваться. В этом примере мы используем алгоритм RSA.

Инициализация KeyPairGenerator

В зависимости от алгоритма, вам может потребоваться инициализация экземпляра KeyPairGenerator. Инициализация KeyPairGenerator выполняется путем вызова его метода initialize(). Пример инициализации экземпляра KeyPairGenerator:

В этом примере инициализируется KeyPairGenerator для генерации ключей размером 2048 бит.

Генерация ключевой пары

Чтобы сгенерировать ключевую пару с помощью KeyPairGenerator вызывается метод generateKeyPair(). Вот пример генерации ключевой пары:

Источник

Что такое ключевая пара

rtengine позволяет использовать ключи, расположенные на токене.

Ключевая пара идентифицируется с помощью pkcs11 uri.

Возможные компоненты идентификатора пути:

manufacturer: ID производителя токена

model: модель токена

serial: серийный номер токена

token: метка токена ( поле «label»)

object: имя объекта (CKA_LABEL)

id: идентификатор объекта (CKA_ID)

Пример идентификатора ключевой пары на токене:

Если подключен только один Рутокен с единственной ключевой парой:

В зависимости от операции будет выбран открытый или закрытый ключ соответственно. Оба ключа пары должны иметь одинаковый идентификатор объекта и/или имя объекта.

Генерация ключевой пары ГОСТ в файл

Поддерживаются следующие значения алгоритмов и соответствующих им парамсетов:

Генерация ключевой пары ГОСТ на Рутокене

Генерация ключевой пары ГОСТ-2001 на Рутокене

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

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

Генерация ключевой пары ГОСТ-2012 на Рутокене

Собирайте ветку pkcs11-tool с поддержкой ГОСТ-2012, или используйте релиз OpenSC 0.20.0 или новее

pin : PIN-код Рутокена

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

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

или

Для просмотра объектов на токене:

Формирование запроса PKCS#10

Используя ключ в файле:

Используя ключ на Рутокене:

В процессе работы команда попросит ввести PIN-код. После этого потребуется указать данные для сертификата:

State or Province []: Moscow

Organization Name []: Aktiv Company

Organizational Unit Name []: development

Common Name []: tester

Выпуск самоподписанного сертификата по запросу

Используя ключ в файле:

Используя ключ на Рутокене:

Создание подписи в формате CMS

Для создания CMS подписи необходимо иметь сертификат. В тестовых целях в папке sdk\openssl\rtengine\samples\tool\ предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты.

Скопируйте папке sdk\openssl\rtengine\samples\tool\demoCA и конфигурационный файл openssl.cnf в папку с OpenSSL и выполните:

Затем создайте CMS подпись используя ключ в файле:

Или используя ключ на Рутокене:

Проверка подписи в формате CMS

центра и используется для проверки сертификата подписанта.

«Сырая» подпись данных

Используя ключ в файле:

Используя ключ на Рутокене:

Алгоритм хеша будет зависеть от алгоритма ключа.

Проверка «сырой подписи»

Получить открытый ключ из закрытого можно следующей командой:

Проверка используя ключ в файле:

Используя ключ на Рутокене:

Шифрование в формате CMS

Шифрование на ключах с Рутокена

respondent.cer: сертификат адресата, для которого шифруется сообщение.

gost28147-paramset_a-cfb: единственный доступный алгоритм, работает в режиме гаммирования с обратной связью с набором параметров А.

Источник

igorsmolin

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Изучаем и настраиваем SSH аутентификацию по открытому ключу

Коллеги, приветствую. Сегодня мы познакомимся с методом аутентификации по открытым ключам в SSH. Познакомимся с основными принципами и ключевыми понятиями. Разберем несколько способов формирования ключевой пары, а также произведем конфигурацию и подключение к SSH серверу на системах Windows и Linux. Если Вы в своей деятельности часто используете SSH и хотели бы увеличить безопасность подключений, то давайте вместе разбираться как можно применять аутентификацию по ключу на проектах.

Что это такое и зачем это нужно?

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

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

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

Симметричное и асимметричное шифрование

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

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

Ключевая пара

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

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

Применение на практике

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

Также нам будет необходимо установить и сконфигурировать SSH сервер. В качестве примера мы возьмем популярный проект — OpenSSH Server, который доступен для установки на различных операционных системах в т.ч — Windows и Linux.

Настройка доступа по ключам

Разворачиваем виртуальную машину

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

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

Когда предварительные действия будут выполнены, перейдите в папку сценария Localhost_1.2 для развертывания CentOS, либо в папку Localhost_1.3 для развертывания Ubuntu, либо в папку Localhost_1.0 для развертывания Windows Server и выполните команду:

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

Спустя время, виртуальная машина будет готова и мы сможем подключиться к ней либо через менеджер виртуальных машин VirtualBox, либо при помощи ssh подключения по адресу 127.0.0.1:2222.

В качестве учетной записи для подключения указываем — vagrant. Пароль — vagrant.

В случае, если была выбрана виртуальная машина на Windows, мы можем подключиться к ней при помощи RDP по адресу 127.0.0.1:33389.

В качестве учетной записи для подключения указываем — Administrator. Пароль — vagrant.

Конфигурация сервера. Установка OpenSSH на Linux

Для установки OpenSSH сервера на CentOS выполним следующую команду:

Итогом должна быть установка, обновление или сообщение об актуальности версии OpenSSH. В моем случае установлена актуальная версия инструмента.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Для установки OpenSSH сервера на Ubuntu выполним следующие команды:

Результатом также будут установка, обновление или сообщение об актуальности версии OpenSSH.

Запустим службу sshd выполнив команду:

Конфигурация сервера. Установка OpenSSH на Windows

Компонент OpenSSH Server доступен в Windows из коробки начиная с версии Windows 10 1809 и Windows Server 2019. Для быстрой установки откроем Powershell от имени администратора и введем команду:

Будет запущен процесс установки компонента OpenSSH Server.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

В дополнение к вышеуказанной команде выполним еще пару команд. Запустим службу sshd и выберем тип запуска — Автоматический.

Создадим разрешающее правило в Firewall Windows.

Конфигурация клиента. Формирование ключевой пары на Windows (PuTTYgen)

Сначала попробуем сгенерировать ключевую пару при помощи PuTTY. Для этого нам достаточно скачать инструменты PuTTY и PuTTYgen с официального сайта — https://www.putty.org/.

Инструмент PuTTY нам понадобится для ssh подключения чуть позже, а с помощью PuTTYgen мы сможем сформировать ключевую пару прямо сейчас.

Запустим PuTTYgen и выберем Generate. Все остальные настройки можно оставить по умолчанию.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

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

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Поздравляю, мы успешно сгенерировали ключевую пару при помощи PuTTYgen. Сохраним закрытую часть ключа в виде файла при помощи кнопки Save private key в надежное место. PuTTYgen спросит нас о том хотим ли мы пропустить создание ключевой фразы для закрытой части. В нашем случае мы соглашаемся и отвечаем — Да.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Не закрывая окно PuTTYgen переходим в раздел Public key for pasting into OpenSSH authorized_keys file и копируем из него все содержимое. Эта информация нам понадобится на этапе добавления открытого ключа на SSH сервер.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Конфигурация клиента. Формирование ключевой пары на Linux (ssh-keygen)

Теперь попробуем сгенерировать ключевую пару из под Linux при помощи инструмента ssh-keygen. Для теста воспользуемся Ubuntu.

Выполним команду ssh-keygen. Мастер сообщит нам о начале процедуры генерации ключевой пары. Инструмент также спросит о том, где разместить ключ и будем ли мы использовать ключевую фразу. Оставим все значения по умолчанию и продолжим.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

/.ssh должны появиться две части ключа. id_rsa — закрытая часть, id_rsa.pub — открытая часть.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Нам необходимо позаботиться о том, чтобы никто не имел прав доступа кроме нас самих к этим ключам. Для этого выполним команду:

Скопируем открытую часть ключа себе в буфер обмена, т.к нам понадобится добавить эту информацию на сервер в следующем этапе. Для этого выполним команду:

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Конфигурация сервера. Разрешение аутентификации по ключу и добавление ключей на Linux.

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

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

Вставляем открытую часть ключа и сохраняем файл.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Фактически, мы только что связали с пользователем открытую часть ключа. У пользователя может быть несколько ключей для аутентификации. Все они должны быть перечислены в этом файле.

Теперь включим возможность аутентификации по ключу и отключим возможность подключения по паролю. Для этого выполним команду:

Или откроем конфигурационный файл /etc/ssh/sshd_config любым удобным редактором.

Находим строку PasswordAuthentication и устанавливаем значение no. Также находим строку PubkeyAuthentication и устанавливаем значение yes.

Для применения конфигурации перезапустим службу OpenSSH сервера выполнив команду:

Конфигурация сервера. Разрешение аутентификации по ключу и добавление ключей на Windows.

Разрешим функцию аутентификации по открытому ключу, запретим вход по паролю. Заодно перезапустим службу sshd для применения конфигурации.

Для этого запустим PowerShell от имени администратора и выполним команду:

Подключение к серверу SSH по открытой части ключа на Windows.

Запустим PuTTY и введем адрес подключения к SSH серверу.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

В разделе Connection > SSH > Auth укажем сохраненный файл закрытой части ключа и пробуем подключиться к нашему серверу.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

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

Результат ssh аутентификации по ключу на сервере CentOS или Ubuntu.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Результат ssh аутентификации по ключу на сервере Windows.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Подключение к серверу SSH по открытой части ключа на Linux.

Выполним подключение к серверу SSH. Для этого запустим на исполнение команду:

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

Результат ssh аутентификации по ключу на сервере CentOS или Ubuntu.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Результат ssh аутентификации по ключу на сервере Windows.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Конвертация ключей

В статье использовалась небольшая хитрость, которая может пригодиться в рабочей деятельности.

Представьте простую и вполне реальную ситуацию. Вы сгенерировали ключевую пару и хотели бы распространить ее на других своих устройствах. Проблемой может стать желание перенести ключевую пару на Linux, которая была сгенерирована при помощи PuTTYgen под Windows.

К сожалению, если скопировать такой ключ и попытаться произвести вход на SSH сервер, мы скорее всего получим ошибку: Load key «/root/.ssh/id_rsa»: invalid format, либо подобные.

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

Самый просто способ — запустить PuTTYgen, загрузить сохраненную закрытую часть ключа при помощи кнопки Load.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Перейти в раздел Conversions и выбрать меню Export OpenSSH key.

что такое ключевая пара. Смотреть фото что такое ключевая пара. Смотреть картинку что такое ключевая пара. Картинка про что такое ключевая пара. Фото что такое ключевая пара

Инструмент позволит нам сохранить закрытую часть в формате (PEM), который генерирует ssh-keygen.

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

Итоги

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сообщение в Панели управления РутокенКриптопровайдер или форматРаздел