logo
MethodFull

Передача информации с использованием симметричной криптографии

Как двум сторонам безопасно обмениваться информацией? Конечно же, шифруя свои сообщения. Посмот­рим, что должно произойти, когда Василиса посылает шифрованное сообщение Ивану (полный протокол гораздо сложнее).

  1. Василиса и Иван выбирают систему шифрования;

  2. Василиса и Иван выбирают ключ;

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

  4. Василиса посылает шифрованное сообщение Ивану;

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

Что может Бессмертник, находясь между Василисой и Иваном, узнать, подслушивая этот протокол? Если он может под­слушать только передачу на этапе (4), ей придется подвергнуть шифротекст криптоанализу. Это пассивное вскрытие представляет собой вскрытие с использованием только шифротекста, применяемые алгоритмы устойчивы (насколько нам известно) по отношению к любым вычислительным мощностям, который может заполучить Кащеев для решения проблемы.

Бессмертник, однако, не глуп (он же не Буратино). Он может также подслушать и этапы (1) и (2). Тогда ему станут известны алгоритм и ключ – также как и Ивану. Когда Кащеев перехватит сообщение на этапе (4), то ему останется только дешифровать его самостоятельно.

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

Соловушка, активный взломщик, может сделать кое-что другое. Он может попытаться нарушить линию связи на этапе (4), сделав так, что Василиса вообще не сможет передавать информацию Ивану. Разбойник также может пе­рехватить сообщение Василисы и заменить его своим собственным. Если ему удалось узнать ключ (перехватив обмен информацией на этапе (2) или взломав криптосистему), он сможет зашифровать свое сообщение и отпра­вить его Ивану вместо перехваченного, и Иван не сможет узнать, что сообщение отправлено не Василисой. Если Соловей не знает ключа, он может только создать сообщение, превращающееся при дешифровке в бессмыслицу. Иван, считая, что сообщение отправлено Василисой, может решить, что либо у Василисы, либо в сети возникли серьезные проблемы.

А Василиса? Что она может сделать, чтобы испортить протокол? Она может передать копию ключа Кащееву, и тогда он сможет читать все, что говорит Иван, и напечатать его слова в «Липецкой газете». Это серьезно, но проблема не в протоколе. Василиса и так может передавать Бессмертнику любые открытые тексты, передаваемые с использованием протокола. Конечно, то же самое может сделать и Иван. Протокол предполагает, что Василиса и Иван доверяют друг другу. Итак, симметричным криптосистемам присущи следующие проблемы:

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

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

В предположении, что каждая пара пользователей сети использует отдельный ключ, общее число ключей быстро возрастает с ростом числа пользователей. Сеть из nпользователей требуетn(n- 1)/2 ключей. На­пример, для общения 10 пользователей между собой нужно 45 различных ключей, для 100 пользователейпотребуется 4950 ключей. Решение проблемы – в уменьшении числа пользователей, но это не всегда возможно.