Шифрование при подключении https
  • Павел Чертов

О шифровании или Попробуй спрятаться от Большого брата


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

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

Это ты, брат?

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

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

Основы шифровки

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

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

Это происходит примерно так:

Нам надо договориться, как поговорить так, чтобы мы друг друга поняли, а окружающие нас - нет. Нам надо договориться на каком языке нам общаться. чтобы скрыть наш диалог от окружающих. Мы сообщаем нашему собеседнику: - Я говорю по-русски, английски, древнегречески и на латыни." Наш собеседник рассуждает примерно так: я знаю русский, английский и иврит. То есть мой собеседник поймет меня, если мы будем говорить по-русски или по-английски. Так как мы в Англии, безопаснее будет говорить по-русски:

- Давайте будем говорить по-русски

Способ шифрования выбран.

Ключ к шифру

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

  1. Мы пересылаем два числа, назовем их g и p - это открытый ключ - его знаем и мы и наш собеседник.

  2. Мы загадываем число a - некоторое произвольное число.

  3. Сайт загадывает число b - также некоторое произвольное число.

  4. Мы отправляем сайту остаток от деления (g^a)/p, назовем его числом A.

  5. Он присылает нам остаток от деления (g^b)/p, назовем его числом B.

  6. Мы считаем число, которое будет нашим ключом как остаток от деления (B^a)/p

  7. Сайт считает ключ как остаток от деления (A^b)/p При этом ключ у нас и ключ у сайта всегда получатся одинаковыми. А любой, кто слушает наш трафик не имеет чисел a и b, ведь мы их никому не пересылали.

Шаги 1-7 повторяются при каждом соединении, из-за чего человеку, даже имеющему доступ к вашему трафику вмешаться в него будет очень и очень непросто.

И снова к примеру:

Давайте предположим что только каждая буква с некоторым номером будет что-то значить. Однако сообщить этот номер открыто мы не можем - мало ли кто из нашего окружения говорит по-русски. Поэтому мы воспользовавшись алгоритмом, описанным сверху выберем 2 числа, например g = 27 и p = 5 1) Мы говорим нашему собеседнику: 27 и 5 2) Загадываем число, например 2 3) Наш спутник тоже загадывает число, допустим 5 (мы его не знаем) 4) Мы возводим 27 в степень 2 и берем остаток от деления получившегося числа на 5: (27^2) = 729; остаток от деления на 5 получается 4. Говорим собеседнику - у меня получилась четверка

5) Наш собеседник возводит 25 в степень 5 и берет остаток от его деления на 5: (25^5) = 14348907; остаток от деления на 5 получается 2

Наш собеседник говорит нам: у меня получилась двойка 6) Мы берем получившуюся двойку, возводим её в степень 2 и берем её остаток от деления: 2^2 = 4; Остаток от 4/5 будет равен 4 7) Наш коллега берет нашу четверку, возводит её в степень 5 и берет остаток от деления: 4^5 = 1024; Остаток от 1024/5 Будет снова равен 4 И у нас и у нашего собеседника получилось 4 - число о котором знает он и мы, однако окружающие получить это число не могут.

Получите шифровку

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

Допустим мы хотим сказать нашему коллеге: - big brother is watching you Переводим его на русский: - Большой Брат смотрит на тебя И добавляем между каждым символом еще 3 (так чтобы значение имел только каждый 4й:

- ныхба рогпвль тьрцхш гяонагйтым тъкБпр рнгшаррптк усйитму аорт тис рестиминт он разнавдай и т и ершиб емя

А наш собеседник, вполне нас поняв говорит:

- енгярым ых зымыны тазы ю

Берем каждую четвертую букву:

-> Я знаю

Переводим на английский -> I know Вот она, исходная фраза нашего собеседника

Если бы люди действительно делали так при общении - это было бы очень сложно и неудобно. Но для машины все эти операции практически незаметны. Поэтому мы получаем достаточно надежный способ передачи данных. Ну и конечно реальные алгоритмы шифрования много сложнее простого выбора энной буквы. Поэтому при соединении с сайтом по протоколу https:// ваши данные достаточно надежно защищены. А на сегодня все. Помните о безопасности: закрывайте дверь на ключ, а на сайт ставьте сертификаты. И никогда не забывайте: Большой Брат смотрит на вас.


© 2019 Рекламная студия X-Project
Онлайн-маркетинг и реклама в интернете

Москва, Бережковская наб.

д. 16 к. 2

+7 495 783 86 20

  • Facebook Social Icon
  • in_sta_main
  • Vkontakte Social Иконка