Page 1

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

МАНГА

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

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

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

ISBN 978-5-97060-603-2

Интернет-магазин: www.dmkpress.com Книга-почтой: orders@alians-kniga.ru Оптовая продажа: “Альянс-книга“. (499)782-3889. books@alians-kniga.ru

www.дмк.рф

9 785970 606032

Митани Масааки, Сато Синъити Хиноки Идэро Verte Corp.

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

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

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

Митани Масааки Сато Синъити Хиноки Идэро

МАНГА


Занимательная информатика

Криптография Манга


マンガでわかる

暗号  

三谷 政昭・佐藤 伸一/共著 ひのき いでろう/作画 ウェルテ/制作


ОБРА О Вガ Аで Т Еわ Л Ьか Нる АЯ МАНГА マЗン

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

ЗАНИМАТЕЛЬНАЯ ИНФОРМАТИКА   三谷 政昭・佐藤 伸一/共著 ひのき いでろう/作画 ウェルテ/制作

Митани Масааки, Сато Синъити Хиноки Идэро

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

Москва ДМК Пресс, 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 (яп.) ISBN 978-5-97060-603-2 (рус.)

Copyright © 2007 by Mitani Masaaki, Sato Shinichi and Verte Corp. © Издание, перевод ДМК Пресс, 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 E D 暗号化鍵 k と復号鍵 k の関係 21       • Шифр одноалфавитной замены.......................................................... 25  1 ー 2 古典的な暗号技術     24 многоалфавитной Виженера). 26 シーザー暗号 замены (шифр .................... 24 • Шифр 換字式暗号 25 • Шифр перестановки................................................................................ 27 多表式暗号 26 1-3 Стойкость шифра............................................28 転置式暗号 27 • Число ключей шифра многоалфавитной замены......................... 32  1 ー 3 暗号の安全性 28 • Число ключей шифра перестановки................................................. 32 換字式暗号の鍵数 31 • Возможность криптоанализа................................................................ 35 多表式暗号の鍵数 32 стойкий шифр................................................................... 35 転置式暗号の鍵数 32 • Совершенно 解読が可能になる条件 35 • Типы криптостойкости.......................................................................... 37

絶対安全な暗号

35

安全な暗号 37 2 Глава ОДНОКЛЮЧЕВОЙ ШИФР..................................................45

第 2 章 共通鍵暗号化技術 по модулю 45 2-1 Двоичные числа и сложение 2.............46 2-2 Что такое одноключевой шифр?...........................57  2 ー 1 2 進数と排他的論理和 46  2 ーодноключевого 2 共通鍵暗号とは шифра................................................ 57 • Особенности 62 共通鍵暗号の特徴 62 2-3 Устройство потокового шифра.............................63  2 ー 3 ストリーム暗号の仕組み 63 2-4 Устройство блочного шифра...............................66  2 ー 4 ブロック暗号の仕組み 66 • Режим сцепления блоков шифртекста (CBC).................................. 69 CBC モード 69 2-5 Устройство шифра DES.....................................70   2 ー 5 DES 暗号の仕組み 70 строения сети Фейстеля..........................................................71 Feistel 型暗号の基本構成 71 • Основы インボリューション 72 • Инволюция. ................................................................................................ 72 VI

СОДЕРЖАНИЕ

Ⅵ   


• Генерирование ключей шифрования DES....................................... 75 • Устройство нелинейной функции f шифра DES............................ 76 • Обобщённая модель шифрования и расшифрования DES.......... 77 2-6 Шифры 3-DES и AES......................................78

DES の暗号化鍵生成

DES による暗号化と復号の基本構成

75

77

• Общие сведения о шифре AES............................................................ 83 f DES の非線形関数 の仕組み 76 Пример использования упрощённого DES.....................87 • Преобразование в двоичные данные................................................. 87  2 ー 6 3−DES 暗号と AES 暗号 78 • Генерирование

шифртекста 87 AES 暗号の概要 DES........................................................ 83

• Расшифрование  簡易版шифртекста DES による暗号化と復号の実際 87 DES....................................................... 95 2 進数データへの変換 87 • Генерирование ключей шифрования DES. .................................... 100

DES 暗号文の生成 87 • Генерирование ключей расшифрования DES. .............................. 104

DES 暗号文の復号

95

DES 暗号化鍵の生成

100

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

СОДЕРЖАНИЕ

VII


• Генерирование открытого и секретного ключей........................ 169 • Генерирование шифртекста RSA....................................................... 171 • Расшифрование RSA............................................................................. 173 3-6 Шифр с открытым ключом и задача дискретного логарифмирования. ............................................. 175 RSA 暗号文の生成 171 • Задача дискретного логарифмирования........................................ 176 RSA 暗号文の復号 173

 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 195 改ざんの対策 194 • Хеш-функция........................................................................................... 196 ハッシュ関数 195 • Спуфинг. .................................................................................................... なりすまし 196 • Защита спуфинга.............................................................................. от 197 なりすましの対策 197 • Устройство имитовставки. ................................................................... 198 メッセージ認証コードの仕組み 198 • Отказ........................................................................................................... 199 否認とは 199 • Два недостатка имитовставки............................................................ 201 メッセージ認証コードの 2 つの欠点 201 4-3 Цифровая подпись........................................ 202  4 ー 3 ディジタル署名      202 от ....................................................................................202 • Защита отказа. 否認の対策 202 ディジタル署名の仕組み 203 • Устройство цифровой подписи........................................................203 中間者攻撃 205 • Атака посредника. ..................................................................................205 中間者攻撃の対策 206 • Защита от атаки посредника..............................................................206 証明書と認証局 206 • Сертификат и удостоверяющий центр............................................206  4 ー 4 公開鍵暗号基盤(PKI)     208 4-4 Инфраструктура открытых ключей (ИОК)............... 208 Доказательство с нулевым разглашением................... 219 コラム ゼロ知識対話証明    219 Разъяснение некоторых терминов............................. 225 использованной  補足解説   225 Список литературы. ......................... 227  参考文献    227 Предметный указатель......................................... 228

VIII

 索引

СОДЕРЖАНИЕ

Ⅷ   

   228


пролог プロローグ


отдел ...........

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

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

Приёмная

Мегуро Рика 目黒ルカ

Ме г у р о

п

お兄ちゃん братец, Ну купи! 買ってよぉ!

目黒順警部 омощник инспектора

нет!

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

Фшш

ax +

by =

gcd(

он нужен だって数学の勉強に мне для изучения 役立てたいんだもの! математики!

a,b)

ap - 1≡ 1(mod p)

p )= p ϕ(

хочу!

y

-1 ……

2

x


для этого и обычных счётов достаточно!

хвать

тр р, тр р тр р, тр р

кл а

ц

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 暗号化鍵

音声通信связь Голосовая データの送受信 Передача данных Запись и накопление データの記録・ данных и т. п. 蓄積など

Получатель 受信者 愛してるよ Люблю

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

Получателем может быть и носитель информации: жёсткий диск, память и т. п. ※受信者は ハードディスクやメモリなど

図 0.3 暗号のモデル Рис. 0.3. Модель шифрования (криптосистема)  記録媒体 ( メディア ) の場合もある ого! ほう да, шифрование 暗号は役に立って действительно нужная るんだな вещь!

смотри, ほら похоже, он 知りたくなって заинтересовался. きたでしょ ?



13 1


わたしが先生になるから

暗号のこと 学びましょ !

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

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

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

館長さん 事件はすぐに解決 するから任しとけ !

уважаемый директор, не беспокойтесь! преступление скоро будет раскрыто!

ох...

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

снимите с меня наручники!


Глава 第1章 1 暗号の基礎

основы криптографии


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

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

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

тык

тык

Yes!

кстати...

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

я буду освещать ход расследования!


прежде всего...

но можно ли так обеспечить безопасность полиции?

...подумаем над смыслом, который заложен в кличку «весёлый сайфер».

мм...

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

ну, это совсем просто!

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

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

это английское слово читается «сайфер» и означает «шифр»!

ну вообще!

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

17


«Ниитака-яма ноборэ» ※1 = «Начать атаку» «Тора тора тора» ※2 = «Атака была успешной»

暗号か! шифр?!

『ニイタカヤマノボレ』= 攻撃開始 ※1 Дословно: «Поднимайтесь на гору Ниитака».

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

ага! если так,

有名どころじゃ то я знаю парочку こんなのが знаменитых あったな

※※いずれも、太平洋戦争

Обе кодовые фразы использовались

Императорским флотом Японии  開戦時の帝国海軍の電文

примеров.

при нападении на Пёрл-Харбор во время Второй мировой войны.

нет, нет

でも но это それはサイファでは не шифр. ないわ

じゃあ… а что же? なんだ?

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

но мы будем わたしたちが изучать не их..,

это родственник 暗号の仲間だけれど шифра - жаргон: 符丁や隠語と呼ばれる фразы, понятные 仲間うちでしか только членам какой-либо группы. 通用しない言葉なのよ

学ぶのは

...аサイファの шифры «cipher»!

ほうね!

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

фразы».

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


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

Неавторизованный 正当でない受信者(盗聴者) получатель (перехватчик)

Боб

Алиса LOVE

愛してるよ Люблю 暗号化されて текст Незашифрованный いない文(平文 (открытый текст P) P)

Шифрование

復号

送信者 Отправитель

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

L OV E 暗号化

мя

Ева

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

§ &*@ ♪〒

音声通信связь Голосовая Передача данных データの送受信 и накопление Зашифрованный Запись 暗号化された文 データの記録・ и т. п. текст (шифртекст C) C) данных (暗号文 蓄積など

Ключ шифрования Ek E =暗号化に 暗号化鍵 k  用いられる鍵

受信者 Получатель

Люблю 愛してるよ

暗号文 C から Открытый текст P, полученный 復号した平文 P в результате Ключ расшифрования DkDk =復号に расшифрования 復号鍵 шифртекста C  用いられる鍵

Рис. 1.1. Модель шифрования (криптосистема, шифр) 図 1.1 暗号のモデル

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

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

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

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

19 19


暗号学の基本用語 Термины криптографии

Открытый текст P =暗号化されていない通常の文  (Plain text): обычный незашифрованный текст. 平文 P(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 になるののよ 暗号化鍵 (алгоритме) шифрования.

Алгоритм – последовательность

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

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

Данные データ

暗号化鍵 Ключ Ek Ek


タヌキ暗号の場合の вот, например, алгоритм и ключ 暗号化アルゴリズムと шифрования Ek 暗号化鍵 Ek はこれよ для шифра тануки.

Верно! そう!

и наоборот, ключ

反対に復号鍵 Dk は расшифрования Dk 抜く文字の『た』  это вычёркиваемый 復号アルゴリズムは слог «та», а алгоритм 暗号文から余分な расшифрования: 文字を抜くことよ «вычёркнуть лишние

※ 暗号化アルゴリズムは、

Алгоритм шифрования:  平文に余分な文字を加え «вставить  ること в открытый текст лишние буквы».

буквы».

Ключ шифрования Ek : Ek は、加える ※ 暗号化鍵

вставляемый  文字の 『た』 слог «та».

Кл

юч

D

k

та

Ek と復号鍵 Dk の関係 暗号化鍵между Связь ключами Ek и Dk

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

Открытый 平文 P текст P

Ключ 暗号化鍵 Ek E шифрования k

Шифртекст 暗号文 C C C = E( k P )

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

Ek

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

Шифртекст 暗号文 C C Ключ 復号鍵 Dk D расшифрования k

Открытый 平文 P текст P P = D(C ) k

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

Dk

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

21 21


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

СЙЛБ ЛСБТЙГБ

СКРИП, СКРИП

ПУСТЬ КЛЮЧ ЗАШИФРОВанИЯ Ek это сдвиг БУКВы на одну позицию вперёд в обычном алфавите.

СЙЛБ ЛСБТЙГБ

↓ ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓ ↓

РИКА КРАСИВА

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

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

УГХ

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

22

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

БАХ


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

カンペキに

СОВЕРШЕННО 正解! ВЕРНО!

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

でも НО ВЕДЬ ТАКОЙ こんな暗号じゃ ШИФР ОЧЕНЬ すぐに解読されちゃう ЛЕГКО РАЗГАДАТЬ. だろ?

какая тяжёлая книга...

Руководство 情報セキュリティ онной по информациック ハン сности опаドブ без

OHM

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

次のページから

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

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

23 23


1-2 − Классические шифры  1 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

(Открытый текст P) C) (平文

P R P R WD U R

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

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

Y→B

Z→C

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

ух. ..

цезарю.

へええっ ааа!!!?

1. основы криптографии 24 暗号の基礎 24  第 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

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

В этом шифре алгоритмом является замена букв, а ключом шифрования Ek –  この暗号では、換字することがアルゴリズムで、 「各文字の置き換え方」 、つまり変換規則σ

правило замены σ.

が暗号化鍵 Ek になります。

а-

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

это «сигма»!

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

25 25


多表式暗号 Шифр многоалфавитной замены (шифр Виженера)

Разбив открытый текст на блоки по n букв в каждом, изменяют величину сдвига в зависимости от позиции каждой буквы внутри блока. Можно сказать, что шифр 式暗号といいます。シーザー暗号を拡張したものといえます。 Виженера является расширением шифра Цезаря. n=4 として、変換規則δ  例えば としてずらす数を以下のように定めたとします。 Положим n = 4 и определим правило замены δ следующим образом.  平文を n 文字ずつのブロックに区切り、各ブロック内で文字をずらす数を変えるものを多表 デルタ

буква → 2сдвиг =2 11-я 番目の文字→ 文字ずらす буква → 5сдвиг =5 22-я 番目の文字→ 文字ずらす буква → 3сдвиг =3 33-я 番目の文字→ 文字ずらす

=変換規則δ Правило замены δ

буква → 1сдвиг =1 44-я 番目の文字→ 文字ずらす  すると、次のように暗号文が作られます。 В этом случае мы получим следующий шифртекст.

(Открытый текст C)P) (平文    MOMOTARO       MOMO        

    

       n 文字ごとのブロックに分ける(n=4) Разбиваем на блоки по n = 4 буквы

в каждом.

TARO   (暗号文 P)

OTPP

V F U P (Шифртекст C)

ブロックごとに変換規則δに

Заменяем буквы в каждом из блоков 従ってずらす по правилу замены δ.

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

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

расшифруй-ка

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

ТЫК !

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

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


а р

転置式暗号 Шифр перестановки n 文字ずつのブロックに区切り、各ブロックの中で文字の順序を置き換える暗号を転  平文を Разбив открытый текст на блоки по n букв в каждом, меняют местами буквы

в каждом из блоков. 置式暗号といいます。

Положимとし、置換規則τ n = 4 и определим правило перестановки τ следующим образом.  例えば、n=4 として次を定めたとします。 タウ

        1234   τ=          2413

( )

Верхняя формула означает, что перестановка осуществляется следующим  上の式は、次のように置換することを意味します。 образом.

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

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

ть

Разбиваем на блоки по n =(n 4 буквы            n 文字ごとのブロックに分ける = 4) TARO

   

    

MMOO

(Шифртекст C) P) (暗号文 R T O A  

в каждом. Переставляем буквы в каждом из ブロックごとに変換規則τに      блоков по правилу перестановки τ. 従ってずらす

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

δ

- δはデルタ это «дельта»,

τはタウと

а

τ

- «тау».

読むのよ

なるほど понятно.

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

27 27


1-3− Стойкость шифра  1 3 暗号の安全性

как вы помните, егоシーザー暗号の暗号化 алгоритм шифроваアルゴリズムは ния заключается... ...в замене букв

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

хотя шифр цезаря シーザー暗号は был изобретён более 2000 年以上も昔から 2000 лет назад..,

あるけれど

сам цезарь использовал...

例えば n=3 の場合

...в нём присутствуют アルゴリズムや такие понятия 鍵の概念を современной 用いているので криптографии..,

...в качестве ключа

3 文字ずらすことが шифрования величину сдвига シーザーの用いた暗号化鍵だな в алфавите

n=

3.

...как

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

и в той задачке

さっき問題に出した СКЛБЛСБТКГБ тоже

СКЛ 『れきひえてけすう』も シーザー暗号の一種よ ↓ ↓↓ РИКА КРАСИВА использовалась разновидность шифра цезаря.

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


... мм

почему мало? どんどん文字を ведь сдвигать-то ずらしていけば можно на сколько угодно букв -... いいじゃないか

古代ローマの но не слишком ли мало ключей アルファベットは шифрования? 25 文字しかないわ

дун

ведь

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

1000наでも ...хоть 1000, хоть наでも 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 млн перестановок в секунду, может составить до 128 млрд лет. しても最長の場合は 1280 億年ほどの途方もない計算時間(計算量)がかかるおそれがあります。 Таким образом, хотя теоретически ключ найти возможно, практически шифр од 鍵を探して解読することは、理論上は可能ですが、実際には計算量的に安全な暗号として位 ноалфавитной замены считается вычислительно стойким. 置付けられています。ただ、『平文に登場

Однако известно, что этот шифр

する文字の出現頻度と、暗号文に登場する уязвим для частотного криптоанализа,

использующего такую его особен文字の出現頻度とが一致すること』を利用

ность, как совпадение частот появле-

с момента рождения 宇宙が誕生して вселенной прошло 億年! лет! 10100 миллиардов

した頻度分析と呼ばれる暗号解読法に弱い ния букв в открытом тексте и шифр-

тексте. という性質が知られています。なお、実際

В связи с этим с практической точ-

に計算量的に安全と言えるものには、換字 ки зрения вычислительно криптостой-

ким считается шифр одноалфавитной 式のうち1回限り(one–time)の使い捨て

успею ли я найти ключ 宇宙の終末までには

замены с одноразовым ключом (one до смерти вселенной? 鍵になるように工夫したワンタイムパッド 解読できるかしら? time pad). などがあります。 Теперь поговорим о разделе математики под названием комбинаторика. Кроме вышеописанной перестановки, существуют также понятия размещения и сочетания. Раз ここで数学の復習をしておきましょう。順列と組み合わせを聞いたことがありますか。順列 мещение из n по r – это упорядоченный набор r элементов, выбранных из множества n n 個のものから r 個を取り出して順番に1列並べる方法で公式は次のようになります。 は различных элементов. Таким образом, перестановка тоже является частным случаем размещения. Число размещений вычисляется по нижеприведённой формуле. n! Arr= n ×(n - 1)×(n - 2)×……×(n - r + 1)=      nnP . (n - r)!

Сочетание из n по r – это набор r элементов, выбранных из множества n различ-

 n 個のものから 個を取り出す方法を組み合わせといい、 の C をとって表します。 ных элементов.rОно обозначается заглавной буквой Combination C, от слова Combination. n! nPr      nCr =     = . r! (n - r)! r!

Различие между размещением и сочетанием заключается в том, что в размещении

 順列と組み合わせでは、順列は順番が大事なので AB と важен порядок следования элементов, поэтому ABBA и は違うものと考えますが、組み合わせ BA будут разными размещения-

ми, а сочетание – это способ выбора элементов из множества, а порядок их следоваは取り出し方なので順番に関係なく AB と BA は同じものと考えます。ところで、 びっくりマークの! ния здесь не важен, поэтому AB и BA будут одинаковыми сочетаниями. Кстати, вос-

n までのすべての数を掛けたものです。 は階乗を意味します。階乗とは に対して 1 から клицательный знак (!) – этоn факториал. Знак факториала после n означает произведе-

ние всех чисел от 1 до n включительно.

     n!= n ×(n - 1)……× 3 × 2 × 1. 1-3 Стойкость шифра

31 31


Число ключей шифра многоалфавитной замены 多表式暗号の鍵数 Примем длину одного блока равной n буквам. Так как сдвиги букв в блоке нам неn 字としたとします。その  1 ブロックを 1 字目は、何文字ずらされているか不明なので、26 известны, мы должны будем перебрать 26 значений сдвига 1-й позиции, для каждого

回試行することになります。同様に 文字目までそれぞれ из значений сдвига 1-й позиции2–文字目も、さらに по 26 значений nсдвига 2-й позиции, 26 для回の試行が必 каждого из

значений сдвига 2-й позиции – по 26 значений сдвига 3-й позиции и так далее до n-й 要です。このため、鍵の総数は次のようになります。 позиции в блоке. Общее число ключей будет следующим.

     26 × 26 ×…× 26 × 26 = 26

n

n множителей n 個───┘      └─── Для n = 4 получим следующее.  n = 4 の場合は次のようになります。

140 兆円というと 140 триллионов иен...

     26 × 26 × 26 × 26 = 264

ぼくの年収の ...- это моё жалованье за 28万年ぶんだね миллионов лет. 2800

4 множителя      └── 4 個──┘

Юбилей

Мегуро, помощник инспектора 28 миллионов лет на службе!

     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!

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

При увеличении n число ключей будет возрастать, повышая тем самым стойкость

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

мены. 字式暗号と同数になります。

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


при использовании 単一換字式暗号で длинных шифртекстов 長文のものには шифр одноалфавитной 解読の糸口があるの замены становится уязвимым.

если считать, что Чем 鍵の数が多いほど больше число ключей, тем 暗号が安全なら безопаснее шифр, то 換字式暗号が安全 самым безопасным будет шифр одноалфаということになるけど витной замены.

той о л Зо ук ж р Ал Эдга

мм.. .

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

ла н

По

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

однако 多表式の шифр многоалфавитной 暗号の方が замены выглядит 複雑に見えるなあ посложнее.

Золотой жук? こがねむし…?  это атлас 昆虫図鑑かな насекомых?

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

『おうごんちゅう』ともいうわ нет, это детектив 暗号解読を扱った про вскрытие шифра. 有名な短編ミステリーよ

Часть криптограммы

из «Золотого жука» 『黄金虫』の暗号の一部

53 ‡‡† 305))6 *;4826) 4 ‡ .)4 ‡);806 *;48 † 8 ¶ 60))85;1 ‡ (;:‡* 8

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

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

33 33


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

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

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

単語は「the」だ и слово the.

значит, すると「8」が「e」 в этой криптограмме

«8»

『;48」』が「the」に

должно означать «e», а 違いない! «;48» - это «the»!

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

вот警察にスカウト бы пригласить его на работу したいぞ в полицию!

暗号文は 長いほど

чем длинее шифртекст, 手掛かりが増えて тем больше в нём 解読しやすいの зацепок для взлома.

короткие

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

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


ой! но вдруг しかしこんなヤツが такой человек 警察じゃなく станет не полицейским, 盗聴者に а преступником?

существует ли 『黄金虫』の主人公も безопасный шифр, 絶対に解読できない который не смог бы взломать даже 安全な暗号って герой あるのか? «золотого жука»?

スカウトされたら…

хм...

Рика, скажи, прошу тебя!

да, あるわよ! существует! почитай вот это и あわてず успокойся!

й Золото ж ук

続きを読んで

解読が可能になる条件 Возможность криптоанализа

В общем случае существуют следующие условия, делающие возможным вскрытие шифра.  一般的に解読(盗聴)が可能になる条件には次のようなものが考えられます。 Известен алгоритм шифрования.  ① 暗号化アルゴリズムがわかっていること Известны статистические свойства открытого текста: повторяемость букв и т. п.  ② 文字の出現率の偏りなど、平文について統計的性質のデータがあること Имеется большое количество образцов шифртекста.  ③ 暗号化の例文を大量に持っていること

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

Используя одноразовые ключи, основанные на случайных числах, можно создать  1回だけしか使わない乱数に基づく使い捨ての鍵を用いて、解読不能な暗号を作ることがで шифр, теоретически не поддающийся вскрытию.

きます。その暗号文には再現性がありません。 Практически шифртекст C в подобном шифре генерируется путём применения ря-

да случайных чиселP кに同じ長さの乱数の列を付加し、暗号文 открытому тексту P, причём длина Cэтого ряда равна длине от 具体的には、平文 を作り出すというものです。 крытого текста. Эта криптосистема, изобретённая в 1917 году телеграфистом AT&T

これをバーナム暗号(バーナムによって 1917 年に考案され、特許が取られました)といい、使 Гильбертом Вернамом, называется шифром Вернама. Этот шифр, в котором использу-

ются одноразовые ключи из шифровального блокнота (one-time 1949 pad),年にシャノン(19 обладает абсоい捨て鍵(ワンタイムパッド)を利用しており、 解読不可能であることが

лютной криптостойкостью, то есть принципиально не поддаётся вскрытию, как было

ページ参照)によって数学的に証明されています。 доказано в 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 ↓ 12

O ↓ 14

M ↓ 12

O ↓ 14

T ↓ 19

A ↓ 0

R ↓ 17

O ↓ 14

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

Ряд случайных + 乱数列 чисел (ключ шифрования) 9 (暗号化鍵)

= 21

14 + 20 = 34

12 + 15 = 27

14 + 23 = 37

19 + 27 = 46

0 + 2 = 2

17 + 15 = 32

14 + 8 = 22

46 ↓ 20

2 ↓ 2

32 ↓ 6

22 ↓ 22

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

34 ↓ 8

27 ↓ 1

37 ↓ 11

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

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

21 ↓ V

8 ↓ I

1 ↓ B

11 ↓ L

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

20 ↓ U

2 ↓ C

6 ↓ G

22 ↓ W


うーん… да уж. こんなの使われたら взломать такое невозможно. 解読できないわ… Шифр вернама バーナム暗号は обладает

理論的に安全な

абсолютной 暗号よ криптостойкостью.

в самом деле...

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

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

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

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

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

вкусно

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

Бананы появляются в манге потому, что по-японски имя Вернам звучит как Банам.

37 37


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

Идёт приём ...

Шифртекст

так долго?!

Отправка завершена.

остаётся надеяться, что VDVIRCU от сайфера - это не шифр вернама.

прости. у меня уже всё отправилось.

Так, для открытого текста из 1000 букв потребуется передать ключ из 1000 букв.

где-то обязательно должна быть подсказка...

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

кар

ох... кар

ой, уже скоро шесть!

мне пора возвращаться в редакцию. мм...

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


круть

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

よし!

надо спешить! выходим!

急げっ――

есть! はいっ

1. основы криптографии 44 暗号の基礎 44  第 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 がやたらと и единиц.... 並んでいるが что это なんだこりゃ? ещё такое?

50 50  第2章

Глава 2. Одноключевой шифр 共通鍵暗号化技術

ага

это これは двоичные 2числа. 進数ね


Минимальная единица 0 か 1 で表される情報の最小単位 информации, равная 0 или 1, называется битом. をビット(bit)といいます。

все данные コンピュータが внутри 扱うデータはすべて компьютера -

Набор из 8 битов, другими словами, двоичное число, か состоящее из 8 8раз8 ビット(0 1 かの数字が 個 рядов,並んだ каждый из которых принима8 桁の 2 進数)をまとめて ет значения 0 или 1), называется бай1 バイト(byte)といいます。 том.

0と1を

это комбинации 組み合わせた нулей и единиц.

2 進数なのよ

1 バイトは 2 の 8 乗、つまり数式

1 байтом можно 28 = 256 256 通りの情報を で表すと 28 = выразить информационных сообщений. 表すことができます。

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

Двоичные 2 числа 進数 0000

Десятичные 10числа 進数 0

Шестнадцатеричные 16числа 進数 0

Двоичные 2 числа 進数 1000

Десятичные 10числа 進数 8

Шестнадцатеричные 16числа 進数 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

0111

7

7

1111

15

F

0は0で Нуль - 0, 1は1で один - 1,

два 2 は 10

10... で…

Так как при увеличении двоичных чисел резко уве2 進数は数が大きくなるにつれ、どんどん桁数が増える тичивается их разрядность, их часто выражают в ため、しばしば 16 進数による表記が用いられます。 шестнадцатеричном виде. 16 進数であることを示すために、 「0x」という記号を Для того чтобы показать, что число является шестнадцатеричным, как правило, перед 前に付ける場合があります。16 進数の 0xAним は 10ставят 進数 знак шестнадцатеричное число 0xA выражает の 10 «0x»: を表します。 десятичное число 10. В 文字を用いた歴史的暗号と違い отличие от исторических шифров, в которых использо現代暗号では вались буквы, в современных すべて 2 進数が基本に шифрах всё основано на なっているわ! двоичных числах!

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

51 51


サイファが значит, сайфер здесь 残したのも тоже заменил 文字を 2 進数に буквы 置き換えたもの двоичными なのか? числами?

итак, давайте

ではпопробуем преобразовать первое 最初の 8 桁の 2 進数を 8-разрядное двоичное 4 桁ずつに区切って число в 16 進数に書きかえて шестнадцатеричное, разбив его на группы みましょう

4上位 старших бита 4下位 младших бита 4 ビット 4 ビット

0011 / 0001 ↓ ↓ 3 1

по 4 бита.

31 ? 

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

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

52 52  第2章

4 ビット 4上位 старших бита

4 младших бита

下位4ビット

Кодировка JIS コ X 0201 ※ JIS X 0201 ード расширяет междунаは、世界標準の ASCII コродную ー ド(7стандартную ビ ッ ト )を кодировку ASCII ( 7 бит) 日本国内用に拡張して до 1 байта (8 бит), 1 バイト(8 ビット)に давая возможность し、英数字と記号に加 выражать в дополнение えて、半角カタカナ等 к цифрам и английским を表せるようにした文 буквам знаки азбуки 字コードです。 «катакана» половинной ширины и др. ※表の見出しは 16 進 ※ Заголовки 数 で、 上 側столбцов が上位 4 таблицы соответствуют ビットを、左側が下位 4 битам, а 4 младшим ビットを表します。 заголовки строк – старшим 4 битам шестнадцатеричного числа. ※

  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00 10 DE SH D1 SX D2 EX D3 ET D4 EQ NK AK SN BL EB BS CN HT EM LF SB HM EC CL → CR ← SO ↑ SI ↓

Таблица 2.2. Кодировка 表 2.2 JIS X 0201 コード JIS X 0201

20 30 40 50 0 @ P ! 1 A Q " 2 B R # 3 C S $ 4 D T % 5 E U & 6 F V ' 7 G W ( 8 H X ) 9 I Y * : J Z + ; K [ , < L ¥ = M ] . > N ^ / ? O _

Глава 2. Одноключевой шифр 共通鍵暗号化技術

60 70 p a q b r c s d t e u f v g w h x i y j z k { l | m } n  ̄ o

80 90 A0 B0 ー 。 ア 「 イ 」 ウ 、 エ ・ オ ヲ カ ァ キ     ィ ク ゥ ケ     ェ コ     ォ サ     ャ シ     ュ ス     ョ セ ッ ソ

C0 タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ

D0 ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜

E0                    

F0                    

   

   

   

   


очень похоже, すると что сайфер サイファが残した数字は закодировал こういうことね вот такие символы.

Таблица 2.3. Соответствие двоичных чисел и символов кодировки JIS X 表 2.3 2 進数と JIS X 201 コードの対応 0201

2 進数 16 進数 JIS X 0201 Двоичные Кодировка Шестнадцатеричные числа числа JIS X 0201 コード 00110001

31

1

00101011

2B

+

00110001

31

1

00111101

3D

=

00110000

30

0

может быть, 1 足す 1 は этот 2 じゃないか сайфер дурак? ведь 1 サイファって плюс 1 バカ? будет 2.

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 A 0 1 0 1

все операции, コンピュータが выполняемые 行う計算は компьютером, すべて論理演算 являются なのよ! логическими!

AND (логическое умножение) AND(論理積) A・B A ⋅ B

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

A 0 1 0 1

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

NOT(否定) A A NOT (инверсия) A 1 0

A 0 1

Если A или B равно 1, то результат равен 1. Если A и B равны 1, то результат равен 1. Если1なら0、0なら1になる A равно 0, то результат равен 1. いずれかが1のとき結果は1になる 両方が1のとき結果は1になる NAND (штрих Шеффера) NAND(否定論理積) A 0 1 0 1

B 0 0 1 1

AB 1 1 1 0

(排他的論理和) XORXOR (сложение по модулю 2)

NOR (стрелка Пирса) NOR(否定論理和)

A・B

A・B+A・B =(A⊕B)

A+B A 0 1 0 1

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

A 0 1 0 1

B A⊕B 0 0 0 1 1 1 1 0

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

результат XOR будет равен 1, 互いの値が если a и B - разные, 異なるときが「1」で и равен 0, それ以外は「0」に если A и B なるわ одинаковые.

54 54  第2章

Cложение по модулю 2 排他的論理和(XOR 演算)の (операция XOR) 記号は「⊕」で、 обозначается ⊕. Например, 1 ⊕ 0 = 1、1 ⊕ 1 = 0 のように用います。

Глава 2. Одноключевой шифр 共通鍵暗号化技術

この演算が а зачем なんの役に нужна такая операция? 立つの?


посмотрите これを見て! сюда!

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

Открытый Ключ 平文 шифрования 暗号化鍵 текст

Шифртекст

暗号文

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

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

При этом произойдёт расшифрование – мы получим открытый текст. XOR Теперь  すると、復号して平文が得られます。また、暗号文(0100)と平文(1101)の 演

мы выполним операцию XOR над шифртекстом и открытым текстом. Как видите, 算を行うと、次のように鍵が得られます。 у нас получился ключ. (0100)⊕(1101)=(1001)

Шифртекст

Открытый

Ключ шифрования (равен ключу расшифрования)

暗号文   текст 平文   復号鍵=暗号化鍵

Таким образом, если из трёх наборов данных: открытый текст, ключ шифро つまり、平文、暗号化鍵、復号鍵、暗号文のうちのいずれか 2 つのデータから、残りのデー вания (ключ расшифрования), шифртекст; – у нас имеются два, мы сможем найти タがただ 1 つだけ導き出されます。 недостающий набор данных.

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

55 55


понятно! なるほど!  с помощью операции XOR XOR 演算で ДЕЙСТВИТЕЛЬНО МОЖНО 暗号化や復号の処理が ЗАШИФРОВЫВАТЬ И РАСШШИФРОВЫВАТЬ 実際にできるわけね! ИНФОРМАЦИЮ!

そ  ну, и それが что это означает? どうした…?

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

Люблю 愛してるよ

§&★@♪〒

 

Расшифрование: 復号 : Шифртекст 暗号文

Ключ ⊕ 復号鍵 = Открытый 平文 текст

расшифрования

§&★@♪〒

愛してるよ = Люблю

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

Одноключевой шифр = 共通鍵暗号 = 換字処理 + 転置処理+ XOR 演算 = Замена + Перестановка + Операция XOR

そのとおり верно! а если вдобавок к第 операции xor 1 章に出てきた использовать 換字と転置  также замену и そして XOR 演算を перестановку, о которых 使えば говорилось в главе 1..,

...то можно 現代暗号の реализовать 『共通鍵暗号』が современный 実現できるのよ «одноключевой шифр»※.

ОДНО共通鍵? КЛЮЧЕВОЙ?

ЭТО ШИФР, В КОТОРОМ ДЛЯ 暗号化と復号に ЗАШИФРОВанИЯ И 共通の鍵を用いる РАСШИФРОВанИЯ ИСПОЛЬЗУЕТСЯ ОДИН 暗号よ И ТОТ ЖЕ КЛЮЧ.

ТЫ В ПОРЯДКЕ?

Обычно этот шифр называют «симметричным шифром». – Прим. ред.

次から

В СЛЕДУЮЩИЙ РАЗ 共通鍵暗号について Я О НЁМ РАССКАЖУ!

学んでいきましょう! НО

ついて СМОГУ ЛИ いけるかな…

Я ПОНЯТЬ?

56 56  第2章

共通鍵暗号化技術


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

вшш...

※1

※2

※1

Кафе «Заяц»;

Открытый 平文 текст

※2

Лапша «Рамэн»

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

Общий ключ 共通秘密鍵

Расш

ифро

вание

:

Открытый 平文 текст

復号 送信者 Отправитель

受信者 Получатель не могу взломать!

これが

одноключевой 共通鍵暗号の шифр выглядит イメージよ ! вот так!

Перехватчик 盗聴者

отправитель

暗号の送信者と и получатель 受信者同士が зашифрованного сообщения...

да...

да...

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

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

57 57


Одноключевой шифр Key Cryptography) за 共通鍵暗号 (Common Key(Common Cryptography) は、その特徴から、 его особенности называют также симметричным 対称鍵暗号 (Symmetric Key Cryptography) 、あるいは秘密

шифром (Symmetric Key Cryptography), или шифром с секретным ключом (Secret Key Cryptorgathy). 歴史的な暗号 (慣用暗号) も、すべて共通鍵暗号です。 Все исторические шифры тоже были одноключевыми.

鍵暗号(Secret Key Cryptography)とも呼ばれます。

представьте,

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

три? 3 個でしょ?

шифр.

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

а теперь じゃあ твоя очередь, お兄ちゃん! братец!

Верно! ピンポーン

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

мм... 58 58  第2章

Глава 2. Одноключевой шифр 共通鍵暗号化技術


если троим 3 人で 3 個なら три..,

нет!

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

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

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

Количество

共通鍵の個数= общих ключей nC2 =

n(n − 1) 2

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

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

59 59


так, так... ほほう… а 100 если もし 人 общающихся だったら…? сто...

таак...

そ… да? точно? そう?

я умею хорошо считать в уме.

е Каф яц» «За

4950 4950個 ключей! でーす да. если посчитать

C 22 を計算すると по формуле, C

100

100

то мы получим:

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 ーУстройство 3 ストリーム暗号の仕組み 2-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-4 ー Устройство блочного шифра  2 4 ブロック暗号の仕組み

в блочном

ブロック暗号は шифре шифрование ある一定のブロック производится ごとに暗号化をする по блокам 方式なの

теперь давай これから как следует изучим ブロック暗号の仕組みを устройство きっちり学んで блочного шифра.

определённой длины.

いきましょう

В отличие от потокового шифра, в котором используется побитовое шифро ストリーム暗号が 1 ビットごとに暗号化していったのに対し、ブロック暗号はある一定の вание, в блочном шифре информация зашифровывается блоками определённой

ブロックに分けて暗号化していきます (図 2.3) 。1 ブロックの長さは暗号によって違いますが、 длины (рис. 2.3). Длина одного блока зависит от разновидности шифра, имеются

64-битные, 128-битные блочные шифры. Кстати, так 1как однобайтовый символ 64 ビットのものと 128 ビットのものがあります。ちなみに バイトの文字は 8 ビットになる кодируется восемью битами, 64-битный блок содержит 8 символов.

ので 64 ビットを 1 ブロックとするなら、8 文字で 1 ブロックになります。 64 ビット бита

64 ビット бита

64 ビット бита

ийклмноп リヌルヲワカヨタ

рстуфхцч レソツネナラムウ

шщъыьэю ヰノオクヤマケフ

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

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

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

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

××××××××

××××××××

64 ビット бита Открытый 平文 абвгдежз イロハニホヘトチ текст

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

××××××××

××××××××

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

Длину блока сделали равной 64 битам потому, что высокопроизводительные компьютеры могут обрабатывать блоки такой длины с меньшим количеством вы少なくてすむようになったためと、極端にビット数が少ないと安全性に問題があるためです。 числений, а также потому, что при малом числе битов снижается безопасность блочного шифра.

 1 ブロックが 64 ビットになったのは、コンピュータの処理能力向上によって、計算回数が

表 2.4 ブロック暗号の種類 Таблица 2.4. Разновидности блочных шифров

Название шифра 暗号の名称

66 66  第2章

ключа в битах ブロック長 鍵長〔ビット〕 Длина блока〔ビット〕 в битах Длина

DES

64

64

AES

128

128 192 256

Глава 2. Одноключевой шифр 共通鍵暗号化技術


7〔文字〕 букв × 8〔ビット〕 битов = 56〔ビット〕 битов

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

ведь его длина 56 ビットに будет なるよな? равна 56 битам.

символов?

да, ведь ブロック長を если длина 64 ビット(8 バイ блока равна ト)とした場合 64 битам.., битов 56 ビット

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

битов 8 ビット

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

не хватает 8 ビット (1 バイト) 8 битов 足りないわね…

64 ビット бита

(1 байта)...

1ブロックのブロック長を 64 ビットとした場合 В том случае если длина блока равна 64 битам...

Открытый 平文 текст

E

m

 

e

r

a

l

d

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

0x45

битов 8 ビット

0x6D

8 битов ビット

битов 8 ビット

8 битов ビット

8 битов ビット

8 битов ビット

0x65

0x72

0x61

0x6C

0x64

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

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

0x45

8 ビット битов

0x6D

8 ビット битов

8 ビット битов

8 ビット битов

8 битов ビット

битов 8 ビット

битов 8 ビット

0x65

0x72

0x61

0x6C

0x64

0x01

※        Коды однобайтовых символов выражены в виде двухзначных шестнадцате-

※上の 0x で始まる記号は、16 進数 2 桁の文字コード (1 バイト ) を表します。

ричных чисел (на это указывает префикс 0x перед числами).

図 2.4 パディングの例 Рис. 2.4. Пример дополнения битами-заполнителями

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

67 67


длину открытого どんな平文も текста нужно ブロック長の倍数に отрегулировать なるよう так, чтобы она была кратна 調整するのね длине блока.

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

да, такой そういう метод やり方も тоже あるわ ! есть!

Электронная кодовая книга エレクトリック コード ブック

ECB: ElectronicCode CodeBook Book ECB:Electric

метод 各ブロックを шифрования и 独 立したものとして расшифрования 個々に暗号化と復号を блоков независимо один от другого... 行う方式を

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

но если при этом

それだと получатся блоки, 平文の中にブロック単位で состоящие из одинаковых данных 同じデータがあったら

Пусть в открытом тексте два раза встречается последовательность символов «my love,».

例えば平文の中に 2 箇所「my love,」が出てくるとする。

…my love,…………my love , Шифрование 暗号化

открытого текста,

暗号文にも ...то и в шифртексте возникнут повторения. 重複が起きて не снизит ли это 安全性が低くならない? безопасность?

…/"!#$&%*…………/"!#$&%*

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

Сцепление блоков шифртекста サイファ ブロック  チェイニング

CBC: Cipher Block Block Chaining CBC:Cipher Chaining

чтобы предотвратить それを防ぐために это, используется метод 連鎖式ブロック暗号という под называнием «сцепление 方式があるのよблоков шифртекста».

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

それ?

68 68  第2章

Глава 2. Одноключевой шифр 共通鍵暗号化技術


CBC モード Режим сцепления блоков шифртекста (CBC)

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

Pi - 1

Pi

Pi + 1 …

 

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

 

Ключ шифрования 暗号化鍵

Xi

Ci - 1 Xi + 1 … ビット) X(64 i (64 бита)

K

Алгоритм шифрования DES DES 暗号化アルゴリズム

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

Ci

Ci + 1 …

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

Ci - 1

図 2.5 CBC の仕組み Рис. 2.5. Устройство режима CBC

Ci

Ci + 1 …

Шифртекст 暗号文(2 進数) (двоичные числа)

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

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

ものを設定する必要があります。

きたな…

конкретными...

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

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

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

69 69


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

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

хотя DES стал первым 世界で初めて標準化された коммерческим шифром, 商用暗号は だけど принятымDES в качестве мирового стандарта,

...существовала その元になった криптосистема, 暗号システムが положенная в あったのよ! его основу!

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

Первый коммерческий шифр, ставший мировым стандартом: 最初の民間標準規格となった暗号:

DES(Data Encryption Standard) Криптосистема, положенная в его основу: その元になった暗号化システム: ル

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

フ ァ イ ス テ ル

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

        

そうねぇ ну...

へぇ~! ого!

それなら тогда советую прочитать 87 ページからの «Шифрование

「簡易版 DES による

хочу узнать, 実際の仕組みは как он どうなのか устроен на самом 実例で知りたいわ деле!

70 70  第2章

!

Глава 2. Одноключевой шифр 共通鍵暗号化技術

и расшифрование 暗号化と復号の в упрощённом des», 実際」を読んで начиная !! 87!! соちょうだい страницы


Основы строения сети Фейстеля Feistel 型暗号の基本構成 Фейстель предложил следующий метод шифрования информации.  ファイステルが考えた暗号化の方法は、次のようなものです。

※ IP:Initial Permutation

Открытый 平文 Pтекст P

① Разбиваем текст ①   平文を、64открытый ビットずつのブロッ

Разбиение ① 分割 ① Открытый текст P 平文 P

на 64-битные блоки. クに分割します。

 64 ビットのブロック内を初期 転置 новкуIP IPをして、ビットを入れ換 битов 64-битного блока. え、ばらばらに組み換えます。

② ② Выполняем начальную переста-

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

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

③ Делим 64-битный блок на два32 ビットのブロックを、左 ③  64

R0

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

暗号化鍵 ) KK11((ключ шифрования)

R1=L0 ⊕ f(R0,K1)

1Цикл 段目(1(раунд) ラウンド)1

Операция XOR f で換字・転置処理 XOR ⊕⑤ Нелинейная функция f 演算 L1=R0

32-битных блока: 32 левый L0(R0) ビット ビット(L0)と右 2 ブロックに分割します。 иのправый R 0.

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

Выполняем замену暗号化鍵 и перестанов④ (K1) ④  R 0 のブロックを、 ку битов блока R0 c помощью неf で、複雑に を用いた非線形関数 линейной функции f, использую換字・転置処理をします。 щей ключ шифрования K1.  

⑤ Сложив по модулю 2 блок L0 и ⑤  ④の処理後、R 0 と L0 を XOR

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

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

значение функции32 f (Rビット ), полу0, K1(R ) 演算し、新たな右 чаем правый 32-битный блок R11. R を新たな を作ります。もとの 0 Левый 32-битый блок L1 принимаとします。 左 32 ビット  ( ем равным R  0. L 1)

Циклы 2–15 2 ~ 15 段目 (2 ~ (раунды) 15 ラウンド) 繰り返し ⑥ KK1616(ключ ( 暗号化鍵) шифрования)

f で換字・転置処理 Нелинейная функция f

⑥ ④と⑤の処理を 1 段(1 ラウン

段目( (раунд) ラウンド) Цикл 16

Операция XOR XOR ⊕ 演算

16

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

16

L16=R15

R16=L15 ⊕ f(R15,K16)

⑦ 右 32 ビッ 32 ビット (L16)と右 ⑦ Объединяем левый и правый

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

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

L16́ =R16

32-битные блоки L16 и R1664в ビッ один ト(R16)の2つブロックを 64-блок. トのブロックに再構成します。

⑧⑧Выполняем конечную перестанов 最後に、初期転置の逆の処理

R16́ =L16 (32 бита) (32 ビット)

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

- 1 –1 ку битов 64-битного блока, обIPIP を行って、1 ブロックの暗 ратную начальной перестановке IP. 号化が完成します。

(64 64 бита) (計 ビット)⑦ 1 –1 Конечная перестановка IP −IP 最終転置 ⑧

Выход M (64 бита) 出力 ビット) M(64

Выполнив ②–⑧

すべてのブロックで над всеми 64-бит-

②~⑧を行い、再構 ными блоками, 暗号文 C C Шифртекст

DES の仕組みは вот Как この図と同じよ! устроен DES!

объединяют их в 築する шифртекст.

図 2.6 DES における暗号化手順(暗号文の生成)

Рис. 2.6. Порядок шифрования DES (генерирование шифртекста)

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

7171


ст бр а ра а т йс ец я, !

ДА УЖ, ДЛЯ

暗号作りには  ШифртекстА 面倒な処理が ПРИХОДИТСЯ ВЫПОЛНЯТЬ たくさん必要 ТАК МНОГО なんだねえ! ЗАПУТАННЫХ

ГЕНЕРИРОВАНИЯ

ДЛЯ 解読防止の ЗАЩИТЫ 変換処理は

ОТ всКРЫТИЯ...

インボリューション ...в этом шифре используется という形式で инволюция. 行われているの

ВЫЧИСЛЕНИЙ!

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

 例えば、1 が 4 に、2 が 3 に、3 が 2 に、4 が 1 となる変換を考えてみましょう。この てみましょう。すると、      1 → 4 → 1      2 → 3 → 2      3 → 2 → 3      4 → 1 → 4

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

います。インボリューションは、DES 暗号の復号の仕組みに深く関わっています。

ファイステルさんの да, фейстель 暗号は создал превосходный 立派なもの шифр! だったのね!

7272  第2章

Глава 2. Одноключевой шифр 共通鍵暗号化技術

нет, нет...

структура этого この暗号の構造は шифра в честь разработчика 開発者にちなんで названа она いまでも Feistel 型と сетью используется 利用されて 呼ばれ фейстеля. и в наши дни.

いるのよ


нет, длина

ключа 鍵長が очень まるで違うの !

DES は DES и Lucifer とLUCIFER 同じもの это одно иなの то? же?

сильно отличается!

DES の鍵長は

ключ DES LuciferКОРОЧЕ より НАМНОГО его длина ずっと短い ВСЕГО 64 БИТА!

64 ビットよ

Длина ключа DES по DES の仕様上の鍵長は 64 специビット фикации равна 64 битам, но ですが、そのうち実際の鍵に用い в действительности в качестве られるのは 56 ビットで、残りの ключа используе тся 56 бит, а  остальные 8 бит нужны для 8 ビットはパリティチェック (誤 проверки чётности. り検出 ) に使われます。

Проверка чётности проводится для обнаружения ошибок, パリティチェックとは、ノイズの которые могут возникнуть в дан混入や読み取りミスなどから発生 ных под действием шумов, в реしたデータのエラーを検出するこ зультате ошибки чтения и т. п. とです。

но ведь

я

ка

й

ны

ин

Дл

со

Вы

鍵長は長いほど чем длиннее 暗号の安全性が ключ, тем безопаснее шифр, 高くなるはずだろ ?

Бе

юч

Кл

ть

ос

сн

па

зо

не так ли?

число возможных 鍵の候補は ключей※не должно 個以下に 10 京 превышать 100 квадриллионов※. しぼれ

когда выбирали 規格を定めるとき длину ключа, агенство アメリカの NSA национальной

(国家安全保障局)が безопасности (АНБ) 鍵の候補数を США ограничило 制限したのよ число возможных

ноなんで? почему?

ключей.

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

56 とで… битах (256)... ※

ちょう

けい

がい

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

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

73 73


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

да, наверное, поэтому.

шш

ш. . .

анб - это организация, которая занимается сбором сведений по всему миру.

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

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

брр...

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

74

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


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

※ PC:Permuted PC: Permuted Choice Choice

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

① Удаляем 8 битов проверки ①   64 ビットの初期鍵から誤り

Перестановка выбора ① − 選択転置 PC PС-1 1 (56 ビット) (56 битов)

чётности из 64-битного на検出に使う 8 ビットを除いて選 чального ключа и переставPC-1 します。 択転置 ляем остальные биты.

C0

D0

(28 (28 ビット) битов)

Циклический сдвиг влево 左巡回シフト LS1 (LS1) ③

②  56 ② Делим 56 битов ビットを、 左на 28два ビット(C0)

(28 (28ビット) битов)

D1

C1

(28 (28 ビット) битов)

(28 ビット) битов) (28 ④

Перестановка сжатия − 圧縮転置 PC PС-2 2

Цикл 1段 目 (1(раунд) ラウンド)1

Циклический сдвиг влево 左巡回シフト LS1 (LS1)

28-битных блока:  の 2 ブロッ と右 28 ビット (D0) левый C0 и правый D0. クにします。

③ сдвинув влево на  C0 と D0 をあるビット数だけ ③Циклически

определённое число битов (LS1) し、これを 左巡回シフト(LS 1) C1 と D блоки C10 とします。 и D0, получаем C1 и D1.

Ключ 鍵 KK 11 (48 ビット) (48 битов)

④ Объединив C1 и D1, переставビット ④  C 1 と D1 を合わせ、8

(раунды) 2–15 2 ~ 15 Циклы 段目(2 ~ 15 ラウンド) 繰り返し

ляем со縮 сжатием (PC-2) и を 除 биты いて圧 転 置 PC-2 し、 получаем 48-битный ключ K . 1 48 ビットの鍵 K とします。 1

K1515 鍵 K2K~2 –K Ключи (48 (48 ビット) битов)

⑤  ③と④の処理を繰り返して、 ⑤ Выполняя вычисления ③–④

Циклический сдвиг влево 左巡回シフト LS16 (LS16)

в цикле, получаем ключи Kn 各段 (ラウンド) の暗号化に使用 (n = 2, 3,.., 16) для каждого を生成していきます。 する鍵 K n  шифрования. из раундов

Циклический сдвиг влево 左巡回シフト LS16(LS16)

Цикл 段目( (раунд) ラウンド16 )

16 C16 (28 (28ビット) битов)

Перестановка сжатия − 圧縮転置 PC PС-2 2

Ключ 鍵 KK 1616 (48 (48 ビット) битов)

D16

(28 битов) (28 ビット)16

При генерировании ключей рас※復号鍵の生成の場合、巡回シフトにお

шифрования вместо циклических ける左を右に読みかえます。また、暗号

сдвигов влево выполняем циклические сдвиги вправо. Кроме того, K16 から K1 の順で得らます。 の場合、鍵 ключи расшифрования генерируются в обратном порядке: K16, K15,.., K1. 化に使う鍵とは逆に復号に使う鍵の生成

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

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

75 75


о’кей!

вопрос!

а как f 非線形関数 устроена ってどんな нелинейная 仕組みなのf?? функция

я буду 図解で объяснять 説明するわ по этой ! схеме!

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

f の仕組み функции f шифра DES DES の非線形関数 Устройство нелинейной В каждом S-BOX は раунде 各段で используются 異なるものが разные 使われるのよ s-блоки.

Rn − 1

①①  Выполняем расширение вве 入力された左 32 ビットの

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

дённого 32-битного блока デ ー タ を、 鍵に合わ せ て 48 до 48 битов (длина ключа). ビットに拡大転置 E します。

Функция расширения E E ① 拡大転置

② Полученный 48-битныйXOR блок ②  そのデータを、鍵とで

ERn − 1

складываем по модулю 2 演算します。 с ключом.

(48 битов) (48 ビット)

Ключ 鍵 KnKn (48 ビット) битов) (48

③ Разбиваем  演算の結果を、6 ③ результатビットず на

восемь 6-битных блоков. つ 8 つに分割します。

ERn − 1 ⊕ Kn (48 ビット) (48 битов) (6 ビット) (6 битов)

S−BOX1

(6 (6 ビット) битов)

S−BOX2

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

(6 ビット) (6 битов)

S−BOX7

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

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

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

④ Преобразуем все 6-битные  6 ビットのデータを、それ ④ 

(6 (6ビット) битов)

S−BOX8

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

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

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

f (Rn − 1, Kn)

f の出力 Выход нелинейной функции f 非線形関数

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

76 76  第2章

Глава 2. Одноключевой шифр 共通鍵暗号化技術

блоки в 4-битные с помощью ぞれ S-BOX (変換表)の 1か восьми S-блоков (таблиц замеら 8 のボックスで、4 ビット ны). に変換します。

⑤  S-BOX からの出力データ ⑤ Объединяем 4-битные блоки в

32-битный блок в порядке их を、順番通りに結合し 32 ビッ следования. トに再構成します。

⑥ Выполнив выходную перестаPS し ⑥  最後にデータを転置 новку PS, получаем выходное f の出力にな たものが、関数 значение функции f. ります。


DES による暗号化と復号の基本構成 Обобщённая модель шифрования и расшифрования DES

Шифрование и расшифрование DES проводится следующим образом. Шиф DES による暗号化と復号の方法は、次のようなものです。平文の暗号化変換処理と暗号文 рование открытого текста и расшифрование шифртекста представляют собой

の復号処理は反対のプロセスになります。 взаимно обратные процессы.

Генерирование ключей шифрования 暗号化鍵生成処理 Секретный ключ 秘密鍵(2 進数) (двоичное число)

Шифрование 暗号化処理 Ввод открытого進法) текста 平文入力(2 (в двоичном виде) (64 (64ビット) бита)

L0(32)

Перестановка выбора − 選択転置 PС-1PC 1

R0(32) 鍵 KK1 1 Ключ

Раунд 1 変換処理第 1 段目 преобразования L1(32)

C0(28)

(48)

R1(32)

C1(28)

Ключ鍵KK22

Раунд 2 変換処理第 2 段目 преобразования

Раунд 1

(48)

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

Раунд 2

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

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

L1(32)

Перестановка выбора − 選択転置 PC PС-1 1

R0(32)

Раунд 1 変換処理第 1 段目 преобразования

D1(28)

生成処理第 2 段目 генерирования

(двоичное число)

(в двоичном виде)

D0(28)

生成処理第 1 段目 генерирования

Секретный ключ 秘密鍵(2 進数)

Ввод шифртекста進数) 暗号文入力(2

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

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

Генерирование ключей расшифрования 復号鍵生成処理

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

C0(28)

Ключ K1616 鍵K (48)

R1(32)

Раунд 2 変換処理第 2 段目 преобразования

Раунд 1

変換処理第 1 段目 генерирования C1(28)

K15 鍵K Ключ 15 (48)

D0(28)

D1(28)

Раунд 2

生成処理第 2 段目 генерирования

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 16 段目 変換処理第 преобразования L16(32)

(48)

Раунд 16

生成処理第 16 段目 генерирования

Раунд 16

変換処理第 16 段目 преобразования

R16(32)

Конечная перестановка 最終転置–1IP − 1 IP (64 (64ビット) бита)

L16(32)

В скобках указана ※( )の中はビット長  длина в битах.

Ключ K11 鍵K

(48) R16(32)

Конечная перестановка 最終転置–1IP − 1 IP (64 (64 ビット) бита)

Раунд 16

生成処理第 16 段目 генерирования

В скобках указана ※( )の中はビット長  длина в битах.

(в двоичном виде)

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

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

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

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

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

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

77 77


2 − 6 3ーDES 暗号とиAES 2-6 Шифры 3-DES AES暗号

お兄ちゃん 

ну что, братец, DES は DES шифр понял? 理解できた?

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

でも  но я перечитаю несколько раз... 何度も読み返して ...и きっとマスター обязательно усвою его してやるぞ! в совершенстве!

молодец! えらいわ!

да нет, ничего особенного... гладь, гладь

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

(на седьмом небе от счастья)

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

2. Одноключевой шифр 78 共通鍵暗号化技術 78  第 2 章 Глава

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


НАСЧЁТ ЭТОГО...

それがね КОМПЬЮТЕРЫ コンピュータの発達で РАЗВИЛИСЬ ТАК, 解読できるように ЧТО ТЕПЕРЬ ЕГО МОЖНО взломать. なってきたの

Недостатки DES の欠点 шифра DES ・鍵長が短い。鍵長が短いと処理 Малая длина ключа: замедление

скорости обработки и снижение

 速度が遅くなったり、解読され стойкости шифра.  やすくなる。

Отсутствие стандарта на S-блоки: –BOX の設計基準がないため、 ・S

возможно появление слабых реали-

 弱い実装が出まわりやすい。 заций.   

どんな каким образом? 方法で?

конечно же...

ぜったい (в упоении самим собой)

б а м

無理

(резко)

...не сможешь!

おれにも например, яできる? смогу?

ブロック暗号を вот существуют такие методы 解読する方法には криптоанализа こういうのが блочных あるわ шифров.

Таблица 2.3.表Методы криптоанализа блочных шифров 2.3 ブロック暗号の解読法

Полный Проверяют один за другим все перебор 全数探索法  しらみつぶしに鍵をさがす方法 (метод «грубой возможные ключи силы») Дифференциальный 差分解読法 криптоанализ

Метод поиска ключа, основанный на  入力の差分が、そのまま出力の差分と свойстве операции XOR: разность (результат по модулю 2)  なる XORсложения 演算の性質を利用して、鍵 входных данных передаётся на выход без  をさがす方法 изменений

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

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

79 79


КАК?!

с 90-х годов 1990 年代に XX века СТАЛО DES による暗号は

А ЗАЧЕМ せっかく勉強

ВОЗМОЖНО...

ТОГДА МЫ ЕГО したのに ИЗУЧАЛИ?

...вскрывать

ВОТ 困ったなーっ! НЕЗАДАЧА!

全数探索法や

шифр DES МЕТОДаМИ 線形解読法で ПОЛНОГО ПЕРЕБОРА, ЛИНЕЙНОГО 解読されるように КРИПТОАНАЛИЗА

なったの

ШУХ

И ДРУГИМИ.

そこで В新しい暗号の СВЯЗИ С ЭТИМ ПОЯВИЛСЯ НОВЫЙ 3ーDES が ШИФР ПОД 誕生したのよ! НАЗЫВАНИЕМ

トリプル

デス

судя

名前からすると по названию, DES это を応用разновидность したものね? шифра des?

3-des※!

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

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

そうよ да. только

Открытый 平文 текст

в 33-DES 鍵を 回使って алгоритм DES 暗号化を ПРИМЕНЯЕТСЯ 行うものなの три раза.

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

1-й DES шифртекст 暗号文 1DES Расшифрование DES 復号 DES

暗号文 2DES 2-йDES шифртекст

Шифртекст 3ーDES 3-DES 暗号文

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

3-йDES шифртекст 暗号文 3DES 図 2.11 3ーDES の暗号化 Рис. 2.11. Шифрование 3-DES

2. Одноключевой шифр 80 共通鍵暗号化技術 80  第 2 章 Глава

Ключ 鍵 1 K1

(56-битный ключ (56 ビットの暗号化鍵) шифрования)

Ключ 鍵 2 K2

(56 ビットの復号鍵) (56-битный ключ

расшифрования)

Ключ 鍵 3 K3

(56 ビットの暗号化鍵) (56-битный ключ

шифрования)


да. но если 最初の暗号化と один и тот же ключ 2 度目の暗号化に использовать для первого 同じ鍵を使い

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

В этом случае эффективная длина ключа ※この場合、実質的な鍵長 так и останется は 56 ビットのままです。 равна 56 битам.

и второго шифрований, а復号に異なる鍵を для расшифрования использовать 使えば другой ключ, то 56 × 2 = 112 ビットの длина ключа 3-DES 鍵長になるわよ будет уже 56 × 2 = 112 битов!

Этот 3ーDES метод шифрования ※この の方式を、EDE называется режимом EDE  3-DES (Encrypt Decrypt Encrypt)  モードといいます。 (Encrypt Decrypt Encrypt).

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

56 × 3 = 168

битов!

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

81 81


да, похоже, そうみたい что так.

значит, 3-des 3ーDES って  отличается ただ鍵長が только более 長くなるだけ длинным なのか? ключом?

а по сути, 根本的な проблема 解決には осталась なってないわね нерешённой.

в связи с этим национальный институт ということで アメリカの стандатов и технологий NIST(国務省標準技術局)が США (NIST) ОБЪЯВИЛ 次世代の標準となる КОНКУРС НА ШИФР aes, AES 暗号を который должен был стать стандартом 公募することにしたの следующего поколения.

AES: Advanced Encryption Standard

Предложения поступали от компаний IBM や NTT など世界の企業や組織 иから応募がありました。 организаций со всего мира, в том числе от IBM, NTT и др.

р.. . ш иф с й а ?

そしてついに

в конце концов AES に採用 в качестве AES...

されたのが

R...был ijndael выбран алгоритм «рэндал»! アルゴリズムよ!

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

2. Одноключевой шифр 82 共通鍵暗号化技術 82  第 2 章 Глава


о шифре AES AES 暗号の概要 Общие сведения  2000 年、Rijndael は、AES として FIPS(Federal Information Processing В 2000 году алгоритм «Рэндел» был выбран в качестве стандарта FIPSStandard: (Federal

Information Processing Standarts: федеральные стандарты обработки информации США). Название Rijndael (по-голландски произносится «Рэндел») составлено из ン・カトリック大学の研究者ホアン・ダーメン(Joan Daemen)とビンセント・ライメン имён разработчиков: Йоана Даймена (Joan Daemen) и Висцента Рэймена (Viscent Rijmen) из Лёвенского католического университета Бельгии. (Vincent Rijmen)にちなんでいます。 В зависимости от длины ключа существует три типа AES, показанных в  AES は、鍵長によって、表 2.4 に示す 3 タイプがあります。 табл. 2.4.

連邦情報処理標準)に採用されました。Rijndael の名は、開発者であるベルギーのルーヴェ

 

Таблица 2.4. Типы шифра AES 表 2.4 AES 暗号の種類

Тип タイプ

Длина ключа в битах ブロック長 Длина блока в битах Число段数 раундов 鍵長〔ビット〕 〔ビット〕

AES–128

128

128

10

AES–192

192

128

12

AES–256

256

128

14

Стойкость шифра тем выше, чем длиннее ключ и чем больше число раундов.  暗号の強度は、鍵長が長いほど、段数が多いほど、大きくなります。

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

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

неужели AES って этот AES そんなに ОБЛАДАЕТ 安全性がУЖ ТАКОЙ ВЫСОКОЙ 高いの?

СТОЙКОСТЬЮ?

ПРЕДСТАВИМ, ЧТО DES の解読に НА ВСКРЫТИЕ des 1 秒かかると требуется したら одна секунда. сколько времени AES の解読には тогда, по-вашему, どれくらい примерно потребуется かかると思う?на вскрытие AES?

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

83 83


около одного года?

а вот и нет! триллионов лет, как считается!

149

аа !!

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

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

84

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

ЗНАЧИТ, AES ОСТАНЕТСЯ БЕЗОПАСНЫМ И В БУДУЩЕМ?!


КСТАТИ, БРАТЕЦ,

ЭХ...

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

А...

ДА?! ПРАВДА?!

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

АХ! АХ!

АХ!

ВОТ!

85


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

ДРР

С Я!

ДРР ДРР

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

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

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

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

ОЙ...

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

86

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


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

2 進データへの変換 в двоичные данные Преобразование

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

Символы 文字

Двоичные 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

0111

(Исключённый (捨字) символ)

1111

H

DES 暗号文の生成 шифртекста DES Генерирование

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

う順に入力の第 2 ビットは出力の第 1 ビットに、……というように置換します。 Пример использования упрощённого DES

87 87


Открытый текст P 平文入力(2число) 進数) (двоичное Начальная перестановка 初期転置 IP IP

L0

段 目 1 Раунд

1

(4 бита) 4 ビット

(44 бита) ビット

f (R 0 , K 1 )

(4 бита) 4 ビット

R0 (6 битов) 6 ビット f

L1=R0

段 目 2 Раунд

2

ER0

(6 битов) 6 ビット

Ключ  鍵 K1 K1 (при расшифровании – K 2) (復号時は鍵 ключ K2)

f 0,K1) R1=L0 ⊕ (R

( f R1,K2) (44 бита) ビット

(6 битов) 6 ビット f

ER1

6 ビット (6 битов)

Ключ  鍵 K2K2 (при расшифровании – K 1) (復号時は鍵 ключ K1)

L2=R1

f R1,K2) R2=L1 ⊕(

L' 2 =R2

R' 2 =L2

(4 бита) 4 ビット

(4 бита) 4 ビット

1 –1 Конечная перестановка 最終転置 IP − IP 8 ビット (8 битов) Выходной шифртекст (L", R") 暗号文出力 2 2

Рис. 2.12. Порядок генерирования шифртекста упрощённого DES 図 2.12 簡易版 DES における暗号文の生成手順  Таблица 2.8.表Начальная перестановка IP 2.8 初期転置 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

Позиции выходных битов 出力ビット位置 IP 図 2.13 初期転置 Рис. 2.13. Начальная перестановка IP

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

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

Позиции входных битов 入力ビット位置 IP の別表現 図 записи 2.14 初期転置 Рис. 2.14. Другая форма начальной перестановки IP

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

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

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

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

89 89


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

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

1

2

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

7

8

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

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

-1 Рис. 2.15. Совместное действие перестановок: IP и конечной IP –1 IP と最終転置 IPначальной 図 2.15 初期転置 の組み合わせ

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

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

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

とします(鍵の生成については、後述します) 文字をDES, 4 ビットで表すことにし、MC строку символов MC в строку шифртекста。いま、1 упрощённого считая, что символы вы-

ражаются 4-битными двоичными числами. Согдасно табл. 2.7, строка MC буという文字列を簡略版の DES 暗号文にしてみましょう。表 2.7 より、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

1

0

0

0

1

0

0

1

Начальная перестановка IP 初期転置 IP Выходные данные 転置出力データ начальной перестановки

L0

R0

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

90 90  第 2 章

Глава 2. Одноключевой шифр 共通暗号化技術


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

Шаг 33 ステップ табл.E(Expansion 2.11, проводим перестановку с расширением E (Expansion  表Используя 2.11 の拡大転置 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) (рис. 2.17). 1 = 110001      ER0(K1)=ER0 ⊕ K1                         (5)         

=(011001)⊕(110001)

      =(101000)                     R0

1

0

0

0

1

1

0

0

1

   (6)

1

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

ER0

K1

1

1

0

0

0

1

ER0(K1)

1

0

1

0

0

0

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

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

91 91


Шаг 55 ステップ  表 2.12 の圧縮換字変換 S(Substitution)に基づき、式(6)を圧縮換字変換します(6 ビッ

Используя табл. 2.12, выполняем над выражением (6) замену со сжатием S

トを 4 ビットに減らして、換字を選びます) 。 битность уменьшится с 6 до 4). (Substitution) (в результате этой операции Таблица表2.12. Замена со сжатием S S 2.12 圧縮換字変換

Номера строк 列 番 号

Номера столбцов

行 番 号

    0 1 2 3

0 14 0 4 15

1 4 15 1 12

2 13 7 14 8

3 1 ④ 8 2

4 2 14  4

5 15 2 6 9

6 11 13 2 1

7 8 1 11 7

8 3 10 15 5

9 10 6 12 11

10 6 12 9 3

11 12 11 7 14

12 5 9 3 10

13 9 5 10 0

14 0 3 5 6

15 7 8 0 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) выражения (6):⓪) (101000) 2 = (0100) 2 =2(4) 10. 10 行目を選び、次に(0100)  例えば、式 の(① 0100 (①⓪) =(2) (4)10 2 に対しては、 2= Выбираем в табл. 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)となります(図 2.18) 。なお、 ( ) 2 進数、 (1101)2 → (0111)2 (рис. 2.18). Использованные здесь обозначения ( )2 и ( )10 указывают, 2 および( ) 10 の添字はそれぞれ является ли число в скобках двоичным или десятичным соответственно. 10 進数表示を示します。 Таблица 2.13. Выходная перестановка PS после PS замены со сжатием 表 2.13 圧縮換字変換の出力転置

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

ER0(K1)

1

0

1

0

1

1

0

1

0

1

1

1

0

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

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

f 0,K1) (R

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

92 92  第 2 章

Глава 2. Одноключевой шифр 共通暗号化技術

0


Рассматривая преобразования шага 4: сложение по модулю 2 с ключом K1, замену со сжатием S и выходную перестановку PS как единую нелинейную функцию f, мы мо以上の一連の処理計算が圧縮換字・転置変換です。この変換を非線形関数 f として、 жем записать:       f(R0, K1)=(0111)

                       (7)

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

Шаг ステップ66 соответствии с рис. 2.12, используя выражения (2), (3) и (7), находим выходное  図В2.12 より、1 段目の出力として上位 4 ビット(左側)L 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) закончен, и мы переходим ко ステップ 6 DES を反復して計算することにより、DES 暗号文を生  以下同様に、ステップ 3 からшифртекста 2-му раунду (шаги 7–10), в котором будут выполняться те же самые вычисления.  

成することができます。

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

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

     (12)

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

Шаг 99 ステップ Чтобы выполнить над выражением (13)2 перестановку со сжатием S, выбираем  式(13)の(⓪ 0011 ①) (⓪①) =(1)10 行目を選び、次に(0011) (3)10 列 2 に対しては、 2 = в табл. 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' (1000) 2 = R2 =

(19)

 R' (1111) 2 = L2 =

(20)

 

R2

L2

1

1

1

0

1

1

1

0

0

0

1

1

L' 2

0

0

1

1

R' 2

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

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

94

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


L"= (1110) 2

  

(21)

(1010)     R"= 2

(22)

 得られた暗号文(11101010) Шифртекст DES

(23) R' 2

L' 2

1

0

1

1

0

0

1

1

1

0

1

0

1

1

1

0

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

Шифртекст DES

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

1

0

0

0

1

1

1

1

Начальная перестановка 初期転置 IP Выходные данные начальной перестановки 転置出力データ

L' 2

R' 2

L0

R0

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

ステップ33 Шаг

E に基づき、式(25)の下線部分の第  表 2.11 の拡大転置 3 ビットと第 4Eビットを重複させて、 Используя табл. 2.11, проводим перестановку с расширением блока R0, продубли-

3-й и 4-й биты, подчёркнутые в выражении (25). Rровав 0 を拡大転置 E します。

     ER0 =(111111)                       

(26)

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

K2 = 111000.

= ER0 ⊕ K2                          ER0(K2)

(27)

                   

         =(111111)⧻(111000)          =(000111)             

        (28)

Шаг 55 ステップ  表 2.12 の圧縮換字変換に基づき、式(28)を圧縮換字変換します。式(28)の(⓪ 0011 ①)2

Чтобы выполнить над выражением (28) замену со сжатием S, выбираем в табл. 2.12

に対しては、 ячейку на (⓪①) пересечении строки с номером (000111)2 2==(3) (01)2 = (1)10 и столбца с номером 2 =(1) 10 行目を選び、次に(0011) 10 列目の交差する値(4) 10 を

(000111)2 = (0011)2.12 2 = (3) 10. 選択したあと(表 の○で囲まれた位置) 、2 進数に変換して(0100)2 を得ます。さらに

Преобразовав десятичное значение этой ячейки в двоичное число: (4)10 = (0100)2,

PS により、(0100) (0100) 2.13выходной の出力転置 →(0001)となり、最終的に、 2 は表его подвергаем перестановке 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, используя выражения (24), (25)4иビット(右側)R (29), находим выход1 と下位 1 を、式 ное значение 1-го раунда, состоящее из двух 4-битных блоков: старшего (левого) L1 и (24)、式(25)、式(29)を利用して、次式により求めます。 младшего (правого) 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

табл.E に基づき、R 2.11, проводим перестановку с расширением E (Expansion  表Используя 2.11 の拡大転置 1 を拡大転置します。 Permutation) блока R1 (32):      ER1 =(011001)                          (33)

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

=(101000)          

  

(35)

ステップ Шаг 99  式(35)の(① 0100над ⓪)выражением (①⓪) (2) 行目を選び,次に(0100) (4) Чтобы выполнить (35) замену со10сжатием S, выбираем в табл. 2.1210 2 に対しては、 2= 2= ячейку на пересечении строки с номером (101000) = (10) = (2) и столбца с номером 2 2 10 列目の交差する値(13) を選択したあと(表 2.12 の□で囲んだ位置) 、2 進数に変換して (101000)2 = (0100)2 = (4)1010. PS により、 (1101) の出力転置 Преобразовав десятичное 2.13 значение этой ячейки в двоичное число: (13)10 = (1101)2, 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). R2 =(1000)  L'= 2

(41)

L2 =(1001)  R'= 2

(42)

 

L2 1

0

1

R2

0

0

1

0

0

L' 2

1

0

0

0

1

0

0

1

R' 2

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

Шаг 12 В соответствии с табл. 2.10, выполняем конечную перестановку IP –1 двоичных данных рис. 2.22 (рис. 2.23).  L"= (1100)    2

(43)

 R"= (0010) 2

(44)

  

Открытый текст  得られた平文 1100 0010  「M」 「C」

98

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


L' 2

R' 2

1

0

0

0

1

0

0

1

1

1

0

0

0

0

1

0

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

Открытый текст 平文

L" ‘M’) 2 (=

R" ‘C’) 2 (=

図 2.23  [ステップ 12]の計算の流れ Рис. 2.23. Вычисления шага 12

 こうして得られた 8 ビットの出力データが平文に相当し、式(43)と式(44)の 2 進コードはそ Полученное нами 8-битное двоичное число является открытым текстом, а двоичные коды выражений (43) и (44) соответствуют символам «M», «C» по табл. 2.7. Таким れぞれ表 2.7 より「M」 、 「C」という文字であることから、DES 暗号文が解読できたことになります。 образом, расшифрование шифртекста DES было проведено правильно.  以上のことから、DES 暗号における暗号化処理と復号処理を対比させてみると、暗号化処 На основании вышеизложенного, сопоставив этапы шифрования и расшифрования DES, мы можем убедиться, что расшифрование происходит благодаря выполне理の流れをまったく逆にたどることにより、復号処理を実行していることが確認できます(図 нию в обратном порядке того же самого процесса, который использовался для шифро2.24)。 вания (рис. 2.24).

Шифрование 暗号化処理の流れ ①

復号処理の流れ Расшифрование

Открытый текст 平文(11000010)

Шифртекст 暗号文(11101010)

② Начальная перестановка 初期転置(10001001)

Ключ 鍵 KK11 鍵 КлючKK22

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

❶ ❷

L0(1000)R0(1001)

L0(1000)R0(1111)

L1(1001)R1(1111)

L1(1111)R1(1001)

L2(1111)R2(1000)

L2(1001)R2(1000)

L' 2 (1000)R' 2 (1111)

L' 2 (1000)R' 2 (1001)

Конечная перестановка(11101010) 最終転置 Шифртекст 暗号文

最終転置 Конечная перестановка(11000010) Открытый 平文 текст

Ключ 鍵 KK22 鍵 KK11 Ключ

Обратите внимание то, Ri が Li と下位 4наビット 上位 4 ビット что старший ( L ) и младший i i) 1,2) 入れ換わっていることに注意(i =(R0, 4-битные блоки на этих этапах меняются местами (i = 0, 1, 2) Рис. 2.24. Взаимосвязь шифрования и расшифрования 図 2.24 暗号化処理と復号処理の対応関係

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

99 99


Генерирование DES 暗号化鍵の生成ключей шифрования DES Теперь опишем порядок генерирования ключей шифрования и расшифрования из  続いて、DES 暗号の共通鍵について暗号化鍵、および復号鍵の生成手順を説明します。8 ビッ общего ключа DES. Сначала, положив 8-битный общий ключ (начальный ключ) K0 рав-

トの共通鍵(初期鍵)K 0 を、例えば、 ным, например, следующему значению:

     K0 =(10011001)                          (45)

проследим порядок для 1-го раунда (K1) и для K2 を暗号化鍵として生成する手順を紹介し として、まず図 2.12 の 1генерирования 段目の鍵 K1 と 2ключей 段目の鍵шифрования 2-го раунда (K2) (рис. 2.25).

ます(図 2.25)。

※1

В случае расшифрования все циклические сдвиги влево заменяются на циклические сдвиги вправо.

Общий секретный ключ K0K0 共通秘密鍵 Перестановка с выбором PC−1PС–1 選択転置

 ※注 ※2 1 復号鍵の生成の場合、左を右に読み換える

K' 0

В случае расшифрования

K2,K1 の順に得られる  ※注ключи 2 復号鍵の生成の場合、鍵 применяются в порядке K2, K1.

4 бита ビット

4 ビット бита

C0

D0

Циклический сдвиг влево на 1 бит 左 1 ビット巡回シフト

C1

Перестановка со сжатием PC−2PС–2 圧縮転置

Ключ 鍵 K11

D1

4 бита ビット

Циклический сдвиг влево на 2 бита 左 2 ビット巡回シフト

44 ビット бита

1

段 目 1 Раунд

66 битов ビット

Циклический сдвиг влево на 1 бит 左 1 ビット巡回シフト

Циклический сдвиг влево на 2 бита 左 2 ビット巡回シフト

66битов ビット

Ключ 鍵 K2

Перестановка со сжатием PC−2PС–2 圧縮転置

D2 4 бита ビット

44 ビット бита

段 目 2 Раунд

2

C2

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

ステップ Шаг 11

В соответствии с табл. 2.14 перемешиваем биты общего (секретного) ключа K0 (45) −  式(45)の共通鍵(秘密鍵)K 0 を、表 2.14 の選択転置 PC 1 に基づき、ランダム化すると、 с помощью операции перестановки с выбором PC-1 (рис. 2.26).  K'= (00110101)   0

            

が得られます(図 2.26)。

100 100  第 2 章

Глава 2. Одноключевой шифр 共通暗号化技術

(46)


Разделяем ключ K0' (46) на старший (C0) C и0младший (D0) 4-битные блоки. K'を、上位  ここで、式(46)の鍵 4 ビット と下位 4 ビット D0 に分けて、 0      C0 =(0011)                          

(47)

     D0 =(0101)                            (48) と表します。 −1 Табл. 2.14.表Перестановка с выбором PС-1 2.14 選択転置 PC

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

Начальный初期鍵 ключ KK00

Старший блокCiC i Младший блокDD 上位の4-битный 下位の4-битный 4 ビット 4 ビット i i 1 8

2 7

3 1

4 3

5 6

6 2

7 5

1

0

0

1

1

0

0

0

1

1

0

1

8 4

0

1

0

1

−1) Перестановка 選択転置(PC с выбором (PC–1) K' 0

D0

C0 −1 2.26 選択転置 PC Рис. 2.26. 図 Перастановка с выбором PC–1

ステップ Шаг 22  表В2.15 の左巡回シフトのビット数より、 1 段目の左巡回シフトのビット数は 1 ビットなので、 соответствии с табл. 2.15 величина циклического сдвига в 1-м раунде равна 1 биту, поэтому мы циклически сдвигаем все биты каждого из блоков C 0 и D0 по отдельноC0 と D0 の各ビットを 1 ビット左へ巡回シフトし、その結果を C1 と D1 と表します(図 2.27)。 сти на одну позицию влево и обозначаем полученные результаты 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

0

1

1

0

1

0

1

0

Циклический сдвиг 1 ビット влево на 1 бит 左巡回シフト

C1

D1

Рис. 2.27. Операции циклического сдвига влево (шаг 2) 図 2.27 左巡回シフトによる処理[ステップ 2]

ステップ Шаг 33

В соответствии с табл. 2.16 объединяем блоки C1 (49) и D1 (50) с 8помощью перестаC1 と D1 全体(式(49) に基づき、  表 2.16 の圧縮転置 PC−2 、式(50) )を ビットから 6 ビッ новки со сжатием PC-2 (битность уменьшается с 8 до 6) и получаем ключ K1, который

K1 が得られます(図 トに圧縮変換して、1 段目の暗号化に使う鍵 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

0

1

1

1

D1

1

0

1

0

1

0

PC−2 PC-2 圧縮転置 Перестановка со сжатием

Ключ K11 鍵K

0

0

0

1

PC−2 による処理[ステップ 図 2.28. 2.28 圧縮転置 Рис. Перастановка со сжатием PC-23] (шаг 3)

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

 以下同様に、ステップ 2 から ステップ 3 を反復して計算することにより、次々と暗号化に使 う鍵を得ることができます。

102 102  第 2 章

Глава 2. Одноключевой шифр 共通暗号化技術


ステップ Шаг 44  表В 2.15 の左巡回シフトのビット数より、 段目の左巡回シフトのビット数は 2 ビットなので、 соответствии с табл. 2.15 величина2 циклического сдвига влево во 2-м раунде равна 2 битам, поэтому мы циклически сдвигаем все биты каждого из блоков C1 и2.29) D1 по C1 と D1 の各ビットを 2 ビット左へ巡回シフトし、その結果を C2 と D2 と表します(図 。 отдельности влево на 2 бита и получаем C2 и D2 (рис. 2.29).      C2 =(1001)                           (52)      D2 =(1010)                           (53) C1

0

1

1

0

D1

1

0

1

0

0

1

1

0

1

0

1

0

2 ビット Циклический сдвиг 左巡回シフト влево на 2 бита

C2

D2

Рис. 2.29. Операции циклического сдвига влево 図 2.29 左巡回シフトによる処理[ステップ 4](шаг 4)

Шаг 55 ステップ

−2 に基づき、 соответствии табл. 2.16 объединяем блоки C2 (52)、式(53) и D2 (53))を с помощью перестаC2 と D2 全体(式(52)  表В2.16 の圧縮転置сPC 8 ビットから 6 ビッ новки со сжатием PC-2 (битность уменьшается с 8 до 6) и получаем ключ K2, который トに圧縮変換して、2 段目の暗号化に使う鍵 K2 が得られます(図 2.30)。 будет использоваться во втором раунде шифрования (рис. 2.30).      K2 =(111000)    

                   (54) C2

1

0

D2

0

1

1

0

1

0

Перестановка со圧縮転置 сжатием PC-2 PC−2

Ключ K22 鍵K

1

1

1

0

0

0

PC−2 図 2.30 圧縮転置 5] 5) Рис. 2.30. Перастановка соによる処理[ステップ сжатием PC-2 (шаг

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

103 103


DES 復号鍵の生成 ключей расшифрования DES Генерирование

Ключи шифрования мы генерировали0 в=(10011001)をもとにして、K порядке K1, K2 из общего ключа (начально 暗号化鍵は、式(45)の共通鍵(初期鍵)K 1,K2 の順に生

го ключа) K0 = 10011001 (45). Ключи расшифрования необходимо генерировать из об-

K0 をもとにして、K 成されました。逆に、暗号文を平文に戻す復号鍵は、共通鍵 2,K 1 の順に生 щего ключа K0 в обратном порядке – K2, K1. При использовании алгоритма, показанно-

го на рис. 2.25, это может быть достигнуто благодаря замене операций циклического 成される必要があります。このとき、図 2.25 と同じ処理手順で生成するならば、暗号化鍵の生 сдвига влево, выполнявшихся в процессе генерирования ключей шифрования, на опе-

成では左に巡回シフトしていた処理を、復号鍵の生成では右に巡回シフトする処理に置き換える рации циклического сдвига вправо. Ниже мы проследим порядок генерирования клю-

чей расшифрования на основе2.12 рис.に基づき、復号鍵を得る手順をまとめます。 2.25. ことで実現できます。以下に、図

ステップ11 Шаг В соответствии с табл. 2.14 перемешиваем биты общего (секретного) ключа K0 (45) −  式(45)の共通鍵(秘密鍵)K 0 を、表 2.14 の選択転置 PC 1 に基づき、ランダム化します。 с помощью операции перестановки с выбором PC-1.      K' (00110101)                          (55) 0 =      C0 =(0011)                            (56)      D0 =(0101)                            (57) ステップ22 Шаг  表 2.17 の右巡回シフトのビット数より、 1 段目のビット数は 1 ビットなので、 В соответствии с табл. 2.17 величина циклического сдвига вправо вC1-м раунде рав0とD 0 の各ビッ на 1 биту, поэтому мы циклически сдвигаем все биты каждого из блоков C 0 и D0 по отトを 1 ビット右へ巡回シフトし、その結果を C1 と D1 と表します(図 2.31)。 дельности на одну позицию вправо и обозначаем полученные результаты C 1 и D1 (рис. 2.31).      C1 =(1001)                            (58)      D1 =(1010)                            (59) 表 2.17 右巡回シフトのビット数 Таблица 2.17. Величины циклического сдвига вправо

Номера раундов 段数

104 104  第 2 章

1

2

Величины циклического сдвига 1 シフトビット数

2

Глава 2. Одноключевой шифр 共通暗号化技術


C0

D0

0

0

1

1

0

1

0

1

1

0

0

1

1

0

1

0

Циклический 1 ビットсдвиг вправо на 1 бит

右巡回シフト

C1

D1

図 2.31 右巡回シフトによる処理[ステップ 2] Рис. 2.31. Операции циклического сдвига вправо (шаг 2)

ステップ Шаг 33

−2 に基づき、C1 と D1 全体(式(58)、式(59))を 8 ビットから 6 ビッ  表В2.16 の圧縮転置сPC соответствии табл. 2.16 объединяем блоки C1 (58) и D1 (59) с помощью переста-

новки со сжатием PC-2 (битность уменьшается с 8 до 6) и 2.32) получаем ключ K2, который K2 が得られます(図 トに圧縮変換して、1 段目の復号に使う鍵 。 будет использоваться в первом раунде расшифрования (рис. 2.32).      K2 =(111000)                           

C1

1

0

(60)

                

D1

0

1

1

0

1

0

Перестановка圧縮転置 со сжатиемPCPC-2 −2

K2 K2 鍵 Ключ

1

1

1

0

0

0

PC−2 による処理[ステップ 2.32 圧縮転置 (шаг 3) Рис.図2.32. Перестановка со сжатием PC-23]

Шаг 44 ステップ D1 の各ビッ  表В2.17 の右巡回シフトのビット数より、 2 段目のビット数は ビットなので、 соответствии с табл. 2.17 величина циклического 2сдвига вправоCво 2-м раунде 1と равна 2 битам, поэтому мы циклически сдвигаем все биты каждого из блоков C 1 и D1 トを 2 ビット右へ巡回シフトし、その結果を C2 と D2 と表します(図 2.33)。 по отдельности на две позиции вправо на 2 бита и получаем C2 и D2 (рис.2.33).      C2 =(0110)                            (61)      D2 =(1010)                           (62)

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

105 105


C1

1

0

0

1

D1

0

1

1

0

1

0

1

0

1

0

1

0

Циклический 2 ビットсдвиг вправо на 2 бита 右巡回シフト

C2

D2

Рис. 2.33. Операции циклического сдвига вправо (шаг 4) 図 2.33 右巡回シフトによる処理[ステップ 4]

ステップ Шаг 55

に基づき、  表 2.16 の圧縮転置 PC−с2табл. と D2 全体(式(61) ビットから 6 ビッ В соответствии 2.16C2объединяем блоки、式(62) C 2 (61) )を и D 28 (62) с помощью

перестановки со сжатием PC-2 (битность уменьшается с2.34) 8 до。6) и получаем ключ K1, K1 が得られます(図 トに圧縮変換して、2 段目の復号に使う鍵 который будет использоваться во втором раунде расшифрования (рис. 2.34).

     K1 =(110001)       

(63)

                                 

C2

0

1

D2

1

0

1

0

1

0

PC− Перестановка со сжатием PC-2 圧縮転置 2

Ключ 鍵 K1K1

1

1

0

0

0

1

PC−со 図 2.34 圧縮転置 2 による処理[ステップ 5]5) Рис. 2.34. Перестановка сжатием PC-2 (шаг

Наのосновании результатов, сравнивая расшифрования  以上 結 果 か ら、 вышеприведённых 復 号 に 使 う 鍵( 式(60) 、 式(63)) と 暗 号 化 ключи に 使 う 鍵( 式(51)、 式 (60), (63) с ключами шифрования (51), (54), можно сделать вывод, что вышеописанным способом можно получать ключи расшифрования в порядке K2, K1, обратном порядку で復号に使う鍵が得られることがわかります。 получения ключей шифрования (K1, K2). (54))との対比から、暗号化に使う鍵が得られる順(K1,K2 の順)とは逆順(K2,K1 の順)

106 106  第 2 章

Глава 2. Одноключевой шифр 共通暗号化技術


Глава 3

第3章 公開鍵暗号化技術

ш ифр с открытым ключом


3-1 Основы шифра с открытым ключом  3 ー 1 公開鍵暗号の基本 ин Магази н

Дёшево

пьютеры

Магаз

Поздравляю с よかったわね!  долгожданным 買ってもらえて компьютером!

えへへ хе-хе

お兄ちゃん спасибо, ありがとう братец!

ох... в ちぇっ моём кошельке стало совсем すっからかんだよ пусто!

これから мне придётся переходить на 当分ラーメン лапшу рамэн!

ばっかりだな…

3. шифр с открытым ключом 108    第 3 章Глава 公開鍵暗号化技術 108

いつだって ラーメンчто ест делает, «рамэн»... 食べてるくせに

а сам только и


パソコンがあれば с помощью компьютера いろんなことが можно многое... できるわ…

гла д

ь

что?!

гладь

えへへ хе-хе

おいおい ты же 勉強に говорила, что для 使うんだろ? учёбы?

общение по е-мейл, メール интернетショッピング шоппинг, ゲーム…… онлайн-игры...

わたしも

я тоже часто インターネットで делаю покупки よく買い物を в интернете!

しているわ

х аю и а чи в л п о й и о о вск ба н к ой . т р а к о! до бн та к у Э то

но не опасно ли это? 危険じゃないのか? ведь информацию クレジットカードの情報が кредитной карты 盗まれたりとか… могут украсть...

чтобы не украли, 盗聴されないために используют 公開鍵暗号技術が шифрование с открытым 利用されてるのよ ключом!

3-1 Основы шифра с открытым ключом

109 109


これ смотри, какая красивая ステキでしょ? сумка!

Интернет-магазин

Рай покупок

да, まあ… наверное...

そうかもな

хотя я не очень хорошо разбираюсь...

Сумка класса «люкс»

Купить Описание

теперь

じゃあちょっと

давай испытаем クレジットカード твою кредитную 貸してкарту.

молодец! はい а теперь мы кликнем по クリック! этой кнопочке!

Купить

это ещё どうする気だ? зачем?

попробуй

情報を入れて

информацию.

なっчто ты наделала?! なにをした !?

Описание

клац

3. шифр с открытым ключом 110    第 3 章Глава 公開鍵暗号化技術 110

клац

ввести сюда

кл

посмотри これ見て! вот на это!

ац


Сертификат Основное Подробности Путь сертификации Показать (S): <Всё> Поле

Значение

Серийный номер Алгоритм подписи Центр выдачи Действителен не ранее 16 мая 2006 г., 8:18:11 Действителен не позже 16 мая 2007 г., 8:18:11 Субъект Открытый ключ

Редактировать (E)...

Копировать(С)...

Открытый ключ отображается 公開鍵は、暗号による通信を行っ только в состоянии шифрованного ている状態のときに表示できます。 соединения. Если в качестве брауExplorer ブラウザが の場合は、メ зера используется Internet Explorer, тоニューをファイル→プロパティ→ для отображения открытого ключа необходимо пройти по пун証明書→詳細の順にたどっていき ктам меню: Файл → Свойства → ます。 Сертификат и открыть вкладку Подробности. Safari や F irefox のブラウザの場 При использова合 は、 南京錠の нии таких браузеマークをクリック ров, как Safari или して、詳細な情報 Firefox, необходимо にкликнуть ア ク セ スпо しま изображению す。 перед замка адресной строкой и просмотреть подробную информацию.

В современных браузерах всё не так – Прим. ред..

おおого! тут какие-то 16 進数が длинные ряды えらくたくさん шестнадцатеричных 並んでるぞ  чисел!

это что, и есть これが公開鍵か !?

открытый ключ?!

да! そうよ благодаря こうして нему связь 安全に通信 становится できるのよ! безопасной!

おおкак здорово! それなら安心 тогда я だっ спокоен!! !!

Вор あんた спокоен? 勝手にカード 使われてるよ… твою кредитную

хи-хи

она использует

карту, как хочет...

3-1 Основы шифра с открытым ключом

111 111


но ведь в шифрах, こ れкоторые までの暗号 で は  мы изучали до этого, 鍵は絶対に知られちゃ ключ нужно было いけないはずよね? держать в секрете...

на самом деле все используют …というわけで открытый ключ ふだん в интернете, 気付かなくても даже ничего не зная об этом!

да, そうだ да!! そうだ !!

実はみんなが давайте посмотрим, インターネットで как он 使っている公開鍵に работает! ついて学びましょう!

на самом

実はделе, кроме 鍵は公開鍵 открытого だけではなくて

тогда どうしてпочему здесь его 鍵が知られても можно спокойно 平気なの? раскрыть?

ключа,

здесь 秘密鍵という используется ものも使う и секретный のよ!тоже! ключ

Открытый Открытый 公開鍵ключ 平文 текст Шифрова暗号化 ние

Секретный 秘密鍵 ключ

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

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

送信者 Отправитель

音声通信 Голосовая связь, 受信者 Получатель データの送受信данных, передача データの記録,蓄積など запись и накопление данных и т. д.

3. шифр с открытым ключом 112    第 3 章Глава 公開鍵暗号化技術 112

Открытый 平文 текст


Секретный ключ 秘密鍵

Открытый ключ

公開鍵

в общем, в том

つまり интернет-магазине さっきのショッピング данные, передаваемые пользователем, では客からのデータが зашифровывались 公開鍵で暗号化され открытым ключом...

...а интернет-магазин 店側が秘密鍵で расшифровывал 復号しているって их с помощью イメージなの секретного ключа.

спасибо за покупку!

я хочу купить эту сумку.

Ма

Сумки

газ

ин

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

Публикация 鍵の公開 ключа

то есть для шиф暗号化に使う рования и рас公開鍵と復号にисшифрования пользуются раз使う鍵は違うの? ные ключи?

そうよ да. поэтому だから такой шифр 非対称鍵暗号方式と называют ещё асимметричным. も呼ばれているわ

Ключ 鍵 DD k k

Получатель (магазин) публикует ※受信者(店側)が暗号化鍵 ключ шифрования Ek, Dk を k を公開し,復号鍵 но E держит в секрете ключ расшифрования Dk.  秘密にします。

公開鍵暗号方式 Криптосистема с открытым ключом (Public Key Cryptosystem)

 

     

Ключ 鍵 EE kk

Расшифро- Открытый 平文 текст вание:

Получатель

Открытый Шифрова平文 ние: текст

受信者

復号

暗号化

送信者

Отправитель

盗聴者 Перехватчик

非対称鍵暗号方式 Асимметричная криптосистема

(Asymmetric Key Cryptosystem)

3-1 Основы шифра с открытым ключом

113 113


каждому 鍵が по два 2 種類ずつ?  ключа?

ключей

共通鍵方式より понадобится 鍵の数が多く больше, чем для одноключевого なるな!

そんなこと ничего подобного! ないわよ!

шифра!

нет нет

как? へ?

если у всех

通信する当事者が пользователей будет по два ключа: 秘密鍵と公開鍵を секретный и открытый, 1 つずつ持っていれば то они смогут обмениваться друг с другом 全員で暗号による通信 зашифрованной ができるわ! информацией!

В шифре с открытым с ключом для

n 人が互い обмена зашифрованной информаци公開鍵暗号方式では、利用者 ей между n пользователями требуется に暗号通信をするとしても、鍵の総数は всего 2n ключей. n 個あればすみます。 2Например, если в одноключевой 利用者が 1000 人の場合、共通鍵暗号方 криптосистеме для обмена информацией между тысячей пользователей 式では、  

потребуется:

1000

C2 =

1000 ×( 1000 - 1 ) , 2

で、鍵が 499500ключей, 個必要ですが、公開鍵 то в криптото есть 499 500 системе с открытым 暗号方式では 2×1000 ключом で、鍵はпри 2000 個 том же количестве пользователей しか必要としていません。 понадобится всего

2 × 1000 = 2000 ключей.

ведь ключ 公開されてる鍵を шифрования 使って暗号化すれば является いいので открытым...

3. шифр с открытым ключом 114    第 3 章Глава 公開鍵暗号化技術 114

ほほう! ага!

...поэтому его, в отличие от 共通鍵と違って одноключевого шифра, легко 鍵の配送も передавать 問題にならないわ по обычным каналам связи.


однако...

одни преимущества!

открытый ключ, который

почему бы тогда не отказаться от одноключевого

мы видели, был таким длинным!

шифра вообще?

Длина ключа одноключевого шифра (общего ключа) равна 64, 128 или 256 битам, а длина открытого ключа – больше, например 1024 бита.

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

забегая вперёд,

и ещё,

скажу,

имея общий ключ

как?!

что

с каждым

применяются,

пользователем...

например, гибридные

...вы будете

криптосистемы..,

точно знать, с кем имеете дело... мм...

хм.. .

Манга

Криптология

....в которых общий и открытый ключи а как же

используются вместе

зашифровывают

друг с другом.

длинные

о них будет рассказано

сообщения?

в главе 4.

(См. стр. 188) 3-1 Основы шифра с открытым ключом

115


г н и Спуф

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

Фи ши

а ен д м ны х По дан

нг расскажи нам

для этого

сначала о

используется

видах и устройстве

аутентификация.

шифра с открытым

тология

ключом.

о ней я тоже потом расскажу!

(См. стр. 198)

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

116

Глава 3. шифр с открытым ключом


Основные разновидности шифра с открытым ключом В зависимости от используемого фокуса криптографической магии шифры с открытым ключом делятся на две большие группы. Используемый фокус: задача дискретного логарифмирования

Используемый фокус: задача факторизации целых чисел

∙ Шифр Эль-Гамаля ∙ Криптосистемы на эллиптических кривых ∙ Алгоритм DSA и другие

∙ Шифр RSA ∙ Шифр Рабина и другие

фокус криптографической магии?! задача фактризации целых чисел? задача дискретного

чтобы повысить

чтобы понять это, требуется изучить основы криптологии!

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

логарифмирования?

на поиск решения которых потребуется много времени и усилий.

ам та -д что всё это такое?!

неужели придётся

прежде всего

изучать всю эту

я расскажу про одно-

сложную

сторонние функции

математику?

необходимые для обеспечения безопасности шифра с открытым ключом.

нет! не хочу!

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

3-1 Основы шифра с открытым ключом

117


一方向性関数 Односторонние функции

Функцию, которую легко вычислить для любого входного значения, но вычис 一方の向きには計算できて答えが出せても、反対向きに計算するのが極めて困難な性質を лить входное значение по заданному значению функции, наоборот, чрезвычайно 一方向性といい、そのような働きを持つ関数を一方向性関数といいます。 сложно, называют «односторонней». Приведём здесь примеры односторонних функций.  ここで、一方向性関数の例を見てみましょう。 Задача факторизации целых чисел (1)素因数分解問題

Перемножить два больших простых числа достаточно легко, но чрезвычайно  大きな 2 つの素数を掛け合わせて、その結果を求めることは簡単です。ところが反対に、 трудно, зная только результат этого произведения (составное число), определить,

掛け合わせた数(合成数)から、元の 2 つの素数を求めることは非常に困難です。 какие простые числа были перемножены (то есть разложить составное число на простые множители).  合成数から元の素数を求めることを素因数分解問題といいます(122 ページ参照)。

Эту задачу называют задачей факторизации целых чисел (см. стр. 122).

Задача дискретного логарифмирования (2)離散対数問題  次のような合同式を考えてみます。 Рассмотрим следующую формулу сравнения по модулю p. x ≡ y( mod p )      a =

Поx известным значениям a и x достаточно легко найти значениеa と y, однако по y を求めることは比較的容易です。ところが、 y がわかっ  a と がわかっている場合に

известным значениям a и y чрезвычайно трудно найти значение x, которое является логарифмом y. Это называется задачей дискретного логарифмирования. Слово 連続の反対語で、とびとびの値であることを示しています(175 ページ参照) 。 непрерыв«дискретный» означет величину, значение которой не может изменяться но, другими словами, она может принимать только отстоящие друг от друга значения (см. стр. 175).

ていても、y の対数の x を求めることは非常に困難です。これが離散対数問題です。離散とは、

некоторые

難しそうな термины могут 言葉が多いけど

показаться сложными,

少しずつ ...но постепенно вы поймёте, わかってくるから поэтому 心配しないで не волнуйтесь.

3. шифр с открытым ключом 118    第 3 章Глава 公開鍵暗号化技術 118

ほんとだなっ правда?! !?


ところでзачем кстати, なぜ一方向性が нужны эти односторонние 必要なの? функции?

о й ь! Дол жност с ло

да,公開鍵暗号の場合 но в случае шифра с открытым ключом, если 一方向性でないと функция не будет одно秘密鍵が割り出されてしまう сторонней, есть опасность раскрытия 危険があるのよ! секретного ключа!

Опа с

но !

ведь одноключевой шифр 共通鍵暗号では мы расшифровывали, как 暗号化のプロセスを逆向きに раз-таки выполняя процесс шифрования 行って復号したじゃない! в обратном порядке!

ох .. .

ведь если использоでも完全な вать совершенно од一方向性関数を使うと ностороннюю функцию, то расшифрова復号もできなくなる ние будет невозможんじゃないか? ным, не так ли?

но постой.

おいおい

наверное, для

復号には расшифрования можно 秘密鍵を使えば использовать いいんじゃないの !? секретный ключ!

скользь

верно! そうよ! односторонние функции имеют такую そのような秘密鍵の хитрую лазейку, отпираемую 仕掛けがあるключом. секретным

一方向性関数のことを

поэтому их называют 落とし戸付き一方向性関数と односторонними функциями с потайным входом. いうのよ

3-1 Основы шифра с открытым ключом

119 119


Если выйти наружу из комнаты с автоматически запирающейся дверью, не имея при オートロックのドアから外に出てしまうと、鍵を持っていない限り、中に戻れなくなります。この себе ключа, то вы не сможете вернуться внутрь. Функции, имеющие такое устройような仕組みの関数が、落とし戸付き一方向性関数です。 ство, называют односторонними функциями с потайным входом.

Из комнаты наружу 鍵なしでも部屋から можно выйти, даже 出ることができる не имея ключа.

Войти в комнату без 鍵なしでは部屋に ключа не получится. 入ることはできない

Если ключ есть, то 鍵があれば部屋に можно войти в ком入ることができる нату.

итак, теперь давайте では次に поговорим 公開鍵暗号である о рождении шифра RSA, КОТОРЫЙ ЯВЛЯЕТСЯ ШИФРОМ RSA 暗号の誕生と  С ОТКРЫТЫМ КЛЮЧОМ... ...И О ТОМ, КАКИЕ そのなかで数学が МАТЕМАТИЧЕСКИЕ どのように用いられているか ЗАКОНОМЕРНОСТИ 見ていきましょう! В НЁМ ИСПОЛЬЗУЮТСЯ!

3. шифр с открытым ключом 120    第 3 章Глава 公開鍵暗号化技術 120

ЭТО БЫЛА ДОЛЖНА С КА З АТЬ Я !!


RSA 暗号の誕生 Рождение шифра RSA

Шифр RSA, опубликованный в 1977 году, является первым в мире шифром с от RSA 暗号は、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人、リヴェストは что 17 лет – это очень большой срок, но один из разработчиков でしょうが、RSA 1000 年はかかるだろうと予想していただけに、 шифра RSA – Рональд Ривест, прогнозировал, что 1000 лет на расшифровку точно по出題者たちにとっては思いのほか短いものだったようです。ちなみに解読されたメッセージは、 требуется. Получается, что, с точки зрения разработчиков, шифр был вскрыт очень 「THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE」でした。 быстро. Кстати, зашифрованное сообщение было следующим:  現在の RSAWORDS 暗号に使われる数字は、10 300 桁以上です。これを素因数分解しよ THE MAGIC ARE SQUEAMISH 進数にして OSSIFRAGE. В настоящее время в шифре RSA используются десятичные числа, имеющие не うとすれば、天文学的な時間がかかることになります。 менее 300 разрядов, для факторизации которых потребовались бы астрономические сроки.

3-1 Основы шифра с открытым ключом

121 121


3-2 Простые числа и факторизация

для начала Я раздам вам эти материалы!

МАТЕМА ТИКА, МАТЕМА ТИКА...

это тоже нужно для понимания шифра RSA!

весёлые простые числа?

совсем даже не весело!

я распрощался с математикой после неудачной попытки понять

Весё лые простые числа

деление дробей!

д ры

122

О ЭТ Л О! Е С ВЕ

г

Глава 3. шифр с открытым ключом


В математикЕ шифра RSA RSA 暗号の数学で ИСПОЛЬЗУЮТСЯ ТОЛЬКО НЕОТРИЦАТЕЛЬНЫЕ 扱うのは非負整数だけ ЦЕЛЫЕ ЧИСЛА!

ТАМ НЕТ НИ 無理数も分数も ИРРАЦИОНАЛЬНЫХ 出てこないけど ЧИСЕЛ, НИ ДРОБЕЙ!

Рациональные 有理数 числа Целые числа и 整数と分数に дробные числа 含まれる数 (дроби).

Натуральные

Целые 整数 числа

自然数 числа

числа, которые Натуральные ноль Целые 自然数と 0числа, と負の 1 以上の整数 не меньше единицы: и отрицательные числа: 整数に含まれる数 (1, 3,…) 3,...). (...−2, −1, 0, 1, 2, 3,...). (1, 2,2,

(…,-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個

6人

5個

10 人

3個

15 人

2個

30 人

1個

верно! そのとおり! эти числа детей, このように余りなく

分けられる人数や 個数にあたる数を поровну без остатка... допускающие

разделение мандаринов

...или числа мандаринов,

которые каждый ребёнок 『約数』あるいは

получит при таком делении,

『因数』というのよ называются делителями.

Число 30(因数) имеетは{ 1, 30 の約数 восемь делителей: 2,3,5,6,10,15, {1, 2, 3, 5, 6, 10, 15, 30} 30 }の 8 種類です。

次に далее, натуральное число, ある自然数で которое имеет только 1 とその数自身しか два делителя: единица и約数でないものが само это число, そ すう называется 』よ! 『素数 «простым»!

а единица1 は素数 это простое じゃないのか? число?

нет, в математике 数学上の約束事として принято не отно1 は素数に含めない сить единццу кことになっているの простым числам.

с, ти на п ро с ица ! ед и н

3. шифр с открытым ключом 124    第 3 章Глава 公開鍵暗号化技術 124

давайте теперь 20 までの素数を посмотрим на 見ていきましょう простые числа до 20!


Таблица 3.2. Тест на 表 простоту натуральных чисел от 2 до 20 3.2 20 までの素数判定

2

自分自身(2)と 1 でしか割り切れない Делится без остатка только на себя (2) и на 1

Простое число 素数である

3

Делится без остатка только на себя (3) и на 1 自分自身(3)と 1 でしか割り切れない

Простое число 素数である

4

2 で割り切れる Делится без остатка на 2

Непростое число 素数でない

5

自分自身(5)と 1 でしか割り切れない Делится без остатка только на себя (5) и на 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

自分自身(11)と Делится без остатка1 でしか割り切れない только на себя (11) и на 1

12

2,3,4,6 で割り切れる Делится без остатка на 2, на 3, на 4 и на 6

13

自分自身(13)と Делится без остатка1 でしか割り切れない только на себя (13) и на 1

14

2,7 で割り切れる Делится без остатка на 2 и на 7

素数でない Непростое число

15

3,5 で割り切れる Делится без остатка на 3 и на 5

素数でない Непростое число

16

2,4,8без で割り切れる Делится остатка на 2, на 4 и на 8

素数でない Непростое число

17

Делится без остатка1 でしか割り切れない только на себя (17) и на 1 自分自身(17)と

18

Делится без остатка на 2, на 3, на 6 и на 9 2,3,6,9 で割り切れる

19

自分自身(19)と Делится без остатка1 でしか割り切れない только на себя (19) и на 1

20

2,4,5,10 で割り切れる Делится без остатка на 2, на 4, на 5 и на 10

Числа, не являющиеся 素数でない数を простыми, называются 合成数といい составными, так как их 素数の積(掛け合わせ)で можно представить в виде произведения 表すことができるのよ! простых чисел!

素数である Простое число

Непростое число 素数でない 素数である Простое число

素数である Простое число

Непростое число 素数でない 素数である Простое число 素数でない Непростое число

и это それを называется 素因数分解と факторизацией いうわчисел. целых

3-2 Простые числа и факторизация

125 125


любое составное число それぞれの合成数を можно разложить 素因数分解する方法は на простые множители 通りしかないのよ только1 одним способом, и это свойство называется これを素因数分解の «однозначностью 一意性というの факторизации целых чисел».

4 = 22 = 2 × 2 6 = 2 × 3  8 = 23 = 2 × 2 × 2 9 = 32 = 3 × 3 10 = 2 × 5  12 = 22 × 3 = 2 × 2 × 3 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 個 1 個調べて нужно проверять на простоту いかなきゃ все числа いけないのか? одно за другим?

ふるい существует метод エラトステネスの篩 под названием という方法があるわ «решето эратосфена».

в нём используется 次の性質を вот такое 利用するのよ! свойство!

なんで но почему это так? そうなるの?

Эратосфен

3. шифр с открытым ключом 126    第 3 章Глава 公開鍵暗号化技術 126

エラトステネス

Если натуральное число N не делится без以下のすべての素数 остатка N が√N 自然数 ни на одно из простых чисел, で割り切れなければ、自然数 N は которые меньше или равны √N, 素数である。 то это натуральное число N является простым.


Подумай над

N= pq と考えてみ выражением て! N = pq.

N = pq p ≦√N q ≦√N

N が 2 つの自然数 pq の積で N можно представить 表されるなら в виде произведения двух q の pq, 少なくとも p かчисел натуральных いずれかは то хотя бы одно из этих √N 以下でないと чисел - p или q, должно быть меньше いけないからよ

Если

или равно

なるほど!  ясно! Ведь если pと qが q будут оба両方とも√N числа p иより больще √N 大きければ , то их произведение N より その積は окажется больше N. 大きくなっちゃうわね

√N.

p >√N かつ и q >√N

pq > N 

わしゃя древнегреческий 古代ギリシャ人の учёный! 学者じゃ

Эратосфен

それで… ну, и причём здесь этот «эрот» エラなんとかってのは или как его там? なんなんだ?

初めて 地球の大きさを это я первый 計算したのも вычислил размеры земли! わしだぞ!

3-2 Простые числа и факторизация

127 127


1 から 400 までの

решето эратосфена 素数を判定する эффективный метод 効率的な方法よ теста на простоту.

в ячейки таблицы 数字が書いてある вписаны числа от 1 до 400... マス目が並んでるわね

взгляните на プリントを見て эту распечатку.

1 21 41 61 81 101 121 141 161

2 22 42 62 82 102 122 142 162

3 23 43 63 83 103 123 143 163

4 24 44 64 84 104 124 144 164

5 25 45 65 85 105 125 145 165

6 26 46 66 86 106 126 146 166

7 27 47 67 87 107 127 147 167

8 28 48 68 88 108 128 148 168

9 29 49 69 89 109 129 149 169

10 30 50 70 90 110 130 150 170

181 201 221 241 261 281

182 202 222 242 262 282

183 203 223 243 263 283

184 204 224 244 264 284

185 205 225 245 265 285

186 206 226 246 266 286

187 207 227 247 267 287

188 208 228 248 268 288

189 209 229 249 269 289

190 210 230 250 270 290

11 12 13 14 15 16 17 18 19 20 31 32 33 34 35 36 37 38 39 40 51 52 53 54 55 56 57 58 59 60 71 72 73 74 75 76 77 78 79 80 91 92 93 94 95 96 97 98 99 100 111 112 113 114 115 116 117 118 119 120 131 132 133 134 135 136 137 138 139 140 151 152 153 154 155 156 157 158 159 160 171 191 211 231 251 271 291

172 192 212 232 252 272 292

173 193 213 233 253 273 293

174 194 214 234 254 274 294

175 195 215 235 255 275 295

176 196 216 236 256 276 296

177 197 217 237 257 277 297

178 198 218 238 258 278 298

179 199 219 239 259 279 299

180 200 220 240 260 280 300

301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 341 361 381

322 342 362 382

323 343 363 383

324 344 364 384

325 345 365 385

326 346 366 386

327 347 367 387

328 348 368 388

329 349 369 389

330 350 370 390

331 351 371 391

√Так 400как = 20√400 だから= 20,

числа, которые сами 20 以下の素数 не превышают 400 и  2,3,5,7,11,13, не делятся нацело 17,19 で на простые числа, не превышающие 20: 割り切れない数が {2, 3, 5, 7, 11, 13, 17, 19}, -

400 以下の素数 ということになるわ числами.

являются простыми

3. шифр с открытым ключом 128    第 3 章Глава 公開鍵暗号化技術 128

332 352 372 392

333 353 373 393

334 354 374 394

335 355 375 395

336 356 376 396

337 357 377 397

338 358 378 398

339 359 379 399

340 360 380 400

а теперь закрась まず 2 は素数だから в этой таблице 残しておいて все числа, кратные 2! само число 2 それ以外の 2 の не закрашивай, 倍数を塗り消して так как это простое ちょうだいчисло. !!


Ух!

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.

3

5

7

9

11

13

15

17

19

21

2

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

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

363

365

367

369

371

373

375

377

379

381

383

385

387

389

391

393

395

397

399

теперь сделай это для всех простых чисел до 19.

ох...

3-2 Простые числа и факторизация

129


готово! できたぞ!

2

3

5

7

23 41

43

61

11 29

47

101

103

107

19

37

71

59

73

79

89

97

109

127 149 163

17

53

67 83

13

31

113 131

137

151

157

167

139

173

181

191

179

193

197

199

211 223

227

229

241 263 281

233

239

251 269

257

271

283

277 293

307

311

313

317

331 347

349

367 383

337 353

359

373

379

389

ほら смотри! мы нашли все 400 までの素数が простые числа, みんな拾いだせたわ! меньшие 400!

397

Пр о сты ч ис ла е

かんたん просто, неじゃろ? так ли?

Эратосфен

3. шифр с открытым ключом 130    第 3 章Глава 公開鍵暗号化技術 130

вот!


но искать パソコンを большие 使えば простые числа 楽かも очень しれない трудно...

а ВЕДЬ простые числа, RSA 暗号に使う используемые в 素数はすごい ШИФРЕ RSA, ИМЕЮТ ТАКОЕ ОГРОМНОЕ КОЛИЧЕСТВО 桁数なんだろ? РАЗРЯДОВ...

けれど

...если только 大きな数の素数を не делать этого 見つけるのは大変だと на компьютере! 思うわ!

хл о п

ПОЭТОМУ В ДЕЙСТВИТЕЛЬНОСТИ そこで実際には СНАЧАЛА НАХОДЯТ 素数らしい大きな数を БОЛЬШОЕ ЧИСЛО, 見つけてきて КОТОРОЕ ПОХОЖЕ НА ПРОСТОЕ...

хл о п

本当に素数かどうかを ...А ЗАТЕМ ПОДВЕРГАЮТ 調べる方法が ЕГО ТЕСТУ на ПРОСТОТу. とられているわ

素数判定 Тест на простоту

Хотя решето Эратосфена является методом, позволяющим надёжно обнаружи エラトステネスの篩 は、確実に素数を見つける方法です。ところが、大きい数が素数か вать простые числа, на определение с его помощью простоты очень больших чисел требуется слишком много времени. どうかを判定する場合には、処理時間が長くなってしまいます。 В связи с этим в качестве теста на простоту используются методы, не являющие100%確実ではありませんが、確率的にほぼ素数であることを判定する方法が用 ся そこで достоверными на все 100 %, однако позволяющие с большой долей вероятности полагать, что いられます。 исследуемое число является простым. Тест Ферма позволяет с некоторой долей вероятности полагать, что число n явa と、素数かどうかを判定する数 n について an − 1 =1(mod n)  フェルマー法では、 ある整数 ляется простым, если для любого целого числа a, которое не делится на n, выполняиспользовании существует ется сравнение an−1 = 1 (mod n) (см. стр. 156), но при егоページ参照) n が素数であることを確率的に判定できます(156 であれば 。ただし、素数で опасность того, что не простое (то есть составное) число будет ошибочно принято ない数(合成数)を素数と判定してしまう危険がわずかながら生じます。 за простое, хотя вероятность этого не так высока.  そこでフェルマー法の欠点を改善したのが Miller-R 回のテストで誤判定 Этот недостаток теста Ферма был исправлен в abin тесте法です。1 Миллера-Рабина, позволяющем снизить вероятность ошибочной оценки не менее чем в 4 раза, по сравнению が発生する確率はフェルマー法の 4 分の 1 以下となり、ほぼ確実に素数を判定できます。 с тестом Ферма, и таким образом почти надёжно обнаруживать простые числа. ふるい

составное число,

для которого 素数と判定される существует вероятность 可能性がある数を быть принятым ぎ そ すう за простое, と呼ぶのよ 擬素数 называется псевдопростым.

3-2 Простые числа и факторизация

131 131


теперь 次は давайте убедимся в том, 素因数分解が что факторизация 難しいことを целых чисел 確認しましょ! это сложная задача!

о! ВЕрн

ил пра в

рио, リオさん разложи на 35простые を素因数分解 множители して число 35!

じゃあ

а теперь 77 の素因数 число 77.

ну, かんたん! это просто!

5×7よ

7 × 11 ね

分解は?

ьно!

теперь 今度は твоя очередь, お兄ちゃんよ братец!

разложи-ка

1001 を на простые 素因数分解して! множители число

1001!

ой !

3. шифр с открытым ключом 132    第 3 章Глава 公開鍵暗号化技術 132


мм...??

тогда разложи на простые множители число 9991!

мм...??

почему ты задаёшь такие сложные задачи только мне?!

насчёт числа 1001, это будет 7 × 11 × 13, не так ли?

ох

верно!

вот это да!

Ка фе «З аяц»

рамэн готов! извините, что заставила вас ждать!

3-2 Простые числа и факторизация

133


не так уж и сложно, 因数分解の公式を если использовть 使えば формулу そう難しくないわ разложения на множители.

Так как x3 + y3 = (x + y)(x2 − xy + y2), 3 2 y) xпредставив + y3 =(x + (x=2 10 -3xy 1001 + 1+3, y ) мы получим:= 103 + 13 と考えて、 なので、1001

おっ а, вот оно что! そうか!

1001 =(10 + 1)×(100 - 10 + 1) = 11 × 91 = 11 × 7 × 13

и он ду ав ? в п р он ял п вс ё

н е та к л и?

Кафе «Заяц»

Так как xx22 −-y2y2== (x y)(x y) (x++ (−x y), - y)なので、

что касается 9991 は числа 9991, 103 × 97 よ! получится 103 × 97!

9991= 1002 - 32 =(100 + 3)×(100 - 3) = 103 × 97 Каф «З а я е ц»

おーっ ого!! !!

да ты なかなか неплохо やるわね! разбираешья!

вот, видела?!

じゃあ

а как насчёт 10001 は числа 10001?

どう?

но решил ведь не ты...

3. шифр с открытым ключом 134    第 3 章Глава 公開鍵暗号化技術 134


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

вот вам ответ.

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)

мы получим следующее.

136

то есть это остаток деления 15 на 7?

Глава 3. шифр с открытым ключом

а что означает этот mod?


モジュロ(modulo)を Это сокращение от латинского 省略したもので слова modulo , означающего 日本語では『法』 «по модулю».

≡ 1(mod 7) 15 =

というわ

эта запись この式は означает, что числа モジュロ 7 について 15 и 1 являются 15сравнимыми と 1 は等しい (равноостаточными) という意味よ по модулю 7.

≡ b(mod N ) a=   Это これが一般的な合同式の形で、モジュロ演算ともいいます。 общая форма записи сравнения по модулю. Число N называется сравнения. N を法として a とмодулем b は合同とも読みます。合同を示す記号として、 Числа a и b в этой формуле называются сравнимыми (равноостаточными) 「=」でなく「≡」を用いることがあります。 числами по модулю N. За рубежом вместо знака «≡» иногда используют знак «=».

но зачем нужны 整数の計算だけなら всякие там «сравнения 簡単なのに по модулю»,

なぜ面倒な когда речь идёт от обычном делении 合同式なんて с остатком? 使うんだ?

с точки зрения

в

暗号にぴったりの шифрования, 利点がいくつか таком обозначении есть несколько あるのよ! выгод!

правда? каких? каких?

3-3 Модульная арифметика

137 137


Позиция №00 位置

Направление вращения 回転方向 по часовой стрелке

0

0号

Позиция № 6

Позиция №5 位置 5

1

6

位置 6

5

2

5号

Позиция №4

Посадка на位置 колесо 4 обозрения 乗り口

Позиция №1 位置 1

1号

6号

2号

4

4号

3

3号

7 つかご観覧車 Колесо обозрения с семью кабинками

Позиция №3

Высадка 位置 3 с колеса обозрения 降り口 это колесо обозрения 7 これはモジュロ прекрасно подходит での演算を図式化 для объяснения арифметики したものよ по модулю 7.

図 3.1 モジュロ 7 の観覧車 Рис. 3.1. Колесо обозрения по модулю 7

в самом деле, раз мы

7 で割った余りが ищем остаток от деления на 6 7, までの 問題だから 0 から результатом могут быть 数字しか出てこないのね только числа от 0 до 6.

да, это -

それが利点の 1 つよ! одна из выгод! остаток всегда 剰余(余り)は будет меньше 必ず除数 N делителя N (то есть N、mod (モジュロ модуля N), N)より поэтому результат 小さいから всегда будет 出力される値を находиться в пределах ある一定内に определённого 制限できるの диапазона.

3. шифр с открытым ключом 138    第 3 章Глава 公開鍵暗号化技術 138

位置 2 Позиция №2


аこの観覧車 это колесо вращается? 動くのか?

конечно! 時計回りに動くことを когда оно вращается 足し算 по часовой стрелке 反時計回りに動くことを это сложение по модулю, а引き算と когда против это вычитание по модулю!

考えてみましょ!

Сложение 足し算 引き算 Вычитание

モジュロ演算の足し算と引き算 Сложение по модулю и вычитание по модулю Для объяснения модульной арифметики мы воспользуемся колесом обозрения,  モジュロ演算のモデルに、図 3.1 の観覧車を用いてみます。7 号~ показанным на рис. 3.1. Это колесо имеет семь кабинок – отつのかごにはそれぞれ、0 нулевой до шестой, кроме того, позиции, в которых эти кабинки могут находиться, тоже пронумерованы: от по6 号と名前がついています。また、かごの位置は、最上部を 0 として、時計回りに等角度間隔に、 зиции № 0 в самой верхней точке колеса до позиции № 6. Площадка для высадки с ко1 ~ 6обозрения まで、位置番号がついているとします。位置 3 が降り口、位置 4 が乗り口につながって леса находится в позиции № 3, а площадка для посадки на колесо – в позиции № 4. います。 В начальном состоянии нулевая кабинка находится в позиции № 0, первая кабин 初期状態は 0 号かごが位置 0 に、1 号かごが位置 1 に、すべてのかご番号と位置番号が一致 ка – в позиции № 1 и так далее, то есть номера всех кабинок совпадают с номерами позиций, в которых эти кабинки находятся. Далее, колесо обозрения спроектировано しています。そして、足し算のとき、かごは時計回りに進むように設計されています。 так, чтобы вращаться по часовой стрелке при операции сложения. Рассмотрим сначала нулевую 1   周=+ 1 об.  まず、0 Если 号かごに注目します。 7 кабинку. колесо повернётся на 1/7 часовой стрелке, то置 ну 1оборота / 7 周 動по く と、0 号か ご は、 位 0 2 7 об.    周=+ 2 об. 7=0 левая кабинка переместится из пози-   周=+ 7 7 から位置 1 に動きます。これを+1(1 を ции № 0 в позицию № 1. Определим Позиция 位置 0№ 0 加える)と定義します。 это как операцию прибавления единицы (+1). 00号 повороте 号かごは位置 на 2/7 оборота  2 При / 7 周動くと、0 0か Позиция нулевая кабинка переместится из по№6 位置 位置 1 Позиция ら位置 № 2 に動きます。これが+2(2 を加 зиции 0 в позицию № 2. Это соот№1 ветствует операции +2. える)です。

При повороте на 7/7 оборота, другими словами, колесо  7 / 7 周、 つ ま りкогда 1 周動 い た とсоверき、0 шит один полный оборот, нулевая ка号かごは位置 0 から再び位置 0 に戻りま бинка, начав движение с позиции № 0, вновь вернётся в позицию № 0. Это す。これが+7 です。+7 は 0、つまり動 соответствует операции +7, которая かないことと同じです。 эквивалентна прибавлению нуля, то есть случаю, когда кабинка не двигалась вообще.  この観覧車モデルを使うと、足し算表 Используя эту модель колеса обозрения, можно прекрасно объяснить のすべてを説明できます。 таблицу сложения по модулю 7.

Позиция 位置№5 5

位置 2 Позиция №2

Позиция №44 位置

Позиция №3 位置 3

図 3.2 モジュロ演算の足し算のモデル(1) Таблица 3.2. Модель (1) сложения по модулю 7

3-3 Модульная арифметика

139 139


Теперь рассмотрим, например,

операцию сложения 5 + 6.  例えば、5 + 6 を考えてみます。

Представьте что первое слагаемое, то есть 5, – это пятая кабинка в начальном+положении (в позиции № 5).5 号かご В ка 5 6 の 5 は、初期状態における кую позицию она придёт, если колесо だと思ってください。この 5 号かごが 6 / 7 сделает 6/7 оборота по часовой стрел周すると、どの位置までいくでしょう? ке? Как видно по рис. 3.3, при перемещении на 6 позиций по часовой стрел 時計周りに 6 つ動かすと、図 3.3 に示すよ ке пятая кабинка переместится из поうに位置 зиции №45にいくことがわかります。 в позицию № 4, что соответствует нижеприведённой  つまり、下の式のとおりです。формуле сравнения по модулю.

6 об.  周=+ 6  7 Позиция 位置 0№ 0

Позиция №6

Позиция №1

位置 1

位置 6

     5 =44 ( mod 7). 7) 5+ + 66 ≡ (mod

位置 2 位置 5 55号 Позиция Приняв номер кабинки, равный её №2 Позиция № 5 номеру позиции в начальном состоя 初期状態のかご番号(かごの位置番号)を нии, за слагаемое a, легко определить a、回転移動を / 7 周とすると、移動後の на рисунке её bпозицию после поворота Позиция Позиция №44 位置 位置 3 №3 колеса на b/7 оборота. Таким образом, 位置が足し算の答えになります。このやり方 можно убедиться в том, что для любых で、足し算のすべての組み合わせが、表 3.3 слагаемых a и b результат операции Рис.図3.3. Модель (2) сложения по модулю 7 3.3 モジュロ演算の足し算のモデル(2) сложения по модулю 7 будет соответのようになることが確認できます。 ствовать приведённому в табл. 3.3.

Теперь объясним с помощью этого  続いて、引き算の場合も観覧車で説明して колеса обозрения операцию вычита-

みましょう。 ния по модулю.

表 3.3 モジュロ + bмодулю 7 Таблица 3.3. Cложение a 7+のbaпо

3. шифр с открытым ключом 140    第 3 章Глава 公開鍵暗号化技術 140

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


Рассмотрим сначала нулевую

 まず、0 Если 号かごに注目します。 кабинку. колесо повернётся на 1/7 против часовой стрелки,  1 оборота / 7 周反時計回りに動くと、0 号かごは

то нулевая кабинка переместится из 位置 0 から位置 6 に動きます。これを−1(1 позиции № 0 в позицию № 6. Опредеを減じる)と定義します。 лим это как операцию вычитания единицы (−1). При 7повороте на 2/7 оборота против  2/ 周反時計回りに動くと、0 号かごはчасовой стрелки нулевая кабинка переместит0 から位置 ся位置 из позиции №50に動きます。これが−2(2 в позицию № 5. Это соответствует операции を減じる)です。 вычитания двух (−2). При повороте на один полный оборот  反時計回りに 1 周動いたとき、0 号かごは

против часовой стрелки нулевая кабинка, 位置 0движение から位置 0сに戻ります。 これが−7 です。 начав позиции № 0, вновь вернётся в позицию № 0. Это соответствует −7 は 0、つまり動かないことと同じです。 операции вычитания семи (−7), которая эквивалентна вычитанию нуля, то есть слу この観覧車モデルを使うと、引き算のすべ чаю, когда кабинка не двигалась вообще. Эта модель колеса обозрения позволяет てを説明できます。 прекрасно понять, почему в ячейках таблицы вычитания по модулю 7 содержатся те или иные значения.  例えば、3 − 4(3 から 4 を引く)につい Представьте что в операции вычитания て考えます。 3−4 число 3 – это третья кабинка в начальном положении (в позиции № 3). Посмотрим по4 рис. 3.4,初期状態の в какую позицию она при 3 − の 3 は、 3 号かごだと思っ дёт, если колесо сделает 4/7 оборота против てください。この 3 号かごが / 7 周反時 часовой стрелки. Как ясно из 4рисунка, при перемещении на 4 позиции против часовой 計回りすると、どの位置にくるでしょう? стрелки третья кабинка переместится из  反時計回りに、4 つ動かすと、位置 6 にい позиции № 3 в позицию № 6, что соответствует нижеприведённой формуле сравнеくことがわかります。 つまり次のとおりです。 ния по модулю. 3 −– 44 = ≡6 (mod7) 7). 3 6 (mod Приняв номер кабинки, равный её но 初期状態のかご番号(かごの位置番号)を меру позиции в начальном состоянии, за a、反時計回りの回転移動を b / 7 周として、 уменьшаемое a, легко определить на рисунке回転後の位置が、引き算の答えになります。 её позицию после поворота колеса на b/7 оборота против часовой стрелки. Таким обこのやり方で、引き算が右表のようになるこ разом, можно убедиться в том, что для любых чисел a и b результат операции вычитаとが確認できます。 ния a − b по модулю 7 будет соответствовать приведённому в табл. 3.4.

Позиция № 0

1 周=- 1 7 об.

7 об. 周=- 7 = 0 7

位置 0

2 об. 周=- 2 7

00号

Позиция №1

Позиция 位置 6 №6

位置 1

位置 5 Позиция №5

位置 2

Позиция №2

位置 Позиция № 44

位置 3 Позиция №3

3.4 モジュロ演算の引き算のモデル(1) Рис. 3.4. 図 Модель (1) вычитания по модулю 7

位置 0№ 0 Позиция

4 об. 周=- 4 7

Позиция

Позиция 位置 6 №6

位置 № 11

位置 2 Позиция №2

位置 5 Позиция №5 33号

Позиция位置 № 44

位置 3 Позиция №3

Рис.3.4. Модель (2) вычитания по модулю 7 図 3.5 モジュロ演算の引き算のモデル(2) 表 Вычитание 3.4 モジュロ a7 の Таблица 3.4. − ba - поb модулю 7

a b

0

1

2

3

4

5

6

0

0

6

5

4

3

2

1

1

1

0

6

5

4

3

2

2

2

1

0

6

5

4

3

3

3

2

1

0

6

5

4

4

4

3

2

1

0

6

5

5

5

4

3

2

1

0

6

6

6

5

4

3

2

1

0

3-3 Модульная арифметика

141 141


не правда ли,

モジュロ演算の сложение и 足し算 модульной вычитание арифметики 引き算って - очень простые операции? やさしいでしょ?

楽勝! лёгкая победа! лёгкая победа!! 楽勝 !!

я та ка а тот п ро с мн е да же чу! ле п о п

спасибо, было вкусно!

а 今度は теперь давай изучим умножение モジュロ演算の и деление 掛け算と割り算を по модулю!

расчёт времени 時間の計算や и даты - это тоже 曜日を調べるのも операции модульной モジュロ計算の арифметики, не так ли? 一種ね

я

го

то в

!

やろう!

например, 例えば умножение 5 × 4 5по×модулю 4 の計算って 7 будет вот таким? これでいいの?

совершенно

そのとおりよ! верно!

5 2 +2 6. 5× ×44==7 7× × +6 Следовательно, なので

×44≡=6 6(mod 7) 5× (mod 7).

3. шифр с открытым ключом 142    第 3 章Глава 公開鍵暗号化技術 142

та к а ть! д ерж

モジュロ 7の вот таблица умножения 掛け算の表は по модулю 7! こうなるわ!


Таблица 表 3.5. Умножение b bпо модулю 7 3.5 モジュロ 7 のa a××

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 でない в которых

どの行にも

a=0

или

b = 0,

содержат 必ず 1 から 6 все までの числа от 1 до 6 数字がひとつずつ по одному разу!

入っているわ!

いいところに верно заметила! 気付いたわね! ところが вот однако вам таблица モジュロ 8の умножения 掛け算だと по модулю 8. こうなるの

a× b модулю 8 表 3.6 モジュロ 8の Таблица 3.6. Умножение a× b по a b

0

1

2

3

4

5

6

7

0

0

0

0

0

0

0

0

0

1

0

1

2

3

4

5

6

7

2

0

2

4

6

0

2

4

6

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


в строках и столбцах

と 6 の行には 2, 42иと 6 4некоторые числа

хотя a か однако, b が 0 でないとき в строках 1と 3 と 5 とи 7столбцах の行には 1, 3, 5 и 7 1собраны から 7 までの数字が все числа そろってるけど… от 1 до 7,

повторяются, а некоторые 数字がそろってないし отсутствуют...

...и почему-то 0 がやたらと

в них содержится

あるぞ?

много нулей...

掛け合わせる数に 0が да, не очень приятно, когда перемножение 入っていないのに ненулевых чисел 結果が 0 になるのは даёт в результате ноль.

Ведь перестаёт выполняться a × b = 0 なら つまり、 правило умножения: если a × b = 0, то bхотя один a = 0 または = 0бы とい из множителей, a или b, う計算の法則が成り立た обязательно должен быть равен 0. なくなってしまいます。

困るわよね

но как же どうして получаются こんな結果に подобные なったの? результаты?

ну, в общем... それはね… это происходит モジュロの 8 という数と в тех случаях, a b またはそчисла が aи b когда たが не являются взаимно いに素』でない場合に 『互 простыми по отношению 起きることなの! к модулю!

добавкой

温泉の素なら для ванны я пользуюсь よく使ってるぞ…

Д ля ва н н ы

часто.※

Игра слов с называнием добавки для ванны «Простая добавка для горячих источников». 3. шифр с открытым ключом 144    第 3 章Глава 公開鍵暗号化技術 144


互いに素とは

Взаимно простые ある数同士が числа - это такие числа, 1 以外に共通の у которых нет 約数(公約数)を общих делителей, 持たないことを кроме единицы.

ое . пол н ни е .. р о ва и р о и гн

いうのよ

Например, числа 8 и 2 имеют общий делитель, отличный от единицы, – это число 2, поэтому не являются взаимно простыми. Кроме того, числа 4 и 6,  例えば、8 と 2они とは、1 以外に 2 という共通の約数(公約数)を持っているので、 содержащиеся в таблице умножения по модулю 8, тоже имеют с4числом 8 общий 互いに素ではありませんね。また、モジュロ 8 の掛け算の表の中の と 6 も、8 とは делитель – число 2, поэтому они не являются взаимно простыми по отношению 2 という公約数を持っているので、互いに素にはなりません。 к числу 8.  一方、1 と 3числа と 5 と1,7 3, は、8 Напротив, 5 и とは互いに素です。なぜなら、互いに素であるとき、 7 являются взаимно простыми по отношению к числу 8, так как их наибольший общий с числом 8 делитель равен единице. 両者の数の最大公約数が 1 になっていることを確かめてください。 Таким образом, все простые числа являются взаимно простыми с любыми  このように、すべての素数は、その素数の倍数を除いて、ほかのどんな整数とも互 числами, которые им не кратны. Именно это свойство позволило нам отыскиいに素になるわけで、この性質を利用してエラトステネスの篩の方法によって素数を вать простые числа с помощью решета Эратосфена. ふるい

見つけ出すことができたのです。

тогда... じゃあ

в а Д ля нн ы

значит, в качестве ということは модуля лучше モジュロにとる数は использовать 素数がいいの? простое число?

к прим ер у. ..

3 ÷...как 5 って посчитать どうやるんだ?

3 ÷ 5?

そうよ! верно! если использовать 7 のように простое 素数ならчисло вроде 7, то 割り算も и деление будет できるのよ возможно.

3-3 Модульная арифметика

145 145


очень просто! 割り算を надо только 掛け算にすれば заменить деление いいのよ умножением!

1 b

a÷b=a×

a を b で割るということは、 Поделить a на b – это то же самое, что умножить a aにb の逆数を掛けることと на число, обратное b. 同じです。 Обратное число называют 逆数は、逆元とも呼びます。 также обратным элементом. ぎゃくげ ん

おっ ага! понятно! なるほど!

……でも но как нам どうやって逆数を найти обратное число? さがせばいい?

1 3 ×  = 1 3

? что

例えば ну, например, в обычной арифметике 3 の逆数は 3 分のчисло, 1 だから обратное 3, – это 1/3, 掛け合わせて 1 になる数が ведь при умножении 逆数でしょう? получается 1, не так ли?

Таблица 表 3.7. Умножение a a× × b по b модулю 7 3.7 モジュロ 7の Давайте ещё モジュロ 7の раз взглянем 掛け算の表を на таблицу умножения もう一度見て по модулю 7 и1 найдём пары чисел, が現れているところを произведение 拾いだしましょう

a b 0

которых равно 1.

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

表 3.7 から、 1 の逆数は 1、2 の逆数は 4、3 の逆数は 5、 Согласно табл. 3.7, 1 обратно 1, 2 обратно 4, の逆数は 5, 2、5 の逆数は の逆数は となります。 34 обратно 4 обратно 2,3、6 5 обратно 3, 66обратно 6. 3. шифр с открытым ключом 146    第 3 章Глава 公開鍵暗号化技術 146


значит, 3 ÷ 5 じゃあ вычисляется 3 ÷ 5 を計算すると  вот так? こうか?

Поделить на 5 – значит に 5 の 3 を 5 3で割ることは、3 умножить 3 на число, обратное 5. 逆数の 3 を掛けることなので、 Следовательно,

молодец, правильно!

よくできたわね!

3÷5= ≡ 3×3=9 ≡ 2 (mod 7) 9÷9 7=7+2=

от похвалы растут!!!

Такимとなる。つまり、 образом, ≡ 2 (mod 7) 3÷5= なのです。

итак, では давайте составим 割り算も и таблицу 表にするわよ деления.

3.8 モジュロ Таблица 表 3.7. Деление 7aの ÷ 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 / 7 回転するとき(つま леса. Если1колесо вращается со скоростью り 7 分で 回転するとき) 、0 号かごは、3 分 1/7 оборота в минуту (другими словами, 後にどの位置にあるかは、次のように表せま делает один полный оборот за 7 минут), す。 то номер позиции нулевой кабинки через 3 минуты после начала вращения рассчитывается следующим образом:

1 分間に進む距離 Перемещение за 1 мин.

Позиция位置 № 00 Позиция №6

00号

Позиция 位置 1 № 1

位置 6

Позиция №5

位置 2 Позиция

位置 5

№2

Позиция №44 位置

位置 3 Позиция №3

 1(速さ)× 3(分間)= 3(回転後の位置)

1 (скорость) × 3 (время) = 3 (номер позиции через 3 мин.).

Если же колесо вращается со скоростью 5/7 оборота в минуту, то номер позиции нулевой кабинки через 6 минут の位置にあるかは、次のようになります。 после начала вращения вычисляется путём умножения по модулю 7.

 1 分間に 5 / 7 回転する場合、6 分後にど

 5 × 6 = 30、

5 × 6 = 30, 30 = 7 × 4 + 2 (30 ÷ 7 = 4, остаток 2).  なので、5 × 6 = 2(mod 7) Следовательно, 5 × 6 ≡ 2 (mod 7).  30 = 7 × 4 + 2(30 ÷ 7 = 4 余り 2)

Другимиという値は словами, поделив 304 на 7,  つまり、30 7 で割ると 回転

1 1 Рис.図3.6. Вращение со скоростью об/мин. (1) 3.6 1 分間に  回転する場合(1) 7 7

4 回転= 回転 4 оборота = 00оборотов

Позиция №6 位置 6

мы получим 4 полных оборота и 2 в と余り 2 ということになります。4 回転はし остатке. Сделанные кабинкой 4 полных ているものの、mod の世界では арифметики 0 回転と同じ оборота в мире модульной 位置 5 эквивалентны 0 оборотов, поэтому нас Позиция №5 わけで、余りの 2 だけに注目すればいいので интересует только этот остаток 2. す。

3 分間に進む距離 Перемещение за 3 мин.

Позиция位置 № 44

位置 0 № 0 Позиция

00号

2 оборота 7 回転

Позиция №1 位置 1

位置 2 Позиция №2 位置 3 Позиция №3

5 5 Рис. 3.7. Позиция через 分間に  回転する場合の 6 мин. вращения со 6 скоростью об/мин. 図 3.7 1 分後の位置 7 7

3. шифр с открытым ключом 148    第 3 章Глава 公開鍵暗号化技術 148


Для понимания деления по модулю  割り算の場合は、掛け算の場合の逆を考え мы применим подход, обратный умножению: будем находить время вращения, ます。回転後の位置と回転したスピードから、 используя данные о конечной позиции かごが回転した時間を逆算するのです。 нулевой кабинки и скорости вращения колеса, которые нам известны. Пусть в результате вращения колеса  かごが 1 分間で 1 / 7 回転するとき、0 号 со скоростью 1/7 оборота в минуту нулевая кабинка переместилась из начальной かごは、位置 0 から回転を始めて、最終的に позиции № 0 в конечную позицию № 5. は、位置 5 にあったとします。ここから、か Попробуем найти время её вращения. ごは何分間回転したかを求めます。

Перемещение за 1 мин. 1 分間に進む距離 Позиция位置 № 00 Позиция №6

00号

Позиция 位置 1 №1

位置 6

最終位置 Позиция №5 位置 5

位置 2 Позиция

№2

5 (конечная позиция) ÷ 1 (скорость) = 5 (время вращения).  5(最終位置)÷ 1(速さ)=5(分間)

位置 Позиция №4 4

位置 3

Позиция № 3 Таким образом, мы выяснили, что колесо вращалось 5 минут. На самом де つまり 5 分間回転していたことがわかりま ле, нулевая кабинка будет в той же самой 5 分間に進む距離 Перемещение за 5 мин. позиции № 5 分間、19 и в случае, если колесо враす。また、12 分間…、一般的に(5 щалось, например, 12 или 19 минут, то 1 1 Рис. 図 3.8. Вращение со скоростью об/мин. + 7n)でも同じ位置にきますが、mod 7 の 3.8 1 分間に  回転する場合(2) 7 7 есть, в общем случае, (5 + 7n) минут, но в 世界には時間でさえも ~ 6 分までしかあり мире арифметики по 0модулю 7 даже для измерения промежутков времени имеетませんので、12 分も 19 分も時間の経過は見 ся всего 7 значений от 0 до 6 минут, а えなくなり、どちらも 5 分と同じになります。 位置 0№ 0 Позиция длительности, подобные 12 или 19 минутам, будут1 эквивалентны 5 минутам. (つ  かごが 分間で 2 / 7 回転するとき、 Теперь положим, что в результате Позиция ま り 7 分 でколеса 2 回転す と き )、0 号2/7 かご は、 Позиция вращения соるскоростью обо№6 00号 №1 рота минуту нулевая кабинка переме-5 位置 0в から回転を始めて、最終的には位置 位置 6 位置 1 стилась из начальной позиции № 0 в коにあったとします。 かごが何分間回転したか、 нечную позицию № 5. В этом случае время вращения колеса можно найти в таб割り算表から次の答えが出てきます。 最終位置 Позиция лице деления по модулю 7. №5 位置 5

位置 2

5 (конечная позиция) ÷2(速さ)=6(分間) 2 (скорость) = 6 (время вращения).  5(最終位置)÷ У нас получился результат 6 минут, но нам его интерпретировать? Рас 6как 分間回転したという答えは出ますが、こ суждать надо следующим образом: за 6 れをどう解釈すればよいのでしょう? минут вращения нулевая кабинка пришла в конечную позицию № 5, 5но для  こう考えてください。最終位置は だった этого ей пришлось сделать один лишний が、余分に 1 回転していたと。つまり、実際 оборот. Другими словами, хотя конечной の最終位置は 2×6= 12 であったが、mod была на самом деле позиция № 127 (6 × 2 = 12), по причине (mod 7) она была のため 5 と表された。 выражена как позиция № 5.  したがって、12 ÷ 2так = 6как なので、 分間 Следовательно, 12 ÷「6 2= 6, найденный в таблице деления по модулю 回転した」という答えが正しかったことがわ 7 ответ – «колесо вращалась 6 минут», – かります。 оказался абсолютно верным.

(2)

Позиция №2 位置 4

位置 3 Позиция №3

Позиция №4

6 分間に進む距離 Перемещение за 6 мин.

2 2 Рис. 3.9. Вращение со скоростью об/мин. 図 3.9 1 分間に  回転する場合 7 7

3-3 Модульная арифметика

149 149


Четыре основные

Итак, надеюсь, これで素数を что вы хорошо モジュロとする演算で  усвоили четыре 四則演算のすべてが операции できることが арифметики по модулю わかったでしょ !? простого числа.

аそれって что в этом すごいことなの? особенного?

四則演算とは、足し算、 арифметические операции – это 引き算、掛け算、割り算 сложение, вычитание, の 4 つの演算のことです。

умножение и деление.

такой自由自在に большой выбор операций очень 演算できるから подходит для методов 暗号化や復号の шифрования и 数学に用いるのに расшифрования.

適しているわ !!

непобедимость!

красота!

а чем плоха 整数を用いる обычная 演算じゃ арифметика целых чисел? だめなのか?

дело в том, что

非負整数の範囲では неотрицательных целых чисел операция 割り算が деления не обладает できないのよ! свойством на множестве

замкнутости.

3. шифр с открытым ключом 150    第 3 章Глава 公開鍵暗号化技術 150


Например, результат операции 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 表も載せるわね вам тоже

стаканч

иков

пригодится.

b Таблица 3.9.表Возведение (abb)乗) по модулю 7 3.9 モジュロв7степень の a (a の

a b

1

2

3

4

5

6

1

1

1

1

1

1

1

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

да, результаты モジュロ演算していくと операций 結果の数字が по модулю имеют ずいぶんとばらばらな値 такой большой になるんだなあ разброс.

3. шифр с открытым ключом 152    第 3 章Глава 公開鍵暗号化技術 152

Остатки от деления на 7 шестой 表 3.9 のそれぞれの数を 6 乗し степени любого из чисел в таблице たものを 7 で割ると、いずれも равны 1. 余りは 1 になります。

16 = 1 = 0 × 7 + 1 26 = 64 = 9 × 7 + 1 36 = 729 = 104 × 7 + 1 46 = 4096 = 585 × 7 + 1 56 = 15625 = 2232 × 7 + 1 66 = 46656 = 6665 × 7 + 1


ой, а это что такое?!

верно подметил!

почему в этой таблице все числа при возведении в шестую степень дают единицу?

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

(См. стр. 225)

да, это так! кр ут ь

и это имеет отношение к малой теореме ферма, которую мы сейчас с вами изучим!!

фе... ферма?

ох .. .

3-3 Модульная арифметика

153


ой, я боюсь высоты...

3-4ーМалая теорема Ферма и теорема Эйлера  3 4 フェルマーの小定理とオイラーの定理

итак, теперь とっても素敵な я познакомлю вас... ...с одной очень フェルマーの小定理を красивой теоремой 紹介するわ! малой теоремой ферма!

Малая теорема Ферма フェルマーの小定理 Если n – простое число, то для любого целого числа a, которое  n が素数のとき、n と互いに素で является взаимно простым с n a) ある整数 aсловами, (n の倍数でない整数 (другими не является кратным числу n), верно следующее について、次の式が成り立ちます。 сравнение:     a

nー1

≡ 1(mod n) =

Это означает, что1 乗したものを остаток от aをn-  つまり деления числа a в 1степени n−1 n で割ると余りが になるという на число n будет равен 1. わけです。

フェルマーの小定理は малая теорема ферма используется и в качестве 素数判定でも利用したわよね теста на простоту. (131 ページ参照)

но главное, - она является 何よりオイラーの定理を основой, необходимой для 勉強するための基礎として必要よ понимания теоремы эйлера.

значит, 7именно モジュロ ときに по этой теореме 1 ~ 6 までの数を все числа от 1 до 6 6 乗して 1 степеней になるのは в таблице по модулю 7 この法則が в示していたこと шестой степени дают единицу!

b b Таблица 3.10. Возведение в степень (aの ) bпо модулю 7 表 3.10 モジュロ 7 の a (a 乗)

だったのね!

a b

1 2 3 4 5 6

1 1 1 1 1 1 1 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

3. шифр с открытым ключом 154    第 3 章Глава 公開鍵暗号化技術 154


フェルマーってのは а кто такой этот ферма? どんな奴だ?

数論の父フェルマー Ферма – отец теории чисел

Пьер де Ферма (1601–1665 гг.) 年生~ – математик и юрист XVII века, внесший огром ピエール・ド・フェルマー(1601 1665 年没)は、17 世紀を代表するフランス ный вклад в теорию сравнений и теорию чисел. の法律家であり、数学者です。モジュロ演算をはじめとする数論の分野で大きな業績を Кроме малой теоремы Ферма, существует и великая теорема Ферма. 残しました。 Она заключается в том, что для любого натурального n > 2 уравнение n x フェルマーの小定理だけでなく、フェルマーの大定理(最終定理)と呼ばれるものも + yn = zn не имеет решений в виде натуральных чисел (x, y, z), однако сам Ферма не оставил доказательств этой теоремы. あります。 Сама теорема очень лаконична и выглядит настолькоn + простой, что кажется, n について、x yn = zn となる自然数  フェルマーの大定理とは、 「3 以上の自然数 что её мог бы доказать даже ученик средней школы. Как известно, теорема Пифа(x,y,z)の組み合わせはない」というものですが、フェルマー自身は、その証明を残し гора гласит, что длины a, b и c трёх сторон прямоугольного треугольника (которые ませんでした。 могут быть равны, например, 3, 4 и 5 метрам соответственно) удовлетворяют соот 見かけは簡明な内容で、中学生にも解けるかと思われるくらい単純な形をしています。 ношению a2 + b2 = c2. Великая теорема Ферма представляет собой уравнение, в ко2 тором равные двум показатели степеней уравнения a2 + b2 = c2 заменены n b>2 2. ご存じのピタゴラスの定理は、 「直角三角形の 3 辺の長さ、a,b,c について aна + = 2 Великая теорема Ферма была доказана в 1995 году, спустя 330 лет после смерти c が成り立つ(例えば 3 辺が 3,4,5 メートルのとき)」というものです。フェルマーの Ферма, английским математиком Эндрю Уайлсом (1953 г. р.). 2 2 2 定理とは、a + b = c における 2 を 3 以上に置き換えた場合の数式です。

 なお、大定理の証明は、フェルマーの死から 330такое 年を経て、1995 年にイギリスのアン Считается, что Ферма написал на полях примечание к своей великой теореме. ドリュー・ワイルズ(1953 年生~)によってなされました。   я хотел здесь написать フェルマーの大定理の доказательство 証明をここに書こうと великой теоремы 思ったけど余白がせま ферма, но поля книги слишком すぎる! узки для этого!

та к, та к

と、ノートに書かれ ていたようです。

3-4 Малая теорема Ферма и теорема Эйлера

155 155


素数の判定に

давайте используем フェルマーの小定理 малую теорему ферма для теста на простоту! (131 ページ参照)を

Выразим контрапозицию к малой フェルマーの小定理の対偶をとります。 теореме Ферма: если существует число a, взаимно простое по отношению a が、 すると、n と互いに素な数 к числу n, такое, что

利用しましょう! (См. стр. 131)

nー1

 a

≠ ≢ 1(mod n),

то число は素数ではないと言えます。 n не является простым. なら、n

а 対偶って что такое контрапозиция?

命題『A ならば B』に対して вида «если A, то B» 『B でないなら A でない』 на высказывание вида というのが対偶よ! «если не B, то не A»!

なあに?

так... бесплатное питание? оплачиваемый отпуск?

если высказывание 正しい命題の対偶は верное, то и его контрапозиция 常に正しいのよ! тоже всегда верна!

та и Рабо та зарпла

вот как? なるほど… тогда это явно これはマンガじゃない не манга...

Если верно высказывание: 命題 «любая манга увлекатель『すべてのマンガは楽しい』 на», が正しいならば、

то можно утверждать, что и его контрапозиция: 対偶 Ве сё лые брр. ..

брр. ..

→ →

Это замена высказывания

пр остые числ а

шмы г

『楽しくないのは «если книга скучна, то どれもマンガじゃない』 это не манга», – も正しい、と言えます。

б рр . . . тоже является верной.

3. шифр с открытым ключом 156    第 3 章Глава 公開鍵暗号化技術 156

основанный на これを利用して этом тест на 素数を判定する方法が простоту... ...называется フェルマー法 тестом ферма.

というのよ

всё, сдаюсь!

ой, Что это с ним?


フェルマー法と擬素数 Тест Ферма и псевдопростые числа

При оценке простоты чисел с помощью теста Ферма нужно помнить о том, что верность сравнения  フェルマー法による素数判定において注意すべきなのは、  a

nー1

= ≡ 1 (mod n)

является необходимым, но не достаточным условием простоты числа n. を満たすことは、n が素数であるために必要な条件ではありますが、十分な条件であるといえな По этой причине возможны случаи, в которых число, которое не является い点です。 простым, вероятностно оценивается как простое.  このため、フェルマー法では、素数でないのに、確率的に素数であると判定される場合があ Например, хотя число n = 3215031751 и взаимно простые к нему числа 2, 3, 5 и 7 ります。そのような数を擬素数と呼んでいます。 удовлетворяют сравнениям ぎ

そ すう

 例えば、n = 3215031751 は互いに素である 2,3,5,7 との間に、

≡ 1 (mod 3215031751) ,      23215031750 =      33215031750 = ≡ 1 (mod 3215031751) ,

≡ 1 (mod 3215031751) ,      53215031750 =      73215031750 = ≡ 1 (mod 3215031751) ,

простым числом оно не является, так как его можно разложить на простые множители を満たしていますが、素数ではありません。なぜなら、 следующим образом:      3215031751 = 151 × 751 × 28351 .

Правда, в диапазоне натуральных чисел, не превышающих 25 миллиардов, n = 3215031751 является едиственным составным числом, для которого остатки от де ただし、 250 億以下の数 で、2, 4 つの素数の 1 なのに素数でないのは、 ления четырёх простых nчисел 2,3, 3, 5, 5, 77 の в степени n − n1 − на1 n乗が равны 1. На основе теста 3215031751 だけです。フェルマー法を利用して、 精度をより高くするために発展させたものが、 Ферма был создан также тест Миллера-Рабина, упоминавшийся на стр. 131, который 131 ページで紹介した Miller-Rabin 法です。 позволяет повысить точность оценки. と素因数分解できるからです。

3-4 Малая теорема Ферма и теорема Эйлера

157 157


теперь мы изучим

次のオイラーの теорему эйлера, 定理が RSA 暗号の НА КОТОРОЙ ОСНОВАН 数学的根拠となるの шифр RSA. ЕСЛИ ВЫ ПОЙМЁТЕ ЕЁ, これを理解すれば、 ТО МОЖНО БУДЕТ RSA 暗号の基礎が СКАЗАТЬ, ЧТО ВЫ ОСВОИЛИ ОСНОВЫ わかるわ! ШИФРА RSA!

Теорема Эйлера オイラーの定理 Для любого натурального числа n и взаимно простого с ним целого числа a верно следующее сравнение:

 自然数 n と、互いに素である整数 a について、次式が成り立ちます。 ) ϕ(n) a φ(n ≡ 1 (mod n). n) = 1 (mod  a

Присутствующая в данном сравнении функция φ(n) называется функцией ㋫ァ㋑

からвn диапазоне までの自然数で、  式の中の ϕ(n)をオイラー関数といいます。オイラー関数は、1 Эйлера, значение которой равно количеству натуральных чисел от 1

до n, которые являются взаимно простыми по отношению к числу n. n と互いに素である数の個数を表すものです。 ϕ(n) 1 a (mod n), перемножив левые и правые части: Кромеϕ(n) того, a+ ≡ × aтак = aкак なので、明らかに次式も成り立ちます。  また、a 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), то есть ϕ(n) (n)+ 1)乗すると、a に戻ることを意  なぜなら、a2φ(n ) = 1 (mod n)なので、a を(ϕ a ≡ 1 (mod n), 味しています。 a 2φ(n)+1 ≡ a(mod n) и так далее. a に戻ります。こ  さらにべき乗をしていくと、2ϕ (n)乗で 1 になり、(2ϕ 1)乗でнатурального Обобщая вышеизложенное, можно записать, что(n) для+любого числа n и взаимно простого с ним целого числа aaверны следующие два сравнеn と互いに素である整数 れを一般的に表せば、自然数 について、次のようになります。 ния: a kφ(n) ≡ 1 (mod n), kϕ  a (n) = 1 (mod n) a kφ(n)+1 ≡ a(mod n), где k – неотрицательное целое число.  

 a

kϕ(n)+ 1

= a (mod n)

Кроме того, в том случае, если натуральное число n                ※ k は非負整数 можно представить в виде произведения отличных друг от друга простых чисел, то для всех целых чисел a от 1 до nから(n − 1 верно следующее сравнение. a に対して、次式が成り立ちます。  なお、1 − 1)までのすべての整数 )+1 akϕkφ(n (n)+ 1 ≡ a(mod n) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ (1)

     a

= a (mod n)                      (1)

3. шифр с открытым ключом 158    第 3 章Глава 公開鍵暗号化技術 158


так как все числа

Если

{1, 1,2,3,4,5,6 2, 3, 4, 5, 6} ϕ(7)なら が 7

7...

ϕ(7) .... φ(7)==66ね! !

получается,

Если n – простое число, n が素数の場合、 то φ(n) = n − 1 и, ϕ(n)= n - 1 なので、 следовательно, n-1 ϕ(n) = 1 (mod aaφ(n) ≡= a na− 1 (mod n), n) となり、フェルマーの小定 что соответствует малой 理 と一致します(154 ペー теореме Ферма ジの表 3.10 の  部分に 一 (см. закрашенный столбец в致します) табл. 3.10。на стр. 154).

n!

数学者オイラーЭйлер Математик

в этом случае

ということよ что φ(n) = n − 1.

1 до n

является само это число

другими словами,

つまり ϕ(n)= n - 1

простым числом,

единственным числом, n が素数なら n までの 1 から имеющим с n отличные от 1 n と互いに素では 自然数で общие делители ないのは だけ! простым), (то есть не n взаимно

взаимно просты と互いに素なので по отношению к

n является

то из всех чисел от

Леонард Эйлер (1707–1783 гг.) –  レオンハルト・オイラー(Leonhard один из самых выдающихся математиEuler:1707 年 生родившийся ~ 1783 年 没 в)Швейは、 ков XVIII века, царии. Он известен не только огромスイス生まれの 18 世紀を代表する数 ными достижениями в разнообразных 学者です。 областях математической науки, но также и активной работой в области  数学の幅広い分野で大きな業績を残しただけで な физики, астрономии. く、物理学や天文学の分野でも活躍しました。

Среди его широко известных математических  数学の業績で一般によく知られているものとして、 открытий есть так называемая формула Эйлера オイラーの公式(複素数のオイラー表示)と呼ばれる (формула Эйлера для комплексных чисел): ものがあります。

    e θ= cosθ+ i sinθ i

e θと三角関数の cosθと sinθ  これは複素指数関数 Она связывает комплексную экспоненту i

eが虚数単位 с тригонометрическими функциями cos θ и i =√− 1 を介して、結びついていることを sin θ посредством мнимой единицы i = √−1. 示しています。

А КТО ТАКОЙ オイラーってのは ЭТОТ ЭЙЛЕР? どんなやつだ? ЗВЁЗДЫ Я ТОЖЕ ЛЮБЛЮ...

3-4 Малая теорема Ферма и теорема Эйлера

159 159


тЕПЕРЬ рАССМОТРИМ

N が 2 つの素数 p と ОТ q の積で ФУНКЦИЮ ЭЙЛЕРА таких 表される場合の ЧИСел N, КОТОРыЕ МОЖНО オイラー関数を ПРЕДСТАВИТЬ В ВИДЕ 見てみるわよ !! ПРОИЗВЕДЕНИЯ ДВУХ ПРОСТЫХ ЧИСЕЛ

p и q!!

2 つの素数の積のオイラー関数 Функция Эйлера от произведения двух простых чисел

число Np можно разложить на два простых множителя: p и q. と互いに素でない Здесь для выво NПусть を 2 つの素数 と 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 から qp までの間にある の倍数は、q,2q, 3q,……,qp なので全部で p 個あります。 (3) Оба последних числа рядовq(1) и (2), qp и pq, совпадают с 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) = φ(p) φ(q). オイラー関数 ϕ(N)は(p − 1) (q − 1)となります。 1 ≡ 1 (mod p) ϕ и(q)と表されます。 a q −1 ≡ 1 (mod q), обозначив L наиКроме того, с учётом того, что a p −(pq)=  このことから、p と q が素数のとき、ϕ ϕ(p) меньшее общее кратное чисел (pq −−1 1) и (q − 1), мы можем записать следующее сравнение: p−1  また、a

= 1(mod p)で、a

= 1(mod q)なので、(p − 1)と(q − 1)の共通の倍数

L とすると、次の式が成り立ちます。 で一番小さいもの(最小公倍数)を aL ≡ 1 (mod p, mod q).

Следовательно, для числа a, взаимно простого с N, верно следующее сравнение: L

     a = 1(mod p,mod q)

aL ≡ 1 (mod N).

すなわち、N(= pq)と互いに素な整数 a に対して次式が成り立ちます。

Другими словами, в том случае, если N можно разложить на простые множители p и q, наименьшее общее кратное L чисел (p − 1) и (q − 1) может выполнять ту же самую L N) φ(N). = 1(mod      a роль, что и функция Эйлера つまり L が、オイラー関数 ϕ(N)と同様の働きを示します。また、任意の 2 つの正整数の積は、 3. шифр с открытым ключом 160    第 3 章Глава 公開鍵暗号化技術 160


Далее, так как произведение двух целых чисел можно представить в виде произведения их наименьшего общего кратного (НОК) и( наибольшего общего делителя (НОД): q − 1)= LG という関係に基づき、次式が 最小公倍数と最大公約数の積に等しいので、 (p − 1) 成り立ちます。 (p − 1) (q − 1) = LG, (p − 1) (q − 1)     , где L –  ※ наименьшее общее кратное, L は最小公倍数、G      L =     は最大公約数    G

G 例をあげます。例えば、p – наибольший общий делитель (p − 1) и (q = − 1). pq は 15、 = 3、qчисел = 5 とします。N (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; と互いに素な自然数 に対して次式が成り立っています(表 3.11)。 L15 = НОК(2, 4) = 4; G =aНОД(2, 4) = 2. Аналогично тому, как было показано на стр. 158 для функции Эйлера, из сравнения 4k aL ≡ 1 a (mod обобщённая =N) 1(следует mod 15)    ※ k формула: は非負整数 kL a ≡ 1 (mod N), где a – взамно простое с N число; k = 0, 1, 2,... L を周期に、最大公約  つまり、a を ϕ(N)乗するまでに、 (pслучаю, − 1)と(q 1)の最小公倍数 Возвращаясь к рассматриваемому для − любого натурального числа 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) верно следующее сравнение: kL + 1 N)      a a k L +1 = ≡ aa(mod (mod N) ⋅                       ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅(2) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ (2) В рассматриваемом случае +1 a 4k暗号マジックのトリックになります。 ≡ a (mod 15). であり、RSA В верности данного сравнения можно убедиться с помощью табл. 3.11. Таблица 3.11. Возведение в степень (a b) по модулю 15 ab 表 3.11 2 つの素数の積のオイラー関数の例 (N = 3 × 5,�(15)= =8, 2)L = 4, G = 2) (для иллюстрации случая N = 38,L × 5,=φ4,G ( N) =

a

b 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

2 1 4 9 1 10 6 4 4 6 10 1 9 4 1

3 1 8 12 4 5 6 13 2 9 10 11 3 7 14

Первый период

1 周期

4 1 1 6 1 10 6 1 1 6 10 1 6 1 1

5 1 2 3 4 5 6 7 8 9 10 11 12 13 14

6 1 4 9 1 10 6 4 4 6 10 1 9 4 1

7 1 8 12 4 5 6 13 2 9 10 11 3 7 14

8 1 1 6 1 10 6 1 1 6 10 1 6 1 1

Второй период

1 周期

Закрашенные серым столбцы, соответствующие таким показателям степени ※   部分は式(2)の関係を示す (b), при которых степень сравнима по модулю с самим числом a, повторяются с перидом L = 4, что находится в соответствии со сравнением (2). В диапазоне значений показателей степени от 1 до φ(N) = 8 эти столбцы повторяются G = 2 раза.

161 161


всё нормально!

ненавижу オイラーも их обоих: フェルマーも и ферма, 嫌いだ… и эйлера...

大丈夫、大丈夫! как говорится, дорога в тысячу 「千里の道も一歩から」 миль начинается よ! с первого шага!

двигаясь 少しずつ шаг за шагом, やっていけば ты сможешь いいのよ! понять всё!

да? правда?

そ…そうだな

ой, что это с ним...

конечно! конечно!

オイラー Эйлер

フェルマー Ферма

успокойся, あ、見て посмотри あの星座 на звёзды.

итак, на этом 暗号数学の мы закончим изучение 基礎は математических ここまで! основ криптографии!

и наконец-то переходим 次はいよいよ к примеру 公開鍵暗号 практического использования RSA の実際を RSA - шифра 見ていきましょう !! с открытым ключом!!

3. шифр с открытым ключом 162    第 3 章Глава 公開鍵暗号化技術 162

уфф...


ЧИПСЫ

3-5ー Устройство шифра RSA  3 5 RSA 暗号の仕組み

ох, наконец-то やっと数学から мы покончили с этой 解放されたな! математикой!

ть Се и н о в газ EN ма L E V 7-E

Сочный пудинг

Пиро со сл жок соевоадкой паст й АНМ ой АН

рано 喜ぶのは早いわ! радуетесь!

数学はまだまだ математика 出てくるわよ ещё будет!

поем-ка я тоже сладостей заряжу мозги!

как ほっと хорошо...

したわ

что?!

итак, теперь さて я ЧЕСТНО RSA 暗号の鍵の РАССКАЖУ вам тайну 秘密は ключей ШИФРА RSA!!

ずばり これよ !!

ЭТО НЕ ЧТО ИНОЕ, КАК... ВОТ ЭТО!!

М АН

АН

КАК?! СЛАДКИЙ へっ? ПИРОЖОК あんまん? «АНМАН»?!

3-5 Устройство шифра RSA

163 163


公開鍵:N,e Открытый ключ: N, e

公開鍵の中に

ВНУТРИ ОТКРЫТОГО 秘密のトリックが КЛЮЧА ЗАПРЯТАН СЕКРЕТ! 仕組まれてるの!

(устройство пирожка «Анман») Оболочка из муки

Начинка: сладкая соевая паста

Секретный 秘密鍵:d ключ: d 公開鍵暗号は二重構造

Шифр с открытым ключом имеет двухслойное строение.

おれは но лично я どっちかというと предпочёл бы пирожок ブタまんのほうが со свининой... 好きだな

значит, СЕЙЧАС

いよいよ ты наконец-то расскажешь RSA 暗号の про устройство 仕組みを学ぶのね? шифра RSA?

х рю

хрю

да. начну まず RSA の с рассказа о том, как в RSA 暗号化と復号の осуществляется 仕組みを шифрование и 整理しておくわ расшифрование информации.

ПОЛНОЕ ИГНОРИРОВАНИЕ...

3. шифр с открытым ключом 164    第 3 章Глава 公開鍵暗号化技術 164


RSA 暗号の暗号化と復号 Шифрование и расшифрование RSA

Обозначив P открытый текст и C – шифртекст, можно выразить процесс шифрования в виде следующей формулы:

 平文を P、暗号文を C とすると、暗号化は次のように表されます。     C = ≡ P (mod N). e

Таким образом, результат возведения P (открытого текста) в степень e (со-

e(公開鍵の  つまり、P(平文)を 1 つ)乗した値を、N(もう 1 つの公開鍵)で割った ставляющая открытого ключа) делится на N (другая составляющяя открытого

余りが ключа),C(暗号文)になり、暗号化できます и остатком от этого деления будет C (шифртекст).

Далее, процесс расшифрования можно выразить следующей формулой:  また、復号は次のように表されます。     P = ≡ C (mod N) . d

ТакимC(暗号文)を образом, результат возведения CN(公開鍵) (шифртекста) d(秘密鍵)乗した値を  つまり、

в степень d (секретный ключ) делится на N (открытый ключ), и остатком от этого деления будет P (открытый N とは、異なる大きな2つの素数を掛け合わせたものです。 текст). Здесь N – это число, полученное перемножением двух отличных друг от друга больших простых чисел. で割った余りが P(平文)になり、復号できます。ここで

ПОНИМАЕТЕ ЛИ ВЫ ПРИЧИНУ ТОГО, ЧТО 最初の式で

公開鍵の e と N と НЕ УДАСТСЯ, 暗号文 C が知られても ДАЖЕ ЗНАЯ ОТКРЫТЫЕ 解読されない КЛЮЧИ e, N 理由はわかる? и иМЕЯ НА РУКАХ ВСКРЫТЬ ШИФР RSA

P в этом Pприняв を x とする方程式と сравнении 考えれば…… ЗА x.... ПРЕКРАТИ! 聞きたくない! НЕ ХОЧУ ДАЖЕ СЛУШАТЬ!

Шифртекст?

3-5 Устройство шифра RSA

165 165


ведь, зная

e, С и N,

x 以外の e と C と N が можно было бы わかっていて решить сравнение e≡ N)の方程式を x ex=C (mod C (mod N) и прочитать 解けば暗号文の Шифртекст, 解読が可能よね? не так ли?

кстати, если бы было ところで известно значение

オイラー関数 ϕ(N)が φ(N), わかれば то прочитать オイラーの定理から шифртекст можно было бы, используя 計算できちゃうはず!

функци эйлера

теорему эйлера!

но для того,

ところが ϕ(N)を чтобы вычислить

функцю φ(N), 割り出すには を素因数分解 число N на простые しなくちゃ множители, いけないでしょ? не так ли? нужно разложить N

однако если искать x でも методом перебора, いちいち数値を代入して подставляя значения одному, то на это xпо を導き出す方法だと потребуется так много 膨大な時間がかかるので времени, что сделать это будет практически 実際上は不可能に近いの!

если

N

- очень

большое число,

N が非常に 大きい数だと множители понадобится 素因数分解に очень много 膨大な時間がかかる времени. другими словами, わけだから безопасность 「暗号の安全性= этого шифра зависит от 素因数分解」 сложности задачи となるわけね факторизации

то для разложения его на простые

целых чисел.

ать слуш л ьно! а те м и н в

тиск

невозможно!

このことを「計算量的に «вычислительной 安全な暗号」というのよ криптостойкостью».

такое свойство называется

Другими словами, мы приходим つまり「数学的に解きにくい問題」として к математически сложной задаче на факторизацию целых 素因数分解問題に行き着いちゃうわけ! чисел. именно она делает だから解読が難しいのよ !! шифр RSA стойким!!

в шифре с открытым

ключом большое 公開鍵では暗号化鍵と 復号鍵が重要な役割を ключам шифрования 果たすの и расшифрования, поэтому сейчас 次は鍵の生成法を мы по порядку 順番に学んで изучим процесс генерирования いきましょう! ключей RSA!

внимание уделяется

3. шифр с открытым ключом 166    第 3 章Глава 公開鍵暗号化技術 166

БЕДОЛАГА... 気の毒に…


RSA 暗号の鍵の生成法 Метод генерирования ключей RSA

① Выбираем произвольно дваp、q достаточно больших простых числа p и q. ① 十分に大きな 2 つの異なる素数 を任意に選びます。

Произведение p × q, другими словами, N, p × q が N つまり公開鍵の 1 つに будет одной из составляющих открытого なります。 ключа.

② Вычисляем значение функции Эйлера φ(pq) = (p − 1) (q − 1). ② オイラー関数 ϕ(pq)=(p - 1) (q - 1)を求めておきます。 ③ – это ещё одна подготовительная операция для генерирования③は公開鍵を作るためのもう1つ открытого ключа. の準備作業です。

③ Находим число – наименьшееLобщее кратное чисел p - 1)と(q ③ ( -L1)の最小公倍数 を計算します。 (p − 1) и (q − 1). オイラー関数を求めたら После вычисления функции Эйлера числа p и q p q は不必要よ! もう と нам уже не понадобятся! Их лучше уничтожить, 他人に知られないように чтобы кто-нибудь их случайно не узнал. 破棄していいのよ

④ Выбираем произвольно положительное целое число e, так чтобы оно ④ ( p - 1)と(q - 1)の最小公倍数 L と互いに素で、それより小さい任意の было немного меньше L и являлось взаимно простым с L.  正整数 e を選びます。

ee–がもう это один1 из открытых つの 公開鍵よ! ключей! Выберите его e e N になる PP ただし > так, чтобы > N!! ように e を選んでね !!

В случае если P e ≤ N, открытый текст P e ≦ N だと、モジュロ演算を介 преобразуется в шифртекст, минуя e することなく、P = C となり、 вычисления по модулю: 演算によるスクランブル化が行 e P = C, что сделает невозможным われなくなってしまいます。 шифрование путём вычислений.

⑤ Выбираем произвольно положительное dцелое число d так, чтобы оно e に対して、次式を満たす正整数 ⑤ 任意の正整数 を求めます。 удовлетворяло следующему сравнению.     ed = 1(mod ed ≡ 1 (mod L). L) Это число d, мыより小さく、p выбираем его так,qчтобы оно было меньше φ(N),  ただし d は、ϕ(N) および よりも大きいものにします。 но больше чисел p и q.

3-5 Устройство шифра RSA

167 167


ясно!

d

является

L числом モジュロ に関して обратным (обратным элементом) d は e の乗算に対する к числу e относительно 逆数(逆元)に операции умножения по модулю L. あたるわ

другими словами,

dを つまり復号鍵 нужно найти ключ расшифрования d, e のペアとして 暗号化鍵 составляющий пару с 求めるために ключом шифрования e! 必要なものよ!

e とペアの関係になる復号鍵 d を求めてみましょう。  次に暗号化鍵 Теперь давайте найдём ключ расшифрования d, образующий пару с ключом

ed − 1L)=следует, L)です。つまり ed −L), L の倍数なので、 шифрования Из ed ≡ 1 (mod ed − 1 ≡ 0 (mod другими словами,  ed = 1(mode.L)なので、 0(mod что 1は что число (ed − 1) кратно числу L.        ed − 1 = kL         ※ k は非負整数

ed − 1 = kL, где k – неотрицательное целое число.

であり,次式が成り立ちます。 Следовательно,

ed = kL + = 1, где k –1         ※ неотрицательное целое число. kL + k は非負整数      ed Следовательно, согласно сравнению (2), приведённому в рассказе о функции  よって、 オイラー関数の項(160 − 1) Эйлера (см. стр. 161), для любогоページ参照)で説明した式(2)より、 натурального числа P от 1 до (N − 11)から(N верно следующее сравнение. P(平文に相当)に対して、次式が成り立ちます。 までのすべての自然数 N). P ed = P kLed+ 1 ≡ PkL(mod +1

     P = P

= P(mod N)

Это сравнение позволяет нам понять, что при возведении шифртекста C d 乗した P ed は、平文 P に復号されることがわか C(= P e)をвосстановление  これによって、暗号文 (= P e) в степень d (P ed) произойдёт открытого текста из шифртекста (то есть расшифрование). ります。

значит,

dと 秘密鍵 секретный 公開鍵 はи ключe d открытый 一対になって ключ e いるのね! составляют пару!

3. шифр с открытым ключом 168    第 3 章Глава 公開鍵暗号化技術 168

теперь давайте

ではここで 公開鍵と秘密鍵を генерировании открытого 作る練習をしてи секретного みましょ!

потренируемся в

ключей!


公開鍵と秘密鍵の作り方 Генерирование открытого и секретного ключей  いま、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  ステップ Выбираем натуральное число e от 1 до (L − 1) так, оно было взаимно L と互いに素となる自然数 e を求めます。L e  最小公倍数 = 20чтобы と互いに素である自然数

простым с наименьшим общим кратным L. Для L = 20 это может быть одно из следующих восьми чисел: {1, 3, 7, 9, 11, 13, 17, 19}.

となりうるのは、{ 1,3,7,9,11,13,17,19 } の 8 個です。

Шаг ステップ55  Находимe に対する逆元 обратный элемент d к ключу шифрования e, другими словами, ключ d、すなわち復号鍵を求めます。  暗号化鍵 расшифрования d. Подумаем над тем, каким будет обратный элемент к e = 17 отно mod 20 の演算で、例えば e = 17 の乗算に対する逆元 d を考えます。 сительно операции умножения по модулю 20. Необходимым достаточным условием верности     ed = kL +и1( mod 20)なので、17d = 20k + 1сравнения ed = 1 (mod 20) является выполнение равенства ed = 20k + 1, где k – неотрицательное целое число. これを変形すると、 Решая уравнение относительно d, получим: (20k + 1) d= 17

Так как правая часть уравнения является целым числом, нужно подобрать такое k, чтобы число (20k+ + 1) было кратно 17. Последовательно перебирая  右辺は整数なので、20k 1が 17 の倍数になるものをさがしていくと、k が 11k,のとき、

3-5 Устройство шифра RSA

169 169


обнаруживаем, приの倍数になっていることがわかります。つまり、 k = 11 числитель дроби (20k + 1) равен числу 221, которое 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 – e に対する d は、  なお、 ステップ 4 で得られた残りの неотрицательное целое число:      (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), а также то, что в качестве ключа шифрования e желательно выбирать как e としてできるだけ あること(e ≠ d) 、暗号化鍵 можно большее целое число, здесь мы будем использовать пару e = 17, d = 13. 大きな整数を選ぶことが望ましいので、e = 17,

拡張ユークリッド互除法を используя расширенный

e の逆元…можно 用いるとевклида, алгоритм

эффективно найти つまり秘密鍵 d が обратный элемент к

d = 13 とするのが適しています。

ねえねえ Послушайте! теперь, когда 鍵も暗号化鍵と у нас есть пара 復号鍵のペアが ключей, давайте そろったことだし попробуем 実際に暗号を что-нибудь зашифровать! 作りましょうよ!

では хорошо. まとめとして начиная со следующей страницы 次のページから я БУДУ ОБЪЯСНЯТЬ шифрование и RSA の暗号化と復号を расшифрование 紹介するわ! RSA НА КОНКРЕТНОМ ПРИМЕРЕ!

3. шифр с открытым ключом 170    第 3 章Глава 公開鍵暗号化技術 170

e, то есть

効率よく求められるわよ d. (183 ページ参照)

ключ расшифрования


RSA 暗号文の生成 шифртекста RSA Генерирование

Прежде всего я объясню порядок генерирования шифртекста с помощью открытого 暗号の公開鍵を用いて、暗号文を生成する処理手順を説明します。 ключа まず、RSA RSA. В этом примере мы будем зашифровывать открытый текст, состоящий4из 4 букв английe=  具体例として、鍵の例で作った暗号化鍵 17 により、アルファベット 文字からなる平文 ского алфавита (GOLF), используя ключ шифрования e = 17, сгенерированный в предущем (GOLF)を暗号化していきます。 примере. 表 3.12 文字コード表 Таблица 3.12. Таблица кодов символов

Шаг 11 ステップ Прежде всего назначим буквам открытого текста  まず、表の文字コード表をもとに、整数を割 целые числа, используя таблицу кодов символов. り当てます。 G ↓ 32

O ↓ 40

L ↓ 37

F ↓ 31

Шаг 22 ステップ Преобразуем целые 2числа в 6-битные двоичные  整数を 6 ビットの 進数データに変換します。 строки. 32 ↓ 100000

40 ↓ 101000

37 ↓ 100101

31 ↓ 011111

文字 Коды コード Буквы a 0 b 1 c 2 d 3 e 4 f 5 g 6 h 7 i 8 j 9 k 10 l 11 m 12 n 13 o 14 p 15 q 16 r 17

Буквы 文字 Коды コード s 18 t 19 u 20 v 21 w 22 x 23 y 24 z 25 A 26 B 27 C 28 D 29 E 30 F 31 G 32 H 33 I 34 J 35

文字 Коды コード Буквы K 36 L 37 M 38 N 39 O 40 P 41 Q 42 R 43 S 44 T 45 U 46 V 47 W 48 X 49 Y 50 Z 51 ⋮ ⋮ Пробел 空白 63

Шаг 33 ステップ  2 進数データを、 (N - 1)以下の非負整数で表します。この例では、N 55 превышающих で、N - 1 = Представим двоичные данные в виде неотрицательных целых чисел,=не число 55 (N-− 11). Так как в нашем примере N = 55, (N − 1) = 54, мы перегруппируем данные в = 54 となるので、5 ビットごとに区切ることにします。つまり、5 ビットで表せる最大 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 (Последний является битом-заполнителем последней ここでは便宜上 5-битной строки,     (最後の 0ноль は 5 ビットに区切ったときに不足したビットです。 0 とします。)

в которой после перегруппировки не хватало одного бита.)

Шаг 44 ステップ  2 進数データを 10 進数に直します。 Преобразуем двоичные данные в десятичные числа. 10000 ↓ 16

01010 ↓ 10

00100 ↓ 4

10101 ↓ 21

11110 ↓ 30 3-5 Устройство шифра RSA

171 171


Шаг ステップ55  暗号化鍵(N = 55,e = 17)を用いて、暗号化を行います。具体的には、10 Зашифровываем десятичные данные, используя ключ шифрования (N 進数のデータを = 55, e = 17): находим остатки от деления на 55 результатов возведения десятичных данных в степень 17, други17 乗して 55 で割ったときの余りを求めます。したがって、 ми словами, мы должны вычислить следующие степени по модулю 55.      1617(mod 55), 1017(mod 55), 417(mod 55), 2117(mod 55), 3017(mod 55)

Покажем здесь подробно процесс возведения десятичного числа 16 в степень 17 по модулю 16 に対しては、 55. を計算することにより、暗号データが得られることになります。例えば Так как верны следующие сравнения: 2      162 = 256 = ≡ 31(mod 55) ≡ 36(mod 55)   36 = 1296 = 2 ≡ 16(mod 55)      312 = 961 = ≡ 26(mod 55)   26 = 676 =

последовательно применяя их, мы получим следующее. となるので、これらの関係式を順に適用して、      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).

Шифрование остальных десятичных данных производится аналогичным образом, по 残りの暗号化も同様に行います(結果だけを記します) 。 этому здесь мы приведём только результаты вычислений. 17      1017(mod 55)= ≡ 49 ≡ 10   4 (mod 55)= 17      2117(mod 55)= ≡ 35 ≡ 21  30 (mod 55)=

Итак, мы сгенерировали шифртекст, который в виде десятчных чисел выражается следую よって暗号文は、 щим образом.  36 10 49 21 35                        (3)

Рассматривая (3) как последовательность кодов символов, назначим десятичным числам と 10 進数で表されます。式(3)を文字コードとみなして、表 3.12 より文字を割り当てると、 буквы по табл. 3.12. 3. шифр с открытым ключом 172    第 3 章Глава 公開鍵暗号化技術 172


36 ↓ K

10 ↓ k

49 ↓ X

21 ↓ v

35 ↓ J

Теперь шифртекст RSA готов. となる暗号文ができあがります。 RSA 暗号文の復号 RSA Расшифрование

Теперь я объясню порядок преобразования шифртекста в открытый текст с помощью се 今度は、RSA 暗号の秘密鍵を用いて、暗号文を平文に復号する処理手順を説明します。 кретного ключа RSA. В этом примере будет продемонстрирован процесс расшифрования десятичных )を、 зашиф 具体例として、秘密鍵である復号鍵(d = 13)を使って、10 進数の暗号データ(式(3) рованных данных (3) до преобразования в открытый текст, состоящий из букв алфавита, с アルファベットの平文に復号するまでを以下に示します。 помощью секретного ключа расшифрования (d = 13). Шаг ステップ11 C d(mod  復号鍵(d 13)を用いて、 式(3)の 10остатки 進数のデー Используя = ключ расшифрования (dN)を計算します。具体的には、 = 13), вычисляем C d (mod N): находим от де-

ления результатов возведения десятичных данных (3) в степень 13, другими словами, タをна 1355 乗して 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 ステップ  平文データとして得られた 10 десятичные 進数を 5 ビット 2 進数に直します。 Преобразуем полученные данные открытого текста в 5-битные двоичные числа. 16 ↓ 10000

10 ↓ 01010

4 ↓ 00100

21 ↓ 10101

30 ↓ 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        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 を削除 (Отбрасываем)

 (最後の は 6 ビットに区切ったときの過剰なビットなので、削除します。 (Последний 0 0является битом-заполнителем, добавленным во время ) перегруппировки в 5-битные строки, поэтому отбрасываем его.)

Шаг 44 ステップ  6 ビットの 2 進数データを整数に変換します。

Преобразуем 6-битные двоичные строки в целые числа. 100000 ↓ 32

101000 ↓ 40

100101 ↓ 37

011111 ↓ 31 а почему なぜ ゴルフを暗号に именно слово GOLF? したんだ?

зашифровано

ステップ Шаг 55

Используя таблицу кодов символов, заменяем цело 表の文字コード表をもとに、整数データを文字に置き換えます。 численные данные буквами. 32 ↓ G

40 ↓ O

37 ↓ L

31 ↓ F

Итак, расшифрование завершено.

 こうして、復号は完成しました。

3. шифр с открытым ключом 174    第 3 章Глава 公開鍵暗号化技術 174

наверное, 著者の先生の 趣味なのよ… манги - любители гольфа... たぶん авторы этой


3-6 Шифр ключом и задача дискретного логарифмирования  3 ーс открытым 6 公開鍵暗号と離散対数問題

КСТАТИ, В ШИФРАХ

ところで公開鍵暗号って С ОТКРЫТЫМ КЛЮЧОМ RSAВЕДЬ のように ИСПОЛЬЗУЮТ

что, RSAну 暗号のこと поняли про 理解できた? шифр RSA?

НЕ ТОЛЬКО ЗАДАЧУ ФАКТОРИЗАЦИИ ЦЕЛЫХ ЧИСЕЛ, 素因数分解問題 КАК В rsa? だけじゃないわよね? ты говорила про 他にもあるの? другую задачу...

は…はは ХА-ХА-ХА... РАЗУМЕЕТСЯ... もちろんだとも…

нет, не только.

そうね я простыми давайте словами расскажу 離散対数問題を вам о шифре 根拠にした ㋓ ㋸Эль-гамаля, ガ ㋮ ㋸ 暗号についても ElGamal основанном 簡単に説明するわ на задаче дискретного логарифмирования.

правда,

правда? 簡単? простыми うそじゃないだろな! словами?

а а м е- то а с а ки ы е н е к ят уж пон о ва т. . . е е н сл ьзу ол п ис

ほんとよ! правда! для начала まずは ознакомься 次の解説を с теоретическими 読んで основами этого шифра...

暗号のもとになる прочитай вот это 理論を学んでね! описание! ск р

3-6 Шифр с открытым ключом и задачадискретного логарифмирования

ск

р

175 175


離散対数問題 Задача дискретного логарифмирования

Взгляните ещё раз на таблицу степеней  モジュロ 7 のべき乗の表を、もう一度見てく

по модулю 7. ださい。 В строке, соответствующей основанию 3, содержатся все значения от 1から до 66без по 3 をべき乗している行では、1 までの вторений. 数値が重複なく 1 回ずつ現れています。 Множество результатов арифметических операций по модулю 7 представляет  素数 7 のモジュロ演算の結果は有限体で、要 собой конечное поле, состоящее из следую素は、 щих элементов:

b 表 3.13 モジュロ 7 の a((a 乗) Таблица 3.13. Степени a b) の поb модулю 7

    { 0,1,2,3,4,5,6 }

аですが、3 с помощью степеней числа 3 можно выраのべき乗は、0 以外のすべての要素を зить все эти элементы, за исключением 0. 表すことが可能だということになります。 表 3.12 Число 3, выражающее все числа в табл. 3.13 от 1 до 6 по одному разу, называется первоの a = 3 のように、1 から 6 までの数値が重複 образным корнем по модулю 7.

a b

1

2

3

4

5

6

1

1

1

1

1

1

1

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

なく 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 ≦ p − 1                 ※ k

k ≡ log α Zi(mod p).

 また、原始根αのべき指数 k は次式で表されます。     k = logα Zi(mod p)

3. шифр с открытым ключом 176    第 3 章Глава 公開鍵暗号化技術 176


このとき、k をαを底とする離散対数と呼びます。 В этом случае число k называют дискретным логарифмом по основанию α.

Пусть вас не смущает такой математический термин, как логарифм, так как  ここで、log という記号を難しく考える必要はありません。 здесь всё очень просто. Например, такое выражение, как 23, имеет точно такой же 3 = 8 という式は、 例えば、2 смысл, как все нижеприведённые выражения.     3 = 3 log2 2 = log2 23 = log2 8 とまったく同じ意味です。 Ведь, например, фразу «2 в степени 3 равно 8» можно выразить и так: «Чтобы получить 8, надо 3 раза умножить 2 само на себя». 「2 を 3 乗すると 8 になる」の表現を言い換えれば、「8 にするために、2 を掛け合わせ Как упоминалось на стр. 118, используя следующее сравнение る回数は 3 回だ」になるということです。

α ≡ Zi(mod p),  118 ページでも説明したように、 k

легко найти Zi по известным α, k и p, однако k = Zлогарифм      α найти дискретный i(mod p)k по известным α, Zi и p – чрезвычайно сложная задача. Это и называется задачей дискретного логарифにおいて、αと k と p がわかっていて、Zi を求 мирования. めるのは難しくありませんが、αと Zi と p がわ

かっていても、離散対数の k を求めるのは大変

log α xx y y==log α означает y x =α よ y = α x! !!

難しいというのが、離散対数問題です。

Ну что, 説明は理解 поняли моё できたかな? объяснение?

ха-ха-ха. は…はは

итак, теперь я では つづいて расскажу вам про 離散対数問題を利用する шифр эль-гамаля алгоритм шифрования, 暗号アルゴリズムの в котором используется ElGamal 暗号を задача дискретного 説明するわ! логарифмирования!

ну же, успокойся!

к, ы к хн ны х

3-6 Шифр с открытым ключом и задачадискретного логарифмирования

177 177


ElGamal 暗号の暗号化と復号 Шифрование и расшифрование Эль-Гамаля

Пусть отправителем шифртекста будет  暗号の送信者を「ルカ」とし、受信者を

аランって кто такая лана? だれだ?

Рика, а получателем – Лана.

「ラン」としましょう。

① Получатель Лана выбирает q と большое ① 受信者ランは、大きい素数 простое число q  その原始根αを用意します。 и первообразный корень α. это официантка

ラーメン屋の女の子! из кафе «заяц»! мы с ней 友達になったのよ подружились!

② Получатель Лана произвольноd выбирает ② 受信者ランは、ランダムに秘密鍵 を決め、 секретный ключ d и публикует три числа: g, α и q, являющиеся решением сравнения d q), q) g ≡ α gd (mod =α (mod

q を公開鍵として公開します。 を計算し、g とαと в качестве открытого ключа.

сегодня выберу этот!

③ Отправитель Рика выбирает случайное число r и вычисляет r ③ 送信者ルカは、乱数 (mod q). 1 =α(mod q)を計算します。 C1 ≡ αrrを選んで、C r Кроме того,Pиспользуя текстq)を計算します。 P, она вычисляет также и  さらに、平文 に対して、Cоткрытый 2 = P × g (mod r C2 ≡ P × g (mod q).

3. шифр с открытым ключом 178    第 3 章Глава 公開鍵暗号化技術 178


④ Отправитель Рика отправляет C1 и C2 получателю Лане. ④ 送信者ルカは、C 1 と C2 をランに送信します。

Кафе «Заяц »

Секретный ключ: d d 秘密鍵 Открытый ключ: 公開鍵 g,α,q g, α и q C1,C2

⑤ Используя секретный ключ d, получатель Лана расшифровывает d を使い、次の式を計算して復号します。 ⑤ 受信者ランは秘密鍵 шифртекст путём вычисления следующего сравнения: C2 P =   (mod q) ≡ C1d

r d r r d r d d) d r rd =g C =(α (α r)d)==α(α = (α=α ) = g r, よね! C11 = ということは не так ли! А значит,

P×g C2    =   r = P  d g C1 r

つまり P に復号される というわけ открытый текст P. другими словами,

восстанавливается

точно! должен ほんとだ!

получиться ちゃんと открытый 平文 P になるわ! текст

P!

ура!

3-6 Шифр с открытым ключом и задачадискретного логарифмирования

179 179


протокол общего ключа DiffeーHellman 鍵共有法 диффи-хеллмана というのも

не спать!

тиск

похож на この ElGamal 暗号と щифр эль-гамаля. 似た仕組みよ

① Рика и Лана совместно обладают большим простым числом p и p と原始根αを、 ① ルカとランは、 秘密にすることなく共有します。 первообразным大きな素数 корнем α, которые не являются секретными.

② Рика выбирает случайное число c и, сохраняя его в секрете, c c c を選んで秘密にし、α p)をランに送ります。 ② ルカはランダムな数 (mod p). отправляет Лане результат вычисления α(mod d Лана выбирает случайное число d и, сохраняя егоp) вをルカに送ります。 секрете, d を選んで秘密にし、  一方、 ランはランダムな数 α(mod отправляет Рике результат вычисления α d (mod p).

③ Рика, используя свой секретный ключ c, получает d c cd ③ ルカは秘密鍵 から、(α ключ (α d)c ≡ α cd c(mod p). )=α (mod p)という鍵を得ます。ランは秘密 c d cd Лана,から、 используя свой секретный ключ d, получает p)という鍵を得ます。 鍵 d (α )=α (mod c d cd ) ≡ α (mod p). ключ (α  ふたりは、鍵を共有できました。 Теперь у обеих девушек есть общий ключ.

ого! おお да это これは просто! わかりやすい!

3. шифр с открытым ключом 180    第 3 章Глава 公開鍵暗号化技術 180

да. иそのうえ криптостойкость высокая. 強度も高いのよ


Шифр эль-гамаля в улучшенном виде используется и в алгоритме цифровой подписи DSA, И В БОЛЕЕ СТОЙКОЙ КРИПТОСИСТЕМЕ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ!

КАЯ ВЫСО О­ КРИПТ СТЬ О СТОЙК ЦИФРОВАЯ ПОДПИСЬ? ЭТО ТЕХНОЛОГИЯ, ИСПОЛЬЗУЕМАЯ ДЛЯ АУТЕНТИФИКАЦИИ?

ПРО ЭТО МЫ ПОГОВОРИМ В ГЛАВЕ 4!

ТРЕНЬ

ОЙ, мне Е-МеЙЛ ПРИШЁЛ.

ДАВАЙТЕ ПРОЧИТАЕМ!

Отправитель: Удзуки Лана Получатель: Рика Тема: До свиданья! Сегодня ты опять преподавала? Я ушла с работы и нахожусь за границей! Сейчас я скучаю по тебе. Но фантастически ты знаешь шифры! Более того, ты любишь математику! Но я рассказывать хорошо не умею. Работа - это для меня самое главное. Дружба - это для меня тоже очень важно. Жалею, что мы не поговорили по душам. Я, конечно, когда-нибудь приеду опять. Когда тебе будет скучно, напиши! Криптография - очень полезная наука! Я ещё напишу!

3-6 Шифр с открытым ключом и задачадискретного логарифмирования

181


………

и мне тоже

おれも寂しいぞ грустно! но важней でもそれより то, что я 腹へった! проголодался!

пойдём! そうしましょ!

пойдём

ラーメン есть лапшу 食べにいこ!

стук

рамэн!

みなさん дорогие читатели, вы тоже, наверное, もうわかったわよね уже догадались?! !?

3. шифр с открытым ключом 182    第 3 章Глава 公開鍵暗号化技術 182

せっかくの友だちが… твоя подруга... как грустно.... 寂しいわね

приходи, мы тебе место займём!


Дополнительная информация

コラム  拡張ユークリッド互除法 Расширенный алгоритм Евклида

Алгоритм Евклида – это метод нахождения наибольшего общего делителя (НОД) двух натуральных чисел, являющийся более эффективным, чем алгоритмы  ユークリッドの互除法は、2 つの自然数の最大公約数を導き出すアルゴリズムです。素 факторизации целых чисел. Алгоритм Евклида прост и надёжен: чтобы найти НОД 因数分解に比べて効率よく計算できます。互除法で 2 つの自然数 a,b(a > b)の最大公 двух натуральных чисел a и b (a > b), достаточно выполнять вычисления в следую約数を見つけるには、次の手続きを用います。 щем порядке. r とする。  ① a を b で割り、余りを ① Поделив a на b, находим остаток r.

② Если = 0, то НОД = b (поискbзавершён).  ② r = 0rの場合は、最大公約数は であり、手続きは終わりになる。

③ Если r ≠0, то возвращается ①, приняв a = b и b = r.  ③ r ≠ 0 の場合は、a と b の組を кb шагу と r に置き換えて、最初の手続きにもどる。 Таким образом, наибольшим общим делителем будет делитель без остатка, по つまり、この①から③の手続きを繰り返して、余りが 0 になったときに割った数が、最 лученный при выполнении вышеуказанного алгоритма, или, другими словами, по大公約数となるわけです。 言い換えれば、余り 0 を得たときの直前のステップで得た余りが、 следний ненулевой остаток. Используя вышеописанный 最大公約数ということになります。алгоритм Евклида, попробуем найти НОД, например, чисел 1365 и 77.  例として、1365 と 77 の最大公約数をユークリッドの互除法で求めてみましょう。      1365 + 56 (a) (b) = 17 × 77 (r)

(← 1365 (a) ÷ 77 = (b)17 余り (r) 56 の計算による)

     56 21 +21) 14 77 ÷ 56 = = 21×(ост.

(← 5677÷=211=×256余り + 2114 の計算による)

     77 1 ×(ост. 56 +56) 21 1365 ÷ 77 = = 17

56 ÷ 21 = = 12 ×(ост.      21 14 +14) 7

21 ÷ 14 = = 21 ×(ост.      14 7 + 07) 14 ÷ 7 = 2 (ост. 0)

→ → → → →

(← 77 余り 21 の計算による) 1365÷=5617=×177 + 56

+ 147 の計算による) (← 2156÷=142=×121余り

1 ×2 14 + 07の計算による) (← 1421÷=7 = 余り 14 = 2 × 7 + 0

となり、最大公約数は 7 となります。手順どおりに進めていけば確実に結果が出るので、

Таким образом, наибольший общий делитель чисел 1365 и 77 равен 7.

互除法の有用性が実感できることと思います。

●一次不定方程式の解の計算● Нахождение решения неопределённого уравнения

Теперь попробуем использовать алгоритм Евклида для поиска наибольшего  次に、互いに素な 20 взаимно と 17 で、互除法を用いて最大公約数を求めてみます。 общего делителя двух простых чисел, например 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      17 - 5 × 3 = 2

          (4)               (5)

     3 - 1 × 2 = 1

          (6)

Теперь подставляем левую часть тождества (5) вместо 2 тождества (6) 2 に式(5)を代入して、3 и 次に、式(6)の группируем члены по множителям 3 и 17.と 17 に注目してくくります。      3 - 1 × 2 = 3 - 1 ×(17 - 5 × 3)= 6 × 3 - 1 × 17 = 1      (7)

Теперь подставляем левую часть тождества (4) вместо 3 тождества (7) に式(4)を代入し、20 и さらに、式(7)の группируем члены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, c という形になっていて、a,b,c,x,y +x,byy = にあたる数はすべて整数で в 上の式は、ax котором a, b, c, – целые числа. Уравнения подобного вида с неизвестными xす。このような形の方程式は一次不定方程式といい、整数解の и y называются неопределёнными уравнениями первогоxпорядка. と y を求めるものです。 Другими словами, используя формулы промежуточных вычислений по алго つまり、ユークリッド互除法の計算過程を利用することで、a = 20,b = 17 уравнения のとき、一 ритму Евлкида, мы нашли целочисленное решение неопределённого первого порядка для a = 20 и b = 17 – пару чисел (x, y) = (6, −7). Этот метод, называ次不定方程式の整数解(x,y)=(6,7)が得られるということが示されているのです。 емый расширенным алгоритом Евклида, имеет очень большую практическую ценこの方法が拡張ユークリッドの互除法で、非常に利用価値の高いアルゴリズムです。 ность. Для общего когда a и b –と неbравные нулю целые числа, c – их наибольa と b をслучая, c とすると、一次不定方程式  一般に 0 でない整数とし、a の最大公約数を ший общий делитель, уравнение      ax + by = c

ax + by = c

は、整数解(x1,y1)を持ち、解の 1 組は、拡張ユークリッドの互除法を用いて求めるこ

имеет целочисленное решение (x1, y1), которое может быть найдено с использоваとができます。ただし一次不定方程式の解は、1 組だけではありません。方程式のすべて нием расширенного алгоритма Евклида. Правда, неопределённые уравнения первого порядка имеют множество решений, которые могут быть представлены в слеの整数解は、任意の整数 k を用いて次のように表されます。 дующем виде (здесь k – произвольное целое число): b a      (x,y)=(x1 + k・ ,y1 - k・ ) c c

              (8)

Вычисление обратного элемента по модулю ●モジュロ演算での逆元の計算●  式(8)に示す解の公式を用いれば、 20xвыразить + 17y = 1множество のすべての整数解は、 Используя решение в общем 一次不定方程式 виде (8), можно решений

неопределённого уравнения первого порядка 20x + 17y = 1 в следующем виде: 次のようになります。

184 184

3. шифр с открытым ключом 公開鍵暗号の技術 第 3 章 Глава


(6 + 17k,- 7 - 20k)

              (9) .

 kПри =- k1 の場合、解は(x,y) =(- 11,13)です。これを一次不定方程式 + 17y=1 = −1 мы имеем решение (x, y) = (−11, 13), подставив которое20x в неопределённое уравнение первого порядка 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 – L)の場合、 L に関して、復号鍵 d は暗号化鍵 e  168 ページで、ed = 1(mod 「モジュロ обратное число (обратный элемент) к ключу шифрования e относительно умножения по модулю L. Другими словами, сравнение (11) означает, что число 13 является の乗算に対する逆数(逆元)である」という説明をしました。すなわち、 式(11)はモジュ обратным элементом к числу 17 относительно умножения по модулю 20. ロ 20 に関して、13 が 17 の乗算に対する逆元であることを意味しています。 Это означает, что, используя расширенный алгоритм Евклида, можно легко на つまり、拡張ユークリッド互除法を使えば、モジュロ演算での逆元が効率よく導き出せ ходить обратные элементы, а так как в шифре с открытым ключом это используется для генерации секретного ключа (ключа расшифрования), этот алгоритм широるわけです。公開鍵暗号においては、秘密鍵(復号鍵)の生成のために逆元を求めること ко используется и в криптографии. が必要になるので、暗号の世界でも、拡張ユークリッド互除法は大きな力を発揮します。 Итак, выше мы смогли найти 17−1 – обратный элемент к 17 по модулю 20, но -1 можно ли найти, например, 16−1 – обратный элемент к 16 (mod 20)の逆元 20)? Так как  17(mod 20)の逆元 17 - 1 を求めることができましたが、16(mod 16 НОД の чисел 16 и 20 равен 4, мы можем найти решение уравнения 20x + 16y = 4, как было 場合はどうでしょう? 16 と 20 の最大公約数は 4 なので、20x 16y = 420x は、前述のと показано выше. Однако неопределённое уравнение первого+ порядка + 16y = 1, решить которое нужно для нахождения обратного элемента, не имеет решений おり解を求めることができます。しかし、逆元を求めるための一次不定方程式 20x + 16yв области целых чисел, так как его левая часть всегда будет кратна 4. Другими слова= 1если は、左辺が必ず 4 の倍数なので、整数解は存在しません。つまり、2 ми, два числа не являются взаимно простыми, то нельзя найти つの数が互いに обратный элемент. Таким образом, получение обратного элемента возможно только в том слу素でない場合には、逆元を求めることはできません。拡張ユークリッド互除法による逆元 чае, если два числа являются взаимно простыми. の導出は、2 数が互いに素である場合にのみ可能となります。 В заключение попробуем на практике найти 73−1 в качестве обратного элемента 1001 に関してрасширенный 73 の逆元 73 - 1 алгоритм を求める計算を、互除法を使って実際 к 最後に、モジュロ 73 по модулю 1001, используя Евклида. Сначала с помощью алгоритма Евклида мы находим НОД чисел 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выражение (14) вместо множителя 10 в выражение (15).  式(15)の に、式(14)を代入します。      21 - 2 ×(52 - 2 × 21)= 1      21 - 2 × 52 + 4 × 21 = 1                   (16)

В выражении (16) члены по множителям 21 и 52.  式(16)で、52 と 21сгруппируем をくくり出します。     5 × 21 - 2 × 52 = 1

 

          (17)

Подставим21выражение (13) вместо множителя 21 в выражение (17).  式(17)の に、式(13)を代入します。      5 ×(73 - 1 × 52)- 2 × 52 = 1      5 × 73 - 5 × 52 - 2 × 52 = 1                 (18)

В выражении (18) члены по множителям 52 и 73.  式(18)で、73 と 52сгруппируем をくくり出します。     5 × 73 - 7 × 52 = 1

 

          (19)

Подставим52выражение (12) вместо множителя 52 в выражение (19).  式(19)の に、式(12)を代入します。      5 × 73 - 7 ×(1001 - 13 × 73)= 1      5 × 73 - 7 × 1001 + 91 × 73 = 1

          (20)

В выражении (20)とсгруппируем члены по множителям 73 и 1001.  式(20)で、1001 73 をくくり出します。      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 -1 к числу 73 по модулю 1001 является число 96. обратным элементом 73 元 73 は 96 となります。

186 186

3. шифр с открытым ключом 公開鍵暗号の技術 第 3 章 Глава


Глава 第4章 4

実際に暗号を使うには

как используют ш ифр на практике?


※1 ※2

! сотрудик

 4− 1 ハイブリッド暗号 4-1 Гибридные криптосистемы

Срочно!! Требуется сотрудик!

Вывески: ※1 – кафе «Заяц», ※2 – лапша рамэн.

ладно,

когда же ラーメン принесут まだかな… рамэн?

じゃあ пока не принесли, 待ってる時間に давайте я расскажу вам про ハイブリッド暗号に гибридные ついて教えるわ

после того ランちゃんが как лана ушла, 店をやめちゃったから им, наверное, 忙しいのかも… трудно...

«гибридный» ハイブリッドって значит «смешанный»... 複合って意味よね то есть в них использовано つまり複数の方式を сразу несколько 組み合わせるってこと? методов?

криптосистемы.

ёб ь уч о п ят

188    188

а .. .

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには

меня зовут лана!


да! そうよ!

в гибридном шифре

ハイブリッド暗号では 共通鍵を公開鍵暗号で ют открытым ключом и передают, а сообщение 暗号化して送り メッセージは зашифровывают общим 共通鍵で暗号化して送るの ключом и передают! その手順を見てみましょ!

эти криптосистемы

общий ключ зашифровыва-

共通鍵暗号と восполняют недостатки одноключевого шифра 公開鍵暗号の短所を и шифра с открытым 補い合う暗号方式なの ключом.

вот в таком порядке!

共通鍵暗号の短所は鍵交 Недостаток одноключевого шифра – трудность 換が困難であること、長 обмена ключами, а досто所は処理速度が速いこと инство – высокая скоです。 рость обработки инфор公開鍵暗号の短所は長い мации. メッセージを暗号化する Недостаток шифра с общим ключом – долгая обのに計算時間がかかるこ работка длинных сообと、長所は鍵交換が容易 щений, а достоинство – であることです。

когда ラ ー メже ン принесут

遅いな…

рамэн?

простота обмена ключами.

Процесс шифрования

共通鍵暗号のプロセス общим ключом

Отправитель 送信者

Шифртекст

暗号文

Общий

公開鍵ключ Открытый 公

言語道断 Как в тумане

Как в тумане 言語道断

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

Отправитель сообще受信者の公開鍵を ния заранее получает открытый あらかじめ受け取って ключ от получателя おくсообщения.

010010 1110010 101110 010111…

0011 011001 01110…

インター ネット

010010 1110010 101110 010111…

0011 011001 01110…

Зашифрованные данные 共通鍵の暗号データ общего ключа. Процесс шифрования

Полученный 共通鍵 A と ключ совпа同一のものが дает с общим 得られる ключом A.

Сообщение メッセージ (открытый текст) (平文)

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

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

共通鍵 ключ AAを 平文とみな зашифровывается как して入力し открытый 暗号化する текст.

Открытый

Нет слов 五里霧中

Общий

Открытый текст

共 共通鍵 A Общий

五里霧中 Нет слов

Интернет

Общий ключ A

Сообщение メッセージ (открытый текст) (平文)

Получатель 受信者

共通鍵 BB Общий ключ

暗号文 暗号データを Расшифровав данные, 復号して находят 共通鍵 Bを общий 得る ключ B.

Секретный 秘密鍵ключ Расшифрование 復号

секретный

Получатель 受信者が公開鍵の сообщения заранее создаёт секретный ペアとしてあらかじめ ключ как пару 作成しておく открытому ключу.

公開鍵暗号のプロセス открытым ключом 図 4.1 ハイブリッド暗号の暗号化と復号の全体像 Рис. 4.1. Общая картина шифрования и расшифрования в гибридной криптосистеме

4-1 Гибридные криптосистемы

189 189


Как показано на рис. 4.1, шифр с открытым ключом используется только для шифрования и расшифрования общего ключа, а одноключевой шифр – только для шифрования и расшифрования сообщения. Таким образом, длинные сообщения быстро зашифровываются и расшифровываются с помощью общего клю 図 4.1 に示すように、公開鍵暗号を『共通鍵の暗号化と復号のためだけ』、共通鍵暗号を『メッ ча, а благодаря тому что общий ключ зашифровывается открытым ключом и пеセージの暗号化と復号のためだけ』に利用します。つまり、長いメッセージは共通鍵暗号で редаётся по каналу связи, не возникает проблемы обмена ключами – самой боль高速に暗号化・復号をします。共通鍵は公開鍵で暗号化して通信路を介して受け渡されるの шой уязвимости одноключевого шифра. Итак, теперь давайте изучим практическое использование гибридной крипで、共通鍵の最大の弱点である鍵交換するときの受け渡し問題が生じません。 тосистемы на примере заказа лапши рамэн.  それでは、ハイブリット暗号の実際をラーメンの注文を例にとって見てみましょう。 я отправлю 公開鍵をвам открытый ключ.

Секретный ключ

秘密鍵

送るよ

й

ты

ры

отк

кр .

この 2 つは Это одна ペア! пара!

ный

рет

сек

от

Нам три рамэна!

хорошо, じゃあтогда

я хочу отпраメッセージを вить вам 送ります сообщение!

се кр .

Сообщение メッセージ

公開鍵

公開鍵

откр

ыты

й

Открытый ключ

Открытый ключ

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

Нам три рамэна!

ий

Общий ключ 共通鍵

щ

Сообщение

メッセージ

Об

Тот же самый ключ 同じもの

メッセージを так... сообщение надо зашифровать 共通鍵で暗号化して общим ключом, а 共通鍵を потом общий ключ 公開鍵で暗号化するよ открытым ключом...

Шифртекст

暗号文

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

и бщ

О

共通鍵

Общий ключ

ый

ыт

кр

от

Полученный もらった公開鍵 открытый ключ

ではитак, я отправляю! 送信しまーす!

Зашифрованный

暗号化した общий ключ 共通鍵

Расшифрование 復号 Секретный 秘密鍵 ключ

й

щи

Об

Полученный

もらった暗号文 шифртекст

190    190

Общий ключ 共通鍵 Тот же 同じもの самый ключ

Нам три рамэна!

Общий ключ 共通鍵

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

эй! へい! готовьте ラーメン три рамэна!

за ю а р з! од ка а г за

секретный

й

щи

Об

бл

Зашифрованный 暗号化した общий ключ 共通鍵

пожалуйста! はいよー

暗 号 化 し たзашифрованного 共通鍵とメッ Отправка общего ключа и шифртекста セージの暗号文を送信する

Сообщение メッセージ

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには

3 つね!


понятно. это обеспечивает эффективную и быструю шифрованную связь!

ах, вот бы рамэн тоже приносили быстро и эффективно.

грр...

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

Программа PGP, используемая, например, для шифрования сообщений электронной почты; протокол SSL/TLS, используемый для шифрования ве бстраниц (см. стр. 226), являются гибридными криптосистемами.

простите, что заставил вас ждать!!

бам! 4-1 Гибридные криптосистемы

191


4-2 Хеш-функция и код аутентификации сообщения

ой!

Подмена данных нн... на кого он сердится?

вуууу

не знаю...

зырк

инспектор! скорее поймайте преступника!

да, конечно, я постараюсь...

где же она скрывается? я сайфер!

192

Глава 4. как используют шифр на практике?


у нас на днях похитили 29 порций рамэна!

Кафе «Заяц »

рамэна?!

нам заказали доставку на дом по электронной почте...

Сато из 1-го квартала

Кафе «Заяц»

Прошу 1 порцию рамэна.

30 порций рамэна! срочно! ого!

подменяем данные!

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

а нельзя ли

...но кто-то подменил содержание сообщения!

защититься от подмены данных с помощью криптографии?

дун

ай - яй

о..

- яй

стра шн

...

4-2 Хеш-функция и код аутентификации сообщения

193


Защита от подмены 改ざんの対策 хеш?

для защиты от 改ざんを防止するには подмены данных ハッシュ関数を можно использо使えばいいのよ !! вать хеш-функцию!!

ハッシュ? это как-то ハッシュドビーフと связано с 関係あるのか? hashed beef?

насмешил!

細切れの мелко牛肉を煮込んだ нарезанной варёной говядины! 料理よね? это же блюдо из

ха-ха

слово

Hash

切り刻むことを по-английски и означает ハッシュというの

да?

«мелко нарезать».

но здесь мы 牛肉のかわりに вместо говядины メッセージを мелко нарезаем 細かく切り刻んで сообщение и ハッシュ値を作りだすのが получаем его хеш. это называется ハッシュ関数よ хеш-функцией.

ハッシュ値って

а что такое なに? хеш?

оно вообще съедобное?

194    194

очень вкусно, наверное...

это значение, вычисляемое на メッセージから計算される値で основе сообщения. оно 犯罪捜査に使う подобно «отпечаткам пальцев» для следователя 「指紋」のようなものなの!

его используют メッセージが для того, чтобы 改ざんされていない проверить, ことを確かめるのに нет ли подмены данных 使うのよ! в сообщении.

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには

не

с ъ н ет ед , об н

ое

!


ハッシュ関数 Хеш-функция

Хеш-функция вычисляет хеш для собщения. Хеш можно уподобить отпечаткам  ハッシュ関数を使い、もとのメッセージからハッシュ値を計算します。指紋が本人確認の手

пальцев, помогающим идентифицировать личность. Он представляет собой данные фиксированной длины, полученные путём свёртки данных исходного сообщения, и したものなので、データ量は小さくなります。また、固定の大きさを持ちます。 содержит меньше информации, чем исходное сообщение. Отсутствие подмены данных в исходном сообщении называется целостностью  「メッセージが改ざんされていないことを受信者が確かめられる」という性質を正真性(完全 данных, и её проверка возможна благодаря тому, что отправитель прилагает к исход性、integrity)といい、送信者が、もとのメッセージとハッシュ値を一緒に送信することで正 ному сообщению его хеш. Другими словами, с помощью этих «отпечатков пальцев» проверяют наличие или отсутствие в сообщении злонамеренных изменений. Получа真性が保証されます。つまり、メッセージの指紋を手掛かりに、改ざんの有無をチェックする тель сообщения, используя ту же самую хеш-функцию, что и отправитель, вычисляет のです。受信者は、送信者と同じハッシュ関数を用いて、メッセージの指紋となるハッシュ値 хеш полученного сообщения и сравнивает его с хешем, которое приложил к исходному сообщению отправитель. Если эти два хеша совпадают, то получатель убеждается в を計算し、添付されたハッシュ値と比較します。ハッシュ値が同じなら、改ざんはなかったこ то, что данные в сообщении не были подменены.

段として有効であるように、ハッシュ値は、メッセージの指紋と言えます。メッセージを要約

とがわかります。

Сообщение (открытый текст)

送信者 Отправитель Зависит от других 他力本願 Всё в природе 森羅万象

Есть подмена 改ざんあり

ハッシュ関数

Хеш-функция ハッシュ関数

Хеш-функция (数式にあてはめる)

メッセージ (平文)

0101 001101 111011…

Сравнение 比較する

「指紋」抽出

異なる Отличаются

Совпадают 同じ

Оповещение 結果通知 о результате

Нет подмены 改ざんなし 他力本願 Зависит от других 森羅万象 Всё в природе

Сообщение メッセージ (открытый текст)

(平文)

+

0101 001101 111011…

Хеш («отпечатки пальцев»)

ハッシュ値 (指紋)

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

他力本願 Зависит от других 森羅万象 Всё в природе

Сообщение メッセージ (открытый текст)

(平文)

+

0101 001101 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 порци нака Принесийт рамэна! Срочно при Та н и е ц с и 5 порций те мне из 4-го квартала 10 пор итани рам М ртала Са эна!! из 1-го ква из 2-го квтао ртала Прошруамэна! ий 5 порц Жду 7 порц удзуки а ий р С вартал Цуда амэна! к о г и 3 з 5-го к из вартал а

кто-то выдавал だれかが客に себя за наших なりすましたんだよ! клиентов!

аа!

а можно なりすましを как-нибудь 防ぐ方法は защититься отないの? спуфинга?

вух

вух ну, тогда понятно, почему он так сердится...

196    196

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


Защита от спуфинга なりすましの対策 можно, если メッセージ 認証コードを есть код аутентифика使えばいいのよ!

Имитовставка (код аутентификации сообщения) メ ッ セ ー ジ    認 証    コ ー ド

использовать имитовставку, то

MAC:Message Authentication Code

ции сообщения!

メッセージの

аутентификации? 認証?

что такое аутентификация?!

это проверка 正しい送信者からの подлинности メッセージで сообщения, あること…… то есть того,

ра две п мэн, орци и!

ите мне Пришл гёдза! и рамэн Аида из 6-го а квартал

порц и

и»!

Аутенти ч

но

не рамэн, те м неси амэн»! 3 порции! и р П н «Р Накаи оди о но тич из 3-го Сат -го н е квартала из 1ртала Аут ква Аутентично но тич В н ы е ш лите Аут 2 пор «Рамэн», ции! Жду «Рам

ого! а как это どういうふうに можно 確認するの?

проверить?

...то собщение 受け取ったメッセージが действительно なりすましによる отправил 不正な送信者からの настоящий отправитель, メッセージではなく

о Аутентичн

正しい送信者からの

...а не злоумышленник, メッセージであることを который им 確認することよ притворяется.

4-2 Хеш-функция и код аутентификации сообщения

197 197


メッセージ認証コードの仕組み Устройство имитовставки

Код аутентификации сообщения (MAC), называемый также имитовставкой, по メッセージの正真性を確かめ、認証を行うための手順が、メッセージ認証コードです。図 4.3 зволяет проверить целостность данных и аутентичность сообщения. Опишем здесь

を見ながらメッセージ認証コードの仕組みを見ていきます。 устройство имитовставки по рис. 4.3.

Отправитель прилагает к отправляемому сообщению MAC-код,MAC который исполь 送信者は送りたいメッセージといっしょにそのメッセージから生成した 値を送信しま зуется для проверки сообщения, как и уже изученное нами значение хеш-функции.

す。MAC 値というのは、ハッシュ値と同様に検査に用いる値です。 Получатель сравнивает MAC-код, который он вычислил на основе полученного сообщения, с MAC-кодом, который был приложен к этомуMAC сообщению отправителем.  受信者は、受信したメッセージから生成した MAC 値と受信した 値を比較することによっ

Это позволяет получателю убедиться в целостности и аутентичности сообщения. При этом и отправитель, и получатель используют для генерирования MAC-кода ために共通鍵を用います。 один и тот же общий ключ. Если эти два MAC-кода совпадают, то это означает, во-первых, отсутствие подме 2つの MAC 値が同一であったとき、送信者からのメッセージは途中で改ざんされていないこ ны данных в полученном сообщении (целостность), и, во-вторых, аутентичность отと(正真性) правителя,、送信者は鍵を共有した正しい送信者であることが確認できます(認証) обладающего тем же самым общим ключом, что и получатель. 。 Если же два MAC-кода отличаются друг от друга, то это может означать либо  2つの MAC эти 値が異なるとき、送信者からのメッセージは途中で改ざんされているか、送信者 подмену данных сообщения в процессе передачи, либо отсутствие у отправителя соは鍵を共有した正しい送信者ではないと判定できます。 общения общего ключа, которым должен обладать аутентичный отправитель. て、メッセージの正真性と認証を担保できます。このとき、送信側も受信側も MAC 値の生成の

 

共通鍵

Общий ключ

送信者 Отправитель 責任転嫁 Безответственность 前途多難 Трудности впереди

Отправитель 共通鍵は 共通鍵 Общий ключ и получатель あらかじめ送信者 заранее обмениваются 受信者で交換 общими ключами.

メッセージ認証コード生成 Генерирование MAC-кода (鍵に依存した一方向性 (Односторонняя хеш-функция, ハッシュ関数) зависящая от ключа)

Генерирование MAC-кода メッセージ認証コード生成 (Односторонняя хеш-функция, зависящая от ключа)

MAC 値の 生成

Сообщение メッセージ (открытый текст)

(平文)

0111 011101 110010…

比較する Сравнение

Подмена

改ざんあり Спуфинг

異なる Отличаются

Оповещение о результате

結果通知

Совпадают 同じ

Целостностно и аутентично 改ざんなし 責任転嫁 Безответственность 前途多難 Трудности впереди

0111 + 011101 110010…

Сообщение メッセージ (открытый текст)

インター

責任転嫁 Безответственность

ネット Интернет

前途多難 Трудности впереди

MAC-код MAC 値

(平文)

0111 + 011101 110010…

Сообщение メッセージ (открытый текст)

(平文)

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-3− Цифровая подпись  4 3 ディジタル署名

Защита от отказа 否認の対策 а нельзя ли

否認を как-нибудь 防ぐ方法って защититься от отказа? なんだ?

можно! ディジタル署名を надо использовать цифровую 使うのよ! подпись!

Цифровая подпись ディジタル   署名

Digital Signature

и доказать третьей そうすれば стороне тоже 第三者に対する получится без 証明もできるわ проблем.

О

а что どういう это такое?

давайте ディジタル署名の посмотрим, 仕組みを как устроена 見てみましょう! цифровая

ものなの?

это公開鍵暗号の тот же шифр с открытым 鍵の使い方を ключом, только 逆にしたものよ используемый наоборот!

подпись!

表 4.1 公開鍵暗号とディジタル署名 Таблица 4.1. Шифр с открытым ключом и цифровая подпись

Шифр с公開鍵暗号 открытым ключом

Шифрование от受信者の公開鍵で крытым ключом 暗号化 получателя

Расшифрование 受信者の秘密鍵で → Шифр暗号文 → секретным ключом текст 復号 получателя

ディジタル Цифровая подпись 署名

Расшифрование 送信者の公開鍵で открытым ключом 復号 отправителя

← Цифровая 署名 ← подпись

202    202

Шифрование 送信者の秘密鍵で секретным ключом 暗号化 отправителя

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


ディジタル署名の仕組み Устройство цифровой подписи Отправитель, зашифровывая отправляемое сообщение своим секретным ключом,  ディジタル署名では、送信者が自分の秘密鍵でメッセージを暗号化したものを署名にします。 создаёт из него цифровую подпись и прилагает её к отправляемому сообщению. Получатель, расшифровывая подпись с помощью открытого ключа отправителя, その署名は、メッセージとともに受信者に送ります。 восстанавливает из неё сообщение, а затем сравнивает его с сообщением, к которому  受信者は送信者の公開鍵で署名を復号し、メッセージを得ます。そして、復号したメッセー эта цифровая подпись была приложена. Идентичность этих двух сообщений подтверждает как целостность данных сообジと、送られてきたもう一方のメッセージとを比較します。 щения, так и аутентичность отправителя.  両者が同一であるならば、正真性の検証と送信者の認証が同時に行われたことになります。 Кроме того, благодаря использованию открытого ключа отправителя для расшиф また、送信者の公開鍵で復号するため、第三者も受信者と同様に署名を検証でき、第三者に рования цифровой подписи и третья сторона, и сам получатель имеют возможность удостовериться в том, что сообщение и его цифровая подпись были созданы настоя対する証明が可能になるとともに、送信者の否認防止になります。 щим отправителем, а это решает проблему доказательства третьей стороне и проблему отказа отправителя. 秘密鍵 Секретный ключ 送信者 Отправитель 一騎当千 Могучий воин

Шифрование и

расшифрование 公開鍵暗号による с помощью шифра 暗号化と復号 с открытым ключом

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

公開鍵 Открытый ключ

正真性・認証 Подмена Спуфинг に問題あり 一騎当千 Могучий воин 意到筆随 Лёгкое перо

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

意到筆随 Лёгкое перо

Сравнение 比較する

メッセージ Отправляемое сообщение (открытый текст) (平文)

一騎当千 Могучий воин 意到筆随 Лёгкое перо

Сообщение メッセージ (открытый текст) (平文)

+

010010 101100 010011 010011…

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

Цифровая подпись 署名 (шифртекст) (暗号文)

010010 101100 010011 010011…

+

Отличаются 異なる

Оповещение 結果通知 о результате Совпадают 同じ 正真性・認証に Целостностно и аутентично 問題なし

一騎当千 Могучий воин

一騎当千 Могучий воин

意到筆随 Лёгкое перо

意到筆随 Лёгкое перо

Цифровая メッセージ 署名 подпись Сообщение текст) (шифртекст) (открытый (平文) (暗号文)

受け取った Полученное сообщение (открытый текст) メッセージ

受信者 Получатель

Рис. 4.4. Устройство (1) цифровой подписи 図 4.4 ディジタル署名の仕組み 1(メッセージをそのまま暗号化して署名する場合) (в случае использования зашифрованного сообщения в качестве цифровой подписи)

 図 4.4 では、ディジタル署名の概念をわかりやすくするために単純化し、メッセージを直接暗 В модели, показанной на рис 4.4, с целью упрощения и для лучшего понимания ос-

новной идеи цифровая подпись создаётся непосредственным шифрованием сообще号化して署名を作成してあります。

ния※, но шифрование и расшифрование полного сообщения с помощью шифра с от-

 実際には、メッセージ全体を署名にすると、公開鍵暗号の処理に時間がかかってしまうため、 крытым ключом заняло бы слишком много времени, поэтому на практике для создания

цифровой подписи зашифровывается не всё сообщение, а его хеш, полученный с помоメッセージはいったん一方向ハッシュ関数でハッシュ値にしてから署名を作成します。 щью односторонней хеш-функции.

Описание подписи как результат шифрования сообщения секретным ключом, вообще говоря, неверное. Это верно только для RSA – Прим. ред.

4-3 Цифровая подпись

203 203


Расшифрованный 受信暗号データから хеш 得たハッシュ値

Отправитель 送信者 山紫水明 Красоты природы

一方向性 Односторонняя ハッシュ関数 хеш-функция

秘密鍵 Секретный ключ

公開鍵

Открытый ключ

011010 111100

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

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

Хеш ハッシュ値

山紫水明 Красоты природы

+ ×××× ×××× 空中楼閣 Воздушные замки ×××× Цифровая 署名 подпись Сообщение メッセージ (открытый текст) (зашифрованный (ハッシュ値 хеш) (平文) の暗号文)

異なる Отличаются

比較する Сравнение

011010 111100

空中楼閣 Воздушные замки

正真性・認証に Подмена Спуфинг 問題あり

011010 111100

同じСовпадают

Хеш, 受信メッセージ вычисленный から得た для полученного ハッシュ値 сообщения Целостностно и аутентично 正真性・認証に

Односторонняя

一方向性ハッシュ関数 хеш-функция

問題なし 山紫水明 Красоты природы

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

山紫水明 Красоты природы ×××× ×××× + 空中楼閣 Воздушные замки ×××× Цифровая подпись 署名 Сообщение (зашифрованный メッセージ (ハッシュ値 (открытый текст) хеш) (平文) の暗号文)

空中楼閣 Воздушные замки

メッセージ Сообщение (открытый текст) (平文)

Получатель 受信者

Рис. 4.5. Устройство (2) цифровой подписи 図 4.5 ディジタル署名の仕組み 2(ハッシュ化したメッセージを暗号化して署名とする場合) (в случае использования зашифрованного хеша сообщения в качестве цифровой подписи)

Цифровая подпись используется также и для создания сертификатов для проверки  ディジタル署名は、SSL / TLS のサーバの正当性を認証するサーバ証明書を作成するために аутентичности серверов SSL/TLS. Сертификат – это открытый ключ (в данном случае отも利用されています。証明書というのは、公開鍵(この場合はサーバの公開鍵)にディジタル крытый ключ сервера) с приложенной к нему цифровой подписью. Кроме того, цифровую 署名を付加したものです。また、ダウンロード用のソフトウェアにディジタル署名を付加して、 подпись прилагают к приложениям, скачиваемым по сети, что позволяет предотвратить их ソフトウェアが改ざんされることを防ぐためにも利用されています。 изменение.

204    204

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


Атака посредника 中間者攻撃 нет, расслабляться まだ安心じゃないわ !! ещё рано!!

ну, с такими мерами

これだけ対策をとれば  безопасности вы

можете спокойно 安心してラーメンの заниматься

出前ができるな

ведь существует ещё и так 中間者攻撃(Man-inназываемая the-Middle Attack) «атака посредника»

да,

そうだな конечно.

доставкой рамэна!

というのがあるの… (Man-in-the-Middle: MITM).

Пусть пользователь A – это Сато из 1-квартала, который хочет отправить сообщение, 送信者の а пользователь B – это кафе «Заяц», которое должно B получить это сообщение. Для 1 丁目のサトウさんを A、受信者のうさぎ食堂を とします。 осуществления этого пользователь B сначала должен отправить пользователю A свой  A が Bключ. に対し暗号で通信するには、 まず B の公開鍵を受け取る必要があります。ところが、 открытый Однако в процессе передачи ключа злоумышленник может его перехватить и отправить пользователю A свой открытый ключ вместо открытого ключа пользо中間にいる攻撃者が、B から A に送られる途中の公開鍵を手に入れ、代わりに自分の公開鍵 вателя B. をВ Aподобном に送ってしまいます。 случае злоумышленник с помощью своего секретного ключа сможет расшифровать сообщение, отправленное пользователем A пользователю B, и, кроме то A が送信した暗号文は、攻撃者にとっては自分の公開鍵で暗号化されているので、自分の го, изменить его содержание, зашифровать открытым ключом пользователя B и отпра秘密鍵で解読できます。さらに内容を改ざんして、B の公開鍵で暗号化して送れば、B には вить пользователю B так, как будто бы это сообщение от пользователя A, ведь пользова確認する手だてがありません。 тель B не располагает никакими средствами, которые позволили бы ему обнаружить эту атаку.

攻撃者

сейчас

暗号化して отправлю ラーメンзаказ 1杯 одной порции 注文しよう

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

я зашифрую и

рамэна!

сейчас я подменю 鍵もメッセージ ему ключ

も変えちゃえ

и сообщение!

攻撃者の公開鍵

② Пользователь A

Открытый ключ злоумышленника

зашифровывает сообщение открытым ключом злоумышленника

аа! ひゃーっ!

30 порций рамэна! Срочно!!

② 攻撃者

из 1-го 1Сато 丁目の квартала サトウさん

A

Принесите мне одну порцию  の公開鍵 рамэна!  で暗号化

Злоумышленник зашифровывает ③ Bの公開鍵でニセの 

поддельное сообщение открытым

 メッセージを暗号化 ключом пользователя B.

Ресторан うさぎ食堂 «Заяц»

Злоумышленник отправляет ① B の公開鍵といつわって自分

пользовователю A свой открытый ключ,

 (攻撃者)の公開鍵を送る выдавая его за открытый ключ пользователя B.

B

Рис. 4.6. Атака посредника 図 4.6 中間者攻撃

4-3 Цифровая подпись

205 205


Защита от атаки посредника 中間者攻撃の対策 угу... う~む……

проблема будет だれの公開鍵で решена, если знать, 暗号化されたのかが чьим открытым ключом わかれば問題が зашифровано なくなるはずよね! сообщениЕ!

そのとおり! верно! だれの鍵なのか можно попросить надёжную третью という証明は сторону (удосто信頼できる веряющий центр) 第三者(認証局)に подтвердить принадлежность してもらえばいいわ ключа.

Сертификат 証明書と認証局 и удостоверяющий центр Сертификат, состоящий из открытого ключа и приложенной к нему цифровой под 証明書とは、公開鍵にその公開鍵のディジタル署名を付加したものです。証明書は認証局に писи этого открытого ключа, выпускается удостоверяющими центрами (CA: Certification より発行されます。公開鍵を公開したい利用者は、認証局(CA:Certification Authority)に Authority). Пользователь, желающий опубликовать открытый ключ, регистрирует его в удостоверяющем центре, поручая ему выпуск сертификата. 自分の公開鍵を登録し、同時に証明書の発行を依頼します。 В ответ на это поручение удостоверяющий центр проверяет подлинность пользова 依頼により認証局は、公開鍵を公開したい利用者の正当性を確認し、認証局の基準に合致す теля и, если он отвечает критериям центра, создаёт на основе открытого ключа пользователя цифровую подпись, которая в паре с открытым ключом образует сертификат. Паれば、公開鍵をもとにディジタル署名を作成し、公開鍵とディジタル署名を組として証明書を ра открытый ключ/секретный ключ в одних случаях может быть сгенерирована самим 作成します。公開鍵と秘密鍵の一対は、利用者が作成する場合と、登録時に認証局が作成する пользователем, в других – её генерирует удостоверяющий центр во время регистрации 場合があります。 пользователя. Механизм заверения открытого ключа с помощью сертификата является гарантией  証明書を使った公開鍵検証の仕組みは、公開鍵が本当に利用者 A のものであることを保証す того, что этот открытый ключ действительно принадлежит пользователю A. Для этого る手法です。そのために利用者 A は信頼のおける第三者である認証局に公開鍵の正しさを証明 пользователь A поручает заслуживающей доверия третьей стороне – удостоверяющему центру, – подтвердить подлинность открытого ключа, принадлежащего пользователю A. してもらいます。図 4.7 に基づき、以下の①~⑥に示す手順を見ていきましょう。 Давайте теперь изучим порядок процедуры сертификации, состоящей из шести этапов, по рис. 4.7. ① Пользователь A поручает удостоверяющему центру выпустить сертификат на свой  ① 利用者 A は認証局に自分の公開鍵の証明書発行を依頼します。 открытый ключ.  ② 認証局は利用者 A の本人確認を行ったあと、証明書を発行します。発行される証明書は ② Удостоверяющий центр проверяет подлинность пользователя A, после чего выпускает сертификат, который состоит из открытого ключа пользователя A и цифровой   利用者 A の公開鍵に認証局によるディジタル署名を付加したものです。 подписи этого открытого ключа, созданной удостоверяющим центром.  ③ 認証局はリポジトリ(データ保管場所)に証明書を保存します。 ③ Удостоверяющий центр сохраняет сертификат пользователя A в репозитории (хра ④ 利用者 B がリポジトリから利用者 A の証明書をダウンロードします。 нилище данных). ④ Пользователь B скачивает сертификат пользователя A из репозитория.  ⑤ 利用者 B が利用者 A の証明書に含まれるディジタル署名を認証局の公開鍵で復号します。 ⑤ Пользователь B с помощью открытого ключа удостоверяющего центра восстанавли ⑥ 復号した鍵を証明書に含まれる公開鍵と比較して検証します。この 2 つの鍵が同じであ вает (расшифровывает) открытый ключ пользователя A из цифровой подписи, содержащийся в сертификате пользователя A.   れば、証明書に含まれる公開鍵は利用者 A のものであることが保証されます。 ⑥ Пользователь сравнивает открытый ключ пользователя A, расшифрованный из цифровой подписи, с открытым ключом пользователя A, содержащимся в сертификате в виде открытого текста. Совпадение этих двухAключей является гарантией того, что  以上の手続きにより、利用者 B は保証された利用者 の公開鍵を得ることができます。保証 содержащийся в сертификате открытый ключ действительно принадлежит пользоされた利用者 вателю A.A の公開鍵を用いれば、利用者 A の秘密鍵で暗号化したディジタル署名付きのメッ セージについて、正しいメッセージであることを検証できます。正しいメッセージとは以下の

206    206

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


Благодаря вышеуказанной процедуре пользователь B получает открытый ключ, гарантированно принадлежащий пользователю A, с помощью которого может проверить подлинность сообщения с электронной подписью, зашифрованной секретным ключом 3 つの条件を同時に満足するメッセージのことです。 пользователя A. Подлинным может считаться сообщение, которое одновременно удовлетворяет трём нижеуказанным условиям.  ① メッセージに改ざんがないこと ① Содержащиеся в сообщении данные не были подменены. ② Сообщение не отправлено злоумышленником, выдающим себя за пользователя A.  ② 第三者が利用者 A になりすまして発したメッセージでないこと ③ Пользователь A не имеет возможности отказаться от того факта, что именно он от ③ 利用者 はそのメッセージを自分が発したことを否認できないこと правил этоAсообщение пользователю B. Подтверждение подлинности открытого ключа является гарантией того, что сообщение, снабжённое электронной подписью, соответствует условию подлинности сооб 公開鍵の正しさを証明することにより、ディジタル署名つきメッセージの正しさの条件①~ щения. Вышеописанный механизм лежит в основе инфраструктуры открытых ключей (ИОК, англ. PKI: Public Key Infrastructure), о которой будет рассказано далее. ③が保証でき、これをもとにして次に述べる公開鍵暗号基盤(PKI)の仕組みが完成します。

(хочет опубликовать открытый ключ) (公開鍵を公開したい)

利用者 B B Пользователь

Секретный ключ пользователя A 利用者 A の秘密鍵 (пользователь A хранит его в тайне от всех) (A がだれにも知られないように保管)

Пользователь 利用者 A A Запрос ① ①証明書発行

証明書に Можно A использовать Ключ, содержащийся 利用者 の公開鍵 открытый ключ 含まれる公開鍵 в сертификате пользователя A を利用できる

Открытый пользователя A 利用者 A ключ の公開鍵

на выпуск

сертификата  依頼

④ Скачивание ④証明書のダ

сертификата

 ウンロード

Открытый ключ, 公開鍵を公開 который хочет したい利用者 опубликоватьA пользователь A の公開鍵

сертификата

インター

ネット Интернет

CA

Цифровая подпись ディジタル署名

Секретный 認証局の ключ удостоверяющего 秘密鍵 центра

 )

Зашифрованные 上の公開鍵を認 данные вышеуказанного открытого ключа, 証局の秘密鍵で сгенерированные удостоверяющим 暗号化したもの центром

 

Сертификат 証明書

同じ

Сравнение 比較する

Совпадают

異なる Отличаются

Открытый ключ 公開鍵

Ключ, восстановленный ディジタル署名を из цифровой подписи 復号した鍵

01010 110101 11100…

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

Ре п о з и т о р и й

Выпуск ② ②証明書発行

③リポジトリに ③ Сохранение сертификата

 よる証明書の в репозитории (опубликование)  保存公開

01010 110101 11100…

Невозможно 利用不可 использовать

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

Цифровая подпись

ディジタル 署名 証明書 Сертификат

認証局の Открытый ключ удостоверяющего центра 公開鍵

Рис. 4.7. 図 Порядок выпуска сертификата 4.7 証明書発行の手順 теперь я спокоен, これで中間者攻撃の ведь нам и атака посредника больше 危険も防げて安心だ не страшна!

теперь наконец-то これでラーメンを мы можем заняться 安心して食べられるよ рамэном!

отведаем!

ох, он размяк...

4-3 Цифровая подпись

207 207


итак, наши いよいよ занятия 暗号の学習も по шифрам 終わりに близятся к 近づいてきたわ завершению.

однако でもなあ действительно その証明書って ли можно 本当に信用 доверять этим сертификатам? できるのか?

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

4-4 Инфраструктура открытых ключей (ИОК)  4 − 4 公開鍵暗号基盤 (PKI)

как проверить,

証明書が認証局から что сертификат действительно 発行されたものなのか

выпущен удостоверяющим центром? и можно ли その認証局を доверять этому 信用していいのか центру?

疑問が остаются сомнения... 残るわね

и そもそも вообще, что это такое 情報の信頼性 достоверность ってなんだろ информации?

вот, например... 例えば… подумаем давайте о денежных 身近なお札でкупюрах, которые под рукой 考えてみましょう! у каждого!

ого! десять тысяч иен! а я и не знал, что рика такая богатая...

ш их

208    208

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


...то деньги потеряют お金は価値を失って ценность и 本当に紙きれに действительно なるわ простой станут бумагой.

ведь на самом でも実際は деле это ただの紙きれよね полоски бумаги. а если цены もし物価が будут всё время 上がり続けたら… расти... ой, вроде бы я клал в кошелёк 10000 иен...

Банк Японии

но, к счастью, だけど お札は купюры выпускает 信頼できる日本銀行が банк японии, которому 発行するのよね можно доверять.

ный б н ич К лу сквит, н би 0 ие 0 00 1 00

ии Банк Япон

мои деньги... когда это ты успела?

на во з, б ра т ец в их ра ща , те б ю е!

держите!

но ведь дело

それだけじゃないぞ не только в банке! эта купюра существует

только благодаря 紙幣の価値を фундаменту, 安定させて国民に который стабилизирует её стоимость 安心して使って и позволяет нам спокойно её もらうための土台

деньги

именно так! そのとおりよ!

社会基盤の вот как выглядит イメージを общественная инфраструктура. 大切にしてね

использовать.

⋅・日本銀行だけがお札を発行しています(誰でもお札を作れるわけではありません) Купюры выпускает только банк Японии (они не должны печататься кем попало).。 ⋅ Банк Японии принимает различные меры для того, чтобы ценность денег и фундамент этот

называется つまり社会基盤 общественной あってこそのお札だろ инфраструктурой!

・日本銀行がお金(お札)の価値が下がらないよういろいろな政策を行っています。

(бумажных купюр) не снижалась.

⋅・国が偽造を防ぎ、法律でお金(お札)の信用を守ります。 Государство предотвращает подделку купюр и охраняет доверие к ним с помощью законов.

4-4 Инфраструктура открытых ключей (ИОК)

209 209


с доверием к 情報の信頼性も информации дело 同じよобстоит точно так же.

А кто же

じゃあ тогда 情報の安全性や обеспечивает безопасность 信頼性は информации 誰が約束して и доверие くれるのかしら? к ней?

оно обеспечивается 認証局を含む общественной 社会基盤 инфраструктурой, (社会インフラ)が включающей удостоверяющие あってこそなの центры.

и эта общественная инфраструктура その社会基盤を называется 公開鍵暗号基盤 инфраструктурой (PKI)というのよ! открытых ключей (ИОК)!

Инфраструкура открытых ключей  公開鍵暗号     基盤

PKI:Public Key Infrastructure

Подобно тому, как безопасность денег и доверие к ним гарантируются

様々な社会基盤によってお金の安全性や信頼性が保証されている разнообразными элементами общественной инфраструктуры, безопасように、公開鍵暗号を利用するシステムも PKI という社会基盤に ность систем, в которых используется шифр с открытым ключом, и доверие к ним тоже обеспечиваются общественной инфраструктурой под наよって情報の安全性、信頼性が保証されています。

званием ИОК.

то есть это,

つまり в общем, как фундамент 安全な情報社会の безопасного 土台ってわけだな информационного общества?

Другими словами, мы можем безопасно обмениваться сообщениями つまり、公開鍵暗号を使ってメールのやりとりやインターネット электронной почты, совершать торговые сделки через интернет только 上での商取引などが安全に行えるのは、PKI という社会基盤があ благодаря существованию общественной инфраструктуры под названиるからなのです。 ем ИОК.

ИОК 210    210

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには

да. итак,

そうね じゃあ теперь давайте изучим подробнее その土台を詳しく устройство 見てみましょう этого фундамента.


для начала

これじゃ

Но cможем ли мы いつどんな攻撃を защититься されるか от разнообразных атак?! わからないじゃない!

-

информацией.

(б е

сп

ок

ой

ст

利用者 BB Пользователь

利用者 A A Пользователь

ここに добавим к этим двоим пользователям 認証局とリポジトリを ещё два субъекта: 加えた 4 つを удостоверяющий центр イメージしましょう и репозиторий.

во )

Хранение 証明書の保管 сертификата

CA

Ре п о з и т о р и й

まずпредставим 情報のやりとりをする двух пользователей A и B которые 利用者 A, と利用者 Bが обмениваются いるわよね

Запрос на сохранение 証明書の保存依頼 сертификата

Регистрация 公開鍵の открытого

公開鍵を含む Скачивание сертификата, 証明書の содержащего ダウンロード открытый ключ

Сертификат 証明書

登録 ключа

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

暗号化

ディジタル署名 Цифровая подпись

Расшифрование 公開鍵で открытым ключом

復号

+ 利用者 A A Пользователь

Сообщение メッセージ

Пользователь 利用者 B B

4.8 PKI の4つの構成要素 Рис.図4.8. Четыре составляющих ИОК

私が利用者 B だとするとB пусть пользователь это я. как мне どういう手順なら безопасно получить 利用者 A からのメッセージを сообщение от 安全に受け取れるの? пользователя A?

じゃあ сейчас 順番に я объясню まとめて всё по порядку! みるわよ! да

да

4-4 Инфраструктура открытых ключей (ИОК)

211 211


① Пользователь B хочет получить от пользователя A сообщение, избежав ① 利用者 B が利用者 A からのメッセージを改ざん、 подмены данных, спуфинга и отказа! なりすまし、否認なしに受け取りたい!

Соо

что-то я 大丈夫 волнуюсь... かしら…

бще

отправляю メッセージを тебе 送るぞ! сообщение!

ние

Интернет インターネット Подмена Отказ

Пользователь 利用者 A A

② Пользователь A с помощью своего ② 利用者 A は自分の秘密鍵を使って作成 секретного ключа создаёт цифро したディジタル署名をメッセージに付加 вую подпись и прилагает её к сооб し、利用者 B に送信します。 щению.

Спуфинг

③ Пользователь B с помощью открытого ③ 利用者 B は、利用者 A ключа пользователя A の公開鍵を用い проверяет по て受け取ったディジタル署名を検証し、 лученную цифровую подпись, и если она в порядке, то считает сообщение  正常であればメッセージを正当なものと подлинным.  します。

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

復号

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

Секретный ключ

秘密鍵

Сообщение

利用者 BB Пользователь

Цифровая подпись

Сообщение

Открытый 公開鍵 ключ

Цифровая подпись

Сообщение

Пользователь 利用者 AA Однако действительно でも この公開鍵は ли本当に利用者 этот открытый Aの ключ принадлежит ものかしら… пользователю A?

подозрительно! ⑤

Полученное сообщение

Пользователь 利用者 BB

? 利用者 AA Пользователь мм... うーん как бы мне どうやって это証明しよう… доказать?

Придумал! そうだ! я попрошу надёжный 信用のおける認証局に удостоверяющий центр, 公開鍵を証明して чтобы он заверил мой открытый ключ! もらおう

⑥ Пользователь A регистрирует

открытый ключ в удостоверя⑥ 利用者 A は認証局に公開鍵を登録 ющем центре и получает от  して証明書を発行してもらいます。 него сертификат.

212    212

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには

CA

Регистрация 登録

Сертификат

Сравнение 比較する

Сообщение, восстановленное из цифровой подписи


Сертификат

⑦⑦ 証明書の中身は利用者 Сертификат состоит из открыA の公 того ключа пользователя A и  開鍵と認証局によるディジタル цифровой подписи этого клю 署名を付加したものです。 ча, созданной удостоверяющим центром.

Ре п о з и т о р и й

⑧ Удостоверяющий центр ⑧ 認証局はリポジトリ сохраняет сертификат в репозитории (хранили (データ保管場所)に証 ще данных).  明書を保管します。

Циф пис ровая ь За под верен о CA

 ダウンロードします。

Сертификат

Ре п о з и т о р и й

⑨⑨ 利用者 Пользователь B скачивает B がリポジトリ сертификат пользователя  から利用者 A の証明書を A из репозитория.

⑩ Пользователь B сравнивает открытый ⑩ 利用者 B が利用者 A の証明書に含まれ ключ, содержащийся в сертификате  る公開鍵と、ディジタル署名を復号して得 пользователя A, с открытым ключом, восстановленным путём расшифрова られる公開鍵を比較し、同じであれば検証 ния цифровой подписи. Если они оди 完了です。 наковы, то проверка завершена.

Цифровая подпись Заверено CA

Открытый ключ удостоверяющего 認証局の центра

Сравнение 比較

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

⑪ По завершении проверки пользователь ⑪ 検証が完了すれば、利用者 A の証明

B убеждается в аутентичности открыто 書に含まれる利用者 A の公開鍵は正当 го ключа пользователя A, содержащего なものであることがわかり、③で得た ся в сертификате пользователя A, и, следовательно, в целостности и аутентич メッセージも正当だった(改ざん、な ности сообщения, полученного на шаге  りすまし、否認のすべてが排除されて ③ (оно не содержит подделок, отправ いる)ことになります。 лено аутентичным пользователем без возможности отказа).

Сообщение

公開鍵

利用者 BB Пользователь

Сертификат

CA

Совпадают 同じ

Аутентично

ключ 利用者аутентичен, A が認証局に ведь Пользователь A зареги登録している公開鍵だから стрировал его в удо本人のものに間違いないわね стоверяющем центре!

я получила ちゃんと сообщение 受け取れたわ! без проблем!

4-4 Инфраструктура открытых ключей (ИОК)

213 213


теперь мы можем これで安心して спокойно やりとりができるわね обмениваться информацией!

уф

. ф.

безопасный обмен

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

安全な情報のやりとりは 証明書や公開鍵を使って правилам защиты информации, например 情報を守るための с помощью сертификатов открытых ключей. 社会の決まりごと информацией возможен

использования иок PKI の利用例として я опишу систему 申請手続きのシステムを подачи заявления официальный орган, 図в 4.9 で解説するわね показанную на рис. 4.9.

благодаря общепринятым

つまり情報社会の другими словами, без 規格や仕様がなくては общества безопасный 安全な情報のやりとりは обмен информацией был бы невозможен. 成り立たないのよ

ха-ха!

стандартов и специфи-

каций информационного

ясно!

Невозможно 使用不可 использовать Заявление 申請書 Прошу одобрить 許認可願い

Пользователь 利用者 AA (一般市民) (частное лицо)

………

+ Заявление 申請書 Прошу одобрить 許認可願い ………

申請書 Заявление Прошу одобрить 許認可願い ………

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

×××× ××××× ×××××

×××× ××××× ×××××

Цифровая подпись ディジタル署名

ディジタル署名 Цифровая подпись

メッセージ Сообщение

Секретный ключ 利用者 A の пользователя A 秘密鍵

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

Отличаются 異なる

Пользователь 利用者 BB (официальный орган и т. п.) (官庁等など)

Можно 使用可 использовать 同じ Совпадают

Сравнение 比較する

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

Заявление 申請書 Прошу одобрить 許認可願い ………

Сообщение メッセージ Открытый ключ 前ページの④~⑩までの検証に пользователя A, признанный аутентичным в результате よって正しいとされた利用者 A проверки, описанной в пунктах ④–⑩ の公開鍵 на предыдущих страницах.

利用者 Aключ の公開鍵であることが証明されているので、メッセージとして受け取った申請書などとディジタル Открытый пользователя A сертифицирован, а значит, совпадение двух заявлений: полученного в качестве署名を復号したものが同じならば、申請書などに改ざん、なりすましはなく、また利用者 сообщения и восстановленного путём расшифрования цифровой подписи, – исключает возможность тоA は提出したこと го, что заявление подверглось подмене данных, было отправлено злоумышленником, выдающим себя за を否認できません。 пользователя A, а также возможность отказа пользователя A от факта подачи им этого заявления. 図 4.9 PKI を利用した申請手続きの例

Рис. 4.9. Пример процедуры подачи заявления с помощью ИОК

214    214

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


на практике все

でも… однако... неужели пользователю B 利用者 B って придётся самому こんなに面倒なこと выполнять все эти しないといけないの? трудоёмкие процедуры?

не大丈夫よ! волнуйся!

лично я бы не смогла...

実際の手続きは выполняются автоматически ウェブブラウザや с помощью веб-браузеров, 専用のソフトウェア спецальных карт 登録カードや регистрации программного カードリーダなどの обеспечения, а также с помоハードウェアが щью аппаратно自動的に го обеспечения, например 行ってくれるわ устройств счиэти процедуры

тывания карт.

証明書って а как же сертификат? どんなんだ?

こういう так вот ものよ же он!

Сертификат Основное Подробности Путь сертификации

Показать (S): <Всё> Поле

Значение

Серийный номер Алгоритм подписи Центр выдачи Действителен не ранее 16 мая 2006 г., 8:18:11 Действителен не позже 16 мая 2007 г., 8:18:11 Субъект Открытый ключ

ウェブブラウザには、証明書を表示する機能がつ Веб-браузеры снабжены функцией отображения сертификатов, включая информацию о версии, いています。証明書には、バージョン情報、シリ серийном номере, алгоритме подписи, центре выдачи, アル番号、署名アルゴリズム、発行者、有効期限、 сроке действия, открытом ключе и т. п. 公開鍵情報などが記されています。

итак, さて これで на этом наш 暗号入門講座は вводный курс おしまい! шифрования завершён!

благодарю お疲れさま за внимание!

трень наконец-то!

4-4 Инфраструктура открытых ключей (ИОК)

215 215


са й

о ф т ер а? !

! от ы? н

сайфера!

что?!

ла

あら ага! ランちゃんこと это от ланы, то есть, 怪盗サイファか весёлого らだわ!

※Прочитав 181 ページのメールの文章を、行の先頭の文字だけ読んでいくと、サイファの正体がわかります。 текст е-мейла на стр. 181 по диагонали из левого верхнего угла, вы узнаете, кто такой Сайфер.

Отправитель: Лана–Весёлый сайфер 送信者 : ランこと怪盗サイファ Получатель: Рика 宛先 : ルカちゃん Тема: Как жизнь? 件名 : お元気? 名画『微笑みのマドンナ』と

Я верну знаменитую картину «Улыбка мадонны», а также изумруд (мне уда宝石のエメラルドはお返しするわ лось договориться со страховой компанией). (盗難保険の会社と取り引きしたの) Сейчас я нахожусь в стране Cвободы ところで、わたしはいま自由(liberty) (liberty) и скоро проверну большое дело!

の国にいるの

В качестве подсказки используйте эти もうすぐ大仕事をするわね! двоичные числа...

そのヒントは 2 進数で……

 00001011 00000110 00000110      00000001 00010111 00000111   00001010 Пока! じゃあ またね!

договориться 保険会社と со страховой 取り引き? компанией?

похищенные ценности 盗まれた品物には保険が должны были быть かかっていたはずよ! застрахованы!

サイファは品物を返すかわりに сайфер решила в обмен на возврат ценностей 盗難保険の額面の一部を получить часть 受け取ることにしたのよ! страховой суммы!

保険会社も я понял! для страховой 保険金を額面通りに компании это 支払うよりは тоже выгоднее, 損害が少なくて чем выплачивать полную сумму! すむわけか! Вот придумают!

216    216

4. как используют шифр на практике? 第 4 章Глава 実際に暗号を使うには


сложив по модулю 2 двоичные числа подсказки с двоичными кодами JIS одного слова, вы получите ответ! его вы можете проверить на стр. 230!

интересный материал! побежала статью писать!

хлоп!

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

Спустя несколько дней

Музей искусств директор, а эту картину вы собираетесь снять?

4-4 Инфраструктура открытых ключей (ИОК)

217


Разумеется!

もちろん!

ведь здесь

名画 должна висеть знаменитая 『微笑みのマドンナ』に «улыбка мадонны»! 掛けかえるんだ

Улыбка мадонны

изумруд 宝石も тоже вернули, 戻ったし так что на этот раз ひとまず всё 安心! обошлось!

здорово!

зд ра в

ля

ю!

как хорошо!

По

……

но теперь-то мы знаем, как важна

брат!

これからも情報セキュリティに気を配って информационной безопасность с точки зрения строительства 安全な社会をつくらなきゃね! безопасного общества!

ура!!


Дополнительная информация

            

コラム с  ゼロ知識対話証明 Доказательство нулевым разглашением

В последние годы время от времени происходят случаи, когда при оплате

 最近では、クレジットカードで代金を支払うときに、カード情報が不正に読み取られて кредитной картой злоумышленники крадут информацию, после чего обладатель

карты получает счета на оплату товаров или услуг, которых он никогда не приобしまい、買った覚えのない品物の代金まで請求されるといった事件がしばしば起こってい ретал. Таким образом, при разглашении личной информации с целью идентифи-

ます。このように、本人確認のために、その人の秘密が外に漏れてしまうことには危険が кации личности всегда существует опасность её кражи. В связи с этим появилась

необходимость в методе идентификации личности (аутентификации карты) без つきまといます。そこで、秘密はいっさい漏らさず(ゼロ知識) 、本人の確認(カードの разглашения личной информации.

真正性、authenticity)を相手に認めてもらう(証明)方法が必要になってきました。 В ответ на эту потребность в 1985 году Гольдвассер, Микали и Реккоф разра-

ботали концепцию под названием доказательство с нулевым разглашением,  こうした要求にこたえる方法として、1985 年に Goldwasser、Micali、Rackoff により

целью которой является доказательство аутентичности своей карты партнёру

「ゼロ知識対話証明」という概念が示されました。ゼロ知識対話証明は、自分の持ってい (кредитной организации) без разглашения секретной информации самой карты

(например, десятичного случайного числа изに証明する方法です。その際には、 более чем сотни цифр, используеるカードの真正性を、 相手(クレジットカード会社) カー

мого в качестве пароля). Хотя, на первый взгляд, может показаться странным, когда кто-то просит поверить ему на слово, что он знает некое секретное число, さい漏らさずに行うので、 「秘密の乱数は教えないが、自分を証明するための乱数を持っ однако, используя магию чисел, основанную на строгой криптографической математике, эту концепцию можно воплотить в жизнь. ていることは信じてほしい」という、とても虫のいい話になっています。このようなこと Здесь мы расскажем о методе реализации доказательства с нулевым разглаが、厳密な暗号数学の理論をもとにした数理マジックで、実現できてしまうのです。 шением, разделив его на подготовительный этап и этап выполнения. ド自体の秘密(たとえば 10 進 100 桁以上の乱数によるパスワード)に関する情報はいっ

 その方法について、準備段階と実行段階とに分けて説明することにしましょう。

Подготовительный этап ●準備段階● Самым первым шагом в реализации числовой магии доказательства с нуле ゼロ知識対話証明における数理マジックの仕掛けには、まずは信頼すべきセンター(検 вым разглашением является создание заслуживающего доверия центра (проверяющего лица). Опишем это на конкретном примере. 証者)を設けることが必要です。例をあげて説明しましょう。 ① Центр опубликовывает составное число N  ① 全ユーザに公開する合成数 N の設定 Центр выбирает два простых числа (p, q) и, перемножив их, получает составN、すなわち、  センターは 2 つの素数(p,q)を用意し、さらに積をとって、合成数 ное число N, которое затем публикует.      N = pq

                         (1)

Числа p и q центр держит в секрете. Хотя на практике используются огромを作り、p と q числа, を秘密にします。実際は 80 桁程度の巨大な素数を利用しますが、ここでは ные простые состоящие из порядка 80 знаков, здесь, чтобы не усложнять пример, мы используем p =p13 = 19. q = 19 を用います。これら 2 つの素数の積 N は、 簡単な例として、2 桁の素数 =и 13qと

N = 13 × 19 = 247

     N = 13 × 19 247 Таким образом, мы=получили трёхзначное составное число. (На практике ис-

пользуемые простые числа настолько большие, что вычислительная сложность N を素因数分解するこ となり、3 桁の合成数です(実用上は、どんなコンピュータでも合成数 не позволяет разложить N на простые множители даже на самом мощном компьютере.) とに要する計算量が不可能なほどに大きい素数を用意) 。 この合成数Nを全ユーザに公開します。 ② Центр регистрирует идентификаторы (ID) всех пользователей  ② 各ユーザの ID をセンターに登録 (ID) – это число, публикуемое каждым из пользователей (со IDИдентификатор は、各ユーザが公開している数値(公開鍵に相当)で、その人と一対一の対応がと ответствует открытому ключу пользователя), причём каждый пользователь имеДоказательство с нулевым разглашением

219 219


ет только один ID (соответствует открытому ключу пользователя). Другими слоれています。つまり、各ユーザを識別できる公開の数値が ID です。各ユーザは、これを вами, ID позволяет идентифицировать каждого из пользователей. Идентификатоセンターに登録します。たとえば、ユーザ A вのцентре. ID は、IDA で表すこととします。 ры всех пользователей зарегистрированы ③ Центр вычисляет секретные ключи и передаёт их всем пользователям  ③ センターによる各ユーザの秘密鍵の計算と通知  センターは各ユーザの登録 ID をもとに、その ID の平方根 を法としてモジュロを計 Центр вычисляет квадратный корень по модулю N изNкаждого зарегистрированного ID. Извлечение квадратного корня на множестве рациональных чисел – 算をします。実数における平方根の計算は容易に計算できますが、整数の世界では合成数 очень простая операция, однако на множестве целых чисел эта операция будет N の 2 つの素数 q を知っている場合のみ、その平方根が容易に求められるという性 простой только pв と том случае, если известны простые множители p и q числа N, и числовая магия под названием доказательство с нулевым разглашением основана 質があります。この平方根の計算の難しさを利用して、 ゼロ知識対話証明という数理マジッ именно на вычислительной сложности этой операции. クのトリックが作られています。 В нашем случае, так как простые числа – 13 и 19, – известны только центру, другими словами, только он может вычислить квадратные корни из зарегистри この例の場合、センターだけが素数 13 と 19 を知っていて、各ユーザから登録された рованных ID всех пользователей, поэтому утечки секретной личной информаID の平方根を計算できるので、秘密は漏れません。仮にユーザ A の ID(ID 101 と A)を ции не произойдёт. Положим, что идентификатор пользователя A (ID A) равен 101. Тогда квадратный корень будет71 равен 71. しましょう。このとき、その平方根は になります。

≡ 71       √ 101(mod 247)= Естественно, обратная операция – возведение числа 71 в квадрат, – даст нам  当然ながら、逆に を 2 乗したものは、712(mod 247)= 101 となるわけです。この число 101: 712 (mod71 247) ≡ 101. Число 71 – это секретный ключ SA пользователя SA で、秘密裏にユーザ A, центр тайком передаёт пользователю A. (На практике это –100 число из 71который がユーザ A の秘密鍵 A に届けられます。実用上は 桁以上 не менее чем 100 знаков, не предназначенное для запоминания пользователем A.) の数字が使われているので、A が覚えられる数ではありません。一般的には、ユーザ A Идентификатор (IDA) и секретный ключ (SA) пользователя A связаны между соSA との間には、次の関係があります。 の ID(ID бой следующими соотношениями: A)と秘密鍵 √ IDA(mod N)= ≡ SA        2       (SA)(mod N)= ≡ IDA

                   (2)                    (3)

 なお、秘密鍵 SA の目的は、ユーザ A その人を確認するためではなく、A が所持するカー

Так как назначение секретного ключа SA – не идентификация самого пользователя A, а аутентификация его банковской карты, пользователю не нужно запоドの真正性を確かめることにあるので、A が銀行のキャッシュカードの暗証番号のように минать число S A, в отличие, например, от пин-кода карты. Аналогичным образом SA を記憶しておく必要はありません。そのほかのユーザにも同様な手順で、おのおのの центр раздаёт секретные ключи всем зарегистрированным пользователям. 秘密鍵を配ります。

●実行段階 (証明手順)● (порядок аутентификации) Этап выполнения

Опишем порядок процедуры аутенификации в том случае, когда пользова ユーザ A がユーザ B に対して、自分が正真正銘の A である(自分が所持しているカー тель A хочет доказать пользователю B свою аутентичность (другими слвами, под-

ドが本物である)ことを証明したいとして、その証明手順を示します。 линность своей карты).

Шаг 1:1 ユーザ Запрос на от пользователя  ステップ A аутентификацию からユーザ B への証明依頼(その 1) A пользователю B (1)

Сначала пользователь A должен выбрать случайное число rA, возвести его в

N で割って余りを  まず、ユーザ A は適当に乱数 を選んで、これを 2 乗して、合成数 квадрат и поделить результатrAна составное число N, чтобы найти остаток. Этот

остаток, то есть yA, удовлетворяющее следующему сравнению: yAчисло 求め、この余り 、すなわち、

220 220

4. как используют шифр на практике? 実際に暗号を使うには 第 4 章 Глава


yA =(r ≡ A)2(mod N)                      (4)

пользователь A отправляет пользователю B. Положим, что в качестве случайного числа rA пользователь A выбрал 50. Тогда, решив сравнение:

をユーザ B に送ります。たとえば、ユーザ A が乱数 として 50 を選んだとします。このとき、      yA = 502 = 2500 = ≡ 30(mod 247) なので、30 をユーザ B に送ります。 пользователь A отправит пользователю B число 30.

Шаг 2:2 ユーザ Запрос наAаутентификацию от пользователя  ステップ からユーザ B への証明依頼(その 2) A пользователю B (2)

Теперь пользователь A умножает по модулю составного числа N свой секрет-

SA と、ステップ  次にユーザ A は、自分がセンターからもらった秘密鍵 1 で選択した乱 ный ключ, полученный от центра, на случайное число rA, выбранное на шаге 1.

Другими словами, пользователь A решает следующее сравнение: rA との積に対して、合成数 N を法とする計算、すなわち、 数

     zA = ≡ SArA(mod N)                      (5)

иを行って、ユーザ отправляет пользователю B результат zrA.として選んだ В нашем случае, так как выбрано 50: B に送ります。先に乱数 50 を例にすれば、 A

     zA = 71 × 50 = ≡ 92(mod 247)

пользователь A отправляет пользователю B число 92. なので、92 をユーザ B に送ることになります。 Шаг 3: Аутентификация пользователя A пользователем B (1)  ステップ 3 ユーザ B による Aчисло の真正性の確認作業(その 1) Пользователь B возводит zA, полученное от пользователя A, в квадрат по модулюユーザ составного числа N, или, говоря другими словами, решает следующее zA を 2 乗して、 N を法とする計算、  そこで、 B はユーザ A から送られてきた 合成数 сравнение: すなわち、

2      vA = ≡(zA)(mod N)                        (6)

       = ≡(SArA)2(mod N)

                 (7)

Так как, в нашем случаеzzAA= = 92 92,なので、次のようになります。 он получит следующий результат: を行います。この例では      

vA = 922 = 8464 = ≡ 66(mod 247) .

Шаг 4: 4 ユーザ Аутентификация A пользователем  ステップ B による Aпользователя の真正性の確認作業(その 2) B (2)

Теперь пользователь B находит результат ωA деления числа υA, найденного на vA を、ステップ  次にユーザ B は、ステップ 3 で求めた 1 でユーザ A から送られてきた шаге 3, на число yA, полученное от пользователя A на шаге 1, по модулю составного числа N, то есть, решает следующее сравнение: y で割った値、 A

vA      wA = (mod N)                       (8) ≡             yA −1        = ≡ vA ×(yA )(mod N)

               (9)

−1 Естественно, так как все вычисления производятся по модулю N, для AвыполнеN を法とする演算であり、y は yA の を計算します。もちろん、すべての計算は合成数 ния деления на yA необходимо сначала найти обратный элемент (обратное число) −1 −1 −1 は次式を満たす値です。 A y逆元(逆数)を表します。つまり、y A к числу yA. Другими словами, число yA должно удовлетворять следующему сравнению:

Доказательство с нулевым разглашением

221 221


yA ×(yA− 1)= ≡ 1(mod N)                    (10)

      

−1

−1

В нашем примере, так как υ = 66, yAyA=− 130, yA− 1(mod ≡ 30 (mod 140: = 30 247)=247) 140≡なので、  この例では、v A = 66,yA = 30Aであり、 66       wA = ≡ 30 (mod 247)= ≡ 66 × 30 − 1(mod 247)= ≡ 101. ≡ 66 × 140(mod 247)=    

Таким образом, пользователь B нашёл число 101, равное идентификатору пользоваとなり、みごとにユーザ A の ID(IDA)が現れてきます。 теля A (IDA). Как мы смогли увидеть, вышеописанная процедура по шагам 1–4 позволяет  以上のステップ 1 からステップ 4 までの処理によって、送信者が本当のユーザ A であ пользователю B убедиться в аутентичности пользователя A в том случае, если отる場合には、ユーザ B はユーザ A の真正性を確認することができます。ステップ 4 で、 правителем является подлинный пользователь A. Причина заключается в том, что 101 というユーザ ID(IDA)が現れる理由は、ユーザ A の秘密鍵 を 2 乗したも секретный ключ SAA の пользователя A при возведении в квадрат даётSAидентификатор пользователя A (ID A). Другими словами, на основе сравнения (8) с учётом сравнеのが ID になっているからです。つまり、式(8)において、式(3)、式(4)、式(5)を ний (3), (4) и (5) мы можем записать: 考慮することにより、

{(Секретный ключ SAA の秘密鍵 пользователя A)×(Случайное число rA)}        SA)×(乱数 rA)}2 {(ユーザ ωA = wA =     (11) 2 2число rA) (Случайное         (乱数 rA)          (SArA)2   w   A  = =(SA)2 = IDA =ユーザ A の ID пользователя         Идентификатор A (12) 2          (rA) 2

という関係が成立しているのです。

Пользователь ユーザ A A yA を送信 Отправка yA Отправка zA zA を送信

ユーザ B B Пользователь

不正なユーザが乱数 rA  Злоумышленник не cможет найти случайное число rA を求めることは不可能 yA = ≡(rA)2(mod N) zA =S ≡ ArA(mod N)

(SAA  ::ユーザ секретный (S A ключ の秘密鍵) пользователя A)

yA を受信 yA Получение zA を受信 zA Получение (zA)2 wA = ≡     y (mod N)

(     ) A

ωAーиザпроверка とНахождение 計 算 し て、 ユ A の ID(IDA) его равенства идентификатору に等しいかどうかをチェックする пользователя A (IDA).

Рис. 4.10. Метод аутентификации на основе доказательства с нулевым разглашением 図 4.10 ゼロ知識対話証明における「真正性」の確認手順

●なりすましの方法● Метод спуфинга

Теперь рассмотрим способ, с помощью которого злоумышленник X, исполь 図процедуру 4.10 において、 公開されているユーザ A の IDна 101 4.10, とした場合、 A をрис. зуя аутентификации, показанную может悪意を持ったユー выдать себя за пользователя A с идентификатором (IDA) 101. Разумеется, злоумышленник не ザ X が、不正にユーザ A になりすます方法を考えてみましょう。もちろん、ユーザ X は、 имеет ни малейшего представления о секретном ключе SA пользователя A. ユーザ A の秘密鍵 SA のことはまったく知らないものとします。 Однако, выбрав два числа e и f, удовлетворяющие следующему сравнению:  そのためには、ユーザ X が、       

222 222

e2 = ≡ IDA × f(mod 247)                   (13)

4. как используют шифр на практике? 実際に暗号を使うには 第 4 章 Глава


злоумышленник X на eшаге 1 процедуры аутентификации отправляет число f, а заの関係を満たすように と f を決め、最初にステップ 1 では f を送り、続いてステップ 2 тем, на шаге 2, число e. e を送信すればいいのです。 ではПусть это будут, к примеру, числа e = 25 и f = 82, удовлетворяющие сравнению (13). Покажем, что при выполнении шагов 3= и 482с とおいて、ステップ этими числами будет вычислен  では、式(13)を満たす例として、e = 25,f 3 とステップ идентфикатор пользователя A (IDA = 101). 4 を実行し、ユーザ A の ID(IDA = 101)が得られることを示しましょう。 Используя эту пару чисел e и f, произвольно выбранную злоумышленником X, e とиf числа вместо числа zA сравнения (5) yA сравнения (4),zAсоответственно,  ユーザ X が適当に作成した は、それぞれ式(5)の と、式(4)の yA вычисに相当 лим сравнения (6) и (9) и убедимся, что полученный результат будет равен иденすることを利用して、式(6)と式(9)を計算し、ユーザ A の公開されている ID(IDA = тификатору, опубликованному пользователем A (IDA = 101). 101)が現れることを確かめます。 Все вычисления производятся по модулю составного числа N (в нашем примере N = 13 × 合成数 19 = 247). N(この例では N = 13 × 19 = 247)を法とするモジュロ演算です。  この計算は、 Шаг 3 3  ステップ      vA = e2 = 252 = ≡ 131 (mod 247).  ステップ Шаг 4 4 wA =

     

e2 = e2 × f − 1 = vA × 82 − 1 f

−1         ここで、82  (mod 247) = 244 より、w 131 ×× 244 244(mod 247) 101 Здесь, так как 82−1 (mod 247) ≡ 244: ωAA = ≡ 131 (mod 247) ≡=101.

Мы показали, что, не обладая знанием секретного ключа SA и случайного числа rA, злоумышленник X способен IDA = 101, опублиSA と乱数 rидентификатор  以上の結果から、ユーザ X は秘密鍵воссоздать Aの A の情報を知ることなく、ユーザ кованный пользователем A, и, таким образом, совершать недобросовестные дейIDA(= 101)を作成して、ユーザ A になりすますことができ、不正を行 公開されている ствия, выдавая себя за пользователя A (рис. 4.11). えることになります(図 4.11)。 ユーザ A A Пользователь

(IDA = 101)

Случайное 乱数 числоrA  r= 50 A =50

●正当なユーザ ● Отправитель: A の場合 аутентичный пользователь A

Отправка yA yA を送信

ユーザ B B Пользователь

yA =50 ≡ 30 ≡ 2(mod 247)=

Отправка zA zA を送信

zA を受信 zA Получение

(   ) 922 wA = (mod N) ≡     30 = ≡ 101 = IDA

(не знает rA は知らない) ユーザ XX(乱数 ユーザ B B Злоумышленник Пользователь случайного

●不正なユーザ ● Отправитель: X の場合 X злоумышленник

Отправка yA yA を送信 Отправка zA z を送信 A

числа rA)

yA = 82

yA を受信 yA Получение

zA =25

zA を受信 zA 2 Получение 25 wA =   (mod 247) ≡  82 = ≡ 101 = IDA

一致(な りすまдля し条спуфинга) 件) Совпадение (условие

zA =71 ≡ × 50(mod 247) Случайное乱数 числоrA  r= 50 A =50

yA を受信 yA Получение

(    ) Успех спуфинга ‘なりすまし’成功

4.11 なりすましの例 Рис.図4.11. Пример спуфинга

Доказательство с нулевым разглашением

223 223


Таким образом, для прохождения процедуры аутентфикации, показанной на  このように図 4.10 の確認をかいくぐるためには、公開されているユーザ個々の ID 情 рис. 4.10, достаточно на основе данных ID, публикуемых каждым из пользоватеSA 報から、式(13)を満たすようにすればよいのです。具体的には、ユーザ の秘密鍵 лей, выбрать числа, удовлетворяющие сравнению (13). Конкретно Aговоря, злоумышленник X, не знающий секретного ключа S A пользователя A, сначала произを知らない不正なユーザ X は、まず e を適当に定めて 2 乗し、それを ID で割り、f、す вольно выбирает число e и возводит его в квадрат, а затем, поделивA результат на なわち、 ID A, то есть решив нижеприведённое сравнение (14), получает число f:       e2 f= ≡ (mod N)           IDA

                      (14) 

после чего сначала fотправляет число f, а затем – число e. Таким образом, злоe を送信することによって、ユーザ を求めた後、最初に を送り、続けて A しか知らない умышленник X, даже не зная случайного числа rA, известного только пользовате乱数 r がたとえ得られなくても、簡単にユーザ B の確認作業(ステップ 3 とステップ 4) лю A, Aможет легко пройти процедуру аутентификации, осуществляемую пользоをパスすることができます。 вателем B (шаги 3 и 4). ●ゼロ知識対話証明でのなりすまし防止法● Защита от спуфинга, основанная на доказательстве без разглашения

Итак, как же можно защититься от такого спуфинга? Для этого необходимо

усложнить процедуру аутентификации, как показано на рис. 4.12. Пользователь  では、どのようになりすましを防げばよいのでしょう。そのためには、図 4.12 のよう

B после получения от отправителя каждого из чисел y и z , отправляет бит запроса (challenge bit), равный 0 или 1, проверяя значения, присылаемые в ответ. 0Это か 1даёт かの値 (チャレンジビット) を送信します。 それに応じて戻ってくる値をさらにチェッ возможность проверить, правильно ли отправитель выполняет процедуру аутентификации. クして、送信者が正規の手続きを行っているか確認します。 Данная методика гарантирует доказательство без разглашения и аутентич これによって、もとの素数が知られない限り、ゼロ知識性、真正性、なりすましのない ность, предотвращает спуфинг, конечно, если злоумышленнику не известны первоначальные простые числа. ことが保証されることになります。

A A yA,zA が届いたら、 に確認作業を複雑化させる必要があります。ユーザ B は、送信者から

ユーザ A A Пользователь

Недобросовестный пользователь 不正なユーザが乱数 rA  не сможет найти случайное число rA を求めることは不可能

yA = ≡(rA )2(mod N)

(   ) Отправляет значение, cの チャレンジビット соответствующее полученному 値に応じて値を返す биту запроса c

c=1

Получение yA を受信yA Отправка c を送信 c

(Отправка бита запроса c) c を送信) (チャレンジビット

Отправка zA zA を送信

zA ≡ =SArA(mod N) c=0 Отправка случайного rA 乱数 rAчисла を送信

Получение zA を受信 zA

(zA)2 wA = ≡    y (mod N)

(     ) A

(Отправка бита запроса c) c を送信) (チャレンジビット

rA

Вычисление Aи と 計 算 し て、ωユ ーпроверка ザ A の ID(IDA) его равенства идентификатору に等しいかどうかをチェックする пользователя A (IDA)

Получение rA を受信 rA

(     ) yA = ≡(rA )2(mod N)

Вычисление yA и проверка y と等 を計算して、最初に受信した A его равенства первоначально しいかどうかチェックする полученному yA Рис. 4.12. Процедура аутентификации с защитой от спуфинга 図 4.12 なりすましを防ぐ真正性の確認手順

224 224

一(условие 致(真正подтвержения 性の確認条件аутентичности) ) Совпадение

Отправка yA yA を送信

ユーザ B B Пользователь

4. как используют шифр на практике? 実際に暗号を使うには 第 4 章 Глава


Разъяснение некоторых 補足解説 терминов числа и стойкость шифра ◎ Псевдослучайные ◎ 擬似乱数と暗号セキュリティ

Случайные числа, то есть беспорядочные последовательности чисел, – это одна из фун 乱数、すなわちランダム(無秩序)な数字の列は、 セキュリティを支える基盤技術の даментальных технологий, обеспечивающих стойкость шифра. Например, ключи1вつです。 криптосистемах с открытым ключом, используемые для шифрования и расшифрования информа例えば、 公開鍵暗号の場合、 情報を暗号化したり復号(解読)するのに使う「鍵」は、 乱数を使っ ции, генерируются с использованием случайных чисел. Так как повторное использование て作成します。毎回、同じ鍵を使っていると解読される可能性があることから、公開鍵暗号を одних и тех же ключей повышает вероятность вскрытия шифра, в целях повышения крипто使うたびに新たな鍵を生成して安全性を高めています。これは、乱数がわかってしまうと暗号 стойкости ключи каждый раз генерируются заново при возникновении необходимости использовать открытый ключ. И это является необходимой мерой, ведь если злоумышленник が破られ、お金が盗まれたり、個人情報が流出する可能性があるからなのです。見破られない узнает, какое случайное число используется, то это может привести к финансовым потерям, 暗号にするために、乱数がもっている予測不可能性(過去の数字の列から、次の数を予測でき утечке личной информации. Таким образом, для того чтобы шифр был невскрываем, активないという性質)を積極的に利用するというわけです。 но используют такое свойство случайных чисел, как непредсказуемость (невозможность на основе предудущей последовательности предсказать следующее число).  乱数は、 擬似乱数と、 最近注目を浴びている物理乱数(真性乱数)に大別されます。そのうち、 Существуют псевдослучайные числа и истинные случайные числа. Псевдослучайные 擬似乱数は一定の計算式に基づいて生成されるので、周期や同じパターンが出現して「完全に числа генерируются на основе определённых формул и не обладают таким свойством неランダムな数字の列」にはなりえません。そのため、乱数を推定され、セキュリティが破られ предсказуемости, как истинно случайные числа: последовательность псевдослучайных чисел характеризуется периодичностью, в ней могут присутствовать определённые закономерноてしまうリスクがあります。代表的な擬似乱数生成器には、線形合同法、平方採中法、M 系列、 сти, что повышает риск вычисления псевдослучайного числа злоумышленником и снижает BBS(Blum-Blum-Shub)法、一方向性ハッシュ関数を使う方法、暗号を使う方法などがあ стойкость шифра. Наиболее типичными методами генерации псевдослучайных чисел являютсяります。 линейный конгруэнтный метод, метод середины квадрата, М-последовательность, алгоритм Блюм-Блюма-Шуба (англ. BBS: Blum-Blum-Shub); методы с использованием односто その点、物理乱数は自然界の物理現象に基づいて生成される乱数であり、完全にランダムな ронних функций, методы с использованеим шифров и т. п. 数字の列を実現でき、永遠に無秩序な数字の列を発生し続けます。例えば、半導体回路に電流 С другой стороны, генераторы истинных случайных чисел, основанные на использовании を流したときに発生する雑音から乱数を生成しています。今後は、セキュリティを支える強固 физических явлений, способны всё время выдавать беспорядочные, то есть действительно случайные, последовательности чисел. Для генерации истинно случайных чисел моな基盤を構築するため、物理乱数が活用されることが増えると予想されます。 жет использоваться, например, шум, создаваемый электрическим током в полупроводниковых элементах. Считается, что в будущем истинно случайные числа будут использоваться в криптографии более широко, что позволит создать прочный фундамент, поддерживающий ◎ PGP информационную безопасность.  Pretty Good Privacy の頭文字を並べたもので、直訳すると「たいへん良いプライバシー」の

◎ PGP

意味で、1990 年頃にフィリップ・ジマーマンによって考案され、広汎に使われている暗号ソフ トウェアです。

PGP – это широко используемая компьютерная криптографическая программа, созданная  PGP в 1991 は、現代の暗号ソフトウェアに必要な機能をほぼすべて備えています。つまり、共通 году Филиппом Циммерманом. Её название – PGP, – образовано из первых букв 鍵暗号(AES、3-DES 、公開鍵暗号(RSA、ElGamal など) 、ディジタル署名(RSA、 фразы Pretty Good Privacy,など) что дословно переводится как «весьма надёжная конфиденциальность». DSA)、一方向性ハッシュ関数(MD5、SHA-1、RIPEMD-160 など)、証明書作成などが可 PGP поддерживает практически все функции, необходимые для современного крипто能です。 графического программного обеспечения. Это, другими словами, одноключевые шифры (AES, 3-DES и др.), шифры с открытым ключом (RSA, шифр Эль-Гамаля и др.), односторонние хеш-функции (MD5, SHA-1, RIPEMD-160 и др.), генерирование сертификатов и т. д.

225

225


SSL/TLS ◎◎ SSL/TLS

SSL/TLS – это семейство криптографических протоколов безопасной связи, используе オンラインでショッピングを行うときなどに使用される通信プロトコル(通信するうえでの мых, например, в интернет-шоппинге. В этих протоколах для проверки аутентичности и це決まり)で、通信内容の認証と正真性のチェックを行うためにメッセージ認証コードを用いて лостности передаваемых сообщений используется имитовставка (MAC: код аутентификации сообщения). Протоколы SSL (Secure Socket Layer:) или TLS (Transport Layer Security), выいます。例えば、ウェブブラウザでクレジットカード番号を送るときなどに、通信を暗号化 полняющие шифрование сообщений, используются, например, вTLS(Transport веб-браузерах для таких してくれるプロトコルとして SSL(Secure Socket Layer)あるいは Layer операций, как отправка номера кредитной карты, что помогает предотвратить перехват этой Security)を用意し、番号のやりとりを暗号化して盗聴を防止することができます。なお、 важной личной информации. Кстати, адреса URL интернет-ресурсов, использующих эти протоколы начинаются «http://», а с «https://». で始まります。 SSL / TLS связи, による通信での URLне はсhttp:// ではなく、https:// Кроме того, SSL/TLS можно использовать криптографической защиты и таких про また、メールを送信するための SMTP(Simpleдля Mail Transfer Protocol)や、メールを受信 токолов связи, как SMTP (Simple Mail Transfer Protocol), используемый для отправки сообするための POP3(Post Office Protocol)といったプロトコルも SSL/TLS で暗号化して守るこ щений электронной почты, POP3 (Post Office Protocol), используемый для получения сообとができます。 щений электронной почты.

量子暗号 шифр ◎◎Квантовый

Считается совершенно стойким шифром. При использовании обычной оптоволоконной  絶対に安全な暗号に位置付けられています。通常の光通信の 1 ビットに相当するパルスには связи в одном световом импульсе, который соответствует 1 биту информации, содержится 光の最小の粒(光子)が 1 万個以上も含まれています。量子暗号では、光子 1 個に 1 ビットの более 10 тысяч минимальных порций (квантов) световой энергии (называемых фотонами), 情報を載せて、光子の偏光状態(電磁波の振動の向き)で 0 とодним 1 を区別します。こうすること однако в квантовом шифре каждый фотон модулируется битом информации путём によって、光子を分解することは不可能であり、光子を盗まれたとしても観測によって光子の изменения состояния его поляризации (то есть направления векторов электрической и магнитной составляющих электромагнитной волны). Так как фотон является неделимой эле偏光状態が変わるという性質から、盗まれたことがわかるのです(量子力学によって担保され ментарной частицей, в случае перехвата информации состояние поляризации фотонов изる「盗聴の不可能性」 )。この「盗聴の不可能性」と、 暗号化鍵を一回限りで使い捨てにする「ワ менится, а значит, факт компрометации информации скрыть не удастся. Таким образом, меンタイムパッドによる解読の不可能性」とを組み合わせることにより、絶対安全を実現する暗 тоды квантовой механики могут обеспечить принципиальную невозможность незаметного перехвата информации. Если добавить к этому свойству квантового шифра ещё и принци号として理解され、実用化に向けての取り組みが加速しています。 пиальную невозможность расшифрования, основанную на использовании одноразовых ключей шифрования из шифровального блокнота (one time pad), то можно будет создать шифр, обладающий совершенной стойкостью, и в настоящее время ведутся активные рабо生体認証 ты◎в этом направлении.  生体認証は、個人に固有のデータ(例えば、指紋、静脈、顔、虹彩(目玉の茶色の部分)、掌

аутентификация ◎ Биометрическая Для биометрической аутентификации используются такие специфические личные дан形(手のひらの形状)、DNA(遺伝子)など)を本人確認に利用するものです。身近なところ では、ATM(現金自動預払機)や入退室時の本人確認などに利用される静脈認証システムが挙

ные, как отпечатки пальцев, рисунок вен, черты лица, радужная оболочка глаза, форма ладоげられ、 「指」か「手のひら」で本人確認を行います。 ни, ДНК (гены) и т. п. В качестве знакомых всем примеров можно привести банкоматы, а также системы контроля и управления доступом (СКУД), устанавливаемые на входе в помещения, в которых аутентификация личности производится по рисунку вен, считываемому с пальца или ладони.

226

226

補足解説

Разъяснение некоторых терминов


参考文献 Список использованной литературы ・三谷政昭『やり直しのための工業数学---- 情報通信と信号解析---- 暗号、誤り訂正符号、積分

● Митани Масааки, «Индустриальная математика, помогающая начать сначала – Информация, связь 出版)2000 и 変換』 анализ(CQ сигналов – Шифрование, код коррекции ошибок, интегральное преобразование», изд. CQ, 2000 г. ・結城浩『暗号技術入門』(ソフトバンククリエイティブ)2003 ● Юки Хироси, «Введение в криптографию», изд. SB Creative, 2003 г. ・辻井重男『暗号と情報社会』(文藝春秋)1999 ● Цудзии Сигэо, «Криптография и информационное общество», изд. Bungeishunju Ltd., 1999 г. ・岡本龍明,山本博資『現代暗号』(産業図書)1997 ● Окамото Тацуаки, Ямамото Хиросукэ, «Современная криптография», изд. San-to, 1997 г. 伊藤正史『暗号理論』 (ナツメ社) 2003 изд. Natsumesha CO. LTD., 2003 г. ●・ Ито Масафуми, «Теория криптографии», ● ・若林宏『よくわかる最新暗号技術の基礎と仕組み』 Вакабаяси Хироси, «Основы и устройство современных шифров простым (秀和システム) 2005 языком», изд. SHUWA SYSTEM CO., LTD., 2005 г. ・サイモン・シン,青木薫訳『暗号解読』(新潮社)2001 ● Simon Singh, The code book, пер. Аоки Каору, изд. SHINCHOSHA, 2001 г. 亀井よし子訳『16 歳のセアラが挑んだ世界 ●・セアラ・フラナリー,デイヴィッド・フラナリー, Sarah Flannery, David Flannery, «16-летняя Сара бросает вызов самому стойкому в мире шифру»,  最強の暗号』 (NHK 出版)2001 пер.Камэи Ёсико, изд. NHK, 2001 г. ●・辻井重男『暗号 ポストモダンの情報セキュリティ』 Цудзии Сигэо, «Шифры – информационная безопасность(講談社)1996 в постмодернистском обществе», изд. Kodansha, 1996 г. ・一松信『暗号の数理』(講談社)2005 ● Хитоцумацу Син, «Математика шифров», изд. Kodansha, 2005 г. (ピアソン・エデュケーション) ●・ジョセフ・H・シルヴァーマン,鈴木治郎訳『はじめての数論』 Joseph Silverman, Friendly Introduction to Number Theory, пер. Судзуки Дзиро, изд. Pearson Education,  2001 2001 г. ●・ベネディクト・グロス,ジョー・ハリス,鈴木治郎訳『数のマジック』 Benedict Gross, Joe Harris, The Magic of Numbers, пер. Судзуки Дзиро, изд. (ピアソン・エデュケー Pearson Education, 2005 г.  ション)2005 ● Цуру Кодзи, «Изучаем криптографические технологии с помощью Excel», изд. Ohmsha, 2006 г. (オーム社)2006 ●・靏浩二『Excel Иота Дзэми, ред. で学ぶ暗号技術入門』 Дзимбо Масакадзу, «Шифры – это просто!», изд. Ohmsha, 2004 г.

・神保雅一監修,イオタゼミ著『なるほどナットク!暗号がわかる本』(オーム社)2004

227 227


Предметный 索 引указатель 暗号文

ЦИФРЫ и ЛАТИНИЦА

3-DES, шифр – 78 AES, 2 進数шифр – 78, 82

  

ASCII 52 3-DES –暗号

46,51 78

CA – 206

20

Д

インボリューション Двоичные числа – 46, 51

72

隠語

ж

18

З

159

一方向性関数 117, Дифференциальный криптоанализ – 118, 1 195 エラトステネスの篩 Жаргон – 18

英語 CBC – 68

オイラー

Code – 18 Adleman

   

AES 暗号

  

DES, шифр – 70 DSA – 181 ASCII

121 78,82 56

ECB – 68 CA

206

Lucifer – 70 CBC

68

ECB

68

MAC-код – 198 mod – 136

Elgamal 暗号

175,178

modulo – 137 DES 暗号– 67 Padding

70

Diffe-Hellman 鍵共有法 PKI – 210 DSA Rijndael – 82

MAC шифр 値 RSA, – 121 Miller-Rabin 法

126

Задача дискретного オイラー関数 логарифмирования – 117, 175, 176 オイラーの定理

160 154,158

Задача факторизации целых чисел – 117 黄金虫

Золотой жук – 33

カ行

33

И

Инволюция – 72 改ざん

Инфраструктура открытых 解読 ключей (ИОК) – 208, 210

12,192 35

Инфраструктура открытых ключей – 208, 25 210 換字式暗号

180

鍵数

К

31

181

Ключ 完全性шифрования – 20

195

198

Ключ расшифрования – 20 擬似乱数列

А

131

Адлеман, Леонард – 121 mod

136

Алгоритм «Рэндал» – 82 mudulo

137

Код аутентификации сообщения 擬素数 (имитовставка) – 192, 198

65 131,157

強衝突耐性

195

Кодировка 共通鍵暗号кодов) – 52 (таблица

57,58

Алгоритм цифровой подписи – 181 208,210 PKI Асимметричный шифр – 113 Rabin 暗号                117

Кодовые 金星暗号 фразы – 18

70

Атака посредника – 205 Rijndael

82

Криптосистема – 19 公開鍵暗号

Б

21

公開鍵暗号基盤

Rivest

Блочный шифр – 66 RSA 暗号

B

Shamir

Вектор инициализации – 69

121,163 21

Вернама, ア行 шифр – 35

112 108,175

Л

Линейный криптоанализ – 79 公開鍵暗号方式

暗号

13

Вскрытие шифра – 35 Г

暗号化鍵 Гибридный шифр – 188

Логические операции – 54 コード

М

20 20

Многоалфавитной замены, шифр – 26

索引

18

79

シーザー

24

Модульная арифметика – 136 シーザー暗号

Н

Необратимое преобразование – 195

228

113

差分解読法

Модуль сравнения – 137

Нелинейная функция – 76,93

228

208,210

サ行 теорема Ферма – 154 Малая

Виженера, шифр – 26 暗号化

Контрапозиция – 156 公開鍵

Предметный указатель

24


弱衝突耐性

О

195

Одноалфавитной замены, шифр – 25 シャノン

19

Одноключевой шифр – 57, 58

Тест Ферма – 157 パディング

67

Ф

非線形関数

76

Фейстель, Хорст – 70

正真性

195

非対称鍵暗号方式

113

証明書

206

否認

199

Односторонние функции – 117, 118, 195 Отказ – 199 初期値

69

真正性

219

Открытый ключ – 112 Открытый текст – 20 ストリーム暗号

線形解読法

П

Перехват сообщения – 12

全数検索法 Подмена данных – 12, 192 素因数分解 Полный перебор – 79

58

Хеш-функция – 192, 195

ファイステル

79

フェルマー Цезаря, шифр – 24

155

フェルマー法 Центр сертификации – 206, 211

157

131

20

Ц

71

Цезарь, Гай Юлий – 24

フェルマーの小定理 Целостность данных – 195

154

不可逆性 Цифровая подпись – 203

195

復号

20

Ч

Число ключей – 35 復号鍵

タ行 общего ключа Протокол Диффе-Хеллмана – 180

20

符丁

対偶 Псевдопростые числа – 131, 157 対称鍵暗号

112

Х

秘密鍵暗号

79

122

Простые числа – 122

秘密鍵 平文

117

Потоковый 素数判定 шифр – 1

Функция Эйлера – 158, 160

63

122

素因数分解問題 Последовательность псевдослучайных чисел 素数 – 65

Ферма, Пьер – 155

156 58

Р

多表式暗号 Рабина, шифр – 117

26

18

Ш

Шамир, Ади – 121 ブロック暗号

66

Шеннон, Клод – 19

マ行 «Люцифер» – 70 Шифр Шифр перестановки – 27

中間者攻撃 Расшифрование – 20

205

メール

ディジタル署名 Раунд – 74

203

メッセージ認証コード

Режим шифрования – 69 ディジタル署名アルゴリズム

181

モード

Шифр с открытым ключом – 108, 175 Шифр с секретным ключом – 58 Шифр – 19

11

192,198 69

Репозиторий 転置式暗号 – 206, 211

27

文字コード

Решето 盗聴 Эратосфена – 126

12

モジュロ

137

モジュロ演算

136

Ривест, Рональд – 121

ナ行

Секретный ключ – 112 なりすまし 認証局

196 206,211

Сильная устойчивость к коллизиям – 195 Слабая устойчивость к коллизиям – 195 バーナム暗号

排他的論理和

ハイブリッド暗号

Т

Спуфинг – 196

ハッシュ関数 Теорема Эйлера – 154, 158

ラ行 Эйлер, Леонард – 159

ラウンド Электронная почта – 11 リポジトリ

35 46 188

192,195

論理演算

52

Э

離散対数問題 Эль-Гамаля, шифр – 175, 178

Симметричный шифр – 58 ハ行

Сложение по модулю 2 – 46

Шифрование – 13, 19 Шифртекст – 20

С

Сертификат – 206

Шифровальный блокнот – 35

74 117,175,176 211 54

ワ行 ワンタイムパッド

            35

Тест Миллера-Рабина – 131 Тест на простоту – 131

229

229


■ Об авторах Митани Масааки

Доктор технических наук. Родился в р-не Сэтода-тё г. Омити преф. Хиросима. В 1948 г. закончил

<著者略歴> кафедру электроники технологического факультета токийского технологического института. После работы научным сотрудником технологического факультета токийского технологического института 三谷 政昭(みたに まさあき) вступил в должность профессора кафедры информации и связи технологического факультета токий広島県尾道市(旧豊田郡)瀬戸田町出身。1974 年 東京工業大学工学部電子工学科卒。 ского университета электротехники. Специализируется в области обработки сигналов, связи, а также 東京工業大学工学部助手を経て、現在は東京電機大学工学部情報通信工学科教授。 образовательных технологий. 専門はディジタル信号処理工学、通信工学、教育工学。工学博士。 <Основые работы>

«Вводный курс обработки цифровых сигналов», изд. Ohmsha «Изучаем обработку цифровых сигналов в Scilab», изд. CQ <主な著書> «Азы электронных схем простым языком (I): диоды, транизисторы», изд. Micronet 『入門ディジタル信号処理』 (オーム社) «Математические основы обработки сигналов, помогающие начать сначала», изд. CQ 『Scilab で学ぶディジタル信号処理』 (CQ 出版)с сегодняшего дня!», изд. Kodansha «Используем преобразование Фурье начиная и многие другие. 『わかる電子回路入門の入門(Ⅰ)ダイオード、トランジスタ編』 (マイクロネット)

『やり直しのための信号数学』 (CQ 出版) Сато Синъити 『今日から使えるフーリエ変換』 (講談社)ほか多数。 Родился в г. Датэ преф. Фукусима. В 1990 г. окончил магистратуру токийского университета электро-

техники по специальности «Электротехника». Занимался проектированием аппаратуры обработки изо-

бражений для частных компаний. В качестве научного сотрудника медицинского факультета частного 佐藤 伸一(さとう しんいち) университета принимал участие в исследованиях, связанных с разработкой биомедицинской техники. 福島県伊達市出身。1990 年 東京電機大学大学院修士課程電気工学専攻修了。 В настоящее время является научным сотрудником кафедры информации и связи технологического 民間企業にて映像関係機器の設計に従事、私立大学医学部助手として生体工学 факультета токийского университета электротехники. Специализируется в области обработки цифро関連の研究を経て、現在は東京電機大学工学部情報通信工学科 助手。 вых сигналов, а также образовательных технологий. 専門はディジタル信号処理工学、教育工学。

●制  作 ウェルテ

■ Оформление манги/ Verte Corp.

●漫画編集 遠藤 嗣実

ニューヨークの自由の女神が кто-то унёс нью-йоркскую 何者かに持ち去られました! статую свободы!

■ Редактирование манги/ Эндо Цугуми

● D  T  P 新井 聡史

■ DTP/ Араи Сатоси

Сложив по модулю 2 двоичные ※ヒントの числа подсказки:

 00001011 00000110 00000110 00000001 00010111 00000111 00001010

 と、自由という意味の「liberty」のコードの со словом liberty, означающим свободу:

 01101100 01101001 01100010 01100101 01110010 01110100 01111001

 を XOR 演算すると、 получим ряд двоичных чисел:

 01100111 01101111 01100100 01100100 01100101 01110011 01110011

 となって、JIS コードでは「goddess」 、つまり女神となります。 который в кодировке JIS записывается словом goddess, то есть «богиня». (Статуя Свободы дословно переводится с японского как «Богиня Свободы»).


Книги издательства «ДМК Пресс» можно заказать в торгово-издательском холдинге «Планета Альянс» наложенным платежом, выслав открытку или письмо по почтовому адресу: 115487, г. Москва, 2-й Нагатинский пр-д, д. 6А. При оформлении заказа следует указать адрес (полностью), по которому должны быть высланы книги; фамилию, имя и отчество получателя. Желательно также указать свой телефон и электронный адрес. Эти книги вы можете заказать и в интернет-магазине: www.a-planeta.ru. Оптовые закупки: тел. (499) 782-38-89. Электронный адрес: books@alians-kniga.ru.

Митани Масааки, Сато Синъити (авторы), Хиноки Идэро (художник)

Занимательная информатика Криптография Манга

Главный редактор Д. А. Мовчан dmkpress@gmail.com Перевод с японского А. Б. Клионский Научный редактор Д. М. Белявский Корректор Г. И. Синяева Верстальщик А. Р. Арифулин Формат 70×100 1/16. Гарнитура Anime Ace. Печать офсетная. Усл. п. л. 19,5. Тираж 500 экз. Веб-сайт издательства ДМК Пресс: www.dmkpress.com

Profile for parallel

Занимательная информатика. Криптография  

Митани Масааки, Сато Синъити, Хиноки Идэро, 2018 г.

Занимательная информатика. Криптография  

Митани Масааки, Сато Синъити, Хиноки Идэро, 2018 г.

Profile for 06758
Advertisement