- •Содержание
- •3.1 Цель работы 15
- •1Введение
- •2.3 Теоретические сведения
- •2.3.1Шифр перестановки “скитала”
- •2.3.2Шифрующие таблицы
- •Над всей испанией безоблачное небо
- •Неабл еайне андии зчевс еонбс пйбоо
- •Цунами,
- •Белае ненан йазеч иидоб несвб оойпс
- •Грузите апельсины
- •2.3.3Магические квадраты
- •Грузите апельсины
- •Ыурс иела птеь зниг
- •2.4Подготовка к работе
- •2.5Выполнение работы
- •3.2.2Система шифрования Цезаря
- •3.2.3Аффинная система подстановок Цезаря
- •3.2.4Система Цезаря с ключевым словом
- •3.2.5Шифрующие таблицы Трисемуса
- •Местовстречи изменитьнельзя
- •3.2.6Биграммный шифр Плейфейра
- •3.2.7Система омофонов
- •3.2.8Шифры сложной замены
- •3.2.9Шифр Гронсфельда
- •3.2.10 Система шифрования Вижинера
- •3.2.11 Шифр "двойной квадрат" Уитстона
- •3.3Выполнение работы
- •4.2Анализ информационной системы
- •4.2.1Угрозы нарушения безопасности
- •4.2.2Методы и средства защиты информации
- •4.2.3Анализ защищенности
- •4.3Применение компьютерной системы для анализа требований безопасности
- •4.4Выполнение работы
- •Анализ защищенности
- •5.1.1Алгоритм шифрования des
- •5.1.2Режимы работы блочных шифров
- •5.1.2.1Режим «Электронная кодовая книга»
- •5.1.2.2Режим «Сцепление блоков шифра»
- •5.1.2.3Режим «Обратная связь по шифру»
- •5.1.2.4Режим «Обратная связь по выходу»
- •5.2Применение компьютерной системы для изучения симметричных алгоритмов шифрования
- •5.3Выполнение работы
- •Анализ защищенности
- •6.1.1Алгоритм шифрования rsa
- •6.2Применение компьютерной системы для изучения алгоритмов шифрования с открытым ключом
- •6.3Выполнение работы
- •Анализ защищенности
- •7.2Применение компьютерной системы для изучения протоколов идентификации и аутентификации
- •7.3Выполнение работы
- •Анализ защищенности
- •8.2Применение компьютерной системы для изучения протоколов электронной цифровой подписи
- •8.3Выполнение работы
- •Анализ защищенности
- •9.1.1Дискреционная модель безопасности Харрисона-Руззо-Ульмана
- •9.1.2Мандатная модель Белла-ЛаПадулы
- •9.1.3Ролевая политика безопасности
- •9.2Применение компьютерной системы для изучения формальных политик безопасности
- •9.3Выполнение работы
- •9.4Содержание отчета
- •Анализ защищенности
- •10Рекомендованная литература
8.2Применение компьютерной системы для изучения протоколов электронной цифровой подписи
Для изучения схемы работы цифровой подписи рассмотрим пример передачи подписанного сообщения от ресурса Источник к субъекту Приёмник с использованием алгоритма RSA (см. рисунок 7.2.1).
Рисунок 7.15.1 — Статическая модель для изучения ЭЦП
При определении динамической модели субъект Приёмник представляется в виде процесса R, ресурс Источник — в виде процесса S (см. рисунок 7.2.2).
Рисунок 7.2.2 — Динамическая модель для изучения ЭЦП
При реализации схемы ЭЦП присутствуют следующие потоки данных:
процесс S передаёт открытый ключ (E,N) процессу R;
процесс S передаёт ЭЦП процессу R;
процесс S передаёт сообщение процессу R.
Переменные в области данных процессов приведены в таблице 7.2.1.
Таблица 7.2.16 — Определение переменных процессов
Процесс |
Определение области данных |
S |
RSA rsa = new RSA(); |
R |
RSA rsa=new RSA(); long digest=-1; String message; |
Для получения дайджеста сообщения используется алгоритм MD5. В качестве дайджеста выбираются первые 16 бит результата применения алгоритма хэширования MD5.
Формирование и отправка открытого ключа процессу приемнику выполняется в методе exchangeKeys:
long x = 25000;
long y = 30000;
long fi;
long p,q,e;
for ( p = x; !Numerical.isPrime( p ); p++ ) ;
for ( q = y + 2; !Numerical.isPrime( q ); q++ ) ;
rsa.setSecureKey(p,q);
logDataMessage("Секретный ключ","p=" + p +" q="+q);
fi=rsa.getFi();
for ( e = fi / 10; Numerical.gcd( e, fi ) != 1; e++ ) ;
rsa.setOpenKey(e,rsa.getN());
logDataMessage("Открытый ключ", "e=" + e+" n="+rsa.getN() );
long open_key[]=new long[2];
open_key[0]=e;
open_key[1]=rsa.getN();
send("key_out",open_key);
Подпись и отправка сообщения с ЭЦП выполняется в методе sendSignedMessage процесса S:
String message="Тестовое сообщение";
byte digest[]=MD5.digest(message);
long calcDigest=0;
for (int i=0;i<16;i++)
{
calcDigest<<=1;
calcDigest|=digest[i];
}
logDataMessage("Cообщение",message);
logDataMessage("Дайджест сообщения",calcDigest);
long code = rsa.decode( calcDigest );
logDataMessage("Сформирована ЭЦП",code);
send("hash_out",new Long(code));
send("msg_out",message);
Получение и обработка данных процессом R определены в обработчике события onRecieve:
if (hasMoreData("key_in"))
{
long key[]=(long [])recv("key_in");
rsa.setOpenKey(key[0],key[1]);
logDataMessage("Получен открытый ключ","e="+key[0]+" n="+key[1]);
} else if (hasMoreData("hash_in"))
{
Long lcode=(Long)recv("hash_in");
long code=lcode.longValue();
logDataMessage("Получена ЭЦП",code);
digest = rsa.encode( code );
logDataMessage("Дайджест сообщения",digest);
} else if (hasMoreData("msg_in"))
{
message=(String)recv("msg_in");
logDataMessage("Сообщение",message);
}
Проверка ЭЦП реализована в методе checkSign процесса R:
if (digest>=0 && message!=null)
{
byte calcByteDigest[]=MD5.digest(message);
long calcDigest=0;
for (int i=0;i<16;i++)
{
calcDigest<<=1;
calcDigest|=calcByteDigest[i];
}
if (calcDigest==digest)
logMessage("Сообщение подлинное");
else
logMessage("Сообщение ложное");
} else
logMessage("Не получены все данные");
В результате моделирования выполнена проверка целостности отправляемого сообщения.
Протокол моделирования процесса S имеет следующий вид:
Регистрация клиента
Процесс создан
Событие onCreate
Запуск метода exchangeKeys
Секретный ключ p=25013 q=30011
Открытый ключ e=75061013 n=750665143
Отправка данных с узла S.key_out / out 75061013, 750665143
Запуск метода sendSignedMessage
Cообщение Тестовое сообщение
Дайджест сообщения 42700
Сформирована ЭЦП 705409300
Отправка данных с узла S.hash_out / out 705409300
Отправка данных с узла S.msg_out / out Тестовое сообщение
Протокол моделирования процесса R:
Регистрация клиента
Процесс создан
Событие onCreate
Событие onRecieve в узле key_in
Получены данные в узле R.key_in / in 75061013, 750665143
Получен открытый ключ e=75061013 n=750665143
Событие onRecieve в узле hash_in
Получены данные в узле R.hash_in / in 705409300
Получена ЭЦП 705409300
Дайджест сообщения 42700
Событие onRecieve в узле msg_in
Получены данные в узле R.msg_in / in Тестовое сообщение
Сообщение Тестовое сообщение
Запуск метода checkSign
Сообщение подлинное