• public-key
  • private-key
  • asymmetric-cryptography
  • symmetric-cryptography

Открытый ключ, закрытый ключ и асимметричная криптография

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

Darcy Ye
Darcy Ye
Developer

Вы, возможно, слышали о закрытых и открытых ключах в разных контекстах, но действительно ли вы знаете, что это такое?

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

Закрытые и открытые ключи — это понятия в асимметричной криптографии (также известной как криптография с открытым ключом, PKC).

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

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

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

Шифрование и расшифровка

Важно отметить, что функции шифрования/расшифровки в алгоритмах симметричного и асимметричного шифрования различны и часто используют разные алгоритмы. Общие симметричные алгоритмы шифрования включают DES, AES, RC2, RC4 и другие, в то время как общие асимметричные алгоритмы шифрования включают RSA и EC.

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

Зачем использовать асимметричное шифрование?

Асимметричное шифрование решает проблему распространения ключей в симметричном шифровании.

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

Два распространенных случая использования асимметричного шифрования

Отправка зашифрованных данных

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

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

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

Использование подписи для обеспечения целостности данных

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

Используя аннотацию, которую мы определили в предыдущем разделе, процесс подписи и проверки подписи можно представить следующим образом:

Подпись и проверка

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

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

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

Недостатки асимметричного шифрования

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

Уроки на вынос

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

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