Попытаемся найти универсальные подходы к построению такой защиты. Прежде всего, в распоряжении получателя информации должна быть процедура проверки или аутентификацииA(T), позволяющая проверить подлинность полученного массива данных T. На выходе указанная процедура должна выдавать одно из двух возможных булевых значений – массив данных опознается как подлинный, либо как ложный: A(T)Î{0,1} для любого допустимого T. Условимся, что значение 1 соответствует подлинному массиву данных, а значение 0 – ложному. Процедура аутентификации должна обладать следующими свойствами, ограничивающими возможность злоумышленника подобрать массив данных T1, отличающийся от подлинного массива T (T¹T1), который бы тем не менее был бы этой процедурой опознан как подлинный (A(T1)=1):
· у злоумышленника не должно быть возможности найти такое сообщение иначе как путем перебора по множеству допустимых сообщений – последняя возможность есть в его распоряжении всегда;
· вероятность успешно пройти проверку на подлинность у случайно выбранного сообщения T* не должна превышать заранее установленного значения p.
Теперь вспомним про универсальность конструируемой схемы защиты, которая, в частности, означает, что схема должна быть пригодной для защиты любого массива данных T из достаточно широкого класса. Однако, если реализовать схему буквально, т.е. использовать для проверки в точности то сообщение, которое отправитель должен передать получателю, принцип универсальности может придти в противоречие со вторым требованием к процедуре проверки. Действительно, исходя из этого принципа мы можем потребовать, чтобы все возможные сообщения Tбыли допустимыми, что совершенно явно нарушит второе требование к функции проверки. Для того, чтобы их примирить, в схему необходимо ввести дополнительные шаги – преобразование данных отправителем и обратное преобразование получателем. Отправитель выполняет преобразование данных с использованием некоторого алгоритма F: T'=F(T). Тогда, помимо процедуры аутентификации, в распоряжении получателя должна быть процедура G восстановления исходных данных: T=G(T'). Весь смысл этих преобразований заключается в том, чтобы множество преобразованных сообщений {T'}, взаимно однозначно отображающееся на множество допустимых исходных сообщений {T}, было неизвестно злоумышленнику, и вероятность случайно угадать элемент из этого множества была достаточно мала для того, чтобы ее можно было не принимать во внимание.
Последнее требование в сочетанием с принципом универсальности однозначно приводит к необходимости внесения определенной избыточности в сообщение, что означает попросту тот факт, что размер преобразованного сообщения должен быть больше размера исходного сообщения на некоторую величину, как раз и составляющую степень избыточности: |T'|–|T|=D. Очевидно, что чем больше эта величина, тем меньше вероятность принять случайно взятое сообщение за подлинное – эта вероятность равна 2–D. Если бы не требование внесения избыточности, в качестве функций преобразования F и G данных могли бы использоваться функции зашифрования и расшифрования данных на некотором ключе K: F(T)=EK(T), G(T')=DK(T'). Однако при их использовании размер массива зашифрованных данных T' равен размеру массива исходных данных T: |T'|=|T|, поэтому метод здесь не подходит.
Наиболее естественно реализовать алгоритм преобразования с внесением избыточности простым добавлением к исходным данным контрольной комбинации фиксированного размера, вычисляемой как некоторая функция от этих данных: T'=F(T)=(T,C), C=f(T), |C|=D. В этом случае выделение исходных данных из преобразованного массива заключается в простом отбрасывании добавленной контрольной комбинации C: T=G(T')=G(T,C)=T. Проверка на подлинность заключается в вычислении для содержательной части T полученного массива данных T' значения контрольной комбинации C'=f(T) и сравнении его с переданным значением контрольной комбинацией C. Если они совпадают, сообщение считается подлинным, иначе – ложным:
.Теперь рассмотрим свойства, которым должна удовлетворять функция выработки контрольной комбинации f:
1. Эта функция должна быть вычислительно необратимой, то есть не должно существовать способа подобрать массив данных T под заданную контрольную комбинацию C иначе как перебором по пространству возможных значений T.
2. Эта функция не должна быть известна злоумышленнику – у него не должно быть способа вычислить контрольную комбинацию C ни для какого массива данных T. Это требование по сути означает, что функция fдолжна быть секретной, рассмотрим его подробнее:
· во-первых, в соответствии с общепризнанным в криптографии принципом Кирхгоффа требование секретности функции выработки контрольной комбинации следует заменить на применение открытой функции, использующей вектор секретных параметров (ключ) – точно так же, как это делается при построении шифров: C=f(T)=fK(T).
· во-вторых, оказывается, что в отдельных случаях это требование можно существенно ослабить. Дело в том, что истинная цель этого пункта – исключить для злоумышленника возможность отправить ложное сообщение T1, снабдив его корректно вычисленной контрольной комбинацией C1=f(T1). Этого можно достичь двумя следующими способами:
a) с помощью использованного выше требования секретности функции вычисления контрольной комбинации или зависимости ее от вектора секретных параметров (ключа);
b) с помощью организации такого протокола использования средств защиты, который бы исключал возможность подобного навязывания ложных данных.
Очевидно, что возможность (b) может быть реализована только если контрольная комбинация передается или хранится отдельно от защищаемых данных. Несмотря на кажущуюся экзотичность, такая возможность встречается достаточно часто, речь о ней впереди.
Рассмотрим некоторые хорошо известные способы вычисления контрольной комбинации и оценим возможность их использования в рассматриваемой системе имитозащиты данных. Простейшим примером такой комбинации является контрольная сумма блоков сообщения, взятая по модулю некоторого числа, обычно берут два в степени размера блока:
если T=(T1,T2,...,Tm), то C=f(T)=(T1+T2+...+Tm)mod2N,
где N=|T1|=|T2|=...=|Tm| – размер блоков сообщения.
Однако такое преобразование не соответствует обоим вышеизложенным требованиям к функции вычисления контрольной комбинации и поэтому непригодно для использования в схеме имитозащиты:
· во-первых, и это самое главное – оно не исключает возможность подбора данных под заданную контрольную комбинацию. Действительно, пусть отправитель информации передал по ненадежному каналу сообщение Tи контрольную сумму C для него, вычисленную по приведенной выше формуле. В этом случае все, что потребуется злоумышленнику для навязывания получателю произвольно взятого ложного массива данных T'=(T'1,T'2,...,T'm') – это дополнить его еще одним блоком, вычисленным по следующей формуле:
T'm'+1=C–(T'1+T'2+...+T' m')mod2N.
Все блоки ложного сообщения, кроме одного, не обязательно последнего, злоумышленник может установить произвольными.
· во-вторых, рассмотренное преобразование не является криптографическим, и для злоумышленника не составит труда изготовить контрольную комбинацию для произвольного выбранного им сообщения, что позволяет ему успешно выдать его за подлинное – если контрольная комбинация хранится или передается вместе с защищаемым массивом данных.
2.2.Подходы к контролю неизменности данных.
В настоящее время известны два подхода к решению задачи защиты данных от несанкционированного изменения, базирующихся на двух изложенных выше подходах к выработке контрольной комбинации:
1. Выработка MAC – Message Authentification Code – кода аутентификации сообщений. Этот подход заключается в том, что контрольная комбинация вычисляется с использованием секретного ключа с помощью некоторого блочного шифра. Важно, что на основе любого такого шифра можно создать алгоритм вычисления MAC для массивов данных произвольного размера. В литературе МАС иногда не вполне корректно называется криптографической контрольной суммой, или, что более точно, криптографической контрольной комбинацией. Данный подход к аутентификации данных общепризнан и закреплен практически во всех криптографических стандартах - имитовставка, формируемая согласно ГОСТ 28147-89 является типичным образцом MAC.