5.1.4. Подтверждение подлинности сообщений Вхождение пользователя
в  вычислительную  систему  естественно  рассматривать как начало
сеанса   работы   с  терминалом  и  сопроводить  его  выполнением
процедуры  подтверждения  подлинности.  Такая процедура связана с
подтверждением  подлинности  пользователя,  а не его сообщений. В
сетях  связи,  наоборот,  более  важную  роль  играют  сообщения:
субъекты сети обмениваются сообщениями, и верификация источника и
содержимого сообщения должна быть выполнена при получении каждого
нового   сообщения.  Соответствующая  функция  защиты  называется
подтверждением   подлинности   сообщения.   Эта   функция  должна
подтвердить    следующие    факты:    1.Сообщение    исходит   от
санкционированного   отправителя.  2.  Содержание  сообщения  при
передаче  не  изменялось.  3.  Сообщение доставлено по адресу. 4.
Аналогичное  сообщение  ранее  не поступало. 5. Порядок получения
сообщений соответствует порядку отправления. В случае конфликтной
ситуации   третье   лицо  (посредник)  должно  удостоверить,  что
действительно сообщение послано одним санкционированным субьектом
сети   другому   /BEKE82,  DAVI84,MEYE82/.  Известны  три  метода
подтверждения  подлинности  сообщений с использованием: - функций
подтверждения подлинности; - механизмов симметричного шифрования;
-  механизмов шифрования с открытым ключом. Использование функций
подтверждения  подлинности  Любые  два  субъекта сети А и В имеют
функцию  подтверждения  подлинности  V,  известную  только А и В.
Когда  субъект  А  хочет  послать  сообщение  m субъекту В, то он
посылает  более  сложную  структуру  { m,V(m)}. Получив сообщение
{m,m'}, субъект В проверяет, выполняется ли условие m'=V(m). Если
условие не выполняется, субъект В делает один из выводов: 1) А не
послал  сообщения; 2) содержание сообщения изменено; 3) сообщение
пришло не по адресу. Сама функция подтверждения подлинности часто
является  открытой,  но  при  этом  включает  секретный параметр,
называемый ключом. Обычно числовое значение функции подтверждения
подлинности  не слишком велико: 16-32 символов. Если использовать
более  длинные  числа,  это затруднит передачу по каналу связи, а
для   злоумышленника  облегчит  возможность  раскрытия.  Возможна
ситуация,  когда злоумышленник возвращает перехваченное сообщение
m  (которое  послано  субъектом  А субъекту В) субъекту А. В этом
случае  А  не знает, послано ли это сообщение субъектом В или это
его  же  собственное  послание.  Чтобы  устранить такую ситуацию,
субъект А может добавить к сообщению свой идентификационный номер
id(A).  Таким  образом,  вместо  сообщения  m  субъект А посылает
сообщение  {m,id(A),  V({m,id(A)})}.  Такая модель была применена
при  реализации  банковской  сети SWIFT, где используется функция
подтверждения  подлинности  V(m,K).  Ключ  К известен только двум
банкам,  связанным  друг с другом /DAVI84/. Функция подтверждения
подлинности  V  может  быть  реализована различными способами и в
виде   разнообразных   алгоритмов.  Ниже  описаны  два  алгоритма
реализации   MAC-кода   подтверждения   подлинности.  Алгоритм  с
усечением  до n бит /ISO86B/. В передаваемом сообщении выделяются
блоки  {D,......D}.  Код  подтверждения подлинности сообщения MAC
(Message  Authentication  Code)  реализуется  некоторым n-битовым
алгоритмом шифрования А, который использует криптографичекий ключ
К.  Полный алгоритм описывается схемой COMM 1. /СOMM 1/: Алгоритм
формирования     MAC-кода     с     усечением     до     n    бит
----------------------------------------------------------Шаг  1:
Установить  I  =  D  Шаг 2: I = I + X Повторять шаги 3 и 4 для i=
1,2,...g-1 Шаг 3: output = A(I,K) Шаг 4: I =I = output + D Шаг 5:
output   =  A(I,K)  Шаг  6:  Останов.  MAC  =  TRUNCATE  (output)
----------------------------------------------------------Для
запуска  процедуры  требуется  только  некоторое инициализирующее
значение  (IV);  для первого сообщения это случайное число, а для
последующих  сообщений  код  подтветждения  подлинности сообщения
формируется  из  предыдущих  выходов.  В  алгоритме  эта величина
обозначена  черех  Х.  Квадратный  конгруэнтный  алгоритм  Другой
алгоритм  /JUEN87/  формирует  МАС-код  подтверждения подлинности
сообщения  длиной  128  бит  (первый  код  имеет  длину 32 бита).
Алгоритм  основан  на  следующих принципах: * Алгоритм вычисления
контрольной  суммы  не  должен использовать секретной информации,
хотя текст или контрольная сумма либо и то и другое вместе должны
быть  скрыты  от  злоумышленника.  *  Алгоритм  должен эффективно
выполняться  как  на микрокомпьютерах, так и на универсальных ЭВМ
без   использования   какой-либо   специализированной  аппаратуры
защиты.   *   Контрольная  сумма  должна  быть  чувствительна  ко
всевозможным  перестановкам  и  переупорядочиваниям,  а  также  к
операциям   к  операциям  редактирования,  удаления  и  включения
текстов.  *  Если  для  двух различных текстов произвольной длины
вычислены  контрольные суммы, то вероятность их совпадения должна
быть  равномерно  распределенной  случайной  величиной со средним
значением  2,  где  k-число  битов  контрольной  суммы.  * Число,
соответствующее  контрольной  сумме,  должно иметь длину не менее
128  бит,  чтобы  защитить  текст  от  вторжения  типа  "birthday
attack"1).  *  Функция, с помощью которой вычисляется контрольная
сумма,  должна быть необратимой, т.е. не допускающей декомпозиции
на   отдельные   элементы.   Алгоритм,   называемый  квадратичным
конгруэнтым  алгоритмом для МАС-кода QCMDC(Quadratic Congruential
Manipulation     Detection    Code)    /JUEN87/,    удовлетворяет
сформулированным   выше   требованиям.   Рассмотрим   128-битовый
(16-байтовый) блок текста, разделенный на четыре 32-битовых слова
Т  ,  Т  ,  Т , Т . По причинам, изложенным ниже, алгоритм должен
использовать  только 31 биткаждого слова, а именно бит знака и 30
младших битов, т.е. * Т = (T ) AND (BFFFFFFF). i i ** Кроме того,
определим  30-битовое  слово  Т  ,содержащее  6  старших  бит Т ,
сдвинутых  вправо  на  два бита, а два ведущих бита заполня1 ются
нулями; к ним присоединяются по восемь старших битов слов Т , Т ,
Т  ,  чтобы  сформировать 32-битовое слово с двумя нуле2 3 4 выми
старшими  битами.  Допустим,  что  128-битовое значение МАС-кода,
полученное из предыдущего блока текста, также представлено в виде
четырех  32-битовых  целочисленных  компонентов  М  ,М ,М и М ; и
пусть  1 2 3 4 * 32-битовые компоненты нового МАС-кода обозначены
через М . i Наконец, определим множество модулей N ,N ,N ,N , 1 2
3  4 представляющих четыре очень больших простых числа в пределах
32-битовых  целых  чисел, а именно 2 147 483 629 (2 -19),.....587
(2  -61), ....579 (2 -69) и 2 147 483 563 (2 -85). * Тогда четыре
составляющих МАС-кода, обозначенные через М i (i=1,....,4), могут
быть   вычисленны   с   помощью   алгоритма  СОММ  2.  /СОММ  2/:
Квадратичный      конгруэнтный      алгоритм     для     МАС-кода
----------------------------------------------------------cтр.139
----------------------------------------------------------Другие
два   метода   подтверждения  подлинности  шифрованных  сообщений
рассмотрены    ниже.   Использование   механизмов   симметричного
шифрования  В  процедурах  симметричного шифрования участвуют две
функции Е (шифрование) и D (дешифрование), совместно использующие
общий ключ. Функции E и D являются открытыми, но специальный ключ
К  известен  только  двум  субъектам  сети А и В. Когда субъект А
посылает   сообщение  m  субъекту  В  и  хочет,  чтобы  оно  было
зашифровано,  то  он  посылает  вместо  сообщения  m  шифрованное
сообщение    Е(m,K).Получив    такое    сообщение,    субъект   В
расшифровывает   сообщение,   используя  ключ  К,  т.е.  выполняя
операцию   D(E(m,K),K).   Наиболее  распространенной  реализацией
метода  симметричного шифрования является DES-алгоритм. Процедура
подтверждения  подлинности  при симметричном шифровании состоит в
следующем.   Когда   субъект   В  получает  некоторое  сообщение,
посланное  субъектом А, то он дешифрует сообщение, применяя ключ,
совместно  используемый  субъектами  А  и  В.  Если дешифрованное
сообщение  оказывается  бессмысленным, то В заключает, что либо А
не  посылал сообщения, либо содержание сообщения изменено, либо А
предназначал   сообщение   не  В.  Проще  установить  подлинность
сообщения,  если  ему  будет  предшествовать  некоторый  префикс,
например  дата  отправления.  По  тем же причиним, как и в случае
использования   функций   подтверждения   подлинности  сообщений,
сообщение,  которое должно быть зашифровано, часто объединяется с
идентификационным   номером   отправителя   сообщения   /DENN82/.
Использование  механизмов  шифрования  с  открытым  ключом В этой
процедуре шифрования используется одна открытая функция F как для
шифрования, так и дешифрования. Субъект А имеет пару ключей: ключ
шифрования  РКА  -  открытый  и ключ дешифрования SKA - известный
только  самому субъекту. Все другие субъекты используют ключ РКА,
когда  посылают сообщения субъекту А. (Ключ РКА может быть найден
в  телефонном справочнике так же, как и номер телефона А). Однако
дешифровать  сообщение,  зашифрованное  ключом  РКА, может только
субъект   А,  используя  секретный  ключ  SKA:  F(F(m,PKA),SKA)=m
Наиболее   распространенной   реализацией   метода  шифрования  с
открытым   ключом   является  RSA-алгоритм.  Получив  шифрованное
сообщение,  субъект  В не имеет возможности узнать, что сообщение
послано  именно  субъектом  А,  хотя  сообщение и должно включать
идентификационный   номер   А.  Любой  субъект  мог  бы  написать
сообщение,  включив  в него идентификационный номер субъекта А, и
зашифровать,  используя  ключ РКВ, а затем отослать зашифрованное
сообщение  субъекту  В.  В  этом  случае  процедура подтверждения
подлинности   реализуется   следующим  образом.  Отрасшифрованное
сообщение  бессмысленно,  субъект В заключает, что сообщение было
послано не А или его содержание было изменено. Когда А посылает В
сообщение  F(m,SKA),  любое  третье  лицо  может его дешифровать,
используя  ключ  РКА.  Чтобы  избежать этого, А может зашифровать
сообщение    F(m,SKA)    ключом    РКВ    и   послать   сообщение
F(F(m,SKA),PKB).  Если субъект А не хочет шифровать сообщение для
В, используя ключ РКВ, то он должен включить в исходное сообщение
идентификационный номер субъекта В. В противном случае получатель
В  не  будет  знать, что сообщение послано именно ему /DENN82/. В
методах,  использующих  симметричное  шифрование,  основной  риск
состоит  в  том,  что  третье лицо может раскрыть секретный ключ,
используемый  пользователями  А и В. Такое потенциально возможно,
поскольку  А  и  В  должны так или иначе обменяться информацией о
ключе,  прежде  чем  они  смогут  использовать  его  совместно. В
методах,  использующих  асимметричное  шифрование,  основной риск
состоит  в  том,  что  субъект  С может убедить получателя В, что
истинным  ключом  является  ключ,  отличный от РКА, например РКС.
Именно  по  этой  причине  каждый  пользователь  должен  публично
объявить  свой  открытый  ключ  РКА,  чтобы он стал известен всем
пользователям   сети   /DENN82/.   Оценка  методов  подтверждения
подлинности    Следующие   критерии   используются   для   оценки
эффективности   различных   методов   подтверждения   подлинности
/DENN82/.  *  Критерий  "известный текст" состоит в том, что даже
если  злоумышленнику известен значительный объем исходных текстов
и   функций   подтверждения   подлинности   (или  соответствующих
шифрованных текстов), то он не должен иметь возможности вычислить
функцию  подтверждения  подлинности  некоторого случайного текста
(или  соответственно восстановить текст из данного зашифрованного
текста). * Критерий "избраный текст" состоит в том, что даже если
злоумышленнику  известен  значительный  объем  исходных текстов и
функций    подтверждения    подлинности    (или   соответствующих
шифрованных текстов), то он не должен иметь возможности вычислить
функцию  подтверждения  подлинности  никакого  нового  текста, не
входящего  в  состав  исходного  (или соответственно восстановить
какую-либо  часть  зашифрованного  текста,  не являющегося частью
исходного).  На  практике  критерий  "известный текст" равносилен
следующему:  если злоумышленник имеет значительный объем исходных
текстов   и   значений  функций  подтверждения  подлинности  (или
шифрованных  текстов),  соответствующих  этим  текстам,  то он не
должен  иметь  возможности  вычислить  секретный  ключ  алгоритма
шифрования,   который   использовался   для   получения   функций
подтверждения  подлинности  или  шифрованного  текста. Существуют
некоторые   практические   рекомендации  для  разработки  методов
подтверждения  подлинности  /DAVI87,  JUEN87/,  в которых функция
f(m,k)   может  быть  либо  функцией  шифрования,  либо  функцией
подтверждения  подлинности:  -  изменение любого бита сообщения m
или ключа К должно изменять около половины битов значения функции
f(m,K); -не должно существовать ни одной пары значений ключей К и
К  , 1 2 для которых функции f(m,K ) и f(m,K ) оказались близкими
в любом 1 2 смысле. Сравнение функций подтверждения подлинности и
процедур   шифрования   Шифрование   создает   основу   как   для
предотвращения   раскрытия   содержания   сообщения,  так  и  для
выявления активных действий со стороны злоумышленников (изменение
содержания   сообщения,   изменение   идентификационного   номера
получателя   и  т.п.).  Однако  в  некоторых  случаях  существуют
причины,  по которым отдается предпочтение функциям подтверждения
подлинности,  а  не  процедурам  шифрования.  Применение  функций
подтверждения  подлинности  позволяет  пользователям осуществлять
подтверждения подлинности только для части поступающих сообщений,
если  не все поступающие сообщения существенны для получателя или
чрезмерно   загружен   процессор  компьютера.  В  ситуации  когда
некоторое  сообщение передается сразу несколькими пользователями,
те,  кто  не имеет аппаратуры шифрования и дешифрования, не будут
иметь  возможности  обмениваться  сообщениями  /DEVI84/. Проблема
подмены  сообщений  /DAVI84/ Усли пользователь А послал сообщение
пользователю  В, злоумышленник может записать посланное сообщение
и  затем  послать  его  снова  В.  Пользователь  В уверен, что он
получил  сообщение  от  А.  В  этом случае ни критерий "известный
текст",  ни критерий "избранный текст" недостаточны для выявления
действий  злоумышленника.  Поэтому  пользователю  В рекомендуется
учитывать  все  поступающие  сообщения  и  при  получении  нового
сообщения  проверять,  не  поступало ли оно ранее. Для получателя
очень  важно,  чтобы  посланное  сообщения  поступали  в  той  же
последовательности,  в  которой  они были посланы; или по крайней
мере получатель должен знать порядок отправлений сообщений. Когда
В  получает сообщение от А с номером n, он проверяет, что для его
списка   номеров   выполняется   условие   n(A,B)  =  n  -  1.  В
низкоскоростных  сетях  надо  иметь в виду то обстоятельство, что
даже  без  влияния  злоумышленников  существует  вероятность, что
сообщение  с  номером  n  может прийти раньше сообщения с номером
n-1.  Если  число  пользователей  ВС  не слишком велико, то может
оказаться   полезной  следующая  модель.  Сообщения  отправленные
пользователем  А  пользователю  В,  нумеруются  последовательными
номерами.  Обозначим  функцию  числа  переданных  сообщений через
n(A,B).  Каждый  пользователь А имеет список пар {n(A,B),n(B,A)},
указывающих  на  число  переданных  сообщений между А и В. Список
Список  пользователя  А Cообщение пользователя В ----------------
(исходный  текст) --------------n(A,B)  3 n (B,A)  7 n(B,A)  6
<------  7  А  Текст --------n (A,B)  3 n(A,C)  9 n (B,D) 
1  Рис.  5.8.  Механизм  нумерации  сообщений  для предотвращения
подмен.  Рис.  5.8  поясняет  эту  ситуацию. Из него следует, что
пользователь  А  послал  3 сообщения пользователю В и 9 сообщений
пользователю  С и получил 6 сообщений от В. Пользователь В послал
7  сообщений А (последнее пользователем А еще не получено) и одно
сообщение  пользователю  D  и  получил  3  сообщения  от  А. Если
необходимо знать, послано ли сообщение m от А к В рань1 ше, после
или  одновременно с сообщением m от В к А, то А может 2 присвоить
номер   n(B,A)   сообщению,  посылаемому  пользователю  В.  Такой
механизм    нумерации   сообщений   используется   в   банковской
вычислительной сети SWIFT. В вычислительной сети с большим числом
пользователей   отдельный  субъект  не  в  состоянии  отслеживать
информацию   о  всех  взаимодействиях  в  сети.  Например,  ключи
шифрования   поддерживаются  специальным  сервером  подтверждения
подлинности. В этом случае применима следующая модель. Субъекты А
и  В  должны  обменяться по меньшей мере тремя сообщениями для В,
чтобы  была  уверенность,  что  принимаемое сообщение не является
копией   ранее   полученного.   Субъект   А   Субъект   В      
-----------------   а      В      Текст   ---------->    
<----------------   а      b     A    Текст  -------    
-----------------  b    B    Текст  -----------  Рис.  5.9.
Добавление  к  сообщению псевдослучайных чисел для предотвращения
подмен.  В  начале  А посылает В некоторое сообщение, дополненное
случайным  числом а. В свою очередь В добавляет к этому сообщению
случайное число b. Получив в ответном сообщении число а субъект А
знает,  что  это  сообщение  - действительно ответ В на посланное
раннее  ему сообщение. Следующее сообщение, которое А посылает В,
включает  число b, и В, получив его, уверен, что он действительно
имеет связь с А. Этот протокол поясняется на рис.5.9.
 

Оставит комментарий