Криптография с открытым ключом

         

Дайджесты


Чтобы получатель мог убедиться в подлинности полученного сообщения, отправитель ставит на нем свою электронную подпись. Сначала пользователь при помощи математической хэш-функции получает уникальный отпечаток (дайджест) сообщения. После шифрования дайджеста секретным ключом создается сигнатура, которая отправляется вместе с сообщением. Получатель декодирует сообщение и восстанавливает дайджест с помощью той же хэш-функции. Декодирование сигнатуры открытым ключом отправителя помогает воссоздать прежний образ дайджеста. Если дайджесты совпадают, получатель может быть уверен в том, что сообщение действительно было отправлено тем человеком, который поставил на нем свою электронную подпись, и не подвергалось в пути никаким изменениям.


Таким образом, технология шифрования с открытым ключом обеспечивает целостность и достоверность информации. Кроме того, впоследствии отправитель уже не сможет отрицать факт пересылки данного сообщения.


Создание цифровых подписей

Предположим, Алиса создает свой собственный ключ шифрования Ea и соответствующий ключ дешифрования Da. Пусть Алиса держит в секрете Ea и публикует Da. Несекретный ключ дешифрования Алисы можно поместить в справочник, содержащий все несекретные (открытые) числа, доступные всем. Если Алиса хочет послать подписанное сообщение Бобу, она вычисляет известную хэш-функцию сообщения, называемую иногда код MDC. Сообщение может быть произвольным, а хэш-функция сообщения имеет фиксированную длину, обычно около 512 бит. Любая хорошая хэш-функция обладает таким свойством, что нельзя найти два сообщения, преобразуемые в одну и ту же вычисленную хэш-функцию. Функция несекретна и известна всем. Подпись Алисы для сообщения - это зашифрованная хэш-функция: S=Ea(H), где H - хэш-функция сообщения; S - подпись Алисы.

 

Проверка цифровых подписей

Когда Боб получает подписанное сообщение Алисы, он может проверить аутентичность подписи Алисы и целостность сообщения. Боб вычисляет хэш-функцию полученного сообщения H'. Затем он берет из справочника несекретный ключ дешифрования Алисы Da для получения хэш-функции Н, вычисленной Алисой: H=Da(S), и сравнивает H и Н'. Если обе функции совпадают, он делает выводы: - сообщение подписала Алиса; - сообщение не было изменено после того, как его подписала Алиса. Таким образом, не зная никаких секретных данных Алисы, Боб может проверить аутентичность ее подписи и целостность сообщения. Более того, он не может подделать подпись Алисы.


Сертификационный центр

Использование справочника можно заменить сертификационным центром (СС), который действует как нотариальная служба, заверяющая все открытые ключи дешифрования. Пусть СС имеет собственный секретный ключ шифрования Eo и соответствующий несекретный ключ Do, известный всем. Do может быть опубликован в газете, телефонном справочнике или заложен в аппаратуре, проверяющей подписи. Алиса получает сертификат своего открытого ключа дешифрования Da. Сперва она идентифицирует себя в Центре. Затем Центр шифрует открытый ключ дешифрования Алисы для получения сертификата Ca=Eo(Da), который выдается Алисе. Поскольку каждый имеет ключ дешифрования СС Do, то из сертификата Са можно получить несекретный ключ дешифрования Алисы Da=Do(Ca). Более того, это лицо будет уверено в том, что ключ дешифрования принадлежит Алисе, поскольку только Сертификационный центр мог создать сертификат.

Предполагается, что имя Алисы также включается в сертификат, поэтому дешифрованное открытое число отождествляется с Алисой. Если Алиса имеет сертификат, она может добавить его к своим подписанным сообщениям. Это позволит Бобу (или кому-либо) проверить подпись Алисы без обращения к справочнику. Сертификат содержит открытую функцию дешифрования Алисы в защищенном виде. В этом случае подписанное сообщение Алисы состоит из сообщения, подписи и сертификата Алисы. Проверка Бобом сообщения аналогична, с той лишь разницей, что открытый ключ дешифрования Алисы Боб получает не из справочника, а из сертификата.

Используемые источники:

Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. СПб.:изд. «Лань», 2000. –224 с.

Эндрю Ксингер, Кенг Сяу. Глобальная инфраструктура открытых ключей
http://lib.khsu.ru/113/903.html

Майк Ротман. Шифрование открытым ключом для чайников

http://lib.khsu.ru/113/904.html

Дж. Чандлер. Cryptography 101

http://www.bcsv.ru/support/educate/networks/internet/misc/crypto_1.htm

IEEE Communication Magazine, May 1990 Omura J.K. Novel Applications of Cryptography in Digital Communications

http://www.security.ukrnet.net/data.cgi?tema=5.&src=omura1.ist

А.Н.Терехов, А.В.Тискин. Программирование РАН, N 5 (сентябрь-октябрь), 1994, стр. 17--22
Криптография с открытым ключом: от теории к стандарту



http://www1.tepkom.ru/users/ant/Articles/Pkcstand.html

 

Шифрование с открытыми ключами

http://www.sibline.ru/e/result.htm?rID=82

Электронная цифровая подпись

http://www.sibline.ru/e/result.htm?rID=83


Криптография с открытым ключом


Криптография с открытым ключом

Автор: Комкин С.А., гр.8331

В 1976 г. У.Диффи и М.Хеллманом был предложен новый тип криптографической системы - система с открытым ключом [public key cryptosystem]. В схеме с открытым ключом имеется два ключа, открытый [public] и секретный [private, secret], выбранные таким образом, что их последовательное применение к массиву данных оставляет этот массив без изменений.

Диффи и Хеллман ввели понятие односторонней функции с потайным ходом, в качестве которой использовали функцию дискретного возведения в степень

f(x) =  ?x (mod p),

где x – целое число, 1 ? x ? p-1, p – k-битовое простое число. Причем выбирается такое число ? < p, степени которого по модулю p представляют собой упорядоченное множество чисел {?1,?2,…,?p-1}, являющееся некоторой перестановкой чисел {1,2,…,p-1}. (Такое число ? называется первообразным корнем по модулю p).

            Даже для очень больших модулей p (например, при k = 1024 бит) для данного x легко вычислить значение этой функции. Эта процедура называется дискретным возведением в степень. Для ее выполнения достаточно выполнить около 2log2p операций умножения k-битовых чисел (или log2p умножений и log2p делений 2k-битовых чисел на k-битовые). Процедура дискретного возведения в степень основана на предварительном вычислении значений (по модулю p)

?1,?2,?4,?8,…,?2k-1.

Обратной к функции дискретного возведения в степень является функция f -1(y), которая ставит в соответствие заданному значению y такое значение x, для которого выполняется условие ?x = y (mod p). Задачей нахождения такого х является задача дискретного логарифмирования. Дискретные логарифмы сложно вычисляются, когда число p–1 содержит один большой простой множитель, например, когда оно представимо в виде  p–1 = 2p?, где p? – простое число. При этом условии трудоемкость задачи нахождения дискретного логарифма равна примерно умножений по модулю p. Решение такой задачи является вычислительно неосуществимым при больших значениях k (например при k ? 512), а следовательно при указанных условиях, накладываемых на выбор чисел p и ?, функция дискретного возведения в степень является односторонней.


Шифрующая процедура использует открытый ключ, дешифрующая - секретный. Дешифрование кода без знания секретного ключа практически неосуществимо; в частности, практически неразрешима задача вычисления секретного ключа по известному открытому ключу. Основное преимущество криптографии с открытым ключом - упрощенный механизм обмена ключами. При осуществлении коммуникации по каналу связи передается только открытый ключ, что делает возможным использование для этой цели обычного канала и устраняет потребность в специальном защищенном канале для передачи ключа. В алгоритмах с открытым ключом можно зашифровать сообщение и не иметь возможности его расшифровать, и, наоборот, можно расшифровать принятое сообщение, но не знать, как оно было зашифровано.

Таким образом, шифрование с открытым ключом гарантирует конфиденциальность

Например, пользователь создал ключи шифрования и дешифрования Е и D. Шифрование сообщения "DATA" на ключе Ea показывается так: E(DATA)=ENDATA, а дешифрование на ключе D - D(ENDATA)=DATA. Предполагается, что знание D не раскрывает E и наоборот. Если опубликовать ключ шифрования, то любой пользователь может зашифровать сообщение на этом ключе, но только пользователи, обладающие соответствующим ключом дешифрования могут расшифровать эти сообщения. С другой стороны, если пользователь сохраняет в тайне ключ шифрования и публикует соответствующий ключ дешифрования, то любое лицо с помощью этого ключа может не только дешифровать сообщения, зашифрованные пользователем, но и убедиться в том, что сообщение не было изменено. Только пользователь, имеющий ключ шифрования, мог создать это сообщение. Это свойство, однозначно определяющее источник сообщения, позволяет пользователю, имеющему секретный ключ шифрования, посылать "подписанные" сообщения.