Симметричные шифры

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

К достоинствам симметричных шифров можно отнести их высокую скорость работы и простоту использования для защиты данных. Недостатком симметричных шифров является сложность распространения ключей и невозможность использования их для цифровой подписи. Предположим, что Алиса хочет обмениваться данными с Бобом используя симметричный шифр, тогда она должна договориться с ним об используемом ключе. Для этого ей, скорее всего, придётся лично встретиться с Бобом, поскольку необходимо исключить вероятность попадания ключа к посторонним лицам. Если Алиса захочет переписываться с двумя десятками своих друзей, то ей придётся встретится с каждым, что может быть проблематично, особенно если друзья разбросаны по всему миру. Если друзья Алисы захотят переписываться не только с ней, но и друг с другом[2]...

Наиболее важными характеристиками блочного шифра являются длина ключа и размер блока. В общем случае, чем больше длина ключа, тем более надёжен шифр. Если длина ключа n бит, то количество возможных ключей 2n. В среднем необходимо перебрать 2n-1 ключей до нахождения правильного. GnuPG использует шифры с длиной ключа от 128 бит. 2128 это огромное число и, даже если объединить все компьютеры нашей планеты, им потребуется времени больше, чем возраст вселенной, для нахождения ключа. Однако, на практике ключ шифрования зачастую генерируется по определённому алгоритму из задаваемой пользователем ключевой фразы (пароля). В этом случае можно вместо перебора всех возможных ключей попытаться угадать или подобрать ключевую фразу, которая зачастую значительно короче, чем 128 бит. Поэтому очень важно выбирать хорошие ключевые фразы. Длина блока также важна, но она меньше влияет на надёжность шифра. Размер блока у современных шифров 64-256 бит.



[2] Если имеется группа из n человек, попарно переписывающихся друг с другом, то для каждой пары потребуется свой ключ, т.е. ключей.