Схема аутентификации на основе сертификата. — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Схема аутентификации на основе сертификата.

2018-01-29 203
Схема аутентификации на основе сертификата. 0.00 из 5.00 0 оценок
Заказать работу

Данная схема предполагает наличие третьей стороны, называемой УЦ – удостоверяющим центром или ЦС – центром сертификации, которая выдает удостоверения (сертификаты) всем участникам сетевого домена, входящего в зону действия данного ЦС. При регистрации нового пользователя или сервера в домене ЦС выдает новому участнику сертификат, состоящий из открытой части, содержащий такие данные как:

  1. Идентификатор владельца сертификата,
  2. Адрес владельца сертификата,
  3. Открытый ключ владельца сертификата,
  4. Категория владельца сертификата (например, пользователь с ограниченными полномочиями или администратор проекта).
  5. Наименование ЦС и его адрес,
  6. Алгоритмы, используемые для генерации ключей и формирования ЭЦП, и их версии,

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

Обе части выдаются соискателю в электронном виде в виде одного файла. Закрытая часть служит для того, чтобы нельзя было подделать сертификат.

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

Кроме того, открытая часть сертификата может выдана в виде бумажного документа, подтвержденного печатью ЦС.

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

Программирование хеш-функций в Delphi

Система Delphi обращается к встроенным средствам операционной системы Windows для программирования различных функций хеширования, методов шифрования с использованием классической и двухключевой криптографии. Большинство этих средств содержится в библиотеках advapi32.dll и crypt32.dll, которые должны быть подключены к проекту Delphi. Для этого в проект приложения надо добавить модуль Wcrypt2.pas, который можно скачать по адресу

/zip/headerCryptoAPI.rar. Как воспользоваться этим модулем в проекте Delphi можно прочитать в статье Ю.Спектора

/asp/viewitem.asp?catalogID=1271.

Если нет необходимости использовать все возможности этих библиотек, то можно воспользоваться готовой программой для хеш-функции MD5 (см. прил.в конце).

Указания к выполнению лабораторной работе.

Лабораторная работа 4 состоит из двух частей, каждая из которых выполняется в одной форме Delphi.

  • В первой части следует разработать клиент-серверное приложение для удаленной аутентификации пользователей на компьютере-сервере согласно номеру своего варианта. Для этого используйте разработку, выполненную в лабораторной работе 2.
  • Во второй части надо выполнить написать приложение, представляющее работу Центра Сертификации X.509 по выдаче сертификатов X.509 другим пользователям сети по их запросам.

ВАРИАНТЫ ЗАДАНИЙ

Четные варианты. Разработать приложение, осуществляющее аутентификацию пользователей на основе слова-вызова.

Нечетные варианты. Разработать приложение, осущеставляющее аутентификацию пользователей на основе электронно-цифровой подписи, генерируемой с помощью метода RSA.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Что такое аутентификация? Перечислите основные методы аутентификации.
  2. Что такое хеш-преобразование? Перечислите основные свойства хеш-функций.
  3. В чем заключается аутентификация на основе слова-вызова?
  4. Что такое электронно-цифровая подпись? Как она формируется?
  5. Как выполняется проверка послания, подписанного ЭЦП?
  6. Что такое сертификация X.509? Каковые преимущества имеет аутентификация на основе сертификатов по сравнению с другими видами сертификации?
  7. Что входит в состав сертификата?
  8. Какие основные фунции выполняется Центр Сертификации X.509?
  9. Сколько различных ключей используется в процедуре аутентификация на основе сертификатов, и каким образом распространяются эти ключи?
  10. Каким образом осуществляется проверка подлинности сертификата?

Приложение 1. Текст хеш-функции MD5.

Function md5(s:string):string;

var a:array[0..15] of byte;

i:integer; lenhi, lenlo: longword;

index: dword;

hashbuffer: array[0..63] of byte;

currenthash: array[0..3] of dword;

procedure burn;

begin

lenhi:= 0; lenlo:= 0; index:= 0;

fillchar(hashbuffer,sizeof(hashbuffer),0);

fillchar(currenthash,sizeof(currenthash),0);

end;

procedure init;

begin

burn; currenthash[0]:= $67452301;

currenthash[1]:= $efcdab89;

currenthash[2]:= $98badcfe;

currenthash[3]:= $10325476;

end;

function lrot32(a, b: longword): longword;

begin

result:= (a shl b) or (a shr (32-b));

end;

procedure compress;

var data: array[0..15] of dword;

a, b, c, d: dword;

Begin

move(hashbuffer,data,sizeof(data));

a:= currenthash[0]; b:= currenthash[1];

c:= currenthash[2]; d:= currenthash[3];

a:= b + lrot32(a + (d xor (b and (c xor d))) + data[ 0] + $d76aa478,7);

d:= a + lrot32(d + (c xor (a and (b xor c))) + data[ 1] + $e8c7b756,12);

c:= d + lrot32(c + (b xor (d and (a xor b))) + data[ 2] + $242070db,17);

b:= c + lrot32(b + (a xor (c and (d xor a))) + data[ 3] + $c1bdceee,22);

a:= b + lrot32(a + (d xor (b and (c xor d))) + data[ 4] + $f57c0faf,7);

d:= a + lrot32(d + (c xor (a and (b xor c))) + data[ 5] + $4787c62a,12);

c:= d + lrot32(c + (b xor (d and (a xor b))) + data[ 6] + $a8304613,17);

b:= c + lrot32(b + (a xor (c and (d xor a))) + data[ 7] + $fd469501,22);

a:= b + lrot32(a + (d xor (b and (c xor d))) + data[ 8] + $698098d8,7);

d:= a + lrot32(d + (c xor (a and (b xor c))) + data[ 9] + $8b44f7af,12);

c:= d + lrot32(c + (b xor (d and (a xor b))) + data[10] + $ffff5bb1,17);

b:= c + lrot32(b + (a xor (c and (d xor a))) + data[11] + $895cd7be,22);

a:= b + lrot32(a + (d xor (b and (c xor d))) + data[12] + $6b901122,7);

d:= a + lrot32(d + (c xor (a and (b xor c))) + data[13] + $fd987193,12);

c:= d + lrot32(c + (b xor (d and (a xor b))) + data[14] + $a679438e,17);

b:= c + lrot32(b + (a xor (c and (d xor a))) + data[15] + $49b40821,22);

a:= b + lrot32(a + (c xor (d and (b xor c))) + data[ 1] + $f61e2562,5);

d:= a + lrot32(d + (b xor (c and (a xor b))) + data[ 6] + $c040b340,9);

c:= d + lrot32(c + (a xor (b and (d xor a))) + data[11] + $265e5a51,14);

b:= c + lrot32(b + (d xor (a and (c xor d))) + data[ 0] + $e9b6c7aa,20);

a:= b + lrot32(a + (c xor (d and (b xor c))) + data[ 5] + $d62f105d,5);

d:= a + lrot32(d + (b xor (c and (a xor b))) + data[10] + $02441453,9);

c:= d + lrot32(c + (a xor (b and (d xor a))) + data[15] + $d8a1e681,14);

b:= c + lrot32(b + (d xor (a and (c xor d))) + data[ 4] + $e7d3fbc8,20);

a:= b + lrot32(a + (c xor (d and (b xor c))) + data[ 9] + $21e1cde6,5);

d:= a + lrot32(d + (b xor (c and (a xor b))) + data[14] + $c33707d6,9);

c:= d + lrot32(c + (a xor (b and (d xor a))) + data[ 3] + $f4d50d87,14);

b:= c + lrot32(b + (d xor (a and (c xor d))) + data[ 8] + $455a14ed,20);

a:= b + lrot32(a + (c xor (d and (b xor c))) + data[13] + $a9e3e905,5);

d:= a + lrot32(d + (b xor (c and (a xor b))) + data[ 2] + $fcefa3f8,9);

c:= d + lrot32(c + (a xor (b and (d xor a))) + data[ 7] + $676f02d9,14);

b:= c + lrot32(b + (d xor (a and (c xor d))) + data[12] + $8d2a4c8a,20);

a:= b + lrot32(a + (b xor c xor d) + data[ 5] + $fffa3942,4);

d:= a + lrot32(d + (a xor b xor c) + data[ 8] + $8771f681,11);

c:= d + lrot32(c + (d xor a xor b) + data[11] + $6d9d6122,16);

b:= c + lrot32(b + (c xor d xor a) + data[14] + $fde5380c,23);

a:= b + lrot32(a + (b xor c xor d) + data[ 1] + $a4beea44,4);

d:= a + lrot32(d + (a xor b xor c) + data[ 4] + $4bdecfa9,11);

c:= d + lrot32(c + (d xor a xor b) + data[ 7] + $f6bb4b60,16);

b:= c + lrot32(b + (c xor d xor a) + data[10] + $bebfbc70,23);

a:= b + lrot32(a + (b xor c xor d) + data[13] + $289b7ec6,4);

d:= a + lrot32(d + (a xor b xor c) + data[ 0] + $eaa127fa,11);

c:= d + lrot32(c + (d xor a xor b) + data[ 3] + $d4ef3085,16);

b:= c + lrot32(b + (c xor d xor a) + data[ 6] + $04881d05,23);

a:= b + lrot32(a + (b xor c xor d) + data[ 9] + $d9d4d039,4);

d:= a + lrot32(d + (a xor b xor c) + data[12] + $e6db99e5,11);

c:= d + lrot32(c + (d xor a xor b) + data[15] + $1fa27cf8,16);

b:= c + lrot32(b + (c xor d xor a) + data[ 2] + $c4ac5665,23);

a:= b + lrot32(a + (c xor (b or (not d))) + data[ 0] + $f4292244,6);

d:= a + lrot32(d + (b xor (a or (not c))) + data[ 7] + $432aff97,10);

c:= d + lrot32(c + (a xor (d or (not b))) + data[14] + $ab9423a7,15);

b:= c + lrot32(b + (d xor (c or (not a))) + data[ 5] + $fc93a039,21);

a:= b + lrot32(a + (c xor (b or (not d))) + data[12] + $655b59c3,6);

d:= a + lrot32(d + (b xor (a or (not c))) + data[ 3] + $8f0ccc92,10);

c:= d + lrot32(c + (a xor (d or (not b))) + data[10] + $ffeff47d,15);

b:= c + lrot32(b + (d xor (c or (not a))) + data[ 1] + $85845dd1,21);

a:= b + lrot32(a + (c xor (b or (not d))) + data[ 8] + $6fa87e4f,6);

d:= a + lrot32(d + (b xor (a or (not c))) + data[15] + $fe2ce6e0,10);

c:= d + lrot32(c + (a xor (d or (not b))) + data[ 6] + $a3014314,15);

b:= c + lrot32(b + (d xor (c or (not a))) + data[13] + $4e0811a1,21);

a:= b + lrot32(a + (c xor (b or (not d))) + data[ 4] + $f7537e82,6);

d:= a + lrot32(d + (b xor (a or (not c))) + data[11] + $bd3af235,10);

c:= d + lrot32(c + (a xor (d or (not b))) + data[ 2] + $2ad7d2bb,15);

b:= c + lrot32(b + (d xor (c or (not a))) + data[ 9] + $eb86d391,21);

inc(currenthash[0],a); inc(currenthash[1],b);

inc(currenthash[2],c); inc(currenthash[3],d);

index:= 0; fillchar(hashbuffer,sizeof(hashbuffer),0);

end;

procedure update(const buffer; size: longword);

var pbuf: ^byte;

Begin

inc(lenhi,size shr 29); inc(lenlo,size*8);

if lenlo< (size*8) then inc(lenhi);

pbuf:= @buffer;

while size> 0 do

begin

if (sizeof(hashbuffer)-index)<= dword(size) then

begin

move(pbuf^,hashbuffer[index],sizeof(hashbuffer)-index);

dec(size,sizeof(hashbuffer)-index);

inc(pbuf,sizeof(hashbuffer)-index);

compress;

end

else

begin

move(pbuf^,hashbuffer[index],size);

inc(index,size); size:= 0;

end; end; end;

procedure final(var digest);

Begin

hashbuffer[index]:= $80;

if index>= 56 then compress;

pdword(@hashbuffer[56])^:= lenlo;

pdword(@hashbuffer[60])^:= lenhi; compress;

move(currenthash,digest,sizeof(currenthash)); burn;

End;

Begin

init; update(s[1],length(s));

final(a); result:='';

for i:=0 to 15 do

result:=result+inttohex(a[i],0);

burn;

End;

ЛИТЕРАТУРА:

  1. С.Г.Баричев, В.В.Гончаров, Р.Е.Серов. Основы современной криптографии – Москва, Горячая линия – Телеком, 2001
  2. А.В.Беляев. "Методы и средства защиты информации" (курс лекций). /internet/infsecure/index.shtml
  3. А. А. Болотов, С. Б. Гашков, А. Б. Фролов, А. А. Часовских, «Алгоритмические основы эллиптической криптографии». Учебное пособие. М.: Изд-во МЭИ. 2000 г., 100 с.
  4. А.Володин. «Кто заверит ЭЦП», журнал «Банковские системы», ноябрь 2000, /system/2000-11/04.html
  5. Т.Илонен. Введение в криптографию (Ylonen Tatu. Introduction to Cryptography), /psw/crypto/intro.html
  6. Ш.Т. Ишмухаметов. Технологии защиты информации в сети, Казань, 2008, 91 с. /files/e9zxcqos9
  7. Н.Коблиц. Теория чисел и криптография, М.:, ТВР, 2001 http://gabro.ge/biblio/0708/0081/file/Cryptography/Koblic_-_Teoriya_Chisel_i_Cryptografiya.rar
  8. О.Р. Лапонина. Криптографические основы безопасности, курс Интернет-университета, /department/security/networksec
  9. Р.Лидл, Г.Нидеррайтер. Конечные поля, в 2 т., пер.с англ., М.: Мир, 1998, 438 с.
  10. А.А. Молдовян, Н.А. Молдовян, Б.Я. Советов. Криптография. М., Лань, 2001
  11. А.А. Молдовян, Н.А. Молдовян, Введение в криптосистемы с открытым ключом, БХВ-Петербург, 2005, с. 286 /vvedenie_v_kriptosistemy_s_otkrytym_klyuchom
  12. А.Г.Ростовцев. Алгебраические основы криптографии, СПб, Мир и Семья, 2000.
  13. А.Г.Ростовцев, Е.Б.Маховенко. Теоретическая криптография. – СПб.: АНО, ПО “Профессионал”, 2005,/index.php?newsid=1265
  14. Г.Семенов. «Цифровая подпись. Эллиптические кривые».

http://www.morepc.ru/security/crypt/os200207010.html?print

14. В.Столлингс. Основы защиты сетей. Приложения и стандарты, М.: Вильямс, 2002, 429 с.

  1. Брюс Шнайер. Прикладная криптография, 2-е издание: протоколы, алгоритмы и исходные тексты на языке С, /psw/crypto/appl_rus/appl_cryp.htm
  2. Dr. Michael Ganley, Thales eSecurity Ltd. Метод эллиптических кривых, /rsp/eliptic_curve_cryptography.htm
  3. В.М.Фомичев. Дискретная математика и криптология, Диалог-МИФИ, 2003, 399 с.
  4. Сайт Криптографический ликбез - http://www.ssl.stu.neva.ru/psw/crypto.html
  5. Jovan Dj. Golic. Cryptanalysis of Alleged A5 Stream Cipher, Beograd, Yugoslavia, /a5-hack.htm
  6. Ю. Спектор. Использование инструментов криптографии в Delphi-приложе-ниях, /asp/viewitem.asp?catalogID=1271

 

 


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.032 с.