11.25.2022#
Криптосистема с открытым ключом#
Пусть функция f : A \to B и выполнены следующие условия:
1. Вычисление значения b = f(a) для любого а из А – выполняется достаточно просто
2. Нахождение значения а при b = f(a) достаточно трудная задача
3. f – биекция
Тогда f называется односторонней функцией
Для системы шифрования с открытым ключом необходимо выполнение ещё одного свойства (условия)
- Существует такой секрет при знании которого нахождение a из уравнения f(a) = b становится достаточно простой задачей
Функцию удовлетворяющую условиям 1-4 называют односторонней функцией с секретом
Криптосистема шифрования с открытым ключом позволяет передавать сообщения секретные сообщения от одного корреспондента к другому без предварительного обмена секретных данных
Криптосистема RSA#
- Вначале выбирается два достаточно больших простых числа p и q и вычисляется модуль n = p * q. Числа p и q сверхсекретно, модуль n – открытое.
- Далее вычисляется функция Эйлера f(n) = (p-1)(q-1), выбирается число е такое, что \text{НОД} (е, f(n)) = 1.
-
Параметр е служит открытым ключом шифрования. Значение f(n) держится в секрете. Из того что \text{НОД}(e, f(n)) = 1, можно однозначно вычислить число d, такое, что
То есть d – открытый элемент к е в группе Z*f(n) значение d является секретным ключом дешифрования. -
В качестве платформы для единиц исходного текста выберет Z_{n}. Единицами шифрованного текста также будут элементы Z_{n}.
Единицы шифротекста (обозначаем обычно C) получается из единиц исходного текста m по следующему правилу:
С=me(\text{mod } n)
C записывается стандартным именем, т.е. 0\leq c\leq n-1
- Дешифрование производится следующим образом:
m=(me)d(\text{mod } n)
Пусть \text{НОД }(m,n)=1. Тогда m\in Z_{n}^{*}, и |Z_{n}^{*}|=(n). По теореме Эйлера m^{\phi(n)}=1. Равенство
Вычисляем:
\text{НОД }(m,n)=1 является необходимым условием при RSA во многих книгах, но утверждается, что m=m^{ed}(\text{mod } n) \forall m
Идентификация и аутентификация#
Определение: аутентификацией называется процедура, с помощью которой проверяющий устанавливает законность идентификации пользователя в информационной системе.
Результатом аутентификации является принятие или отклонение поступившего от пользователя требования.
Требования к протоколу аутентификации
1. Пользователь должен иметь возможность доказать законность своей идентификации, а проверяющий должен иметь возможность проверить это;
2. Вероятность отклонения правильного доказательства и вероятность принятия неправильного должны быть пренебрежимо малы
3. Процедура аутентификации должна быть устойчива к подбору и подделке.
Идентификация базируется на одном из следующих признаков или их комбинации:
1. Знание его-либо (пароля, pin, доказательство некоторого результата и т.д.);
2. Возможность предъявления чего-либо (смарт-карты, паспорт и т.д.);
3. Возможность проверки индивидуальных особенностей (отпечатки пальцев, подписи, голоса и т.д.)
Различают сильную и слабую аутентификацию. Пароль и pin - примеры слабой аутентификации.
В UNIX
(короче говоря в файле хранится хеш пароля)
Файл паролей содержит одностороннюю функцию, хранит образ при этой функции известного текста, а сам пароль используется как ключ для этой функции
При вводе пользователем пароля система генерирует на его основе ключ шифрования и шифрует известный текст, а затем сравнивает шифровку с первоначальной шифровкой, полученной в момент образования пароля.
PIN, используется как фиксированный пароль, обычно совместно с каким-либо физическим носителем. PIN обычно короткий. Поэтому применяется дополнительные средства защиты.
Passkey называется технология, при которой пароль пользователя перерабатывается односторонней функцией в ключ шифрования.
Одноразовые пароли - имеется общий список допустимых пар паролей. Пользователь выбирает одну из пар и сообщает системе. А система понимает, что правильный пароль - это второй элемент пары. Каждая пара используется только один раз.
Доказательства с нулевым разглашением#
Свойства нулевого разглашения означает, что пользователь доказывает знание чего-либо таким образом, что по доказательству невозможно установить само знание.
Протокол Фиата-Шамира
1 - Какой-то центр T, которому доверяют все пользователи, выбирают открытый модуль n=pq, равный произведению различных больших секретных простых чисел p,q. Произвольный пользователь A выбирает секретное число 1sn-1, взаимно просто с n: НОД(s,n)=1. Далее A вычисляет v=s2(mod n) и регистрирует v в центре T в качестве открытого данного.
2 - Проводится трехшаговый интерактивный процесс, в результате которого пользователь A идентифицирует себя для пользователя B, доказывая знание S. Далее приводятся передаваемые данные.
2.1 - A выбирает случайное число r, вычисляет его квадрат
и передает x для B
2.2 - B случайным образом выбирает число e \in \{0,1\} и передает его A
3 - A вычисляет y=rs^e(\text{mod }n) и передает его B.
4 - Если e=0, то y=r(\text{mod }n). В этом случае проверку дает равенство
Если e=1, то y=rs(\text{mod }n), тогда
что приводит к правильному выводу.
Криптостойкость этого протокола основывается на трудности вычисления квадратных корней из произвольных элементов Z_{n}, где n=pq - произведение различных больших простых секретных чисел.
Допустим A подменили некоторым C. При этом S ему неизвестен. Может ли он обмануть B? Ответ - может, если угадает случайный ответ e.
Т.е. обмануть можно с вероятность ½.
Поэтому протокол проводится в t раундов и тогда вероятность обмана будет \frac{1}{2t}. При достаточно большом t вероятность угадать будет мала.