Парольные системы идентификации/аутентификации.
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!