- •1Угрозы информационным системам. Факторы, приводящие к информационным потерям
- •1.1Введение
- •1.2Осуществление угроз информационным ресурсам
- •1.3Факторы, приводящие к информационным потерям
- •1.4Виды угроз информации
- •1.5Источники возникновения угроз
- •2Криптография. Симметричные алгоритмы шифрования.
- •2.1Введение
- •2.2Терминология
- •2.3Симметричные криптосистемы
- •2.4Алгоритм Цезаря
- •2.5Алгоритм замены полиалфавитный
- •2.6Алгоритм замены с большим ключом
- •2.7Перестановки.
- •2.8Гаммирование.
- •3Криптография. Несимметричные алгоритмы шифрования.
- •3.1Системы с открытым ключом
- •3.2Алгоритм Диффи-Хеллмана – протокол генерации секретного ключа.
- •3.3Описание системы с открытым ключом
- •3.4Алгоритм rsa
- •3.5Практическая реализация rsa
- •3.6Пример 1 rsa.
- •3.7Пример 2 rsa.
- •3.8Пример 3 rsa.
- •3.9Немного об арифметических операциях по модулю n.
- •3.10Сложение.
- •3.11Вычитание.
- •3.12Умножение.
- •3.13Деление.
- •3.14Обратное по модулю.
- •3.15Стандарт шифрования данных гост 28147-89
- •3.16Простые числа
- •4Электронная подпись
- •4.1Эцп - зашифрованный текст
- •4.2Эцп - открытый текст
- •4.3Использование хэш-функций
- •4.4Сертификация
- •4.5Имитовставка или mac-код
- •4.6 Шифрование больших сообщений и потоков данных
- •4.7Шифрование, кодирование и сжатие информации
- •4.8Аппаратные шифраторы.
- •5Управление ключами
- •5.1Генерация ключей
- •5.2Накопление ключей
- •5.3Распределение ключей
- •5.4Использование “блуждающих ключей”
- •6Стеганография
- •6.1Введение
- •6.2Электронные «водяные знаки».
- •6.3Скрытие текста в 24-разрядном bmp файле.
- •8.2Технология шифрования
- •8.3Взаимодействие с пользователем
- •8.4Восстановление данных
- •8.5Немного теории
- •Процесс шифрования
- •Процесс восстановления
- •8.6Реализация в Windows 2000
- •8.7Выводы
- •9Протокол ipSec в Window 2000.
- •9.1Реализация промышленных стандартов
- •9.2Реализация Windows ip Security
- •9.3Пример
- •9.4О совместимости
- •10Защищенные каналы. Аутентификация.
- •10.1Введение
- •10.2Аутентификация на основе хэш-функций.
- •10.3Аутентификация на основе общего секретного ключа
- •10.4Аутентификация на основе открытого ключа
- •10.5Аутентификация с использованием центра распределения ключей
- •11Протокол Kerberos в Windows 2000.
- •11.1Аутентификация в Windows 2000
- •11.2Преимущества аутентификации по протоколу Kerberos
- •11.3Начальная аутентификация.
- •11.4Метка времени в качестве средства для взаимной аутентификации.
- •11.5Аутентификация за пределами домена
- •11.6Срок годности билетов. Обновляемые билеты.
- •11.7Подпротоколы
- •11.8Подпротокол tgs Exchange
- •11.9Подпротокол cs Exchange
- •11.10Билеты
- •11.11Какие данные из билета известны клиенту
- •11.12Как служба kdc ограничивает срок действия билета
- •11.13Что происходит после истечения срока действия билета
- •11.14Обновляемые билеты tgt
- •11.15Делегирование аутентификации
- •11.16Представительские билеты
- •11.17Передаваемые билеты
- •12Криптографические протоколы
- •12.1Стегоканал
- •12.1.1Скрытие сообщения с одноразовым блокнотом
- •12.1.2Скрытие сообщения с одноразовым блокнотом и ключевой фразой
- •12.2Защищенный канал
- •12.2.1Протокол взаимоблокировки
- •12.2.2В92 – протокол.
- •12.3Аутентификация
- •12.3.1Аутентификация skey
- •12.3.2Взаимная аутентификация - однонаправленные сумматоры
- •12.6Протокол разбиения секрета
- •13.2Криптоанализ и атаки на криптосистемы
- •13.3Атака 1. Расшифровка ранее полученного сообщения при помощи специально подобранного текста.
- •13.4Атака 2. Подпись нотариуса на неверном документе.
- •13.5Атака 3. Подпись на документе вторым способом.
- •13.6Атака 4. Атака при использовании общего модуля.
- •13.7Выводы
- •14Вредоносные программы. Вирусы. Защита.
- •14.1Классификация компьютерных вирусов
- •14.2Загрузочные вирусы
- •14.3Файловые вирусы
- •14.3.1Способы заражения - запись поверх.
- •14.3.2Способы заражения - паразитические
- •14.3.3Способы заражения - Вирусы без точки входа
- •14.3.4Способы заражения - Компаньон-вирусы
- •14.3.5Способы заражения - Файловые черви
- •14.3.6Способы заражения - Link-вирусы
- •14.3.7Алгоритм работы файлового вируса
- •14.4Макро-вирусы
- •14.4.1Алгоритм работы Word макро-вирусов
- •14.5Полиморфик-вирусы
- •14.5.1Полиморфные расшифровщики
- •14.5.2Уровни полиморфизва
- •14.5.3Изменение выполняемого кода
- •14.6Стелс-вирусы. Загрузочные вирусы
- •14.6.1Стелс-вирусы. Файловые вирусы
- •14.6.2Стелс-вирусы. Макро-вирусы
- •14.7Резидентные вирусы в Windows
- •14.8Прочие "вредные программы"
- •14.9Троянские кони (логические бомбы)
- •14.10Утилиты скрытого администрирования (backdoor) компьютеров в сети.
- •14.11Intended-вирусы
- •14.12Конструкторы вирусов
- •14.13Полиморфные генераторы
- •14.14Irc-черви
- •14.15Сетевые вирусы
- •14.16Методы обнаружения и удаления компьютерных вирусов.
- •14.17Типы антивирусов. Сканеры.
- •14.17.1Crc-сканеры
- •14.17.2Блокировщики
- •14.17.3Иммунизаторы
- •14.17.4Правила защиты
- •15Анализ защищенности tcp/ip
- •15.1Пассивные атаки на уровне tcp. Подслушивание
- •15.2Активные атаки на уровне tcp
- •15.2.1Предсказание tcp sequence number
- •15.2.2Описание
- •15.2.3Детектирование и защита
- •15.3.1Ранняя десинхронизация
- •15.3.2Десинхронизация нулевыми данными
- •15.3.3Ack-буря
- •15.4Пассивное сканирование
- •15.5Затопление icmp-пакетами
- •15.6Локальная буря
- •15.7Затопление syn-пакетами
- •16Атака через Internet
- •16.1Понятие удалённой атаки через Internet
- •16.2Пример удалённой атаки через интернет
- •16.3Классификация удаленных атак через систему Internet
- •16.4Понятие типовой удаленной атаки
- •16.5Причины успеха удаленных атак на сеть Internet
- •17Защита локальной сети и одиночного компьютера от атак через Internet.
- •17.1Программно-аппаратные методы защиты от удаленных атак в сети Internet
- •17.2Аппаратные шифраторы сетевого трафика
- •17.3Можно организовать прокси - сервер.
- •17.4Firewall или брандмауэр.
- •17.5Skip-технология и криптопротоколы ssl, s-http как основное средство защиты соединения и передаваемых данных в сети Internet
- •17.6Основные виды межсетевых экранов (брандмауэров)
- •17.7Фильтрующие маршрутизаторы
- •17.8Пример работы фильтрующего маршрутизатора
- •17.9Недостатки и преимущества фильтрующих маршрутизаторов
- •17.10Шлюзы сетевого уровня
- •17.11Шлюзы прикладного уровня
- •17.12Преимущества и недостатки шлюзов прикладного уровня
- •17.13Усиленная аутентификация
- •17.14Применение межсетевых экранов для организации виртуальных корпоративных сетей
- •18Правовое обеспечение безопасности ис.
- •18.1Предмет законодательства
- •18.2Уголовная ответственность
- •18.3Требования к безопасности ис в сша
- •18.4Стандартизация аппаратных средств
- •18.5Требования к безопасности информационных систем в России
- •18.6Показатели защищенности средств вычислительной техники
- •18.7Заключение
- •18.8Рекомендации
- •19Пароли ис.
- •19.1Пароли. Хранение и передача по сети.
- •19.2Безопасность паролей и шифрование
- •19.3Идентификация и аутентифокация. Использование токенов.
- •19.4Равнозначность паролей
- •19.5Восстановление паролей текстовом виде
- •19.6Поиск по словарю
- •19.7Прямой подбор
- •19.8“Комбинированный” метод
- •19.9Работа программ вскрытия паролей Windows nt
- •19.10Основные меры защиты.
- •19.11Программы подбора паролей
- •19.16Троянская конница
- •19.17Программно-технические мероприятия защиты.
- •19.18Защита паролем
- •19.19Создание надежных паролей
3.13Деление.
В случае деления может получиться вещественное число, что недопустимо. Выход состоит в том, чтобы найти такое число, умножив на которое делитель, получим число, дающее в остатке от деления на n единицу.
a/b mod n = (a*k)/(b*k) mod n = (a*k mod n)/(b*k mod n)
Если b*k mod n=1, то (a*k mod n)/(b*k mod n) = a*k mod n. Таким образом, требуется найти k. Это можно сделать, перебирая числа m, удовлетворяющие выражению b*k = m*n+1, причем m=1, 2, …, а k должно быть целое. Заметим, что предложенный метод поиска k не является единственным и наилучшим.
А=m1*m2*m3*…
B=n1*n2*n3*…
N=k1*k2*k3*…
Если А не делится нацело на В, то среди множителей найдется, по крайней мере, один не совпадающий.
3.14Обратное по модулю.
Малая теорема Ферма утверждает, что an-1 mod n=1 для простого n и не кратного ему a.
Функция Эйлера φ(n) – количество целых положительных чисел, меньших n и взаимно простых с n. Эйлер показал, что для простого n φ(n)=n-1, для n=p*q, где p и q – простые числа, φ(n)=(p-1)*(q-1)=m.
an-1 mod n=1 по теореме Ферма. Для простого n aφ(n) mod n=1. Таким образом, обратное a по модулю n рассчитывается как aφ(n)-1 mod n.
3.15Стандарт шифрования данных гост 28147-89
Важной задачей в обеспечении гарантированной безопасности информации в ИС является разработка и использования стандартных алгоритмов шифрования данных. Первым среди подобных стандартов стал американский DES, представляющий собой последовательное использование замен и перестановок. В настоящее время все чаще говорят о неоправданной сложности и невысокой криптостойкости. На практике приходится использовать его модификации.
Более эффективным является отечественный стандарт шифрования данных.
Он рекомендован к использованию для защиты любых данных, представленных в виде двоичного кода, хотя не исключаются и другие методы шифрования. Данный стандарт формировался с учетом мирового опыта, и в частности, были приняты во внимание недостатки и нереализованные возможности алгоритма DES, поэтому использование стандарта ГОСТ предпочтительнее.
3.16Простые числа
Криптостойкость несимметричных алгоритмов базируется на трудоемкости задачи разложения числа на простые множители. Вспомним, что число называется простым, если оно делится без остатка только на себя и на 1. Взаимно простыми числами называются не обязательно простые числа, а те, у которых нет общих (одинаковых) множителей.
Рассмотрим два алгоритма, с помощью которых можно разложить число на простые множители. Первый из них слишком прост и слабо отличается от метода простого перебора. Очевидно, что для больших чисел (очень больших, т.е. представляемых 512 и более битами, а не маленьких целых чисел, занимающих 32 или 64 бита) время расчета по этому алгоритму оказывается очень большим (его не трудно подсчитать, зная производительность процессора). Второй алгоритм интересен тем, что он гораздо быстрее определяет максимальный множитель. Этот вариант больше подходит, если надо доказать, что число простое. В алгоритме используются только операции сложения и вычитания, что работает быстрее, чем умножение. Если один множитель числа N равен 1, а второй N, то это означает, что число простое. Можно данный алгоритм использовать для нахождения всех множителей, тогда его надо применять неоднократно, сначала к исходному числу, затем к частному от деления на найденный множитель и т.д.
Алгоритм 1. При поиске простых множителей проверять надо вовсе не все числа, так как четные числа (кроме 2) не являются простыми. Известно правило, по которому достигается еще большее сокращение множества проверяемых чисел: кандидаты на простоту находятся в ряду натуральных чисел на местах через 2, затем через 4. Исключение составляют первые 6 чисел. Желтым цветом выделены простые числа, белым – те числа, которые в соответствии с нашим алгоритмом являются кандидатами, но не являются простыми.
1 2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 43 …
Здесь расстояние между 7 и 11 равно 4, затем между 11 и 13 расстояние равно 2, далее между 13 и 17 расстояние равно 4.
Итак, последовательность кандидатов на простые множители есть. Пользуясь ею, проверяйте по очереди, является ли очередное число множителем. Если нашли множитель, то определите кратность этого множителя, то есть делите исходное число на найденный множитель до тех пор, пока происходит деление нацело.
Алгоритм 2. Задача разложения на множители решается в двух ситуациях: тогда, когда действительно нужны множители, и тогда, когда нас интересует ответ на вопрос «является ли число простым», при этом сами множители не нужны, но надо установить, есть ли они. Тогда можно применить следующий алгоритм, который находит наибольший множитель числа N, не превышающий N.
Введем определение. Полным квадратом будем называть целое число, являющееся квадратом целого числа.
Алгоритм использует интересное свойство числового ряда, которое Вы можете увидеть в представленной таблице:
Z |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Z’=2*Z+1 |
1 |
3 |
5 |
7 |
9 |
11 |
13 |
15 |
17 |
Z2 |
0 |
1 |
4 |
9 |
16 |
25 |
36 |
49 |
64 |
Обратите внимание на то, что полный квадрат можно рассчитать следующим образом:
Z2i = Z2i-1 + Z’i-1
Здесь i – номер столбца, изменяется от 1 с шагом +1. По таблице мы видим, что
12=1+02=1+0=1
22=3+12=3+1=4
32=5+22=5+4=9
42=7+32=7+9=16.
Этот способ расчета полных квадратов хорош тем, что использует операцию сложения, которая выполняется компьютером гораздо быстрее, чем умножение.
Вернемся к задаче поиска множителей. Попытаемся свести задачу поиска множителя к расчету квадратов (а квадраты будем считать, используя только сложение!).
Любое число N можно представить в виде произведения некоторых чисел U*V, так как значение одного из сомножителей может быть равно 1. Обозначим
,
а
.
Тогда
,
,
.
Таким образом, если мы подберем два полных квадрата, разность которых равна N, то мы сможем посчитать множители.
Число N может быть само полным квадратом, поэтому можно начать с x=N и с y=0. В данном алгоритме не определяется способ расчета N. Предполагается, что он (точнее, его приближенное значение) известен. На самом деле, можно начинать с любого значения, меньшего N
Оперировать в алгоритме x и y не удобно, нам лучше работать с x’ = 2x+1, y’=2y+1, так как, согласно указанным выше свойствам чисел, можно легко рассчитывать следующие квадраты x и y. Таким образом, приходим к следующему алгоритму.
Берем в качестве начального значения x’ = N, y’=2*0+1=1. Заметим, что эти начальные значения не являются обязательными, можно начинать с любого x и с любого y, требуется только соблюдение следующих условий: x>y, y>=0, x<=N. Такие начальные условия гарантируют, что максимальный множитель не будет пропущен. В случае если x близок к N, алгоритм быстрее завершается.
Теперь надо вычислить величину невязки r по формуле, расположенной ниже.
О
чевидно,
что если r=0, то это означает,
что мы нашли пару x,y,
удовлетворяющую условиям задачи, то
есть мы нашли U, V
(их нетрудно вычислить по указанным
выше формулам).
Е
сли
r отрицательное,
следовательно, x мало,
поэтому, надо взять следующее значение
x: x=x+1,
а посчитать квадрат нового x
мы можем, воспользовавшись указанными
выше свойствами.
Если r положительное, следовательно, y мало, поэтому, надо взять следующее значение y: y=y+1. При этом, очевидно, r надо уменьшить на y (подставьте в формулу).
Окончательно, алгоритм состоит в следующем. Задаем начальные значения для r, x’, y’. Повторяем, пока r<>0: если r<0, увеличиваем x’ на 2 и пересчитываем r=r+x’, иначе увеличиваем y’= y’+2, r=r-y’.
В заключении следует сказать о том, почему алгоритм закончится. На каждом шаге мы изменяем на 1 только x или только y. Следовательно, V непрерывно растет. Если оно станет равно N, то U=1 и при этом r=0.
