1. Преобразование данных должно использовать в качестве параметра секретный ключ K. Его секретность определяет секретность зашифрованных данных.
2. Преобразование данных должно быть криптографически стойким, то есть не должно существовать иной возможности определить входной блок алгоритма при известном выходном и неизвестном ключе, или определить ключ при известных входном и выходном блоках иначе как перебором по возможным значениям входного блока и ключа в первом и во втором случаях соответственно.
3. Преобразование данных должно быть обратимым – для того, чтобы была осуществима процедура расшифрования.
Если шифрующее преобразование EK предполагается использовать для выработки кода аутентификации, выполнение третьего свойства не требуется, так как при этом преобразование всегда выполняется в одну сторону. Кроме того криптостойкость алгоритма преобразования может быть несколько ниже, чем при шифровании, и это не приведет к снижению надежности всей схемы. Действительно, при выработке MAC в распоряжении криптоаналитика есть только один блок данных – MAC, который является функцией сразу всех блоков исходного текста, а при зашифровании в его распоряжении есть набор блоков шифротекста, каждый из которых зависит только от одного блока исходного текста. Очевидно, в первом случае его задача существенно сложнее. Именно по этой причине в ГОСТе 28147–89 для выработки имитовставки используется упрощенный 16-раундовый цикл преобразования, тогда как для шифрования – полный 32-раундовый.
2.4. Выработка кода обнаружения манипуляций.Подход к выработке контрольной комбинации массива данных с помощью вычислительно необратимых функций получил развитие только в последнее время в связи с появлением практических схем цифровой подписи, так как по своей сути он является способом вычисления хэш-функции, которая используется во всех схемах цифровой подписи.
Существует большое количество возможных подходов к построению вычислительно необратимых функций, практически всегда самым трудным является обоснование свойства необратимости предложенной функции. Однако есть класс способов, где такое свойство не нуждается в доказательстве, оно просто следует из характеристик примененного метода – это построение функций одностороннего преобразования на основе классических блочных шифров. Данный подход известен достаточно давно и изложен в ряде работ, из русскоязычных отметим [7], в его основе лежит тот факт, что уравнение зашифрования блока данных по циклу простой замены Y=EK(X) вычислительно неразрешимо относительно ключа K – это является неотъемлемым свойством любого действительно стойкого шифра. Даже при известных открытом (X) и зашифрованном (Y) блоках ключ K не может быть определен иначе как перебором по множеству возможных значений. Алгоритм выработки контрольной комбинации для массива данных T следующий:
массив данных T разбивается на блоки фиксированного размера, равного размеру ключа используемого шифра:
T=(T1,T2,...,Tm);
|T1|=|T2|=...=|Tm–1|=|K|, 0<|Tm|£|K|.
при необходимости последний (неполный) блок дополняется каким-либо образом до блока полного размера;
MDC или хэш сообщения вычисляется по следующей формуле:
C=H(T)=ETm(ETm–1(...ET1(S))),
где S – начальное заполнение алгоритма – может выбираться произвольно, обычно полагают S=0;
Несложно доказать, что задача подбора массива данных T'=(T'1,T'2,...,T'm') под заданную контрольную комбинацию C эквивалентна следующей системе уравнений подбора ключа для заданных входного и выходного блоков данных криптоалгоритма:
ET'1(S)=S1,
ET'2(S1)=S2,
...
ET'm'(Sm'–1)=C,
Нет необходимости решать сразу все эти уравнения относительно ключа Ti' – все блоки массива данных T', кроме одного, могут быть выбраны произвольными – это определит, все значения Si, и лишь один, любой из них, должен быть определен решением соответствующего уравнения ET'i(Si–1)=Si относительно T'i. Так как данная задача вычислительно неразрешима в силу использования криптостойкого алгоритма шифрования, предложенная схема вычисления MDC обладает гарантированной стойкостью, равной стойкости используемого шифра.
Однако данная схема не учитывает проблему побочных ключей шифра, которая заключается в следующем: может существовать несколько ключей, с использованием которых при зашифровании одинаковые блоки открытого текста переводятся в одинаковые блоки шифротекста:
EK1(X)=EK2(X) при некоторых X и K1¹K2.
Один из этих ключей – тот, на котором проводилось зашифрование – «истинный», а другой – «побочный». Таким образом, побочным ключом для некоторого блока данных X и некоторого истинного ключа K называется ключ K', который дает точно такой же результат зашифрования блока X, что и истинный ключ K: EK'(X)=EK(X). Ясно, что для различных блоков исходного массива данных побочные ключи также в общем случае различны – вероятность встретить пару ключей, переводящих одновременно несколько пар одинаковых блоков открытых текстов в пары одинаковых блоков шифротекстов стремительно убывает с ростом числа этих пар. Поэтому обнаружение побочного ключа криптоаналитиком при дешифровании сообщения не является его особым успехом, так как с вероятностью, незначительно отличающейся от 1, на этом найденном ключе он не сможет правильно расшифровать никаких других блоков шифротекста. Совершенно иное дело в алгоритме выработки MDC – здесь обнаружение побочного ключа означает, что злоумышленник подобрал такой ложный, то есть отсутствующий в сообщении блок данных, использование которого приводит к истинному MDC исходного массива данных.
Для того, чтобы уменьшить вероятность навязывания ложных данных через нахождение побочных ключей, в шагах криптографического преобразования применяются не сами блоки исходного сообщения, а результат их расширения по некоторой схеме. Под схемой расширениея здесь понимается процедура построения блоков данных большего размера из блоков данных меньшего размера. Примером может служить, например, функция расширения, в которой выходной блок строится из байтов (или 2-,4-,... и т.д. -байтовых слов) исходного блока, перечисляемых в различном порядке. Указанное расширение стоит применять, если размер ключа использованного шифра в несколько раз превышает размер его блока данных. Так, для алгоритма DES, с размером блока данных 64 бита и ключа 56 бит в расширении нет необходимости. Если в схеме используется алгоритм ГОСТ28147–89 с размером блока 64 бита и размером ключа 256 бит, стоит использовать 64- или 128-битные блоки исходного текста и расширять их до размеров 256 бит. Пример функции расширения 128-битового блока в 256-битовый может быть, например, следующим:
Исходный блок: T=(B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16),
После расширения: P(T)=(B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16,
B1, B4, B7, B10, B13, B16, B3, B6, B9, B12, B15, B2, B5, B8, B11, B14),
где Bi – байты блока данных, |Bi|=8.
Схема алгоритма выработки MDC (хэш–кода) с использованием классического блочного шифра приведена на рисунке 2.
Рис. 2. Алгоритм выработки кода обнаружения манипу- ляций для массива данных. |
Шаг 0. Входные данные – массив данных T, разбитый на m блоков фиксированного размера, не превышающего размер ключа использованного криптоалгоритма и, как правило, делящего его нацело: T=(T1,T2,...,Tm). Последний блок данных Tm каким-либо способом дополняется до полного блока данных, если имеет меньший размер.
Шаг 1. MDC получает нулевое начальное значение (это значение может быть, в принципе, любым).
Последующие шаги 2 и 3 алгоритма выполняются последовательного для каждого блока исходных данных в порядке их следования.
Шаг 2. Выполняется расширение очередного блока Ti данных с помощью функции расширения P до размера ключа шифра.
Шаг 3. Выполняется зашифрование текущего значения MDC на ключе, полученном на шаге 2, результат становится новым текущим значением MDC.
Шаг 4. Результатом работы алгоритма (т.е. MDC для всего входного массива данных) является последнее текущее значение MDC, полученное на шаге 3.
Рассмотренный алгоритм также может быть использован для выработки хэш–кода в схемах цифровой подписи.
3. Цифровая подпись на основе традиционных блочных шифров.На первый взгляд, сама эта идея может показаться абсурдом. Действительно, общеизвестно, что так называемая «современная», она же двухключевая криптография возникла и стала быстро развиваться в последние десятилетия именно потому, что ряд новых криптографических протоколов типа протокола цифровой подписи, в которых возникла острая необходимость в связи с проникновением электронных технологий в новые сферы, не удалось реализовать на базе традиционных криптоалгоритмов, широко известных и хорошо изученных к тому времени. Тем не менее, это возможно. И первые, кто обратил внимание на такую возможность, были … родоначальники криптографии с открытым ключом У.Диффи (W.Diffie) и М.Е.Хеллман (M.E.Hellman). В своей работе [8] они опубликовали описание подхода, позволяющего выполнять процедуру цифровой подписи одного бита с помощью блочного шифра. Прежде чем изложить эту изящную идею, сделаем несколько замечаний о сути и реализациях цифровой подписи.
3.1. Что такое цифровая подпись.Итак, схема цифровой подписи или электронно-цифровой подписи – это набор алгоритмов и протоколов[1], позволяющих построить информационное взаимодействие между двумя и более участниками таким образом, чтобы факт авторства переданного массива данных, «подписанного» одним из участников, мог быть надежно подтвержден или опровергнут третьей стороной, «независимым арбитражем». Подобная схема необходима для всех систем электронной обработки данных, где нет полного взаимного доверия между участниками информационного процесса, прежде всего это касается финансовой сферы. Любая схема цифровой подписи предполагает добавление к «подписываемому» массиву данных дополнительного кода – собственно «цифровой подписи», выработать который может только автор сообщения, обладающий секретным ключом подписи, а все остальные могут лишь проверить соответствие этой «подписи» подписанным данным. Поэтому каждая схема должна предусмотреть, как минимум, определение трех следующих алгоритмов:
1. Алгоритм GK выработки пары ключей – подписи KS и проверки подписи KC с использованием вектора случайных параметров R: (KS,KC)=GK(R), здесь:
KS – ключ подписи, он должен быть известен только подписывающему;
KC – ключ проверки подписи, он не является секретным и доступен каждому, кто должен иметь возможность проверять авторство сообщений.
2. Алгоритм S подписи сообщения T с использованием секретного ключа подписи KS:
s=S(T,KS),
где s – цифровая подпись сообщения;
3. Алгоритм V проверки подписи с использованием ключа проверки подписи KC, выдающий в качестве результата булево значение – подтверждается или не подтверждается авторство сообщения:
V(T,s,KC)Î{0,1}.
На практике логический результат всегда получают как результат сравнения двух чисел, или кодов, или блоков данных – речь об одном и том же. Практически во всех известных схемах цифровой подписи это сравнение производят следующим образом:
вычисляют контрольную комбинацию по некоторому алгоритму C с использованием подписанного сообщения и цифровой подписи:
c=C(T,s);
сравнивают контрольную комбинацию c и ключ проверки подписи KC, если они совпадают, то подпись признается верной, а данные – подлинными, в противном случае данные считаются ложными.
Собственно говоря, указанных трех алгоритмов достаточно для реализации схемы цифровой подписи, однако на практике в схемы добавляют еще один алгоритм – функцию выработки хэш–блока для подписываемого массива данных T. Большинство криптографических алгоритмов оперируют блоками данных фиксированного размера, а массивы большего размера обрабатывают по частям, что необходимо для обеспечения эффективности и надежности этих схем. Если такой же подход использовался при выработке цифровой подписи, блоки массивов информации подписывались бы отдельно друг от друга, и размер подписи оказался бы сравнимым с размером подписываемого массива данных, что по вполне понятным причинам не удобно. Поэтому в практических схемах ЭЦП подписывается не само сообщение, а его хэш–код, то есть результат вычисления функции необратимого сжатия для этого массива, который имеет фиксированный размер. Таким образом, в схему ЭЦП добавляется четвертый алгоритм:
4. Алгоритм H вычисления необратимой хэш–функции для подписываемых массивов:
h=H(T).
Алгоритм вычисления хэш–функции и прочие алгоритмы схемы не зависят друг от друга и согласуются только по размеру блоков, которыми они оперируют. Это позволяет при необходимости менять в схеме подписи способ вычисления хэш–значений.
Для работоспособной схемы электронно-цифровой подписи необходимо выполнение следующих условий:
никто, кроме лица, обладающего секретным ключом подписи KS, не может корректно подписать заданное сообщение T;
Поскольку сторона, проверяющая подпись, обладает открытым ключом KC проверки подписи, из указанного свойства следует, что не должно существовать вычислительно эффективного алгоритма вычисления секретного ключа KS по открытому KC.
никто, включая лицо, обладающее ключом подписи, не в состоянии построить сообщение T', подходящее под наперед заданную подпись s.
При предложении какой-либо схемы подписи оба эти свойства необходимо доказывать, что делается обычно доказательством равносильности соответствующей задачи вскрытия схемы какой-либо другой, о которой известно, что она вычислительно неразрешима. Практически все современные алгоритмы цифровой подписи и прочие схемы «современной криптографии» основаны на так называемых «сложных математических задачах» типа факторизации больших чисел или логарифмирования в дискретных полях. Однако доказательство невозможности эффективного вычислительного решения этих задач отсутствует, и нет никаких гарантий, что они не будут решены в ближайшем будущем, а соответствующие схемы взломаны – как это произошло с «ранцевой» схемой цифровой подписи [9]. Более того, с бурным прогрессом средств вычислительных техники «границы надежности» методов отодвигаются в область все больших размеров блока. Всего пару десятилетий назад, на заре криптографии с открытым ключом считалось, что для реализации схемы подписи RSA достаточно 128- или даже битовых чисел. Сейчас эта граница отодвинута до 1024-битовых чисел – практически на порядок, – и это далеко еще не предел. Надо ли объяснять, что с каждой такой «подвижкой» приходится перепроектировать аппаратуру и переписывать программы, реализующие схему. Ничего подобного нет в области классических блочных шифров, если не считать изначально ущербного и непонятного решения комитета по стандартам США ограничить размер ключа алгоритма DES 56-ю битами, тогда как еще во время обсуждения алгоритма предлагалось использовать ключ большего размера [5]. Схемы подписи, основанные на классических блочных шифрах, свободны от указанных недостатков:
во-первых, их стойкость к попыткам взлома вытекает из стойкости использованного блочного шифра;
Надо ли говорить, что классические методы шифрования изучены гораздо больше, а их надежность обоснована неизмеримо лучше, чем надежность методов «современной криптографии».
во-вторых, даже если стойкость использованного в схеме подписи шифра окажется недостаточной в свете прогресса вычислительной техники, его легко можно будет заменить на другой, более устойчивый, с тем же размером блока данных и ключа, без необходимости менять основные характеристики всей схемы – это потребует только минимальной модификации программного обеспечения;
3.2. Базовая идея Диффи и Хеллмана.Итак, вернемся к схеме Диффи и Хеллмана подписи одного бита сообщения с помощью алгоритма, базирующегося на любом классическом блочном шифре. Предположим, в нашем распоряжении есть алгоритм зашифрования EK, оперирующий блоками данных X размера n и использующий ключ размером nK: |X|=n, |K|=nK. Структура ключевой информации в схеме следующая:
секретный ключ подписи KS выбирается как произвольная пара ключей K0, K1 используемого блочного шифра:
KS=(K0,K1);
Таким образом, размер ключа подписи равен удвоенному размеру ключа использованного блочного шифра:
|KS|=2|K|=2nK
ключ проверки вычисляется как пара блоков криптоалгоритма по следующим уравнениям:
KC=(C0,C1), где:
C0=EK0(X0), C1=EK1(X1),
где являющиеся параметром схемы блоки данных X0 и X1 несекретны и известны проверяющей подпись стороне.
Таким образом, размер ключа проверки подписи равен удвоенному размеру блока использованного блочного шифра:
|KC|=2|X|=2n.
Алгоритмы схемы цифровой подписи Диффи и Хеллмана следующие:
1. Алгоритм G выработки ключевой пары:
Берем случайный блок данных размера 2nK, это и будет секретный ключ подписи:
KS=(K0,K1)=R.
Ключ проверки подписи вычисляем как результат двух циклов зашифрования по алгоритму EK:
KC=(C0,C1)=(EK0(X0),EK1(X1)).
2. Алгоритм S выработки цифровой подписи для бита t (t Î{0,1}) заключается просто в выборе соответствующей половины из пары, составляющей секретный ключ подписи:
s=S(t)=Kt.
3. Алгоритм V проверки подписи состоит в проверке уравнения EKt(Xt)=Ct, которое, очевидно, должно выполняться для нашего t. Получателю известны все используемые величины:
Kt=s – цифровая подпись бита,
Ct – соответствующая половина ключа проверки,
Xt – несекретный параметр алгоритма.
Таким образом, функция проверки подписи будет следующей:
.
Не правда ли, все три алгоритма этой схемы изумительно простоты в сравнении со схемами RSA и эль-Гамаля?! Покажем, что данная схема работоспособна, для чего проверим выполнение необходимых свойств схемы цифровой подписи:
... не к ключам!) и поэтому может зашифровывать и дешифровывать любую информацию; 2.7 Выводы по разделу 2. Подводя итоги вышесказанного, можно уверенно заявить, что криптографическими системами защиты называються совокупность различных методов и средств, благодаря которым исходная информация кодируеться, передаеться и расшифровываеться. Существуют различные криптографические системы защиты, ...
... симметричные (одноключевые) криптосистемы; · асимметричные (двухключевые) криптосистемы (с открытым ключом). Схема симметричной криптосистемы с одним секретным ключом показана на рис.2. В ней используются одинаковые секретные ключи в блоке шифрования и блоке расшифрования. Обобщенная схема асимметричной криптосистемы с двумя разными ключами и показана на рис. 3. Рис. 3. ...
... является допустимым для устройства подобного рода. 5.3 Вывод В результате анализа параметров энергосбережения было выявлено то, что при реализации системы аутентификации пользователя транспортного средства нельзя обойтись без анализа энергопотребления системы и поиска путей уменьшения этого параметра. Изначально спроектированная система вызывала бы дискомфорт у пользователя за счёт излишне малого ...
... схема устройства для аппаратного шифрования информации, которая соответствует приведенным выше требованиям, изображена на рисунке 1.9. Рис. 1.9 – Структурная схема устройства аппаратного шифрования 2. РАЗРАБОТКА СХЕМОТЕХНИЧЕСКОЙ РЕАЛИЗАЦИИ АППАРАТНОГО ШИФРАТОРА 2.1 Выбор элементной базы для шифратора Согласно техническому заданию, элементная база для аппаратного шифратора должна ...
0 комментариев