Криптография родилась из-за необходимости сделать передачу данных частной, поэтому, исходя из этого, криптография - это метод, который применяется к сообщению для его шифрования и дешифрования. таким образом, чтобы отправителю и получателю указанного сообщения был виден только открытый текст, чтобы он был полностью нечитаемым для любого, кто перехватил его в середине передачи, и, в свою очередь, был достаточно безопасным, чтобы противостоять любой атаке это может поставить под угрозу передаваемую информацию. Есть два типа шифрования в зависимости от типа ваших ключей. Криптография, алгоритмы которой используют только один ключ, или симметричная криптография , и криптография двухключевых алгоритмов, асимметричная криптография . Здесь мы сможем увидеть, как каждый из них работает, и каковы их свойства и различия.
Симметричная криптография или криптография с одним ключом
Симметричная криптография - самая старая криптографическая техника, но она по-прежнему обеспечивает высокий уровень безопасности. Он основан на использовании единого секретного ключа, который будет отвечать за шифрование и дешифрование информации, будь то информация, передаваемая по таким протоколам, как TLS, или информация на съемном запоминающем устройстве. Симметричная криптография была первым методом, используемым для шифрования информации, она основана на том факте, что один и тот же пароль будет использоваться как для шифрования, так и для дешифрования, поэтому важно, чтобы все пользователи, которые хотят зашифровать или расшифровать сообщение, имели этот секретный ключ, иначе они не смогут. Благодаря симметричной криптографии мы можем безопасно вести обмен данными или хранить файлы.
Шифрование использование симметричного ключа означает, что как минимум два пользователя должны иметь секретный ключ. Используя этот ключ, все сообщения, передаваемые по незащищенному каналу, например через Интернет, будут зашифрованы и расшифрованы, поэтому нам необходимо шифрование данных для сохранения конфиденциальности. Любой пользователь, желающий получить доступ к зашифрованному сообщению, должен иметь этот пароль для дешифрования, в противном случае он будет нечитаемым.
Метод шифрования данных основан на том факте, что отправитель зашифрует сообщение своим закрытым ключом, он отправит его через незащищенный канал, а получатель должен будет расшифровать его тем же паролем или закрытым ключом, что и отправитель. использовал.
Алгоритм с симметричным ключом должен соответствовать нескольким пунктам, чтобы его можно было безопасно использовать:
- Как только сообщение зашифрован, ни ключ шифрования, ни четкое сообщение не могут быть получены любым способом.
- Если мы знаем четкое сообщение и шифрование, на получение ключа для доступа к четкому сообщению следует потратить больше времени и денег, чем возможная ценность информации что украдено.
Атаки грубой силой являются настоящий враг алгоритмов симметричной криптографии , необходимо иметь в виду, что эти алгоритмы являются общедоступными и что их сила напрямую зависит от того, насколько сложен алгоритм внутри, а также от длины ключа, используемого для предотвращения этих атак.
Самое главное в симметричной криптографии - защитить закрытый ключ или пароль. Основная проблема, которая возникает, - это распространение этого закрытого ключа или пароля среди всех пользователей, как отправителей, так и получателей информации, для шифрования и дешифрования информации в сообщении. Очень важно, чтобы все пользователи системы как можно лучше защищали закрытый ключ или пароль, потому что, если он попадет в чужие руки, вся система будет скомпрометирована, и вам придется сгенерировать новый ключ и перераспределить закрытый ключ для разных участников.
Одно из различий между симметричной и асимметричной криптографией заключается в том, что при симметричной криптографии все пользователи имеют один и тот же ключ шифрования / дешифрования, если у нас более одного канала связи, у нас будет столько же закрытых ключей, сколько параллельных каналов связи. Однако в асимметричных у каждого пользователя будет пара ключей (открытый и закрытый) для всех каналов связи, независимо от количества поддерживаемых защищенных каналов, нам нужно только защитить закрытый ключ.
Преимущество алгоритмов симметричной криптографии в том, что они быстрые, очень быстрые, кроме того, в последние годы аппаратное ускорение шифрования было включено в компьютерные процессоры, серверы, маршрутизаторы и другие устройства, таким образом, мы можем передавать данные через VPN действительно быстро. Скорость также зависит от используемого алгоритма симметричного шифрования, например, AES и ChaCha20 - два из самых быстрых и безопасных, которые у нас есть сегодня, но аппаратное обеспечение оборудования сильно влияет.
Теперь мы собираемся подробно поговорить о двух симметричных алгоритмах, которые постоянно используются сегодня либо в HTTPS-соединениях с TLS 1.2 и TLS 1.3, либо в виртуальных частных сетях с IPsec, OpenVPN или WireGuard, а также в других областях, где используется шифрование данных, например, в VeraCrypt.
AES (улучшенный стандарт шифрования)
Симметричный алгоритм AES отвечал за замена DES , и в настоящее время используется во всех защищенных каналах и протоколах, таких как TLS, FTPES, виртуальные частные сети и многое другое. Шифрование AES может использоваться как в программном, так и в аппаратном обеспечении, AES - это алгоритм блочного шифрования, фиксированный размер блока 128 бит . Длину ключа можно выбрать, и мы имеем Доступны 128, 192 и 256 бит , являясь стандартной длиной 128 бит, но 256 бит также широко используются.
Очень важным аспектом является то, что AES отвечает за создание матрицы 4 × 4, а затем к ней применяется серия раундов шифрования. Для 128-битного ключа применяется 10 раундов шифрования, для 192-битного ключа применяется 12 раундов, а для 256-битного ключа применяется 14 раундов. С самого начала многие криптографы сомневаются в его безопасности, и это так. что атаки были зарегистрированы в нескольких раундах, близких к последнему раунду, в частности, было расшифровано 7 раундов для 128-битных ключей, 8 раундов для 192-битных ключей и 9 раундов для 256-битных ключей.
Режим шифрования - это способ обработки блоков сообщений с шифрованием AES, существуют разные типы, и каждый из них работает по-своему. Например, есть AES-CBC, AES-CFB и AES-OFB , мы собираемся объяснить, что именно появляется в криптографических библиотеках, таких как OpenSSL и LibreSSL.
- CBC (цепочка блоков шифра) - Этот режим шифрования широко используется в сочетании с хэш-функцией для проверки подлинности данных и используется до сих пор. Этот режим шифрования состоит из операции XOR для каждого блока открытого текста с предыдущим блоком шифрования. Каждый зашифрованный блок зависит от предыдущего обработанного до этого момента. Чтобы выполнить эту опцию XOR с первым блоком текста, используется вектор инициализации IV. Этот режим шифрования выполняется последовательно, его нельзя обрабатывать параллельно для повышения производительности шифрования / дешифрования данных.
- OFB (обратная связь по выходу) : в этом режиме секретный ключ используется для создания псевдослучайного блока, к которому применяется операция XOR с открытым текстом для создания зашифрованного текста. В этом случае также требуется вектор инициализации, который должен быть уникальным для каждого зашифрованного сообщения. Если не использовать другой IV, безопасность системы будет поставлена под угрозу. Его также нельзя парелизировать.
- CFB (Шифрованная обратная связь) : выполняется так же, как и в OFB, но для создания потока ключей он шифрует последний блок шифрования, а не последний блок потока ключей, как это делает OFB. Шифрование нельзя распараллелить, но можно расшифровать.
- GCM ( Галуа / Режим счетчика) : Этот режим шифрования является одним из лучших с точки зрения безопасности и скорости, GCM допускает параллельную обработку и совместим с процессорами AES-NI для повышения производительности шифрования / дешифрования данных. Этот режим шифрования - AEAD, помимо шифрования данных, он также может аутентифицировать их и проверять целостность данных, чтобы гарантировать, что они не были изменены. GCM также может принимать случайные векторы инициализации.
Как вы видели, AES в настоящее время является одним из наиболее важных и широко используемых алгоритмов симметричного шифрования в мире, однако наиболее рекомендуемым режимом шифрования является AES-GCM, поскольку он включает AEAD.
ChaCha20
Алгоритм ChaCha20 - это симметричный алгоритм шифрования, который поддерживает 128-битные и 256-битные и высокоскоростные ключи, в отличие от AES, который является блочным шифром, ChaCha20 является потоковым шифром. Он имеет характеристики, аналогичные его предшественник Salsa20 но с примитивной функцией 12 или 20 различных раундов. Его код был опубликован, стандартизирован IETF в RFC 7539, и в программных реализациях он намного эффективнее и быстрее, чем AES, поэтому он быстро занял место среди наиболее часто используемых алгоритмов сегодня.
Чтобы выяснить, почему он стал таким известным, мы поместим Google посередине, чтобы все можно было понять гораздо быстрее. Соединения HTPPS нацелены на обеспечение максимальной безопасности на веб-сайтах, которые мы посещаем каждый день, это был следующий шаг протокола HTTP, который вообще не имел никакой защиты. Однако шифрование зависит от браузера. Еще несколько лет назад Chrome для Android использует AES-GCM в качестве алгоритма симметричного шифрования, однако Google много лет работает над более современным, безопасным и быстрым шифрованием.
Скачок популярности происходит, когда после запуска в настольной версии Chrome новый ChaCha20 для шифрования и Poly1305 для аутентификации прибывает на Android. Титаническая работа, воплощенная в симметричном алгоритме, обеспечивающем большую безопасность и невосприимчивом к различным типам атак. Однако самое замечательное то, что он обеспечивает производительность в три раза выше, чем несколько более старые протоколы, такие как AES, таким образом, возможности протокола ЦП также лучше используются, а ширина используемой ленты уменьшена на 16%, что позволяет еще больше использовать преимущества соединения.
ChaCha20 широко используется в соединениях HTTPS, в соединениях SSH для управления серверами, и даже популярный протокол WireGuard VPN использует только ChaCha20 для симметричного шифрования данных. Вполне возможно, что вскоре мы также увидим ChaCha20 в соединениях IPsec, а пока вы должны использовать AES-GCM, когда это возможно.
Что касается объяснения симметричной криптографии, мы прокомментировали два алгоритма, которые часто используются сегодня, есть гораздо больше, которые в прошлом были очень актуальны, особенно для разработки текущих, поскольку основой новых являются они. остановились на опыте старых, их ошибках и их преимуществах. Такие алгоритмы, как DES, 3DES, RC5 или IDEA, проложили путь к новым, так что сегодня у нас есть действительно надежные алгоритмы шифрования, способные противостоять атакам и защищать всю нашу информацию от нежелательных и злонамеренных рук.
Асимметричная криптография или криптография с открытым ключом
Криптография с асимметричным ключом также известна как открытый ключ. использует два разных ключа на каждом конце связи для его шифрования и дешифрования . У каждого пользователя связи будет открытый и закрытый ключ. Закрытый ключ должен быть защищен и храниться самим пользователем, он будет засекречено и не должно быть известно никому и никому не должно быть отправлено. Открытый ключ будет доступен всем пользователям системы, желающим общаться.
Сильной стороной системы, обеспечивающей безопасность этого типа асимметричного алгоритма, является то, что он основан на математических функциях, которые легко решить в одном смысле , но чей разрешение в обратном направлении чрезвычайно сложно , если ключ не известен. . Открытый и закрытый ключи генерируются одновременно и привязаны друг к другу. Отношения между ними должны быть очень сложными, поэтому нам очень сложно получить ключ от другого, в данном случае получить закрытый ключ, поскольку открытый ключ известен всем, кто подключен к системе.
Пары клавиш выполняют несколько очень важных функций, среди которых мы выделяем:
- Зашифруйте информацию.
- Обеспечьте целостность передаваемых данных.
- Гарантия подлинности эмитента.
Шифрование с асимметричным ключом
Если человек с парой ключей шифрует сообщение с помощью открытого ключа получателя, это сообщение может быть расшифровано только с помощью соответствующего закрытого ключа. Если мы зашифруем сообщение с помощью закрытого ключа, мы не сможем расшифровать его с помощью самого закрытого ключа, мы должны использовать открытый (в этом случае это не считается шифрованием, но проверяется подлинность отправителя с помощью это мы проверим, что отправитель действительно говорит быть).
Математическая структура того, как работает асимметричное шифрование, такова:
- Сообщение + открытый ключ = зашифрованное сообщение
- Зашифрованное сообщение + закрытый ключ = расшифрованное сообщение
- Сообщение + закрытый ключ = Подписанное сообщение
- Подписанное сообщение + открытый ключ = аутентификация
Как мы уже отмечали ранее, говоря о криптографии с симметричным ключом, симметричное шифрование обеспечивает конфиденциальность (только получатель может прочитать сообщение). Асимметричная криптография обеспечивает другие свойства: аутентичность, целостность и невозможность отказа от авторства. Чтобы алгоритм считался безопасным, он должен соответствовать следующему:
- Если зашифрованный текст известен, он должно быть очень сложно или почти невозможно извлечь открытый текст и закрытый ключ любым способом.
- Если открытый текст и шифрование известны, он получение закрытого ключа должно быть дороже, чем получение открытого текста .
- Если данные были зашифрованы открытым ключом, должен быть только закрытый ключ, способный его расшифровать , и наоборот.
Преимущество асимметричного шифрования перед симметричным в том, что открытый ключ может быть известен всем пользователям системы, однако этого не происходит с закрытым ключом, и в результате симметричного шифрования оба пользователя должны знать один и тот же ключ. (и пароль должен быть отправлен каждому из разных пользователей через установленный канал связи).
Работа симметричной и асимметричной системы
Главный недостаток этот тип шифрования это его медлительность , использование этого типа ключей замедляет процесс шифрования связи. Решением этой проблемы является использование как асимметричного, так и симметричного шифрования (например, таких протоколов, как IPSec или OpenVPN для виртуальных частных сетей, HTTPS для безопасных веб-соединений или в соединениях SFTP / FTPES).
Эта комбинация шифров происходит следующим образом. Мы создаем ключ симметричного алгоритма, шифруем его открытым ключом получателя, отправляем зашифрованные данные по незащищенному каналу связи, а затем получатель расшифровывает данные, используя свой закрытый ключ. С ключом симметричного алгоритма в двоеточии может начаться обмен данными с использованием симметричного шифрования, что делает обмен намного быстрее, чем если бы мы использовали только асимметричную криптографию во всех коммуникациях.
Ярким примером того, где используется этот тип комбинированного метода, являются VPN, такие как OpenVPN или IPsec, в которых ключ сеанса, известный пользователям, периодически восстанавливается для дальнейшего повышения безопасности связи, не вызывая значительных задержек в передаче данных. .
Вызов-ответ
Чтобы повысить безопасность, этот метод проверяет, действительно ли отправитель является тем, кем он себя называет , для этого отправителю отправляется текст, и он зашифрует его своим закрытым ключом (на самом деле он его подписывает), отправитель отправит нам зашифрованный текст (подписанный), и мы расшифруем ключ (мы проверить подпись), воспользовавшись тем фактом, что у нас есть открытый ключ эмитента, и, наконец, мы сравним, что полученное сообщение совпадает с тем, которое мы отправили ранее.
Если пользователь выдает себя за настоящего эмитента, у него не будет закрытого ключа, поэтому «вызов» не будет успешным и данные не будут переданы.
Цифровая подпись
Цифровая подпись позволяет получателю сообщения, что источник является подлинным , мы также можем проверить, было ли изменено сообщение. Подделка цифровой подписи практически невозможна, если они не знают закрытый ключ подписывающего лица (и мы уже говорили ранее, что закрытый ключ должен быть сохранен, и что никто не должен его знать). Вот два этапа реализации цифровой подписи:
- Процесс подписи: отправитель шифрует данные закрытым ключом и отправляет их получателю.
- Проверьте подпись: получатель расшифровывает данные, используя открытый ключ отправителя, и проверяет, соответствует ли информация исходным данным (если она совпадает, она не была изменена).
В цифровых подписях используются хэш-функции, такие как SHA2-256 и SHA2-512, поскольку, как мы объясняли ранее, асимметричное шифрование выполняется медленно. Отправитель сообщения применит функцию HASH к исходному сообщению, чтобы получить отпечаток пальца. Затем отпечаток пальца будет зашифрован закрытым ключом и отправлен получателю по незащищенному каналу для дешифрования. Получатель также будет хешировать ваши данные и сравнивать результаты (тот, который он получил, и тот, который они получили). Если результат сравнения этих данных отрицательный, то есть есть различия между тем, что было получено, и тем, что было получено, информация была изменена, и данные отпечатков пальцев будут изменены. Если результат будет таким же, общение пройдет без проблем.
При этом мы выполнили:
- Подлинность, эмитент - это то, кем они себя называют . Подпись в пункте отправления и в пункте назначения одинакова.
- Честность, сообщение не было изменено . То, что получено, и то, что получено, одно и то же.
- Без отречения, отправитель не может отрицать, что отправил сообщение получателю . Цифровая подпись не меняется.
Если мы хотим ввести конфиденциальность в общение, все, что нам нужно сделать, это попросить отправителя зашифровать исходное сообщение открытым ключом получателя.
Алгоритмы шифрования с асимметричным ключом
Теперь мы перечислим два основных асимметричных алгоритма, которые используются сегодня, и объясним, как они работают.
Диффи-Хеллмана
Сам по себе это не асимметричный алгоритм, это протокол установления ключа, он используется для генерации закрытого ключа на обоих концах незащищенного канала связи . Он используется для получения закрытого ключа, с помощью которого информация будет впоследствии зашифрована вместе с симметричным алгоритмом шифрования. Сила Диффи-Хеллмана заключается в том, что его безопасность заключается в сложности вычисления дискретного логарифма больших чисел (Диффи-Хеллман также допускает использование эллиптических кривых).
Проблема с этим алгоритмом заключается в том, что он не обеспечивает аутентификацию, он не может подтвердить личность пользователей, поэтому, если третий пользователь окажется в середине сеанса связи, ему также будут предоставлены ключи и, следовательно, они могут установить общение с отправителем и получателем, выдавая себя за личность. Чтобы избежать этого, существует несколько решений, которые смягчают и решают проблему, например использование цифровых сертификатов.
RSA
Асимметричный алгоритм по преимуществу, этот алгоритм основан на паре ключей , публичный и частный, о котором мы уже говорили ранее. Безопасность этого алгоритма заключается в проблеме факторизации очень больших целых чисел и в проблеме RSA, поскольку полное дешифрование зашифрованного текста с помощью RSA в настоящее время невозможно, хотя возможно частичное дешифрование. Некоторыми очень важными характеристиками RSA является длина ключа, в настоящее время должна использоваться длина не менее 2048 бит, хотя для большей безопасности рекомендуется, чтобы она составляла 4096 бит или больше.
Преимущество:
- Решена проблема распределения симметричных ключей (симметричное шифрование).
- Его можно использовать в цифровых подписях.
Минусы:
- Безопасность зависит от эффективности компьютеров.
- Это медленнее, чем алгоритмы с симметричным ключом.
- Секретный ключ должен быть зашифрован каким-то симметричным алгоритмом.
DSA
Этот алгоритм также является чисто асимметричным, недостатком DSA является то, что ему требуется гораздо больше времени вычислений, чем RSA для аппаратного равенства. DSA широко используется в качестве алгоритма цифровой подписи, в настоящее время он является стандартом, но DSA не используется для шифрования данных, только как цифровая подпись. Этот алгоритм широко используется в соединениях SSH для проверки цифровой подписи клиентов, кроме того, существует вариант DSA на основе эллиптических кривых (ECDSA), и он доступен во всех текущих криптографических библиотеках, таких как OpenSSL, GnuTLS или LibreSSL. Другой особенностью DSA является длина ключа, минимальная длина ключа составляет 512 бит, хотя наиболее распространенным является использование 1024 бит.
Теперь вы знаете два типа криптографии и свойства каждого из них. где стоит использовать один тип, а где другой . Со временем эти методы будут меняться или будут обновлены до более безопасных, поскольку с ростом производительности компьютеров атаки на этот тип метода безопасности усиливаются, но прямо сейчас те, которые действуют и продолжают использоваться, не по назначению. будучи вытесненными, это те, о которых мы вам только что объяснили.