Реклама

Ключи шифрования

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

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

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

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

Кроме того могут использоваться хеш-функции SHA и MD5. С их помощью можно гарантировать целостность сообщения (то есть что его никто не модифицировал) и использовать  электронную подпись.

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

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

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

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

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

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

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

Реклама

Реклама