Вы находитесь на странице: 1из 240

ОБРАЗОВАТЕЛЬНАЯ МАНГА

ЗАНИМАТЕЛЬНАЯ ИНФОРМАТИКА МАНГА

КРИПТОГРАФИЯ

ЗАНИМАТЕЛЬНАЯ ИНФОРМАТИКА
Митани Масааки
Сато Синъити
Хиноки Идэро

КРИПТОГРАФИЯ
КРИПТОГРАФИЯ
Из музея искусств один за другим дерзко кра-
дут ценные произведения, а преступник каждый
раз оставляет зашифрованные сообщения. Про-
ницательный инспектор Мэгуро, его сестра - ма-
тематик Рика, и эрудированная журналистка
Ёнэда Рио бросают вызов дерзкому похитите-
лю, но для этого им требуется разгадать за-
гадку шифра.
Книга познакомит читателя с общими понятиями
криптологии и лежащими в её основе интересны-
ми математическими закономерностями, а также
с тем, как криптография используется в нашей
повседневной жизни.
Митани Масааки, Сато Синъити
Хиноки Идэро
Verte Corp.

ISBN 978-5-97060-603-2

Интернет-магазин: www.dmkpress.com
Книга-почтой: orders@alians-kniga.ru
Оптовая продажа: “Альянс-книга“.
(499)782-3889. books@alians-kniga.ru www.дмк.рф 9 785970 606032
Занимательная информатика
Криптография
Манга
マンガでわかる

暗号  
三谷 政昭・佐藤 伸一/共著
ひのき いでろう/作画
ウェルテ/制作
マЗン
ОБРА О ВガАで
Т Еわ
Л ЬかНる
АЯ МАНГА


  号
ЗАНИМАТЕЛЬНАЯ ИНФОРМАТИКА
КРИПТОГРАФИЯ
三谷 政昭・佐藤 伸一/共著
ひのき いでろう/作画
Митани Масааки, Сато Синъити
ウェルテ/制作

Хиноки Идэро
Перевод
А. Б. Клионского,
Научный редактор
Д. М. Белявский

Москва
ДМК Пресс, 2019
УДК 003.26
ББК 32.81
М66

Митани Масааки, Сато Синъити


М66 Занимательная информатика. Криптография. Манга / Мита-
ни Масааки, Сато Синъити (авторы), Хиноки Идэро (худож.);
пер. с яп. Клионского А. Б., научн. ред. Д. М. Белявский. – М.:
ДМК Пресс, 2019. – 238 с.: ил.  – (Серия «Образовательная
манга»). – Доп. тит. л. яп.
ISBN 978-5-97060-603-2
Из музея исскуств один за другим дерзко крадут ценные произведе-
ния, а преступник каждый раз оставляет зашифрованные сообщения.
Проницательный инспектор Мэгуро, его сестра – математик Рика, – и
эрудированная журналистка Ёнэда Рио бросают вызов дерзкому похити-
телю, но для этого им требуется разгадать загадку шифра. Книга позна-
комит читателя с общими понятиями криптологии и лежащими в её ос-
нове интересными математическими закономерностями, а также с тем,
как криптография используется в нашей повседневной жизни.

.
УДК 003.26
ББК 32.81

Original Japanese edition


Manga de wakaru Ango (The Manga Guide to Cryptology)
By Mitani Masaaki and Sato Shinichi (Authors), Hinoki Idero (Illustrator) and
Verte Corp. (Producer)
Japan language edition copyright © 2007 by Verte Corp. and Mitani Masaaki
Russian language edition copyright © 2019 by DMK Press
Все права защищены. Никакая часть этого издания не может быть воспроизведена в любой форме или
любыми средствами, электронными или механическими, включая фотографирование, ксерокопирование
или иные средства копирования или сохранения информации, без письменного разрешения издательства.

ISBN 978-4-274-06674-0 (яп.) Copyright © 2007 by Mitani Masaaki, Sato Shinichi and Verte Corp.
ISBN 978-5-97060-603-2 (рус.) © Издание, перевод ДМК Пресс, 2019
Предисловие
Развитие информационного общества, ядром которого является сеть ин-
тернет, сделало нашу жизнь очень удобной, позволив свободно получать
информацию, публикуемую на веб-сайтах, общаться по электронной почте,
пользоваться услугами интернет-магазинов и интернет-банкинга.
Но, наслаждаясь этими удобствами, нам всем почему-то часто приходит-
ся слышать вызывающие некоторое беспокойство слова: «информационная
безопасность», «защита личной информации» и, наконец, «шифрование».
В чём же заключается проблема?
Дело в том, что пользоваться сетью – значит обмениваться по ней разно-
образной информацией, в том числе и конфиденциальной, то есть такой,
которую требуется держать в секрете. К ней относятся, например, номера
кредитной карты и банковского счета, история болезни и кредитная исто-
рия, адрес электронной почты и т. п. Попав в руки злоумышленников, та-
кие сведения могут быть использованы для совершения различных престу-
плений, поэтому защита информации, несомненно, является главной зада-
чей в области сетевых технологий. Основой для построения безопасных си-
стем, предоставляющих разнообразные сетевые услуги с надёжной аутен-
тификацией (установлением подлинности) данных, защитой от спуфинга
(злонамеренных действий под видом законных пользователей), перехвата
информации и фальсификации данных является шифрование.
За последние годы в развитии криптографии※ произошёл огромный ска-
чок: она перестала быть уделом только специалистов по информационной
безопасности и прочно вошла в жизнь обычных людей, пользующихся ус-
лугами информационных сетей.
Каким же образом шифрование обеспечивает информационную безопас-
ность и защиту личной информации?
В этой книге на основе манги описываются механизмы шифрования и
его роль в нашей жизни. Объяснения сложных математических понятий,
без которых понимание криптологии невозможно, даются в легком для по-
нимания виде, поэтому вы сможете освоить их без особого напряжения,
просто следя за развитием сюжета. В самом повествовании, конечно же, то-
же заложен шифр, разгадав который, читатель получит дополнительное
удовольствие. Надеюсь, что эта книга поможет вам овладеть базовыми зна-
ниями в области криптологии※ и информационной безопасности.
В завершение хотим поблагодарить коллектив Отдела разработок изда-
тельства Ohmsha и художника Хиноки Идэро, рисовавшего мангу.

Апрель 2007 Авторы



Криптография – раздел криптологии, в котором изучают собственно методы шифрования.
В другом разделе криптологии – криптоанализе, – занимаются поиском уязвимости шифров. V
Содержание
ПРОЛОГ...................................................................................... 1
 目 次
Глава 1
ОСНОВЫ
プロローグ КРИПТОГРАФИИ
1 15
.............................................
1-1 Основные понятия криптографии..........................16
• Термины криптографии........................................................................ 20
第 1 章 暗号の基礎 15
• Связь между ключами Ek и Dk ....................................................................... 21
 1 ー 1 暗号に関する用語 16
1-2 Классические шифры.......................................24
暗号学の基本用語 20
• Шифр Цезаря............................................................................................. 24
      暗号化鍵 k と復号鍵 k の関係
E D 21

• Шифр

одноалфавитной
 1 ー 2 古典的な暗号技術
замены..........................................................
    24
25
• Шифр
многоалфавитной
シーザー暗号 замены (шифр Виженера).
....................
24 26
• Шифр
перестановки................................................................................
換字式暗号 25 27
1-3
Стойкость
шифра............................................28
多表式暗号 26
転置式暗号 27
• Число ключей шифра многоалфавитной замены......................... 32
 1 ー 3 暗号の安全性 28
• Число ключей шифра перестановки................................................. 32
換字式暗号の鍵数 31

• Возможность

криптоанализа................................................................
多表式暗号の鍵数 32
35
• Совершенно
стойкий
転置式暗号の鍵数 шифр...................................................................
32 35
• Типы криптостойкости..........................................................................
解読が可能になる条件 35 37
絶対安全な暗号 35

Глава
2 安全な暗号 37

ОДНОКЛЮЧЕВОЙ ШИФР..................................................45
第 2 章 共通鍵暗号化技術
2-1 Двоичные числа и сложение по модулю 45
2.............46
2-2 Что такое 2 ー одноключевой
1 2 進数と排他的論理和 шифр?...........................57
46
• Особенности
 2 ーодноключевого
2 共通鍵暗号とは шифра................................................
57 62
共通鍵暗号の特徴
2-3 Устройство потокового шифра.............................63 62
 2 ー 3 ストリーム暗号の仕組み 63
2-4 Устройство блочного шифра...............................66
 2 ー 4 ブロック暗号の仕組み 66
• Режим сцепления блоков шифртекста (CBC).................................. 69
CBC モード 69
2-5

Устройство
 
шифра
2 ー 5 DES 暗号の仕組み
DES.....................................70
70
• Основы
строения
сети
Feistel Фейстеля..........................................................71
型暗号の基本構成 71
• Инволюция.
................................................................................................
インボリューション 72 72

VI СОДЕРЖАНИЕ   

• Генерирование ключей шифрования DES....................................... 75
• Устройство нелинейной функции f шифра DES............................ 76
• Обобщённая модель шифрования и расшифрования DES.......... 77
2-6 Шифры 3-DES и AES......................................78
DES の暗号化鍵生成 75
• Общие сведения о шифре AES............................................................ 83
DES の非線形関数 の仕組み
f 76
Пример использования упрощённого DES.....................87
DES による暗号化と復号の基本構成 77

• Преобразование

в двоичные данные.................................................
 2 ー 6 3−DES 暗号と AES 暗号 78
87
• Генерирование
шифртекста
AES 暗号の概要 DES........................................................
83 87
• Расшифрование
 簡易版шифртекста DES.......................................................
DES による暗号化と復号の実際 87 95
• Генерирование
2 進数データへの変換
ключей
шифрования
DES. 87
.................................... 100
DES 暗号文の生成
• Генерирование ключей расшифрования DES. ..............................
87
104
DES 暗号文の復号 95
DES 暗号化鍵の生成 100
Глава

3 DES 復号鍵の生成 104
ШИФР С ОТКРЫТЫМ КЛЮЧОМ............................... 107
3-1 Основы шифра с открытым ключом..................... 108
第 3 章 公開鍵暗号化技術   107
• Основные разновидности шифра с открытым ключом.............. 117
 3 ー 1 公開鍵暗号の基本 108
• Односторонние функции...................................................................... 118
公開鍵暗号方式の主な種類 117
• Рождение
шифра RSA............................................................................
一方向性関数 118 121
3-2
Простые
числа RSA и 暗号の誕生
факторизация.........................
121 122
• Тест на простоту. .....................................................................................
 3 ー 2 素数と素因数分解 122 131
3-3
Модульная
арифметика...................................
素数判定 131 136

• Сложение по ー
 3 3 モジュロ演算  
модулю и вычитание по модулю. 136 139
.........................
モジュロ演算の足し算と引き算 139
• Умножение по модулю и деление по модулю........................... 148
モジュロ演算の掛け算と割り算 148
3-4 Малая теорема Ферма и теорема Эйлера............... 154
 3 ー 4 フェルマーの小定理とオイラーの定理 154
• Ферма
– отец
теории чисел.
数論の父フェルマー . ...............................................................
155 155
• Тест Ферма и псевдопростые
フェルマー法と擬素数 числа.
...............................................
157 157
• Теорема
Эйлера.
.....................................................................................
オイラーの定理 158 158
数学者オイラー 159
• Математик Эйлер................................................................................... 159
2 つの素数の積のオイラー関数 160
• Функция Эйлера от произведения двух простых чисел............ 160
 3 ー 5 RSA 暗号の仕組み 163
3-5 Устройство шифра RSA................................... 163
RSA 暗号の暗号化と復号 165
• Шифрование
и расшифрование
RSA 暗号の鍵の生成法 RSA...............................................
167 165
• Метод
генерирования
ключей RSA..................................................
公開鍵と秘密鍵の作り方 169 167

  
Ⅶ СОДЕРЖАНИЕ VII
• Генерирование открытого и секретного ключей........................ 169
• Генерирование шифртекста RSA....................................................... 171
• Расшифрование RSA............................................................................. 173
3-6 Шифр с открытым ключом и задача дискретного
логарифмирования.
.............................................
RSA 暗号文の生成 171 175
• Задача дискретного логарифмирования........................................
RSA 暗号文の復号 173 176
 3 ーи
• Шифрование 6 公開鍵暗号と離散対数問題
расшифрование Эль-Гамаля. ................................
    175 178

Расширенный 離散対数問題
алгоритм
Евклида.............................. 176 183
ElGamal 暗号の暗号化と復号 178

Глава 4
コラム 拡張ユークリッド互除法    183
КАК ИСПОЛЬЗУЮТ ШИФР НА ПРАКТИКЕ?....... 187
4-1 Гибридные криптосистемы............................... 188
第 4 章 実際に暗号を使うには   187
4-2 Хеш-функция и код аутентификации сообщения..... 192
 4 ー 1 ハイブリッド暗号     188
• Подмена данных.................................................................................... 192
 4 ー 2 ハッシュ関数とメッセージ認証コード     192
• Защита от подмены............................................................................... 194
改ざん 192
• Хеш-функция...........................................................................................
改ざんの対策 194 195
• Спуфинг.
....................................................................................................
ハッシュ関数 195 196
• Защита
от
спуфинга..............................................................................
なりすまし 196 197
• Устройство
なりすましの対策
имитовставки. 197
................................................................... 198
メッセージ認証コードの仕組み 198
• Отказ........................................................................................................... 199
否認とは 199
• Два недостатка имитовставки............................................................ 201
メッセージ認証コードの 2 つの欠点 201
4-3
Цифровая
подпись........................................
 4 ー 3 ディジタル署名      202 202
• Защита
от
отказа. ....................................................................................202
否認の対策 202
• Устройство
цифровой подписи........................................................203
ディジタル署名の仕組み 203
• Атака

посредника. 中間者攻撃 205
..................................................................................205
中間者攻撃の対策 206
• Защита от атаки посредника..............................................................206
証明書と認証局 206
• Сертификат и удостоверяющий центр............................................206
 4 ー 4 公開鍵暗号基盤(PKI)     208
4-4

Инфраструктура

открытых ключей (ИОК)............... 208
Доказательство
с нулевым разглашением...................
コラム ゼロ知識対話証明    219 219
Разъяснение некоторых терминов............................. 225
Список
использованной
 補足解説 литературы.
.........................
  225 227
Предметный
 参考文献
указатель......................................... 228    227
 索引    228

VIII СОДЕРЖАНИЕ   

пролог
プロローグ
отдел
...........
Полицейский участок № 78
某県某市 78 分署
в каком-то городе

Безопасность дорожного движения

Приёмная

目黒ルカ
Мегуро Рика Ме г у р о
目黒順警部
п омощник инспектора

お兄ちゃん
братец, нет!
買ってよぉ!
Ну купи! だめだめ
компьютер
パソコンなんて
для школьни-
女子高生には
цы - слишком
большая
ゼイタクすぎる!
роскошь!

Фшш

он нужен
だって数学の勉強に
мне для изучения
ax + 役立てたいんだもの!
by = математики!
gcd( x
a,b)
y 2

ap - 1≡ 1(mod p)
p -1
p )=
ϕ(
……
хочу!
тр 78-ой
для этого и хвать р,
тр кл а
ц участок,
обычных р слушаю
счётов тр
р, вас.
достаточно! тр
р

грр

что?!
похитили?!

пфу!
Фи!

Музей исскуств
«Мраморный»

Виу

ох, ох ...

виу
проверьте
западное крыло! перекройте вон
тот выход!

восточное
крыло!

3
это была
ふむふむ так... значит,
はぁох! あの『微笑みのマドンナ』の
«улыбка мадонны»
厳重に保管していたはずの
похищена знаменитая
絵は 3 億円もしたんですよ!
не могу стоимостью
картина, которую 驚きました…
名画がいつの間に
тщательно охраняли?
поверить! 300 млн иен!
消えてしまった?

полиция
警察はちゃんと
действительно
見張ってた
хорошо

んですか?
охраняла?

за 警備はカンペキ
безопасностью 見張りを
всех
следили
だったよな?хорошо? 交代する
дежурных
проверяли
ときは

もちろんです!
так точно! 合い言葉で
по системе
確認
«пароль-
отзыв»!
しましたし

ясно! а х .. .
うむうむ!
山! 川 !
всё
гора! река! いいぞ
правильно! уровень
小学生
младшей
レベル…
школы...
ия
Ау

ац
те

хоп

уй
ик
нт


и-

4   プロローグ
Содержание

Изображена енотовидная ※
собака тануки.

место хранения
картины было
надёжно зашифрова-
но - посторонние

Катар тат и танах таран таи т таста я та


о нём узнать никак
не могли!

тан таата п тая т таомс такта лад тае та.

отлично!
молодцы!
щёлк
это нельзя
даже назвать
какой безопасностью!
ужас...

?!
кто щёлк

кто вы
такая?!
щё
лк

ёл
к

ёмэда рио,
корреспондент
«вечерней газеты»!

5
как?! Газетчики
新聞社がもう事件を 合い言葉も暗号も
пароль и шифр
уже всё
かぎつけたのか
пронюхали? ? никуда
お粗末すぎるのよ !
не годятся!

我々の
что было
セキュリティの な… что?!
не так с
どこがダメだと
безопасностью?!
言うんだ ? なにを――っ
почему?!
!?

絵の保管場所は
картина хранилась
на пятом складе,
第 5 倉庫でしょ ?
не так ли?

Катарт ат и танах таран таи т тастая та


тан таатап тая т таомст актала д тае та.

скрип, Нарисован тануки,


скрип поэтому вычёркиваем
все слоги «та»

さては
君が
может быть,
преступник -
犯人だな !
это вы?!

ち…
нет!
違うわよ !
なぜ知ってる
откуда вы? это любой
знаете?!
あんなの誰でも
смог бы
解読できるわ
разгадать!

шух
6   プロローグ
Содержание
как? инспектор мэгуро,
неужели? не тратьте время!
поскорее найдите
преступника!

.
грр..

да...
преступника..

вот он,
преступник!

чт
о? Директор, вы
!
арестованы!

щёлк
!

ой!

 7
нет, я не это
имела в виду! что?
посмотри
на стену за
директором!

тадам!

шлёп!

мм... здесь
раньше
не было
этой
картины...

глыг

8 Содержание
絵じゃなくて
не на картину
説明パネルを
надо смотреть,
а на見るのよ !
её табличку!
Я怪盗サイファ参上
– Весёлый сайфер.
Это я украла картину.
絵はいただいた
В следующий раз
次は VDVIRCU を
украду VDVIRCU.
手に入れるわ
おやすみ♥
Спокойной ночи

怪盗サイファ !?
весёлый Сайфер?!

今は昼だから
странно как-то,
хм...
ハッ Угу! 「おやすみ」ってのは
«спокойной ночи».
сейчас ведь
変だよな ?
день.

бам!

このメッセージ
что бы я тоже
нет, я не
どういうことかしら
это значило? сейчас そうじゃない
об этом!
!
об этом
подумал.

 9
絵はいただいた
Это я украла картину.
В следующий раз
次は VDVIRCU
украду VDVIRCU. を

手に入れるわ

おれ
у меня

VDVIRCU
что означает
英語不得意
с английским
не очень...
だから… это же шифр!
ってなんなのよ
это VDVIRCU? ? これは暗号よ !
указана вещь,
次に盗むものを
которая
暗号で示してるの
будет украдена!
следующей.
эх . . .

タヌキ暗号と違って
но это явно
не шифр «тануки»:
どの字を抜いても

VDVIRCU
вычёркивание букв
意味のある言葉に
не даёт ничего
ならんな
осмысленного.

こうなったら
давайте тогда
изучим
暗号を学んで
криптологию
怪盗サイファを
и покажем
見返してэтому
やりましょうよ !
весёлому
сайферу!

это же
スパイ小説じゃあるまいし
не шпионский роман....
暗号なんて本当に
какой нам прок
役に立つのかい ?
от этих шифров?

(горячо)
なに言ってんの
что ты мелешь?
現代は
ведь мы живём
暗号の時代よ
в эпоху шифров! посмотри
これを見て !
сюда!

(пароль)
PASSWORD(パスワード)

(Отправить) Send

Аутентификация пользователя
・本人確認の承認

Интернет
インターネット
・電子取引のための
Шифрование и
аутентификация данных
Сек
 暗号化と認証
в платежах через Интернет
рет
но

・文書に改ざんがないことを
Электронная подпись,
 подтверждающая
保証する電子署名
отсутствие подмены
данных

・メールの暗号化
Шифрование сообщений
электронной почты.
 (PGP:Pretty
(программа PGP:Good
PrettyPrivacy)
Good Privacy)

図 0.1 現代の暗号と社会の関わり
Рис. 0.1. Роль криптографии в современном обществе

図 0.1 に示すように、
Как コンピュータと通信が発達した現代において、
показано на рис. 0.1, в нашу эпоху компьютеров暗号の技術は情報の改ざん、
и связи шифрование
незаменимо для борьбы с подменой
破壊、盗聴を防ぐために必要不可欠なものとなっている。 данных, перехвата информации и т. п.

な… ой...
что это?
なんのこっちゃ…
аж голова ты что, никогда
お兄ちゃん
закружилась.... в интернете
インターネットで買い物
ничего
не покупал?
したことあるでしょ ?

 1111
もし暗号が
если бы
не было
なかったら…
шифрования...

подменю-ка
хи, хи, хи... 書き換えちゃえ
я данные...

Ева LOVE

愛してるよ
HATE
я люблю тебя,
アリス♥
алиса
Алиса
Боб Неавторизованный
正当でない受信者(盗聴者)
получатель (перехватчик)

L OV
E HATE

送信者
Отправитель 受信者
Получатель

インターネット
Интернет

как?!
わたしのこと
значит, боб меня
「嫌い」ですって
ненавидит?!
?

Рис. 0.2. Перехват сообщения и подмена данных


図 0.2 通信の盗聴・改ざん

понятно!
なるほど ! сообщения
значит,
つまりメールはパソコンでなく
надо отправлять не
по электронной, а
郵便で出せばいいわけだ
по обычной почте!
хо п

ちがーう! нет!

1212  プロローグ
Содержание
и от этой опасности
その危険を防ぐのが
нас защищает...

暗号の技術よ
...шифрование!

Ева
ох...
キーッ
не могу
改ざんできない
подменить.
Неавторизованный
正当でない受信者(盗聴者)
получатель (перехватчик)

Боб Алиса
L OV E LOVE
暗号化

Расшифрование
復号
Шифрование

Отправитель
送信者 Получатель
受信者
Интернет
インターネット

愛してるよ
Люблю § &*@ ♪〒 音声通信связь
Голосовая 愛してるよ
Люблю
データの送受信
Передача данных
データの記録・
Запись и накопление
данных
蓄積など и т. п.

暗号化鍵
Ключ шифрования Ek Ek Ключ расшифрования
復号鍵 D Dkk

Получателем может быть и носитель информации:
жёсткий диск, память
※受信者は и т. п.
ハードディスクやメモリなど
図 0.3 暗号のモデル
Рис. 0.3. Модель шифрования (криптосистема)
 記録媒体 ( メディア ) の場合もある

ого!
ほう
да, шифрование -
暗号は役に立って
действительно
るんだな вещь!
нужная ほら смотри,
похоже, он
知りたくなって
заинтересовался.
きたでしょ ?

 13
1
わたしが先生になるから

暗号のこと
если хочешь,
я могу преподавать
тебе шифрование!

学びましょ !
よし да, хочу!
サイファを捕まえるためだ
я изучу шифрование
и поймаю сайфера!
がんばるぞ !

け…警部…
инспектор...

館長さん
уважаемый директор,

事件はすぐに解決
не беспокойтесь!
снимите
преступление скоро
с меня
するから任しとけ !
будет раскрыто!
наручники!

ох...

141  プロローグ
Содержание
Глава
第1章 1
暗号の基礎
основы
криптографии
1-1 Основные понятия криптографии

Расследование дела о Весёлом сайфере


Безопасность дорожного движения

тык тык Yes!

кстати...

...что делает
газетчик в след-
ственно-опера-
тивной
группе?

итак,
приступаем
к учёбе!!

я буду
освещать ход
расследования!
прежде
но можно ли всего...
так обеспечить
безопасность
полиции?
...подумаем над
смыслом, который
заложен в кличку
«весёлый сайфер».

мм...


По-японски «сайфу» означает «кошелёк».

ну, это крадёт деньги


совсем из чужих кошельков,
просто! поэтому «сайфер»※!

это твои
мозги
устроены
просто!

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


читается «сайфер»
и означает «шифр»!

ну вообще!

1-1 Основные понятия криптографии 17


«Ниитака-яма ноборэ» ※1 = «Начать атаку»

暗号か!
шифр?!
«Тора тора тора» ※2 = «Атака была успешной»
『ニイタカヤマノボレ』=
※1
攻撃開始
Дословно: «Поднимайтесь на гору Ниитака».

『トラトラトラ』=
※2
奇襲成功
Дословно: «Тигр, тигр, тигр».

ага!

если так,
有名どころじゃ
то я знаю
こんなのが
парочку ※※いずれも、太平洋戦争
Обе кодовые фразы использовались
знаменитых
あったな Императорским флотом Японии
 開戦時の帝国海軍の電文
примеров.
при нападении на Пёрл-Харбор во время
Второй мировой войны.

нет, нет
でも
но это じゃあ…
а что
それはサイファでは
не шифр. なんだ?
же?
ないわ

Разве это
не шифр?

暗号の仲間だけれど
это родственник ноわたしたちが
мы будем
изучать не их..,
шифра - жаргон:
符丁や隠語と呼ばれる 学ぶのは
фразы, понятные
仲間うちでしか
только членам
...аサイファの
шифры -
通用しない言葉なのよ
какой-либо группы.
«cipher»!
ほうね!

英語では
по-английски
это コード
называется
(code)
code, то есть

というの
«кодовые
фразы».

1818  第 1 章 Глава
暗号の基礎1. основы криптографии
Ева
Так как текст зашифрован,
暗号化された文なので
перехватчик не сможет
盗聴者は読むことが
его прочесть.
できない

Неавторизованный
正当でない受信者(盗聴者)
получатель (перехватчик)
Алиса
Боб
L OV E LOVE

暗号化

Расшифрование
復号
Шифрование
送信者
Отправитель 受信者
Получатель
Интернет
インターネット

Люблю
愛してるよ § &*@ ♪〒
音声通信связь
Голосовая
Люблю
愛してるよ
Передача
データの送受信 данных
暗号化されて текст
Незашифрованный Зашифрованный Запись
暗号化された文 и накопление
データの記録・ 暗号文 C から
Открытый текст P,
いない文(平文
(открытый P)
текст P) текст
(暗号文 C) C) данных
(шифртекст 蓄積など
и т. п.
полученный
復号した平文 P
в результате
мя Ключ шифрования Ek E =暗号化に
暗号化鍵 Ключ расшифрования
復号鍵 DkDk =復号に
расшифрования
k

 用いられる鍵 шифртекста C
 用いられる鍵

Рис. 1.1. Модель шифрования (криптосистема, шифр)

図 1.1 暗号のモデル

наこの図は前にも示したけど
Этой схеме, которую я вам
シャノンがつくった暗号系のモデルよ
уже показывала ранее,
изображена
20 ページに出てくるкриптосистема,
предложенная шенноном.
暗号学の基本用語を
теперь мы изучим термины
おさえておきましょう!
криптографии на стр. 20!

Клод Шеннон (1916–2011 гг.)


Английский математик 年生~
クロード・シャノン(1916 2001 年没)
XX века.
 В 1948 году опубликовал статью
20 世紀のイギリスの数学者です。
«Математическая теория связи»,
1948 年、『通信の数学的理論』という
за которую его прозвали
論文を書き、情報理論の父と呼ばれる
«отцом информационного века».
ようになりました。

1-1 Основные понятия криптографии 19


19
暗号学の基本用語
Термины криптографии
平文 P(Plain
Открытый текст P =暗号化されていない通常の文 
text) (Plain text): обычный незашифрованный текст.

愛してるよ
Люблю

暗号文 C(Cipher
Шифртекст C (Cipher =暗号化された文 
text)text): зашифрованный текст. Другое название – криптограмма.

§ &*@ ♪〒

暗号化(Encryption
Шифрование / Encipherment)=平文を暗号文にすること 
(Encryption/Encipherment): преобразование открытого текста в шифртекст.

Люблю
愛してるよ § &*@ ♪〒

復号(Decryption /(Decryption/Decipherment):
Расшифрование Decipherment)=暗号文を平文に戻すこと преобразование шифртекста в открытый текст.

§ &*@ ♪〒 Люблю
愛してるよ

暗号化鍵
Ключ Ek(Encryption
шифрования Key)=暗号化に用いられる鍵
Ek (Encryption Key): ключ, используемый для шифрования.

愛してるよ
Люблю § &*@ ♪〒
Ключ EkEk
暗号化鍵

Ключ Dk(Decryption Key)


復号鍵расшифрования =復号に用いられる鍵
Dk (Decryption Key): ключ, используемый для расшифрования.

§ &*@ ♪〒 Люблю
愛してるよ
Ключ
復号鍵 DkDk

но暗号を作るのに
почему для ほんものの
это
не настоящий
なんで鍵が
шифрования 鍵じゃないの!
нужен ключ? ключ!
いるんだ?
й?
о ры

暗号文を作る手続き
ключом шифрования Ek на-
кот

(暗号化アルゴリズム)に
зываются данные,
используемые
用いられるデータが
в процедуре
暗号化鍵 Ek になるののよ 暗号化鍵
(алгоритме)
Данные
データ Ключ Ek
шифрования. Ek


Алгоритм – последовательность
※アルゴリズムとは、目的達
действий для достижения
 成や問題解決のための一連
цели, решения проблемы
и т. п.
 の処理手続きのこと

20
20  第 1 章 Глава
暗号の基礎1. основы криптографии
そう!
Верно!
タヌキ暗号の場合の
вот, например, и наоборот, ключ
反対に復号鍵 Dk は
暗号化アルゴリズムと
алгоритм и ключ
расшифрования Dk -
шифрования Ek 抜く文字の『た』 
暗号化鍵 Ek はこれよ ※ 暗号化アルゴリズムは、 это вычёркиваемый
для шифра тануки. 復号アルゴリズムは

Алгоритм шифрования:
 平文に余分な文字を加え слог «та», а алгоритм
暗号文から余分な
«вставить расшифрования:
 ること в открытый текст 文字を抜くことよ
«вычёркнуть лишние
лишние буквы». буквы».

Ключ шифрования
※ 暗号化鍵 Ek は、加える
Ek :
вставляемый
 文字の 『た』 слог «та».
Кл
юч
D
та
k

暗号化鍵между
Связь Ek と復号鍵 Dk の関係
ключами Ek и Dk
Отправитель зашифровывает открытый
 送信側は平文の暗号化を行います。平文 текст: используя
P と暗号化鍵 открытый текст P и ключ
Ek(暗号化関数)を用いて、暗号文 C
шифрования
を作るのです。 Ek (функцию шифрования), он генерирует шифртекст C.

Открытый
平文 P Шифртекст
暗号文 C
текст P C
Ключ
暗号化鍵 Ek E
шифрования k
C = E(
k P )

図 1.2 鍵
Рис. 1.2. Шифрование Ek を使った暗号化 ключа
с использованием Ek

Получатель расшифровывает шифртекст: используя


 受信側は、暗号文の復号を行います。このとき暗号文 шифртекст
C は復号鍵 C и ключ
Dk(復号関数)を用いて平
расшифрования Dk (функцию расшифрования), он генерирует открытый текст P.
文 P に復号されるのです。
 

Шифртекст Открытый
暗号文 平文 P
C C текст P
Ключ
復号鍵 Dk D
расшифрования k
P = D(C
k )

図 1.3 鍵сDиспользованием
Рис. 1.3. Расшифрование k を使った復号 ключа Dk

1-1 Основные понятия криптографии 21


21
а теперь -
задачка!

СЙЛБ ЛСБТЙГБ

СКРИП, СКРИП

ПУСТЬ КЛЮЧ
СЙЛБ ЛСБТЙГБ
↓ ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓ ↓
ЗАШИФРОВанИЯ Ek -
это сдвиг БУКВы
на одну позицию

РИКА КРАСИВА
вперёд в обычном
алфавите.

«РИКА КРАСИВА»?

СМОЖЕТЕ
ОТГАДАТЬ
ОТКРЫТЫЙ
УГХ
ТЕКСТ?

ТУДУХ БАХ
ХА,ХА,ХА!
«РИКА КРАСИВА» -
ЭТО ОЧЕВИДНАЯ
ВСЕМ ОШИБ...

22 Глава 1. основы криптографии


А КЛЮЧОМ
カンペキに
СОВЕРШЕННО 復号鍵 Dk は文字をDk
РАСШИФРОВанИЯ
正解!
ВЕРНО! БУДЕТ сдвиг
1 文字ずつ前に
БУКВы на одну позицию
戻す操作になるわ
назад в обычном
в алфавите.

ルカ先生 
РИКА
ちょっと
СТРАШНА...
コワい…

какая
でも тяжёлая
НО ВЕДЬ ТАКОЙ Руководство книга...
こんな暗号じゃ 情報セキュリティ
ШИФР ОЧЕНЬ по информациック онной
すぐに解読されちゃう
ЛЕГКО РАЗГАДАТЬ. ハン
без опаドブ
сности
だろ?

OHM

暗号は
криптография
解読しようとする盗聴者と
развивалась в борьбе
с перехватчиками,
知恵比べをしながら
пытавшимися взломать
発達してきたの
шифр.

次のページから
начиная со следующей
古典的な暗号を
страницы я познакомлю
вас いくつか紹介して
с несколькими
いくわよ! шифрами.
классическими

1-1 Основные понятия криптографии 23


23
 1
1-2 − 2 古典的な暗号技術
Классические шифры
シーザー暗号
Шифр Цезаря
Каждая буква открытого
 平文の各文字を、順に текста заменяется на букву, сдвинутую относительно неё на n
n 文字ずらして暗号化するというアルゴリズムで作る暗号をシーザー
позиций в алфавите. В качестве
暗号といいます。例として、 примера попробуем зашифровать слово MOMOTARO.
「MOMOTARO」を暗号化してみましょう。
Примем n = 3.
 例えば、n = 3 とし、3 文字ずつ後ろにずらすとします。

    … L M N O P Q R … 他の文字も同様に、
Аналогичным образом
     

заменяем остальные буквы:

O→R T→W A → D  R→U

 すると次のように暗号文が作られます。
Таким образом, у нас получится шифртекст.

MOMO T A R O (Открытый
(平文 C) текст P)

P R P R WD U R (暗号文
(Шифртекст
P) C)

 また、アルファベットの最後の
Последним 3 文字は、最初に循環させます。
трём буквам алфавита соответствуют первые.

X→A Y→B Z→C

Цезарь – это древнеримский полководец и политик Гай Юлий Цезарь (100 г. до н. э. –


 「シーザー」とは、古代ローマの軍人で政治家のジュリアス・シーザー(ユリウス・カエサ
44 г.ル/紀元前
до н. э.), придумавший
100 年生~紀元前этот шифр во время Галльской войны для обмена с союзника-
44 年没)のことです。シーザーが、この暗号文を作ったのは、ガ
ми сообщениями, которые не мог прочесть неприятель.
リア戦争のときでした。これにより敵に知られることなく、味方と通信することができました。

ジュリアス・シーザーは、
Кстати, ух.
крылатая фраза
..
『サイは投げられた』と
«жребий брошен»
いった人よ
тоже принадлежит
цезарю.

へええっ
ааа!!!?

24
24  第 1 章 Глава
暗号の基礎1. основы криптографии
か え じ

Шифр
換字式暗号одноалфавитной замены
Если немного усложнить шифр Цезаря, изменяя сдвиг в
 シーザー暗号を複雑にし、各文字ごとにずらす字数を変化さ
зависимости от буквы, то мы получим шифр замены.
n せたものを換字式暗号といいます。
Шифр замены, в котором есть взаимно-однозначное со-
 そのなかで平文と暗号文の各文字を
ответствие 1 対 1 で異なる文字に対
между буквами открытого текста и шифртекста,
応させるものを「単一換字暗号」と呼びます。シーザー暗号も、
называется шифром одноалфавитной (или простой) заме-
ны. Шифр
単一換字暗号の一種です。Цезаря тоже является разновидностью шифра
одноалфавитной замены.
 例えば、英語のアルファベット 26 文字を、次のように変換
Положим, что 26 букв английского алфавита заменяются
するとします。
так, как показано ниже.
     

  A B C D E F G H I J K L MN O P Q R S T U V W X Y Z
Правилоシグマ

замены σσ
=変換規則
QW E R T Y U I O P A S D F G H J K L Z X C V B NM
(«сигма»)
 
 すると、次のように暗号が作られます。
Тогда шифрование будет осуществляться следующим образом.

MOMO T A R O (平文
(Открытый
C) текст P)

変換規則 σ に従って変換する
Заменяем буквы по правилу замены σ

D G D G Z Q K G (Шифртекст
(暗号文 P) C)

В этом шифре алгоритмом является замена


 この暗号では、換字することがアルゴリズムで、 букв, а ключом шифрования
「各文字の置き換え方」 、つまり変換規則σ Ek –
правило замены σ.
が暗号化鍵 Ek になります。
а-

σって
а что это
за буква «σ»?
どう読むんだ?

シグマと
это «сигма»!
読むの

1-2 Классические шифры 25


25
Шифр многоалфавитной замены (шифр Виженера)
多表式暗号
Разбив открытый текст на блоки по n букв в каждом, изменяют величину сдвига
 平文を n 文字ずつのブロックに区切り、各ブロック内で文字をずらす数を変えるものを多表
в зависимости от позиции каждой буквы внутри блока. Можно сказать, что шифр
式暗号といいます。シーザー暗号を拡張したものといえます。
Виженера является расширением шифра Цезаря.
デルタ

 例えば n=4 として、変換規則δ


Положим としてずらす数を以下のように定めたとします。
n = 4 и определим правило замены δ следующим образом.

番目の文字→
11-я 文字ずらす
буква → 2сдвиг =2
22-я буква → 5сдвиг
番目の文字→ 文字ずらす=5
=変換規則δ
Правило замены δ
33-я буква → 3сдвиг
番目の文字→ 文字ずらす=3
44-я буква → 1сдвиг
番目の文字→ 文字ずらす=1

 すると、次のように暗号文が作られます。
В этом случае мы получим следующий шифртекст.

(Открытый
   MOMOTARO     (平文 C)P)
текст
              n 文字ごとのブロックに分ける(n=4)
Разбиваем на блоки по n = 4 буквы
MOMO
        TARO в каждом.
ブロックごとに変換規則δに
  (暗号文 P) Заменяем буквы в каждом из блоков
従ってずらす
OTPP V F U P (Шифртекст C) по правилу замены δ.

 この暗号では、ブロックの文字数とずらし方の変換規則が暗号化鍵になります。
В данном шифре ключ шифрования – это длина блока и правило замены, то есть
последовательность величин сдвига.

расшифруй-ка
この方式で作った
криптограмму
ТННБМХГТКЗГ,
『ろさへえとすそう』を
解読しなさい!
зашифрованную
этим методом.

『るかはうつくしい』
РИКАКРАСИВА...
です…ほんと!
ДА, ДА, ПРАВДА!
ТЫК
!

26
26  第 1 章 Глава
暗号の基礎1. основы криптографии
Шифр
転置式暗号перестановки
а
 平文を n 文字ずつのブロックに区切り、各ブロックの中で文字の順序を置き換える暗号を転
Разбив открытый текст на блоки по n букв в каждом, меняют местами буквы
р
в каждом из блоков.
置式暗号といいます。
 例えば、n=4 n = 4 и определим
Положимとし、置換規則τ правило перестановки τ следующим образом.
タウ

として次を定めたとします。
       

( )
1234
  τ=         
2413

Верхняя формула означает, что перестановка осуществляется следующим


 上の式は、次のように置換することを意味します。
образом.

1 番目の文字→
1-я 2 番目へ
буква → 2-я буква
2 番目の文字→
2-я 4 番目へ
буква → 4-я буква
=置換規則τ
Правило перестановки τ
3 番目の文字→
3-я 1 番目へ
буква → 1-я буква
4 番目の文字→
4-я 3 番目へ
буква → 3-я буква

 すると、次のように暗号が作られます。
В этом случае мы получим следующий шифртекст.

(Открытый C) P)
(平文 текст
   MOMOTARO      
         Разбиваем
           n на блоки по n =(n
文字ごとのブロックに分ける 4 буквы
= 4)
MOMO TARO
в каждом.
ть
Переставляем буквы в каждом из
ブロックごとに変換規則τに
             
блоков
従ってずらすпо правилу перестановки τ.
MMOO (Шифртекст
(暗号文
R T O A   P) C)

В данном шифре алгоритм шифрования – изменение порядка следования букв, а


 この暗号では、文字を入れ替えて置換することが暗号化アルゴリズムで、ブロックの文字数
ключ шифрования – длина блока и правило перестановки.
と置換規則が暗号化鍵になります。

δ - δはデルタ
это «дельта»,
τはタウと
а τ - «тау». なるほど
понятно.
読むのよ

1-2 Классические шифры 27


27
 1
1-3− 3 暗号の安全性
Стойкость шифра как вы помните,
егоシーザー暗号の暗号化
алгоритм шифрова-
アルゴリズムは
ния заключается...

...в замене букв


平文の文字を
открытого текста
アルファベット順に
на n 文字
буквы, сдвинутые
на n позиций
ずらすことね
в алфавите.

хотя шифр цезаря


シーザー暗号は
был изобретён более
2000 年以上も昔から
2000 лет назад..,
あるけれど

сам цезарь
...в нём 例えば n=3 の場合
использовал...
アルゴリズムや
присутствуют
鍵の概念を
такие понятия
...в качестве ключа
современной
用いているので 3 文字ずらすことが
шифрования
криптографии..,
シーザーの用いた暗号化鍵だな
величину сдвига
в алфавите n= 3.

...как
現代の暗号理論にも
алгоритм
つながっているのよ
и ключ.

и в той задачке
さっき問題に出した
СКЛБЛСБТКГБ
СКЛ 『れきひえてけすう』も
тоже
использовалась

↓ ↓↓ シーザー暗号の一種よ разновидность
шифра цезаря.

РИКА КРАСИВА
28
28  第 1 章 Глава
暗号の基礎1. основы криптографии
... почему мало?
мм どんどん文字を
ведь сдвигать-то
古代ローマの
но не слишком
ずらしていけば
можно на сколько
лиアルファベットは
мало ключей いいじゃないか
угодно букв -...
шифрования?
25 文字しかないわ
дун

ведь
暗号化鍵の数が
в алфавите
древнего рима
少なすぎるんじゃ
было всего 1000наでも
...хоть 1000,
ない?
25 букв. хоть2000наでも
2000!

уф
時計の文字盤と同じで
можно, но сдвиг-то
циклический - начиная
決まった文字を
со второго круга мы
巡回するだけに
получим те же
なっちゃうわ
самые буквы!

уф
уф

ну, давай,
пробеги
хоть 1000,
круть, круть хоть 2000
кругов!

другими словами,
つまり
сдвигать можно
いくら文字をずらしても
на сколько угодно
暗号化鍵はたかだか
позиций, но число
24 個なのよね!
ключей всё равно
будет равно 24!

1-3 Стойкость шифра 29


29
поэтому древние
перехватчики
на самом деле
могли вскрыть
шифр цезаря...

....максимум за
24 попытки.
если бы, конечно,
знали,
как он устроен.

но если
использовать, чем больше число
например, знаки ключей..,
японского языка...

ага! ...тем лучше шифр


защищён от атак!

эврика!
итак, теперь мы
посмотрим
число ключей
в других шифрах.
...алфавиты хирагану,
катакану и иероглифы
в придачу, -
то число ключей
превысит 10 тысяч!

30 Глава 1. основы криптографии


換字式暗号の鍵数
Число ключей шифра одноалфавитной замены
Будем считать, что в этом
 英語のアルファベットは и в последующих шифрах используется английский ал-
26 個です。以降は暗号文に英字を用いるものとして説明します。鍵
фавит, состоящий из 26 букв. Общее число ключей шифра замены будет равно числу
の総数は、相異なる
перестановок 26 個から
множества 26個とる順列の数になるので、
из26 計算すると以下のようになります。
букв, рассчитываемому по следующей формуле:

26 P26 = 26! = 26 × 25 × 24 ×…× 3 × 2 × 1 ≒


≈ 4.03291461 × 1026.

Перестановкой (Permutation) n элементов называется любой упорядоченный на-


 ここでいう順列とは、文字通り順番に並べることであり、Permutation の P で表します。こ
бор этих элементов. Полученное выше значение является довольно большим: время
れはかなり大きな数です。コンピュータで
поиска 1 秒間に 1 億個ずつ、しらみつぶしに鍵を探したと
ключа (временная сложность криптоанализа) на компьютере, перебирающем
100 млн перестановок в секунду, может составить
しても最長の場合は 1280 億年ほどの途方もない計算時間(計算量)がかかるおそれがあります。 до 128 млрд лет.
Таким образом, хотя теоретически ключ найти возможно, практически шифр од-
 鍵を探して解読することは、理論上は可能ですが、実際には計算量的に安全な暗号として位
ноалфавитной замены считается вычислительно стойким.
置付けられています。ただ、『平文に登場
Однако известно, что этот шифр с момента рождения
する文字の出現頻度と、暗号文に登場する
уязвим для частотного криптоанализа, 宇宙が誕生して
вселенной прошло
использующего такую его особен-
文字の出現頻度とが一致すること』を利用 10100 億年! лет!
миллиардов
ность, как совпадение частот появле-
した頻度分析と呼ばれる暗号解読法に弱い
ния букв в открытом тексте и шифр-
тексте.
という性質が知られています。なお、実際
В связи с этим с практической точ-
に計算量的に安全と言えるものには、換字
ки зрения вычислительно криптостой-
式のうち1回限り(one–time)の使い捨て
ким считается шифр одноалфавитной 宇宙の終末までには
успею ли я найти ключ
замены с одноразовым ключом (one до смерти вселенной?
鍵になるように工夫したワンタイムパッド 解読できるかしら?
time pad).
などがあります。
Теперь поговорим о разделе математики под названием комбинаторика. Кроме вы-
шеописанной перестановки, существуют также понятия размещения и сочетания. Раз-
 ここで数学の復習をしておきましょう。順列と組み合わせを聞いたことがありますか。順列
мещение из n по r – это упорядоченный набор r элементов, выбранных из множества n
は n 個のものから
различных r 個を取り出して順番に1列並べる方法で公式は次のようになります。
элементов. Таким образом, перестановка тоже является частным случаем
размещения. Число размещений вычисляется по нижеприведённой формуле.
n!
     nnP
Arr= n ×(n - 1)×(n - 2)×……×(n - r + 1)= .
(n - r)!
Сочетание из n по r – это набор r элементов, выбранных из множества n различ-
 n 個のものから
ных 個を取り出す方法を組み合わせといい、
элементов.rОно обозначается заглавной буквой Combination の C をとって表します。
C, от слова Combination.

nPr n!
     nCr =     = .
r! (n - r)! r!
Различие между размещением и сочетанием заключается в том, что в размещении
 順列と組み合わせでは、順列は順番が大事なので AB と
важен порядок следования элементов, поэтому и は違うものと考えますが、組み合わせ
ABBA BA будут разными размещения-
ми, а сочетание – это способ выбора
は取り出し方なので順番に関係なく элементов
AB と BA из множества, а порядок
は同じものと考えます。ところで、 их следова-
びっくりマークの!
ния здесь не важен, поэтому AB и BA будут одинаковыми сочетаниями. Кстати, вос-
は階乗を意味します。階乗とは に対して 1 から
клицательный знак (!) – этоn факториал. n までのすべての数を掛けたものです。
Знак факториала после n означает произведе-
ние всех чисел от 1 до n включительно.
     n!= n ×(n - 1)……× 3 × 2 × 1.

1-3 Стойкость шифра 31


31
Число ключей шифра многоалфавитной замены
多表式暗号の鍵数

Примем длину
 1 ブロックを одного блока равной
n 字としたとします。その n буквам. Так как сдвиги букв в блоке нам не-
1 字目は、何文字ずらされているか不明なので、26
известны, мы должны будем перебрать 26 значений сдвига 1-й позиции, для каждого
回試行することになります。同様に
из значений сдвига 1-й позиции2–文字目も、さらに 文字目までそれぞれ
по 26 значений nсдвига для回の試行が必
2-й позиции, 26 каждого из
значений сдвига 2-й позиции – по 26 значений сдвига 3-й позиции и так далее до n-й
要です。このため、鍵の総数は次のようになります。
позиции в блоке. Общее число ключей будет следующим.

     26 × 26 ×…× 26 × 26 = 26
n

n 個───┘
n множителей
     └───

Для
 n = n = 4 получим следующее.
4 の場合は次のようになります。
140
140 兆円というと
триллионов иен... Юбилей
Мегуро, помощник инспектора
     26 × 26 × 26 × 26 = 264 ぼくの年収の
...- это моё жалованье 28 миллионов лет на службе!
     └── 4 個──┘
4 множителя за 28万年ぶんだね
2800 миллионов лет.

     264 = 456 976

При увеличении n количество


 n が大きくなるにつれて、鍵の数は
ключей резко увеличивается. Так,
для n = 10 оно превысит 140
急激に増えていきます。n = 10трлн.
では、
правда,
я столько
140 兆を超えてしまいます。 не проработаю... …はは
...ха-ха

Число ключей шифра перестановки


転置式暗号の鍵数
Приняв длину одного блока равной n буквам, получим следующее.
 1 ブロックを n 字とした場合の鍵の総数は、次のようになります。

     n Pn = n × (n - 1) × (n - 2) ×…× 3 × 2 × 1 = n!

Для блока,
 1 ブロックが состоящего из 4 букв E
4 文字の場合(n=4)の鍵 = 4), общее число ключей Ek будет следующим:
(nk の総数は次の通りです。

     4! = 4 × 3 × 2 × 1 = 24 .

При увеличении n число ключей будет возрастать, повышая тем самым стойкость
 n を大きくするほど鍵の総数が増え、暗号の安全性が高まります。特に
шифра. n=
Так, для n = 26 число ключей будет таким же, как для шифра 26 の場合は、換 за-
одноалфавитной
字式暗号と同数になります。
мены.

32
32  第 1 章 Глава
暗号の基礎1. основы криптографии
при использовании
鍵の数が多いほど
если считать, что Чем 単一換字式暗号で
длинных шифртекстов
больше число ключей, тем
暗号が安全なら 長文のものには
шифр одноалфавитной
безопаснее шифр,
解読の糸口があるの
то 換字式暗号が安全
замены становится
самым безопасным
уязвимым.
ということになるけど
будет шифр одноалфа-

той
витной замены.
л о
Зо ук
ж
По
ла н
р Ал
мм.. . Эдга

Шифр Шифр
одноалфавитной многоалфавитной
замены замены

Золотой жук?
こがねむし…? 
多表式の шифр
однако это атлас
многоалфавитной 昆虫図鑑かな
насекомых?
暗号の方が
замены выглядит
複雑に見えるなあ
посложнее.

богач, наверное...

Часть криптограммы
『おうごんちゅう』ともいうわ из «Золотого жука»
『黄金虫』の暗号の一部
нет, это детектив
暗号解読を扱った 53 ‡‡† 305))6 *;4826)
про вскрытие шифра.
有名な短編ミステリーよ 4 ‡ .)4 ‡);806 *;48 †
8 ¶ 60))85;1 ‡ (;:‡* 8

э то
о го,
лла !
но в е

1-3 Стойкость шифра 33


33
есть статистические данные
英文でよく使われる文字や単語は 
о частоте появления
統計上わかっているの
букв и слов в английском
тексте.

и в 『黄金虫』では
«золотом жуке» они
それをヒントに
были использованы
для 暗号を解読したのよ!
вскрытия шифра!

наиболее часто
英文で最も使われる
в английских текстах
文字は「e」
используются буква e
単語は「the」だ
и слово the.

すると「8」が「e」
значит,
в этой криптограмме
『;48」』が「the」に
«8» должно означать «e»,
а 違いない!
«;48» - это «the»!

несомненно!

хорошо
頭いい!
соображает!

暗号文は 長いほど
чем длинее шифртекст,
вот警察にスカウト
бы пригласить 手掛かりが増えて
тем больше в нём
его
したいぞна работу 解読しやすいの
зацепок для взлома.
в полицию!

короткие
短い文だと解読が
шифртексты
難しいのよ
взламывать
трудно.

34
34  第 1 章 Глава
暗号の基礎1. основы криптографии
ой! существует ли
『黄金虫』の主人公も
безопасный шифр, хм...
絶対に解読できない
который не смог бы
но вдруг
しかしこんなヤツが
такой человек 安全な暗号って
взломать даже
герой
警察じゃなく
станет не あるのか?
«золотого жука»?
盗聴者に
полицейским,
Рика,
а преступником?
スカウトされたら… скажи,
прошу
тебя!

да, あるわよ!
существует!

почитай вот

Золото
й あわてず
это и
ж ук
успокойся!
続きを読んで

解読が可能になる条件
Возможность криптоанализа
В общем случае существуют следующие условия, делающие возможным вскрытие шифра.
 一般的に解読(盗聴)が可能になる条件には次のようなものが考えられます。

 ① 暗号化アルゴリズムがわかっていること
Известен алгоритм шифрования.
 ② 文字の出現率の偏りなど、平文について統計的性質のデータがあること
Известны статистические свойства открытого текста: повторяемость букв и т. п.
 ③ 暗号化の例文を大量に持っていること
Имеется большое количество образцов шифртекста.

絶対安全な暗号 стойкий шифр


Совершенно
Используя одноразовые ключи, основанные на случайных числах, можно создать
 1回だけしか使わない乱数に基づく使い捨ての鍵を用いて、解読不能な暗号を作ることがで
шифр, теоретически не поддающийся вскрытию.
きます。その暗号文には再現性がありません。
Практически шифртекст C в подобном шифре генерируется путём применения ря-
 具体的には、平文 открытому тексту P, причём длина Cэтого
да случайных чиселP кに同じ長さの乱数の列を付加し、暗号文 ряда равна длине от-
を作り出すというものです。
крытого текста. Эта криптосистема, изобретённая в 1917 году телеграфистом AT&T
これをバーナム暗号(バーナムによって 1917 年に考案され、特許が取られました)といい、使
Гильбертом Вернамом, называется шифром Вернама. Этот шифр, в котором использу-
い捨て鍵(ワンタイムパッド)を利用しており、 解読不可能であることが
ются одноразовые ключи из шифровального pad),年にシャノン(19
блокнота (one-time 1949 обладает абсо-
лютной криптостойкостью, то есть принципиально не поддаётся вскрытию, как было
ページ参照)によって数学的に証明されています。
доказано в 1949 году Шенноном (см. стр. 19).

1-3 Стойкость шифра 35


35
 バーナム暗号の簡単な例を示します。
Вот простой пример шифра Вернама.
Сначала мы ставим в соответствие коды символов (числа) буквам алфавита.
 まず、アルファベットを文字コード(数値)に対応させます。

  Таблица 1.1.表Коды символов алфавита


1.1 文字コード

A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12

N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

Коды шифртекста мы будем получать, находя остаток от деления результата


 数値を加算するときは、その和を
сложения чисел на 26. 26 で割った余りを答えとするものとします。

① アルファベットを文字コードに変換
Заменяем буквы алфавита на коды символов.

平文
Открытый M O M O T A R O
текст   ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
12 14 12 14 19 0 17 14

② 1Складываем
回だけ使う乱数列を加算
коды символов с однократно используемым рядом случайных чисел.

12 14 12 14 19 0 17 14
Ряд случайных + + + + + + + +
乱数列
чисел (ключ
шифрования) 9
(暗号化鍵)
20 15 23 27 2 15 8
= = = = = = = =
21 34 27 37 46 2 32 22

③ 26 で割った余りを計算
Вычисляем остаток от деления на 26.

21 34 27 37 46 2 32 22
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
21 8 1 11 20 2 6 22

④ 文字コードを用いてアルファベットに変換
Используя коды символов, заменяем числа на буквы алфавита.

21 8 1 11 20 2 6 22
Шифртекст ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
暗号文 V I B L U C G W

36
36  第 1 章 Глава
暗号の基礎1. основы криптографии
うーん…
да уж.
こんなの使われたら
взломать такое
解読できないわ…
невозможно.

バーナム暗号は
Шифр вернама
обладает
理論的に安全な
в абсолютной
самом 暗号よ
криптостойкостью.
деле...

Типы криптостойкости
安全な暗号
    

① 絶対安全な暗号
Совершенно стойкий шифр:
Шифр, который теоретически невозможно взломать,
 バーナム暗号のように理論的に解読が不可能なもの。
как шифр Вернама.

② 計算量的に安全な暗号
Вычислительно стойкий шифр:
Для взлома требуется столько времени и трудозатрат, что крип-
 解読するのに採算が合わないほど手間と時間がかかるもの。
тоанализ становится экономически бессмысленным.
 現代の商用暗号に用いられている。
Современные коммерческие шифры являются вычислительно
стойкими.

безопасные
安全な暗号には
шифры
2 種類あるの
бывают двух
видов.

そうか!
вот как?!
暗号はみんな
значит, лучше
バーナナ暗号に
использовать
шифр вернама.
すればいいんだ

хотя и
вкусно вкусно...

да уж,
バーナム
этот
だってば
вернам※.


Бананы появляются в манге потому, что по-японски имя Вернам звучит как Банам.
37
37
Идёт
приём Шифртекст
однако ключи шифра ...
вернама слишком
длинные, что ухудшает так

эффективность связи.
долго?!

Так, для открытого


Отправка
завершена.
прости.
у меня уже
текста из 1000 букв
всё
отправилось.
потребуется передать
ключ из 1000 букв.

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

ох...
кар

ой, уже
мне пора
скоро
возвращаться
шесть!
в редакцию.
мм...

38 Глава 1. основы криптографии


まいどー
добро пожаловать
в кафе «заяц»!
うさぎ食堂でーす
(стемнело)

おっきたきたー
вот, вот...

простите, что
お待たせ
заставила
しましたー
вас ждать!

большое спасибо
毎度ありー
за то, что
вы пришли к нам!
Каф е «Заяц»

та-дам

うまい
вкусно,
うまい
вкусно! …… лапша
ラーメン 
«рамэн»..
ウサギ
заяц...
サイファ
сайфер...

вшш...
おやすみ 
спокойной
ночи...
暗号…
шифр...

1-3 Стойкость шифра 39


39
почему
ты не ешь?
я...
лапша
я поняла!
растянется!

нет,
так я не об этом!
ешь
скорее!

я разгадала
шифр!

теперь я знаю, что


собирается украсть
сайфер!

что?!
пфу
фии!

40 Глава 1. основы криптографии


なにを盗むか
если я скажу подсказкой
ウサちゃんと
教えたら
тебе, что были
украдёт сайфер, おやすみが
«заяц» и
パソコン
компьютер ヒントだったのよ
«спокойной
買ってくれる?
мне купишь? ночи».

Я–В
ес
Это я ёлый сайф
у е
В сле крала карт р.
ду и
украд ющий раз ну.
у VDV
IRCU なんの

Сп . что?!
こっちゃ?
し…ладно...
о к о йн
деваться ой но
しかたないなあ
некуда. чи

ウサちゃんは
«заяц»
по-английски -
英語で bunny
bunny..,

そして…
а «спать»
おやすみするのは-
по-английски
sleep.
眠ることだから sleep

ну...
ほう…

で?
и...

1-3 Стойкость шифра 41


41
Если каждую букву
слова bunny сдвинуть
в алфавите
на 17 позиций вперёд.., На 17
позиций
вперёд

...то мы получим
слово sleep!

вот как!
да!
значит, ключом
был сдвиг
на 17 позиций?! ха

ха

а если теперь
сдвинуть все
буквы VDVIRCU
на 17 позиций ха
назад в алфавите..,
ха

ха
...то у нас
получится...

глыг

42 Глава 1. основы криптографии


エメラルド !!
エ…
вот!
EMERALD!!
изумруд!!

そ…そのとおり…
не так ли?

国際宝石展から
на международной
エメラルドが
выставке
драгоценностей

盗まれましたっ!
похищен изумруд!

EMERALD
получается
EMERALD
ですね… .., って
...так?

サイファの犯行だ 
это сайфер!
сейчас же

現場にいくぞ!
выхожу на место!

но.. . ..
в едь
а как же..

1-3 Стойкость шифра 43


43
круть 答えたのは巡査くんだ
ответ дал полиейский,
хе-хе-хе
поэтому компьютер
パソコンはお預けだな…
тебе не полагается.
へへっ хе-хе.

よし!
надо спешить!

急げっ――
выходим!

はいっ
есть!

44
44  第 1 章 Глава
暗号の基礎1. основы криптографии
Глава
第2章 2
共通鍵暗号化技術
Одноключевой
ш ифр
 2 ー 1 2числа
2-1 Двоичные 進数と排他的論理和
и сложение по модулю 2

(Международная выставка драгоценностей)

ох ох

ор
ект
Дир ох

ох

Музей
博物館 ох

また 
опять

やられたな!
кража!

46
46  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
был ли закрыт
на ключ
это был изумруд выставочный
стоимостью шкаф?
в 300 млн иен!

ааа!

вообще-то, да,
но потом его
кто-то открыл
незаметно
для нас.

значит, драгоценный
камень кто-то
выудил с чердака.

а вот откуда тебе


и я! известно
о способе
кражи?
всё-таки
фить
это твоих
рук дело...

нет, просто
к нам
в редакцию
пришло вот
это письмо!

2-1 Двоичные числа и сложение по модулю 2 47


Сегодня
今日も大漁! опять хороший улов!
なんだ
что это? Я 大きなお宝を
выудила большой
これ?
釣り上げましたわ♥ 
драгоценный камень.

  怪盗サイファ
Весёлый сайфер

P. S.:
追伸 
また会う日のために
Изучите это до нашей
みんなでこれを研究しておいてね!
следующей встречи!

00110001 00101011  00110001  00111101 00110000

新暗号 мм...
новый шифр?
登場か…

さっそくルカに あのう… да...


пойду спрошу
教えてもらおう ところで а как же
кстати,
у рики.
捜査のほうは?
расследование?

ектор
Дир

わたしも 
и меня тоже
つれてって!
возьми!

48
48  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
犯人は
преступник

わかってます
известен!!
!!

отк р
о
го в в е н н о
оря.
.,

- это я.
р ес тупник
... п

ну так
じゃあ 
скорее его 正体と
早くつかまえて… конечно!
поймайте! как居場所が
только поймём,
кто это
わかったらね!
фиють
и где скрывается!

по
до
жд
ах и !

просто вопиющая
безответственность!

2-1 Двоичные числа и сложение по модулю 2 49


49
ре.
фе
са й
ом
сёл
Ве
Безопасность дорожного движения

мм...

00110001  00101011
00110001  00111101
00110000

今度のは
а теперь тут это -
これは
0 と 1 がやたらと
ряды нулей ага двоичные
進数ね
2числа.
並んでいるが
и единиц....

что это
なんだこりゃ?
ещё такое?

50
50  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
все данные Минимальная единица
コンピュータが 0 か 1 で表される情報の最小単位
внутри информации, равная 0 или 1,
扱うデータはすべて
компьютера - называется битом.
をビット(bit)といいます。
Набор из 8 битов, другими словами,
0と1を
это комбинации двоичное число, か
8 ビット(0 состоящее
1 かの数字が из 8 8раз-

組み合わせた рядов,並んだ
каждый из которых принима-
нулей и единиц. 8 桁の 2 進数)をまとめて
2 進数なのよ ет значения 0 или 1), называется бай-
1 バイト(byte)といいます。
том.

1 バイトは 2 の 8 乗、つまり数式
1 байтом
で表すと можно
28 = выразить 28 = 256
256 通りの情報を
информационных сообщений.
表すことができます。

表 2.1 2
Таблица 2.1. Соответствие 進数と 10 進数と
двоичных, 16 進数の対応
десятичных и шестнадцатеричных чисел

Двоичные
進数
2 числа
Десятичные
進数
10числа Шестнадцатеричные
進数
16числа
Двоичные
進数
2 числа
Десятичные
進数
10числа Шестнадцатеричные
進数
16числа
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 10 A
0011 3 3 1011 11 B
0100 4 4 1100 12 C
0101 5 5 1101 13 D
0110 6 6 1110 14 E
0は0で
Нуль - 0,
1は1で
один - 1,
0111 7 7 1111 15 F два - 10...
2 は 10 で…
Так как при увеличении двоичных чисел резко уве-
2 進数は数が大きくなるにつれ、どんどん桁数が増える
тичивается их разрядность, их часто выражают в
ため、しばしば 16 進数による表記が用いられます。
шестнадцатеричном виде.
16 進数であることを示すために、
Для 「0x」という記号を
того чтобы показать, что число является шест-
надцатеричным,
前に付ける場合があります。16 как правило, перед
進数の 0xAним
は 10ставят
進数
знак
の 10 «0x»: шестнадцатеричное число 0xA выражает
を表します。
десятичное число 10.

В 文字を用いた歴史的暗号と違い
отличие от исторических
шифров, в которых использо-
現代暗号では
вались буквы, в современных
すべて 2 進数が基本に
шифрах всё основано на
なっているわ!
двоичных числах!

2-1 Двоичные числа и сложение по модулю 2 51


51
итак, давайте
サイファが
значит, ではпопробуем
残したのも
сайфер здесь 最初の 8 桁の 2 進数を
преобразовать первое 4上位
старших бита 4下位
4 ビット младших
4 ビットбита
文字を 2 進数に
тоже заменил 8-разрядное двоичное
4 桁ずつに区切って
буквы
置き換えたもの
двоичными
число в
16 進数に書きかえて
шестнадцатеричное,
0011 / 0001
なのか?
числами? みましょう
разбив его на группы
по 4 бита.
↓ ↓
3 1

31 ? 
тридцать
サーティワン?
один?

現在コンピュータで
в кодировке символов,
используемой в
よく使われる
современных компьютерах
文字コード(ASCII)では
(таблице ASCII),
16 進数の 31 は
шестнадцатеричному
数字の「1」にあたるわ
числу 31 соответствует
цифра 1.

4上位 4 ビット
старших бита Таблица 2.2.
表 2.2 JIS Кодировка
X 0201 コード JIS X 0201
下位4ビット



JIS X 0201
Кодировка JIS コ ード
X 0201  
4 младших бита

00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0
は、世界標準の
расширяет междуна-
ASCII 00 DE 0 @ P p ー タ ミ    
コродную
ー ド(7стандартную
ビ ッ ト )を
кодировку ASCII ( 7 бит) 01 SH D1 ! 1 A Q a q 。 ア チ ム    
日本国内用に拡張して
до 1 байта (8 бит), 02 SX D2 " 2 B R b r 「 イ ツ メ    
1 バイト(8 ビット)に
давая возможность 03 EX D3 # 3 C S c s 」 ウ テ モ    
し、英数字と記号に加
выражать в дополнение 04 ET D4 $ 4 D T d t 、 エ ト ヤ    
えて、半角カタカナ等
к цифрам и английским
を表せるようにした文 05 EQ NK % 5 E U e u ・ オ ナ ユ    
буквам знаки азбуки
字コードです。 06 AK SN & 6 F V f v ヲ カ ニ ヨ    
«катакана» половинной
ширины и др. 07 BL EB ' 7 G W g w ァ キ ヌ ラ    
※表の見出しは 16 進 08 BS CN ( 8 H X h x     ィ ク ネ リ    

数 で、 上 側столбцов
Заголовки が上位 4 09 HT EM ) 9 I Y i y ゥ ケ ノ ル    
таблицы соответствуют
ビットを、左側が下位 0A LF SB * : J Z j z     ェ コ ハ レ
4 младшим
ビットを表します。4 битам, а 0B HM EC + ; K [ k {     ォ サ ヒ ロ    
заголовки строк –
старшим 4 битам 0C CL → , < L ¥ l |     ャ シ フ ワ    
шестнадцатеричного 0D CR ← - = M ] m }     ュ ス ヘ ン
числа. 0E SO ↑ . > N ^ n  ̄     ョ セ ホ ゛    
0F SI ↓ / ? O _ o ッ ソ マ ゜    

52
52  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
очень похоже, Таблица 2.3. Соответствие двоичных
すると чисел и символов кодировки JIS X
что сайфер 表 2.3 2 進数と JIS X 201 コードの対応
サイファが残した数字は
закодировал 0201
может быть,
こういうことね
вот такие символы. 2 進数 16 進数 JIS X 0201
1 足す 1 は
Двоичные Шестнадцатеричные Кодировка этот
числа 2 じゃないか
сайфер -
числа JIS X 0201
コード
дурак?

00110001 31 1
ведь 1
00101011 2B +
サイファって
плюс 1
バカ?
будет 2.
00110001 31 1

00111101 3D =

00110000 30 0

1+1=0
エックスオア

これは XOR 演算
そんなはず
нет, такого это - операция xor
быть (исключающее
は い た て き ろ«или»),
ないわ! 他的論理和の
つまり排словами,
ん り わ

не может! другими
式を表してるのよ!
сложение по модулю 2!

暗号に必要な
эта логическая
операция нужна
論理演算よ !!
для шифрования!!

エックスオージャン
用事を思い出した
у меня дела,
醤?※
X O XO?
соус トンビ?
коршун?
надо идти...
から帰る…

は いた

歯зуб
痛?
болит?

куда,
こらこら
куда?

Непереводимая игра слов с термином «исключающее ИЛИ».

2-1 Двоичные числа и сложение по модулю 2 53


53
логические
論理演算というのは
операции - это
1 と 0 のように
операции всего над コンピュータが
все операции,
2 種類の値だけを
двумя значениями: 行う計算は
выполняемые
компьютером,
扱う計算のことよ
1 и 0.
すべて論理演算
являются
なのよ!
логическими!

OR (логическое
OR(論理和) A+B A + B
сложение) AND (логическое
AND(論理積) A・B A ⋅ B
умножение) NOT (инверсия)
NOT(否定) A A

A B A+B A ⋅
B A+B A A
0 0 0 0 0 0 1 0
1 0 1 1 0 0 0 1
0 1 1 0 1 0
1 1 1 1 1 1

Если A или B равно 1, то результат равен 1. Если


いずれかが1のとき結果は1になる A и B равны 1, то результат равен 1. Если1なら0、0なら1になる
両方が1のとき結果は1になる A равно 0, то результат равен 1.

NAND (штрих Шеффера)


NAND(否定論理積) NOR (стрелка Пирса)
NOR(否定論理和) XORXOR (排他的論理和)
(сложение по модулю 2)
A・B A+B A・B+A・B =(A⊕B)

A B AB A B A+B A B A⊕B
0 0 1 0 0 1 0 0 0
1 0 1 1 0 0 1 0 1
0 1 1 0 1 0 0 1 1
1 1 0 1 1 0 1 1 0

Еслиいずれかが0のとき1になる и B равно 0, то результат равен 1. Если互いに異なれば結果は1になる


A или B равно 0, то результат равен 1. Если A両方が0のとき1になる A и B отличаются, то результат равен 1.
(В связи с этим называется также
(一致・不一致論理ともいう)
Рис. 2.1. Логические операции
図 2.1 論理演算
«логической неравнозначностью»)

排他的論理和は 
как показано Cложение по модулю 2 この演算が
排他的論理和(XOR
(операция XOR) 演算)の а зачем
図 2.1
на рис. 1,
のように なんの役に
нужна такая
результат 記号は「⊕」で、
обозначается ⊕. Например,
互いの値が
XOR будет равен 1, 1 ⊕ 0 = 1、1 ⊕ 1 = 0 立つの?
операция?

異なるときが「1」で
если a и B - разные,
のように用います。
и равен 0,
それ以外は「0」に
если A и B -
なるわ
одинаковые.

54
54  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
これを見て!
посмотрите
сюда!

Пусть (1101) – это открытый текст, а (1001) – ключ шифрования. Тогда опера-
 かりに(1101)を平文、 (1001)を暗号化鍵として、XOR 演算を行います。
ция XOR даст нам следующий результат:
(1101)⊕(1001)=(0100)
Открытый Ключ Шифртекст
平文 шифрования
текст 暗号化鍵 暗号文

 演算結果の(0100)を暗号文と考えることにしましょう。次に暗号文(0100)と復号鍵
Результат операции – (0100), – будем считать шифртекстом. Теперь выполним
операцию XOR演算を行います。
(1001)の XOR над шифртекстом и ключом расшифрования (1001).

(0100)⊕(1001)=(1101)
  Шифртекст Ключ
暗号文 расшифрования
  復号鍵   Открытый
平文 текст

 すると、復号して平文が得られます。また、暗号文(0100)と平文(1101)の
При этом произойдёт расшифрование – мы получим открытый текст. XOR 演
Теперь
мы выполним операцию XOR над шифртекстом и открытым текстом. Как видите,
算を行うと、次のように鍵が得られます。
у нас получился ключ.
(0100)⊕(1101)=(1001)
Шифртекст Открытый Ключ шифрования (равен ключу расшифрования)
暗号文   текст
平文   復号鍵=暗号化鍵
Таким образом, если из трёх наборов данных: открытый текст, ключ шифро-
 つまり、平文、暗号化鍵、復号鍵、暗号文のうちのいずれか 2 つのデータから、残りのデー
вания (ключ расшифрования), шифртекст; – у нас имеются два, мы сможем найти
タがただ 1 つだけ導き出されます。
недостающий набор данных.

2-1 Двоичные числа и сложение по модулю 2 55


55
понятно!
なるほど! 
そ  с помощью операции XOR 暗号化 :
Шифрование:
ну, и XOR 演算で
ДЕЙСТВИТЕЛЬНО МОЖНО Открытый
それが 平文 ⊕ 暗号化鍵
Ключ = 暗号文
Шифртекст
что это 暗号化や復号の処理が
ЗАШИФРОВЫВАТЬ И
текст шифрования
どうした…?
означает?
実際にできるわけね!
РАСШШИФРОВЫВАТЬ
ИНФОРМАЦИЮ! Люблю
愛してるよ ⊕ = §&★@♪〒

 
復号 :
Расшифрование:
暗号文
Шифртекст ⊕ 復号鍵
Ключ = Открытый
平文
расшифрования текст

§&★@♪〒 ⊕ = Люблю
愛してるよ

(Ключ шифрования равен


(暗号化鍵=復号鍵)
ключу расшифрования)

そのとおり
Одноключевой шифр =
верно! 共通鍵暗号 = 換字処理 + 転置処理+ XOR 演算
= Замена + Перестановка + Операция XOR
а если вдобавок
к第 1 章に出てきた
операции xor
использовать
換字と転置 
также замену и
そして XOR 演算を
перестановку,
使えば
о которых ...то можно
現代暗号の
говорилось реализовать
в главе 1.., 『共通鍵暗号』が
современный
実現できるのよ
«одноключевой
шифр»※.


Обычно этот шифр называют
«симметричным шифром». – Прим. ред.
ОДНО-
共通鍵? ЭТО ШИФР,
次から
КЛЮЧЕВОЙ? 暗号化と復号に
В КОТОРОМ ДЛЯ
В СЛЕДУЮЩИЙ РАЗ
ЗАШИФРОВанИЯ И
共通の鍵を用いる 共通鍵暗号について
РАСШИФРОВанИЯ Я О НЁМ РАССКАЖУ!
暗号よ
ИСПОЛЬЗУЕТСЯ ОДИН 学んでいきましょう!
И ТОТ ЖЕ КЛЮЧ.

ТЫ В НО
ПОРЯДКЕ? ついて
СМОГУ ЛИ
いけるかな…
Я ПОНЯТЬ?

56
56  第2章 共通鍵暗号化技術
 2Что
2-2 ーтакое
2  одноключевой
共通鍵暗号とは шифр? вшш...

※1

※2

※1 ※2
Кафе «Заяц»; Лапша «Рамэн»

Открытый
平文
текст
Шифрование
暗号化 共通秘密鍵
Общий ключ
Открытый
平文
текст

:
вание
ифро
Расш
復号

送信者
Отправитель 受信者
Получатель

не могу
これが
одноключевой взломать!
共通鍵暗号の
шифр выглядит
イメージよ !
вот так! Перехватчик
盗聴者

отправитель
暗号の送信者と
и получатель
да...

受信者同士が
зашифрованного
сообщения... 1 つの鍵を他人に
...используют
да...
知られないように使って
один и тот же ключ,
держа его
暗号化と復号を
в секрете от
するのね
посторонних...

2-2 Что такое одноключевой шифр? 57


57
Одноключевой
共通鍵暗号 (Commonшифр
Key(Common Key Cryptography)
Cryptography)は、その特徴から、 за
его особенности
対称鍵暗号 называют
(Symmetric также симметричным
Key Cryptography)、あるいは秘密
шифром (Symmetric Key Cryptography), или шифром с
鍵暗号(Secret Key Cryptography)とも呼ばれます。
секретным ключом (Secret Key Cryptorgathy).
歴史的な暗号 (慣用暗号)
Все исторические も、すべて共通鍵暗号です。
шифры тоже были одноключевыми.

представьте,
共通鍵暗号で 
что три человека
3 人が互いに 3 個でしょ?
три?
общаются, используя
通信するとしたら
одноключевой
шифр.

鍵はいくつ
сколько,
по-вашему,
必要だと
понадобится ピンポーン
Верно!
思う?
ключей?

じゃあ
а теперь
твоя очередь,
お兄ちゃん!
братец!
4 人が互いに
сколько
понадобится
通信するとしたら
ключей четверым
鍵はいくつ
для общения
必要?
друг с другом?

мм...

58
58  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
если троим -
3 人で 3 個なら
три..,
нет!

...значит, четверым -
4 人で 4 個?
четыре?

да, тут легко

間違えやすいけど
ошибиться.
понадобится
6 個よね?
шесть ключей,
не так ли?

количество ключей,
n 人の利用者が Количество n(n − 1)
которое требуется для 共通鍵の個数=
общих ключей nC2 =
共通鍵で相互に
взаимного общения 2
n暗号で通信する
пользователей
с помощью
場合
этого шифра,

必要な鍵の数は
расчитывается
вот по такой
こうやって計算するの!
формуле!

2-2 Что такое одноключевой шифр? 59


59
ほほう…
так, так... я умею
хорошо
もしа 100
если人 считать
общающихся
だったら…? таак... そ…
да?
в уме.
сто...
そう?
точно?

е
Каф
яц»
«За

4950個
4950
ключей!
でーす

да. если посчитать


уф,
100
100
C 22 を計算すると
C по формуле, было
то мы получим: вкусно!

100× ( 100 - 1 )
= 4950
    2
になるのよ

счёт,
пожалуйста...
о!
иб
ас
сп

а можно с помощью
共通鍵暗号を使うと
одноключевого шифра
秘密の電子メールを
обмениваться
暗号化して
секретными
送ったりできるの?
сообщениями
электронной почты?

60
60  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
конечно.
そうね でも но здесь но ведь и ключ
возникает проблема 鍵もメールで送れば
共通鍵をどうやって можно отправить
передачи общего ключа いいじゃないか
по электронной
通信相手に届けるかも
получателю почте?
問題だわ
сообщения.

а если его
鍵が盗まれたら
украдут, то какой
意味ないんじゃない?
будет смысл?

но ведь можно
じゃあその鍵を
зашифровать
別の共通鍵で
ключ другим
暗号化したら?
общим ключом?

а как тогда
別の共通鍵は あれ?
что?
передать
...и тот, другой
どうやって届けるの?
другой общий そのまた別の鍵も
ключ тоже
ключ? другой ключ またまた暗号化
別の鍵もまた зашифровать
тоже зашифровать
別の鍵で暗号化して… して…??
ещё ещё одним
ещё одним ключом...
ключом???

что? что?
что??

по
メールで…
E-мейлу...

2-2 Что такое одноключевой шифр? 61


61
結局のところ
придётся либо а так, если
よく考えたら
передавать подумать, общих
鍵のデータを メールをやりとり
данные ключа ключей для обмена
手渡しするか
из рук する人全員の
e-мейлами со всеми
в руки,
...либо 共通鍵を持つのは
партнёрами
понадобится
信頼できる人に
поручить 大変よね
очень много.
доставку
届けてもらうのが
надёжному
安全ね
человеку.

и здесь на помощь
приходит
そこで鍵の配送が不要な
шифр с открытым
『公開鍵暗号』
ключом,
という方式を
не требующий
使うのよ!
секретной
передачи ключа!

それについては
его мы будем
第 3 章で
изучать в главе 3.
学びましょう

共通鍵暗号は
одноключевой
共通鍵暗号の特徴
Особенности одноключевого шифра 公開鍵暗号と
шифр и шифр с
открытым ключом...
組み合わせて
Требуется осторожность при передаче и хра-
・鍵を知られないよう、配送や保管に注意する
нении ключа, так как его нужно держать в インターネットに
...используются
必要がある。
секрете. 関係する通信にも
вместе для связи
по利用されているわ!
сети интернет!

・計算量が少なく、高速に暗号化と復号が行え
Подходит для передачи больших объёмов данных, так как
низкая сложность вычислений позволяет проводить шиф-
るため、大量のデータの通信に適している。
рование и расшифрование с высокой скоростью.

Необходимо хранить большое количество ключей,


・多数の鍵とその管理が必要になり、不特定多
что делает шифр не подходящим для коммуникации
数との通信に適さない。
с неограниченно большим количеством партнёров.

62
62  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
共通鍵暗号の方式には
существуют
две разновидности どう они
а чем
大きくわけて 2 種類あるの
одноключевого шифра. 違うの?
отличаются?

Потоковый (逐次暗号)
①ストリーム暗号 шифр

②ブロック暗号
Блочный шифр

в блочном шифре
ブロック暗号は
ストリーム暗号は открытый текст
в потоковом шифре 平文と暗号文のデータを
ビットか
1биты или шифртекст
или байты
一定の長さ(ブロック)
сначала разбивается
1 バイトごとに
зашифровываются
наごとに区切って暗号化と
блоки равной дли-
次々に暗号化する方式よ
один за другим.
復号を行う方式よ
ны, которые затем
зашифровываются
まずはストリーム暗号から
и расшифровываются.
見てみましょう
сейчас я
これから
об этом
説明するわ
расскажу.

окク
лッ
Бロ

 2 ーУстройство
2-3 3 ストリーム暗号の仕組み
потокового шифра

2-3 Устройство потокового шифра 63


63
ストリーム暗号が
посмотрим, как
производится
どのように暗号化を
шифрование
行っていくのかを
в потоковом шифре.
見てみましょう

В потоковом шифре шифрование и расшифрование осуществляется после-


 ストリーム(Stream)とは、流れという意味です。逐次的に暗号化と復号を行うもので、
довательно, поэтому он применяется в связи, например в мобильных телефонах.
В качестве ключа используется длинная последовательность псевдослучай-
携帯電話による通信などに用いられています。
ных чисел (чисел, как бы взятых «с потолка»), сгенерированная на компьютере.
 鍵は、コンピュータで発生させた長い擬似的な乱数列 ( デタラメな数の並び)です。平
Для шифрования достаточно последовательно выполнять операцию XOR над
данными открытого текста и ключа.
文のデータと鍵を次々に XOR 演算するだけで暗号化できます。
Позволяет обрабатывать данные быстро благодаря простоте алгоритма, по
 ブロック暗号に比べて操作が単純なため、高速に処理が行えます。
сравнению с блочным шифром.
Типичные алгоритмы потокового
 代表的なストリーム暗号に、 шифра: Salsa20, SEAL и др.
「RC4」、「SEAL」などがあります。

Начало
はじめ
бит
1 ビット
Конец
おわり

Открытый
平文 1 1 0 0 1 … … … … …
текст

Последовательное побитовое шифрование


1ビットごとに流れるように暗号化

Ключ
鍵 1 0 1 1 0 … … … … …

Шифртекст
暗号文 1

Рис. 2.2.図Устройство потокового шифра


2.2 ストリーム暗号の仕組み

64
64  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
кстати,
а что такое ちなみに
и потоковый,
「擬似乱数列」って何?
последовательность ストリーム暗号も
и блочной шифры
псевдослучайных чисел? ブロック暗号も 
можно когда-нибудь
しらみつぶしに鍵を
взломать, перебирая
試せばいつか鍵が
ключи один
見つかっちゃうわ
за другим.
(79 ページ参照)
(См. стр. 79)

другими словами,
計算量的な安全性しか
они обладают
это только
保証されないってことね
擬似乱数列というのは
последовательность вычислительной
чисел, похожих на
乱数列っぽく見える数列の стойкостью.
случайные числа! да
ことよ(См.
(225стр.
ページ参照)
225) !

а последовательность 平文以上に長い
ведь, сгенерировав
本物の乱数列は последовательность
настоящих случайных 真の乱数列をつくれば
作れないの?
истинно случайных чисел
чисел сгенерировать それを鍵にして絶対安全な
длиной не менее
нельзя? открытого текста,
バーナム暗号が
мы получим совершенно
できるのに!
стойкий шифр вернама!

コンピューターで作るのは
на компьютере это
難しいのよ сложно.
сделать

あれ
а где братец?
お兄ちゃんは?
да, в самом деле...

ха-ха

ха-ха

2-3 Устройство потокового шифра 65


65
 2
2-4 ー 4 ブロック暗号の仕組み
Устройство блочного шифра а чем он
ストリーム暗号とは
отличается
どう違うの?
от потокового?

ёлом сайфере.

в блочном
ブロック暗号は
шифре
ある一定のブロック
шифрование
теперь давай
これから производится
ごとに暗号化をする
как следует изучим
по блокам
ブロック暗号の仕組みを
устройство 方式なの
определённой
きっちり学んで
блочного шифра.
длины.
いきましょう

В отличие от потокового
 ストリーム暗号が шифра, в котором используется побитовое шифро-
1 ビットごとに暗号化していったのに対し、ブロック暗号はある一定の
вание, в блочном шифре информация зашифровывается блоками определённой
ブロックに分けて暗号化していきます (図 2.3)
длины (рис. 2.3). Длина одного блока 。1 ブロックの長さは暗号によって違いますが、
зависит от разновидности шифра, имеются
64-битные,
64 ビットのものと 128-битные блочные шифры. Кстати, так 1как
128 ビットのものがあります。ちなみに однобайтовый
バイトの文字は символ
8 ビットになる
кодируется восемью битами, 64-битный блок содержит 8 символов.
ので 64 ビットを 1 ブロックとするなら、8 文字で 1 ブロックになります。

64 ビット
бита 64 ビット
бита 64 ビット
бита бита
64 ビット
Открытый
平文
текст абвгдежз
イロハニホヘトチ ийклмноп
リヌルヲワカヨタ рстуфхцч
レソツネナラムウ шщъыьэю
ヰノオクヤマケフ

Шифрование
暗号化 Шифрование
暗号化 Шифрование
暗号化 Шифрование
暗号化

Шифртекст
暗号文 ×××××××× ×××××××× ×××××××× ××××××××

Рис. 図
2.3. Устройство блочного шифра
2.3 ブロック暗号の仕組み

Длину блока сделали равной 64 битам потому, что высокопроизводительные


 1 ブロックが 64 ビットになったのは、コンピュータの処理能力向上によって、計算回数が
компьютеры могут обрабатывать блоки такой длины с меньшим количеством вы-
少なくてすむようになったためと、極端にビット数が少ないと安全性に問題があるためです。
числений, а также потому, что при малом числе битов снижается безопасность
блочного шифра.
表 2.4 ブロック暗号の種類
Таблица 2.4. Разновидности блочных шифров

Название
暗号の名称 шифра в битах Длина
Длина блока〔ビット〕
ブロック長 ключа в битах
鍵長〔ビット〕
DES 64 64
AES 128 128 192 256

66
66  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
あれ ?
7〔文字〕
букв × 8〔ビット〕
битов = 56〔ビット〕
битов
что?

а как тогда
例えばエメラルド
зашифровать,
например ведь
(Emerald)を 56 ビットに
его длина
слово «изумруд»
暗号化するとして
(Emerald), будет
なるよな?
равна
バイトの文字がиз 7
1состоящее
56 битам.
文字だから……
7однобайтовых
символов?

ブロック長を
да, ведь
そういう場合は
в подобных случаях
если длина
64 ビット(8 バイ パディング(Padding:
текст дополняют詰め物)を
блока равна
ト)とした場合
64 битам.., 足して до длины блока
с помощью заполнителей.
56 ビット
битов
8 ビット
битов
ブロック長に合わせればいいの
(Padding).

...то нам здесь


8 ビット (1 バイト)
не хватает

64 ビット
足りないわね…
8 битов
бита (1 байта)...

В том случае если длина блока


1ブロックのブロック長を равна 64 битам...
64 ビットとした場合

E m e r a l d
Открытый
平文
текст

  Заменяем
文字コードでсимволы
16 進数とするна их шестнадцатеричные коды.

56 ビット
битов
ビット
8 битов
8 ビット
битов 8 ビット
битов ビット
8 битов 8 ビット
битов ビット
8 битов ビット
8 битов ビット
8 битов 足りない
не хватает

0x45 0x6D 0x65 0x72 0x61 0x6C 0x64

Дополняем текст
ブロックの長さ(64 заполнителями до длины в 64 бита.
ビット)に合わせてパディングする

64 ビット
бита
8 ビット
битов 8 ビット
битов 8 ビット
битов 8 ビット
битов 8 ビット
битов ビット
8 битов 8 ビット
битов 8 ビット
битов

0x45 0x6D 0x65 0x72 0x61 0x6C 0x64 0x01

      

Коды однобайтовых символов выражены в виде двухзначных шестнадцате-
※上の 0x で始まる記号は、16 進数 2 桁の文字コード (1 バイト ) を表します。
ричных чисел (на это указывает префикс 0x перед числами).
図 2.4 パディングの例
Рис. 2.4. Пример дополнения битами-заполнителями

В вышеприведённом
 上の例では、 「0x01」を加えて、примере текст дополняется
ブロック長の до длины
64 ビット (8 バイト блока в 64 бита
) にしてあります。 (8 байтов)
この「0x01」
с помощью байта-заполнителя. Этот байт, равный 0x01, то есть 1, показывает число бай-
とは「1」のことで、которое
тов-заполнителей, 復号する際に取り除かれるパディングのバイト数を表しています。パディ
будет удалено при расшифровании. Существуют и другие ме-
ングには、この例以外にもいくつかの方法があります。
тоды дополнения.

2-4 Устройство блочного шифра 67


67
длину открытого
どんな平文も
текста нужно
ブロック長の倍数に 平文が長くて
а если открытый
отрегулировать текст длинный,
なるよう ブロックが複数
так, чтобы она состоящий из
調整するのね
была кратна あるときは
многих блоков..,
длине блока.
...то все они
みんなばらばらに
зашифровываются
暗号化するのか ?
по отдельности?

そういう
да, такой 各ブロックを
метод
шифрования и
やり方も
метод 独 立したものとして
тоже Электронная кодовая книга
エレクトリック コード ブック расшифрования
あるわ ! 個々に暗号化と復号を
есть! ECB: ElectronicCode
ECB:Electric CodeBook
Book блоков независимо
行う方式を
один от другого...

ECB モード
...называется
というの ECB.
режимом

но если при этом Пусть в открытом тексте два раза встречается


それだと
получатся блоки,
例えば平文の中に 2 箇所「my love,」が出てくるとする。
последовательность символов «my love,».
平文の中にブロック単位で
состоящие из …my love,…………my love ,
同じデータがあったら
одинаковых данных
открытого текста, 暗号化
Шифрование

暗号文にも
...то и в шифртексте
…/"!#$&%*…………/"!#$&%*
重複が起きて
возникнут повторения. Тогда в шифртексте будет два раза повторяться
не снизит ли это すると「/"!#$&%*」が重複し、暗号を解読する
последовательность символов «/»!$&%*»,
安全性が低くならない? 手がかりとなってしまうおそれがある。
что может стать зацепкой для раскрытия шифра.
безопасность?

чтобы предотвратить
それを防ぐために
это, используется метод
Сцепление блоков шифртекста
サイファ ブロック  チェイニング 連鎖式ブロック暗号という
под называнием
CBC: Cipher Block
CBC:Cipher Block Chaining
Chaining 方式があるのよблоков
«сцепление
шифртекста».

なんだ
ой,
что это?
それ?

68
68  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
CBC モード
Режим сцепления блоков шифртекста (CBC)
Режим CBC – это метод, позволяющий получать на выходе криптосистемы разный
 CBC モードは、同一の平文でも異なる暗号文が出力されるように工夫してある方式です。
шифртекст при одинаковом открытом тексте на её входе.
 平文をブロックに分けて組み立てるとき、入力データか出力データの一部を、ブロック単位
После разбиения открытого текста блоки входных или выходных данных исполь-
зуются повторно (это называется «обратной связью»), что позволяет рассеивать непре-
にフィードバックして、平文のブロック間の連接情報をさらに拡散させ、暗号としての強度を
рывные данные открытого текста между блоками, повышая тем самым стойкость шиф-
増大させるものです。
ра ※
.

Открытый
平文(2 текст
進数) … Pi - 1 Pi Pi + 1 …
(двоичные числа)

Ci - 1

 
Блоки входных данных
入力データブロック… Xi - 1 Xi Xi + 1 …

  X(64 ビット)
i (64 бита)
K Алгоритм шифрования DES
Ключ шифрования
暗号化鍵 DES 暗号化アルゴリズム

出力データブロック…
Блоки выходных данных Ci - 1 Ci Ci + 1 … Ci - 1 Ci Ci + 1 …
(64бита)
(64 ビット)
暗号文(2 進数)
Шифртекст
図 2.5 CBC の仕組み (двоичные числа)
Рис. 2.5. Устройство режима CBC

 図В2.5
случае, показанном
の例の場合は、1 на рис. 2.5, предыдущий
つ前の暗号文ブロック блок шифртекста PCiiとの排他的論理和、
Ci - 1 と次の平文ブロック – 1 складывается
по модулю 2 со следующим блоком открытого текста Pi :
つまり、

Xi = Ci - 1 ⊕ Pi , где i = 1, 2, 3...,

иで演算された出力 i を、暗号化のための入力データとしています。このようにすれば、
результат этой Xоперации 同じデー
Xi используется в качестве входных данных шифрования.
Таким образом, даже при наличии одинаковых
タの平文のブロックがあっても、同じデータの暗号文のブロックが生成されることはありませ
блоков открытого текста одинаковые
блоки шифртекста сгенерированы не будут. Правда, для самого первого блока X1 вход-
ん。ただし、最初のブロックには、フィードバック
ных данных приходится в качестве предыду-
щего
するデータблока Cвыходных данных использовать за-
0 が用意されていないので、1 つ前の объяснения
ранее сформированный вектор инициализа- だんだん説明が
постепенно
暗号ブロックである初期値
ции C0. (Initial Vector) という 本格的になって
становятся
всё более
ものを設定する必要があります。 きたな…
конкретными...

Правило использования нескольких блоков на-


 このように複数のブロックの暗号化を規定する方
зывается «режимом шифрования». Кроме вышео-
式をモードといいます。
писанного ブロック暗号のモードには、
режима CBC и описанного на предыду-
щей страницы режима
上記の CBC モード、前ページの ECB, существуют
ECB モードのほтакже та-
кие режимы, как OFB, CFB, и другие.
かに、OFB モード、CFB モードなどがあります。
 

Однако на больших объёмах данных у режима CBC есть уязвимости – Прим. ред.

2-4 Устройство блочного шифра 69


69
 2
2-5−Устройство
5 DES 暗号の仕組み
шифра DES

ре о
фе ла
а й де
м с ие
ло а н
сё о в
Ве с ле д

Для более глубокого понимания

Рас
※ DES 暗号の仕組みを理解する
устройства шифра DES рекомен-
дуем прочитать
 ためには раздел «Шифро-
87 ページからの「簡
вание и расшифрование
 易版 DES による暗号化と復号
в упрощённом DES», начинаю-
 の実際」を読んで下さい。
щийся со стр. 87.

хотя DES стал первым


世界で初めて標準化された
коммерческим шифром,
商用暗号は
принятымDES だけど
в качестве
мирового стандарта, Первый коммерческий шифр, ставший мировым стандартом:
最初の民間標準規格となった暗号:

...существовала
DES(Data Encryption Standard)
その元になった
криптосистема,
暗号システムが
положенная в
あったのよ!
его основу! その元になった暗号化システム:
Криптосистема, положенная в его основу:
ル シ フ ァ サ イ フ ァ

Lucifer Cipher(金星暗号)
(шифр «Люцифер»)

ホ ー ス ト フ ァ イ ス テ ル

開発者:IBM
Разработчик: Хорст 社の
Фейстель
Horst(Horst Feistel)
Feistel
из компании IBM
        

そうねぇ
ну... それなら
тогда советую
へぇ~!
ого!
прочитать
87 ページからの
«Шифрование
「簡易版 DES による
хочу узнать,
実際の仕組みは 暗号化と復号の в
и расшифрование
как он упрощённом des»,
どうなのか
устроен 実際」を読んで
начиная
実例で知りたいわ
на самом ! соちょうだい !! 87!!
страницы
деле!

70
70  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
Основы строения сети Фейстеля
Feistel 型暗号の基本構成

 ファイステルが考えた暗号化の方法は、次のようなものです。
Фейстель предложил следующий метод шифрования информации.
※ IP:Initial Permutation
平文 Pтекст P
Открытый

①  平文を、64открытый
Разбиваем ビットずつのブロッ
текст
分割 ①
Разбиение ① на 64-битные блоки.
クに分割します。
平文 P
Открытый текст P
(64 ビット)
(64 бита) ②  64 ビットのブロック内を初期
② Выполняем начальную переста-
転置 IPをして、ビットを入れ換
новкуIP битов 64-битного блока.
初期転置
Начальная IP IP ②
перестановка
え、ばらばらに組み換えます。

L0 R0 ③ Делим
③  64 64-битный блок на два32
ビットのブロックを、左
(32 ビット)
(32 бита) (32 ビット)
(32 бита) ビット(L0)と右
32-битных блока: 32 ビット
левый L0(R0)
KK11((ключ
暗号化鍵 )
иのправый
2 ブロックに分割します。
R 0.

1Цикл
Операция шифрования)
XOR ⊕⑤ Нелинейная функция f
XOR

段目(1(раунд)
f で換字・転置処理 ④ Выполняем замену暗号化鍵
и перестанов-
演算 ④ ④  R0 のブロックを、 (K1)
ку битов блока R0 c помощью не-
を用いた非線形関数 f で、複雑に
ラウンド)1
 

линейной функции f, использую-


換字・転置処理をします。
щей ключ шифрования K1.
L1=R0 R1=L0 ⊕ f(R0,K1)
(32 ビット)
(32 бита) (32 бита)
(32 ビット)
⑤ Сложив по модулю
⑤  ④の処理後、R 2 блок L0 и
0 と L0 を XOR
значение
演算し、新たな右 функции32 f (Rビット
0, K1(R
), полу-

чаем правый 32-битный блок R11.
2 ~ 15 段目(2 ~ (раунды)
Циклы 15 ラウンド) 繰り返し ⑥
2–15 を作ります。もとの R を新たな
Левый 32-битый блок L1 принима-
0

左 32
ем ビット 
равным R 
(0. L 1)とします。
KK1616(ключ
( 暗号化鍵)
шифрования)
XOR ⊕
Операция
XOR ⑥ ④と⑤の処理を 1 段(1 ラウン
Цикл

f で換字・転置処理
Нелинейная функция f 16
段目( (раунд)

演算 ⑥ ド)として、
Выполняем ④–⑤
2 段目(2 ラウンド)
в цикле
16
ещё
か ら15
15раз (раундыラ2–16).
段 目(15 ウンド)ま
ラウンド)

で繰り返します。

L16=R15 R16=L15 ⊕ f(R15,K16)


16

⑦ 右
⑦ 32 ビット
Объединяем (L16)と右
левый 32 ビッ
и правый
(32
(32 ビット)
бита) (32
(32 ビット)
бита) ト(R16)の2つブロックを
32-битные блоки L16 и R1664в ビッ
один
64-блок.
トのブロックに再構成します。

L16́ =R16 R16́ =L16 ⑧⑧Выполняем


 最後に、初期転置の逆の処理
конечную перестанов-
(32 ビット)
(32 бита) (32 бита)
(32 ビット) IPIP
ку を行って、1
- 1 –1
ブロックの暗
битов 64-битного блока, об-
ратную
号化が完成します。 начальной перестановке IP.
(計
(64 64 ビット)⑦
бита)
Конечная
最終転置 IP −IP
перестановка 1 –1

出力 M (64
M(64
Выход ビット)
бита) Выполнив ②–⑧
すべてのブロックで
над всеми 64-бит- DES
вотの仕組みは
Как
②~⑧を行い、再構
ными блоками, この図と同じよ!
устроен DES!

暗号文 C C
Шифртекст объединяют их в
築する
шифртекст.
図 2.6 DES における暗号化手順(暗号文の生成)
Рис. 2.6. Порядок шифрования DES (генерирование шифртекста)

2-5 Устройство шифра DES 7171


ДА УЖ, ДЛЯ
暗号作りには 
ГЕНЕРИРОВАНИЯ 解読防止の
ДЛЯ
ЗАЩИТЫ
変換処理は

ец я,
ШифртекстА
面倒な処理が

а т йс
!
ПРИХОДИТСЯ ОТ всКРЫТИЯ...

бр а ра
たくさん必要
ВЫПОЛНЯТЬ

ст
ТАК МНОГО
なんだねえ!
ЗАПУТАННЫХ
ВЫЧИСЛЕНИЙ! インボリューション
...в этом шифре
という形式で
используется
行われているの
инволюция.

Инволюция
インボリューション

 インボリューション(involution)とは、 2 回変換したら元に戻るような変換のことです。
Инволюция – это такое преобразование, при двухкратном применении кото-
рого происходит возврат к первоначальному виду.
 例えば、1 が 4 に、2 が 3 に、3 が 2 に、4 が 1 となる変換を考えてみましょう。この
Рассмотрим, например, такое преобразование, при котором 1 превращается
変換では、
в 4, 2 – в変換前と変換後の値は 1 対 1 преобразовании
3, 3 – в 2, 4 – в 1. В этом で対応しています。ここで、 回続けて変換を行っ
каждому 2входному значению
соответствует одно выходное значение. Попробуем выполнить его два раза.
てみましょう。すると、

     1 → 4 → 1
     2 → 3 → 2
     3 → 2 → 3
     4 → 1 → 4

となって、いずれももとの値に戻っています。このような変換をインボリューションとい
Как видите, мы получили первоначальные значения. Такое преобразование
называется инволюцией, которая тесно связана с механизмом шифрования и
います。インボリューションは、DES 暗号の復号の仕組みに深く関わっています。
расшифрования DES.

нет, структура этого


ファイステルさんの нет... この暗号の構造は
шифра в честь
да, фейстель
暗号は создал
開発者にちなんで
разработчика

立派なもの
превосходный Feistel 型と
названа いまでも
она
сетью
шифр!
だったのね! 呼ばれ 利用されて
используется
фейстеля. и в наши дни.
いるのよ

7272  第2章 Глава 2. Одноключевой шифр


共通鍵暗号化技術
нет, длина
鍵長が
ключа
очень Длина
DES ключа DES по
の仕様上の鍵長は 64 специ-
ビット
DES は まるで違うの !
DES и сильно фикации равна 64 битам, но
Lucifer と- ですが、そのうち実際の鍵に用い
в  действительности в качестве
LUCIFER отличается!
同じもの
это одно られるのは
ключа 56 ビットで、残りの
используе тся 56 бит,
иなの
то? же? DES の鍵長は
ключ DES
а  остальные 8 бит
8 ビットはパリティチェック нужны для
(誤
より
LuciferКОРОЧЕ
НАМНОГО -
проверки чётности.
り検出 ) に使われます。
ずっと短い
его длина
ВСЕГО 64 БИТА! Проверка чётности прово-
64 ビットよ
дится для обнаружения ошибок,
パリティチェックとは、ノイズの
которые могут возникнуть в дан-
混入や読み取りミスなどから発生
ных под действием шумов, в ре-
したデータのエラーを検出するこ
зультате ошибки чтения и т. п.
とです。

но ведь
鍵長は長いほど
Вы

чем длиннее
со
Дл

ка

暗号の安全性が
ин

ключ, тем
ны
й

高くなるはずだろ
безопаснее шифр,
?
Бе
не так ли?
зо
па
сн
ос
ть
Кл
юч

когда выбирали 鍵の候補は


число возможных
規格を定めるとき
длину ключа, ключей※не должно
10 京 個以下に
превышать
アメリカの
агенство
NSA しぼれ квадриллионов※.
ноなんで?
100
почему?
национальной
(国家安全保障局)が
безопасности (АНБ)
鍵の候補数を
США ограничило
制限したのよ
число возможных
ключей.

ну,
ではтогда
56 ビット
сойдёмся на
(256)というこ
битах (256)...
56 とで…

※ ちょう けい がい

Миллион–
※億 =108 兆 10
=6,10
миллиард
12
 京= 10 10 垓
– 16 9
, триллион
=1020  – 1012, квадриллион – 1015, квинтиллион – 1018.

2-5 Устройство шифра DES 73


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

она стремится
всегда быть
способной
раскрывать шифры,
чтобы узнавать
важные секреты!

ой,
как страшно...

брр...

в шифре DES
ключ проходит много
стадий обработки,
и получаемые при
этом значения...

..используются как
константы нелинейной
функии f в каждом из
циклов (раундов)
шифрования.

74 Глава 2. Одноключевой шифр


DES の暗号化鍵生成ключей шифрования DES
Генерирование
Ключи K1, K2, K3, .., K16, используемые для шифрования DES, генерируются так,
 DESключи,
чтобы で暗号化に使う鍵
используемыеKв1,K 2,K3из
каждом ,…,K 16 は1段(1ラウンド)ごと異なるように仕組ま
раундов, отличались друг от друга.
れています。

Общий секретный
共通秘密鍵 K(初期鍵)
ключK  (начальный ключ) ※ PC:Permuted
PC: Permuted Choice
Choice
(64
(64 ビット)
бита)

① Удаляем
 64 8 битов проверки
ビットの初期鍵から誤り
Перестановка
選択転置 PC выбора
− ① чётности из 64-битного на-
PС-1 1 検出に使う 8 ビットを除いて選
чального ключа и перестав-
(56 битов)
(56 ビット)
択転置 PC-1 します。
ляем остальные биты.

C0 D0

(28 ビット)
(28 битов) (28ビット)
(28 битов) ②  56
② ビットを、
Делим 左на
56 битов ビット(C0)
28два
と右 28 ビット
28-битных (D0)
блока:  の 2 ブロッ
левый
クにします。C0 и правый D0.
Циклический сдвиг влево Циклический сдвиг влево
左巡回シフト LS1 (LS1) ③ 左巡回シフト
LS1 (LS1)

1段
Цикл


(1(раунд)
C1 D1  C0 と D0 をあるビット数だけ
③Циклически сдвинув влево на
左巡回シフト(LS 1)し、これを
ラウンド)1

(28 ビット)
(28 битов) (28 ビット)
(28 битов) определённое число битов (LS1)
④ C1 と D
блоки C10 とします。
и D0, получаем C1 и D1.
Перестановка
圧縮転置 PC сжатия

PС-2 2

鍵 KK
Ключ ④ C1 и D1, перестав-
11
④  C 1 と D1 を合わせ、8
Объединив ビット
(48 ビット)
(48 битов) ляем
を 除 биты
いて圧 со縮сжатием (PC-2)
転 置 PC-2 し、 и
получаем 48-битный
48 ビットの鍵 K とします。 ключ K 1 .
1
2 ~ 15 Циклы
段目(2 ~(раунды) 2–15
15 ラウンド) 繰り返し ⑤

鍵 K2K~2 –K
Ключи K1515
(48
(48 ビット)
битов) ⑤  ③と④の処理を繰り返して、
⑤ Выполняя вычисления ③–④
в цикле,
各段 (ラウンド) получаем ключи Kn
の暗号化に使用
(n = 2, 3,.., 16) для каждого
Циклический
左巡回シフト
сдвиг влево Циклический сдвиг влево する鍵 K
из раундов を生成していきます。
n  шифрования.
LS16 (LS16) 左巡回シフト LS16(LS16)
Цикл

16
段目( (раунд)

C16 D16

(28ビット)
(28 битов) (28 битов)
(28 ビット)16 При генерировании ключей рас-
※復号鍵の生成の場合、巡回シフトにお
ラウンド16

шифрования вместо циклических


ける左を右に読みかえます。また、暗号
Перестановка сжатия сдвигов влево выполняем цикли-
圧縮転置 PC − 化に使う鍵とは逆に復号に使う鍵の生成
PС-2 2 ческие сдвиги вправо. Кроме того,

の場合、鍵 K16 から K1 の順で得らます。


ключи расшифрования генери-
руются в обратном порядке: K16,
鍵 KK
Ключ 1616 K15,.., K1.
(48 ビット)
(48 битов)

図 2.7 DES
Рис. 暗号における暗号化鍵と復号鍵の生成手順
2.7. Порядок генерирования ключей шифрования и расшифрования DES

2-5 Устройство шифра DES 75


75
вопрос! о’кей!
非線形関数
а как f
устроена
ってどんな
нелинейная я буду
仕組みなのf?? 図解で
объяснять
функция
説明するわ
по этой !
схеме!

なるべく
только,
やさしく
пожалуйста,
説明してくれよ
попроще...

DES の非線形関数
Устройство f の仕組み функции f шифра DES
нелинейной

В каждом
Rn − 1
S-BOX は
раунде
各段で
(32
(32 ビット)
бита) ①① 
 入力された左
Выполняем 32 ビットの
расширение вве-
используются デ ー タ を、
дённого 鍵に合わ
32-битного せ て 48
блока
異なるものが
разные 拡大転置
Функция E E ①
расширения до 48 битов (длина ключа).
使われるのよ ビットに拡大転置 E します。
s-блоки.

ERn − 1 ② Полученный 48-битныйXOR


②  そのデータを、鍵とで блок
(48 ビット)
(48 битов) складываем
演算します。
по модулю 2
с ключом.
鍵 KnKn
Ключ
⊕ (48
(48 ビット)
битов)
② ③ Разбиваем
③  演算の結果を、6 результатビットず
на
つ 8 つに分割します。
восемь 6-битных блоков.
ERn − 1 ⊕ Kn
(48 ビット)
(48 битов)
③ ④
④  6 ビットのデータを、それ
Преобразуем все 6-битные
(6 ビット)
(6 битов) (6
(6 ビット)
битов) (6 ビット)
(6 битов) (6
(6ビット)
битов) блоки в 4-битные
ぞれ S-BOX с помощью
(変換表)の 1か
восьми S-блоков (таблиц
ら 8 のボックスで、4 заме-
ビット
ны).
S−BOX1 S−BOX2 S−BOX7 S−BOX8 ④ に変換します。

(4 ビット)
(4 бита) (4
(4 ビット)
бита) (4 ビット)
(4 бита) (4
(4 ビット)
бита)
⑤  S-BOX
⑤ からの出力データ
Объединяем 4-битные блоки в
⑤ を、順番通りに結合し
32-битный 32 ビッ
блок в порядке их
(32 ビット)
(32 бита)
следования.
トに再構成します。
Выходная перестановка
出力転置 PS
PS ⑥

(32
(32 ビット)
бита) ⑥
⑥  最後にデータを転置 PS し
Выполнив выходную переста-
новку PS, получаем
たものが、関数 выходное
f の出力にな
f (Rn − 1, Kn) 非線形関数
Выход f の出力
нелинейной функции f значение функции f.
ります。

Рис. 2.8. Устройство нелинейной


図 2.8 DES функции
の非線形関数 f шифра DES
f の仕組み

76
76  第2章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
Обобщённая модель шифрования и расшифрования DES
DES による暗号化と復号の基本構成

Шифрование
 DES и расшифрование DES проводится следующим образом. Шиф-
による暗号化と復号の方法は、次のようなものです。平文の暗号化変換処理と暗号文
рование открытого текста и расшифрование шифртекста представляют собой
の復号処理は反対のプロセスになります。
взаимно обратные процессы.
Генерирование ключей Генерирование ключей
Шифрование
暗号化処理 шифрования
暗号化鍵生成処理 Расшифрование
復号処理 расшифрования
復号鍵生成処理
Ввод открытого進法)
平文入力(2 текста Секретный ключ Ввод шифртекста進数)
暗号文入力(2 Секретный ключ
秘密鍵(2 進数)
(в двоичном виде) 秘密鍵(2 進数)
(двоичное число) (в двоичном виде) (двоичное число)
(64ビット)
(64 бита) (64ビット)
(64 бита) (64ビット)
(64 бита) (64ビット)
(64 бита)
Начальная
初期転置 перестановка
IP Перестановка
選択転置 выбора
− Начальная
初期転置 перестановка Перестановка
選択転置 PC выбора

IP PС-1PC 1 IP
IP
PС-1 1
L0(32) R0(32) C0(28) D0(28) L0(32) R0(32) C0(28) D0(28)

Раунд 1 鍵 KK1 1
Ключ Раунд 1 Раунд 1 Ключ
鍵K K1616 Раунд 1
変換処理第 1 段目
преобразования 生成処理第 1 段目
генерирования 変換処理第 1 段目
преобразования 変換処理第 1 段目
генерирования
(48) (48)
L1(32) R1(32) C1(28) D1(28) L1(32) R1(32) C1(28) D1(28)

Раунд 2 Ключ鍵KK22 Раунд 2 Раунд 2 鍵K


Ключ K15
15 Раунд 2
変換処理第 2 段目
преобразования 生成処理第 2 段目
генерирования 変換処理第 2 段目
преобразования 生成処理第 2 段目
генерирования
(48) (48)
L2(32) R2(32) C2(28) D2(28) L2(32) R2(32) C2(28) D2(28)

L15(32) R15(32) C15(28) D15(28) L15(32) R15(32) C15(28) D15(28)

Ключ
鍵K K1616 Раунд 16 鍵K
Ключ K11
Раунд 16
Раунд 16
変換処理第 16 段目 生成処理第 16 段目 変換処理第
Раунд 16
16 段目 生成処理第 16 段目
преобразования (48) генерирования преобразования (48) генерирования
L16(32) R16(32) L16(32) R16(32)

Конечная перестановка
最終転置–1IP − 1 ※ Конечная перестановка
最終転置–1IP − 1 ※
IP
В скобках указана
※( )の中はビット長 IP
В скобках указана
※( )の中はビット長
(64ビット)
(64 бита)  длина в битах. (64 ビット)
(64 бита)  длина в битах.

Вывод шифртекста進数)
暗号文出力(2 Вывод
平文出力(2открытого進数)
текста
(в двоичном виде) (в двоичном виде)

Рис. 図
2.9. Модель
2.9 DES шифрования DES
による暗号化の基本構成 Рис. 2.10. Модельによる復号の基本構成
図 2.10 DES расшифрования DES

1970 年代のはじめに
говорят, что
в криптосистеме
ファイステルが
Lucifer , разработанной
開発した暗号化システム
фейстелем в начале 70-х
годовはXX века,
Lucifer
ブロック長
...длина 64 ビットで 
ключа была
равна 112 бит, хотя тоже
鍵長 112 ビット
использовались 64-битные
だったそうよ… блоки.

2-5 Устройство шифра DES 77


77
 2 − 6 3ーDES
2-6 暗号とиAES
Шифры 3-DES AES暗号 お兄ちゃん 
ну что, братец,
DES は DES
шифр
理解できた?
понял?

так,
かすかに…
примерно.

でも 
но я перечитаю
何度も読み返して
несколько раз... えらいわ!
молодец!

...и きっとマスター
обязательно
усвою его
してやるぞ!
в совершенстве! да нет,
ничего
особенного...
гладь,
ух... гладь

для начала лучше


まずは 87 ページからの
углубить понимание,
簡易版で理解を
изучив пример упро-
深めなきゃだめなのね
щённого des, начина-
がんばるしかないか…
ющийся со стр. 87.

(на седьмом
небе от счастья) однако этот DES
でも DES って昔から
СУЩЕСТВУЕТ УЖЕ
ある暗号らしいけど
ДАВНО. ЯВЛЯЕТСЯ ЛИ ОН
今でも安全に
БЕЗОПАСНЫМ ШИФРОМ
使えるのかしら?
И В НАШИ ДНИ?

Надпись на повязке: «Храбость».

78
78  第 2 章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
НАСЧЁТ ЭТОГО...
それがね
КОМПЬЮТЕРЫ Недостатки
DES の欠点 шифра DES
コンピュータの発達で
РАЗВИЛИСЬ ТАК,
解読できるように
ЧТО ТЕПЕРЬ ЕГО ・鍵長が短い。鍵長が短いと処理
Малая длина ключа: замедление
МОЖНО
なってきたのвзломать. скорости обработки и снижение
 速度が遅くなったり、解読され
стойкости шифра.
 やすくなる。
・S –BOX の設計基準がないため、
Отсутствие стандарта на S-блоки:
возможно появление слабых реали-
 弱い実装が出まわりやすい。
заций.
  

конечно
どんな ぜったい
каким же... (резко)

無理
方法で?
образом?
(в упоении
самим собой)
...не сможешь!
б
а
м
おれにも
например,
яできる?
смогу?

ブロック暗号を вот
существуют Таблица 2.3.表Методы криптоанализа блочных шифров
2.3 ブロック暗号の解読法
解読する方法には
такие методы
криптоанализа
こういうのが Полный
блочных перебор Проверяют один за другим все
あるわшифров. 全数探索法  しらみつぶしに鍵をさがす方法
(метод «грубой возможные ключи
силы»)
Метод поиска ключа, основанный на
Дифференци-  入力の差分が、そのまま出力の差分と
свойстве операции XOR: разность
差分解読法
альный  なる XORсложения
(результат 演算の性質を利用して、鍵
по модулю 2)
криптоанализ входных
 をさがす方法 данных передаётся на выход без
изменений

Метод
 S–BOXвероятностной оценки выходных
を線形近似(一次関数の直線
Линейный данных, основанный на линейной
線形解読法
криптоанализ  で近似)して、確率的に出力を推定す
аппроксимации S-блоков
 る方法

2-6 Шифры 3-DES и AES 79


79
年代に
с 90-х
1990 годов КАК?!
XX века СТАЛО А ЗАЧЕМ
DES による暗号は せっかく勉強
ВОЗМОЖНО... ТОГДА МЫ ЕГО
したのに
ИЗУЧАЛИ?
...вскрывать ВОТ
全数探索法や 困ったなーっ!
шифр DES МЕТОДаМИ НЕЗАДАЧА!
線形解読法で
ПОЛНОГО ПЕРЕБОРА,
解読されるように
ЛИНЕЙНОГО
КРИПТОАНАЛИЗА
なったの ШУХ
И ДРУГИМИ.

トリプル デス судя
名前からすると
そこで по названию,
В新しい暗号の
СВЯЗИ С ЭТИМ を応用-
DES это
ПОЯВИЛСЯ НОВЫЙ したものね?
разновидность
3ーDES が
ШИФР ПОД шифра des?
誕生したのよ!
НАЗЫВАНИЕМ
3-des※!

3ーDES は、
Полное название
шифра 3-DES –
TripleーDES
Triple-DES.
ともいいます。


3-DES уже считается небезопасным – Прим. ред.

そうよ
да. только 平文 текст
Открытый
鍵を 回使って
в 33-DES
Шифрование
алгоритм DES DES 暗号化 鍵 1 K1
Ключ
暗号化を DES
(56-битный ключ
ПРИМЕНЯЕТСЯ (56 ビットの暗号化鍵)
行うものなの
три раза. 1-й DES 暗号文 1DES
шифртекст шифрования)
Расшифрование
DES 復号 鍵 2 K2
Ключ
DES
(56-битный
(56 ビットの復号鍵)ключ
2-йDES 暗号文 2DES
шифртекст расшифрования)
Шифрование
DES 暗号化 鍵 3 K3
Ключ
DES (56 ビットの暗号化鍵)
Шифртекст (56-битный ключ
3ーDES шифрования)
3-DES 3-йDES 暗号文 3DES
шифртекст
暗号文
図 2.11 3ーDES
Рис. 2.11. の暗号化
Шифрование 3-DES

80
80  第 2 章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
но если для первого да. но если
最初の暗号化と
最初の暗号化と復号に
шифрования один и тот же ключ
и同じ鍵を使えば
расшифрования... 2 度目の暗号化に
использовать для

...использовать
同じ鍵を使い
первого
и второго
один и тот же
2度目の暗号化に шифрований,
ключ, то каким бы
а復号に異なる鍵を
для расшифрования
ни былどんな鍵を使っても
ключ ВТОРОГО
шифрования,
使えば
использовать
DES と同じ結果に другой ключ, то
результат будет 56 × 2 = 112 ビットの
なるわね длина ключа 3-DES
такой же, как в 鍵長になるわよ
будет уже 56 × 2 = 112
DES, да?
битов!


В этом случае
эффективная
Этот 3ーDES
※この

метод шифрования
の方式を、EDE
длина ключа
※この場合、実質的な鍵長
так и останется  3-DES
(Encrypt Decrypt Encrypt)
называется режимом EDE
は 56 ビットのままです。
равна 56 битам.  モードといいます。
(Encrypt Decrypt Encrypt).

А если НА всех
трёх ЭТАПАХ
すべてに異なる鍵を使えば
использовать
разные
56 × 3 = 168ключи,
ビットの
то длина ключа 3-DES
鍵長になるわ
будет равна
56 × 3 = 168 битов!

2-6 Шифры 3-DES и AES 81


81
да, похоже,
значит, 3-des
3ーDES って  そうみたい
что так.
отличается
ただ鍵長が
только
長くなるだけ
более
длинным
なのか?
ключом? 根本的な
а по сути,
проблема
解決には
осталась
なってないわね
нерешённой.

в связи с этим
ということで アメリカの
национальный институт AES:
стандатов и технологий
NIST(国務省標準技術局)が Advanced Encryption Standard
США (NIST) ОБЪЯВИЛ
次世代の標準となる
КОНКУРС НА ШИФР aes,
IBM や NTT など世界の企業や組織
Предложения поступали от компаний
AES 暗号を
который должен был
иから応募がありました。
организаций со всего мира, в том
公募することにしたの
стать стандартом
следующего поколения. числе от IBM, NTT и др.

р.. .
ш иф
а ?
й с

そしてついに
в конце концов
AES に採用
в качестве AES...
されたのが

ラ イ ン ダ ー ル

R...был
ijndael
выбран

アルゴリズムよ!
алгоритм «рэндал»!

いまではアメリカ政府の
сейчас он используется
機密文書の暗号化に
для шифрования
секретных документов
用いられているわ
правильства сша.

82
82  第 2 章 Глава 2. Одноключевой шифр
共通鍵暗号化技術
AES 暗号の概要
Общие   о шифре AES
сведения
 2000 年、Rijndael
В 2000 は、AES
году алгоритм として FIPS(Federal
«Рэндел» Information
был выбран в качестве Processing
стандарта FIPSStandard:
(Federal
Information Processing Standarts: федеральные стандарты обработки информации
連邦情報処理標準)に採用されました。Rijndael の名は、開発者であるベルギーのルーヴェ
США). Название Rijndael (по-голландски произносится «Рэндел») составлено из
ン・カトリック大学の研究者ホアン・ダーメン(Joan
имён разработчиков: Йоана Даймена (Joan Daemen) Daemen)とビンセント・ライメン
и Висцента Рэймена (Viscent
Rijmen) из Лёвенского католического
(Vincent Rijmen)にちなんでいます。 университета Бельгии.
В зависимости от длины ключа существует три типа AES, показанных в
 AES は、鍵長によって、表 2.4 に示す 3 タイプがあります。
табл. 2.4.
  Таблица 2.4. Типы
表 2.4 AES шифра AES
暗号の種類

Тип
タイプ Длина ключа в битах ブロック長
鍵長〔ビット〕 Длина блока в битах Число段数
〔ビット〕 раундов
AES–128 128 128 10
AES–192 192 128 12
AES–256 256 128 14

Стойкость шифра тем выше, чем длиннее ключ и чем больше число раундов.
 暗号の強度は、鍵長が長いほど、段数が多いほど、大きくなります。
В основе данного шифра лежит не сеть Фейстеля, а подстановочно-переста-
 暗号の構造は、Feistel
новочная 型ではなく、SPN(Substitution
сеть (Substitution Permutation
Permutation Network: SPN, SP-сеть), Network)型と呼
состоящая из
ばれるものです。入力ブロックと各段の鍵を XOR 演算し、換字と転置の処理を同時に行
множества раундов, в которых над результатом сложения по модулю 2 входного
блока и ключа соответствующего раунда одновременно выполняются замены и
いながら、段数を重ねていくというものです。
перестановки.
 今後は、DES から安全性の高い
Можно предположить, AES に移行
что шифр AES, обладаю-
щий высокой криптостойкостью,
していくことになるでしょう。 в будущем заме-
нит шифр DES※.


AES уже по факту заменил DES – Прим. ред..

неужели
AES って ПРЕДСТАВИМ, ЧТО
DES の解読に
этот AES НА ВСКРЫТИЕ des
そんなに
ОБЛАДАЕТ 1 秒かかると
требуется
安全性がУЖ
ТАКОЙ したら
одна секунда.
高いの?
ВЫСОКОЙ
СТОЙКОСТЬЮ? сколько времени
AES の解読には
тогда, по-вашему,
どれくらい
примерно
かかると思う?на
потребуется
вскрытие AES?

2-6 Шифры 3-DES и AES 83


83
около
одного
года? а вот и нет!
149триллионов лет,
как считается!

аа !!

НЕСМОТРЯ НА
РАСКРЫТИЕ
устройствА S-БЛОКОВ ЗНАЧИТ, AES
И РАБОТУ МНОГИХ ОСТАНЕТСЯ
ИССЛЕДОВАТЕЛЕЙ, БЕЗОПАСНЫМ
И В БУДУЩЕМ?!
...НИКАКИХ
ПРОБЛЕМ
НА ДАННЫЙ
МОМЕНТ
ОБНАРУЖИТЬ
НЕ УДАЛОСЬ.

НО КРИПТОАНАЛИЗ
ТОЖЕ
РАЗВИВАЕТСЯ!

НЕКОТОРЫЕ СЧИТАЮТ,
ЧТО AES БУДЕТ
ОСТАВАТЬСЯ БЕЗОПАСНЫМ
ЕЩЁ ЛЕТ ДЕСЯТЬ.

84 Глава 2. Одноключевой шифр


ЭХ... КСТАТИ,
БРАТЕЦ,
КОГДА ЖЕ ТЫ,
НАКОНЕЦ, КУПИШЬ
МНЕ КОМПЬЮТЕР?!
Я ВЕДЬ УЖЕ ТАК
МНОГО РАССКАЗАЛА
ПРО ШИФРование!

А...

Я ЗНАЛ, ЧТО ТЫ
ЭТО СКАЖЕШЬ,
ДА?! ПРАВДА?!
И КОЕ-ЧТО
ПРИГОТОВИЛ!

АХ!
АХ! АХ!

ВОТ!

85
ЭТА ЭЛЕКТРОННАЯ
ВЫЧИСЛИТЕЛЬНАЯ
МАШИНА НАМНОГО
УДОБНЕЕ, ЧЕМ
СЧЁТЫ!

Й С Я!
РАДУ

ДРР
ДРР

ДРР

Я ЖЕ ПРОСИЛА
НЕ КАЛЬКУЛЯТОР..,

...А КОМПЬЮТЕР!!

КАКОЙ ЖЕ ТЫ,
БРАТЕЦ, ДУРАК...

ТЕПЕРЬ попрактикуйтесь
в шифровании
и расшифровании
с помощью ОПИСАНИя
УПРОЩЁННОГО DES,
НАЧИНАЮЩЕгоСЯ на
СЛЕДУЮЩЕЙ СТРАНИЦе.

А В ГЛАВЕ 3 ВАС
ЖДЁТ КОЕ-ЧТО
ОЙ...
ИНТЕРЕСНОЕ:
Я Открою КЛЮЧ,
КОТОРЫЙ ДО ЭТОГО
БЫЛ СЕКРЕТНЫМ!

86 Глава 2. Одноключевой шифр


簡易版 использования
Пример DES による暗号化と復号の実際
упрощённого DES

Как暗号では、どのように暗号化と復号が行われるのでしょうか。DES
 DES же осуществляется шифрование и расшифрование DES? Попробуем
暗号の簡略版を用い разо-
браться в этом с помощью облегчённой версии DES.
て説明します。

Преобразование
2 進データへの変換 в двоичные данные
Данные,
 DES используемые во всех современных
暗号に限らず現代暗号では、2 шифрах, включая DES, вообще гово-
進データを取り扱うので、文章にせよ数字にせよ、平文
ря, являются двоичными, поэтому открытый текст, состоящий из букв и цифр, необхо-
を 2 進データに変換しておく必要があります。ここでは、表
димо 2.7 に示す 16 только
преобразовать в двоичные числа. Здесь мы будем использовать 文字(1 16文字は意味
симво-
лов (один из которых является ничего не значащим
のない「捨字」)のみを用いることにし、1 文字を 4 ビットの 2 進コードに対応づけたものに変 «исключённым символом»). Пре-
образовав эти символы в соответствующие им 4-битные двоичные коды, мы выразим
換して、平文を「0」と「1」の系列で表すことにします。
данные в виде ряда, состоящего из нулей и единиц.

表 Символы
Таблица 2.7. 2.7 文字とи2 進コード
их двоичные коды

Символы Двоичные Двоичные


文字 2 進コード
коды 文字
Символы 2 進コード
коды
A 0000 I 1000
B 0001 J 1001
C 0010 K 1010
D 0011 L 1011
E 0100 M 1100
F 0101 N 1101
G 0110 O 1110
(Исключённый
H 0111 (捨字)
символ) 1111

Генерирование
DES 暗号文の生成 шифртекста DES
Длина блока в реальном шифре DES равна 64 битам, но здесь мы будем использо-
 DES
вать 暗号では 64шифр
упрощённый ビットを DES 1 ブロックとしていますが、一般性を損なうことなく、わかりや
с 8-битным блоком и двумя раундами шифрования, что
すく説明するために、8
позволит ビットを
более наглядно 1 ブロックとし、2
описать 段の簡易 DES
общие закономерности. 暗号を考えます。DES
Генерирование шифртекста 暗号
DES основано на двух процессах: шифровании и генерировании ключей (рис. 2.12).
の生成は、暗号化と鍵生成の 2 つの処理に基づいて行われます(図 2.12)。
Сначала с помощью табл. 2.7 представим открытый текст, который мы хотим за-
 まず最初に図
шифровать, в виде に示すように、暗号化したい平文を表
2.12последовательности какにより「0」と「1」の列に変換
нулей и единиц,2.7 показано на рис. 2.12, а за-
тем перемешаем 8-битные двоичные данные
します。8 ビットの 2 進データは、まず初期転置 IP によってランダム化されます。どのように с помощью начальной перестановки IP
в соответствии с табл. 2.8.
ランダム化されるかについては、表
Смысл табл. 2.8 заключается 2.8 の通りです。
в том, что, например, 1-й слева бит 8-битного блока
введённого открытого текста становится
 表 2.8 は、8 ビットずつにブロック化された平文入力に対して、例えば、入力の第 5-м слева битом на выходе начальной пере-
1 ビットは
становки, 2-й слева бит –1-м слева битом и т. д. (рис. 2.13).
初期転置で出力の第 5 ビットに転置されることを意味します(図 2.13)。以下、左から右へとい
う順に入力の第 2 ビットは出力の第 1 ビットに、……というように置換します。

Пример использования упрощённого DES 87


87
Открытый текст P
平文入力(2число)
(двоичное 進数)

初期転置
Начальная IP IP
перестановка

ビット
(44 бита) 4 ビット
(4 бита)
L0 R0

6 ビット
(6 битов)  鍵 K1 K1
Ключ
f (R 0 , K 1 ) ER0 (復号時は鍵 K 2)
(при расшифровании –
1 ⊕ f ключ K2)

4 ビット 6 ビット
Раунд

(4 бита) (6 битов)
目 1

L1=R0 R1=L0 ⊕ (R
f 0,K1)

6 ビット
(6 битов) Ключ
 鍵 K2K2

f R1,K2) ER1 (при расшифровании
(復号時は鍵 K 1) –
⊕ f ключ K1)
2 ビット
(44 бита) 6 ビット
(6 битов)

Раунд
目 2

L2=R1 R2=L1 ⊕(
f R1,K2)

L'
2 =R2 R'
2 =L2

4 ビット
(4 бита) 4 ビット
(4 бита)

Конечная
最終転置 IP − IP
перестановка 1 –1

8 ビット
(8 битов)
Выходной
暗号文出力 шифртекст (L",2 R")
2

Рис. 2.12. Порядок генерирования


図 2.12 簡易版 шифртекста упрощённого DES
DES における暗号文の生成手順 

Таблица 2.8.表Начальная
2.8 初期転置 перестановка
IP IP

入力ビット位置
Позиции входных битов,jj 1 2 3 4 5 6 7 8
出力ビット位置
Позиции выходных битов,kk 5 1 6 2 7 3 8 4

表 2.9 初期転置(表
Таблица 2.9. Начальная перестановка2.8 の別表現)
(другая форма записи табл. 2.8)

出力ビット位置
Позиции выходных битов,kk 1 2 3 4 5 6 7 8
入力ビット位置
Позиции входных битов,jj 2 4 6 8 1 3 5 7

88
88  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
入力ビット位置
Позиции входных битов

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

出力ビット位置
Позиции выходных битов

図 2.13 初期転置
Рис. 2.13. Начальная перестановка
IP IP

 また、表 2.8 は出力のビット順に並べた形式として、表


Кроме того, табл. 2.8 можно выразить в виде табл.2.9 のように表されることもありま
2.9, переставив колонки в по-
рядке
す。表следования выходных битов. В табл.
2.9 では、初期転置された出力の第 2.9 1-му выходному
1 ビットには入力の第 биту соответствует 2-й2
2 ビットがきて、出力の第
входной бит, 2-му выходному биту – 4-й входной бит и т.д. (рис. 2.14).
ビットには入力の第 4 ビット目がくる、……という具合です(図 2.14)。

出力ビット位置
Позиции выходных битов

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8
Позиции
入力ビット位置 входных битов

図 записи
Рис. 2.14. Другая форма IP の別表現
начальной
2.14 初期転置 перестановки IP

Полученный после начальной перестановки ряд битов (двоичных данных) после


 初期転置されたビット列(2
двух раундов генерирования進データ)は、図 2.12 中の 2 段の暗号を生成する処理のあと、
шифртекста подвергается конечной перестановке IP –1
表 2.102.10),
(табл. の最終転置 IP によってもとの入力のビット位置に戻されることになります。
−1
возвращающей биты в те же самые позиции, которые они имели до на-
чальной перестановки.
表 2.10 最終転置
Таблица 2.10. IP - 1
Конечная перестановка IP –1

入力ビット位置
Позиции входных битов, k 1 2 3 4 5 6 7 8
出力ビット位置
Позиции выходных битов,j j 2 4 6 8 1 3 5 7

Другими словами,
 すなわち、表 2.8 と表совместив табл. 2.8 и 2.10, можно заметить, что, 2.8
2.10 とを連続して形で表現してみると、例えば、表 например,
で入力の第 5-й5
входной бит в табл. 2.8 оказывается на выходе 7-м битом, а затем, в табл. 2.10, 7-й бит
ビットは第
опять 7 ビットとして出力されます。さらに、その第
возвращается в первоначальную позицию 5-го бита7 ビットは表 2.10 より第 5 ビットに
(рис. 2.15).
なり、もとの第 5 ビットの位置に戻ってくることがわかります(図 2.15)。

Пример использования упрощённого DES 89


89
入力ビット位置
Позиции входных битов
1 2 3 4 5 6 7 8

初期転置
Начальная перестановка
IP IP

1 2 3 4 5 6 7 8

最終転置
Конечная IP − 1 IP –1
перестановка

1 2 3 4 5 6 7 8
出力ビット位置
Позиции выходных битов
Рис. 2.15. Совместное действие перестановок:
図 2.15 初期転置 IP と最終転置 IPначальной
-1
IP и конечной IP –1
の組み合わせ

В примере, описывающем процесс шифрования упрощённого


 ここで、これから具体的に説明していく過程で必要となる DES 暗号で用いる DES,2 мы будем ис-
つの鍵は、
пользовать следующие два ключа:

     K1=(110001), K2 =(111000)                    (1)  

(о генерировании ключей будет рассказано позже). Далее мы попробуем превратить


とします(鍵の生成については、後述します)
строку символов MC в строку шифртекста。いま、1 文字をDES,
упрощённого 4 ビットで表すことにし、MC
считая, что символы вы-
ражаются 4-битными двоичными
という文字列を簡略版の числами. Согдасно табл.
DES 暗号文にしてみましょう。表 2.7, строка
2.7 より、MC はсимволов MC бу-
2 進数データとし
дет соответствовать двоичному числу 11000010.
て、MC → 11000010
Ниже と表されます。
будет описан конкретный упрощённый пример процесcа генерирования
шифртекста暗号の生成の流れについて、具体例で説明しますので、みなさんも
 以下、DES DES. В целях углубления понимания рекомендуем читателям тщательно
1 つずつ丁寧
проверять каждую операцию.
に計算し、理解を深めていってください。

Шаг 11
ステップ
 初期転置として、表 2.8 の初期転置表に基づいて、平文(11000010)=「MC」の転置出力
Используя табл. 2.8, выполняем начальную перестановку IP открытого текста
データを作成します(図
11000010 = «MC» (рис.2.16)。
2.16).

MC 1 1 0 0 0 0 1 0

初期転置 IP
Начальная перестановка IP

Выходные данные
転置出力データ 1 0 0 0 1 0 0 1
начальной перестановки
L0 R0

図 2.16 平文の初期転置
Рис. 2.16. IP による出力データ
Начальная перестановка ( IP) открытого текста

90
90  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
ステップ
Шаг 22
 ステップ 1 で得られた転置出力データを、上位
Делим выходные 4 ビット(左側)L
данные начальной перестановки, 0 と下位
полученные 4 ビット(右側)
на шаге 1, на стар-
ший (левый) 4-битный блок L и
R0 に分割します。図 2.16 より、以下のようになります。
0 правый (младший) 4-битный блок R 0, как показано на
рис. 2.16.

     L0 =(1000)                             (2)


     R0 =(1001)                             (3)

Шаг 33
ステップ
 表Используя
2.11 の拡大転置 табл.E(Expansion
2.11, проводим перестановку с расширением E (Expansion
Permutation)に基づいて、式(3)の下線部分の第 3 ビッ
Permutation) блока R0, продублировав 3-й и 4-й биты, подчёркнутые в выражении (3)
トと第 4 ビットを重複させて、R0 を拡大転置します(4 ビットを 6 ビットにビット数を増やし、
(в результате этой операции битность числа увеличится с 4 до 6, кроме того, изменятся
ビット位置を変えます)
номера 。
позиций битов).

     ER0 =(011001)                           (4)

表 2.11 拡大転置сEрасширением E
Таблица 2.11. Перестановка

出力ビット位置
Позиции выходных битов,kk 1 2 3 4 5 6
入力ビット位置
Позиции входных битов,jj 3 4 1 2 3 4

Шаг 44
ステップ
  式(4) の 拡 大 転 置 し た ER0 と、 鍵 K1=(110001) と の 排 他 的 論 理 和 を 計 算 し ま す( 図
Складываем по модулю 2 результат перестановки с расширением ER0 (4) и ключ
K2.17) 。
1 = 110001 (рис. 2.17).

     ER0(K1)=ER0 ⊕ K1                         (5)


         =(011001)⊕(110001)
      =(101000)                        (6)

R0 1 0 0 1

ス 拡大転置 E E
Перестановка с расширением

ER0 0 1 1 0 0 1
⊕ ⊕ ⊕ ⊕ ⊕ ⊕
K1 1 1 0 0 0 1
ER0(K1) 1 0 1 0 0 0

図 2.17 
Рис. 2.17. [ステップ
Порядок вычислений
4]の計算の流れ шагов 3 и 4

Пример использования упрощённого DES 91


91
ステップ
Шаг 55
 表 2.12 の圧縮換字変換 S(Substitution)に基づき、式(6)を圧縮換字変換します(6 ビッ
Используя табл. 2.12, выполняем над выражением (6) замену со сжатием S
トを 4 ビットに減らして、換字を選びます)
(Substitution) 。 битность уменьшится с 6 до 4).
(в результате этой операции

Таблица表2.12. Замена со сжатием


2.12 圧縮換字変換 S S

  列 番 号
Номера строк
  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
行 番 号

0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
столбцов
Номера

1 0 15 7 ④ 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8  6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Таблица 2.12 состоит из четырёх строк с номерами 0, 1, 2, 3, каждую из которых
 表 2.12рассматривать
можно には、行番号 0,как 1,2, выходной
3 で表示された алфавит шифра моноалфавитной замены. Выби-
4 種類の換字表が用意されています。このとき、
раем строку по значению 2-битного двоичного числа (диапазон принимаемых значе-
式(6)の 6 ビットのうち最初のビット(最左端で第 1 ビット)と最後のビット(最右端で第 6
ний (0)10–(3)10), составленного из 1-го (крайнего слева) и 6-го (крайнего справа) битов
ビット)の
выражения 2 ビットが指示する値により、換字表の種類を表す行番号を選別します。そして、
(6): (101000)2 = (10)2 = (2)10. Выбираем столбец по значению 4-битного дво-
残りの 4 ビットが指示する値により、列番号(0
ичного числа (диапазон принимаемых значений: ~ 15)の つを決定し、換字を選択します。
(0)101–(15)10), составленного из осталь-
ных битов(6)
 例えば、式 выражения
の(① 0100 (6):⓪)
(101000)
2 に対しては、2 = (0100)
(①⓪) 2 =2(4) 10. 10 行目を選び、次に(0100)
=(2) 2=
(4)10
Выбираем в табл. 2.12 ячейку на пересечении строки № 2 и столбца № 4 и преобра-
列目の交差する値(13)10 を選択した後(表 2.12 の□で囲む位置)、2 進数に変換して(1101)2
зуем содержащееся в ней десятичное число к двоичному виду: (13) 10 = (1101) 2.
を得ます。さらに、得られた(1101)
Полученное двоичное число подвергаем 2 を表 2.13 の出力転置 (PS に基づいて転置処理すると、
выходной перестановке PS по табл. 2.13:
(1101) → (0111)となります(図 。なお、 ( )
(1101)2 → (0111)2 (рис. 2.18). Использованные здесь
2.18) 2 および( ) 10 の添字はそれぞれ
обозначения 2 進数、
( )2 и ( )10 указывают,
10 進数表示を示します。
является ли число в скобках двоичным или десятичным соответственно.
Таблица 2.13. Выходная перестановка PS после
表 2.13 圧縮換字変換の出力転置 PS замены со сжатием

入力ビット位置
Позиции входных битов,jj 1 2 3 4
出力ビット位置
Позиции выходных битов,kk 3 4 1 2

ER0(K1) 1 0 1 0 0 0

圧縮換字変換(
Замена S )
со сжатиемPS

1 1 0 1

PS の出力転置
Выходная перестановка PS

f 0,K1)
(R 0 1 1 1
Рис. 図
2.5. [ステップ
Порядок
2.18  вычислений
5]計算の流れшага 5

92
92  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
Рассматривая преобразования шага 4: сложение по модулю 2 с ключом K1, замену
со сжатием S и выходную перестановку PS как единую нелинейную функцию f, мы мо-
以上の一連の処理計算が圧縮換字・転置変換です。この変換を非線形関数 f として、
жем записать:

      f(R0, K1)=(0111)                        (7)

Функция f нелинейна, так как она не удовлетворяет условию f(ax + by) = af (x) + bf (y).
と表すことにします。ここで、非線形関数とは、f
Например, проходящая через начало координат(ax + by)= 1-го
функция af(x)+ bf(y)を満たさない関数
порядка f (x) = 2x удов-
のことです。f(x)
летворяет этому =2x のような原点を通る一次関数は、この条件を満たすので線形ですが、
условию и поэтому является линейной, а квадратичная функция
f (x) = x22 этому условию не удовлетворяет и поэтому является нелинейной.
f =x のような二次関数は、条件を満たさないので非線形関数です。
(x)

Шаг
ステップ66
 図В2.12
соответствии с рис. 2.12, используя
より、1 段目の出力として上位 выражения (2),
4 ビット(左側)L (3) и (7), находим выходное
1 と下位 4 ビット(右側)R1 を、式
значение 1-го раунда, состоящее из двух 4-битных блоков: старшего (левого) L1 и млад-
(2)、式(3)
шего 、式(7)を利用して、次式により求めます。
(правого) R1.

     L1 = R0 =(1001)                          (8)


     R1 = L0 ⊕
+ f(R0, K1)                        (9)
       =(1000)⧻(0111)=(1111)                  (10)

1-й раунд генерирования


 以下同様に、ステップ 3 からшифртекста
ステップ 6 DES
 
(шаги 3–6) закончен, и мы переходим
を反復して計算することにより、DES 暗号文を生 ко
2-му раунду (шаги 7–10), в котором будут выполняться те же самые вычисления.
成することができます。

ステップ
Шаг 77
 表Используя
2.11 の拡大転置 табл.E に基づき、R перестановку с расширением E (Expansion
1 を拡大転置します。
2.11, проводим
Permutation) блока R1 (10):

     ER1 =(111111)                          (11)

ステップ
Шаг 88
 式(11)の拡大転置した ER21 と、鍵
Складываем по модулю K2 =(111000)との排他的論理和を計算します。
результат перестановки с расширением ER1 (11) и ключ
K2 = 111000:

     ER1(K2)= ER1 ⊕ K2                       (12)



          =(111111)+(111000)
          =(000111)                       (13)

ステップ
Шаг 99
Чтобы выполнить
 式(13)の(⓪ над
0011 ①) выражением
2 に対しては、
(13)2 перестановку
(⓪①) со сжатием S, выбираем
=(1)10 行目を選び、次に(0011) 2 =
(3)10 列
в табл. 2.12 ячейку на пересечении строки с номером (000111)2 = (01)2 = (1)10 и столбца
с номером (000111)2 = (0011)2 = (3)10.
Пример использования упрощённого DES 93
93
Преобразовав десятичное значение этой ячейки в двоичное число: (4)10 = (0100)2,
подвергаем его выходной перестановке PS по табл. 2.13:

   (0100)→(0001)  (14)
となり、最終的に、
Все преобразования шага 9 можно записать в виде:
  f(R1, K2)=(0001)  (15)
と表されます。

Шаг 10
В соответствии с рис. 2.12, используя выражения (8), (10) и (15), находим выходное
значение 2-го раунда, состоящее из двух 4-битных блоков: старшего (левого) L2 и млад-
шего (правого) R2.

 L2 = R1 =(1111)    (16)


 R2 = L1 ⧻ f(R1, K2)  (17)
   =(1001)⧻(0001)=(1000)  (18)
と求められます。

Шаг 11
В соответствии с рис. 2.12 меняем местами старший (L2) и младший (R2) 4-битные
блоки (рис. 2.19).

 L'
2 = R2 =
(1000) (19)
 R'
2 = L2 =(1111) (20)
 
L2 R2
1 1 1 1 1 0 0 0

1 0 0 0 1 1 1 1
L'
2 R'
2

Рис. 2.19. Вычисления шага 11

Шаг 12
В соответствии с табл. 2.10 выполняем конечную перестановку IP –1 двоичных дан-
ных рис. 2.19. 8-битное число, составленное из старшего (L2'') и младшего (R2'') 4-бит-
ных блоков, является искомым шифртекстом DES (рис. 2.20).

94 Глава 2. Одноключевой шифр


 L"=
2 (1110)    (21)
 R"=
2 (1010)    (22)
 得られた暗号文(11101010)
Шифртекст DES (23)

L'
2 R'
2

1 0 0 0 1 1 1 1

Конечная перестановка IP –1

Шифртекст DES 1 1 1 0 1 0 1 0
L"
2 R"
2

Рис. 2.20. Шифртекст DES, полученный после конечной перестановки IP –1

Расшифрование шифртекста DES


Теперь попробуем вернуться от шифртекста DES (рис. 2.20) к открытому тексту.
Порядок расшифрования будет совершенно таким же, как порядок генерирования
шифртекста (рис. 2.12), однако ключи будут использоваться в порядке, обратном по-
рядку использования ключей при шифровании. Другими словами, мы будем использо-
вать ключ K2 в 1-м раунде и ключ K1 во 2-м раунде расшифрования.

Шаг 1
Используя табл. 2.8, выполняем начальную перестановку IP шифртекста 11101010
(рис. 2.21).

Шаг 2
Делим выходные данные начальной перестановки, полученные на шаге 1, на стар-
ший (левый) 4-битный блок L0 и правый (младший) 4-битный блок R0. Сравнивая
рис. 2.21 с выражениями (19) и (20), мы можем записать:

 L0 =(1000)
(= L'
2 )  (24)
 R0 =(1111)
(= R'
2 )   (25)

Пример использования упрощённого DES 95


L"
2 R"
2

暗号文
Шифртекст 1 1 1 0 1 0 1 0

初期転置 IP
Начальная перестановка

Выходные данные
転置出力データ
начальной перестановки 1 0 0 0 1 1 1 1
L'
2 R'
2

L0 R0
Рис. 2.21. Начальная перестановка
図 2.21 暗号文の初期転置 ( IP) шифртекста
IP によるデータの出力

ステップ33
Шаг
 表 2.11 の拡大転置
Используя E に基づき、式(25)の下線部分の第
табл. 3 ビットと第 4Eビットを重複させて、
2.11, проводим перестановку с расширением блока R0, продубли-
Rровав 3-й и 4-й биты, подчёркнутые в выражении (25).
0 を拡大転置 E します。

     ER0 =(111111)                        (26)

ステップ
Шаг 44
 式(25)を拡大転置した ER0 2と、鍵
Складываем по модулю K2 =(111000)との排他的論理和を計算します。
результат перестановки с расширением ER0 (26) и ключ
K2 = 111000.
     ER0(K2)
= ER0 ⊕ K2                                         (27)
         =(111111)⧻(111000)
         =(000111)                      (28)

ステップ
Шаг 55
 表 2.12 の圧縮換字変換に基づき、式(28)を圧縮換字変換します。式(28)の(⓪ 0011 ①)2
Чтобы выполнить над выражением (28) замену со сжатием S, выбираем в табл. 2.12
に対しては、
ячейку на (⓪①) 2 =(1)
пересечении 10 行目を選び、次に(0011)
строки с номером (000111)2 2==(3) 10 列目の交差する値(4)
(01)2 = 10 を
(1)10 и столбца с номером
(000111)2 = (0011)2.12
選択したあと(表 2 = (3)10.
の○で囲まれた位置)、2 進数に変換して(0100)2 を得ます。さらに
Преобразовав десятичное значение этой ячейки в двоичное число: (4)10 = (0100)2,
(0100)2 は表его
подвергаем の出力転置
2.13выходной PS により、(0100)
перестановке →(0001)となり、最終的に、
PS по табл. 2.13: (0100)2 → (0001)2.
Все преобразования шага 5 можно записать в виде:
     f(R0, K2)=(0001)                         (29)
と表されます。

96
96  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
ステップ
Шаг 66
 図В2.12 より、1 段目の出力として上位
соответствии 4 ビット(左側)L
с рис. 2.12, используя 1 と下位
выражения (24), (25)4иビット(右側)R 1 を、式
(29), находим выход-
ное значение 1-го раунда, состоящее
(24)、式(25)、式(29)を利用して、次式により求めます。 из двух 4-битных блоков: старшего (левого) L1 и
младшего (правого) R1.

     L1 = R0 =(1111)                          (30)


     R1 = L0 ⧻ f(R0, K2)                       (31)
       =(1000)
⊕+(0001)=(1001)                   (32)
1-й раунд расшифрования DES (шаги 3–6) закончен, и мы переходим ко 2-му раун-
ду расшифрования(шаги 7–10), в котором буду т выполняться те же самые
以下同様に、ステップ 3 から ステップ 6 を反復して計算します。
вычисления.

ステップ
Шаг 77
 表Используя
2.11 の拡大転置 табл.E に基づき、R 1 を拡大転置します。
2.11, проводим перестановку с расширением E (Expansion
Permutation) блока R1 (32):

     ER1 =(011001)                          (33)

ステップ
Шаг 88
 式(33)の拡大転置した ER21 と、鍵
Складываем по модулю K1 =(110001)との排他的論理和を計算します。
результат перестановки с расширением ER1 (33) и ключ
K1 = 110001:

     ER1(K1)= ER1 ⊕ K1                        (34)


         =(011001)⧻(110001)
         =(101000)              (35)

ステップ
Шаг 99
 式(35)の(①
Чтобы выполнить ⓪)выражением
0100над 2 に対しては、 (①⓪) 2=(2)
(35) замену 行目を選び,次に(0100)
со10сжатием 2=
S, выбираем в табл. (4)
2.1210
ячейку на пересечении строки с номером
列目の交差する値(13) を選択したあと(表 2.12 の□で囲んだ位置)
(101000)2 = (10)2 = (2)10 и столбца с номером
、2 進数に変換して
(101000)2 = (0100)2 = (4)1010.
(1101) 2 を得ます。さらに、表
Преобразовав десятичное 2.13 の出力転置
значение PS により、
этой ячейки в двоичное число: (13)10 = (1101)2,
подвергаем его выходной перестановке PS по табл. 2.13:
     (1101)→(0111)                       (36)
Все преобразования шага 9 можно записать в виде:
となり、最終的に、
      f(R1, K1)=(0111)                     (37)
と表されます。

Пример использования упрощённого DES 97


97
Шаг 10
В соответствии с рис. 2.12, используя выражения (30), (31) и (37), находим выход-
ное значение 2-го раунда, состоящее из двух 4-битных блоков: старшего (левого) L2 и
младшего (правого) R2.

L2 = R1 =(1001)  (38)
 R2 = L1 ⧻ f(R1, K1)  (39)
   =(1111)⧻(0111)=(1000)  (40)
と求められます。

Шаг 11
В соответствии с рис 2.12 меняем местами старший (L2) и младший (R2) 4-битные
блоки (рис. 2.19).

 L'=
2 R2 =(1000) (41)
 R'=
2 L2 =(1001) (42)
 
L2 R2
1 0 0 1 1 0 0 0

1 0 0 0 1 0 0 1
L'
2 R'
2

Рис. 2.22. Вычисления шага 11

Шаг 12
В соответствии с табл. 2.10, выполняем конечную перестановку IP –1 двоичных дан-
ных рис. 2.22 (рис. 2.23).

 L"=
2 (1100)    (43)
 R"=
2 (0010)    (44)
 得られた平文 1100 0010
Открытый текст
 「M」 「C」

98 Глава 2. Одноключевой шифр


L'
2 R'
2

1 0 0 0 1 0 0 1

Конечная перестановка
最終転置 IP IP−–11

Открытый текст
平文 1 1 0 0 0 0 1 0
L"
2 (=‘M’) R"
2 (=‘C’)
図 2.23 
Рис. [ステップ
2.23. Вычисления шага 12
12]の計算の流れ

 こうして得られた
Полученное нами 8 ビットの出力データが平文に相当し、式(43)と式(44)の
8-битное двоичное число является открытым текстом,2 進コードはそ
а двоич-
ные коды выражений
れぞれ表 2.7 より「M」 、 (43) и (44) соответствуют символам «M»,
「C」という文字であることから、DES 暗号文が解読できたことになります。 «C» по табл. 2.7. Таким
образом, расшифрование шифртекста DES было проведено правильно.
 以上のことから、DES 暗号における暗号化処理と復号処理を対比させてみると、暗号化処
На основании вышеизложенного, сопоставив этапы шифрования и расшифрова-
ния DES, мы можем убедиться, что расшифрование происходит благодаря выполне-
理の流れをまったく逆にたどることにより、復号処理を実行していることが確認できます(図
нию в обратном порядке того же самого процесса, который использовался для шифро-
2.24)。
вания (рис. 2.24).

Шифрование
暗号化処理の流れ Расшифрование
復号処理の流れ

① 平文(11000010)
Открытый текст 暗号文(11101010)
Шифртекст ❶

② Начальная
初期転置(10001001)
перестановка 初期転置(10001111)
Начальная перестановка ❷

③ L0(1000)R0(1001) L0(1000)R0(1111) ❸
鍵 KK11
Ключ 鍵 KK22
Ключ
④ L1(1001)R1(1111) L1(1111)R1(1001) ❹

КлючKK22 鍵 KK11
Ключ
⑤ L2(1111)R2(1000) L2(1001)R2(1000) ❺

⑥ 2 (1000)R'
L' 2 (1111) 2 (1000)R'
L' 2 (1001) ❻

最終転置
Конечная перестановка(11101010) 最終転置
Конечная перестановка(11000010)
⑦ ❼
Шифртекст
暗号文 Открытый
平文 текст

上位 4 ビット
Обратите Li と下位 4наビット
внимание то, Ri が
入れ換わっていることに注意(i =(R0,
что старший ( L i) и младший i) 1,2)
4-битные блоки на этих этапах
меняются местами (i = 0, 1, 2)

Рис. 2.24. Взаимосвязь шифрования и расшифрования


図 2.24 暗号化処理と復号処理の対応関係

Пример использования упрощённого DES 99


99
Генерирование
DES 暗号化鍵の生成ключей шифрования DES

Теперь опишем
 続いて、DES порядок генерирования ключей шифрования и расшифрования
暗号の共通鍵について暗号化鍵、および復号鍵の生成手順を説明します。8 ビッ из
общего ключа DES. Сначала, положив 8-битный общий ключ (начальный ключ) K0 рав-
トの共通鍵(初期鍵)K 0 を、例えば、
ным, например, следующему значению:

     K0 =(10011001)                          (45)


として、まず図 2.12 の 1генерирования
проследим порядок 段目の鍵 K1 と 2ключей
段目の鍵шифрования
K2 を暗号化鍵として生成する手順を紹介し
для 1-го раунда (K1) и для
2-го раунда (K2) (рис. 2.25).
ます(図 2.25)。

共通秘密鍵
Общий K0K0
секретный ключ
※1
В случае расшифрования все
циклические сдвиги влево заменяются на
選択転置
Перестановка PC−1PС–1
с выбором
циклические сдвиги вправо.
 ※注
※2 1 復号鍵の生成の場合、左を右に読み換える
В случае расшифрования K'
0
 ※注ключи
2 復号鍵の生成の場合、鍵 K2,K1 の順に得られる
применяются в порядке K2, K1.

ビット
4 бита 4 ビット
бита
C0 D0

左 1 ビット巡回シフト
Циклический сдвиг влево на 1 бит 左 1 ビット巡回シフト
Циклический сдвиг влево на 1 бит
1


Раунд
目 1
ビット
66 битов C1 D1
ビット
4 бита 44 ビット
бита
鍵 K11
Ключ 圧縮転置
Перестановка PC−2PС–2
со сжатием

左 2 ビット巡回シフト
Циклический сдвиг влево на 2 бита 左 2 ビット巡回シフト
Циклический сдвиг влево на 2 бита

2

Раунд
目 2

C2 D2
ビット
66битов
ビット
4 бита 44 ビット
бита
鍵 K2
Ключ 圧縮転置
Перестановка PC−2PС–2
со сжатием

図 2.25 暗号化鍵と復号鍵の生成手順
Рис. 2.25. Порядок генерирования ключей шифрования и расшифрования

ステップ
Шаг 11
В соответствии с табл. 2.14
 式(45)の共通鍵(秘密鍵)K −
перемешиваем биты общего (секретного) ключа K0 (45)
0 を、表 2.14 の選択転置 PC 1 に基づき、ランダム化すると、
с помощью операции перестановки с выбором PC-1 (рис. 2.26).

 K'=
0 (00110101)                (46)
が得られます(図 2.26)。

100
100  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
Разделяем ключ K0' (46)
 ここで、式(46)の鍵 K'を、上位
0 4 ビット
на старший (C0) C と下位 4 ビット
и0младший D0 に分けて、
(D0) 4-битные блоки.

     C0 =(0011)                           (47)


     D0 =(0101)                            (48)
と表します。

Табл. 2.14.表Перестановка
2.14 選択転置 PC −1
с выбором PС-1

Старший
上位の4-битный
4 ビット блокCiC i Младший
下位の4-битный
4 ビット блокDD
i i
Позиции
入力ビット位置 входных битов,j j 1 2 3 4 5 6 7 8
出力ビット位置
Позиции выходных битов,kk 8 7 1 3 6 2 5 4

Начальный初期鍵
ключ KK00 1 0 0 1 1 0 0 1

Перестановка 選択転置(PC −1)


с выбором (PC–1)

K'
0 0 0 1 1 0 1 0 1
C0 D0

Рис. 2.26. 図
Перастановка −1
с выбором
2.26 選択転置 PC PC–1

ステップ
Шаг 22
 表В2.15 の左巡回シフトのビット数より、
соответствии 1 段目の左巡回シフトのビット数は
с табл. 2.15 величина 1 ビットなので、
циклического сдвига в 1-м раунде равна 1 би-
ту, поэтому мы циклически сдвигаем все биты каждого из
C0 と D0 の各ビットを 1 ビット左へ巡回シフトし、その結果を C1 と D1 と表します(図 2.27)。 блоков C0 и D0 по отдельно-
сти на одну позицию влево и обозначаем полученные результаты C1 и D1 (рис. 2.27).

     C1 =(0110)                            (49)


     D1 =(1010)                            (50)

表 2.15 左巡回シフトのビット数
Таблица 2.15. Величины циклического сдвига влево

段数
Номера раундов 1 2
シフトビット数
Величины циклического сдвига 1 2

Пример использования упрощённого DES 101


101
C0 D0
0 0 1 1 0 1 0 1

Циклический
1 ビット сдвиг
влево на 1 бит
左巡回シフト

0 1 1 0 1 0 1 0
C1 D1

Рис. 2.27. Операции циклического сдвига влево


図 2.27 左巡回シフトによる処理[ステップ 2] (шаг 2)

ステップ
Шаг 33
В соответствии
 表 2.16 の圧縮転置 PC−2с табл. 2.16 объединяем
に基づき、 блоки C1 (49)
C1 と D1 全体(式(49) и D1 (50)
、式(50) )を с 8помощью
ビットから переста-
6 ビッ
новки со сжатием PC-2 (битность уменьшается с 8 до 6) и получаем ключ K1, который
トに圧縮変換して、1 段目の暗号化に使う鍵
будет использоваться K1 が得られます(図
в первом раунде шифрования 2.28)。
(рис. 2.28).

     K1 =(110001)                        (51)


  Таблица 2.16. PC−2со сжатием PC-2
Перастановка
表 2.16 圧縮転置

出力ビット位置
Позиции выходных битов,kk 1 2 3 4 5 6
入力ビット位置
Позиции входных битов,j j 7 5 1 8 6 2

C1 D1
0 1 1 0 1 0 1 0

圧縮転置
Перестановка PC−2 PC-2
со сжатием

鍵K
Ключ K11 1 1 0 0 0 1

図 2.28.
Рис. PC−2 による処理[ステップ
Перастановка
2.28 圧縮転置 со сжатием PC-23]
(шаг 3)

Раз за разом повторяя вычисления шагов 2–3, мы сможем один за другим получать
 以下同様に、ステップ 2 から ステップ 3 を反復して計算することにより、次々と暗号化に使
ключи, которые будут использоваться для шифрования.
う鍵を得ることができます。

102
102  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
ステップ
Шаг 44
 表В 2.15 の左巡回シフトのビット数より、
соответствии 段目の左巡回シフトのビット数は
с табл. 2.15 величина2 циклического 2 ビットなので、
сдвига влево во 2-м раунде рав-
на 2 битам, поэтому мы циклически сдвигаем все
C1 と D1 の各ビットを 2 ビット左へ巡回シフトし、その結果を C2 と D2 と表します(図биты каждого из блоков C1 и2.29)
D1 по

отдельности влево на 2 бита и получаем C2 и D2 (рис. 2.29).

     C2 =(1001)                           (52)
     D2 =(1010)                           (53)

C1 D1
0 1 1 0 1 0 1 0

2 ビット
Циклический сдвиг
左巡回シフト
влево на 2 бита

1 0 0 1 1 0 1 0
C2 D2

Рис. 2.29. Операции циклического сдвига влево


図 2.29 左巡回シフトによる処理[ステップ 4](шаг 4)

ステップ
Шаг 55
 表В2.16 の圧縮転置сPC
соответствии −2 に基づき、
табл. C2 と D2 全体(式(52)
2.16 объединяем блоки C2 (52)、式(53)
и D2 (53))を 8 ビットから
с помощью 6 ビッ
переста-
новки со сжатием PC-2 (битность уменьшается с 8 до 6) и получаем ключ K2, который
トに圧縮変換して、2 段目の暗号化に使う鍵 K2 が得られます(図 2.30)。
будет использоваться во втором раунде шифрования (рис. 2.30).

     K2 =(111000)                        (54)

C2 D2
1 0 0 1 1 0 1 0

PC−2
сжатием PC-2
Перестановка со圧縮転置

鍵K
Ключ K22 1 1 1 0 0 0

図 2.30 圧縮転置
Рис. 2.30. PC−2
Перастановка соによる処理[ステップ 5] 5)
сжатием PC-2 (шаг

Пример использования упрощённого DES 103


103
DES 復号鍵の生成 ключей расшифрования DES
Генерирование
 暗号化鍵は、式(45)の共通鍵(初期鍵)K порядке K1, K2 из общего ключа
Ключи шифрования мы генерировали0 в=(10011001)をもとにして、K (начально-
1,K2 の順に生
го ключа) K0 = 10011001 (45). Ключи расшифрования необходимо генерировать из об-
成されました。逆に、暗号文を平文に戻す復号鍵は、共通鍵 K0 をもとにして、K
щего ключа K0 в обратном порядке – K2, K1. При использовании 2,K
алгоритма, 1 の順に生
показанно-
го на рис. 2.25, это может быть достигнуто
成される必要があります。このとき、図 благодаря замене операций циклического
2.25 と同じ処理手順で生成するならば、暗号化鍵の生
сдвига влево, выполнявшихся в процессе генерирования ключей шифрования, на опе-
成では左に巡回シフトしていた処理を、復号鍵の生成では右に巡回シフトする処理に置き換える
рации циклического сдвига вправо. Ниже мы проследим порядок генерирования клю-
ことで実現できます。以下に、図 рис.に基づき、復号鍵を得る手順をまとめます。
чей расшифрования на основе2.12 2.25.

ステップ11
Шаг
В соответствии с табл. 2.14
 式(45)の共通鍵(秘密鍵)K −
перемешиваем биты общего (секретного) ключа K0 (45)
0 を、表 2.14 の選択転置 PC 1 に基づき、ランダム化します。
с помощью операции перестановки с выбором PC-1.

     K'
0 =(00110101)                          (55)
     C0 =(0011)                            (56)
     D0 =(0101)                            (57)

ステップ22
Шаг
 表 2.17 の右巡回シフトのビット数より、
В соответствии 1 段目のビット数は
с табл. 2.17 величина 1 ビットなので、
циклического сдвига 0とD
вправо вC1-м 0 の各ビッ
раунде рав-
на 1 биту, поэтому мы циклически сдвигаем
トを 1 ビット右へ巡回シフトし、その結果を C1 と D1 と表します(図 2.31)。
все биты каждого из блоков C 0 и D0 по от-
дельности на одну позицию вправо и обозначаем полученные результаты C 1 и D1
(рис. 2.31).
     C1 =(1001)                            (58)
     D1 =(1010)                            (59)

表 2.17 右巡回シフトのビット数
Таблица 2.17. Величины циклического сдвига вправо

段数
Номера раундов 1 2
シフトビット数
Величины циклического сдвига 1 2

104
104  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
C0 D0
0 0 1 1 0 1 0 1

Циклический
1 ビットсдвиг
вправо на 1 бит
右巡回シフト

1 0 0 1 1 0 1 0
C1 D1
図 2.31 右巡回シフトによる処理[ステップ
Рис. 2.31. Операции циклического сдвига вправо
2] (шаг 2)

ステップ
Шаг 33
 表В2.16 の圧縮転置сPC −2 に基づき、C1 と D1 全体(式(58)、式(59))を 8 ビットから 6 ビッ
соответствии табл. 2.16 объединяем блоки C1 (58) и D1 (59) с помощью переста-
トに圧縮変換して、1
новки 段目の復号に使う鍵
со сжатием PC-2 K2 が得られます(図
(битность уменьшается 。
с 8 до 6) и 2.32)
получаем ключ K2, который
будет использоваться в первом раунде расшифрования (рис. 2.32).

     K2 =(111000)                                           (60)


 
C1 D1
1 0 0 1 1 0 1 0

со сжатиемPCPC-2
Перестановка圧縮転置 −2

鍵 K2 K2
Ключ 1 1 1 0 0 0

Рис.図2.32.
2.32 圧縮転置 PC−2 による処理[ステップ
Перестановка со сжатием PC-23]
(шаг 3)

ステップ
Шаг 44
 表В2.17 の右巡回シフトのビット数より、
соответствии 2 段目のビット数は
с табл. 2.17 величина ビットなので、
циклического 2сдвига вправоCво1と D1 の各ビッ
2-м раунде
равна 2 битам, поэтому мы циклически сдвигаем
トを 2 ビット右へ巡回シフトし、その結果を C2 と D2 と表します(図 2.33)。 все биты каждого из блоков C 1 и D1
по отдельности на две позиции вправо на 2 бита и получаем C2 и D2 (рис.2.33).

     C2 =(0110)                            (61)


     D2 =(1010)                           (62)

Пример использования упрощённого DES 105


105
C1 D1
1 0 0 1 1 0 1 0

Циклический
2 ビットсдвиг
вправо на 2 бита
右巡回シフト

0 1 1 0 1 0 1 0
C2 D2

Рис.
図 2.33. Операции циклического сдвига
2.33 右巡回シフトによる処理[ステップ 4] вправо (шаг 4)

ステップ
Шаг 55
 表 2.16 の圧縮転置 PC−с2табл.
В соответствии に基づき、 と D2 全体(式(61)
2.16C2объединяем блоки、式(62)
C 2 (61) )を ビットから
и D 28 (62) 6 ビッ
с помощью
перестановки со сжатием
トに圧縮変換して、2 PC-2 (битность
段目の復号に使う鍵 8 до。6) и получаем ключ K1,
уменьшается с2.34)
K1 が得られます(図
который будет использоваться во втором раунде расшифрования (рис. 2.34).

     K1 =(110001)                                          (63)

C2 D2
0 1 1 0 1 0 1 0

圧縮転置
Перестановка PC−
со сжатием PC-2
2

Ключ 鍵
K1K1 1 1 0 0 0 1

図 2.34 圧縮転置
Рис. 2.34. PC−со
Перестановка 2 による処理[ステップ 5]5)
сжатием PC-2 (шаг

 以上
Наのосновании
結 果 か ら、 вышеприведённых
復 号 に 使 う 鍵( 式(60)、 式(63))
результатов, と 暗 号 化 ключи
сравнивая に 使 う 鍵( 式(51)、 式
расшифрования
(60), (63) с ключами шифрования (51), (54), можно сделать вывод, что вышеописанным
(54))との対比から、暗号化に使う鍵が得られる順(K1,K2 の順)とは逆順(K2,K1 の順)
способом можно получать ключи расшифрования в порядке K2, K1, обратном порядку
で復号に使う鍵が得られることがわかります。
получения ключей шифрования (K1, K2).

106
106  第 2 章 Глава 2. Одноключевой шифр
共通暗号化技術
Глава 3
第3章
公開鍵暗号化技術
ш ифр
с открытым
ключом
 3 ー 1 公開鍵暗号の基本
3-1 Основы шифра с открытым ключом

ин Магази
Магаз н

пьютеры
Дёшево
Поздравляю с
よかったわね! 
долгожданным
買ってもらえて
компьютером!

えへへ
хе-хе

お兄ちゃん
спасибо,
ありがとう
братец!

ох...
в ちぇっ
моём кошельке いつだって
а сам только
すっからかんだよ
стало совсем
и ラーメンчто ест
делает,
пусто!
食べてるくせに
«рамэн»...

これから мне
придётся
当分ラーメン
переходить на
лапшу рамэн!
ばっかりだな…

108
108
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
что?!
パソコンがあれば
с помощью おいおい
ты же
いろんなことが
компьютера
勉強に
говорила,
можно многое...
できるわ… 使うんだろ?
что для
гладь
えへへ учёбы?
хе-хе

гла
д ь
общение
по е-мейл,
メール
интернет-
ショッピング
шоппинг,
ゲーム……
онлайн-игры...

わたしも
я тоже часто
インターネットで
делаю покупки
よく買い物を
в интернете!
しているわ

х
аю и
о пл а чи в й
и о
о вск
ба н к
а р той .
к о!
до бн
та к у
Э то

危険じゃないのか?
но не опасно ли это? чтобы не украли,
盗聴されないために
ведь информацию используют
クレジットカードの情報が 公開鍵暗号技術が
кредитной карты шифрование с открытым
盗まれたりとか…
могут украсть... 利用されてるのよ
ключом!

3-1 Основы шифра с открытым ключом 109


109
Интернет-магазин これ
смотри, какая
красивая

Рай покупок
ステキでしょ?
сумка! まあ…да,
наверное...
そうかもな
Сумка класса «люкс»

хорошо разбираюсь...
хотя я не очень
Купить Описание

теперь
じゃあちょっと
давай испытаем попробуй клац
это ещё
どうする気だ?
クレジットカード
твою кредитную
情報を入れて
ввести сюда
зачем?
貸してкарту. информацию. кл
ац

молодец!
はい
а теперь мы
なっчто ты
クリック!
кликнем по посмотри
これ見て!
этой кнопочке!
なにをした
наделала?!
!? вот на это!

Купить Описание

клац

110
110
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Открытый ключ отображается
公開鍵は、暗号による通信を行っ
только в состоянии шифрованного
ている状態のときに表示できます。
соединения. Если в качестве брау-
ブラウザが
зера Explorer
используется の場合は、メ
Internet Explorer,
Сертификат
тоニューをファイル→プロパティ→
для отображения открытого
Основное Подробности Путь сертификации
ключа необходимо пройти по пун-
証明書→詳細の順にたどっていき
Показать (S): <Всё>
ктам меню: Файл → Свойства →
Поле
Серийный номер
Значение ます。
Сертификат и открыть вкладку
Алгоритм подписи
Центр выдачи
Safari や F irefox のブラウザの場
Подробности.
Действителен не ранее 16 мая 2006 г., 8:18:11
Действителен не позже 16 мая 2007 г., 8:18:11
При использова-
合 は、 南京錠の
Субъект нии таких браузе-
Открытый ключ マークをクリック
ров, как Safari или
して、詳細な情報
Firefox, необходи-
моにкликнуть
ア ク セ スпо しま
изображению
す。 перед
замка
Редактировать (E)... Копировать(С)...
адресной строкой
и просмотреть
подробную
информацию.

В современных браузерах всё не так – Прим. ред..

おおого!
16 進数が
тут какие-то
длинные ряды
えらくたくさん
шестнадцатеричных
並んでるぞ 
чисел! это что,
これが公開鍵か
и есть !?
открытый ключ?!

そうよ
да!
こうして
благодаря おおкак
здорово!
нему связь
安全に通信 それなら安心
тогда
становится
я だっ !!
спокоен!!
できるのよ!
безопасной!

Вор
хи-хи
あんた
спокоен?
勝手にカード
она использует
使われてるよ…
твою кредитную
карту, как хочет...

3-1 Основы шифра с открытым ключом 111


111
на самом деле но ведь в шифрах,
все используют
までの暗号
こ れкоторые で は 
мы
…というわけで
открытый ключ 鍵は絶対に知られちゃ
изучали до этого,
ふだん ключ нужно было
в интернете, いけないはずよね?
気付かなくても
даже ничего держать в секрете...
не зная
об этом!

そうだ
да,
実はみんなが
давайте
да!!
そうだ !!
インターネットで
посмотрим,
使っている公開鍵に
как он
работает!
ついて学びましょう!

на самом
тогда
実はделе,
どうしてпочему
здесь его 鍵は公開鍵
кроме
鍵が知られても
можно спокойно открытого
だけではなくて
平気なの?
раскрыть? ключа,

秘密鍵という
здесь
используется
ものも使う
и секретный
のよ!тоже!
ключ

Открытый Открытый
公開鍵ключ Открытый
平文
текст 平文
текст
Секретный
Шифрова- 秘密鍵
ключ Расшифро-
暗号化
ние 復号
вание

Шифртекст
暗号文

送信者
Голосовая
音声通信 связь, 受信者
Отправитель Получатель
передача
データの送受信данных,
запись и накопление данных и т. д.
データの記録,蓄積など

112
112
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Секретный
в общем, в том
秘密鍵

公開鍵
ключ

Открытый
つまり
интернет-магазине

ключ
さっきのショッピング
данные, передаваемые
пользователем,
では客からのデータが
зашифровывались ...а
公開鍵で暗号化され
открытым ключом... 店側が秘密鍵で
интернет-магазин
расшифровывал
復号しているって
их с помощью
イメージなの
секретного ключа.

спасибо
за покупку! Ма
я хочу купить газ
эту сумку. ин
Сумки
盗聴者
Перехватчик
暗号化

復号
Открытый Шифрова- Расшифро- Открытый
Отправитель
送信者

受信者
Получатель
平文
текст ние: 平文
текст
вание:
鍵 EE
Ключ Шифртекст 鍵 DD
Ключ
kk 暗号文 k k

鍵の公開
Публикация
ключа ※
Получатель (магазин) публикует
※受信者(店側)が暗号化鍵
ключ шифрования Ek,
но E k を公開し,復号鍵
держит в секрете Dk を
 秘密にします。
ключ расшифрования Dk.

то есть для шиф-


暗号化に使う そうよ 公開鍵暗号方式
Криптосистема с открытым ключом
рования и рас-
公開鍵と復号にис-
шифрования
да. поэтому
だから (Public Key Cryptosystem)  
такой шифр
使う鍵は違うの?
пользуются раз-
非対称鍵暗号方式と      

называют ещё
ные ключи?
も呼ばれているわ
асимметричным. 非対称鍵暗号方式
Асимметричная криптосистема
(Asymmetric Key Cryptosystem)

3-1 Основы шифра с открытым ключом 113


113
ключей
鍵が
каждому 共通鍵方式より
понадобится そんなこと
по два ничего
2 種類ずつ?  鍵の数が多く
больше, чем для
ないわよ!
подобного!
ключа?
なるな!
одноключевого
шифра!

нет
нет へ?
как?

если у всех
通信する当事者が
пользователей
秘密鍵と公開鍵を
будет по два ключа: В шифре с открытым с ключом для
секретный и открытый,
1 つずつ持っていれば 公開鍵暗号方式では、利用者 n 人が互い
обмена зашифрованной информаци-
ей между n пользователями
に暗号通信をするとしても、鍵の総数は требуется
то они смогут
всего 2n ключей.
обмениваться друг  
n 個あればすみます。
2Например, если в одноключевой
全員で暗号による通信
с другом 利用者が 1000 人の場合、共通鍵暗号方
криптосистеме для обмена информа-
зашифрованной цией между тысячей пользователей
ができるわ! 式では、
информацией! потребуется:
1000 ×( 1000 - 1 )
1000 C2 = ,
2

で、鍵が 個必要ですが、公開鍵
499500ключей,
то есть 499 500 то в крипто-
системе с открытым
暗号方式では 2×1000 ключом
で、鍵はпри 2000 個
том же количестве пользователей
しか必要としていません。
понадобится всего
2 × 1000 = 2000 ключей. ほほう!
ага!

...поэтому его,
公開されてる鍵を
ведь ключ в отличие от
шифрования 共通鍵と違って
одноключевого
使って暗号化すれば
является 鍵の配送も
шифра, легко
いいので передавать
открытым... 問題にならないわ
по обычным
каналам
связи.

114
114
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
однако...
одни
открытый ключ,
преимущества!
который
почему бы
мы видели,
тогда был таким
не отказаться от длинным!
одноключевого
шифра вообще?

Длина ключа одноклю-


чевого шифра (общего
ключа) равна 64, 128 или
256 битам, а длина от-
крытого ключа – боль-
ше, например 1024 бита.

в действительности
шифр с открытым ключом
требует более сложных
вычислений, которые

занимают
больше времени.

забегая вперёд, и ещё,


как?! скажу, имея общий ключ
что с каждым
применяются, пользователем...
например,
гибридные ...вы будете
криптосистемы.., точно знать,
с кем имеете
дело...

мм...

хм.. .
Манга
Криптология
....в которых
общий и открытый ключи
а как же используются вместе
зашифровывают друг с другом.
длинные о них будет рассказано
сообщения? в главе 4.
(См. стр. 188)

3-1 Основы шифра с открытым ключом 115


и н г
Спуф
...но если ключ открытый,
то как получатель
сможет проверить, от
кого на самом
деле пришла та
или иная информация?

Фи
По дан

ши
д м ны х

нг
ен
а

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

о ней я тоже
потом
расскажу!

(См. стр. 198)

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

116 Глава 3. шифр с открытым ключом


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

Используемый фокус: Используемый фокус:


задача факторизации задача дискретного
целых чисел логарифмирования
∙ Шифр RSA ∙ Шифр Эль-Гамаля
∙ Шифр Рабина ∙ Криптосистемы на эллиптических кривых
и другие ∙ Алгоритм DSA
и другие

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

ам
та -д
что всё это
такое?!

неужели придётся прежде всего


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

3-1 Основы шифра с открытым ключом 117


一方向性関数
Односторонние функции
Функцию, которую легко вычислить для любого входного значения, но вычис-
 一方の向きには計算できて答えが出せても、反対向きに計算するのが極めて困難な性質を
лить входное значение по заданному значению функции, наоборот, чрезвычайно
一方向性といい、そのような働きを持つ関数を一方向性関数といいます。
сложно, называют «односторонней».
Приведём здесь примеры односторонних функций.
 ここで、一方向性関数の例を見てみましょう。

Задача факторизации целых чисел


(1)素因数分解問題
Перемножить
 大きな два больших простых числа достаточно легко, но чрезвычайно
2 つの素数を掛け合わせて、その結果を求めることは簡単です。ところが反対に、
трудно, зная только результат этого произведения (составное число), определить,
掛け合わせた数(合成数)から、元の 2 つの素数を求めることは非常に困難です。
какие простые числа были перемножены (то есть разложить составное число на
простые множители).
 合成数から元の素数を求めることを素因数分解問題といいます(122 ページ参照)。
Эту задачу называют задачей факторизации целых чисел (см. стр. 122).

Задача дискретного логарифмирования


(2)離散対数問題
 次のような合同式を考えてみます。
Рассмотрим следующую формулу сравнения по модулю p.

     a =≡ y( mod p )
x

 a と がわかっている場合に
Поx известным y を求めることは比較的容易です。ところが、
значениям a и x достаточно легко найти значениеa と y がわかっ
y, однако по
известным значениям a и y чрезвычайно трудно найти значение x, которое является
ていても、y の対数の x を求めることは非常に困難です。これが離散対数問題です。離散とは、
логарифмом y. Это называется задачей дискретного логарифмирования. Слово
連続の反対語で、とびとびの値であることを示しています(175 ページ参照)
«дискретный» означет величину, значение которой не может 。 непрерыв-
изменяться
но, другими словами, она может принимать только отстоящие друг от друга значе-
ния (см. стр. 175).

некоторые
難しそうな
термины
ほんとだなっ
правда?! !?
言葉が多いけど
могут
показаться
сложными,
少しずつ
...но постепенно
わかってくるから
вы поймёте,
心配しないで
поэтому
не волнуйтесь.

118
118
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
о й ь!
Дол жност
ところでзачем
кстати, да,公開鍵暗号の場合
но в случае шифра с
なぜ一方向性が
с ло
нужны эти открытым ключом, если
一方向性でないと
必要なの?
односторонние функция не будет одно-
функции? 秘密鍵が割り出されてしまう
сторонней, есть
危険があるのよ!
опасность раскрытия
секретного ключа!

Опа
с но !

ведь одноключевой шифр


共通鍵暗号では
мы расшифровывали, как
暗号化のプロセスを逆向きに
раз-таки выполняя процесс
行って復号したじゃない!
шифрования
в обратном порядке!
ох .. .

ведь если использо-


но でも完全な
おいおい вать совершенно од-
постой. 一方向性関数を使うと
ностороннюю функ-
復号もできなくなる
цию, то расшифрова-
ние будет невозмож-
んじゃないか?
ным, не так ли?

наверное, для верно!


そうよ!
復号には
расшифрования
秘密鍵を使えば
можно односторонние
использовать そのような秘密鍵の
функции имеют такую
いいんじゃないの !? хитрую лазейку, отпираемую
секретный ключ! 仕掛けがあるключом.
секретным

скользь
一方向性関数のことを
поэтому их называют
落とし戸付き一方向性関数と
односторонними функциями
いうのよ
с потайным входом.

3-1 Основы шифра с открытым ключом 119


119
Если выйти наружу из комнаты с автоматически запирающейся дверью, не имея при
オートロックのドアから外に出てしまうと、鍵を持っていない限り、中に戻れなくなります。この
себе ключа, то вы не сможете вернуться внутрь. Функции, имеющие такое устрой-
ような仕組みの関数が、落とし戸付き一方向性関数です。
ство, называют односторонними функциями с потайным входом.

鍵なしでも部屋から
Из комнаты наружу 鍵なしでは部屋に
Войти в комнату без Если ключ есть, то
鍵があれば部屋に
можно выйти, даже
出ることができる ключа не получится.
入ることはできない можно войти в ком-
入ることができる
не имея ключа. нату.

итак, теперь давайте


では次にпоговорим
公開鍵暗号である
о рождении шифра RSA,
RSA 暗号の誕生と 
КОТОРЫЙ ЯВЛЯЕТСЯ ШИФРОМ
С ОТКРЫТЫМ КЛЮЧОМ...

ЭТО
...И О ТОМ, КАКИЕ
そのなかで数学が БЫЛА ДОЛЖНА
С КА З
МАТЕМАТИЧЕСКИЕ АТЬ Я
どのように用いられているか
ЗАКОНОМЕРНОСТИ
!!

見ていきましょう!
В НЁМ ИСПОЛЬЗУЮТСЯ!

120
120
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
RSA 暗号の誕生
Рождение шифра RSA
Шифр
 RSA RSA, опубликованный
暗号は、1977 в 1977 году, является первым в мире шифром с от-
年に公表された世界最初の公開鍵暗号です。
крытым ключом.
 RSA の名は、開発したアメリカの 3 人の研究者、リヴェスト(Rivest)、シャミア(Shamir)、
Название RSA образовано из первых букв фамилий разработчиков – американ-
エイドルマン(Adleman)の頭文字からつけられました。
ских учёных Рональда Ривеста (Rivest), Ади Шамира (Shamir) и Леонарда Адлемана
 暗号の強度を保証しているのは、素因数分解問題です。この年、サイエンス誌に 3 人が作っ
(Adleman).
た問題が掲載されました。それは、ある数を素因数分解して、メッセージを解読しなさいとい
Стойкость шифра обеспечивает задача факторизации целых чисел. В 1977 году
журнал
うものです。 Scientific American опубликовал задачу, предложенную этими тремя учёными,
в которой предлагалось факторизовать (разложить на простые множители) нижепри-
 その数とは、次の 129 桁の自然数でした。
ведённое 129-значное натуральное число и прочитать зашифрованное сообщение.

     114381625757888867669235779976146612010218296721242
     362562561842935706935245733897830597123563958705058
     989075147599290026879543541

 この素因数分解は、 17 年後の 1994была


Эта задача на факторизацию 年に約 1600 台のコンピュータを使って計算され、
решена メッセー
спустя 17 лет, в 1994 году, путём рас-
ジが解読されました。17
пределённых вычислений年とは、ずいぶん長い年月がかかったなぁというのが、一般的な感想
на 1600 компьютерах, и сообщение было расшифровано.
Может показаться,開発者の1人、リヴェストは
でしょうが、RSA что 17 лет – это очень большой срок, но один из разработчиков
1000 年はかかるだろうと予想していただけに、
шифра RSA – Рональд Ривест, прогнозировал, что 1000 лет на расшифровку точно по-
出題者たちにとっては思いのほか短いものだったようです。ちなみに解読されたメッセージは、
требуется. Получается, что, с точки зрения разработчиков, шифр был вскрыт очень
「THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE」でした。
быстро. Кстати, зашифрованное сообщение было следующим:
 現在の
THE 暗号に使われる数字は、10
RSAWORDS
MAGIC ARE SQUEAMISH 進数にして 300 桁以上です。これを素因数分解しよ
OSSIFRAGE.
うとすれば、天文学的な時間がかかることになります。
В настоящее время в шифре RSA используются десятичные числа, имеющие не
менее 300 разрядов, для факторизации которых потребовались бы астрономические
сроки.

3-1 Основы шифра с открытым ключом 121


121
3-2 Простые числа и факторизация

для начала
Я раздам вам
эти материалы!

МАТЕМА ТИКА,
МАТЕМА ТИКА...

это тоже нужно


для понимания О
ЭТ Л О!
шифра RSA! С Е
ВЕ

весёлые
простые совсем даже
числа? не весело!

я распрощался

Весё лые с математикой


после неудачной
простые попытки понять
числа деление дробей!

г
д ры

122 Глава 3. шифр с открытым ключом


В математикЕ шифра RSA
RSA 暗号の数学で
ИСПОЛЬЗУЮТСЯ ТОЛЬКО
Рациональные
有理数 Целые Натуральные
扱うのは非負整数だけ
НЕОТРИЦАТЕЛЬНЫЕ числа 整数
числа 自然数
числа
ЦЕЛЫЕ ЧИСЛА!
Целые
整数と分数にчисла и Натуральные
自然数と 0числа, と負の ноль Целые
1 以上の整数числа, которые
дробные числа и отрицательные числа: не меньше единицы:
含まれる数 整数に含まれる数 (1, 3,…)
(дроби). (...−2, −1, 0, 1, 2, 3,...). (1, 2,2,
3,...).
無理数も分数も
ТАМ НЕТ НИ (…,-2,-1,0,1,
ИРРАЦИОНАЛЬНЫХ
出てこないけど 2,3,…)
ЧИСЕЛ, НИ ДРОБЕЙ! Неотрицательные
非負整数
覚えておいてね! целые числа
負でない整数
Целые числа, которые
не являются
(0, 1,2,3,…)
отрицательными:
Дробные (0, 1, 2, 3,...).
分数
числа
つの整数の比で表され、小数で表す
Выражаются в2виде отношения двух целых чисел или в виде
есятичной дроби : конечной или бесконечной периодической.
と有限小数や循環小数になる数
3
(- 2 =-1.5,
1
 =
7 0.142857142857142857142857…
・ ・

Иррациональные = 0.142857 など)


и т. п.
無理数числа
Не могут быть выражены в виде отношения двух целых чисел,
2 つの整数の比で表すことができず、小
а при записи в виде десятичной дроби представляют собой
数にすると循環しない無限小数になる数
бесконечную непериодическую дробь.
(√ 2 ,π,e など) и т. п.

а теперь
じゃあ問題よ!
えっ
Да? задачка!
ほんと?
правда?

30 個
ミカンがесть
пусть
30 ありました
мандаринов.
тогда
я смогу!

Мандарины
余りを出さないよう 
как разделить
их 子供たちに平等に
между детьми
поровну и без
分ける方法は?
остатка?

Ма нда р и
ны

3-2 Простые числа и факторизация 123


123
так это верно!
そのとおり!
簡単ね!
просто! Таблица 3.1.
Соответствие числа детей このように余りなく
эти числа детей,
表 3.1 人数と個数の関係
и доли одного ребёнка
分けられる人数や
допускающие

Число
人数 Число мандаринов,
1 人あたりの個数
разделение мандаринов
個数にあたる数を
детей получаемых одним ребёнком поровну без остатка...

1人 30 個 ...или числа мандаринов,


『約数』あるいは
которые каждый ребёнок
получит при таком делении,
2人 15 個 『因数』というのよ
называются делителями.

3人 10 個

5人 6個
の約数
Число
30 30(因数)
имеетは{ 1,
6人 5個 восемь делителей:
2,3,5,6,10,15,
10 人 3個
{1, 2, 3, 5, 6, 10, 15, 30}
30 }の 8 種類です。
15 人 2個

30 人 1個

次に далее,
натуральное число,
ある自然数で
которое имеет только
два1 とその数自身しか
делителя: единица
и約数でないものが
само это число,
そ すう

『素数 называется
』よ!
«простым»!

а единица-
1 は素数 数学上の約束事として
нет, в математике давайте теперь
20 までの素数を
это простое принято не отно- посмотрим на
じゃないのか? 1 は素数に含めない 見ていきましょう
число? сить единццу простые числа
кことになっているの
простым числам. до 20!
п ро с
ед и н
ти на
ица !
с,

124
124
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Таблица 3.2. Тест на 表
простоту натуральных чисел от 2 до 20
3.2 20 までの素数判定

2 Делится без остатка


自分自身(2)と только на себя (2) и на 1
1 でしか割り切れない Простое
素数である число
3 Делится без остатка
自分自身(3)と только на себя (3) и на 1
1 でしか割り切れない Простое
素数である число
4 Делится
2 で割り切れるбез остатка на 2 Непростое
素数でない число
5 Делится без остатка
自分自身(5)と только на себя (5) и на 1
1 でしか割り切れない Простое
素数である число
6 2,3 で割り切れる
Делится без остатка на 2 и на 3 Непростое
素数でない число
7 自分自身(7)と 1 でしか割り切れない
Делится без остатка только на себя (7) и на 1 素数である
Простое число
8 Делится без остатка на 2 и на 4
2,4 で割り切れる Непростое
素数でない число
9 Делится
3 で割り切れるбез остатка на 3 Непростое
素数でない число
10 Делится без остатка на 2 и на 5
2,5 で割り切れる Непростое
素数でない число
11 Делится без остатка1 でしか割り切れない
自分自身(11)と только на себя (11) и на 1 Простое
素数である число
12 Делится
2,3,4,6 で割り切れる
без остатка на 2, на 3, на 4 и на 6 Непростое
素数でない число
13 Делится без остатка1 でしか割り切れない
自分自身(13)と только на себя (13) и на 1 素数である
Простое число
14 Делится без остатка на 2 и на 7
2,7 で割り切れる 素数でない
Непростое число
15 Делится без остатка на 3 и на 5
3,5 で割り切れる 素数でない
Непростое число
16 Делится
2,4,8безで割り切れる
остатка на 2, на 4 и на 8 素数でない
Непростое число
17 Делится без остатка1 でしか割り切れない
自分自身(17)と только на себя (17) и на 1 Простое
素数である число
18 Делится
2,3,6,9 без остатка
で割り切れる на 2, на 3, на 6 и на 9 Непростое
素数でない число
19 Делится без остатка1 でしか割り切れない
自分自身(19)と только на себя (19) и на 1 素数である
Простое число
20 Делится
2,4,5,10без остатка
で割り切れる на 2, на 4, на 5 и на 10 Непростое
素数でない число

素数でない数を
Числа, не являющиеся
и это
простыми, называются それを
合成数といい называется
составными, так как их 素因数分解と
素数の積(掛け合わせ)で
можно представить в
факторизацией
いうわчисел.
целых
表すことができるのよ!
виде произведения
простых чисел!

3-2 Простые числа и факторизация 125


125
любое составное число
それぞれの合成数を
можно разложить
4 = 22 = 2 × 2 素因数分解する方法は
на простые множители
6 = 2 × 3  通りしかないのよ
только1 одним способом, и

8 = 23 = 2 × 2 × 2 これを素因数分解の
это свойство называется
«однозначностью
一意性というの
9 = 32 = 3 × 3 факторизации
целых чисел».
10 = 2 × 5 
12 = 22 × 3 = 2 × 2 × 3 единицу не относят
1 を素数に加えないのは
к простым числам
14 = 2 × 7 именно с целью
素因数分解の一意性を
15 = 3 × 5 сохранения этого
保つためなのよ
свойства однозначности.
16 = 24 = 2 × 2 × 2 × 2 
18 = 2 × 32 = 2 × 3 × 3 вот как?!
20 = 22 × 5 = 2 × 2 × 5

значит, чтобы найти


素数かどうかって 
простые числа, существует метод
ふるい

1 個 1 個調べて エラトステネスの篩
нужно проверять под названием
という方法があるわ
«решето эратосфена».
いかなきゃ
на простоту
все числа
いけないのか?
одно за другим?
в нём
次の性質を
используется

利用するのよ!
вот такое
свойство!

なんで
но почему
そうなるの?
это так?

Если натуральное число N


не делится
自然数 N が√N без以下のすべての素数
остатка
ни на одно из простых чисел,
で割り切れなければ、自然数 N は
которые меньше или равны √N,
素数である。
то это натуральное число N
エラトステネス
Эратосфен

является простым.

126
126
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
N = pq
Подумай над
N= pq と考えてみ
выражением
て! N = pq.

p ≦√N
q ≦√N
N が 2 つの自然数 pq の積で
Если N можно представить
表されるなら
в виде произведения двух
少なくとも p かчисел
натуральных q の pq,
いずれかは
то хотя бы одно из этих
√N 以下でないと
чисел - p или q, -
いけないからよ
должно быть меньше
или равно √N.

なるほど! 
ясно!
p >√N かつ
и q >√N
Ведь если
pと qが
числа p иより
оба両方とも√N q будут pq > N 
√N
大きければ , то
больще

その積は
их N より
произведение

больше N.
大きくなっちゃうわね
окажется

わしゃя
古代ギリシャ人の
древнегреческий
учёный!
学者じゃ
それで…ну, и причём
здесь этот «эрот»
エラなんとかってのは
или как его там?
なんなんだ?
Эратосфен

初めて
地球の大きさを
это я первый
計算したのも
вычислил
размеры
わしだぞ! земли!

3-2 Простые числа и факторизация 127


127
решето эратосфена -
1 から 400 までの
в ячейки таблицы
素数を判定する
эффективный метод 数字が書いてある
вписаны числа
効率的な方法よ
теста на простоту. マス目が並んでるわね
от 1 до 400...

взгляните на
プリントを見て
эту распечатку.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400

а теперь закрась
√Так = 20√400
400как だから= 20, まず 2 は素数だから
в этой таблице
以下の素数
числа, которые сами
20 残しておいて
все числа, кратные 2!
не превышают 400 и
 2,3,5,7,11,13, само число 2
не делятся нацело それ以外の 2 の
17,19 で не закрашивай,
倍数を塗り消して
на простые числа,
так как это -
не превышающие 20:
割り切れない数が
{2, 3, 5, 7, 11, 13, 17, 19}, - ちょうだいчисло.
простое !!
400 以下の素数
являются простыми
ということになるわ
числами.

128
128
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
Ух! 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400

а теперь закрась
все числа,
кратные 3,
кроме самого
числа 3.

2 3 5 7 9 11 13 15 17 19
21 23 25 27 29 31 33 35 37 39
теперь сделай
41 43 45 47 49 51 53 55 57 59
это для всех
61 63 65 67 69 71 73 75 77 79
простых чисел
до 19.
81 83 85 87 89 91 93 95 97 99
101 103 105 107 109 111 113 115 117 119
121 123 125 127 129 131 133 135 137 139
141 143 145 147 149 151 153 155 157 159
161 163 165 167 169 171 173 175 177 179
181 183 185 187 189 191 193 195 197 199
201 203 205 207 209 211 213 215 217 219
221 223 225 227 229 231 233 235 237 239
241 243 245 247 249 251 253 255 257 259
261 263 265 267 269 271 273 275 277 279
281 283 285 287 289 291 293 295 297 299
301 303 305 307 309 311 313 315 317 319
321 323 325 327 329 331 333 335 337 339
341 343 345 347 349 351 353 355 357 359
361
381
363
383
365
385
367
387
369
389
371
391
373
393
375
395
377
397
379
399
ох...

3-2 Простые числа и факторизация 129


できたぞ!
готово!

2 3 5 7 11 13 17 19
23 29 31 37
41 43 47 53 59
61 67 71 73 79
83 89 97
101 103 107 109 113
127 131 137 139
149 151 157
163 167 173 179
181 191 193 197 199
211
223 227 229 233 239
241 251 257
263 269 271 277
281 283 293
307 311 313 317
331 337
347 349 353 359
367 373 379
383 389 397

ほら смотри! かんたん
просто,
мы нашли все Пр о сты неじゃろ?
так ли?
400 までの素数が
простые числа,
ч ис ла е

みんな拾いだせたわ!
меньшие 400!
вот!
Эратосфен

130
130
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
но искать
パソコンを а ВЕДЬ простые числа,
большие RSA 暗号に使う
使えば
простые
используемые в
素数はすごい
ШИФРЕ RSA, ИМЕЮТ ТАКОЕ
楽かも
числа
очень
桁数なんだろ?
ОГРОМНОЕ КОЛИЧЕСТВО
しれない РАЗРЯДОВ...
трудно...
けれど хл о п
大きな数の素数を
...если только
хл о п
見つけるのは大変だと
не делать этого
на компьютере!
思うわ!

ПОЭТОМУ
そこで実際には
В ДЕЙСТВИТЕЛЬНОСТИ
素数らしい大きな数を
СНАЧАЛА НАХОДЯТ
БОЛЬШОЕ ЧИСЛО,
見つけてきて
КОТОРОЕ ПОХОЖЕ
НА ПРОСТОЕ...
本当に素数かどうかを
...А ЗАТЕМ
調べる方法が ЕГО
ПОДВЕРГАЮТ
ТЕСТУ на ПРОСТОТу.
とられているわ

素数判定
Тест на простоту
Хотя решето Эратосфена является методом, позволяющим надёжно обнаружи-
ふるい

 エラトステネスの篩
вать простые числа, на は、確実に素数を見つける方法です。ところが、大きい数が素数か
определение с его помощью простоты очень больших чисел
требуется слишком много времени.
どうかを判定する場合には、処理時間が長くなってしまいます。
В связи с этим в качестве теста на простоту используются методы, не являющие-
ся そこで 100%確実ではありませんが、確率的にほぼ素数であることを判定する方法が用
достоверными на все 100 %, однако позволяющие с большой долей вероятности
いられます。 исследуемое число является простым.
полагать, что
Тест Ферма позволяет с некоторой долей вероятности полагать, что число n яв-
 フェルマー法では、
ляется простым, если ある整数 a と、素数かどうかを判定する数 n について an − 1 =1(mod n)
для любого целого числа a, которое не делится на n, выполня-
であれば
ется n が素数であることを確率的に判定できます(156
сравнение an−1 = 1 (mod n) (см. стр. 156), но при егоページ参照) 。ただし、素数で
использовании существует
опасность того, что не простое (то есть составное) число будет ошибочно принято
ない数(合成数)を素数と判定してしまう危険がわずかながら生じます。
за простое, хотя вероятность этого не так высока.
㋯ ㋶ ー ㋶ ビ ン

 そこでフェルマー法の欠点を改善したのが
Этот недостаток теста Ферма был исправленMiller-R тесте法です。1
в abin 回のテストで誤判定
Миллера-Рабина, позволяю-
щем
が発生する確率はフェルマー法の 4 分の 1 以下となり、ほぼ確実に素数を判定できます。 с
снизить вероятность ошибочной оценки не менее чем в 4 раза, по сравнению
тестом Ферма, и таким образом почти надёжно обнаруживать простые числа.

составное число,
素数と判定される
для которого
существует вероятность
可能性がある数を
быть принятым
ぎ そ すう

擬素数
за простое,
と呼ぶのよ
называется
псевдопростым.

3-2 Простые числа и факторизация 131


131
ну,
次は давайте
теперь
リオさん
рио, かんたん!
это просто!
разложи на
素因数分解が
убедимся в том,
を素因数分解
35простые
что факторизация
難しいことを
целых чисел - して
множители 5×7よ
確認しましょ!
это сложная число 35!
задача!

じゃあ
о!
ВЕрн а теперь -
77 の素因数
число 77.
7 × 11 ね
分解は?

ил ьно! разложи-ка

пра в 1001
на простые
素因数分解して!
множители

今度は твоя
теперь
число 1001!
очередь,
お兄ちゃんよ
братец!

ой !

132
132
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
тогда разложи
на простые
множители

мм...?? число 9991!

мм...??

почему ты
задаёшь такие
сложные задачи
только мне?!
насчёт числа 1001,
это будет
7 × 11 × 13,
не так ли?

ох

верно!

вот это да!

рамэн готов!
извините, что
заставила
вас ждать!
«З аяц»
Ка фе

3-2 Простые числа и факторизация 133


не так уж
因数分解の公式を
и сложно, おっ
а, вот
если использовть
Так как
使えば そうか!
оно что!
формулу x3 + y3 = (x + y)(x2 − xy + y2),
そう難しくないわ
разложения 3
+ y3 =(x +
xпредставив (x=2 10
1001
y) -3xy+ 1+3, y )
2

на множители.
なので、1001
мы получим:= 103 + 13 と考えて、
1001 =(10 + 1)×(100 - 10 + 1)
= 11 × 91
= 11 × 7 × 13

вс ё
в п р он ял
он ду
п
ав
и
?
н е та к
л и?
Кафе
«Заяц»

что касается
Так как
9991 は
числа 9991, xx22 −-y2y2==
(x y)(x
(x++ (−x y),
y) - y)なので、
103 × 97 よ!
получится
9991= 1002 - 32
103 × 97!
=(100 + 3)×(100 - 3)
= 103 × 97

Каф
«З а я е
ц»

да ты
なかなか
おーっ
ого!! !! неплохо
やるわね!
разбираешья!

вот,
видела?!

じゃあ
а как насчёт
10001 は
числа 10001?
どう?
но решил
ведь не ты...

134
134
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
формулы разложения
на множители помогают
при факторизации вот вам ответ.
целых чисел только
в ограниченных
случаях.
73 × 137

то п
с ней всё
в порядке?

в подавляющем
Перебираем по одному все простые числа, большинстве случаев
являющиеся кандидатами в делители числа 10001, приходится действи-
то есть те, которые меньше или равны √10001: вать методом
перебора.
{ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43,
47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}.
В процессе этих попыток вы обнаружите,

ох
что 10001 = 73 × 137.

...

мне кажется,
ясно!
что мы с вами ждём
сможем вас снова!
подружиться!

е
Каф »
ц
«З а я

3-2 Простые числа и факторизация 135


Всегд а й!
руко
п од
3-3 Модульная арифметика
В се у к о й !
р
гда
п од

ЭТО ЧТО-ТО
на этот раз ВРОДЕ
мы подумаем ВОТ ТАКИХ
об остатке ВЫЧИСЛЕНИЙ?
от деления.

Пример деления с остатком,


ВЕДЬ понять изучаемый в начальной школе.
шифр RSA БУДЕТ
НЕВОЗМОЖНО, ЕСЛИ 15 ÷ 7 = 2 Остаток 1
НЕ ПРИВЫКНУТЬ КАК
СЛЕДУЕТ
к модульной
арифметике.

вшш..

записав это
выражение в а что
виде сравнения 15 ≡ 1 (mod 7) означает
по модулю, этот mod?
мы получим
следующее.
то есть это
остаток
деления 15 на 7?

136 Глава 3. шифр с открытым ключом


モジュロ(modulo)を
Это сокращение от
省略したもので слова
латинского 15 =
≡ 1(mod 7)
modulo
日本語では『法』
, означающего
«по модулю».
というわ

эта запись
この式は
означает, что числа
モジュロ
15 7 について
и 1 являются
と 1 は等しい
15сравнимыми
(равноостаточными)
という意味よ
по модулю 7.

a=≡ b(mod N )
 
Это これが一般的な合同式の形で、モジュロ演算ともいいます。
общая форма записи сравнения по модулю.
Число N называется
N を法として a とмодулем сравнения.
b は合同とも読みます。合同を示す記号として、
Числа a и b в этой формуле называются сравнимыми (равноостаточными)
「=」でなく「≡」を用いることがあります。
числами по модулю N.
За рубежом вместо знака «≡» иногда используют знак «=».

но зачем нужны
整数の計算だけなら
всякие там с точки зрения
暗号にぴったりの
шифрования,
簡単なのに
«сравнения
利点がいくつか
по модулю», в таком обозначении
なぜ面倒な
когда речь идёт あるのよ!
есть несколько
合同式なんて
от обычном делении выгод!

使うんだ?
с остатком?

правда?
каких?
каких?

3-3 Модульная арифметика 137


137
位置
Позиция №00 Направление
回転方向 вращения
по часовой стрелке

0
0号

Позиция № 6

位置 6 6
6号 1
1号 Позиция
位置 1 №1

Позиция
№5
位置 5 5
5号 2
2号 位置 2
Позиция №2

Позиция Позиция
№4 №3
Посадка на位置
колесо
4 4号4 3
3号 位置
Высадка
3 с колеса
обозрения
乗り口 降り口
обозрения это колесо
これはモジュロ
обозрения 7
прекрасно подходит
での演算を図式化
для объяснения

7 つかご観覧車
Колесо обозрения
арифметики
したものよ
по модулю 7.
с семью кабинками

図 3.1 モジュロ
Рис. 3.1. Колесо 7 の観覧車
обозрения по модулю 7

в самом деле, раз мы да, это -


7 で割った余りが
ищем остаток от
それが利点の 1 つよ!
одна из выгод!
問題だから 0 から
деления 7, までの
на 6
результатом могут быть
数字しか出てこないのね
剰余(余り)は
только числа от 0 до 6. остаток всегда
будет меньше
必ず除数 N
делителя N (то есть
(モジュロ N、mod
модуля N), N)より
小さいから
поэтому результат
всегда будет
出力される値を
находиться
ある一定内に
в пределах

制限できるの
определённого
диапазона.

138
138
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
аこの観覧車
это колесо
時計回りに動くことを
конечно!
動くのか?
вращается? когда оно вращается
足し算
по часовой стрелке -
反時計回りに動くことを
это сложение по модулю,
а引き算と
когда против -
это вычитание по модулю!
考えてみましょ!

Сложение
足し算

引き算
Вычитание

Сложение по модулю и вычитание по модулю


モジュロ演算の足し算と引き算
Для объяснения модульной арифметики мы воспользуемся колесом обозрения,
 モジュロ演算のモデルに、図
показанным 3.1 の観覧車を用いてみます。7
на рис. 3.1. Это колесо имеет семь кабинок – отつのかごにはそれぞれ、0
нулевой до шестой, кроме 号~
того, позиции, в которых эти кабинки могут находиться,
6 号と名前がついています。また、かごの位置は、最上部を тоже пронумерованы: от по-
0 として、時計回りに等角度間隔に、
зиции № 0 в самой верхней точке колеса до позиции № 6. Площадка для высадки с ко-
1 ~ 6обозрения
леса まで、位置番号がついているとします。位置 3 が降り口、位置
находится в позиции № 3, а площадка для посадки4 が乗り口につながって
на колесо – в пози-
ции
います。 № 4.
В начальном состоянии нулевая кабинка находится в позиции № 0, первая кабин-
 初期状態は
ка – в позиции 0 号かごが位置 0 に、1
№ 1 и так далее, 号かごが位置
то есть 1 に、すべてのかご番号と位置番号が一致
номера всех кабинок совпадают с номерами по-
しています。そして、足し算のとき、かごは時計回りに進むように設計されています。
зиций, в которых эти кабинки находятся. Далее, колесо обозрения спроектировано
так, чтобы вращаться по часовой стрелке при операции сложения.
Рассмотрим сначала нулевую 1
 まず、0 Если 号かごに注目します。 об.
  周=+ 1
кабинку. колесо повернётся на 7

 1оборота
1/7 / 7 周 動поく と、0 号か
часовой ご は、 位
стрелке, то置ну-
0 2
7
левая кабинка переместится из пози-   周=+ об. 7=0    周=+об. 2
から位置 1 に動きます。これを+1(1 を 7 7
ции № 0 в позицию № 1. Определим 位置 0№ 0
Позиция
加える)と定義します。
это как операцию прибавления едини-
цы (+1).
00号
 2 При повороте 号かごは位置
/ 7 周動くと、0 на 2/7 оборота0か Позиция
нулевая кабинка переместится из по-
ら位置 № 2 に動きます。これが+2(2 を加 位置 №6 位置 1
Позиция
зиции 0 в позицию № 2. Это соот- №1
ветствует
える)です。 операции +2.
При повороте на 7/7 оборота,
другими
 7 / 7 周、словами,
つ ま りкогда
1 周動колесо
い た とсовер-
き、0
Позиция
шит один полный оборот, нулевая ка- 位置№5 5 位置 2
Позиция
号かごは位置
бинка, 0 から再び位置
начав движение 0 に戻りま
с позиции № 0, №2
вновь вернётся в позицию
す。これが+7 です。+7 は 0、つまり動 № 0. Это
соответствует операции +7, которая
かないことと同じです。
эквивалентна прибавлению нуля, то 位置
Позиция №44 位置
Позиция
3 №3
есть случаю, когда кабинка не двига-
лась вообще.
 この観覧車モデルを使うと、足し算表
Используя эту модель колеса обо- 図 3.2 モジュロ演算の足し算のモデル(1)
Таблица 3.2. Модель (1) сложения по модулю 7
のすべてを説明できます。
зрения, можно прекрасно объяснить
таблицу сложения по модулю 7.

3-3 Модульная арифметика 139


139
Теперь рассмотрим, например,
 例えば、5 + 6 を考えてみます。
операцию сложения 5 + 6.
Представьте что первое слагаемое,
то есть 5, – это пятая кабинка в началь- 6
 5
ном+положении
6 の 5 は、初期状態における
(в позиции № 5).5 号かご
В ка- 7
об.
 周=+ 6 
кую позицию она придёт, если колесо
だと思ってください。この 5 号かごが 6 / 7 位置 0№ 0
Позиция
сделает 6/7 оборота по часовой стрел-
周すると、どの位置までいくでしょう?
ке? Как видно по рис. 3.3, при переме-
щении на 6 позиций
 時計周りに 6 つ動かすと、図по часовой стрел-
3.3 に示すよ Позиция
ке пятая кабинка переместится из по- №6 Позиция
うに位置
зиции №45にいくことがわかります。
в позицию № 4, что соответ- 位置 6
№1
位置 1
 つまり、下の式のとおりです。формуле
ствует нижеприведённой
сравнения по модулю.

5+
     5 + 66 ≡
=44 (
(mod
mod 7).
7)
位置 5 55号 位置 2
Приняв номер кабинки, равный её Позиция
№2
номеру позиции в начальном состоя-
 初期状態のかご番号(かごの位置番号)を Позиция № 5
нии, за слагаемое a, легко определить
a、回転移動を / 7 周とすると、移動後の
на рисунке её bпозицию после поворота 位置
Позиция №44 位置
Позиция
3 №3
колеса на b/7 оборота. Таким образом,
位置が足し算の答えになります。このやり方
можно убедиться в том, что для любых
で、足し算のすべての組み合わせが、表
слагаемых a и b результат операции 3.3
のようになることが確認できます。
сложения по модулю 7 будет соответ- Рис.図3.3. Модель (2) сложения по модулю 7
3.3 モジュロ演算の足し算のモデル(2)
ствовать приведённому в табл. 3.3.

 続いて、引き算の場合も観覧車で説明して
Теперь объясним с помощью этого
колеса обозрения операцию вычита- 表 3.3 モジュロ
Таблица 3.3. Cложение a 7+のbaпо
+ bмодулю 7
みましょう。
ния по модулю.
a b 0 1 2 3 4 5 6

0 0 1 2 3 4 5 6

1 1 2 3 4 5 6 0

2 2 3 4 5 6 0 1

3 3 4 5 6 0 1 2

4 4 5 6 0 1 2 3

5 5 6 0 1 2 3 4

6 6 0 1 2 3 4 5

140
140
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Рассмотрим сначала нулевую Позиция № 0
 まず、0 Если
кабинку. 号かごに注目します。
колесо повернётся на 1 7
7 об.
周=- 1 об.
周=- 7 = 0
 1 оборота
1/7 / 7 周反時計回りに動くと、0 号かごは
против часовой стрелки, 位置 0 7
то нулевая кабинка переместится из
位置 0 から位置 6 に動きます。これを−1(1 2
позиции № 0 в позицию № 6. Опреде- об.
周=- 2 00号
を減じる)と定義します。 7 Позиция
лим это как операцию вычитания еди-
№1
ницы (−1). Позиция
位置 6 位置 1
№6
При 7повороте
 2/ на 2/7 оборота против
周反時計回りに動くと、0 号かごはча-
совой стрелки нулевая кабинка переместит-
ся位置 0 から位置
из позиции №50に動きます。これが−2(2
в позицию № 5. Это соот- 位置 5 位置 2
ветствует Позиция Позиция
を減じる)です。 вычитания двух (−2).
операции №5 №2

位置
Позиция № 44 位置
Позиция
3 №3
При повороте
 反時計回りに на один полный
1 周動いたとき、0 оборот
号かごは
против часовой стрелки нулевая кабинка,
位置 0движение
начав から位置 0сに戻ります。 позиции №これが−7 です。
0, вновь вер- Рис. 3.4. 図 3.4 モジュロ演算の引き算のモデル(1)
Модель (1) вычитания по модулю 7
−7 は 0、つまり動かないことと同じです。
нётся в позицию № 0. Это соответствует
4 位置 0№ 0
Позиция
операции вычитания семи (−7), которая эк- об.
周=- 4
7
вивалентна вычитанию нуля, то есть слу-
 この観覧車モデルを使うと、引き算のすべ
чаю, когда кабинка не двигалась вообще.
Эта модель колеса обозрения позволяет
てを説明できます。 Позиция
прекрасно понять, почему в ячейках таб- Позиция
位置 6 位置
№ 11
№6
лицы вычитания по модулю 7 содержатся те
или иные значения.
 例えば、3 − 4(3 から 4 を引く)につい
Представьте
て考えます。
что в операции вычитания 位置 5 位置 2
Позиция Позиция
3−4 число 3 – это третья кабинка в началь- №5 №2
ном положении (в позиции № 3). Посмо-
трим
 3 − по4 рис. 3.4,初期状態の
の 3 は、 в какую позицию
3 号かごだと思っона при-
Позиция位置
№ 44 33号 位置
Позиция
3 №3
дёт, если колесо сделает 4/7 оборота против
てください。この
часовой стрелки. Как3 号かごが / 7 周反時
ясно из 4рисунка, при
перемещении на 4 позиции против часовой Рис.3.4. Модель (2) вычитания по модулю 7
図 3.5 モジュロ演算の引き算のモデル(2)
計回りすると、どの位置にくるでしょう?
стрелки третья кабинка переместится из 表 Вычитание
Таблица 3.4. 3.4 モジュロ a7 の
− ba -
поb модулю 7
 反時計回りに、4
позиции つ動かすと、位置
№ 3 в позицию 6 にい
№ 6, что соответ-
くことがわかります。
ствует нижеприведённой つまり次のとおりです。
формуле сравне- a b 0 1 2 3 4 5 6
ния по модулю.
0 0 6 5 4 3 2 1
3 −– 44 =
3 ≡6 (mod7)
6 (mod 7).
1 1 0 6 5 4 3 2
Приняв номер кабинки, равный её но-
 初期状態のかご番号(かごの位置番号)を 2 2 1 0 6 5 4 3
меру позиции в начальном состоянии, за
a、反時計回りの回転移動を
уменьшаемое b / 7 周として、
a, легко определить на рисун- 3 3 2 1 0 6 5 4
её позицию после поворота колеса на b/7
ке回転後の位置が、引き算の答えになります。
оборота против часовой стрелки. Таким об- 4 4 3 2 1 0 6 5
このやり方で、引き算が右表のようになるこ
разом, можно убедиться в том, что для лю-
бых чисел a и b результат операции вычита-
とが確認できます。 5 5 4 3 2 1 0 6
ния a − b по модулю 7 будет соответство-
вать приведённому в табл. 3.4. 6 6 5 4 3 2 1 0

3-3 Модульная арифметика 141


141
не правда ли,
モジュロ演算の
сложение и
楽勝!
足し算 модульной
вычитание
лёгкая победа!
楽勝
лёгкая победа!!
!!
引き算って - очень
арифметики
простые операции?
やさしいでしょ?

я
спасибо, та ка а
тот
было вкусно!
п ро с
мн е
да же чу!
о п ле
п

時間の計算や
расчёт времени а 今度は
теперь давай
и даты - это тоже モジュロ演算の
曜日を調べるのも
операции модульной
изучим умножение

モジュロ計算の
арифметики,
掛け算と割り算を
и деление
по модулю!
一種ね
не так ли? やろう!


то
го
я

например, совершенно
例えば そのとおりよ!
умножение 5 × 4 верно!
5по×модулю
4 の計算って 7
これでいいの?
будет вот таким? 5
5××44==7 7× ×
2 +2 6.
+6 та к モジュロ 7の
вот таблица
а ть!
д ерж 掛け算の表は
なので
Следовательно, умножения
по модулю 7!
こうなるわ!
×44≡=6 6(mod
5× (mod 7).
7)

142
142
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Таблица 表
3.5. 7 のa a××
Умножение
3.5 モジュロ b bпо модулю 7
なんだか
да, все числа
в таблице
a b 0 1 2 3 4 5 6 ずいぶん表の中の
почему-то
数字が
расположены
0 0 0 0 0 0 0 0 вばらけてきたな
беспорядке.

1 0 1 2 3 4 5 6

2 0 2 4 6 1 3 5

3 0 3 6 2 5 1 4

4 0 4 1 5 2 6 3

5 0 5 3 1 6 4 2

6 0 6 5 4 3 2 1

но смотри!
всеでも見て!
строки и столбцы,
a かкроме
b が 0 でない
тех,
в которых
どの行にも 必ず 1 から 6 все
содержат までの
a=0 или b = 0,
数字がひとつずつ
числа от 1 до 6
по одному разу!
入っているわ!

表 3.6 モジュロ
Таблица 3.6. 8の
Умножение a×
a× b по
b модулю 8
いいところに
верно
気付いたわね!
заметила! a b 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
ところが вот
однако
モジュロ
вам 8の
таблица 1 0 1 2 3 4 5 6 7
умножения
掛け算だと 2 0 2 4 6 0 2 4 6
по модулю 8.
こうなるの
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1

3-3 Модульная арифметика 143


143
в строках и столбцах
a か однако,
b が 0 でないときхотя 2, 42иと と 6 の行には
6 4некоторые числа
в
1とстроках
3 と 5 とи 7столбцах
の行には 数字がそろってないし
повторяются, а некоторые
1, 3, 5 и 7 отсутствуют...
から 7 までの数字が
1собраны все числа
そろってるけど…
от 1 до 7, 0 がやたらと
...и почему-то
в них содержится
あるぞ?
много нулей...

掛け合わせる数に
да, 0が
не очень приятно,
入っていないのに
когда перемножение Ведь перестаёт выполняться
ненулевых чисел
結果が 0 になるのは つまり、
правило a × b = 0 なら
умножения:
даёт в результате ноль. если a × b
a = 0 または = 0, то bхотя
= 0бы
といодин
困るわよね
из множителей, a или b,
う計算の法則が成り立た
обязательно должен быть
равен 0.
なくなってしまいます。

но как же
どうして
получаются ну, в общем...
こんな結果に それはね…
подобные это происходит
なったの? モジュロの 8 という数と
в тех случаях,
результаты?
a またはそчисла
когда
たが
b が aи b
『互
не いに素』でない場合に
являются взаимно
простыми по отношению
起きることなの!
к модулю!

добавкой
温泉の素なら
для ванны я
よく使ってるぞ…
пользуюсь
Д ля
часто.※ ва н н ы


Игра слов с называнием добавки для ванны
«Простая добавка для горячих источников».
144
144
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
互いに素とは
ある数同士が
Взаимно простые

пол н
ое
ни е ..
. 1 以外に共通の
числа - это такие числа,
р о ва у которых нет
и гн о р и
約数(公約数)を
общих делителей,
持たないことを
кроме единицы.
いうのよ

Например, числа 8 и 2 имеют общий делитель, отличный от единицы, – это


число 2, поэтому
 例えば、8 と 2они не являются
とは、1 взаимно простыми. Кроме того, числа 4 и 6,
以外に 2 という共通の約数(公約数)を持っているので、
содержащиеся в таблице
互いに素ではありませんね。また、モジュロ умножения по модулю 8, тоже имеют с4числом
8 の掛け算の表の中の 8 общий
と 6 も、8 とは
делитель – число 2, поэтому они не являются взаимно простыми по отношению
2 という公約数を持っているので、互いに素にはなりません。
к числу 8.
 一方、1
Напротив,と 3числа
と 5 と1,7 3,
は、85 и とは互いに素です。なぜなら、互いに素であるとき、
7 являются взаимно простыми по отношению к
両者の数の最大公約数が
числу 1 になっていることを確かめてください。
8, так как их наибольший общий с числом 8 делитель равен единице.
Таким образом, все простые числа являются взаимно простыми с любыми
 このように、すべての素数は、その素数の倍数を除いて、ほかのどんな整数とも互
числами, которые им не кратны. Именно это свойство позволило нам отыски-
いに素になるわけで、この性質を利用してエラトステネスの篩の方法によって素数を
ふるい

вать простые числа с помощью решета Эратосфена.


見つけ出すことができたのです。

к прим ер
ということは じゃあ
тогда... у. ..
в а Д ля

значит, в качестве
ы
нн

модуля лучше
モジュロにとる数は
использовать
素数がいいの? 3 ÷...как
5 って
простое число? посчитать
どうやるんだ?
3 ÷ 5?

そうよ!
верно!

если
7 のように
использовать
素数ならчисло
простое
вроде 7, то
割り算も
и деление будет
できるのよ
возможно.

3-3 Модульная арифметика 145


145
割り算を
очень просто!
надо только
掛け算にすれば 1
заменить деление a÷b=a×
いいのよ
умножением!
b
a を b で割るということは、
Поделить a на b – это то же са-
мое,
aにb что умножить a
の逆数を掛けることと
на число, обратное b.
同じです。
Обратное число называют
ぎゃくげ ん

逆数は、逆元とも呼びます。
также обратным элементом.

おっага! ……でも
но как нам
なるほど! どうやって逆数を 1
понятно! найти обратное
3 ×  = 1
さがせばいい?
число? 3

?
что
例えば
ну, например, в обычной
3 の逆数は 3 分のчисло,
арифметике 1 だから
обратное 3, – это 1/3,
掛け合わせて 1 になる数が
ведь при умножении
逆数でしょう?
получается 1, не так ли?

Таблица 表
3.7. Умножение
3.7 モジュロ 7のa a× ×
b по
b модулю 7
Давайте ещё
モジュロ 7の a b 0 1 2 3 4 5 6
раз взглянем
掛け算の表を
на таблицу умножения 0 0 0 0 0 0 0 0
もう一度見て
по модулю 7
が現れているところを
и1 найдём пары чисел, 1 0 1 2 3 4 5 6
произведение
拾いだしましょう 2 0 2 4 6 1 3 5
которых равно 1.

3 0 3 6 2 5 1 4

4 0 4 1 5 2 6 3

5 0 5 3 1 6 4 2

6 0 6 5 4 3 2 1

表 3.7 から、
Согласно 1 の逆数は
табл. 1、2 の逆数は
3.7, 1 обратно 4、3 の逆数は
1, 2 обратно 4, 5、
の逆数は 5,
34 обратно の逆数は
4 обратно
2、5 2,3、6 の逆数は
5 обратно となります。
3, 66обратно 6.

146
146
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Поделить
3 を 5 3で割ることは、3
на 5 – значит に 5 の
умножить 3 на число, обратное 5. молодец,
значит, 3 ÷ 5
じゃあ 逆数の 3 を掛けることなので、 よくできたわね!
Следовательно, правильно!
вычисляется
3 ÷ 5 を計算すると 
вот так?
こうか? 3÷5=≡ 3×3=9
9÷9
7=7+2= ≡ 2 (mod 7) от похвалы
растут!!!

Такимとなる。つまり、
образом,

3÷5=
≡ 2 (mod 7)

なのです。

では давайте
итак, Таблица 表
3.7. Деление 7aの
3.8 モジュロ ÷ ba ÷
поb модулю 7
割り算も и
составим
таблицу a b 0 1 2 3 4 5 6
表にするわよ
деления.
0 ー 0 0 0 0 0 0

1 ー 1 4 5 2 3 6

2 ー 2 1 3 4 6 5

3 ー 3 5 1 6 2 4

4 ー 4 2 6 1 5 3

5 ー 5 6 4 3 1 2

6 ー 6 3 2 5 4 1

умножение и
掛け算と割り算は
деление тоже
観覧車モデルでも
можно объяснить
説明できるわ
на модели
колеса обозрения.

3-3 Модульная арифметика 147


147
モジュロ演算の掛け算と割り算
Умножение по модулю и деление по модулю
Для объяснения умножения по модулю мы опять воспользуемся моделью колеса
 掛け算の場合も、かごが 7 つある観覧車モデルで説明できます。
обозрения, имеющего семь кабинок.
В начальном состоянии нулевая ка-
бинка
 初期状態は находится в позиции0 に、1
0 号かごが位置 № 0, первая
号かご
кабинка – в позиции № 1 и так далее, то Перемещение
1 分間に進む距離 за 1 мин.
が位置 1 に、すべてのかご番号と位置番号が
есть номера всех кабинок совпадают с
номерами позиций, в которых эти ка-
一致しています。 Позиция位置
№ 00
бинки находятся.
 掛け算の場合は、かごが回転するスピード
Для понимания умножения полезно Позиция 00号
№6
を考えればよいのです。
поразмышлять над таким параметром Позиция
этой модели, как скорость вращения ко- 位置 6 位置 1
№ 1
 かごが 1 分間で 1 / 7 回転するとき(つま
леса.
り 7 分で 回転するとき)
Если1колесо 、0 号かごは、3
вращается 分
со скоростью Позиция
1/7 оборота в минуту (другими словами, №5
後にどの位置にあるかは、次のように表せま 位置 5 位置 2
Позиция
делает один полный оборот за 7 минут),
№2
す。
то номер позиции нулевой кабинки че-
рез 3 минуты после начала вращения Позиция №44
位置 位置 3
Позиция №3
рассчитывается следующим образом:
 1(速さ)× 3(分間)= 3(回転後の位置)
1 (скорость) × 3 (время) = 3 (номер позиции через 3 мин.). Перемещение
3 分間に進む距離 за 3 мин.
Если же колесо вращается со скоро-
 1 分間に 5 / 7 回転する場合、6 分後にど
стью 5/7 оборота в минуту, то номер по- Рис.図3.6.
1
Вращение
3.6 1 со скоростью
分間に  回転する場合(1)
1
об/мин. (1)
の位置にあるかは、次のようになります。
зиции нулевой кабинки через 6 минут 7 7
после начала вращения вычисляется пу-
тём умножения по модулю 7.
 5 × 6 = 30、
5 × 6 = 30, 4 оборота
4 回転= = 00оборотов
回転 位置 0 № 0
2
оборота
7 回転
Позиция
 30 = 7 × 4 + 2(30 ÷ 7 = 4 余り 2)
30 = 7 × 4 + 2 (30 ÷ 7 = 4, остаток 2).
 なので、5 × 6 = 2(mod 7)
Следовательно,
5 × 6 ≡ 2 (mod 7). Позиция 00号 Позиция
№6 №1
 つまり、30
Другимиという値は 7 で割ると
словами, поделив 回転
304 на 7, 位置 6 位置 1
мы получим 4 полных оборота и 2 в
と余り 2 ということになります。4 回転はし
остатке. Сделанные кабинкой 4 полных
ているものの、mod の世界では арифметики
оборота в мире модульной 0 回転と同じ
эквивалентны 0 оборотов,
わけで、余りの 2 だけに注目すればいいので поэтому нас Позиция
位置 5
№5
位置 2
Позиция
№2
интересует только этот остаток 2.
す。
Позиция位置
№ 44 位置
Позиция
3 №3

5 5
Рис. 3.7. Позиция через 分間に  回転する場合の
図 3.7 1 6 мин. вращения со 6
скоростью
分後の位置 об/мин.
7 7

148
148
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Для понимания деления по модулю
 割り算の場合は、掛け算の場合の逆を考え
мы применим подход, обратный умно-
жению: будем находить время вращения, Перемещение
1 分間に進む距離 за 1 мин.
ます。回転後の位置と回転したスピードから、
используя данные о конечной позиции
かごが回転した時間を逆算するのです。
нулевой кабинки и скорости вращения Позиция位置
№ 00

колеса, которые нам известны.


Пусть в результате вращения колеса Позиция 00号
 かごが
со 1 分間で
скоростью 1 / 7 回転するとき、0
1/7 оборота 号
в минуту нуле- №6
位置 6 Позиция
位置 1
вая кабинка переместилась
かごは、位置 0 から回転を始めて、最終的に из начальной №1
позиции № 0 в конечную позицию № 5.
は、位置 5 にあったとします。ここから、か
Попробуем найти время её вращения. 最終位置
Позиция
ごは何分間回転したかを求めます。 №5
位置 5 位置 2
Позиция
№2
5 (конечная позиция) ÷ 1 (скорость) = 5 (время вращения).
 5(最終位置)÷ 1(速さ)=5(分間) 位置 3
Позиция
位置 №4 4
Позиция № 3
Таким образом, мы выяснили, что
колесо вращалось 5 минут. На самом де-
 つまり
ле, 5 分間回転していたことがわかりま
нулевая кабинка будет в той же самой
Перемещение
5 分間に進む距離 за 5 мин.
す。また、12
позиции № 5 分間、19 分間…、一般的に(5
и в случае, если колесо вра-
щалось, например, 12 или 19 минут, то 1 1
+ 7n)でも同じ位置にきますが、mod 7 の Рис. 図
3.8. Вращение
3.8 1 со скоростью
分間に  回転する場合(2) об/мин. (2)
есть, в общем случае, (5 + 7n) минут, но в 7 7
世界には時間でさえも
мире ~ 6 分までしかあり
арифметики по 0модулю 7 даже для
измерения промежутков
ませんので、12 分も 19 分も時間の経過は見 времени имеет-
ся всего 7 значений от 0 до 6 минут, а
えなくなり、どちらも
длительности, 5 分と同じになります。
подобные 12 или 19 мину- 位置 0№ 0
Позиция
там,
 かごが будут1 эквивалентны 5 минутам. (つ
分間で 2 / 7 回転するとき、
Теперь положим, что в результате Позиция
ま り 7 分 でколеса
вращения 2 回転す соるскоростью
と き )、0 号2/7かご は、
обо- №6 00号 Позиция
рота №1
位置 0в から回転を始めて、最終的には位置
минуту нулевая кабинка переме-5
стилась из начальной позиции № 0 в ко- 位置 6 位置 1
にあったとします。
нечную позицию № かごが何分間回転したか、
5. В этом случае вре-
割り算表から次の答えが出てきます。
мя вращения колеса можно найти в таб-
最終位置
Позиция
лице деления по модулю 7. №5 位置 5 位置 2

 5(最終位置)÷
5 (конечная позиция) ÷2(速さ)=6(分間)
2 (скорость) = 6 (время вращения). Позиция
№2
У нас получился результат 6 минут, 位置 4
Позиция
位置 3
Позиция №3
но
 6как нам его интерпретировать? Рас-
分間回転したという答えは出ますが、こ №4
суждать надо следующим образом: за 6
れをどう解釈すればよいのでしょう?
минут вращения нулевая кабинка при-
 こう考えてください。最終位置は
шла в конечную позицию № 5, 5но だった
для Перемещение
6 分間に進む距離за 6 мин.
этого ей пришлось сделать один лишний
が、余分に 1 回転していたと。つまり、実際
оборот. Другими словами, хотя конечной 2 2
Рис. 3.9. Вращение
図 3.9 1 со скоростью
分間に  回転する場合 об/мин.
の最終位置は
была на самом2×6= 12 であったが、mod
деле позиция № 127 7 7
(6 × 2 = 12),
のため 5 と表された。 по причине (mod 7) она была
выражена как позиция № 5.
 したがって、12
Следовательно, ÷ 2так
= 6как
なので、
12 ÷「6
2= 分間6,
найденный в таблице
回転した」という答えが正しかったことがわ деления по модулю
7 ответ – «колесо вращалась 6 минут», –
かります。
оказался абсолютно верным.

3-3 Модульная арифметика 149


149
Четыре основные
これで素数を
Итак, надеюсь, 四則演算とは、足し算、
арифметические
что вы хорошо
モジュロとする演算で  引き算、掛け算、割り算
операции – это
усвоили четыре
四則演算のすべてが
операции
сложение,
の вычитание,
4 つの演算のことです。
できることが
арифметики
умножение и деление.
わかったでしょ
по модулю !?
простого числа.

аそれって
что в этом такой自由自在に
большой выбор
すごいことなの?
особенного? 演算できるから
операций очень
暗号化や復号の
подходит для методов
шифрования и
数学に用いるのに
расшифрования.
適しているわ !!

непобедимость!

красота!

дело в том, что


а чем плоха
整数を用いる 非負整数の範囲では
на множестве
обычная неотрицательных
演算じゃ
арифметика 割り算が
целых чисел операция

だめなのか?
целых чисел? деления не обладает
できないのよ!
свойством
замкнутости.

150
150
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Например, результат операции 3 ÷ 8 не принадлежит
множеству натуральных чисел, так как является дроб-
例えば
ным 3 ÷ 8 の答えは分数(小数)になってしまい、
числом.
С整数では表せません。
другой стороны, операции арифметики по модулю
простого числа p, обладая такими же свойствами ком-
一方、素数 p のモジュロ演算では、交換法則、結合法
мутативности, ассоциативности, дистрибутивности, от-
則、分配法則が成り立ち、演算の結果は、必ず{
личаются 0,1,
тем, что их результат всегда принадлежит
……,p - 1чисел
множеству }のいずれかになります。
{0, 1,... p − 1}.
в о т!

коммутативность - это
a+b=b+a
a + b = b + a или ab = ba,
ab = ba が交換法則 
ассоциативность - это
(a + b)+ c = a +(b + c)
(a + b)(ab)
+ с c==a a(bc)が結合法則
+ (b + с) или (ab)с = a(bс),
а дистрибутивность
a(b + c )= ab + ba が分配法則よ! - это
a(b + с) = ab + bс!

такие множества Типичным примером является


このような数の体系を так называемое»конечное поле».
чисел
たい носят название
『体』というのよ
«полей». Множество рациональных чисел
『体』の代表的なものが有理数です。
содержит бесконечно большое
количество элементов.
有理数には要素となる数が無限にあり
С другой стороны, множество,
наます。一方、素数
котором выполнимы p のモジュロ演算の
операции
要 素 は、0,1, ……,pпростого
арифметики по модулю - 1 で、p 個
числа p, содержит только
と有限なので、『有限体』といいます。
p элементов: 0, 1,... p − 1.
Таким образом, оно имеет
конечный размер и поэтому
морской карась ※ называется «конечным полем».

Этот иероглиф 体 читается «тай» и в общей алгебре означает «поле».


Морской карась нарисован потому, что по-японски он тоже называется «тай».


151
151
надеюсь, это
よしвсё, что
最後に
これでモジュロ演算の
нам нужно знать а вот и нет!
もうひとつ!
基礎は終わりだな?
про модульную
арифметику?

как, ещё давай,


что -то ? давай!
эта таблица
Для бум спепеней
べき乗の場合の
ажных
стаканч по модулю 7
表も載せるわね
иков вам тоже
пригодится.

Таблица 3.9.表Возведение
3.9 モジュロв7степень (abb)乗)
の a (a の
b
по модулю 7

a b 1 2 3 4 5 6 Остатки от деления на 7 шестой


表 3.9 のそれぞれの数を 6 乗し
степени
たものを любого из чисел в таблице
7 で割ると、いずれも
1 1 1 1 1 1 1 равны 1.
余りは 1 になります。
2 2 4 1 2 4 1
16 = 1 = 0 × 7 + 1
3 3 2 6 4 5 1 26 = 64 = 9 × 7 + 1
36 = 729 = 104 × 7 + 1
4 4 2 1 4 2 1 46 = 4096 = 585 × 7 + 1
56 = 15625 = 2232 × 7 + 1
5 5 4 6 2 3 1 66 = 46656 = 6665 × 7 + 1

6 6 1 6 1 6 1

モジュロ演算していくと
да, результаты

結果の数字が
операций
по модулю имеют
ずいぶんとばらばらな値
такой большой
になるんだなあ
разброс.

152
152
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
ой, а это
верно
что такое?!
подметил!

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

да,
это так!
и это имеет отношение
кр
ут к малой теореме ферма,
ь которую мы сейчас
с вами изучим!!

фе...
ферма?

ох .. .

3-3 Модульная арифметика 153


 3
3-4ーМалая
4 フェルマーの小定理とオイラーの定理
теорема Ферма и теорема Эйлера

ой, я боюсь
высоты...
итак, теперь
とっても素敵な
я познакомлю вас...
...с одной очень
フェルマーの小定理を
красивой теоремой -
紹介するわ! Малая теорема Ферма
малой теоремой フェルマーの小定理
ферма! Если n – простое число, то для
любого целого числа a, которое
 n が素数のとき、n
является と互いに素で
взаимно простым с n
ある整数 aсловами,
(другими (n の倍数でない整数не является
a)
кратным числу n), верно следующее
について、次の式が成り立ちます。
сравнение:
nー1
    a =
≡ 1(mod n)

Это
 つまりозначает,
aをn- что1 乗したものを
остаток от
деления числа a в 1степени
n で割ると余りが になるという n−1
на число n будет равен 1.
わけです。
フェルマーの小定理は
малая теорема ферма
素数判定でも利用したわよね
используется и в качестве
теста на простоту.
(131 ページ参照)
но главное, - она является
何よりオイラーの定理を
основой, необходимой для
勉強するための基礎として必要よ
понимания теоремы эйлера.

表 3.10 モジュロ
Таблица 3.10. Возведение в степеньb
(aの
7 の a (a b
乗)
) bпо модулю 7
モジュロ ときに
значит, 7именно
по этой теореме a b 1 2 3 4 5 6
1 ~ 6 までの数を
все числа от 1 до 6 1 1 1 1 1 1 1
6 乗して 1 степеней
в таблице になるのは
この法則が
по модулю 7
2 2 4 1 2 4 1
в示していたこと
шестой степени 3 3 2 6 4 5 1
дают единицу!
だったのね! 4 4 2 1 4 2 1
5 5 4 6 2 3 1
6 6 1 6 1 6 1

154
154
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
フェルマーってのは
а кто такой
どんな奴だ?
этот ферма?

Ферма – отец теории чисел


数論の父フェルマー

Пьер де Ферма (1601–1665 гг.) 年生~


 ピエール・ド・フェルマー(1601 – математик и юрист XVII
1665 年没)は、17 века, внесший огром-
世紀を代表するフランス
ный вклад в теорию сравнений и теорию
の法律家であり、数学者です。モジュロ演算をはじめとする数論の分野で大きな業績を чисел.
Кроме малой теоремы Ферма, существует и великая теорема Ферма.
残しました。
Она заключается в том, что для любого натурального n > 2 уравнение
x フェルマーの小定理だけでなく、フェルマーの大定理(最終定理)と呼ばれるものも
n
+ yn = zn не имеет решений в виде натуральных чисел (x, y, z), однако сам Ферма
あります。
не оставил доказательств этой теоремы.
Сама теорема очень лаконична
 フェルマーの大定理とは、 「3 以上の自然数и выглядит настолькоn +
n について、x простой, что кажется,
yn = zn となる自然数
что её мог бы доказать даже ученик средней школы. Как известно, теорема Пифа-
(x,y,z)の組み合わせはない」というものですが、フェルマー自身は、その証明を残し
гора гласит, что длины a, b и c трёх сторон прямоугольного треугольника (которые
ませんでした。
могут быть равны, например, 3, 4 и 5 метрам соответственно) удовлетворяют соот-
 見かけは簡明な内容で、中学生にも解けるかと思われるくらい単純な形をしています。
ношению a2 + b2 = c2. Великая теорема Ферма представляет собой уравнение, в ко-
тором равные двум показатели
ご存じのピタゴラスの定理は、 степеней уравнения
「直角三角形の a2 + b2 = c2 заменены
3 辺の長さ、a,b,c について aна 2
n b>2 2.
+ =
2 Великая теорема Ферма была доказана в 1995 году, спустя 330 лет после смерти
c が成り立つ(例えば 3 辺が 3,4,5 メートルのとき)」というものです。フェルマーの
Ферма, английским математиком Эндрю Уайлсом (1953 г. р.).
定理とは、a + b = c における 2 を 3 以上に置き換えた場合の数式です。
2 2 2

 なお、大定理の証明は、フェルマーの死から
Считается, что Ферма написал на полях 年を経て、1995
330такое 年にイギリスのアン
примечание к своей великой
теореме.
ドリュー・ワイルズ(1953 年生~)によってなされました。
 
я хотел здесь
написать та к,
フェルマーの大定理の
доказательство
証明をここに書こうと
великой теоремы
та к

思ったけど余白がせま
ферма, но поля
книги слишком
すぎる!
узки для этого!

と、ノートに書かれ
ていたようです。

3-4 Малая теорема Ферма и теорема Эйлера 155


155
素数の判定に
давайте используем
フェルマーの小定理 Выразим контрапозицию к малой
малую теорему ферма フェルマーの小定理の対偶をとります。
теореме Ферма: если существует чис-
(131
для ページ参照)を
теста на простоту!
ло a, взаимно простое по отношению
すると、n と互いに素な数 a が、
利用しましょう!
(См. стр. 131) к числу n, такое, что
nー1
 a ≠
≢ 1(mod n),

なら、n
то число は素数ではないと言えます。
n не является простым.


а 対偶って
что такое Это замена высказывания
命題『A ならば B』に対して
контрапозиция?
なあに? вида «если A, то B»
『B でないなら A でない』
на высказывание вида
というのが対偶よ!
«если не B, то не A»!


так...
бесплатное
питание? если высказывание
оплачиваемый
отпуск?
正しい命題の対偶は
верное, то и его
常に正しいのよ!
контрапозиция
та и тоже всегда верна!
Рабо та
зарпла

основанный на
вот как?
なるほど… これを利用して
этом тест на
тогда это явно
これはマンガじゃない
Если
命題
верно высказывание: 素数を判定する方法が
простоту...
не манга... «любая манга увлекатель-
『すべてのマンガは楽しい』
на», ...называется ой,
が正しいならば、 フェルマー法 Что это
тестом ферма.
то можно утверждать, というのよ с ним?

что
対偶 и его контрапозиция:
Ве сё лые шмы г 『楽しくないのは
«если книга скучна, то
どれもマンガじゃない』
всё,
брр. .. пр остые это не манга», – сдаюсь!
числ а も正しい、と言えます。
б рр
. . . тоже является верной.
брр. ..

156
156
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Тест Ферма и псевдопростые числа
フェルマー法と擬素数
При оценке простоты чисел с помощью теста Ферма нужно помнить о том, что
 フェルマー法による素数判定において注意すべきなのは、
верность сравнения

 a =
≡ 1 (mod n)
nー1

является
を満たすことは、nнеобходимым, но не достаточным условием простоты числа n.
が素数であるために必要な条件ではありますが、十分な条件であるといえな
По
い点です。
этой причине возможны случаи, в которых число, которое не является
простым, вероятностно оценивается как простое.
 このため、フェルマー法では、素数でないのに、確率的に素数であると判定される場合があ
Например, хотя число n = 3215031751 и взаимно простые к нему числа 2, 3, 5 и 7
ぎ そ すう

ります。そのような数を擬素数と呼んでいます。
удовлетворяют сравнениям
 例えば、n = 3215031751 は互いに素である 2,3,5,7 との間に、

     23215031750 =
≡ 1 (mod 3215031751)
,
     33215031750 =
≡ 1 (mod 3215031751)
,
     53215031750 =
≡ 1 (mod 3215031751)
,
     73215031750 =
≡ 1 (mod 3215031751)
,

простым числом оно не является, так как его можно разложить на простые множители
を満たしていますが、素数ではありません。なぜなら、
следующим образом:

     3215031751 = 151 × 751 × 28351 .

Правда, в диапазоне натуральных чисел, не превышающих 25 миллиардов,


と素因数分解できるからです。
n = 3215031751 является едиственным составным числом, для которого остатки от де-
 ただし、
ления 250 億以下の数
четырёх で、2,
простых nчисел 2,3, 5, 77 の
3, 5, 4 つの素数の
в степени n − n1 −
на1 n乗が 1 なのに素数でないのは、
равны 1. На основе теста
3215031751 だけです。フェルマー法を利用して、 精度をより高くするために発展させたものが、
Ферма был создан также тест Миллера-Рабина, упоминавшийся на стр. 131, который
131 ページで紹介した
позволяет повысить точность 法です。
оценки.
Miller-Rabin

3-4 Малая теорема Ферма и теорема Эйлера 157


157
теперь мы изучим
次のオイラーの
теорему эйлера,
定理が RSA 暗号の
НА КОТОРОЙ ОСНОВАН
数学的根拠となるの
шифр RSA.

ЕСЛИ ВЫ ПОЙМЁТЕ ЕЁ,


これを理解すれば、
ТО МОЖНО БУДЕТ
RSA 暗号の基礎が
СКАЗАТЬ, ЧТО ВЫ
わかるわ!
ОСВОИЛИ ОСНОВЫ
ШИФРА RSA!

Теорема
オイラーの定理 Эйлера
Для любого натурального числа n и взаимно простого с ним целого числа a
 自然数 n と、互いに素である整数 a について、次式が成り立ちます。
верно следующее сравнение:

 a
a φ(n) ϕ(n)
= 1 (mod
≡ 1 (mod n). n)

Присутствующая в данном сравнении функция φ(n) называется функцией


㋫ァ㋑

 式の中の
Эйлера, ϕ(n)をオイラー関数といいます。オイラー関数は、1
значение からвn диапазоне
которой равно количеству натуральных чисел までの自然数で、 от 1
n と互いに素である数の個数を表すものです。
до n, которые являются взаимно простыми по отношению к числу n.
Кромеϕ(n)
 また、a того,
× aтак
= aкак a+ ≡
ϕ(n) 1 a (mod n), перемножив левые и правые части:
なので、明らかに次式も成り立ちます。
a φ(n) × a ≡ 1 × a (mod n), получим, что
a φ(n)+1 ≡ a (mod n).
 aϕ(n)+ 1 = a (mod n)    
При дальнейшем повышении степени:
)
a φ(n × a φ(n) ≡ 1 × 1 (mod n), то есть
 なぜなら、a2φ(n ϕ(n)
) = 1 (mod n)なので、a を(ϕ (n)+ 1)乗すると、a に戻ることを意
a ≡ 1 (mod n),
味しています。
a 2φ(n)+1 ≡ a(mod n) и так далее.
 さらにべき乗をしていくと、2ϕ
Обобщая вышеизложенное, (n)乗で 1 になり、(2ϕ
можно записать, что(n)
для+любого a に戻ります。こ
1)乗でнатурального
числа n и взаимно простого
れを一般的に表せば、自然数 с ним целого числа aaверны
n と互いに素である整数 следующие два сравне-
について、次のようになります。
ния:
a kφ(n) ≡ 1 (mod n),
 a (n) = 1 (mod n)

a kφ(n)+1 ≡ a(mod n), где k – неотрицательное целое число.
   a = a (mod n)
kϕ(n)+ 1

Кроме того, в том случае, если натуральное число n


               ※ k は非負整数
можно представить в виде произведения отличных друг от
друга простых чисел, то для всех целых чисел a
 なお、1
от 1 до nから(n − 1)までのすべての整数
− 1 верно a に対して、次式が成り立ちます。
следующее сравнение.

)+1
akϕkφ(n
(n)+ 1 ≡ a(mod n) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ (1)
     a = a (mod n)                      (1)

158
158
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
так как все числа Если n является простым числом,
ϕ(7)なら
{1, 1,2,3,4,5,6
2, 3, 4, 5, 6} が то из всех чисел от 1 до n
n が素数なら 1 から
единственным n までの
числом,
7 と互いに素なので
взаимно просты
имеющим с n отличные от 1
自然数で n と互いに素では
по отношению к 7... общие делители
ないのは
(то есть не n だけ! простым),
взаимно
ϕ(7)
....φ(7)==66ね!
! является само это число n!

другими словами,
つまり 数学者オイラーЭйлер
Математик
в этом случае
ϕ(n)= n - 1
получается,
Леонард Эйлер (1707–1783 гг.) –
 レオンハルト・オイラー(Leonhard
ということよ
что φ(n) = n − 1. один из самых выдающихся математи-
Euler:1707
ков 年 生родившийся
XVIII века, ~ 1783 年 没 в)Швей-
は、
Если n – простое число, スイス生まれの
царии. 18 世紀を代表する数
Он известен не только огром-
n が素数の場合、
то φ(n) = n − 1 и, ными достижениями в разнообразных
ϕ(n)= n - 1 なので、 学者です。
следовательно, областях математической науки, но
ϕ(n)
aaφ(n) ≡=  数学の幅広い分野で大きな業績を残しただけで な
n-1
= 1 (mod
a na− 1 (mod n), n) также и активной работой в области
физики, астрономии.
となり、フェルマーの小定
что соответствует малой く、物理学や天文学の分野でも活躍しました。
理 と一致します(154
теореме Ферма ペー  数学の業績で一般によく知られているものとして、
Среди его широко известных математических
ジの表
(см. 3.10 の  部分に
закрашенный 一
столбец открытий есть так называемая формула Эйлера
オイラーの公式(複素数のオイラー表示)と呼ばれる
в致します)
табл. 3.10。на стр. 154). (формула Эйлера для комплексных чисел):
ものがあります。

    e θ= cosθ+ i sinθ


i

 これは複素指数関数 e θと三角関数のi
Она связывает комплексную экспоненту
cosθと sinθ

eが虚数単位
с тригонометрическими функциями cos θ и
i =√− 1 を介して、結びついていることを
sin θ посредством мнимой единицы i = √−1.
示しています。

オイラーってのは
А КТО ТАКОЙ
どんなやつだ?
ЭТОТ ЭЙЛЕР?

ЗВЁЗДЫ Я
ТОЖЕ ЛЮБЛЮ...

3-4 Малая теорема Ферма и теорема Эйлера 159


159
тЕПЕРЬ рАССМОТРИМ
N が 2 つの素数
ФУНКЦИЮ p と ОТ
ЭЙЛЕРА q の積で
таких
表される場合の
ЧИСел N, КОТОРыЕ МОЖНО
オイラー関数を
ПРЕДСТАВИТЬ В ВИДЕ
見てみるわよ !!
ПРОИЗВЕДЕНИЯ ДВУХ

ПРОСТЫХ ЧИСЕЛ p и q!!

Функция Эйлера от произведения двух простых чисел


2 つの素数の積のオイラー関数

 NПусть число Np можно


を 2 つの素数 разложить на два простых множителя: p и q. と互いに素でない
と q の積とします。ここでオイラー関数を導くため、N Здесь для выво-
да функции Эйлера мы будем подсчитывать количество целых чисел от 1 до N, кото-
整数を数えてみましょう。p と q は素数なので、N と互いに素でない数は、p の倍数と q の倍数
рые не являются взаимно простыми с N. Очевидно, что таковыми являются только
に限られることがわかります。
числа, кратные p, и числа, кратные q.
(1) Числа от 1 до pq, кратные p: p, 2p, 3p,..., qp – всего q штук.
 (1)1 から qp までの間にある p の倍数は、p,2p,3p,……,qp なので、全部で q 個あります。
(2) Числа от 1 до pq, кратные q: q, 2q, 3q,..., pq – всего p штук.
 (2)1
(3) から qp までの間にある
Оба последних числа рядовq(1)の倍数は、q,2q, 3q,……,qp
и (2), qp и pq, совпадают なので全部で p 個あります。
с N.
 (3)qp と qp は、どちらも N のことなので、1 個だけ同じ数が重複しています。
Чтобы найти φ(N), нужно сначала из общего количества чисел от 1 до N, равного N
(= pq) штук, вычесть количества чисел в рядах (1) и (2), а затем прибавить единицу к ре-
 つまり ϕ(N)は、N(= pq 個)から p 個と q 個を引き、重複分の 1 個を加えた数になります。
зультату, для того чтобы учесть пару совпадающих чисел в рядах (1) и (2).
すなわち、
φ(N) = pq − p − q + 1 = (p − 1)(q − 1).
     ϕ 
(N)= pq − p − q + 1 =(p − 1)
(q − 1)
Таким образом, функцию Эйлера в нашем случае можно выразить как (p − 1)(q − 1).
Кроме того, если p и q – простые числа, то φ(p) = p − 1 и φ(p) = q − 1, следовательно,
オイラー関数
φ(pq) ϕ(N)は(p − 1)
= φ(p) φ(q). (q − 1)となります。
1
Кроме того, с учётом
 このことから、p と q が素数のとき、ϕ того, что a p −(pq)=
≡ 1 (mod p) ϕ
ϕ(p) a q −1 ≡ 1 (mod q), обозначив L наи-
и(q)と表されます。
меньшее общее кратное чисел (pq −−1 1) и (q − 1), мы можем записать следующее сравнение:
 また、a = 1(mod p)で、a = 1(mod q)なので、(p − 1)と(q − 1)の共通の倍数
p−1

で一番小さいもの(最小公倍数)を
L とすると、次の式が成り立ちます。
aL ≡ 1 (mod p, mod q).

Следовательно, для числа a, взаимно простого с N, верно следующее сравнение:


     a = 1(mod p,mod q)
L

aL ≡ 1 (mod N).
すなわち、N(= pq)と互いに素な整数 a に対して次式が成り立ちます。
Другими словами, в том случае, если N можно разложить на простые множители p и
q, наименьшее общее кратное L чисел (p − 1) и (q − 1) может выполнять ту же самую
     a = 1(mod
L
роль, что и функция N) φ(N).
Эйлера

つまり L が、オイラー関数 ϕ(N)と同様の働きを示します。また、任意の 2 つの正整数の積は、

160
160
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Далее, так как произведение двух целых чисел можно представить в виде произведе-
最小公倍数と最大公約数の積に等しいので、
ния (p − 1)
их наименьшего общего кратного (НОК) и( q − 1)= LG という関係に基づき、次式が
наибольшего общего делителя (НОД):
成り立ちます。
(p − 1) (q − 1) = LG,

(p − 1)
(q − 1)    
     L =     , где L –  ※ L は最小公倍数、G
наименьшее は最大公約数
общее кратное,
   G
G 例をあげます。例えば、p
– наибольший общий делитель = 3、qчисел (p − 1) и (q =
= 5 とします。N − 1).
pq は 15、 (p − 1)は 2、 (q − 1)は 4、
Перейдём к рассмотрению конкретного примера. Положим, что p = 3 и q = 5, тогда
ϕ(N)=(p − 1) (q − 1)は 8、2 と 4 の最小公倍数 L は 4 で、最大公約数 G は 2 です。このとき、
N = 15; (p − 1) = 2; (q − 1) = 4; φ(N) = (p − 1) (q − 1) = 8;
L15 と互いに素な自然数
= НОК(2, に対して次式が成り立っています(表
4) = 4; G =aНОД(2, 4) = 2. 3.11)。
Аналогично тому, как было показано на стр. 158 для функции Эйлера, из сравнения
aL ≡ 1 a
(mod
4k
=N) 1(следует
mod 15)    ※ k формула:
обобщённая は非負整数
kL
a ≡ 1 (mod N), где a – взамно простое с N число; k = 0, 1, 2,...
 つまり、a
Возвращаясьを ϕ(N)乗するまでに、
к рассматриваемому (pслучаю,
− 1)と(q для − любого
1)の最小公倍数 натурального L を周期に、最大公約
числа a, взаим-
но простого с 15, будет верно
数の G 回は、少なくとも「1」が現れることになります。 сравнение:
a 4k ≡ 1 (mod 15).
 なお、オイラーの定理(158 ページ参照)の式(1)により、1 から(N − 1)のすべての整数
Кроме того, заменив функцию φ(N) в показателе степени сравнения (1) (см. стр. 158)
a に対して、
на L, получим, что если N = pq, где p и q – простые числа, то для любого целого числа a
от 1 до (N − 1) верно следующее сравнение:
     a a k L +1 = ⋅                      
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅(2)
kL + 1
≡ aa(mod
(mod N)
N) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ (2)
В рассматриваемом случае
であり、RSA a 4k暗号マジックのトリックになります。
+1
≡ a (mod 15).
В верности данного сравнения можно убедиться с помощью табл. 3.11.
Таблица 3.11. Возведение
表 3.11 2 в степень (a b) по модулю
つの素数の積のオイラー関数の例 ab 15
(N = 3 ×
(для иллюстрации 5,�(15)=
случая × 5,=φ4,G
N = 38,L =8,
( N) = 2)L = 4, G = 2)

a b 1 2 3 4 5 6 7 8
1 1 1 1 1 1 1 1 1
2 2 4 8 1 2 4 8 1
3 3 9 12 6 3 9 12 6
4 4 1 4 1 4 1 4 1
5 5 10 5 10 5 10 5 10
6 6 6 6 6 6 6 6 6
7 7 4 13 1 7 4 13 1
8 8 4 2 1 8 4 2 1
9 9 6 9 6 9 6 9 6
10 10 10 10 10 10 10 10 10
11 11 1 11 1 11 1 11 1
12 12 9 3 6 12 9 3 6
13 13 4 7 1 13 4 7 1
14 14 1 14 1 14 1 14 1
Первый период Второй период
1 周期 1 周期
Закрашенные серым столбцы, соответствующие таким показателям степени
※   部分は式(2)の関係を示す
(b), при которых степень сравнима по модулю с самим числом a, повторяются с
перидом L = 4, что находится в соответствии со сравнением (2). В диапазоне зна-
чений показателей степени от 1 до φ(N) = 8 эти столбцы повторяются G = 2 раза. 161
161
всё нормально!
大丈夫、大丈夫!
как говорится,
「千里の道も一歩から」
дорога в тысячу
オイラーも
ненавижу
миль начинается
их обоих: よ!
フェルマーも с первого шага!
и ферма,
嫌いだ…
и эйлера...
少しずつ
двигаясь
шаг за шагом,
やっていけば
ты сможешь
いいのよ!
понять всё!

да?
そ…そうだな конечно! конечно!
правда?

ой, что
это с ним... オイラー
Эйлер フェルマー
Ферма

успокойся,
あ、見て
посмотри
наあの星座
звёзды.

итак, на этом
мы暗号数学の
закончим
基礎は
изучение
математических
ここまで!
основ
криптографии!

и наконец-то
переходим
次はいよいよ
к примеру
公開鍵暗号
практического
RSA の実際を
использования

見ていきましょう
RSA - шифра
!!
с открытым
ключом!! уфф...

162
162
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
ЧИПСЫ
 3
3-5ー 5 RSA 暗号の仕組み
Устройство шифра RSA
Пиро
со сл жок

ма L E V
соевоадкой

7-E

Се и н о в
Сочный

газ EN
пудинг паст й

ть
АНМ ой
АН

ох, наконец-то
やっと数学から рано
мы покончили
喜ぶのは早いわ!
解放されたな!
с этой радуетесь!
математикой!
数学はまだまだ
математика
出てくるわよ
ещё будет!
поем-ка
я тоже
сладостей -
заряжу мозги!

ほっと
как что?!
хорошо...
したわ

итак, теперь
さてя ЧЕСТНО
RSA 暗号の鍵の
РАССКАЖУ вам
秘密は ключей
тайну
ШИФРА RSA!!

ずばり
ЭТО НЕ ЧТО КАК?!
ИНОЕ, КАК... СЛАДКИЙ
これよ !!
ВОТ ЭТО!!
へっ?
ПИРОЖОК
АН あんまん?
М «АНМАН»?!
АН

3-5 Устройство шифра RSA 163


163
公開鍵の中に 公開鍵:N,e
Открытый ключ: N, e
ВНУТРИ ОТКРЫТОГО
秘密のトリックが
КЛЮЧА ЗАПРЯТАН
仕組まれてるの!
СЕКРЕТ!
(устройство
пирожка «Анман»)
Оболочка
из муки

Начинка:
сладкая
соевая
паста

秘密鍵:d
Секретный
ключ: d

公開鍵暗号は二重構造
Шифр с открытым ключом имеет двухслойное строение.

おれは
но лично я х рю
хрю
どっちかというと
предпочёл бы
пирожок
ブタまんのほうが
со свининой...
好きだな

значит, СЕЙЧАС да. начну


いよいよ
ты наконец-то まず RSA の
с рассказа о том,
RSA 暗号の
расскажешь 暗号化と復号の
как в RSA

仕組みを学ぶのね?
про устройство осуществляется
仕組みを
шифра RSA? шифрование
и 整理しておくわ
расшифрование
информации.

ПОЛНОЕ
ИГНОРИРОВА-
НИЕ...

164
164
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
RSA 暗号の暗号化と復号
Шифрование и расшифрование RSA
Обозначив P открытый текст и C – шифртекст, можно выразить процесс
 平文を P、暗号文を C とすると、暗号化は次のように表されます。
шифрования в виде следующей формулы:

≡ P (mod N).
    C =
e

Таким образом, результат возведения P (открытого текста) в степень e (со-


 つまり、P(平文)を e(公開鍵の
ставляющая открытого 1 つ)乗した値を、N(もう
ключа) делится 1 つの公開鍵)で割った
на N (другая составляющяя открытого
余りが и остатком от этого деления будет C (шифртекст).
ключа),C(暗号文)になり、暗号化できます
Далее, процесс расшифрования можно выразить следующей формулой:
 また、復号は次のように表されます。

≡ C (mod N)
    P =
d
.

ТакимC(暗号文)を
 つまり、 образом, результат возведения CN(公開鍵)
d(秘密鍵)乗した値を (шифртекста)
в степень d (секретный ключ) делится на N (открытый
で割った余りが P(平文)になり、復号できます。ここで
ключ), и остатком от этого деления будет P (открытый
N とは、異なる大きな2つの素数を掛け合わせたものです。
текст). Здесь N – это число, полученное перемножением
двух отличных друг от друга больших простых чисел.

ПОНИМАЕТЕ ЛИ ВЫ
P в этом
を x とする方程式と
Pприняв
最初の式で
ПРИЧИНУ ТОГО, ЧТО
考えれば…… ЗА x....
сравнении
公開鍵の e と N と
ВСКРЫТЬ ШИФР RSA
НЕ УДАСТСЯ,
暗号文 C が知られても
ДАЖЕ ЗНАЯ ОТКРЫТЫЕ ПРЕКРАТИ!
解読されない 聞きたくない!
КЛЮЧИ e, N НЕ ХОЧУ ДАЖЕ
理由はわかる?
и иМЕЯ НА РУКАХ
СЛУШАТЬ!

Шифртекст?

3-5 Устройство шифра RSA 165


165
ведь, зная e, С и N,
x 以外の e と C と N が кстати,
ところで если бы было если N - очень
большое число,
можно было бы известно значение
わかっていて オイラー関数 ϕ(N)が N が非常に
то для разложения
решить сравнение функци эйлера φ(N),
大きい数だと
его на простые
x ex=C
e≡ C (mod
(mod N)
N)の方程式を わかれば
то прочитать множители

解けば暗号文の
и прочитать オイラーの定理から
шифртекст можно 素因数分解に
понадобится

膨大な時間がかかる
очень много
解読が可能よね?
Шифртекст, 計算できちゃうはず!
было бы, используя времени.
не так ли? теорему эйлера! わけだから
другими словами,
безопасность
но для того, 「暗号の安全性=
ϕ(N)を
этого шифра
ところが
чтобы вычислить
素因数分解」
зависит от
функцю φ(N),
割り出すには сложности задачи

нужно разложить
となるわけね
факторизации
N を素因数分解 целых чисел.
число N на простые
しなくちゃ
множители,
ать
いけないでしょ?
не так ли? слуш л ьно!
н и м а те
в

однако если искать x


でも
методом перебора,
いちいち数値を代入して
подставляя значения тиск
を導き出す方法だと
xпо одному, то на это
потребуется так много
膨大な時間がかかるので
времени, что сделать это

実際上は不可能に近いの!
будет практически
невозможно!

このことを「計算量的に
такое свойство называется
«вычислительной
安全な暗号」というのよ
криптостойкостью».

Другими словами, мы приходим


つまり「数学的に解きにくい問題」として
к математически сложной
素因数分解問題に行き着いちゃうわけ!
задаче на факторизацию целых
чисел. именно она делает
だから解読が難しいのよ !!
шифр RSA стойким!!

в шифре с открытым
公開鍵では暗号化鍵と
ключом большое
気の毒に…
БЕДОЛАГА...
внимание уделяется
復号鍵が重要な役割を
ключам

果たすの
шифрования
и расшифрования,
次は鍵の生成法を
поэтому сейчас
мы по порядку
順番に学んで
изучим процесс
генерирования
いきましょう!
ключей RSA!

166
166
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Метод
RSA генерирования ключей RSA
暗号の鍵の生成法

① Выбираем произвольно
① 十分に大きな 2 つの異なる素数 дваp、q
достаточно больших простых числа p и q.
を任意に選びます。

Произведение p × q, другими словами, N,


p × q が N つまり公開鍵の 1 つに
будет одной из составляющих открытого
ключа. なります。

② Вычисляем значение
② オイラー関数 ϕ(pq)=(pфункции
- 1) Эйлера
(q - φ(pq) = (p − 1) (q − 1).
1)を求めておきます。

③ – это ещё одна подготовительная операция


для генерирования③は公開鍵を作るためのもう1つ
открытого ключа.
の準備作業です。


③ (Находим число
p - 1)と(q -L1)の最小公倍数
– наименьшееLобщее кратное чисел
を計算します。
(p − 1) и (q − 1).

После вычисления функции Эйлера числа p и q


オイラー関数を求めたら
もう p と q は不必要よ!
нам уже не понадобятся! Их лучше уничтожить,
他人に知られないように
чтобы кто-нибудь их случайно не узнал.
破棄していいのよ

④ Выбираем произвольно положительное целое число e, так чтобы оно


④ ( p - 1)と(q - 1)の最小公倍数 L と互いに素で、それより小さい任意の
было немного меньше L и являлось взаимно простым с L.
 正整数 e を選びます。

В случае если P e ≤ N, открытый текст


ee–がもう
это один1 из
つの открытых P e ≦ N だと、モジュロ演算を介
преобразуется в шифртекст, минуя
公開鍵よ! することなく、P = C となり、
e
ключей! Выберите его вычисления по модулю:
ただし
так, PP
чтобы
e

e N になる
> N!! 演算によるスクランブル化が行
e
P = C, что сделает невозможным
われなくなってしまいます。
ように e を選んでね !! шифрование путём вычислений.

⑤ Выбираем произвольно
⑤ 任意の正整数 положительное dцелое
e に対して、次式を満たす正整数 число d так, чтобы оно
を求めます。
удовлетворяло следующему сравнению.
    ed = 1(mod
ed ≡ 1 (mod L). L)
Это число
 ただし d は、ϕ(N) d, мыより小さく、p
выбираем его
およびтак,qчтобы оно было меньше φ(N),
よりも大きいものにします。
но больше чисел p и q.

3-5 Устройство шифра RSA 167


167
ясно! d является
モジュロ
обратным に関して
L числом
d は e の乗算に対する
(обратным элементом)
к числу e относительно
逆数(逆元)に
операции умножения
по модулю L.
あたるわ другими словами,
つまり復号鍵 dを
нужно найти ключ
暗号化鍵 d,
e のペアとして
расшифрования

求めるために
составляющий пару с
ключом
必要なものよ!
шифрования e!

 次に暗号化鍵 e とペアの関係になる復号鍵
Теперь давайте d を求めてみましょう。
найдём ключ расшифрования d, образующий пару с ключом
 ed = 1(mode.L)なので、
шифрования ed − 1L)=следует,
Из ed ≡ 1 (mod 0(mod что ed −L),
ed − 1 ≡ 0 (mod
L)です。つまり 1は L の倍数なので、
другими словами,
что
  число (ed − 1) кратно числу L.
     ed − 1 = kL         ※ k は非負整数
ed − 1 = kL, где k – неотрицательное целое число.

であり,次式が成り立ちます。
Следовательно,

ed = kL + =
     ed 1, где
kL +k –1         ※
неотрицательное целое число.
k は非負整数

Следовательно, согласно сравнению (2), приведённому в рассказе о функции


 よって、
Эйлера オイラー関数の項(160
(см. стр. 161), для любогоページ参照)で説明した式(2)より、
натурального числа P от 1 до (N − 11)から(N − 1)
верно сле-
までのすべての自然数
дующее сравнение. P(平文に相当)に対して、次式が成り立ちます。

P ed = P kLed+ 1 ≡ PkL(mod N).


     P = P = P(mod N)
+1

Это сравнение позволяет нам понять, что при возведении шифртекста C


 これによって、暗号文
(= C(= P e)をвосстановление
P e) в степень d (P ed) произойдёт d 乗した P ed は、平文 P に復号されることがわか
открытого текста из шифртек-
ста
ります。(то есть расшифрование).

значит,
秘密鍵 dと
секретный
теперь давайте
ではここで
公開鍵
ключe d
はи потренируемся
公開鍵と秘密鍵を
в генерировании
一対になって
открытый
作る練習をしてи
ключ e
открытого
いるのね!
составляют
секретного
みましょ!
ключей!
пару!

168
168
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Генерирование
公開鍵と秘密鍵の作り方 открытого и секретного ключей
 いま、2 つの素数をそれぞれ p = 5,q = 11 とするとき、公開鍵 N と秘密鍵 d を求め
Здесь мы попробуем найти открытый ключ N и секретный ключ d для двух про-
てみます。
стых чисел p = 5 и q = 11.

ステップ
Шаг 11  
 p と q の積を N とします。
Число N равно произведению чисел p и q.

    N = pq = 5 × 11 = 55

Шаг 22 
ステップ
 N のオイラー関数 ϕ(N)を求めます。
Вычисляем значение функции Эйлера φ(N) для найденного N.

    ϕ(55)=(5 − 1)×(11 − 1)= 4 × 10 = 40

ステップ
Шаг 33 
 ( p - 1)と(q - 1)の最小公倍数を求めます。4 と 10 の最小公倍数なので、L = 20
Находим наименьшее общее кратное L чисел (p − 1) и (q − 1).
です。
Наименьшее общее кратное чисел 4 и 10: L = 20.

ステップ
Шаг 44 
 最小公倍数 L と互いに素となる自然数
Выбираем e を求めます。L
натуральное число e от = 20чтобы
1 до (L − 1) так, と互いに素である自然数
оно было взаимно
e
простым с наименьшим общим кратным L. Для L = 20 это может быть одно из сле-
となりうるのは、{ 1,3,7,9,11,13,17,19 } の 8 個です。
дующих восьми чисел: {1, 3, 7, 9, 11, 13, 17, 19}.

Шаг
ステップ55 
Находимe に対する逆元
 暗号化鍵 обратный элемент d к ключу шифрования e, другими словами, ключ
d、すなわち復号鍵を求めます。
расшифрования d. Подумаем над тем, каким будет обратный элемент к e = 17 отно-
 mod 20 の演算で、例えば e = 17 の乗算に対する逆元 d を考えます。
сительно операции умножения по модулю 20.

Необходимым
    ed = kL +и1(
достаточным = 20k + 1сравнения ed = 1 (mod 20)
условием верности
mod 20)なので、17d
является выполнение равенства ed = 20k + 1, где k – неотрицательное целое число.
これを変形すると、
Решая уравнение относительно d, получим:

(20k + 1)
d=
17
Так как правая часть уравнения является целым числом, нужно подобрать
 右辺は整数なので、20k
такое k, чтобы число (20k+ 1が
+ 1) 17 の倍数になるものをさがしていくと、k
было が 11k,のとき、
кратно 17. Последовательно перебирая

3-5 Устройство шифра RSA 169


169
обнаруживаем,
20k + 1 = 221что k = 11 числитель дроби (20k + 1) равен числу 221, которое
приの倍数になっていることがわかります。つまり、
で、17
делится на 17 без остатка. Другими словами,

221 = 20 × 11 + 1 = 17 × 13 であることから、
17 × 13 =
≡ 1(mod 20)

Таким образом, мы получили d = 13.=Итак,


となる関係を導きだすことができ、d в результате вышеприведённых вычисле-
13 となります。
ний мы получили следующие ключи.
 以上の結果から、次のように鍵が計算されます。
Открытый ключ (N = 55, e = 17) ← Ключ шифрования
     公開鍵(N
Закрытый = 55,e = 17)
ключ (d = 13)  ←暗号化鍵
← Ключ расшифрования
     秘密鍵(d = 13)  ←復号鍵
Подобрав числа d для всех возможных чисел e, полученных на шаге 4, можно
получить следующие пары чисел, удовлетворяющих уравнению ed = 20k + 1, где k –
 なお、 ステップ
неотрицательное 4 で得られた残りの
целое число: e に対する d は、

     (e = 1,d = 1)、(e = 3,d = 7)、(e = 7,d = 3)、(e = 9,d = 9)、


     (e = 11,d = 11)、(e = 17,d = 13)、(e = 19,d = 19)

Учитывая то, что в качестве


となります。いずれの組も、ed = ключей
20k + 1 рас-
にな 拡張ユークリッド互除法を
используя расширенный
шифрования и шифрования обычно выби- 用いるとевклида,
e の逆元…можно
っています。
рают отличные друг от друга целые числа
алгоритм
つまり秘密鍵
эффективно d が обратный
найти
≠ d), а также то, что в качестве ключа
(e  一般的には暗号化鍵と復号鍵が異なる整数で элемент к e, то есть
効率よく求められるわよ
шифрования e желательно выбирать как
あること(e ≠ d)、暗号化鍵 e としてできるだけ
d.
ключ расшифрования
можно большее целое число, здесь мы будем (183 ページ参照)
大きな整数を選ぶことが望ましいので、e
использовать пару e = 17, d = 13. = 17,
d = 13 とするのが適しています。

では
хорошо.
ねえねえ
Послушайте!
まとめとして
теперь, когда начиная со
鍵も暗号化鍵と следующей страницы
у нас есть пара 次のページから
復号鍵のペアが
ключей, давайте
я БУДУ ОБЪЯСНЯТЬ

そろったことだし RSA の暗号化と復号を


шифрование и
попробуем расшифрование
実際に暗号を
что-нибудь 紹介するわ!
RSA НА КОНКРЕТНОМ
作りましょうよ!
зашифровать! ПРИМЕРЕ!

170
170
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Генерирование
RSA 暗号文の生成 шифртекста RSA
Прежде всего я объясню порядок генерирования шифртекста с помощью открытого
ключа まず、RSA
RSA. 暗号の公開鍵を用いて、暗号文を生成する処理手順を説明します。
 具体例として、鍵の例で作った暗号化鍵
В этом e=
примере мы будем зашифровывать 17 により、アルファベット
открытый 文字からなる平文
текст, состоящий4из 4 букв англий-
ского алфавита (GOLF), используя ключ шифрования e = 17, сгенерированный в предущем
(GOLF)を暗号化していきます。
примере.
表 3.12 文字コード表
Таблица 3.12. Таблица кодов символов

文字 Коды
Буквы コード 文字 Коды
Буквы コード 文字 Коды
Буквы コード
ステップ
Шаг 11
a 0 s 18 K 36
Прежде всего назначим буквам открытого текста
 まず、表の文字コード表をもとに、整数を割 b 1 t 19 L 37
целые числа, используя таблицу кодов символов. c 2 u 20 M 38
り当てます。 d 3 v 21 N 39
e 4 w 22 O 40
G O L F f 5 x 23 P 41
↓ ↓ ↓ ↓ g 6 y 24 Q 42
32 40 37 31 h 7 z 25 R 43
i 8 A 26 S 44
j 9 B 27 T 45
Шаг 22
ステップ k 10 C 28 U 46
Преобразуем целые 2числа в 6-битные двоичные l 11 D 29 V 47
 整数を 6 ビットの 進数データに変換します。 m 12 E 30 W 48
строки.
n 13 F 31 X 49
32 40 37 31 o 14 G 32 Y 50
↓ ↓ ↓ ↓ p 15 H 33 Z 51
100000 101000 100101 011111 q 16 I 34 ⋮ ⋮
r 17 J 35 空白
Пробел 63

Шаг 33
ステップ
 2 進数データを、
Представим (N -
двоичные в виде неотрицательных целых чисел,=не
1)以下の非負整数で表します。この例では、N
данные で、N - 1 =
55 превышающих
число 55
(N-− 11). Так как в нашем примере N = 55, (N − 1)
= 54 となるので、5 ビットごとに区切ることにします。つまり、5 ビットで表せる最大 = 54, мы перегруппируем данные в
5-битные строки: это позволит представить данные в виде целых чисел от 0 до 31, что удов-
値は 31
летворяет で、54 以下となり、条件を満たします。もちろん、3
вышеуказанному ビットでも
условию. Разумеется, ничто не запрещает 4 ビットでもよいので
разделить данные и на
4-битные, и на 3-битные строки, но чем будет больше длина двоичной строки, тем более эф-
すが、区切るビット数が大きいほど暗号化効率がよくなるという性質があります。
фективен будет процесс шифрования.
 
    1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 を追加
(Добавляем)
  
    1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0
   (最後の 0ноль
(Последний は 5 ビットに区切ったときに不足したビットです。
является битом-заполнителем последней ここでは便宜上 0 とします。)
5-битной строки,
в которой после перегруппировки не хватало одного бита.)
Шаг 44
ステップ
 2 進数データを
Преобразуем 10 進数に直します。
двоичные данные в десятичные числа.
10000 01010 00100 10101 11110
↓ ↓ ↓ ↓ ↓
16 10 4 21 30

3-5 Устройство шифра RSA 171


171
ステップ55
Шаг
 暗号化鍵(N = 55,e
Зашифровываем = 17)を用いて、暗号化を行います。具体的には、10
десятичные данные, используя ключ шифрования (N 進数のデータを
= 55, e = 17): нахо-
дим остатки от деления на 55 результатов
17 乗して 55 で割ったときの余りを求めます。したがって、 возведения десятичных данных в степень 17, други-
ми словами, мы должны вычислить следующие степени по модулю 55.

     1617(mod 55), 1017(mod 55), 417(mod 55), 2117(mod 55), 3017(mod 55)

Покажем здесь подробно процесс возведения десятичного числа 16 в степень 17 по модулю


55. を計算することにより、暗号データが得られることになります。例えば
Так как верны следующие сравнения: 16 に対しては、

     162 = 256 =
≡ 36(mod 55)   36 = 1296 =
2
≡ 31(mod 55)
     312 = 961 =
≡ 26(mod 55)   26 = 676 =
2
≡ 16(mod 55)

последовательно применяя их, мы получим следующее.


となるので、これらの関係式を順に適用して、

     1617 = 162 × 162 × 162 × 162 × 162 × 162 × 162 × 162 × 16


≡ 36 × 36 × 36 × 36 × 36 × 36 × 36 × 36 × 16 (mod 55)
       =
       = 362 × 362 × 362 × 362 × 16
≡ 31 × 31 × 31 × 31 × 16 (mod 55)
       =
       = 312 × 312 × 16
≡ 26 × 26 × 16 (mod 55)
       =
       = 262 × 16
≡ 16 × 16 (mod 55)
       =
≡ 36 (mod 55).
       =

Шифрование остальных десятичных данных производится аналогичным образом, по-


 残りの暗号化も同様に行います(結果だけを記します)
этому 。
здесь мы приведём только результаты вычислений.

     1017(mod 55)=
≡ 10   4 (mod 55)=
17
≡ 49
     2117(mod 55)=
≡ 21  30 (mod 55)=
17
≡ 35

Итак, мы сгенерировали шифртекст, который в виде десятчных чисел выражается следую-


 よって暗号文は、
щим образом.

 36 10 49 21 35                        (3)

Рассматривая (3) как последовательность кодов символов, назначим десятичным числам


と 10 進数で表されます。式(3)を文字コードとみなして、表 3.12 より文字を割り当てると、
буквы по табл. 3.12.

172
172
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
     
36 10 49 21 35
↓ ↓ ↓ ↓ ↓
K k X v J

Теперь шифртекст RSA готов.


となる暗号文ができあがります。

Расшифрование
RSA 暗号文の復号 RSA
Теперь я объясню порядок преобразования шифртекста в открытый текст с помощью се-
 今度は、RSA
кретного 暗号の秘密鍵を用いて、暗号文を平文に復号する処理手順を説明します。
ключа RSA.
 具体例として、秘密鍵である復号鍵(d
В этом примере = 13)を使って、10
будет продемонстрирован 進数の暗号データ(式(3)
процесс расшифрования десятичных )を、
зашиф-
рованных данных (3) до преобразования в открытый текст, состоящий из букв алфавита, с
アルファベットの平文に復号するまでを以下に示します。
помощью секретного ключа расшифрования (d = 13).

Шаг
ステップ11
 復号鍵(d
Используя =
ключ C d(mod
расшифрования
13)を用いて、 (dN)を計算します。具体的には、 式(3)の
= 13), вычисляем C d (mod N): находим 進数のデー
10остатки от де-
ления
タをна
1355 результатов
乗して возведения десятичных данных (3) в степень 13, другими словами,
55 で割ったときの余りを求めて、平文データにします。したがって、
мы должны вычислить следующие степени по модулю 55:

     3613(mod 55),1013(mod 55),4913(mod 55),2113(mod 55),3513(mod 55)

Вычисления проводятся по тому же алгоритму, как на шаге 5 генерирования шифртек-


を計算することにより、平文データが得られることになります。例えば 36 に対しては、暗号文
ста. Например, число 36 возводится в 13-ю степень по модулю 55 следующим образом:
の生成ステップ 5 で利用した式を適用することにより、

     3613 = 362 × 362 × 362 × 362 × 362 × 362 × 36


≡ 31 × 31 × 31 × 31 × 31 × 31 × 36 (mod 55)
       =
≡ 26 × 26 × 26 × 36 (mod 55)
       =
       = 262 × 26
36 × 36
≡ 16 × 26 × 36 (mod 55)
       =
       = 14976(mod 55)
≡ 16 (mod 55).
       =

Расшифрование остальных зашифрованных данных {10, 49, 21, 35} производится ана-
 残りの暗号データ{10,
логичным 49,
образом, поэтому мы приведём 同様の計算を行います(結果だけを記します)
21,35}についても、
здесь только результаты вычислений. 。

     1013(mod 55)=
≡ 10  4913(mod 55)=
≡4
     2113(mod 55)=
≡ 21  3513(mod 55)=
≡ 30

3-5 Устройство шифра RSA 173


173
Следовательно, данные открытого текста в виде десятичных чисел записываются
 よって、平文データは
следующим образом: 10 進数で次のようになります。

 16 10 4 21 30

Шаг 22
ステップ
 平文データとして得られた 進数を 5 ビット
10 десятичные
Преобразуем полученные 2 進数に直します。
данные открытого текста в 5-битные двоич-
ные числа.
16 10 4 21 30
↓ ↓ ↓ ↓ ↓
10000 01010 00100 10101 11110

Шаг 33
ステップ
 表の文字コードに対応づけるため、2
Для того чтобы воспользоваться進数データを 6 ビットごとに区切り直します。
таблицей кодов символов, перегруппируем дво-
ичные данные в 6-битные строки.
     1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0
  0 を削除
(Отбрасываем)
     1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1
 (最後の
(Последний は 6 ビットに区切ったときの過剰なビットなので、削除します。
0 0является битом-заполнителем, добавленным во время )
перегруппировки в 5-битные строки, поэтому отбрасываем его.)

ステップ
Шаг 44
 6 ビットの 2 進数データを整数に変換します。
Преобразуем 6-битные двоичные строки в целые числа.

100000 101000 100101 011111


↓ ↓ ↓ ↓
32 40 37 31

なぜа почему
зашифровано
ゴルフを暗号に
именно
ステップ
Шаг 55 したんだ?
слово GOLF?

 表の文字コード表をもとに、整数データを文字に置き換えます。
Используя таблицу кодов символов, заменяем цело-
численные данные буквами.
32 40 37 31
↓ ↓ ↓ ↓
G O L F 著者の先生の
наверное,
авторы этой
Итак, расшифрование завершено. 趣味なのよ…
манги - любители
たぶん
 こうして、復号は完成しました。 гольфа...

174
174
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
 3
3-6 ーс открытым
Шифр 6 公開鍵暗号と離散対数問題
ключом и задача дискретного логарифмирования

КСТАТИ, В ШИФРАХ
ところで公開鍵暗号って
С ОТКРЫТЫМ КЛЮЧОМ
暗号のこと
RSAну что,
のように
RSAВЕДЬ ИСПОЛЬЗУЮТ
поняли про
理解できた?
шифр RSA?
НЕ ТОЛЬКО ЗАДАЧУ
ФАКТОРИЗАЦИИ
素因数分解問題
ЦЕЛЫХ ЧИСЕЛ,
КАК В rsa?
だけじゃないわよね?
ты говорила про
他にもあるの?
другую задачу...

は…はは
ХА-ХА-ХА...
もちろんだとも…
РАЗУМЕЕТСЯ...

правда,
нет, не только. ほんとよ!
そうね я простыми
давайте 簡単?
правда? правда!
простыми
離散対数問題を
словами расскажу うそじゃないだろな!
словами?
для начала
まずは
ознакомься
根拠にした
вам о шифре
次の解説を
㋓ ㋸Эль-гамаля,
ガ ㋮ ㋸ с теоретическими
ElGamal 暗号についても
основанном а 読んで
основами
а м е- то
簡単に説明するわ
на задаче а с а ки ы е этого шифра...
н
е к ят
дискретного уж пон о ва т. . .
е е
暗号のもとになる
прочитай
логарифмирования. н сл ьзу
п ол 理論を学んでね!
вот это
ис описание!

ск
р
ск р

3-6 Шифр с открытым ключом и задачадискретного логарифмирования 175


175
離散対数問題
Задача дискретного логарифмирования
Взгляните
 モジュロ ещё раз на таблицу степеней
7 のべき乗の表を、もう一度見てく 表 3.13 モジュロ
Таблица 7 の a((a
3.13. Степени
b
a b) の 乗)
поb модулю 7
по модулю 7.
ださい。 В строке, соответствующей основанию a b 1 2 3 4 5 6
3, содержатся все значения от 1から
 3 をべき乗している行では、1 до 66без
までのпо-
вторений. 1 1 1 1 1 1 1
数値が重複なく
Множество 1 回ずつ現れています。
результатов арифметиче-
ских операций по модулю 7 представляет
 素数 7 のモジュロ演算の結果は有限体で、要 2 2 4 1 2 4 1
собой конечное поле, состоящее из следую-
素は、
щих элементов: 3 3 2 6 4 5 1

    { 0,1,2,3,4,5,6 } 4 4 2 1 4 2 1

5 5 4 6 2 3 1
аですが、3
с помощью степеней числа
のべき乗は、0 3 можно выра-
以外のすべての要素を
зить все эти элементы, за исключением 0. 6 6 1 6 1 6 1
表すことが可能だということになります。
Число 表 3.12
3, выражающее все числа в табл. 3.13
の a = 3 のように、1 から 6 までの数値が重複
от 1 до 6 по одному разу, называется перво-
образным корнем по модулю 7.
なく 1 回ずつ現れる性質を有する数のことを原始根といいます。
 素数Для pлюбого модуля p, являющегося простым числом, обязательно
をモジュロにとると、必ず原始根が存在し、その個数は существуют
ϕ(p − 1)です。モジュ
φ(p − 1) первообразных корней. Например, для простого модуля 7 существуют два
ロ 7 の場合は、 корня.
первообразных

    ϕ(7 − 1)= ϕ(6)= ϕ(2 × 3)=(2 − 1)×(3 − 1)= 2

Таким образом, кроме числа 3, для модуля 7 должен суще-


で、2 個です。すると、3
ствовать 以外に、もう 1 つ原始根となる数
ещё один первообразный корень. Изучив
табл. 3.13, можно увидеть,
値があるはずです。表 что первообразным
3.12 を見てみると、5 корнем яв-
も原始根であ
ляется также число 5. Обозначив p – простой модуль, α –
ることが確かめられます。素数 p をモジュロにとり、原始根
первообразный корень по модулю p, произвольный эле-
мент Z i конечного поля можно выразить
をαとすると、モジュロ演算の任意の要素 следующим
Zi は、次式で表
сравнением:
せます。
αk ≡ Zi(mod p), где k ≤ p−1 – неотрицательное целое число.
    α того, = Zi(mod p)k 
k
Кроме показатель степени первообразного корня α
                ※ k は非負整数、ただし k ≦ p − 1
можно выразить следующим сравнением:

k ≡ log α Zi(mod p).


 また、原始根αのべき指数 k は次式で表されます。

    k = logα Zi(mod p)

176
176
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
 このとき、k をαを底とする離散対数と呼びます。
В этом случае число k называют дискретным логарифмом по основанию α.
Пусть вас не
 ここで、log смущает такой математический термин, как логарифм, так как
という記号を難しく考える必要はありません。
здесь всё очень просто. Например, такое выражение, как 23, имеет точно такой же
例えば、2 3
= 8 という式は、
смысл, как все нижеприведённые выражения.

    3 = 3 log2 2 = log2 23 = log2 8

とまったく同じ意味です。
Ведь, например, фразу «2 в степени 3 равно 8» можно выразить и так: «Чтобы
получить 8, надо 3 раза умножить 2 само на себя».
「2 を 3 乗すると 8 になる」の表現を言い換えれば、「8 にするために、2 を掛け合わせ
Как упоминалось на стр. 118, используя следующее сравнение
る回数は 3 回だ」になるということです。
α ≡ Zi(mod p),
k
 118 ページでも説明したように、

легко найти Zi по известным α, k и p, однако


     α = Zлогарифм
i(mod p)k по известным
k
найти дискретный
α, Zi и p – чрезвычайно сложная задача. Это
и называется задачей дискретного логариф-
において、αと k と p がわかっていて、Zi を求
мирования.
y y==log
log α xx
めるのは難しくありませんが、αと Zi と p がわ означает
α

x =α y

y = α x! !!
かっていても、離散対数の k を求めるのは大変
難しいというのが、離散対数問題です。

итак, теперь я
Ну что,
では つづいて
説明は理解 расскажу вам про
поняли моё 離散対数問題を利用する
шифр эль-гамаля -
できたかな?
объяснение?
は…はは
ха-ха-ха. 暗号アルゴリズムの
алгоритм шифрования,

ElGamal 暗号を
в котором используется
задача дискретного
説明するわ!
логарифмирования!

ну же,
успокойся!

к,
ы к
хн ны
х

3-6 Шифр с открытым ключом и задачадискретного логарифмирования 177


177
Шифрование
ElGamal и расшифрование Эль-Гамаля
暗号の暗号化と復号

 暗号の送信者を「ルカ」とし、受信者を
Пусть отправителем шифртекста будет аランって
кто такая
Рика, а получателем – Лана. лана?
だれだ?
「ラン」としましょう。

① Получатель Лана выбирает


① 受信者ランは、大きい素数 q と большое
простое число q
 その原始根αを用意します。
и первообразный корень α.

это официантка
ラーメン屋の女の子!
из кафе «заяц»!
友達になったのよ
мы с ней
подружились!

② を決め、 секретный ключ d


Получатель Лана произвольноd выбирает
② 受信者ランは、ランダムに秘密鍵
и публикует три числа: g, α и q, являющиеся решением сравнения

g ≡ α gd (mod q), q)
=α (mod
d

を計算し、g とαと
в качестве q を公開鍵として公開します。
открытого ключа.

сегодня
выберу
этот!

③ Отправитель Рика выбирает случайное число r и вычисляет


③ 送信者ルカは、乱数 C1 ≡ αrrを選んで、C
(mod q). 1 =α(mod q)を計算します。
r

 さらに、平文 に対して、Cоткрытый
Кроме того,Pиспользуя 2 = P × g (mod P, она вычисляет также и
текстq)を計算します。
r

C2 ≡ P × g (mod q).
r

178
178
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
④ Отправитель Рика
④ 送信者ルカは、C отправляет C1 и C2 получателю Лане.
1 と C2 をランに送信します。

秘密鍵
Секретный
d ключ: d
Открытый
公開鍵 g,α,q ключ:
g, α и q
Кафе «Заяц »

C1,C2

⑤ Используя секретный ключ d, получатель Лана расшифровывает


⑤ 受信者ランは秘密鍵 d を使い、次の式を計算して復号します。
шифртекст путём вычисления следующего сравнения:
C2
P = 
≡  (mod q)
C1d

=(α
(α r)d)==α(α
r d d)
= (α=α
d r rd =g
) = g r, よね!
d r d r r
C
C11 = точно! должен
ほんとだ!
ということは
не так ли! А значит, получиться
ちゃんと
C2 P×g r
открытый
   =   r = P  平文 P になるわ!
C1 d
g текст P!

つまり P に復号される
другими словами,
ура!
восстанавливается
というわけ
открытый текст P.

3-6 Шифр с открытым ключом и задачадискретного логарифмирования 179


179
протокол
DiffeーHellman 鍵共有法
общего ключа не
диффи-хеллмана тиск спать!
というのも
похож на
この ElGamal 暗号と
щифр эль-гамаля.
似た仕組みよ

① Рика и Лана совместно обладают большим простым числом p и


первообразным大きな素数
① ルカとランは、 p と原始根αを、
корнем α, 秘密にすることなく共有します。
которые не являются секретными.

② Рика выбирает случайное число c и, сохраняя его в секрете,


② ルカはランダムな数 c を選んで秘密にし、α
отправляет Лане результат вычисления α(mod
c c
(mod p).
p)をランに送ります。
Лана выбирает
 一方、 случайное
ランはランダムな数 число d и, сохраняя
d を選んで秘密にし、 α(mod
d егоp)
вをルカに送ります。
секрете,
отправляет Рике результат вычисления α d (mod p).

③ Рика, используя свой секретный ключ c, получает


③ ルカは秘密鍵 から、(αp). )=α (mod p)という鍵を得ます。ランは秘密
d c cd
ключ (α d)c ≡ α cd c(mod
Лана,から、
鍵 d используя
(α )=α
c d
свой секретный
(mod
cd
ключ d, получает
p)という鍵を得ます。
ключ (α )
c d
≡ α (mod p).
cd
 ふたりは、鍵を共有できました。
Теперь у обеих девушек есть общий ключ.

おお ого!
да это
これは
просто!
わかりやすい! да.
иそのうえ
криптостой-
強度も高いのよ
кость высокая.

180
180
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Шифр эль-гамаля
в улучшенном виде
используется и в
алгоритме цифровой
подписи DSA,
И В БОЛЕЕ СТОЙКОЙ
КАЯ
ВЫСО О­
КРИПТОСИСТЕМЕ
НА ЭЛЛИПТИЧЕСКИХ
КРИПТ СТЬ КРИВЫХ!
О
СТОЙК
ЦИФРОВАЯ ПОДПИСЬ? ПРО ЭТО ТРЕНЬ
ЭТО ТЕХНОЛОГИЯ, МЫ ПОГОВОРИМ
ИСПОЛЬЗУЕМАЯ ДЛЯ В ГЛАВЕ 4!
АУТЕНТИФИКАЦИИ?

ОЙ, мне
Е-МеЙЛ
ПРИШЁЛ.

ДАВАЙТЕ Отправитель: Удзуки Лана


ПРОЧИТАЕМ! Получатель: Рика
Тема: До свиданья!
Сегодня ты опять преподавала? Я ушла
с работы и нахожусь за границей!
Сейчас я скучаю по тебе.
Но фантастически ты знаешь шифры!
Более того, ты любишь математику!
Но я рассказывать хорошо не умею.
Работа - это для меня самое главное.
Дружба - это для меня тоже очень важ-
но.
Жалею, что мы не поговорили по душам.
Я, конечно, когда-нибудь приеду опять.
Когда тебе будет скучно, напиши!
Криптография - очень полезная наука!
Я ещё напишу!

3-6 Шифр с открытым ключом и задачадискретного логарифмирования 181


せっかくの友だちが…
твоя подруга...
………
寂しいわね
как грустно....

и мне тоже приходи, мы


おれも寂しいぞ
грустно! тебе место
そうしましょ!
пойдём! займём!
でもそれより
но важней
то, что я
腹へった!
проголодался!

пойдём
ラーメン
есть
食べにいこ!
лапшу
рамэн!

みなさん
дорогие читатели,
вы тоже, наверное,
もうわかったわよね
уже догадались?! !?
стук

182
182
   第 3 章Глава 3. шифр с открытым ключом
公開鍵暗号化技術
Дополнительная информация
          
コラム  拡張ユークリッド互除法
Расширенный алгоритм Евклида
Алгоритм Евклида – это метод нахождения наибольшего общего делителя
 ユークリッドの互除法は、2
(НОД) つの自然数の最大公約数を導き出すアルゴリズムです。素
двух натуральных чисел, являющийся более эффективным, чем алгоритмы
факторизации целых чисел. Алгоритм Евклида прост и надёжен: чтобы найти НОД
因数分解に比べて効率よく計算できます。互除法で 2 つの自然数 a,b(a > b)の最大公
двух натуральных чисел a и b (a > b), достаточно выполнять вычисления в следую-
約数を見つけるには、次の手続きを用います。
щем порядке.

 ① a を b で割り、余りを
① Поделив r とする。
a на b, находим остаток r.
 ② r = 0rの場合は、最大公約数は
② Если であり、手続きは終わりになる。
= 0, то НОД = b (поискbзавершён).
③ Если
 ③ r r ≠0, то возвращается
≠ 0 の場合は、a と b の組を кb шагу ①, приняв a = b и b = r.
と r に置き換えて、最初の手続きにもどる。

Таким образом, наибольшим общим делителем будет


 つまり、この①から③の手続きを繰り返して、余りが делитель без остатка, по-
0 になったときに割った数が、最
лученный при выполнении вышеуказанного алгоритма, или, другими словами, по-
大公約数となるわけです。
следний 言い換えれば、余り 0 を得たときの直前のステップで得た余りが、
ненулевой остаток.
最大公約数ということになります。алгоритм Евклида, попробуем найти НОД, напри-
Используя вышеописанный
мер, чисел 1365 и 77.
 例として、1365 と 77 の最大公約数をユークリッドの互除法で求めてみましょう。

     1365
(a) (b) = 17 × 77 + 56
(r) (← 1365
(a) ÷ 77 =
(b)17 余り
(r) 56 の計算による)
     77
1365 ÷ 77 = 1 ×(ост.
= 17 56 +56)
21 → (← 77
1365÷=5617=×177
余り 21 の計算による)
+ 56
     56
77 ÷ 56 =
= 21×(ост.
21 +21)
14 → (← 5677÷=211=×256余り
+ 2114 の計算による)
     21
56 ÷ 21 =
= 12 ×(ост.
14 +14)
7 → (← 2156÷=142=×121余り
+ 147 の計算による)
21 ÷ 14 =
     14 = 21 ×(ост.
7 + 07) → (← 1421÷=7 =
1 ×2 14
余り + 07の計算による)
14 ÷ 7 = 2 (ост. 0) → 14 = 2 × 7 + 0
となり、最大公約数は 7 となります。手順どおりに進めていけば確実に結果が出るので、
Таким образом, наибольший общий делитель чисел 1365 и 77 равен 7.
互除法の有用性が実感できることと思います。

●一次不定方程式の解の計算●
Нахождение решения неопределённого уравнения
Теперь попробуем использовать алгоритм Евклида для поиска наибольшего
 次に、互いに素な
общего делителя двух と 17 で、互除法を用いて最大公約数を求めてみます。
20 взаимно простых чисел, например 20 и 17.

     20 = 1 × 17 + 3                       (1)
     17 = 5 × 3 + 2                        (2)
     3 = 1 × 2 + 1                        (3)
     2 = 2 × 1 + 0
НОД оказался равным 1, о чём мы знали и так, поэтому может показаться, что
 最大公約数は、当然ながら
в использовании алгоритма1 なので、互除法を使う必要がないように感じられることで
Евклида здесь нет никакой необходимости, однако в
действительности из формул промежуточных вычислений по этому алгоритму
しょう。しかし、その結果を求める過程の式に、大きな利用価値があるのです。
можно извечь большую практическую пользу.

Расширенный алгоритм Евклида 183


183
Перенося члены тождеств (1), (2) и (3), преобразуем их к следующему виду.
 まず式(1)、(2)、(3)を移項して、次の 3 つの式を得ます。
    
20 - 1 × 17 = 3           (4)
     17 - 5 × 3 = 2               (5)
     3 - 1 × 2 = 1           (6)
Теперь подставляем левую часть тождества (5) вместо 2 тождества (6)
и 次に、式(6)の 2 に式(5)を代入して、3
группируем члены по множителям 3 и 17.と 17 に注目してくくります。
     3 - 1 × 2 = 3 - 1 ×(17 - 5 × 3)= 6 × 3 - 1 × 17 = 1      (7)
Теперь подставляем левую часть тождества (4) вместо 3 тождества (7)
и さらに、式(7)の に式(4)を代入し、20
группируем члены3по множителям 17 и 20.と 17 に注目してくくります。

6 × 3 - 1 × 17 = 6 ×(20 - 1 × 17)- 1 × 17 = 6 × 20 - 7 × 17 = 1
     
Перепишем результат этих преобразований следующим образом:
 この一連の手続きから得た結果を、次のように書き換えます。
 
     20 × 6 + 17 ×(- 7)= 1
Вышеприведённое тождество по форме соответствует уравнению ax + by = c,
в 上の式は、ax +x,byy =
котором a, b, c, c という形になっていて、a,b,c,x,y
– целые числа. Уравнения подобного вида にあたる数はすべて整数で
с неизвестными
xす。このような形の方程式は一次不定方程式といい、整数解の
и y называются неопределёнными уравнениями первогоxпорядка. と y を求めるものです。
Другими словами, используя формулы промежуточных вычислений по алго-
 つまり、ユークリッド互除法の計算過程を利用することで、a
ритму Евлкида, мы нашли целочисленное решение неопределённого = 20,b = 17 уравнения
のとき、一
первого порядка для a = 20 и b = 17 – пару
次不定方程式の整数解(x,y)=(6,- чисел (x, y) = (6, −7). Этот метод, называ-
7)が得られるということが示されているのです。
емый расширенным алгоритом Евклида, имеет очень большую практическую цен-
この方法が拡張ユークリッドの互除法で、非常に利用価値の高いアルゴリズムです。
ность.
 一般に a と b をслучая,
Для общего 0 でない整数とし、a
когда a и b –と の最大公約数を
неbравные c とすると、一次不定方程式
нулю целые числа, c – их наиболь-
ший общий делитель, уравнение
     ax + by = c
ax + by = c
は、整数解(x1,y1)を持ち、解の 1 組は、拡張ユークリッドの互除法を用いて求めるこ
имеет целочисленное решение (x1, y1), которое может быть найдено с использова-
とができます。ただし一次不定方程式の解は、1
нием 組だけではありません。方程式のすべて
расширенного алгоритма Евклида. Правда, неопределённые уравнения пер-
вого порядка имеют множество
の整数解は、任意の整数 k を用いて次のように表されます。 решений, которые могут быть представлены в сле-
дующем виде (здесь k – произвольное целое число):

     (x,y)=(x1 + k・ ,y1 - k・ )
b a
              (8)
c c

●モジュロ演算での逆元の計算●
Вычисление обратного элемента по модулю

 式(8)に示す解の公式を用いれば、
Используя решение в общем 一次不定方程式 + 17y = 1множество
20xвыразить
виде (8), можно のすべての整数解は、
решений
неопределённого уравнения первого порядка 20x + 17y = 1 в следующем виде:
次のようになります。

184
184 第 3 章 Глава 3. шифр с открытым ключом
公開鍵暗号の技術
     (6 + 17k,- 7 - 20k)               (9)
.
 kПри
=- k1 の場合、解は(x,y) =(- 11,13)です。これを一次不定方程式
= −1 мы имеем решение (x, y) = (−11, 13), подставив которое20x + 17y=1
в неопреде-
лённое уравнение
に代入します。 первого порядка 20x + 17y = 1, получим следующее тождество:

     20 ×(- 11)+ 17 × 13 = 1.

Преобразуем выражение путём переноса члена в правую часть.


 移項して、式を整えます。

     17 × 13 = 1 + 11 × 20           (10)


.
Если внимательно посмотреть на тождество (10), то можно заметить, что оно
 式(10)をよく見ると、実は、次式と同じ意味であることがわかると思います。
означает верность следующего сравнения:

     17 × 13 =
≡ 1(mod 20)               (11)
.
На стр. 168 говорилось, что если ed ≡ 1 (mod L), то ключ расшифрования d –
 168 ページで、ed
обратное = 1(mod
число (обратный L)の場合、
элемент) 「モジュロ
к ключу L に関して、復号鍵
шифрования d は暗号化鍵
e относительно умноже- e
の乗算に対する逆数(逆元)である」という説明をしました。すなわち、
ния по модулю L. Другими словами, сравнение (11) означает, что число 式(11)はモジュ
13 является
обратным элементом к числу 17 относительно умножения по модулю 20.
ロ 20 に関して、13 が 17 の乗算に対する逆元であることを意味しています。
Это означает, что, используя расширенный алгоритм Евклида, можно легко на-
 つまり、拡張ユークリッド互除法を使えば、モジュロ演算での逆元が効率よく導き出せ
ходить обратные элементы, а так как в шифре с открытым ключом это использует-
ся для генерации секретного ключа (ключа расшифрования), этот алгоритм широ-
るわけです。公開鍵暗号においては、秘密鍵(復号鍵)の生成のために逆元を求めること
ко используется и в криптографии.
が必要になるので、暗号の世界でも、拡張ユークリッド互除法は大きな力を発揮します。
Итак, выше мы смогли найти 17−1 – обратный элемент к 17 по модулю 20, но
можно
 17(mod ли найти,
20)の逆元 например, 16−1 – обратный элемент к 16 (mod 20)の逆元
17 - 1 を求めることができましたが、16(mod 20)? Так как
16 НОД
-1

чисел 16 и 20 равен 4, мы можем найти решение уравнения 20x + 16y = 4, как было
場合はどうでしょう? 16
показано と 20 の最大公約数は
выше. Однако неопределённое 4 なので、20x
уравнение первого+ 16y = 420x
порядка は、前述のと
+ 16y = 1,
решить которое нужно для нахождения обратного элемента, не имеет решений
おり解を求めることができます。しかし、逆元を求めるための一次不定方程式 20x + 16yв
области целых чисел, так как его левая часть всегда будет кратна 4. Другими слова-
= 1если
ми, は、左辺が必ず 4 の倍数なので、整数解は存在しません。つまり、2
два числа не являются взаимно простыми, то нельзя найти つの数が互いに обратный эле-
素でない場合には、逆元を求めることはできません。拡張ユークリッド互除法による逆元
мент. Таким образом, получение обратного элемента возможно только в том слу-
чае, если два числа являются взаимно простыми.
の導出は、2 数が互いに素である場合にのみ可能となります。
В заключение попробуем на практике найти 73−1 в качестве обратного элемента
к 最後に、モジュロ
73 по модулю 1001, 1001 に関してрасширенный
используя 73 の逆元 73 - 1 алгоритм
を求める計算を、互除法を使って実際
Евклида. Сначала с помо-
щью алгоритма Евклида мы находим НОД чисел
にやってみましょう。まず、ユークリッドの互除法で、73 と 1001 の最大公約数を求めます。 73 и 1001.

     1001 = 13 × 73 + 52
     73 = 1 × 52 + 21
     52 = 2 × 21 + 10
     21 = 2 × 10 + 1
     10 = 10 × 1 + 0
Следовательно, наибольший общий делитель чисел 73 и 1001 равен 1, другими
 よって、73 と 1001 の最大公約数は 1、つまり 73 と 1001 は互いに素です。次に、これ
словами, 73 и 1001 являются взаимно простыми числами.

Расширенный алгоритм Евклида 185


185
Теперь перенесём члены в этих тождествах так, чтобы в правых частях были
らの式を、余りを求める式に書き換えます。
остатки.
     
1001 - 13 × 73 = 52        
(12)
     73 - 1 × 52 = 21                  (13)
     52 - 2 × 21 = 10                  (14)
     21 - 2 × 10 = 1               (15)

Подставим10выражение
 式(15)の (14) вместо множителя 10 в выражение (15).
に、式(14)を代入します。

     21 - 2 ×(52 - 2 × 21)= 1


     21 - 2 × 52 + 4 × 21 = 1                   (16)

В выражении (16)
 式(16)で、52 と 21сгруппируем
をくくり出します。 члены по множителям 21 и 52.

    5 × 21 - 2 × 52 = 1           (17)
 
Подставим21выражение
 式(17)の (13) вместо множителя 21 в выражение (17).
に、式(13)を代入します。

     5 ×(73 - 1 × 52)- 2 × 52 = 1


     5 × 73 - 5 × 52 - 2 × 52 = 1                 (18)

В выражении (18)
 式(18)で、73 と 52сгруппируем
をくくり出します。 члены по множителям 52 и 73.

    5 × 73 - 7 × 52 = 1           (19)
 
 式(19)の に、式(12)を代入します。
Подставим52выражение (12) вместо множителя 52 в выражение (19).

     5 × 73 - 7 ×(1001 - 13 × 73)= 1


     5 × 73 - 7 × 1001 + 91 × 73 = 1           (20)

 式(20)で、1001
В выражении (20)とсгруппируем
73 をくくり出します。
члены по множителям 73 и 1001.

     96 × 73 - 7 × 1001 = 1           (21)

Перенесём член в выражении (21) так, как показано ниже.


 式(21)で移項します。

     96 × 73 = 1 + 7 × 1001

 これは、96
Так как это× тождество
73 = 1(mod 1001)と同じ意味なので、モジュロ
означет верность сравнения 96 × 73 ≡1001 に関して
1 (mod 1001),73 の逆
−1
обратным элементом
元 73 は 96 となります。
-1 73 к числу 73 по модулю 1001 является число 96.

186
186 第 3 章 Глава 3. шифр с открытым ключом
公開鍵暗号の技術
Глава
第4章 4
実際に暗号を使うには
как используют
ш ифр на практике?
 4− 1 ハイブリッド暗号
4-1 Гибридные криптосистемы
※1

!
сотрудик
※2

Вывески: ※1 – кафе «Заяц», ※2 – лапша рамэн.


меня
когда же
ラーメン зовут
принесут ランちゃんが
после того
Требуется сотрудик!

лана!
まだかな…
рамэн?
店をやめちゃったから
как лана ушла,
им, наверное,
忙しいのかも…
трудно...
Срочно!!

ладно,
ハイブリッドって
«гибридный»
じゃあ значит «смешанный»...
複合って意味よね
пока не принесли, то есть в них
待ってる時間に
давайте я расскажу つまり複数の方式を
использовано
ハイブリッド暗号に
вам про
組み合わせるってこと?
сразу несколько
гибридные методов?
ついて教えるわ
криптосистемы.
ёб а .. .
ь уч
о п ят

188
188
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
в гибридном шифре
そうよ!
да! эти криптосистемы ハイブリッド暗号では
общий ключ зашифровыва-
共通鍵暗号と
восполняют недостатки 共通鍵を公開鍵暗号で
ют открытым ключом
公開鍵暗号の短所を
одноключевого шифра
暗号化して送り メッセージは
и передают, а сообщение
補い合う暗号方式なの
и шифра с открытым
共通鍵で暗号化して送るの
зашифровывают общим
ключом.
ключом и передают!
その手順を見てみましょ!
вот в таком порядке!

共通鍵暗号の短所は鍵交
Недостаток одноключе-
вого шифра – трудность
換が困難であること、長
обмена ключами, а досто-
所は処理速度が速いこと
инство – высокая ско-
です。
рость обработки инфор- ラ ー メже
когда ン
公開鍵暗号の短所は長い
мации. принесут
メッセージを暗号化する
Недостаток шифра с об- 遅いな…
рамэн?
щим ключом – долгая об-
のに計算時間がかかるこ
работка длинных сооб-
と、長所は鍵交換が容易
щений, а достоинство –
であることです。
простота обмена ключа-
ми.

Процесс шифрования
共通鍵暗号のプロセス
общим ключом
Отправитель
送信者 Получатель
受信者

五里霧中
Нет слов Нет слов
五里霧中
Полученный
共通鍵 A と
メッセージ
Сообщение 言語道断
Как в тумане Как в тумане
言語道断 メッセージ
Сообщение ключ совпа-
同一のものが
(открытый текст) (открытый текст) дает с общим
(平文) (平文) 得られる
ключом A.
Общий ключ A

共通鍵 A Общий Шифрование
暗号化 Расшифрование 共 Общий ключ
共通鍵 BB
復号 Общий
Открытый текст

暗号文 010010 010010 暗号文


Шифртекст

Общий
共通鍵
ключ AAを 1110010 1110010 暗号データを
Расшифро-
平文とみな
зашифровы- 101110 101110 вав данные,
復号して
вается как находят
して入力し 010111… 010111… 共通鍵 Bを
Интернет

открытый общий
暗号化する
текст. インター 得るключ B.
ネット
Открытый
公開鍵ключ 0011 0011 Секретный
秘密鍵ключ
011001 011001

Открытый
Шифрование
暗号化 Расшифрование
復号 秘
секретный
01110… 01110…

Отправитель сообще- Получатель


受信者の公開鍵を
ния заранее Зашифрованные данные 受信者が公開鍵の
сообщения заранее
получает открытый 共通鍵の暗号データ создаёт секретный
ペアとしてあらかじめ
あらかじめ受け取って общего ключа.
ключ от получателя ключ как пару
作成しておく
おくсообщения. открытому ключу.
Процесс шифрования
公開鍵暗号のプロセス
открытым ключом

図 4.1 ハイブリッド暗号の暗号化と復号の全体像
Рис. 4.1. Общая картина шифрования и расшифрования в гибридной криптосистеме

4-1 Гибридные криптосистемы 189


189
Как показано на рис. 4.1, шифр с открытым ключом используется только для
шифрования и расшифрования общего ключа, а одноключевой шифр – только
для шифрования и расшифрования сообщения. Таким образом, длинные сооб-
щения быстро зашифровываются и расшифровываются с помощью общего клю-
 図 4.1 に示すように、公開鍵暗号を『共通鍵の暗号化と復号のためだけ』、共通鍵暗号を『メッ
ча, а благодаря тому что общий ключ зашифровывается открытым ключом и пе-
セージの暗号化と復号のためだけ』に利用します。つまり、長いメッセージは共通鍵暗号で
редаётся по каналу связи, не возникает проблемы обмена ключами – самой боль-
高速に暗号化・復号をします。共通鍵は公開鍵で暗号化して通信路を介して受け渡されるの
шой уязвимости одноключевого шифра.
Итак, теперь давайте изучим практическое использование гибридной крип-
で、共通鍵の最大の弱点である鍵交換するときの受け渡し問題が生じません。
тосистемы на примере заказа лапши рамэн.
 それでは、ハイブリット暗号の実際をラーメンの注文を例にとって見てみましょう。
メッセージ
Сообщение この 2 つは
я хочу отпра- じゃあтогда
хорошо, сек
рет
ный Это одна
Нам три メッセージを ペア!
пара!
вить вам 公開鍵をвам
я отправлю
рамэна! 送ります открытый ключ.
Секретный ключ
秘密鍵
сообщение! 送るよ

.
кр

.
кр
се

от
й
ты
ры
отк

Открытый ключ
公開鍵
公開鍵

й
ыты
откр
Открытый ключ

Нам три
暗号化
Шифрование
メッセージを
так... сообщение
рамэна! 共通鍵で暗号化して
надо зашифровать
ий
Об
щ Общий
共通鍵 ключ общим ключом, а
Сообщение Шифртекст 共通鍵を
メッセージ 暗号文 потом общий ключ -
同じもの
Тот же самый ключ
公開鍵で暗号化するよ
открытым ключом...

暗号化
Шифрование
ий
бщ Зашифрованный
О
共通鍵 ыт
ый
Полученный 暗号化した
общий ключ
Общий ключ от
кр
もらった公開鍵
открытый ключ 共通鍵

ではитак, я はいよー
пожалуйста!
送信しまーす!
отправляю! 暗 号 化 し たзашифрованного
Отправка 共通鍵とメッ
общего ключа и шифртекста
セージの暗号文を送信する

復号
Расшифрование эй!
へい!
й
щи готовьте
бл

Об
ラーメン
а г за

Зашифрованный три рамэна!


暗号化した секретный
秘密鍵 ключ
од ка

Секретный
общий ключ Общий
共通鍵 ключ 3 つね!
а р з!

共通鍵
ю

同じもの
Тот же
за

й
самый ключ Нам три
щи
Об
共通鍵
Общий ключ рамэна!

Полученный
もらった暗号文 復号
Расшифрование メッセージ
Сообщение
шифртекст

190
190
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
понятно.
это обеспечивает
ах,
эффективную
вот бы рамэн
и быструю
тоже приносили
шифрованную
быстро и
связь!
эффективно.

грр...

гибридные
криптосистемы
используются
на практике,
например в сети
интернет. Программа PGP, используемая,
например, для шифрования со-
общений электронной почты;
протокол SSL/TLS, используе-
мый для шифрования ве б-
страниц (см. стр. 226), являются
гибридными криптосистемами.

простите, что заставил вас ждать!!

бам!
4-1 Гибридные криптосистемы 191
4-2 Хеш-функция и код аутентификации сообщения
ой!

Подмена данных

нн... на кого
он сердится?

вуууу

не знаю...

инспектор! да, конечно,


скорее я постараюсь...
поймайте
зырк преступника!

где же
она
скрывается?

я сайфер!

192 Глава 4. как используют шифр на практике?


у нас на днях
рамэна?!
похитили
29 порций
рамэна!

Кафе «Заяц »
нам заказали
Сато из
доставку на дом
1-го квартала Кафе «Заяц»
по электронной
почте...

Прошу 30 порций
1 порцию рамэна!
рамэна. срочно!

ого!

Злоумышленник
подменяем
данные!

а нельзя ли
...но кто-то защититься от
подменил подмены данных
с помощью
содержание
криптографии?
сообщения!

дун
ай
- яй

стра шн
о..
- яй
...

4-2 Хеш-функция и код аутентификации сообщения 193


改ざんの対策
Защита от подмены
для защиты от хеш?
改ざんを防止するには ハッシュ? насмешил!
подмены данных это как-то 細切れの
ハッシュ関数を
можно использо- ハッシュドビーフと это же блюдо из
мелко牛肉を煮込んだ
связано с
使えばいいのよ
вать !!
хеш-функцию!! 関係あるのか?
hashed beef?
нарезанной
料理よね?
варёной говядины!

ха-ха

слово Hash
切り刻むことを
по-английски
и означает
ハッシュというの
«мелко нарезать». да?

牛肉のかわりに
но здесь мы
вместо говядины
メッセージを очень
мелко нарезаем
細かく切り刻んで
сообщение и вкусно,
наверное...
ハッシュ値を作りだすのが
получаем его хеш.
это называется
ハッシュ関数よ
хеш-функцией.

это значение, вычисляемое на


ハッシュ値って メッセージから計算される値で
а что такое основе сообщения. оно
なに? хеш? 犯罪捜査に使う
подобно «отпечаткам пальцев» не
с ъ н ет
「指紋」のようなものなの!
для следователя ед ,
об
н ое
!
оно вообще его используют
メッセージが
съедобное? для того, чтобы
改ざんされていない
проверить,
ことを確かめるのに
нет ли подмены
使うのよ!
данных
в сообщении.

194
194
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
Хеш-функция
ハッシュ関数

 ハッシュ関数を使い、もとのメッセージからハッシュ値を計算します。指紋が本人確認の手
Хеш-функция вычисляет хеш для собщения. Хеш можно уподобить отпечаткам
пальцев, помогающим идентифицировать личность. Он представляет собой данные
段として有効であるように、ハッシュ値は、メッセージの指紋と言えます。メッセージを要約
фиксированной длины, полученные путём свёртки данных исходного сообщения, и
したものなので、データ量は小さくなります。また、固定の大きさを持ちます。
содержит меньше информации, чем исходное сообщение.
Отсутствие подмены данных в исходном сообщении называется целостностью
 「メッセージが改ざんされていないことを受信者が確かめられる」という性質を正真性(完全
данных, и её проверка возможна благодаря тому, что отправитель прилагает к исход-
性、integrity)といい、送信者が、もとのメッセージとハッシュ値を一緒に送信することで正
ному сообщению его хеш. Другими словами, с помощью этих «отпечатков пальцев»
проверяют наличие или отсутствие в сообщении злонамеренных изменений. Получа-
真性が保証されます。つまり、メッセージの指紋を手掛かりに、改ざんの有無をチェックする
тель сообщения, используя ту же самую хеш-функцию, что и отправитель, вычисляет
のです。受信者は、送信者と同じハッシュ関数を用いて、メッセージの指紋となるハッシュ値
хеш полученного сообщения и сравнивает его с хешем, которое приложил к исходно-
му сообщению отправитель. Если эти два хеша совпадают, то получатель убеждается в
を計算し、添付されたハッシュ値と比較します。ハッシュ値が同じなら、改ざんはなかったこ
то, что данные в сообщении не были подменены.
とがわかります。

送信者
Отправитель Есть подмена
改ざんあり
(открытый текст)

0101
Сообщение

001101
Зависит
他力本願 от других ハッシュ関数
Хеш-функция ハッシュ関数
Хеш-функция 111011…
(数式にあてはめる)
Всё
森羅万象в природе 異なる
Отличаются
Оповещение
結果通知
「指紋」抽出 Сравнение
比較する о результате
メッセージ (平文) Совпадают
同じ

改ざんなし
Нет подмены
他力本願
Зависит от других 他力本願
Зависит от других
0101 インター 0101
他力本願
Зависит от других
森羅万象 + 001101 ネット 森羅万象 + 001101
Всё в природе Интернет Всё в природе
111011… 111011…
Хеш
森羅万象
Всё в природе
Сообщение Хеш
Сообщение
メッセージ ハッシュ値
(«отпечатки
メッセージ ハッシュ値
(«отпечатки
(открытый текст) пальцев») (открытый текст) пальцев»)
Сообщение
(平文) (指紋) (平文) (指紋) メッセージ
(открытый текст)
(平文)
受信者
Получатель

図 4.2 ハッシュ関数
Рис. 4.2. Хеш-функция

Хеш-функция должна быть односторонней, чтобы по собщению можно было вы-


 ハッシュ関数は一方向性関数です。メッセージからハッシュ値を計算できても、反対に、ハッ
числить его хеш, но по хешу невозможно было восстановить исходное сообщение.
シュ値からメッセージが復元されないようにすることが必要なためです。この性質を不可逆性
Преобразование данных, выполняемое односторонней хеш-функцией, называется
необратимым.
といいます。この性質を備えたハッシュ関数が、一方向性ハッシュ関数です。
Кроме того, хеш-функция должна затруднять нахождение двух отличающихся
 また、ハッシュ値が一致するような、互いに異なるメッセージの組を見つけることが困難で
друг от друга сообщений, имеющих одинаковый хеш. Это условие называется «силь-
ある必要があります。この条件を強衝突耐性といいます。さらに、あるメッセージが与えられ
ной устойчивостью к коллизиям». Кроме того, при наличии одного сообщения с из-
вестным хешем хеш-функция должна затруднять нахождение другого сообщения,
たとき、ハッシュ値が等しくなるような他のメッセージを見つけることが困難でないといけま
имеющего такой же хеш. Это условие называется «слабой устойчивостью к коллизи-
せん。この条件を弱衝突耐性といいます。これらの目的で、専用に開発されたハッシュ関数と
ям». Для этих целей были специально разработаны такие хеш-функции, как MD5,
SHA-1, SHA-512, RIPEMD-160 и др.※
して、MD5、SHA-1、SHA-256、SHA-512、RIPEMD-160 などがあります。

MD5, SH-1, а также RIPEMD уже не считаются стойкими – Прим. ред.
4-2 Хеш-функция и код аутентификации сообщения 195
195
Спуфинг
なりすまし
ну, это
なあるほど…
в общем, используйте
ハッシュ関数を使って как сказать... それだけじゃ
дело не только
хеш-функцию -
メッセージの改ざんを
и никакая подмена だめなんだ !!
в этом!!

防止すれば
данных вам не でも
однако...
будет страшна!
いいでしょ

сегодня,
今日だって мы
например,
ラーメン 30 杯分
потеряли
攻撃者 うさぎ食堂
損したんだ
30 порций
!! Злоумышленник уфф...
Кафе «Заяц»
рамэна!! сейчас
пошутим!

мне
Доставьтерамэна!
е мне и
3 порци нака
Принесийт рамэна! Срочно при Та
ц и
10 пор итани н
5 порций те мне из 4-го квартала
е с и
М рам
ртала Са эна!!
из 1-го ква из 2-го квтао
ртала
Прошруамэна!
ий
7 порц удзуки а 5 порц Жду
С вартал ий р
3 - г о к и Цуда амэна!
из з 5-го к
вартал
а

а можно
だれかが客に
кто-то выдавал аа! なりすましを
как-нибудь
себя за наших
なりすましたんだよ! 防ぐ方法は
защититься
клиентов!
отないの?
спуфинга?
вух

вух
ну, тогда понятно,
почему он так сердится...

196
196
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
なりすましの対策
Защита от спуфинга
можно, если
メッセージ Имитовставка (код аутентификации сообщения)
использовать имитовставку, メ ッ セ ー ジ    認 証    コ ー ド
認証コードを
то есть код аутентифика- MAC:Message Authentication Code
使えばいいのよ!
ции сообщения!

メッセージの
認証?
аутентификации?

что такое
аутентификация?!

порц Аутенти
ра и чно
и»!
две п мэн,
正しい送信者からの
это проверка
орци
и!
подлинности
те м
не рамэн, ого!
メッセージで
сообщения, и неси амэн»! 3 порции!
р
П н «Р
あること……
то есть того, оди о но
Накаи
Сат -го тич из 3-го
ите мне из 1ртала Аут
е н квартала どういうふうに
а как это
Пришл гёдза! можно
рамэн
и ква Аутентично 確認するの?
но проверить?
Аида е н тич В ы ш
из 6-го а Аут лите
квартал 2 пор «Рамэн»,
ции! Жду
«Рам

受け取ったメッセージが
...то собщение
действительно
なりすましによる
отправил
不正な送信者からの
настоящий
отправитель,
メッセージではなく
о
Аутентичн
正しい送信者からの
...а не злоумышленник,
メッセージであることを
который им
確認することよ
притворяется.

4-2 Хеш-функция и код аутентификации сообщения 197


197
Устройство имитовставки
メッセージ認証コードの仕組み
Код аутентификации сообщения (MAC), называемый также имитовставкой, по-
 メッセージの正真性を確かめ、認証を行うための手順が、メッセージ認証コードです。図 4.3
зволяет проверить целостность данных и аутентичность сообщения. Опишем здесь
を見ながらメッセージ認証コードの仕組みを見ていきます。
устройство имитовставки по рис. 4.3.
Отправитель прилагает к отправляемому сообщению MAC-код,MAC
 送信者は送りたいメッセージといっしょにそのメッセージから生成した который исполь-
値を送信しま
зуется для проверки сообщения, как и уже изученное нами значение хеш-функции.
す。MAC 値というのは、ハッシュ値と同様に検査に用いる値です。
Получатель сравнивает MAC-код, который он вычислил на основе полученного
 受信者は、受信したメッセージから生成した
сообщения, MAC 値と受信した
с MAC-кодом, который был приложен к этомуMAC 値を比較することによっ
сообщению отправителем.
Это позволяет получателю убедиться в целостности и аутентичности сообщения.
て、メッセージの正真性と認証を担保できます。このとき、送信側も受信側も MAC 値の生成の
При этом и отправитель, и получатель используют для генерирования MAC-кода
ために共通鍵を用います。
один и тот же общий ключ.
Если эти два MAC-кода совпадают, то это означает, во-первых, отсутствие подме-
 2つの MAC 値が同一であったとき、送信者からのメッセージは途中で改ざんされていないこ
ны данных в полученном сообщении (целостность), и, во-вторых, аутентичность от-
と(正真性)
правителя,、送信者は鍵を共有した正しい送信者であることが確認できます(認証)
обладающего тем же самым общим ключом, что и получатель. 。
 2つの MAC эти
Если же два MAC-кода отличаются друг от друга, то это может означать либо
値が異なるとき、送信者からのメッセージは途中で改ざんされているか、送信者
подмену данных сообщения в процессе передачи, либо отсутствие у отправителя со-
は鍵を共有した正しい送信者ではないと判定できます。
общения общего ключа, которым должен обладать аутентичный отправитель.
 

共通鍵 Отправитель
共通鍵は 共通鍵
Общий ключ и получатель
あらかじめ送信者
Общий ключ
заранее обмениваются
送信者
Отправитель 受信者で交換
общими ключами.
Подмена
改ざんあり
Спуфинг
メッセージ認証コード生成
Генерирование MAC-кода Генерирование MAC-кода 0111
責任転嫁
Безответственность (鍵に依存した一方向性
(Односторонняя хеш-функция, メッセージ認証コード生成
(Односторонняя хеш-функция, 011101
ハッシュ関数)
зависящая от ключа) зависящая от ключа) 110010…
前途多難
Трудности впереди
MAC 値の 異なる
Отличаются
Оповещение
メッセージ
Сообщение 生成 比較する
Сравнение 結果通知
о результате
(открытый текст) Совпадают
同じ
(平文)
Целостностно
改ざんなし и аутентично

責任転嫁
Безответственность 責任転嫁
Безответственность 責任転嫁
0111 インター 0111 Безответственность

前途多難
+ 011101 ネット
Интернет 前途多難
+ 011101
Трудности впереди Трудности впереди 前途多難
110010… 110010… Трудности впереди
Сообщение MAC-код
MAC 値 Сообщение MAC-код
MAC 値
メッセージ
(открытый текст) メッセージ メッセージ
Сообщение
(открытый текст) (открытый текст)
(平文) (平文) (平文)
受信者
Получатель

Рис. 4.3. Устройство имитовставки


図 4.3 メッセージ認証コードの仕組み

Имитовставку можно рассматривать как разновидность односторонней хеш-


 メッセージ認証コードは、鍵付きの一方向性ハッシュ関数の一種と考えてよいでしょう。基
функции, снабжённую ключом. Она используется так же, как и хеш: отправитель и
получатель независимо друг от друга вычисляют MAC-код, а целостность
本的にハッシュ値と同じ仕組みで、送信者と受信者とでそれぞれメッセージの MACи値を計算し
аутентич-
ность проверяются путём сравнения вычисленного и полученного MAC-кодов.
て比較することで正真性を確認します。

198
198
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
 メッセージ認証コードでは、お互いが MAC 値を計算すると
Для генерирования MAC-кода и отправитель, и полу-
きに、自分たちだけが共有している鍵を使います。これにより、
чатель используют один и тот же общий ключ, которым
もとのメッセージから 値を計算したのが、自分の持って
MACони.
должны обладать только Это позволяет убедиться в
том, что MAC-код, приложенный к полученному сообще-
いるのと同じ鍵を持っている相手だと確信できます。
нию, был сгенерирован отправителем, у которого есть тот
 メッセージ認証コードの仕組みはこのようなものですが、共
же самый общий ключ, но порождает такой же недостаток,
通鍵暗号と同じように、鍵の共有をいかに安全に行うかが問題
какой имеется у одноключевого шифра: проблему безопас-
になってきます。
ности совместного обладания общим ключом.
 メッセージ認証コードは、国際的な銀行間の送金業務やウェ
Имитоставка используется в международных денеж-
ных переводах между банками, в протоколе SSL/TLS,
ブ上でのオンラインショッピングなどで利用する кото-
SSL / TLS で
рый используется, например, для интернет-шоппинга, и
も利用されています。
т. д.

Отказ
否認とは

ну,
ご主人теперь-то いや
нет, погоди!
待てっ!
хозяин может
これで安心だね!
быть спокоен!
приступим
к Рамэну!
итак,

)
что, ещё
まだ
какие-то
а что мне
もし
делать вот
問題あるの?
проблемы? こうなったら
в этом
どうする?
случае?

4-2 Хеш-функция и код аутентификации сообщения 199


199
эй!
攻撃者 готовьте
Кафе «Заяц»
うさぎ食堂
Злоумышленник
Принесите одну порцию
мне рамэн! Рамэна!

うちは
а я «рамен»
頼んで
не заказывал!
ないよ!
ええーっ!
что?!

когда кто-то
送信した本人なのに
сначала делает заказ,
аそのことを
потом отрицает,
認めないわけね
что он вообще
что-то заказывал.
вот
негодяй!

а нельзя ли нет, к сожалению,


メッセージ認証コードで 残念ながら
доказать это возможности
確認できないのか?
с помощью
メッセージ認証コードには
кода аутентификации
имитовставки? 限界があるのограничены.
сообщения
Ме
ню

200
200
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
Два недостатка имитовставки
(1) Проблема невозможности предотвращения отказа (non-repudiation)
Представим, что пользователь A сначала отправил пользователю B сообщение
и MAC-код, а потом стал утвержать, что он ничего не отправлял: якобы сооб-
щение и MAC-код пользователь B создал сам. В подобном случае B не сможет
опровергнуть это утверждение A, ведь даже если попросить третью сторону
разрешить спор, она не сможет этого сделать, так как не имеет никаких
средств, позволяющих определить, кто на самом деле создал сообщение и
MAC-код – A или B.

(2) Проблема невозможности доказательства третьей стороне


Представим, что пользователь A отправил пользователю B
сообщение и MAC-код. Однако пользователь B не сможет до-
казать третьей стороне C, что это сообщение действительно
отправил ему A, ведь и сообщение, и его MAC-код могли
быть созданы как пользователем A, так и пользователем B.
Другими словами, третья сторона не сможет вынести обо-
снованного заключения о том, кто создал сообщение и MAC-
код – A или B, так как оба они обладают одним и тем же об-
щим ключом.

так что же аа!


мне делать?!
ть
хрус

не переживайте,
есть хороший
способ!

4-2 Хеш-функция и код аутентификации сообщения 201


 4
4-3− 3 ディジタル署名
Цифровая подпись

否認の対策
Защита от отказа
можно!
а нельзя ли
否認を ディジタル署名を
надо использовать
Цифровая подпись
как-нибудь ディジタル   署名
防ぐ方法って
защититься 使うのよ! подпись!
цифровую

なんだ?
от отказа?
Digital Signature
そうすれば
и доказать третьей

第三者に対する
стороне тоже
получится без
証明もできるわ
проблем.

どういう
а что
это такое? ディジタル署名の
давайте
ものなの?
посмотрим,
仕組みを
как устроена
это公開鍵暗号の
тот же шифр 見てみましょう!
цифровая
с открытым
鍵の使い方を подпись!
ключом, только
逆にしたものよ
используемый
наоборот!

表 4.1 公開鍵暗号とディジタル署名
Таблица 4.1. Шифр с открытым ключом и цифровая подпись
Шифр 受信者の公開鍵で
Шифрование от- 受信者の秘密鍵で
Расшифрование
с公開鍵暗号
открытым крытым ключом → Шифр-
暗号文 → секретным ключом
ключом 暗号化
получателя текст 復号
получателя

ディジタル
Цифровая 送信者の公開鍵で
Расшифрование 送信者の秘密鍵で
Шифрование
открытым ключом ← Цифровая
署名 ← секретным ключом
署名
подпись 復号
отправителя подпись 暗号化
отправителя

202
202
   第 4 章Глава 4. как используют шифр на практике?
実際に暗号を使うには
ディジタル署名の仕組み
Устройство цифровой подписи
Отправитель, зашифровывая отправляемое сообщение своим секретным ключом,
 ディジタル署名では、送信者が自分の秘密鍵でメッセージを暗号化したものを署名にします。
создаёт из него цифровую подпись и прилагает её к отправляемому сообщению.
Получатель, расшифровывая подпись с помощью открытого ключа отправителя,
その署名は、メッセージとともに受信者に送ります。
восстанавливает из неё сообщение, а затем сравнивает его с сообщением, к которому
 受信者は送信者の公開鍵で署名を復号し、メッセージを得ます。そして、復号したメッセー
эта цифровая подпись была приложена.
ジと、送られてきたもう一方のメッセージとを比較します。
Идентичность этих двух сообщений подтверждает как целостность данных сооб-
щения, так и аутентичность отправителя.
 両者が同一であるならば、正真性の検証と送信者の認証が同時に行われたことになります。
Кроме того, благодаря использованию открытого ключа отправителя для расшиф-
 また、送信者の公開鍵で復号するため、第三者も受信者と同様に署名を検証でき、第三者に
рования цифровой подписи и третья сторона, и сам получатель имеют возможность
удостовериться в том, что сообщение и его цифровая подпись были созданы настоя-
対する証明が可能になるとともに、送信者の否認防止になります。
щим отправителем, а это решает проблему доказательства третьей стороне и проблему
отказа отправителя.
秘密鍵
Секретный ключ Шифрование и 公開鍵
Открытый ключ
公開鍵暗号による
расшифрование 正真性・認証
Подмена
送信者
с помощью шифра Спуфинг
に問題あり
Отправитель 暗号化と復号
с открытым ключом
一騎当千
Могучий воин

一騎当千
Могучий воин Шифрование
暗号化 Расшифрование
復号 意到筆随
Лёгкое перо

意到筆随
Лёгкое перо
Отличаются
異なる Оповещение
メッセージ
Отправляемое сообщение Сравнение
比較する 結果通知
о результате
(открытый
(平文)текст) Совпадают
同じ
正真性・認証に
Целостностно и аутентично
問題なし

010010 010010
一騎当千
Могучий воин 一騎当千
Могучий воин 一騎当千
Могучий воин
101100