[Список тем] [Вступление к этой теме] Страницы темы: [1] [2]
Защита компьютерных данных от несанкционированного доступа, искажения и уничтожения в настоящее время является серьезной социальной проблемой. Применяются различные подходы к решению этой проблемы.
Этот раздел посвящен обсуждению методов кодирования, применяемых в последнем случае.
Шифрование — это кодирование данных с целью защиты от
несанкционированного доступа.
Процесс кодирования сообщения называется шифрованием (или зашифровкой),
а процесс декодирования — расшифровыванием (или расшифровкой).
Само кодированное сообщение называется шифрованным (или просто шифровкой),
а применяемый метод называется шифром.
Основное требование к шифру состоит в том, чтобы расшифровка (и, может быть,
зашифровка) была возможна только при наличии санкции, то есть некоторой
дополнительной информации (или устройства), которая называется ключом шифра.
Процесс декодирования шифровки без ключа называется дешифрованием (или
дешифрацией, или просто раскрытием шифра).
Область знаний о шифрах, методах их создания и раскрытия называется
криптографией (или тайнописью).
Свойство шифра противостоять раскрытию называется криптостойкостью (или
надежностью) и обычно измеряется сложностью алгоритма дешифрации.
Отступление |
---|
В практической криптографии криптостойкость шифра оценивается из экономических соображений. Если раскрытие шифра стоит (в денежном выражении, включая необходимые компьютерные ресурсы, специальные устройства и т. п.) больше, чем сама зашифрованная информация, то шифр считается достаточно надежным. |
Пусть имеется датчик псевдослучайных чисел, работающий по некоторому
определенному алгоритму. Часто используют следующий алгоритм:
Ti+1:= (а * Ti + b) mod c,
где Тi — предыдущее псевдослучайное число,
Ti+1 — следующее псевдослучайное число, а коэффициенты
a, b, с постоянны и хорошо известны. Обычно с = 2n, где n
— разрядность процессора, а mod 4 = 1, а b — нечетное.
В этом случае последовательность псевдослучайных чисел имеет период с.
Процесс шифрования определяется следующим образом. Шифруемое сообщение
представляется в виде последовательности слов S0,
S1, ..., каждое длины n, которые складываются по модулю 2 со
словами последовательности T0, T1, ..., то есть
Ci := Si A Ti.
Последовательность Т0, T1, ... называется гаммой
шифра.
Процесс расшифровывания заключается в том, чтобы еще раз сложить шифрованную
последовательность с той же самой гаммой шифра:
Si := Ci A Ti.
Ключом шифра является начальное значение Т0, которое
является секретным и должно быть известно только отправителю и получателю
шифрованного сообщения.
Замечание |
---|
Шифры, в которых для зашифровки и расшифровки используется один и тот же ключ, называются симметричными. |
Отступление |
---|
Это очень простой, и эффективный метод часто применяют “внутри” программных систем, например, для защиты данных на локальном диске. Для защиты данных, передаваемых по открытым каналам связи, особенно в случае многостороннего обмена сообщениями, этот метод применяют не так часто, поскольку возникают трудности с надежной передачей секретного ключа многим пользователям. |
Описанный в предыдущем подразделе метод шифрования обладает существенным
недостатком. Если известна хотя бы часть исходного сообщения, то все сообщение
может быть легко дешифровано. Действительно, пусть известно одно исходное слово
Si. Тогда
Ti := Ci A Si.
и далее вся правая часть гаммы шифра определяется по указанной формуле датчика
псевдослучайных чисел.
Замечание |
---|
На практике часть сообщения вполне может быть известна злоумышленнику. Например, многие текстовые редакторы помещают в начало файла документа одну и ту же служебную информацию. Если злоумышленнику известно, что исходное сообщение подготовлено в данном редакторе, то он сможет легко дешифровать сообщение. |
Наиболее надежным симметричным шифром считается DES (Data Encryption
Standard), в котором используется сразу несколько методов повышения
криптостойкости.
В настоящее время широкое распространение получили шифры с открытым ключом.
Эти шифры не являются симметричными — для зашифровки и расшифровки
используются разные ключи. При этом ключ, используемый для зашифровки,
является открытым (не секретным) и может быть сообщен всем желающим, отправить
шифрованное сообщение, а ключ, используемый для расшифровки, является закрытым
и хранится в секрете получателем шифрованных сообщений. Даже знание всего
зашифрованного сообщения и открытого ключа, с помощью которого оно было
зашифровано, не позволяет дешифровать сообщение (без знания закрытого ключа).
Для описания метода шифрования с открытым ключом нужны некоторые факты из
теории чисел, изложенные (без доказательств) в следующем подразделе.
В этом подразделе все числа целые. Говорят, что число a сравнимо по
модулю n с числом b (обозначение: а
b (mod n)), если а и b при делении на n дают один и
тот же остаток:
a b (mod n): = a mod n = b mod n.
Отношение сравнимости рефлексивно, симметрично и транзитивно и является
отношением эквивалентности. Классы эквивалентности по отношению сравнимости
(по модулю n) называются вычетами (по модулю n). Множество
вычетов по модулю n обозначается Zn. Обычно из
каждого вычета выбирают одного представителя — неотрицательное число, которое
при делении на n дает частное 0. Это позволяет считать, что
Zn = {0, 1, 2, ..., n - 1}, и упростить обозначения.
Над вычетами (по модулю n) определены операции сложения и умножения по
модулю n, обозначаемые, соответственно, +n и
•n и определяемые следующим образом:
a +n b:= (a + b) mod n, a •n b:= (а • b)
mod n.
Замечание |
---|
Если из контекста ясно, что подразумеваются операции по модулю n, то индекс n опускается. |
Замечание |
---|
Числа а и b называются взаимно простыми, если их наибольший общий делитель равен 1 |
Замечание |
---|
Если n — простое число, то <Z*n; +n, *n> является полем. |
Замечание |
---|
Если р — простое число, то (р) = р - 1, и вообще, (n) < n. |
Можно показать, что
где p1, ..., pk — все простые делители n.
Имеет место следующая теорема.
Теорема (Эйлера) |
---|
Если n > 1, то a Z*n aφ(n) 1 (mod n). |
Теорема (малая теорема Ферма) |
---|
Если р > 1 — простое число, то a Z*p ap-1 1 (mod p). |
Теорема |
---|
Если числа n1, ..., nk попарно взаимно простые, число
n = n1n2 ... nk — их произведение, х и а —
целые числа, то x a (mod n) ↔ i 1..k x a (mod ni). |
Замечание |
---|
Последнее утверждение является следствием теоремы, которая известна как ″китайская теорема об остатках″. |
Шифрование с открытым ключом производится следующим образом.
После чего открытый ключ (числа n и е) сообщается всем
отправителям сообщений.
Pi:= (Ci)d mod n.
Теорема |
---|
Шифрование с открытым ключом корректно, то есть в предыдущих обозначениях Pi = Si. |
Пусть S1:= 3, S2:= 1, S3:= 2 (S1, S2, S3 < n = 33). Тогда код определяется следующим образом.
При расшифровке имеем:
Замечание |
---|
Шифры с открытым ключом сравнительно просты в реализации, очень практичны (поскольку нет необходимости пересылать по каналам связи закрытый ключ и можно безопасно хранить его в одном месте) и в то же время обладают высочайшей криптостойкостью. Кажется, что дешифровать сообщение несложно: достаточно разложить открыто опубликованное число n на множители, восстановив числа р и q, и далее можно легко вычислить секретный ключ d. Однако дело заключается в следующем. В настоящее время известны эффективные алгоритмы определения простоты чисел, которые позволяют за несколько минут подобрать пару очень больших простых чисел (по 100 и больше цифр в десятичной записи). В то же время неизвестны эффективные алгоритмы разложения очень больших чисел на множители. Разложение на множители числа в 200 и больше цифр потребовало бы сотен лет работы самого лучшего суперкомпьютера. При практическом применении шифров с открытым ключом используют действительно большие простые числа (не менее 100 цифр в десятичной записи, а обычно значительно больше). В результате вскрыть этот шифр оказывается невозможно, если не существует эффективных алгоритмов разложения на множители (что очень вероятно, хотя и не доказано строго). |
Шифр с открытым ключом позволяет выполнять и многие другие полезные операции,
помимо шифрования и посылки сообщений в одну сторону. Прежде всего,
для организации многосторонней секретной связи каждому из участников
достаточно сгенерировать свою пару ключей (открытый и закрытый),
а затем сообщить всем партнерам свой открытый ключ.
Заметим, что операции зашифровки и расшифровки по существу одинаковы,
и различаются только показателем степени, а потому коммутируют:
М = (Me)d mod n = Мed
mod n = Мde mod n = (Мe)d mod n = М.
Это обстоятельство позволяет применять различные приемы, известные
как цифровая (или электронная) подпись.
Рассмотрим следующую схему взаимодействия корреспондентов
Х и Y. Отправитель Х кодирует сообщение S
своим закрытым ключом (С:= Мd mod n) и посылает получателю
Y пару <S, С>, то есть подписанное сообщение.
Получатель Y, получив такое сообщение, кодирует подпись сообщения
открытым ключом X, то есть вычисляет S':= Cе mod n.
Если оказывается, что S = S', то это означает, что (нешифрованное!)
сообщение S действительно было отправлено корреспондентом X.
Если же S S', то сообщение было искажено при передаче или
фальсифицировано.
Отступление |
---|
В подобного рода схемах возможны различные проблемы, которые носят уже не математический, а социальный характер. Например, допустим, что злоумышленник Z имеет техническую возможность контролировать всю входящую корреспонденцию Y незаметно для последнего. Тогда, перехватив сообщение X, в котором сообщался открытый ключ е, злоумышленник Z может подменить открытый ключ Х своим собственным открытым ключом. После этого злоумышленник сможет фальсифицировать все сообщения Х подписывая их своей цифровой подписью, и, таким образом, действовать от имени X. Другими словами, цифровая подпись удостоверяет, что сообщение S пришло из того же источника, из которого был получен открытый ключ е, но не более того. |
Замечание |
---|
К сожалению, даже эти меры не смогут защитить от злоумышленника Z, сумевшего подменить открытый ключ X. Конечно, в этом случае Z не сможет дешифровать исходное сообщение, но он сможет подменить исходное сообщение фальсифицированным. |
является расстоянием.
[Список тем] [Вступление к этой теме] Страницы темы: [1] [2]