Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик / Хабр

Bitlocker (for windows) or filevault2 (for mac)

Дополнительный шаг (помимо пароля для входа в систему) для обеспечения безопасности личной информации на компьютере или ноутбуке — это установка BitLocker или FileVault2.

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

Transport layer security (tls)

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

Алгоритм ди́ффи — хе́ллмана

Одним из наиболее распространенных подходов является

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

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

Алгоритм шифрования

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

OpenVPN предлагает два алгоритма шифрования: AES и Blowfish. Оба эти алгоритма зарекомендовали себя как надежные, и если вы не математик, вам нет смысла разбираться в их архитектуре.

Я в своих решениях использую AES. В мануалах по OpenVPN Technologies рекомендуется использовать Blowfish, так как он чуть быстрее AES.

Аутентификация


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

Что если я позвоню своему приятелю, мы осуществим DH-обмен ключами, но вдруг окажется, что мой звонок был перехвачен и на самом деле я общался с кем-то другим?! Я по прежнему смогу безопасно общаться с этим человеком – никто больше не сможет нас прослушать – но это будет совсем не тот, с кем я думаю, что общаюсь. Это не слишком безопасно!

Аутентификация данных

Есть еще один показатель, который влияет на требуемые мощности и скорость работы VPN, это – аутентификация данных.

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

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

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

Аналогичным образом подписываются передаваемые данные при использовании VPN, для этого используются специальные алгоритмы хеширования. Пока просто запомните, что MD5 и SHA1 ‒ недостаточно надежные алгоритмы, а SHA512 и SHA256 – надежные алгоритмы.

На что еще стоит обратить внимание? Использование более криптостойкого алгоритма замедлит скорость работы VPN, потому VPN с MD5 всегда будет быстрее, чем с SHA512. 

В следующей главе мы на практике закрепим навыки оценки надежности VPN.

Глава 154

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

Алгоритм шифрования

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

OpenVPN предлагает два алгоритма шифрования: AES и Blowfish. Оба эти алгоритма зарекомендовали себя как надежные, и если вы не математик, вам нет смысла разбираться в их архитектуре.

Я в своих решениях использую AES. В мануалах по OpenVPN Technologies рекомендуется использовать Blowfish, так как он чуть быстрее AES.

Длина ключа

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

Похожее:  Как узнать задолженность в микрозаймовой организации Росденьги

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

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

Мы проводили тест. Взяли один из телефонов на базе операционной системы Android и поставили на него OpenVPN с файлом параметров генерации сессионного ключа на базе RSA с длиной 2048 бит (OpenVPN RSA 2048 / AES 128 – надеюсь, вам теперь понятны эти данные). При активном веб-серфинге расход батареи вырос на 12%, ввиду того, что устройство тратило ресурсы на шифрование и расшифровку трафика.

При использовании OpenVPN RSA 4096 / AES 256 при активном веб-серфинге расход вырос на 26%. Например, если без VPN устройство позволяло 8 часов «активно сидеть» в интернете, то с использованием OpenVPN RSA 4096 / AES 256 – лишь около 6.

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

Аутентификация данных

Есть еще один показатель, который влияет на требуемые мощности и скорость работы VPN, это – аутентификация данных.

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

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

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

Аналогичным образом подписываются передаваемые данные при использовании VPN, для этого используются специальные алгоритмы хеширования. Пока просто запомните, что MD5 и SHA1 ‒ недостаточно надежные алгоритмы, а SHA512 и SHA256 – надежные алгоритмы.

На что еще стоит обратить внимание? Использование более криптостойкого алгоритма замедлит скорость работы VPN, потому VPN с MD5 всегда будет быстрее, чем с SHA512. 

В следующей главе мы на практике закрепим навыки оценки надежности VPN.

Длина ключа

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

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

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

Мы проводили тест. Взяли один из телефонов на базе операционной системы Android и поставили на него OpenVPN с файлом параметров генерации сессионного ключа на базе RSA с длиной 2048 бит (OpenVPN RSA 2048 / AES 128 – надеюсь, вам теперь понятны эти данные).

При использовании OpenVPN RSA 4096 / AES 256 при активном веб-серфинге расход вырос на 26%. Например, если без VPN устройство позволяло 8 часов «активно сидеть» в интернете, то с использованием OpenVPN RSA 4096 / AES 256 – лишь около 6.

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

Другие гайды по теме

  1. Что такое API?

Как обычным пользователям использовать криптографию?

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

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

Как появилась криптография?

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

Похожее:  Wi-Fi с логином и паролем для каждого пользователя или делаем WPA2-EAP/TLS подручными средствами / Хабр

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

Как выглядел этот шифр? Разберем на примере:

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

На рисунке ниже показан сдвиг на две буквы вперд.

Сдвиг на две буквы означает, что:

А ⇒ В
Б ⇒ Г
В ⇒ Д

Сообщение «Привет» превращается в «Сткджб».

Шифр можно улучшить, применив более продвинутый метод. Представим, что после каждого использования алгоритм шифрования меняется, то есть повторное сообщение с такой же информацией будет выглядеть совершенно по-другому. Проще говоря, если в первом случае мы получили «Сткджб», то следом то же слово будет зашифровано как «Опздбдс»: теперь сдвиг произошел на одну букву назад.

Конфиденциальность

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

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

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

Криптография не совершенна

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

Поэтому стоит осознавать, что «более безопасно» не означает «абсолютно безопасно».

Криптосистема с открытым ключом

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

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

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

Это означает, что если кто-нибудь находится между клиентом и сервером и наблюдает за соединением – он все равно не сможет узнать ни закрытый ключ клиента, ни закрытый ключ сервера, ни секретный ключ сессии.

Как это возможно? Математика!

Немного математики…

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

Пусть Алиса и Боб – две стороны, осуществляющие обмен ключами по DH-алгоритму. Сперва они договариваются о некотором основании root (обычно маленьком числе, таком как 2,3 или 5 ) и об очень большом простом числе prime (больше чем 300 цифр). Оба значения пересылаются в открытом виде по каналу связи, без угрозы компрометировать соединение.

Напомним, что и у Алисы, и у Боба есть собственные закрытые ключи (из более чем 100 цифр), которые никогда не передаются по каналам связи.

По каналу связи же передается смесь mixture, полученная из закрытых ключей, а также значений prime и root.

Таким образом:Alice’s mixture = (root ^ Alice’s Secret) % primeBob’s mixture = (root ^ Bob’s Secret) % primeгде % — остаток от деления

Таким образом, Алиса создает свою смесь mixture на основе утвержденных значений констант (root и prime), Боб делает то же самое. Как только они получили значения mixture друг друга, они производят дополнительные математические операции для получения закрытого ключа сессии. А именно:

Вычисления Алисы(Bob’s mixture ^ Alice’s Secret) % prime

Вычисления Боба(Alice’s mixture ^ Bob’s Secret) % prime

Результатом этих операций является одно и то же число, как для Алисы, так и для Боба, и это число и становится закрытым ключом на данную сессию. Обратите внимание, что ни одна из сторон не должна была пересылать свой закрытый ключ по каналу связи, и полученный секретный ключ так же не передавался по открытому соединению. Великолепно!

Для тех, кто меньше подкован в математическом плане, Wikipedia дает прекрасную картинку, объясняющую данный процесс на примере смешивания цветов:

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

Неотказуемость (от англ. non-repudiation)

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

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

Похожее:  тинькофф авторизация ожидает подтверждение что это такое у платежа

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

Принципы криптографии

Задача криптографии — обеспечить защиту информации. Она основана на четырех принципах:

Прокси-серверы

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

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

Схема работы прокси-сервера
Схема работы прокси-сервера

Работая через прокси, компьютер все свои запросы перенаправляет через посредника (прокси-сервер), и уже посредник, представляясь твоим компьютером, запрашивает данные у сайтов. Прокси-серверы узкоспециализированы, поэтому на каждый тип интернет-соединения имеется свой тип прокси. Например, для FTP (File Transfer Protocol) есть FTP-прокси. Подробно мы разберем три типа прокси-серверов.

Расширенная валидация

В дополнение к обычным X.509 сертификатам, существуют

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

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

Сертификаты

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

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

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

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

1. является реально существующим;2. имеет доступ к домену, сертификат для которого оно пытается получить.

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

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

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

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

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

Современные методы криптографии

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

Хеширование

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

Допустим, нам нужно обновить программное обеспечение на компьютере. Хеширование — хороший способ проверки загружаемых файлов, файлов Windows (.ISO) или Mac (.DMG). Когда мы скачиваем обновление, вместе с файлом мы получаем хеш от этого файла. Наш компьютер хеширует скачанный файл еще раз и сравнивает хеши (полученный и скачанный): если они совпадают, значит, мы получили неповрежденный файл.

Целостность

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

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

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

Заключение

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

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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

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

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

Adblock
detector