В чем состоит проблема аутентификации данных?
В конце обычного письма или документа исполнитель или ответственное лицо обычно ставит свою подпись. Подобное действие обычно преследует две цели. Во-первых, получатель имеет возможность убедиться в истинности письма, сличив подпись с имеющимся у него образцом. Во-вторых, личная подпись является юридическим гарантом авторства документа. Последний аспект особенно важен при заключении разного рода торговых сделок, составлении доверенностей, обязательств и т.д.
Если подделать подпись человека на бумаге весьма непросто, а установить авторство подписи современными криминалистическими методами - техническая деталь, то с подписью электронной дело обстоит иначе. Подделать цепочку битов, просто ее скопировав, или незаметно внести нелегальные исправления в документ сможет любой пользователь.
С широким распространением в современном мире электронных форм документов (в том числе и конфиденциальных) и средств их обработки особо актуальной стала проблема установления подлинности и авторства безбумажной документации.
В разделе криптографических систем с открытым ключом было показано, что при всех преимуществах современных систем шифрования они не позволяют обеспечить аутентификацию данных. Поэтому средства аутентификации должны использоваться в комплексе и криптографическими алгоритмами.
Итак, пусть имеются два пользователя Александр и Борис. От каких нарушений и действий злоумышленника должна защищать система аутентификации.
Отказ (ренегатство).
Александр заявляет, что он не посылал сообщение Борису, хотя на самом деле он все-таки посылал.
Для исключения этого нарушения используется электронная (или цифровая) подпись.
Модификация (переделка).
Борис изменяет сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Подделка.
Борис формирует сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Активный перехват.
Владимир перехватывает сообщения между Александром и Борисом с целью их скрытой модификации.
Для защиты от модификации, подделки и маскировки используются цифровые сигнатуры.
Маскировка (имитация).
Владимир посылает Борису сообщение от имени Александра .
В этом случае для защиты также используется электронная подпись.
Повтор.
Владимир повторяет ранее переданное сообщение, которое Александра посылал ранее Борису . Несмотря на то, что принимаются всевозможные меры защиты от повторов, именно на этот метод приходится большинство случаев незаконного снятия и траты денег в системах электронных платежей.
Наиболее действенным методом защиты от повтора являются
-
использование имитовставок,
-
учет входящих сообщений.
Возможные нарушения защиты сообщений,. посылаемых пользователем А пользователю В.
Электронная подпись на основе алгоритма RSA
Наиболее простым и распространенным инструментом электронной подписи является уже знакомый алгоритм RSA. Ниже оно будет рассмотрена в качестве примера. Кроме этого существуют еще десятки других схем цифровой подписи.
Предположим, что
d,p,q - секретные, а е, n=pq - открытые.
Замечания.
1. Разложение по n дает: (n)=(p-1)(q-1); зная (n) и e, можно найти d.
2. Из e и d можно найти кратность (n); кратность (n) позволяет определить делители n.
Пусть DATA - передаваемое Александром Борису сообщение.
Александр подписывает DATA для Бориса при передаче :
EeB,nB { EdA,nA {DATA}}.
При этом он использует:
-
закрытый ключ EdA,nA Александра,
-
открытый ключ EeB,nB Бориса.
Борис может читать это подписанное сообщение сначала при помощи закрытого ключа EdВ,nВ Бориса с целью получения
EdA,nA {DATA} = EdB,nB {EeB,nB {EdA,nA {DATA}}}
и затем - открытого ключа EeA,nA Александра для получения
DATA = EeA,nA { EdA,nA {DATA}}.
Таким образом, у Бориса появляется сообщение DATA, посланное ему Александром.
Очевидно, что данная схема позволяет защититься от нескольких видов нарушений.
Александр не может отказаться от своего сообщения, если он признает, что секретный ключ известен только ему.
Нарушитель без знания секретного ключа не может ни сформировать, ни сделать осмысленное изменение сообщения, передаваемого по линии связи.
Данная схема позволяет при решении многих конфликтных ситуаций обходиться без посредников.
Иногда нет необходимости зашифровывать передаваемое сообщение, но нужно его скрепить электронной подписью. В этом случае текст шифруется закрытым ключом отправителя и полученная цепочка символов прикрепляется к документу. Получатель с помощью открытого ключа отправителя расшифровывает подпись и сверяет ее с текстом.
Исходный текст
Исходный текст
Исходный текст
Подпись
Исходный текст ’
В 1991 г. Национальный институт стандартов и технологии (NIST) предложил для появившегося тогда алгоритма цифровой подписи DSA (Digital Signature Algorithm) стандарт DSS (Digital Signature Standard), в основу которого положены алгоритмы Эль-Гамаля и RSA. 13
Цифровая сигнатура
Часто возникают ситуации, когда получатель должен уметь доказать подлинность сообщения внешнему лицу. Чтобы иметь такую возможность, к передаваемым сообщениям должны быть приписаны так называемые цифровые сигнатуры.
Цифровая сигнатура - это строка символов, зависящая как от идентификатора отправителя, так и содержания сообщения.
сообщение
сигнатура
Цифровая сигнатура
Никто при этом кроме пользователя А не может вычислить цифровую сигнатуру А для конкретного сообщения. Никто, даже сам пользователь не может изменить посланного сообщения так, чтобы сигнатура осталась неизменной. Хотя получатель должен иметь возможность проверить является ли цифровая сигнатура сообщения подлинной. Чтобы проверить цифровую сигнатуру, пользователь В должен представить посреднику С информацию, которую он сам использовал для верификации сигнатуры.
Если помеченное сигнатурой сообщение передается непосредственно от отправителя к получателю, минуя промежуточное звено, то в этом случае идет речь об истинной цифровой сигнатуре.
Рассмотрим типичную схему цифровой сигнатуры.
Пусть Е - функция симметричного шифрования и f - функция отображения некоторого множества сообщений на подмножество мощности р из последовательности {1, ..., n}.
Например р=3 и n=9. Если m - сообщение , то в качестве f можно взять функцию f(m) = {2, 5, 7}.
Для каждого сообщения пользователь А выбирает некоторое множество ключей K=[K1, ..., Kn} и параметров V={v1, ...,vn} для использования в качестве пометок сообщения, которое будет послано В. Множества V и V’={E(v1,K1) ..., E(vn,Kn)} посылаются пользователю В и заранее выбранному посреднику С.
Пусть m - сообщение и idm - объединение идентификационных номеров отправителя, получателя и номера сообщения. Если f({idm, m}), то цифровая сигнатура m есть множество K’=[Ki, ..., Kj}. Сообщение m, идентификационный номер idm и цифровая сигнатура К’ посылаются В.
V, V'
сообщение, K'
V, V'
Получатель В проверяет сигнатуру следующим образом. Он вычисляет функцию f({idm, m}) и проверяет ее равенство К’. Затем он проверяет, что подмножество {vi, ...,vj} правильно зашифровано в виде подмножества {E(vi,Ki) ..., E(vj,Kj)} множества V’.
В конфликтной ситуации В посылает С сообщение m, идентификационный номер idm и множество ключей K’, которое В объявляет сигнатурой m. Тогда посредник С так же, как и В, будет способен проверить сигнатуру. Вероятность раскрытия двух сообщений с одним и тем же значением функции f должна быть очень мала. Чтобы гарантировать это, число n должно быть достаточно большим, а число р должно быть больше 1, но меньше n.
Ряд недостатков этой модели очевиден:
-
должно быть третье лицо - посредник, которому доверяют как получатель, так и отправитель;
-
получатель, отправитель и посредник должны обменяться существенным объемом информации, прежде чем будет передано реальное сообщение;
-
передача этой информации должна осуществляться в закрытом виде;
-
эта информация используется крайне неэффективно, поскольку множества K, V, V’ используются только один раз.
Тем не менее даже такая схема цифровой сигнатуры может использоваться в информационных системах, в которых необходимо обеспечить аутентификацию и защиту передаваемых сообщений.
Хэш-функции
Использование цифровой сигнатуры предполагает использование некоторых функций шифрования:
S = H(k, T),
где S - сигнатура, k - ключ, T - исходный текст.
Функция H(k, T) - является хэш-функцией, если она удовлетворяет следующим условиям:
-
исходный текст может быть произвольной длины;
-
само значение H(k, T) имеет фиксированную длину;
-
значение функции H(k, T) легко вычисляется для любого аргумента;
-
восстановить аргумент по значению с вычислительной точки зрения - практически невозможно;
-
функция H(k, T) - однозначна14.
Из определения следует, что для любой хэш-функции есть тексты-близнецы - имеющие одинаковое значение хэш-функции, так как мощность множества аргументов неограниченно больше мощности множества значений. Такой факт получил название «эффект дня рождения».15
Наиболее известные из хэш-функций - MD2, MD4, MD5 и SHA.
Три алгоритма серии MD разработаны Ривестом в 1989-м, 90-м и 91-м году соответственно. Все они преобразуют текст произвольной длины в 128-битную сигнатуру.
Алгоритм MD2 предполагает:
-
дополнение текста до длины, кратной 128 битам;
-
вычисление 16-битной контрольной суммы (старшие разряды отбрасываются);
-
добавление контрольной суммы к тексту;
-
повторное вычисление контрольной суммы.
Алгоритм MD4 предусматривает:
-
дополнение текста до длины, равной 448 бит по модулю 512;
-
добавляется длина текста в 64-битном представлении;
-
512-битные блоки подвергаются процедуре Damgard-Merkle16, причем каждый блок участвует в трех разных циклах.
В алгоритме MD4 довольно быстро были найдены «дыры», поэтому он был заменен алгоритмом MD5, в котором каждый блок участвует не в трех, а в четырех различных циклах.
Алгоритм SHA (Secure Hash Algorithm) разработан NIST (National Institute of Standard and Technology) и повторяет идеи серии MD. В SHA используются тексты более 264 бит, которые закрываются сигнатурой длиной 160 бит. Данный алгоритм предполагается использовать в программе Capstone17.
Достарыңызбен бөлісу: |