Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование односторонней функции для решения задач




Сравнение вычислений прямой и обратной функций

Эффективное возведение в степень.

Сначала кажется, что для возведения в степень ax требуется (x-1) умножение. Действительно a16 = a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*- 15 умножений. Однако a16 = (((a2) 2) 2) 2– 4 умножения. Для эффективного возведения в степень предлагается следующий алгоритм.

1. Представить степень х как двоичное число с разрядами xi={0,1}, т.е. x=(хtxt 1…x1x0)2. Тем более, что число х в компьютере уже хранится в двоичном виде.

2. Вычислить а, а2, а4, а8, а16, а32,…,а2t. Здесь t умножений. t< log2p.

3. Вычислить произведение тех степеней а2i, для которых xi=1. ax=П а2i│ xi=1. Здесь меньше или равно t умножений.

Число умножений при эффективном возведении в степень не превосходит 2*log2p (axmodp, x<p).

Для вычисления дискретного логарифма одним из самых быстрых методов является метод “шаг младенца-шаг великана”. Он позволяет найти дискретный логарифм за 2 умножений. Покажем, что для больших чисел pвычислениеобратной функции по сравнению с вычислением прямой функции происходит значительно труднее. Т.е. функция y=axmod p является односторонней. Составим следующую таблицу.

Табл. 7.1.

Количество десятичных цифр в числе р Количество умножений для вычисления прямой функции, 2*log2p Количество умножений для вычисления обратной функции, 2*
  2*40=80 2*106
  2*200=400 2*1030
  2*300=600 2*1045

 

90 десятичных цифр соответствует 298 двоичным цифрам или 37 символам.

Рассмотрим компьютер, который способен умножить два 90-значных числа за 10-14 секунды или 100 триллионов пар чисел за одну секунду. Таких компьютеров пока не существует.

Тогда прямая функция вычисляется за tпр = 600*10-14 = 6*10-12секунд.

Обратная функция вычисляется за tобр = 2*1045*10-14 =2*1031секунд = 1022лет.

Видно, что вычисление обратной функции для 90-значных десятичных чисел (37-символьных паролей) практически невозможно.

Расскажем, как решаются поставленные в пункте 7.1 задачи.

1) Хранение паролей в компьютере.

Идея состоит в том, чтобы пароли в явном виде вообще не хранить в компьютере. Пусть имя пользователя «Конфета», а пароль «Тузик». Компьютер рассматривает слово «Тузик» как число «х» и вычисляет y=axmod p, где «а» и «р» известные всем числа. После первого ввода в памяти компьютера заводится пара («Конфета»;у). При дальнейших входах после ввода пары («Конфета»; «Тузик») компьютер вычисляет «у новое» и сравнивает с хранящимися у него в памяти. Если у новое=у, то это легальный пользователь. Злоумышленник может прочитать «у» и попытаться по нему вычислить пароль «х», но для 37-символьных паролей на это уйдет 1022 лет.

2) Банк-клиент.

Здесь имеется два варианта.

Вариант а. Пусть клиент банка имеет секретное имя «Титан», известное только банку и клиенту. Клиент посылает финансовый документ в 11.56 12 октября 2012 года. Компьютер клиента формирует слово «Титан 11561210 2012», рассматривает его как число «х», вычисляет y=axmod p, посылает «у» в банк по телефону. Банк вычисляет соответствующие «у» для всех зарегистрированных клиентов (с учетом времени). Если полученный от клиента «у» совпадает с одним из вычисленных, то клиент свой. Если клиент свой, то банк принимает сопутствующий финансовый документ.

Противник не может взломать эту систему, т.к.:

1) он не знает секретного слова «Титан»,

2) он не может найти его по перехваченному «у», т.к. это практически невозможно,

3) он не может скопировать «у» и повторить, т.к. время все же разное и от одного клиента поступают разные «у».

У этого варианта есть проблемы:

· требуется точная синхронизация часов клиента и банка. Решается приемом меток мирового времени.

· Противник может перехватить «у» и повторить его в течение одной минуты.

· Клиент посылает «у» в конце 56 минуты, а банк получает его в начале 57-й.

Вариант б. Пусть имеется дополнительный открытый канал связи от банка к клиенту, та же самая телефонная сеть. Каждый клиент имеет секретное имя, например, «Титан». Получив сигнал клиента о необходимости связи, банк посылает ему случайное слово «а» (вызов). Клиент вычисляет y=axmod p, где х = «Титан», и посылает «y» в банк. Банк проводит те же вычисления для всех зарегистрированных клиентов и сравнивает вычисленные «у» с полученным. Здесь не нужно синхронизировать часы. Противник не может повторить «у», т.к. вызов «а» все время разный. Противник не может вычислить «у», т.к. не знает «х». Противник не может вычислить секретный «х» по известным ему «a,p,y».

3) Свой-чужой самолет.

Решается аналогично второй задаче. Оба рассмотренных варианта формирования пароля применяются в реальных системах «свой-чужой». В решении Банк заменяется на ПВО, Клиент заменяется Самолетом, Телефон – воздушной средой.

Вариант а. Пусть свой самолет имеет свое секретное имя, например, «Орел», известное только ПВО и самолету. Самолет приближается к границе в 17.35 31\03\2012. Бортовой компьютер формирует слово «Орел 17 35 31 03 2012», рассматривает его как число х, вычисляет y=axmod p, посылает у на ПВО. ПВО вычисляет соответствующие удля всех зарегистрированных самолетов (с учетом времени). Если полученный у совпадает с одним из вычисленных, то самолет свой. Противник не может взломать эту систему, т.к.:

1) он не знает секретного слова «Орел».

2) он не может найти его по перехваченному у, т.к. это практически невозможно.

3) он не может скопировать у и повторить, т.к. время все же разное.

У этого варианта есть проблемы:

1) Требуется точная синхронизация часов самолета и ПВО.

2) Противник может перехватить у и повторить его в течение одной минуты.

3) Самолет посылает «у» в конце 35 минуты, а ПВО получает его в начале 36минуты.

Вариант б. Вариант возникает при наличии дополнительного открытого канала связи от ПВО к самолету. Каждый свой самолет имеет секретное имя, например, «Орел». Обнаружив самолет, ПВО посылает ему случайное слово «а» (вызов), самолет вычисляет y=axmod p, где х = «Орел», и посылает на ПВО. ПВО проводит те же вычисления для всех своих самолетов и сравнивает вычисленное«у» с полученным. Здесь не нужно синхронизировать часы. Противник не может повторить у, т.к. вызов а все время разный. Противник не может вычислить секретный х по известным ему a,p,y.

Задача «свой-чужой» была исторически первой, где использовались односторонние функции.




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


Дата добавления: 2014-01-04; Просмотров: 273; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.