Обзор распространенных в мире алгоритмов шифрования позволяет не только подобрать необходимый в вашей задаче алгоритм, но и оценить затраты на его реализацию и ожидающие пользователя возможности и требования.
Испокон веков не было ценности большей, чем информация. ХХ век - век информатики и информатизации. Технология дает возможность передавать и хранить все большие объемы информации. Это благо имеет и оборотную сторону. Информация становится все более уязвимой по разным причинам:
возрастающие объемы хранимых и передаваемых данных;
расширение круга пользователей, имеющих доступ к ресурсам ЭВМ, программам и данным;
усложнение режимов эксплуатации вычислительных систем.
Поэтому все большую важность приобретает проблема защиты информации от несанкционированного доступа (НСД) при передаче и хранении. Сущность этой проблемы - постоянная борьба специалистов по защите информации со своими "оппонентами".
Характеристики составных алгоритмов шифрования
Название алгоритма |
Размер ключа, бит |
Размер блока, бит |
Размер вектора инициализации, бит |
Количество циклов шифрования |
Lucipher |
128 |
128 |
|
|
DES |
56 |
64 |
64 |
16 |
FEAL-1 |
64 |
64 |
4 |
|
B-Crypt |
56 |
64 |
64 |
|
IDEA |
128 |
64 |
|
|
ГОСТ 28147-89 |
256 |
64 |
64 |
32 |
Защита информации - совокупность мероприятий, методов и средств, обеспечивающих:
исключение НСД к ресурсам ЭВМ, программам и данным;
проверку целостности информации;
исключение несанкционированного использования программ (защита программ от копирования).
Очевидная тенденция к переходу на цифровые
методы передачи и хранения информации позволяет применять унифицированные методы
и алгоритмы для защиты дискретной (текст, факс, телекс) и непрерывной (речь)
информации.
Испытанный метод защиты информации от НСД -
шифрование (криптография). Шифрованием (encryption) называют процесс
преобразования открытых данных (plaintext) в зашифрованные (шифртекст,
ciphertext) или зашифрованных данных в открытые по определенным правилам с
применением ключей. В англоязычной литературе зашифрование/расшифрование -
enciphering/deciphering.
С помощью криптографических
методов возможно:
шифрование информации;
реализация электронной подписи;
распределение ключей шифрования;
защита от случайного или умышленного изменения информации.
К алгоритмам шифрования предъявляются определенные требования:
высокий уровень защиты данных против дешифрования и возможной модификации;
защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Киркхоффа);
малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект "обвала");
область значений ключа должна исключать возможность дешифрования данных путем перебора значений ключа;
экономичность реализации алгоритма при достаточном быстродействии;
стоимость дешифрования данных без знания ключа должна превышать стоимость данных.
Перед шифрованием информацию следует подвергнуть статистическому кодированию (сжатию, архивации). При этом уменьшится объем информации и ее избыточность, повысится энтропия (среднее количество информации, приходящееся на один символ). Так как в сжатом тексте будут отсутствовать повторяющиеся буквы и слова, дешифрование (криптоанализ) затруднится.
1. Симметричные (с секретным, единым ключом, одноключевые,
single-key).
1.1. Потоковые (шифрование потока данных):
с одноразовым или бесконечным ключом (infinite-key cipher);
с конечным ключом (система Вернама - Vernam);
на основе генератора псевдослучайных чисел (ПСЧ).
1.2. Блочные (шифрование данных поблочно):
1.2.1. Шифры
перестановки (permutation, P-блоки);
1.2.2. Шифры замены (подстановки,
substitution, S-блоки):
моноалфавитные (код Цезаря);
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma);
1.2.3. составные (таблица 1):
Lucipher (фирма IBM, США);
DES (Data Encryption Standard, США);
FEAL-1 (Fast Enciphering Algoritm, Япония);
IDEA/IPES (International Data Encryption Algorithm/
Improved Proposed Encryption Standard, фирма Ascom-Tech AG, Швейцария);
B-Crypt (фирма British Telecom, Великобритания);
ГОСТ 28147-89 (СССР); * Skipjack (США).
2. Асимметричные (с открытым ключом, public-key):
Диффи-Хеллман DH (Diffie, Hellman);
Райвест-Шамир-Адлeман RSA (Rivest, Shamir, Adleman);
Эль-Гамаль ElGamal.
Кроме того, есть разделение алгоритмов шифрования на собственно шифры (ciphers) и коды (codes). Шифры работают с отдельными битами, буквами, символами. Коды оперируют лингвистическими элементами (слоги, слова, фразы).
Симметричные алгоритмы шифрования (или
криптография с секретными ключами) основаны на том, что отправитель и получатель
информации используют один и тот же ключ. Этот ключ должен храниться в тайне и
передаваться способом, исключающим его перехват.
Обмен
информацией осуществляется в 3 этапа:
отправитель передает получателю ключ (в случае сети с несколькими абонентами у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);
отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его.
Если для каждого дня и для каждого сеанса связи будет использоваться уникальный ключ, это повысит защищенность системы.
В потоковых шифрах, т. е. при шифровании потока
данных, каждый бит исходной информации шифруется независимо от других с помощью
гаммирования.
Гаммирование - наложение на открытые данные
гаммы шифра (случайной или псевдослучайной последовательности единиц и нулей) по
определенному правилу. Обычно используется "исключающее ИЛИ", называемое также
сложением по модулю 2 и реализуемое в ассемблерных программах командой XOR. Для
расшифровывания та же гамма накладывается на зашифрованные
данные.
При однократном использовании случайной гаммы
одинакового размера с зашифровываемыми данными взлом кода невозможен (так
называемые криптосистемы с одноразовым или бесконечным ключом). В данном случае
"бесконечный" означает, что гамма не повторяется.
В
некоторых потоковых шифрах ключ короче сообщения. Так, в системе Вернама для
телеграфа используется бумажное кольцо, содержащее гамму. Конечно, стойкость
такого шифра не идеальна.
Понятно, что обмен ключами
размером с шифруемую информацию не всегда уместен. Поэтому чаще используют
гамму, получаемую с помощью генератора псевдослучайных чисел (ПСЧ). В этом
случае ключ - порождающее число (начальное значение, вектор инициализации,
initializing value, IV) для запуска генератора ПСЧ. Каждый генератор ПСЧ имеет
период, после которого генерируемая последовательность повторяется. Очевидно,
что период псевдослучайной гаммы должен превышать длину шифруемой
информации.
Генератор ПСЧ считается корректным, если
наблюдение фрагментов его выхода не позволяет восстановить пропущенные части или
всю последовательность при известном алгоритме, но неизвестном начальном
значении [4, c. 63].
При использовании генератора ПСЧ
возможны несколько вариантов [4, c. 126 - 128]:
1. Побитовое шифрование потока данных. Цифровой ключ используется
в качестве начального значения генератора ПСЧ, а выходной поток битов
суммируется по модулю 2 с исходной информацией. В таких системах отсутствует
свойство распространения ошибок.
2. Побитовое шифрование потока данных с
обратной связью (ОС) по шифртексту. Такая система аналогична предыдущей, за
исключением того, что шифртекст возвращается в качестве параметра в генератор
ПСЧ. Характерно свойство распространения ошибок. Область распространения ошибки
зависит от структуры генератора ПСЧ.
3. Побитовое шифрование потока данных с
ОС по исходному тексту. Базой генератора ПСЧ является исходная информация.
Характерно свойство неограниченного распространения ошибки.
4. Побитовое
шифрование потока данных с ОС по шифртексту и по исходному тексту.
При блочном шифровании информация разбивается на блоки фиксированной длины и шифруется поблочно. Блочные шифры бывают двух основных видов:
шифры перестановки (transposition, permutation, P-блоки);
шифры замены (подстановки, substitution, S-блоки).
Шифры перестановок переставляют элементы
открытых данных (биты, буквы, символы) в некотором новом порядке. Различают
шифры горизонтальной, вертикальной, двойной перестановки, решетки, лабиринты,
лозунговые и др.
Шифры замены заменяют элементы открытых
данных на другие элементы по определенному правилу. Paзличают шифры простой,
сложной, парной замены, буквенно-слоговое шифрование и шифры колонной замены.
Шифры замены делятся на две группы:
моноалфавитные (код Цезаря) ;
полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma).
В моноалфавитных шифрах замены буква исходного
текста заменяется на другую, заранее определенную букву. Например в коде Цезаря
буква заменяется на букву, отстоящую от нее в латинском алфавите на некоторое
число позиций. Очевидно, что такой шифр взламывается совсем просто. Нужно
подсчитать, как часто встречаются буквы в зашифрованном тексте, и сопоставить
результат с известной для каждого языка частотой встречаемости букв.
В полиалфавитных подстановках для замены некоторого
символа исходного сообщения в каждом случае его появления последовательно
используются различные символы из некоторого набора. Понятно, что этот набор не
бесконечен, через какое-то количество символов его нужно использовать снова. В
этом слабость чисто полиалфавитных шифров.
В современных
криптографических системах, как правило, используют оба способа шифрования
(замены и перестановки). Такой шифратор называют составным (product cipher). Oн
более стойкий, чем шифратор, использующий только замены или
перестановки.
Блочное шифрование можно осуществлять двояко
[4, c.129-130]:
1. Без обратной связи (ОС). Несколько битов (блок) исходного текста шифруются одновременно, и каждый бит исходного текста влияет на каждый бит шифртекста. Однако взаимного влияния блоков нет, то есть два одинаковых блока исходного текста будут представлены одинаковым шифртекстом. Поэтому подобные алгоритмы можно использовать только для шифрования случайной последовательности битов (например, ключей). Примерами являются DES в режиме ECB и ГОСТ 28147-89 в режиме простой замены.
2. С обратной связью. Обычно ОС организуется так: предыдущий шифрованный блок складывается по модулю 2 с текущим блоком. В качестве первого блока в цепи ОС используется инициализирующее значение. Ошибка в одном бите влияет на два блока - ошибочный и следующий за ним. Пример - DES в режиме CBC.
Генератор ПСЧ может применяться и при блочном шифровании [4, c. 128]:
1. Поблочное шифрование потока данных. Шифрование последовательных блоков (подстановки и перестановки) зависит от генератора ПСЧ, управляемого ключом.
2. Поблочное шифрование потока данных с ОС. Генератор ПСЧ управляется шифрованным или исходным текстом или обоими вместе.
Весьма распространен федеральный стандарт США DES (Data Encryption Standard) [1, 5], на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (American National Standards Institute, ANSI) и рекомендован для применения Американской ассоциацией банков (American Bankers Association, ABA). DES предусматривает 4 режима работы:
ECB (Electronic Codebook) электронный шифрблокнот;
CBC (Cipher Block Chaining) цепочка блоков;
CFB (Cipher Feedback) обратная связь по шифртексту;
OFB (Output Feedback) обратная связь по выходу.
ГОСТ 28147-89 - отечественный стандарт на
шифрование данных [8]. Стандарт включает три алгоритма зашифровывания
(расшифровывания) данных: режим простой замены, режим гаммирования, режим
гаммирования с обратной связью - и режим выработки
имитовставки.
С помощью имитовставки можно зафиксировать
случайную или умышленную модификацию зашифрованной информации. Вырабатывать
имитовставку можно или перед зашифровыванием (после расшифровывания) всего
сообщения, или одновременно с зашифровыванием (расшифровыванием) по блокам. При
этом блок информации шифруется первыми шестнадцатью циклами в режиме простой
замены, затем складывается по модулю 2 со вторым блоком, результат суммирования
вновь шифруется первыми шестнадцатью циклами и т. д.
Алгоритмы шифрования ГОСТ 28147-89 обладают достоинствами других алгоритмов для
симметричных систем и превосходят их своими возможностями. Так, ГОСТ 28147-89
(256-битовый ключ, 32 цикла шифрования) по сравнению с такими алгоритмами, как
DES (56-битовый ключ, 16 циклов шифрования) и FEAL-1 (64-битовый ключ, 4 цикла
шифрования) обладает более высокой криптостойкостью за счет более длинного ключа
и большего числа циклов шифрования.
Следует отметить, что
в отличие от DES, у ГОСТ 28147-89 блок подстановки можно произвольно изменять,
то есть он является дополнительным 512-битовым ключом.
Алгоритмы гаммирования ГОСТ 28147-89 (256-битовый ключ, 512-битовый блок
подстановок, 64-битовый вектор инициализации) превосходят по криптостойкости и
алгоритм B-Crypt (56-битовый ключ, 64-битовый вектор
инициализации).
Достоинствами ГОСТ 28147-89 являются также
наличие защиты от навязывания ложных данных (выработка имитовставки) и
одинаковый цикл шифрования во всех четырех алгоритмах
ГОСТа.
Блочные алгоритмы могут использоваться и для
выработки гаммы. В этом случае гамма вырабатывается блоками и поблочно
складывается по модулю 2 с исходным текстом. В качестве примера можно назвать
B-Crypt, DES в режимах CFB и OFB, ГОСТ 28147-89 в режимах гаммирования и
гаммирования c обратной связью.
В асимметричных алгоритмах шифрования (или
криптографии с открытым ключом) для зашифровывания информации используют один
ключ (открытый), а для расшифровывания - другой (секретный). Эти ключи различны
и не могут быть получены один из другого.
Схема обмена
информацией такова:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);
отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;
получатель получает сообщение и расшифровывает его, используя свой секретный ключ.
Защищен патентом США N 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость основана на вычислительной сложности задачи разложения большого числа на простые множители.
Разработан в 1985 году. Назван по фамилии автора - Эль-Гамаль. Используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Криптостойкость основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях.
В асимметричных системах необходимо применять
длинные ключи (512 битов и больше). Длинный ключ резко увеличивает время
шифрования. Кроме того, генерация ключей весьма длительна. Зато распределять
ключи можно по незащищенным каналам.
В симметричных
алгоритмах используют более короткие ключи, т. е. шифрование происходит быстрее.
Но в таких системах сложно распределение ключей.
Поэтому
при проектировании защищенной системы часто применяют и cимметричные, и
аcимметричные алгоритмы. Так как система с открытыми ключами позволяет
распределять ключи и в симметричных системах, можно объединить в системе
передачи защищенной информации асимметричный и симметричный алгоритмы
шифрования. С помощью первого рассылать ключи, вторым же - собственно шифровать
передаваемую информацию [4, c. 53].
Обмен информацией
можно осуществлять следующим образом:
получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;
отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному каналу;
получатель получает сеансовый ключ и расшифровывает его, используя свой секретный ключ;
отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;
получатель получает сообщение и расшифровывает его.
Надо заметить, что в правительственных и военных системах связи используют лишь симметричные алгоритмы, так как нет строго математического обоснования стойкости систем с открытыми ключами, как, впрочем, не доказано и обратное.
При передаче информации должны быть обеспечены вместе или по отдельности:
1. Конфиденциальность (privacy) - злоумышленник не должен иметь возможности узнать содержание передаваемого сообщения.
2. Подлинность (authenticity), которая включает два понятия
целостность (integrity) - сообщение должно быть защищено от случайного или умышленного изменения;
идентификация отправителя (проверка авторства) - получатель должен иметь возможность проверить, кем отправлено сообщение.
Шифрование может обеспечить конфиденциальность, а в некоторых
системах и целостность.
Целостность сообщения проверяется
вычислением контрольной функции (check function) от сообщения - некоего числа
небольшой длины. Эта контрольная функция должна с высокой вероятностью
изменяться даже при малых изменениях сообщения (удаление, включение,
перестановки или переупорядочивание информации). Называют и вычисляют
контрольную функцию по-разному:
код подлинности сообщения (Message Authentical Code, MAC);
квадратичный конгруэнтный алгоритм (Quadratic Congruentical Manipulation Detection Code, QCMDС);
Manipulation Detection Code (MDС);
Message Digest Algorithm (MD5);
контрольная сумма;
символ контроля блока (Block Check Character, BCC);
циклический избыточный код (ЦИК, Cyclic Redundancy Check, CRC);
хеш-функция (hash);
имитовставка в ГОСТ 28147-89;
алгоритм с усечением до n битов (n-bit Algorithm with Truncation).
При вычислении контрольной функции может
использоваться какой-либо алгоритм шифрования. Возможно шифрование самой
контрольной суммы.
Широко применяется цифровая подпись
(цифровое дополнение к передаваемой информации, гарантирующее целостность
последней и позволяющее проверить ее авторство). Известны модели цифровой
подписи (digital signature) на основе алгоритмов симметричного шифрования, но
при использовании систем с открытыми ключами цифровая подпись осуществляется
более удобно.
Для использования алгоритма RSA сообщение
следует сжать функцией хеширования (алгоритм MD5 - Message Digest Algorithm) до
256-битового хеша (H). Сигнатура сообщения S вычисляется следующим образом:
d
S = H mod n
Сигнатура пересылается вместе с
сообщением.
Процесс идентификации заключается в получении
хеш-функции сообщения (H') и сравнении с
e
H = S mod n
где H - хеш сообщения,
S - его сигнатура,
d - секретный ключ,
e - открытый ключ.
Проверке подлинности посвящены стандарты:
проверка подлинности (аутентификация, authentication) - ISO 8730-90, ISO/IES 9594-90 и ITU X.509;
целостность - ГОСТ 28147-89, ISO 8731-90;
цифровая подпись - ISO 7498, P 34.10-94 (Россия), DSS (Digital Signature Standard, США).
ISO - Международная организация по стандартизации /МОС/,
ITU - Международный союз электросвязи /МСЭ/.
Алгоритмы шифрования реализуются программными
или аппаратными средствами. Есть великое множество чисто программных реализаций
различных алгоритмов. Из-за своей дешевизны (некoторые и вовсе бесплатны), а
также все большего быстродействия процессоров ПЭВМ, простоты работы и
безотказности они весьма конкурентоспособны. Широко известна программа Diskreet
из пакета Norton Utilities, реализующая DES.
Нельзя не
упомянуть пакет PGP (Pretty Good Privacy, версия 2.1, автор Philip Zimmermann),
в котором комплексно решены практически все проблемы защиты передаваемой
информации. Применены сжатие данных перед шифрованием, мощное управление
ключами, симметричный (IDEA) и асимметричный (RSA) алгоритмы шифрования,
вычисление контрольной функции для цифровой подписи, надежная генерация
ключей.
Публикации журнала "Монитор" с подробными
описаниями различных алгоритмов и соответствующими листингами дают возможность
каждому желающему написать свою программу (или воспользоваться готовым
листингом).
Аппаратная реализация алгоритмов возможна с
помощью специализированных микросхем (производятся кристаллы для алгоритмов DH,
RSA, DES, Skipjack, ГОСТ 28147-89) или с использованием компонентов широкого
назначения (ввиду дешевизны и высокого быстродействия перспективны цифровые
сигнальные процессоры - ЦСП, Digital Signal Processor,
DSP).
Среди российских разработок следует отметить платы
"Криптон" (фирма "Анкад") [2] и "Грим" (методология и алгоритмы фирмы
"ЛАН-Крипто", техническая разработка НПЦ "ЭЛиПС") [7].
"Криптон" - одноплатные устройства, использующие криптопроцессоры
(специализированные 32-разрядные микроЭВМ, которые также называются "блюминг").
Блюминги аппаратно реализуют алгоритмы ГОСТ 28147-89, они состоят из вычислителя
и ОЗУ для хранения ключей. Причем в криптопроцессоре есть три области для
хранения ключей, что позволяет строить многоуровневые ключевые
системы.
Для большей надежности шифрования одновременно
работают два криптопроцессора, и блок данных в 64 битов считается правильно
зашифрованным, только если совпадает информация на выходе обоих блюмингов.
Скорость шифрования - 250 КБ/c.
Кроме двух блюмингов на
плате расположены:
контроллер сопряжения с шиной компьютера (за исключением "Криптон-ЕС" платы рассчитаны на работу с шиной ISA);
BIOS платы, предназначенный для осуществления интерфейса с компьютером и выполняющий самотестирование устройства и ввод ключей в криптопроцессоры;
датчик случайных чисел (ДСЧ) для выработки ключей шифрования, выполненный на шумовых диодах.
Выпускаются следующие разновидности плат "Криптон":
"Криптон-ЕС" предназначена для ПЭВМ серии ЕС 1841-1845;
"Криптон-3";
"Криптон-4" (сокращены габаритные размеры за счет перемещения ряда дискретных элементов в базовые кристаллы, повышена скoрость обмена благодаря внутреннему буферу на 8 байт);
"Криптон-ИК" дополнительно оснащена контроллером ИК (интеллектуальная карточка, смарт-карта, smart card).
В устройствах "Криптон-ЕС", "Криптон-3",
"Криптон-4" ключи хранятся в виде файла на дискете. В "Криптон-ИК" ключи
находятся на ИК, что затрудняет подделку и копирование.
В
плате "Грим" используются цифровые сигнальные процессоры фирмы Analog Devices
ADSP-2105 и ADSP-2101, что дает скорость шифрования соответственно 125 и 210
КБ/c. На плате есть физический ДСЧ и ПЗУ с программами начального теста,
проверки прав доступа, загрузки и генерации ключей. Ключи хранятся на
нестандартно форматированной дискете. Плата реализует алгоритмы ГОСТ 28147-89 и
цифровой подписи.
Для защиты информации, передаваемой по
каналам связи, служат устройства канального шифрования, которые изготовляются в
виде интерфейсной карты или автономного модуля. Скорость шифрования различных
моделей от 9600 бит/с до 35 Мбит/c.
В заключение заметим,
что шифрование информации не является панацеей. Его следует рассматривать только
как один из методов защиты информации и применять обязательно в сочетании с
законодательными, организационными и другими мерами.
1. Водолазский В. Коммерческие системы шифрования: основные алгоритмы и их реализация. Часть 1. // Монитор. - 1992. - N 6-7. - c. 14 - 19.
2. Игнатенко Ю.И. Как сделать так, чтобы?.. // Мир ПК. - 1994. - N 8. - c. 52 - 54.
3. Ковалевский В., Максимов В. Криптографические методы. // КомпьютерПресс. - 1993. - N 5. - c. 31 - 34.
4. Мафтик С. Механизмы защиты в сетях ЭВМ. - М.: Мир, 1993.
5. Спесивцев А.В., Вегнер В.А., Крутяков А.Ю. и др. Защита информации в персональных ЭВМ. - M.: Радио и связь, 1992.
6. Сяо Д., Керр Д., Мэдник С. Защита ЭВМ. - М.: Мир, 1982.
7. Шмелева А. Грим - что это ? // Hard'н'Soft. - 1994. - N 5.
8. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.