Файл: Дискретная мат-ка_УП.pdf

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

111

эквивалентности

 

по

 

отношению

 

сравнимости

  (

по

 

модулю

  п)

 

на

-

зываются

  вычетами

  (

по

 

модулю

  п)

Множество

 

вычетов

 

по

 

мо

-

дулю

  п

 

обозначается

  Z

n

Обычно

 

из

 

каждого

 

вычета

 

выбирают

 

одного

 

представителя

 – 

неотрицательное

 

число

которое

 

при

 

де

-

лении

 

на

  п

 

дает

 

частное

 0. 

Это

 

позволяет

 

считать

что

  Z

n

 = 

={0,1,2,…

,  п – 1}, 

и

 

упростить

 

обозначения

Над

 

вычетами

  (

по

 

модулю

 

n

определены

 

операции

 

сложения

 

и

 

умножения

 

по

 

мо

-

дулю

 

n

обозначаемые

соответственно

, +

n

 

и

  •

n

   

и

 

определяемые

 

следующим

 

образом

а +

 n

 

b : =(а + b) mod n

а

 •

 n

 

b: =(

а

 • 

b) mod п. 

Если

 

из

 

контекста

 

ясно

что

 

подразумеваются

 

операции

 

по

 

модулю

 п

то

 

индекс

 

n 

опускается

Легко

 

видеть

что

 <Z

n

+

п

образует

 

абелеву

 

группу

, a <Z

n

;  

+

 n

,

 

 n

 > – 

коммутативное

 

кольцо

 

с

 

единицей

Рассмотрим

 Z*

n

 – 

подмножество

 Z

n

 

чисел

взаимно

 

простых

 

с

 п

. 

Можно

 

показать

что

 (Z*

n

; •

 n

) – 

абелева

 

группа

Таким

 

обра

-

зом

для

 

чисел

 

из

 

множества

 Z

*

п

 

существуют

 

обратные

 

по

 

умно

-

жению

 

по

 

модулю

 п

. 

Функция

 

ϕ

(n): = |Z*

n

 | 

называется

 функцией

 Эйлера. 

Если

 р

 – 

простое

 

число

то

 

ϕ(р) р – 1, 

и

 

вообще

ϕ(п) п. 

ТЕОРЕМА (

Эйлера

). Если

 п > 1, то 

∈ Z*

n

а

ϕ

(п}

 

 1 (mod n). 

Отсюда

 

непосредственно

 

выводима

 

ТЕОРЕМА  (

малая

 

теорема

 

Ферма

).  Если

  р > 1 – простое 

число, то 

∈ Z*

p

а

p–1

 

≡ 1 (mod p). 

Имеет

 

место

 

следующее

 

утверждение

ТЕОРЕМА.  Если  числа  п

1

,..., n

k

  попарно  взаимно  простые, 

число п – п

1

п

2

…п

k

 – их произведение, х и а – целые числа, то 

х 

 a (mod п) ⇔ ∀ i ∈ 1..k x  a (mod n)

i

. 

Последнее

 

утверждение

  является

 

следствием

 

теоремы

ко

-

торая

 

известна

 

как

 «

китайская

 

теорема

 

об

 

остатках

». 

 
 
 
 


background image

 

112

Шифрование с открытым ключом 
 

Шифрование

 

с

 

открытым

 

ключом

 

производится

 

следующим

 

образом

1. 

Получателем

 

сообщений

 

производится

 

генерация

 

откры

-

того

 

ключа

  (

пара

 

чисел

  п

 

и

  е

и

 

закрытого

 

ключа

  (

число

 

d). 

Для

 

этого

 

выбираются

 

два

 

простых

 

числа

 р

 

и

 

q; 

 

определяется

 

первая

 

часть

 

открытого

 

ключа

 п

:=рq; 

 

определяется

 

вторая

 

часть

 

открытого

 

ключа

 – 

выбирается

 

небольшое

 

нечетное

 

число

 е

взаимно

 

простое

 

с

 

числом

 

(р – 1)(q – 1) 

(

заметим

что

 

(р – 1)(q – 1) = рq(1 – 1/р)(1 – 1/q) = 

ϕ(n)); 

 

определяется

 

закрытый

 

ключ

d: = 

е

–1

 mod ((р

 – 1)(q – 1)). 

После

 

чего

 

открытый

 

ключ

  (

числа

  п

  и  е) 

сообщается

 

всем

 

отправителям

 

сообщений

2. 

Отправитель

 

шифрует

 

сообщение

  (

разбивая

 

его

если

 

нужно

на

 

слова

 

S

i

 

длиной

 

менее

 log

2

 п

 

разрядов

): 

C

i

 : =(S

i

)

e

 mod 

и

 

отправляет

 

получателю

3. 

Получатель

 

расшифровывает

 

сообщение

 

с

 

помощью

 

за

-

крытого

 

ключа

 

d: 

P

i

: =(C

i

)

d

 mod n. 

ТЕОРЕМА. Шифрование с открытым ключом корректно, 

то есть в предыдущих обозначениях P

i

 = 

Si. 

 
Пример
 

Генерация

 

ключей

1. р: = 3, 

q: = 11; 

2. 

n:=pq = 3* 11 = 33; 

3. (р 

− l)(q – 1) = 2 * 10 = 20, е: = 7; 

4. 

d:= 7

–1

 mod 20 = 3, (7*3 mod 20 = 1). 

Пусть

 S

1

: = 3, S

2

: = 1, S

3

: = 2 (S

1

, S

2

S

3

 < п = 33). 

Тогда

 

код

 

определяется

 

следующим

 

образом

1. 

C

1

 : = 3

7

 mod 33 = 2187 mod 33 = 9; 

2. С

2

 : = 1

7

 mod 33 = 1 mod 33 = 1; 

3. 

С

3

 : =2

7

 mod 33 = 128 mod 33 = 29. 

При

 

расшифровке

 

имеем

1. 

P

1

 : = 9

3

 mod 33 = 729 mod 33 = 3; 


background image

 

113

2. 

P

: = l

3

 mod 33 = 1 mod 33 = 1; 

3. Р

: = 29

3

 mod 33 = 24389 mod 33 = 2. 

Шифры

 

с

 

открытым

 

ключом

 

сравнительно

 

просты

 

в

 

реали

-

зации

очень

 

практичны

  (

поскольку

 

нет

 

необходимости

 

пересы

-

лать

 

по

 

каналам

 

связи

 

закрытый

 

ключ

 

и

 

можно

 

безопасно

 

хра

-

нить

 

его

 

в

 

одном

 

месте

и

 

в

 

то

 

же

 

время

 

обладают

 

высочайшей

 

криптостойкостью

Кажется

что

 

дешифровать

 

сообщение

 

не

-

сложно

достаточно

 

разложить

 

открыто

 

опубликованное

 

число

  п

 

на

 

множители

восстановив

 

числа

 р

 

и

 

q, 

и

 

далее

 

можно

 

легко

 

вы

-

числить

 

секретный

 

ключ

 

d. 

Однако

 

дело

 

заключается

 

в

 

следую

-

щем

В

 

настоящее

 

время

 

известны

 

эффективные

 

алгоритмы

 

опре

-

деления

 

простоты

 

чисел

которые

 

позволяют

 

за

 

несколько

 

минут

 

подобрать

 

пару

 

очень

 

больших

 

простых

 

чисел

  (

по

 100 

и

 

больше

 

цифр

 

в

 

десятичной

 

записи

). 

В

 

то

 

же

 

время

 

неизвестны

 

эффектив

-

ные

 

алгоритмы

 

разложения

 

очень

 

больших

 

чисел

 

на

 

множители

Разложение

 

на

 

множители

 

числа

 

в

 200 

и

 

больше

 

цифр

 

потребова

-

ло

 

бы

 

сотен

 

лет

 

работы

 

самого

 

лучшего

 

суперкомпьютера

При

 

практическом

 

применении

 

шифров

 

с

 

открытым

 

ключом

 

исполь

-

зуют

 

действительно

 

большие

 

простые

 

числа

 (

не

 

менее

 100 

цифр

 

в

 

десятичной

 

записи

а

 

обычно

 

значительно

 

больше

). 

В

 

результате

 

вскрыть

 

этот

 

шифр

 

оказывается

 

невозможно

если

 

не

 

существует

 

эффективных

 

алгоритмов

 

разложения

 

на

 

множители

  (

что

 

очень

 

вероятно

хотя

 

и

 

не

 

доказано

 

строго

). 

 
8.7 

Цифровая

 

подпись

 

 

Шифр

 

с

 

открытым

 

ключом

 

позволяет

 

выполнять

 

и

 

многие

 

другие

 

полезные

 

операции

помимо

 

шифрования

 

и

 

посылки

 

со

-

общений

 

в

 

одну

 

сторону

Прежде

 

всего

для

 

организации

 

много

-

сторонней

 

секретной

 

связи

 

каждому

 

из

 

участников

 

достаточно

 

сгенерировать

 

свою

 

пару

 

ключей

 (

открытый

 

и

 

закрытый

), 

а

 

затем

 

сообщить

 

всем

 

партнерам

 

свой

 

открытый

 

ключ

Заметим

что

 

операции

 

зашифровки

 

и

 

расшифровки

 

по

 

су

-

ществу

 

одинаковы

 

и

 

различаются

 

только

 

показателем

 

степени

а

 

потому

 

коммутируют

М = (M

e

)

d

 mod n = М

ed

 mod n = M

de

 mod n = (M

e

)

d

 mod n = M. 

Это

 

обстоятельство

 

позволяет

 

применять

 

различные

 

прие

-

мы

известные

 

как

 цифровая

 (

или

 электронная

подпись


background image

 

114

Рассмотрим

 

следующую

 

схему

 

взаимодействия

 

корреспон

-

дентов

 

и

 

Y. 

Отправитель

 

кодирует

 

сообщение

 

своим

 

закры

-

тым

 

ключом

 

(С: = M

d

 mod n) 

и

 

посылает

 

получателю

 

пару

 <

S, 

С>, 

то

 

есть

 

подписанное

 

сообщение

Получатель

 

Y, 

получив

 

та

-

кое

 

сообщение

кодирует

 

подпись

 

сообщения

 

открытым

 

ключом

 

X, 

то

 

есть

 

вычисляет

 

S': = C

e

 mod п. 

Если

 

оказывается

что

 

S = S''

то

 

это

 

означает

что

 (

нешифрованное

!) 

сообщение

 

действитель

-

но

 

было

 

отправлено

 

корреспондентом

 

X. 

Если

 

же

 

 S', 

то

 

сооб

-

щение

 

было

 

искажено

 

при

 

передаче

 

или

 

фальсифицировано

В

 

подобного

 

рода

 

схемах

 

возможны

 

различные

 

проблемы

которые

 

носят

 

уже

 

не

 

математический

а

 

социальный

 

характер

Например

допустим

что

 

злоумышленник

 

имеет

 

техническую

 

возможность

 

контролировать

 

всю

 

входящую

 

корреспонденцию

 

незаметно

 

для

 

последнего

Тогда

перехватив

 

сообщение

 

X, 

в

 

ко

-

тором

 

сообщался

 

открытый

 

ключ

  е

злоумышленник

 

может

 

подменить

 

открытый

 

ключ

 

своим

 

собственным

 

открытым

 

клю

-

чом

После

 

этого

 

злоумышленник

 

сможет

 

фальсифицировать

 

все

 

сообщения

 

X, 

подписывая

 

их

 

своей

 

цифровой

 

подписью

и

таким

 

образом

действовать

 

от

 

имени

 

X. 

Другими

 

словами

цифровая

 

подпись

 

удостоверяет

что

 

сообщение

 S 

пришло

 

из

 

того

 

же

 

ис

-

точника

из

 

которого

 

был

 

получен

 

открытый

 

ключ

 

е

но

 

не

 

более

 

того

Можно

 

подписывать

 

и

 

шифрованные

 

сообщения

Для

 

этого

 

отправитель

 

сначала

 

кодирует

 

своим

 

закрытым

 

ключом

 

сооб

-

щение

 5, 

получая

 

цифровую

 

подпись

  С

а

 

затем

 

кодирует

 

полу

-

ченную

 

пару

  <

S,  С> 

открытым

 

ключом

 

получателя

 

У

Получив

 

такое

 

сообщение

У

 

сначала

 

расшифровывает

 

его

 

своим

 

закры

-

тым

 

ключом

а

 

потом

 

убеждается

 

в

 

подлинности

 

полученного

 

со

-

общения

сравнив

 

его

 

с

 

результатом

 

применения

 

открытого

 

клю

-

ча

 

к

 

подписи

 С

. 

К

 

сожалению

даже

 

эти

 

меры

 

не

 

смогут

 

защитить

 

от

 

зло

-

умышленника

 

Z, 

сумевшего

 

подменить

 

открытый

 

ключ

 

X. 

Конеч

-

но

в

 

этом

 

случае

 

не

 

сможет

 

дешифровать

 

исходное

 

сообщение

но

 

он

 

сможет

 

подменить

 

исходное

 

сообщение

 

фальсифицирован

-

ным

Вопросы

затронутые

 

в

 

этой

 

главе

очень

 

существенны

 

для

 

практических

 

информационных

 

технологий

которые

 

невозмож

-


background image

 

115

ны

 

без

 

кодирования

сжатия

 

данных

 

и

 

шифрования

Разумеется

в

 

реальных

 

современных

 

программах

 

применяются

 

более

 

изо

-

щренные

по

 

сравнению

 

с

 

описанными

 

здесь

 

простейшими

 

вари

-

антами

методы

.  

 
Упражнения 
 
1. 

Является

 

ли

 

схема

 

алфавитного

 

кодирования

 

<а 

→0, b→ 10, c → 011, d → 1011, е → 1111> 

префиксной

разделимой

6.2. 

Построить

 

оптимальное

 

префиксное

 

алфавитное

 

коди

-

рование

 

для

 

алфавита

 {а

, b

с

d} 

со

 

следующим

 

распределением

 

вероятностей

 

появления

 

букв

р

а

 = 1/2, p

b

 = 1/4, p

с

 = 1/8, p

d

 = 1/8. 

6.3. 

Показать

что

 

для

 

несимметричных

 

ошибок

 

функция

 

(

)

{

}

{

}

{

}

=

''

,

''

'

''

,

''

'

min

,

''

'

,

'

''

'

,

'

min

max

*

''

'

min

2

''

,

'

β

β

β

β

β

β

β

β

β

β

β

δ

δ

δ

δ

δ

E

E

E

E

B

d

является

 

расстоянием

6.4. 

Проследить

 

работу

 

алгоритма

 

сжатия

 

Лемпела

-

Зива

 

на

 

примере

 

следующего

 

исходного

 

текста

: abaabaaab. 

6.5. 

Пусть

 

в

 

системе

 

программирования

 

имеются

 

процедура

 

Randomize, 

которая

 

получает

 

целочисленный

 

параметр

 

и

 

инициа

-

лизирует

 

датчик

 

псевдослучайных

 

чисел

и

 

функция

 

без

 

парамет

-

ров

 Rnd, 

которая

 

выдает

 

следующее

 

псевдослучайное

 

число

 

в

 

ин

-

тервале

 [0,1]. 

Составить

 

алгоритмы

 

шифровки

 

и

 

расшифровки

 

с

 

закрытым

 

ключом