Парольные системы идентификации/аутентификации.



3.11.1 Требования и угрозы для парольных систем.

Это наиболее простые и наиболее распространенные системы и/а, в которых в качестве идентификатора используется логин или тех устройство, а в качестве А – пользовательский пароль.

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

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

 

Основные угрозы для парольных систем:

1. Прямой перебор паролей в режиме on-line или off-line.

2. Перебор паролей по словарю.

3. Атака по открытому тексту.

4. Кража базы данных аутентификации.

5. Подсмотр пароля.

6. Кража паролей из общедоступного места

7.Внедрение программных закладок в компьютерные системы.

8.Социальный инжиниринг.

 

Требования к выбору паролей и реализации систем И/А.

1. Задание min-ой длины пароля которые могут выбираться пользователем. Win – 15,16 символов.

2. Использование спец символов при выборе паролей.

3. Обраковка паролей по словарю.

4. Установка max-срока действия пароля.

5. Установка min-ого срока действия пароля.

6. Ограничение числа ввода паролей.

7. Принудительная система смены пароля пользователя по истечении срока действия.

8. Временная задержка при вводе неправильного пароля.

9.Использование генераторов паролей.

 

3.11.2 Количественная оценка стойкости паролей.

 

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

S=AL – количество всевозможных паролей, к-ые можно составить из символьного алфавита A длины L. S- также является пространством атаки. V- скорость перебора паролей злоумышленником. T – срок действия пароля, тогда вероятность подбора пароля злоумышленником за время меньшее срока действия пароля оценивается следующим образом:

 

P=V∙T/S=V∙T/AL, P≤1.

 

Для администратора безопасности большое значение имеет решение обратной задачи, по заданным величинам P, V, T (стойкость) определить характеристики парольного генератора A, L, который необходимо использовать для того чтобы вероятность подбора пароля была бы не больше чем заданная P. В такой постановке эта задача решается неоднозначно, при данных условиях, мы можем однозначно определить только нижнюю границу S* пространства атаки, которая должны быть обеспечена:

S*= [V*T/P], где [] – ближайшее сверху целое число.

Найдя величину S* и зафиксировав мощность алфавита символов A, можем найти min-ую длину пароля L, которую необходимо использовать.

ALmin≥S*

Данную величину м/о найти либо подбором, либо из условия:

Lmin≥log AS*=lnS*/lnA

Пример: Pвзлома=10-6, T=7 дней, V=10 паролей/минуту=10*60*24 пар/день.

 

S*=[10*60*24*7/10-6]=1011 (1008 * 108)

А=26 → Lmin=8 (английские буквы)

А=36 → Lmin=6 (английские буквы и цифры)


4. КРИПТОГРАФИЯ.

 

Элементы теории чисел.

О.  Пусть a и b целые числа, говорят что a/b (целое число а делится на целое число в без остатка), если существует целое число с, такое что a=b ∙ c.

 

О. Разделить целое число a на целое число b с остатком, означает найти такие целые числа q, r что a=b∙q+r, где 0≤r<|b|.

 

В языке С оператор % возвращает остаток от деления первого выражения на второе. Оно может быть отрицательным число если любой из операндов отрицателен.

 

Любое целое число a можно разделить на любое ненулевое целое число b с остатком и при том единственным образом.

О. Число d называется общим делителем числа a1,…ak, если каждая из них делится без остатка на d.

 

О. Число d называется наибольшим общим делителем чисел a1,…ak, если d является общим делителем этих чисел и делится само на любой из общий делитель данных чисел.

 

Теорема: Если a=b∙q+r, то НОД (a,b)=НОД (b,r):

a,b принадлежащих z, b≠0

a=b∙q1+r1               0 ≤ r1 <|b|.

b=r1∙q2+r2               0 ≤ r2 <| r1|.

r1=r2∙q3+r3              0 ≤ r3 <| r2|.

.      .      .      .      .

rn-2=rn-1∙qn+rk          0 ≤ rk <| rn-1|.

rn-1=rn∙qn+1

Последний ненулевой остаток rn будет являться НОД чисел a и b.

 

О. Целые числа a1,…ak, называются взаимопростыми, если их НОД(a1,…ak)=1.

О. Натуральное число n называется простым если оно содержит в точности два различных натуральных делителя: 1 и само число n.

 

Для нахождения простых чисел в диапазоне от 1 до n, можно использовать различные алгоритмы. Вот один из них(Алгоритм Эратосфена):

Выписываем в ряд все числа от 1 до n. (2,3,4,5,6…. n), оставляем двойку нетронутой и выбрасываем числа кратные двум. Берем первое не вычеркнутое число  - 3, и вычеркиваем кратные 3, и т.д. до sqrt(n). Все оставшиеся числа будут простыми.

 

Алгоритм Евклида для целых чисел

 

Пусть a и b суть целые числа, не равные одновременно нулю, и последовательность чисел

определена тем, что каждое rk это остаток от деления пред-предыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, т. е.

a = bq0 + r1

b = r1q1 + r2

r1 = r2q2 + r3

 

rn − 1 = rnqn

 

Тогда (a,b), наибольший общий делитель a и b, равен rn, последнему ненулевому члену этой последовательности.

-----------------------------------

 

Одним из способов вычислить наибольший общий делитель является алгоритм Эвклида.

Пример этого алгоритма на языке С:

/*Возвращает НОД (gcd) x и y */

int gcd (int x, int y)

{

int g;

if (x<0) x=-x;

if (y<0) y=-y;

if (x+y==0) error!;

g=y;

while (x>0)

{

    g=x;

    x=y%x;

    y=g;

}

return g;

}

 

-----------------------------------

Обратные значения по модулю.

Обратное значение для 4 – ¼, потому что 4*¼=1. В мире вычетов задача усложняеться:

Это уравнение эквивалентно уравнению:

 

Где x и k – целые числа. Общая задача состоит в нахождении такого что:

В общем случае у этого уравнения существует единственное решение, если a и n взаимно простые. Если a и n – не являються взаимнопростыми то решения нет. Для нахождения обратного значения а по модулю n можно использовать расширенный алгоритм Евклида.

Алгоритм находит не только НОД(a,b)=d, но и найдет целые числа x и y, такие что ax + by = d.

 

Псевдокод.

НА ВХОДЕ: два неотрицательных числа a и b: a>=b

НА ВЫХОДЕ: d=НОД(a,b) и целые x,y: ax + by = d.

 

1. Если b=0 положить d:=a, x:=1, y:=0 и возвратить (d,x,y)

2. Положить x2:=1, x1:=0, y2:=0, y1:=1

3. Пока b>0

3.1 q:=[a/b], r:=a-qb, x:=x2-qx1, y:=y2-qy1

3.2 a:=b, b:=r, x2:=x1, x1:=x, y2:=y1, y1:=y

4. Положить d:=a, x:=x2, y:=y2

 

Исходник на Си.

#include <stdio.h>

 

void extended_euclid(long a, long b, long *x, long *y, long *d)

/* calculates a * *x + b * *y = gcd(a, b) = *d */

{

long q, r, x1, x2, y1, y2;

if (b == 0) {

               *d = a, *x = 1, *y = 0;

               return;

             }

x2 = 1, x1 = 0, y2 = 0, y1 = 1;

while (b > 0) {

       q = a / b;

r = a - q * b;

   *x = x2 - q * x1;

*y = y2 - q * y1;

 a = b;

 b = r;

x2 = x1;

x1 = *x;

y2 = y1;

y1 = *y;

}

*d = a, *x = x2, *y = y2;

}

int main(void)

{

long a = 4864, b = 3458, d, x, y;

extended_euclid(a, b, &x, &y, &d);

printf("x = %ld y = %ld d = %ld\n", x, y, d);

return 0;

}

 

Алгоритм нахождения обратного элемента:

Псевдокод.

НА ВХОДЕ: а из Zn.

НА ВЫХОДЕ: обратный к а в кольце, если он существует.

 

1. Использовать расширенный алгоритм Евклида для нахождения

x и y, таких что ax + ny = d, где d=НОД(a,n).

2. Если d > 1, то обратного элемента не существует.

Иначе возвращаем x.

 

Основная теорема арифметики:

Любое натуральное число n>1, либо является простым, либо раскладывается в произведении простых чисел и при том единственным образом с точностью до порядка следования сомножителей, т.е. любое натуральное число n можно представить в следующей форме:

n=p1α1∙ p2α2∙ p3α3∙ p4α4… pkαk, где p1, p2 … pn – простые числа. (*)

Задача разложения числа (*) называется задачей факторизации. Предполагаемая сложность задачи факторизации лежит в основе некоторых криптографических алгоритмов (Например RSA).

 

 

4.1.1 Числовые функции.

 

Пусть n – натуральное число, факторизация которого выглядит следующим образом: n=p1α1∙ p2α2∙ p3α3∙ p4α4… pkαk, pi ≠ pj.

Введем следующие числовые функции:

τ(n) – количество всех делителей числа n,

δ(n) – сумма всех делителей числа n,

φ(n) – функция Эйлера – это количество чисел меньших n и взаимнопростых с ним.

 

τ(n) = (α1+1) ∙ (α2+1) ∙ (α3 +1) ∙…. ∙ (αk+1)

δ(n) = (1+p1+p12+…+p1α1) ∙ … ∙ (1+pk+pk2+…+pkαk)

φ(n) = p1α1-1 ∙ (p1-1) ∙ p2α2-1 ∙ (p2-1) ∙… ∙ pkαk-1(pk-1)

 

Частный случай функции Эйлера:

для n = p ∙ q, где p, q – простые числа,

φ(n) = (p-1) ∙ (q-1)

 

4.1.2 Теория сравнений. Вычисление по модулю.

Пусть m – целое число, тогда при делений любых целых чисел m возможно получение ровно m остатков (0,1,2,… m-1).

 

О. Целые числа a и b называются сравнимыми по модулю m a≡b(mod m), если их разность a-b делится без остатка на m, либо (что одно и то же) числа a и b имеют одинаковые остатки при делении на число m. Число m называется модулем, число b – называется вычетом числа a по модулю m. Такая запись называется сравнением:

7≡2(mod5).


Существует бесконечное множество чисел сравнимых с a по модулю m, но только одно из них лежит в диапазоне от 0 до m-1, это есть остаток от деления a на m.

Свойства сравнения:

1. Рефлексивность.

Для любого целого числа a, a≡a(mod m).

2. Симметричность.

       Если a≡b(mod m), следовательно, b≡a(mod m)

3. Транзитивность.

       Если a≡b (mod m), b≡c (mod m) → a≡c(mod m)

Выполнение свойств рефлексивности, транзитивности, и симметричности позволяет разбить множество всех чисел на непересекающиеся м/у собой классы – классы вычетов. Класс вычетов 0,1,2…. m-1. Класс вычетов 0 включает все целые числа дающие в остатке 0 при делении на m.

 

4. Если a ≡ b(mod m), а k – целое число, следовательно k∙a≡k∙b(mod m).

5. Если k∙a≡k∙b(mod m) и НОД(k,m) = 1, следовательно a≡b(mod m)

6. Если a≡b (mod m) и c≡d(mod m), следовательно a±c ≡b±d (mod m).

7. Если a≡b (mod m) и n € N, an≡bn (mod m).

8. Если a≡b (mod m), k – целое число, a≡b±k∙m(mod m)

 

В криптографии все вычисления производятся по модулю над целыми числами, от 0 до

m-1, и результатом выполнения операции является число от 0 до m-1.

 

Теорема Эйлера. Если НОД чисел (a,m)=1, то aφ(m)≡1(mod m).

О. Пусть НОД (a,m)=1, то порядком числа a (mod m) называется наименьшее натуральное число  для которого a ≡1(mod m).

 

Для любого сколь угодно большого числа g, 0≤g≤p-1, можно возвести в любую сколь угодно большую степень x, 0≤x≤p-1 и получить при этом число a достаточно просто a=gx(mod p).

Однако зная числа p,a,g найти такую степень x, при возведении в которую числа g мы получим число a, возможно только одним единственным способом – полным перебором этих степеней. При больших модулях (21024) эта задача не решается за приемлемое время никакими средствами. (gx=a(mod)).

Нахождение числа x по известным a, g, p называется дискретным логарифмированием. (дискретное потому что x-целое).

 

_--------------------------------

Описание и программная реализация некоторых шифров.

RC-5

Представляет собой блочный шифр.

Используется три действия: XOR, сложение и циклический сдвиг.

RC-5 использует блок переменной длины. Мы будем рассматривать блок 64-битовый блок данных. Шифрование использует 2r+2 зависящих от ключа 32-х битовых слов S0, S1,… S2r+1, где r – число этапов. Эти слова мы сгенерируем позднее. Для шифрования сначала разделим блок открытого текста на два 32-х битовых слова: A и B. (RC-5 предполагает следующее соглашение по упаковке байтов в слова: первый байт занимает младшие байты регистра А и т.д.).

Затем:

Результат находиться в регистрах A и B:

Дешифрование также просто. Разбейте блок открытого текста на два слова, A и B, а затем:

Символ >>> означает циклический сдвиг вправо, все сложения и вычитания производятся по модулю 232.

 

Создание массива ключей более сложно но также прямолинейно, сначала байты ключа копируются в массив L из 32-х битовых слов, дополняя при необходимости заключительное слово нулями. Затем массив S инициализируется с помощью линейного конгруэнтного генератора по модулю 232:

S0=P

for i=1 to 2(r+1)-1:

       Si=(Si-1+Q)mod 232

P=0xb7e15163 и Q=0x9e3779b9, эти константы основываются на двоинчом представлении e и pi.

Наконец подставляем L в S:

i=j=0;

A=B=0

выполнить n раз где n равен 2(r+1):

 

_--------------------------------

 

 


Дата добавления: 2018-05-12; просмотров: 836; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!