Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Предыстория и основные идеи




Криптосистемы с открытым ключом

Программное шифрование

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

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

Конечно, злоумышленник может добраться до компьютера и незаметно внести нежелательные изменения в программу шифрования. Однако основная проблема состоит отнюдь не в этом. В случае, если злоумышленник в состоянии проникнуть в помещение, где установлен компьютер, он вряд ли будет возиться с программой, а просто установит скрытую камеру в стене, подслушивающее устройство в телефон или датчик для ретрансляции электромагнитного излучения в компьютер. В конце концов, если злоумышленник может беспрепятственно все это сделать, сражение с ним уже проиграно, даже не начавшись.

 

 

Рассмотрим три задачи, решение которых поможет нам лучше понять идеи и методы криптографии с открытым ключом. Все эти задачи имеют важное практическое значение.

Первая задача хранение паролей в компьютере. Мы знаем, что каждый пользователь в сети имеет свой секретный пароль. При входе в сеть пользователь указывает свое имя (несекретное) и затем вводит пароль. Проблема состоит в следующем: если хранить пароль на диске компьютера, то противник может прочитать его, а затем использовать для несанкционированного доступа (особенно легко это сделать, если противник работает системным администратором этой сети). Поэтому необходимо организовать хранение паролей в компьютере так, чтобы такой «взлом» был невозможен.

Вторая задача возникла с появлением радиолокаторов и системы ПВО. При пересечении самолетом границы радиолокатор спрашивает пароль. Если пароль верный, то самолет «свой», в противном случае — «чужой». Здесь возникает такая проблема: так как пароль должен передаваться по открытому каналу (воздушной среде), то противник может прослушивать все переговоры и узнавать правильный пароль. Затем «чужой» самолет в случае запроса повторит перехваченный ранее «правильный» пароль в качестве ответа локатору и будет пропущен.

Третья задача похожа на предыдущую и возникает в компьютерных сетях с удаленным доступом, например, при взаимодействии банка и клиента. Обычно в начале сеанса банк запрашивает у клиента имя, а затем секретный пароль, но противник может узнать пароль, так как линия связи открытая.

Сегодня все эти проблемы решаются с использованием криптографических методов. Решение всех этих задач основано на важном понятии односторонней функции (one-way function).

Определение 3.1. Пусть дана функция

y=f (х), (3.1)

определенная на конечном множестве X (), для которой существует обратная функция

x=f -1 (y). (3.2)

Функция называется односторонней, если вычисление по формуле (3.1) - простая задача, требующая немного времени, а вычисление по (3.2) - задача сложная, требующая привлечения массы вычислительных ресурсов, например, 106-1010 лет работы мощного суперкомпьютера.

В качестве примера односторонней функции рассмотрим следующую:

у = ах mod p, (3.3)

где р - некоторое простое число (т.е. такое, которое делится без остатка только на себя и на единицу), ах— целое число из множества {1, 2,... ,р- 1}. Обратная функция обозначается

х = loga у mod p (3.4)

и называется дискретным логарифмом.

Для того чтобы обеспечить трудность вычисления по (3.4) при использовании лучших современных компьютеров, в настоящее время используются числа размером более 512 бит. На практике часто применяются и другие односторонние функции, например, так называемые хеш-функции, оперирующие с существенно более короткими числами порядка 60-120 бит.

Сначала мы покажем, что вычисление по (3.3) может быть выполнено достаточно быстро. Начнем с примера вычисления числа a 16 mod p. Мы можем записать

a 16mod p = mod p,

т.е.значение данной функции вычисляется всего за 4 операции умножения вместо 15 при «наивном» варианте а·а·...·а. На этом основан общий алгоритм.

Для описания алгоритма введем величину t = [log2 x ] - целую часть log2 x (далее все логарифмы будут двоичные, поэтому в дальнейшем мы не будем указывать основание 2). Вычисляем числа ряда

а, а 2, а 4, а 8,..., (mod p). (3.5)

В ряду (3.5) каждое число получается путем умножения предыдущего числа самого на себя по модулю р. Запишем показатель степени х в двоичной системе счисления:

.

Тогда число у = ах mod p может быть вычислено как

(3.6)

(все вычисления проводятся по модулю р).

Утверждение 3.1 (о сложности вычислений (3.3)). Количество операций умножения при вычислении (3.3) по описанному методу не превосходит 2 log х.

Доказательство. Для вычисления чисел ряда (3.5) требуется t умножений, для вычисления у по (3.6) не более, чем t умножений. Из условия t = [log x ], учитывая, что [log x ] log x, делаем вывод о справедливости доказываемого утверждения.

Важно отметить, что столь же эффективные алгоритмы вычисления обратной функции (3.4) неизвестны.

Используем одностороннюю функцию (3.3) для решения всех трех задач, описанных в начале данного раздела, не забывая, однако, что точно так же может быть использована и любая другая односторонняя функция.

Начнем с хранения паролей в памяти компьютера. Решение задачи основано на том, что пароли вообще не хранятся. Точнее, при регистрации в сети пользователь набирает свое имя и пароль; пусть, например, его имя - «фрукт», а пароль - «абрикос». Компьютер рассматривает слово «абрикос» как двоичную запись числа х и вычисляет (3.3), где а и р — два несекретные числа, возможно даже, всем известные. После этого в памяти компьютера заводится пара (имя, у), где у вычислено по (3.3) при х = пароль. При всех дальнейших входах этого пользователя после ввода пары («фрукт», «абрикос»), компьютер вычисляет по (3.3) новое значение унов с х = «абрикос» и сравнивает с хранящимся в памяти ранее вычисленным значением у. Если yнов совпадает с хранящимся в памяти у, соответствующим данному имени, то это законный пользователь. В противном случае это противник.

Противник мог бы попытаться найти х по у. Однако мы видели, что уже при 90-значных числах для этого потребуется более чем 1022 лет. Таким образом, представленная система хранения пароля весьма надежна и в настоящее время используется во многих реальных операционных системах.

Рассмотрим решение второй задачи (ПВО и самолет). Можно использовать следующий метод. Каждому «своему» самолету присваивается секретное имя, известное системе ПВО и летчику, точнее, бортовому компьютеру. Пусть, например, одному из самолетов присвоено секретное имя СОКОЛ, и этот самолет приближается к границе 01 февраля 2005 года в 12 час. 45 мин. Тогда перед приближением к границе бортовой компьютер самолета формирует слово

СОКОЛ          
имя год месяц день часы минуты

Другими словами, компьютер на самолете и станция ПВО прибавляют к секретному слову сведения о текущем времени и, рассматривая полученное слово как число х, вычисляют у = ах mod р, где а и р не секретны. Затем самолет сообщает число у станции ПВО. Станция сравнивает вычисленное ею число у с полученным от самолета. Если вычисленное и полученное значения совпали, то самолет признается как «свой».

Противник не может взломать эту систему. Действительно, с одной стороны, он не знает секретного слова СОКОЛ и не может найти его по у, так как вычисление х по у занимает, скажем, 1022 лет. С другой стороны, он не может просто скопировать у и использовать его в качестве ответа в будущем, так как время пересечения границы никогда не повторяется и последующие значения у будут отличаться от первоначального.

Рассмотренный вариант решения «задачи ПВО» требует точной синхронизации часов в самолете и в локаторе. Эта проблема достаточно легко решается. Например, служба навигации постоянно передает метки времени в открытом виде (время не секретно), и все самолеты и локаторы используют эти метки для синхронизации своих часов.

 




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


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


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



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




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