Введение
Начну пожалуй издалека. Я достаточно сильно люблю изучать криптографию, как её историческую часть - классическую криптографию, так и современную непосредственно. Можно сказать что само изучение криптографии стало для меня в неком роде хобби, где большинство проектов, которые я разрабатываю и которые базируются прямо или косвенно на криптографических знаниях, пишутся just for fun.
Логично, что такие знания не могли появиться у меня из чистого воздуха, каждое понимание тех или иных криптографических аспектов подкреплялось множеством литературы и за ним же закреплялось. Плюс к этому не малую роль также сыграло для меня преподавание, в котором на каждый поставленный вопрос становится необходимо не только знать ответ, но и понимать его основополагающие характеристики в виде причино-следственных связей.
Единственное во всех этих переменах, что для меня оставалось всегда константным - это фетиш скупки книг по криптографии. Буквально как только появляется какая-либо книга по криптографии на каких-либо Интернет-магазинах будь то ozon, wb или читай-город, и т.д. я сразу же её покупаю. При этом и сама плашка цены для книг по криптографии у меня завышена, даже если книга по факту того не стоит.
И так однажды, появилась у меня книга по криптографии с названием "Криптография с секретным ключом" от Фрэнка Рубина. Я совру, если скажу что эта книга меня заинтересовала хорошими отзывами или автором, где таковой является магистром математики и доктором информатики, занимающимся криптографией больше 50 лет (по крайней мере так пишется на обложке книги). Вовсе нет, я просто её купил, чтобы когда-нибудь прочитать. Даже если бы у этой книги были только отвратительные отзывы и/или её бы написал человек, находящийся в кустарных условиях и понимающий только что такое шифр Цезаря, я бы скорее всего её точно также бы купил. Но факт того, кем является автор и то, что он изучает криптографию более 50 лет, мы держим в голове всё последующее время повествования.
P.S. Количество имеющихся книг не равно качеству знаний у обладателя этих самых книг. Поэтому относитесь к моим рассуждениям ровно также скептически, как и я относился скептически к автору после прочтения нескольких страниц его книги. Из фото я лишь привёл доказательство того, что действительно скупаю много чего, что так или иначе связано с криптографией. Если кому интересно, то прочитал из этой литературы я 22 книги, не считая журнальчик "Математический клуб Кенгуру. Шифры и математика", "Лекции по криптографии" от Музыкантской и Фурина, а также статью Шеннона "Теория связи в секретных системах". Также здесь не были указаны ещё некоторые книги, которые я прочитал, например "Информационная безопасность. История защиты информации в России" от Ларина, Бабаша и Барановой и "Совершенные шифры" от Зубова.
Книга
Вступительное слово
Буквально на первой же странице, после содержания, нас встречает "Вступительное слово", где приводятся некоторые исторические факты связанные с криптографией и вместе с ними ошибки (или неточности, тут уже как посмотреть). Во вступительном слове я нашёл только одну неточность, ну и наверное она единственна, ведь в этой главе всего две страницы.
Успехи и провалы криптографии оказывали влияние и на более близкие к нам события. Сокрушительное поражение русской армии при Танненбурге в августе 1914 года стало прямым следствием перехвата сообщений немцами. Удивительно, но сообщения русских передавались открытым текстом, потому что у полевых командиров не было ни шифров, ни ключей.
Неточность по данному абзацу заключается в том, что шифры, да и собственно ключи у русской армии в действительности существовали (в том числе и у командиров), но сообщения и вправду передавались в открытом виде. Это связано с несколькими причинами: 1) Плохо соблюдалась безопасность военной связи. Это также было связано и с малым количеством людей понимающих криптографию; 2) Материальное обеспечение российской армии часто оставляло желать лучшего; 3) Два разных командования не смогли безопасно и дистанционно обменяться ключами шифрования в необходимой ситуации, а потому начали передавать сообщения полностью в открытом виде.
Об этом более детально можно почитать в книге "Взломщики кодов" (Д. Кан), а также немного информации присутствует в википедии и в указанных ею источниках соответственно. Мы возьмём за основу текст из "Взломщики кодов":
Русскими планами ведения военной кампании против Германии предусматривалось вторжение двух армий на территорию Восточной Пруссии. Армия под командованием генерала Раненкампфа должна была вести наступление строго в западном направлении и боевыми действиями сковать немцев. Перед армией генерала Самсонова, располагавшейся южнее, была поставлена задача обойти Мазурские болота, выйти в тыл немцам и, блокировав пути отхода, уничтожить их. Естественно, что успешное решение этой задачи предполагало согласованное и тщательное взаимодействие двух русских армий.
К сожалению, российская служба связи совершенно не отвечала предъявлявшимся к ней требованиям. Когда армии Раненкампфа и Самсонова оказались разделенными Мазурскими болотами и стали осуществлять связь друг с другом в основном по радио, выяснилось, что в армии Раненкампфа новый шифр получили и старый уничтожили, а у Самсонова все еще действовал старый шифр. В результате переговоры между ними некоторое время велись по радио в открытую.
К этому надо добавить, что и материальное обеспечение русских армий было налажено из рук вон плохо. В распоряжении армии Самсонова находилось немногим более шестисот километров провода, который был вскоре израсходован. Такое скудное обеспечение резко отличалось от снабжения вооруженных сил Англии и Франции, которые на Западном фронте ежедневно расходовали почти в десять раз больше провода. В то же время средства радиосвязи использовались только в штабах обеих русских армий и в штабах подчиненных им корпусов. Штабы дивизий и штабы более низкого звена радиосвязи не имели. Поэтому штабы корпусов для связи с дивизиями были вынуждены использовать проводные средства. А штабы армий, в свою очередь, потратили мизерные запасы провода для связи с тыловым командованием. В результате радио осталось единственным средством связи между штабами корпусов и армий.
По этому поводу автор действительно мог недосказать информацию с целью более быстрого повествования, но по принципу бритвы Оккамма всё же информация урезалась, став менее точной. Как говорится в википедии: "Бритва Оккама требует предпочесть простое объяснение только в том случае, если оно объясняет явление не менее точно, чем сложное, учитывая
весь известный на текущий момент массив наблюдений".
Далее идут предисловие и благодарности. Их пропускаем. Начинается раздел "Об этой книге". В ней скорее смущает только, то что книга, как пишет автор, рассчитана на широкую аудиторию, как массового читателя, так и профессионального криптографа. Из этого можно сделать вывод лишь о том, что книга фундаментальна сама по себе, как статья Шеннона "Теория связи в секретных системах" и проста, как учебник алгебры средних классов. Ну или нет.
1. Введение
Во введении очень часто автор использует такой термин как "невскрываемый шифр". В том числе он использует это и в таких приложениях как: 1) "предложу свыше 140 шифров, готовых к применению. 30 из них невскрываемые"; 2) "опишу вычисление, которое позволит точно измерить стойкость шифра и гарантировать, что он невскрываемый"; 3) "раскрою практический метод получения невскрываемого шифра с помощью одноразового блокнота". На этом моменте люди, изучающие криптографию будут уже явно в недоумении. Что автор понимает под невскрываемым шифром? Если невскрываемый = одноразовый блокнот, тогда зачем приводить 30 штук этих самых одноразовых блокнотов с похожими друг на друга характеристиками? Опишет вычисление, позволяющее измерить стойкость шифра и гарантировать, что он невскрываемым? А чем три правила шифра Вернама не угодили, выраженные ещё Шенноном? Практический метод получения невскрываемого шифра с помощью одноразового блокнота? Неужто автор найдёт способ как можно более легко применять одноразовые блокноты с целью получения новых одноразовых блокнотов? Какое-то масло масляное.
В общем вопросы так и сыпятся с первой страницы. И вопросы даже не в духе того, что автор сейчас покажет запретные техники криптографии, а в духе того, о чём он вообще говорит. На первых порах я подумал, что это переводчики так облапошились и начали применять термины, которые идут в открытое противоречие с остальной терминологией в криптографии, но нет.
По крайней мере я представляю под невскрываемыми шифрами именно их теоретическую невскрываемость, их можно сказать, абсолютную криптостойкость. Я не исключаю, что под невскрываемостью автор подразумивал именно вычислительную криптостойкость. Но тут появляется сразу несколько дополнительных вопросов: 1) Если идёт речь о вычислительной криптостойкости, то это должно было как-то исходить из контекста повествования; 2) Никто не называет вычислительную криптостойкость невскрываемой (по крайней мере я нигде такого не видел или забыл об этом);
Также в книге прям очень много хвастовства. Я конечно понимаю, доктор информатики и магистр математики, не человек с горы в общем, но прям введение пропитано этим и не до конца основательно. Например.
Эта книга научит любого желающего, как построить шифр, который устоит против атаки, всерьёз организованной [тут уже опечатка переводчиков] профессиональным криптографом, располагающим суперкомпьютером. Никакая другая книга не может этим похвастаться.
"Теория связи в секретных системах", "Новые направления в криптографии" и вправду не книги, в этом автор прав. Ну а если выбирать из книг, которые этим не хвастаются, я могу выделить классику - "Прикладная криптография" (Шнайер), а также менее популярное - "Криптография: скоростные шифры" (Молдовян, Молдовян, Гуц, Изотов), "Современные алгоритмы блочного шифрования и методы их анализа" (Бабенко, Ищукова). Ладно, предположим о последних он не знал, ведь так или иначе это писали российские криптографы, но чем ему Шнайер не зашёл, тут уже сложно ответить. На самом деле, о вычислительной криптостойкости написано крайне много книг и тут может возникнуть всё же сомнение, что автор говорит о теоретической криптостойкости. Но если просто пробежаться по оглавлению книги, то на главу "Одноразовые блокноты" уделяется в сумме 16 страниц из 342. Если вкратце забежать вперёд, то в этой же главе говорится о протоколе Диффи-Хеллмана. Что он делает в одноразовых блокнотах можно задать вопрос, а у меня другой вопрос - что он делает в книге "Криптография с секретным ключом" и почему о нём вообще не говорят с первых страниц?
Мы ещё не завершаем парад хвастовства.
Книга должна стать СЕНСАЦИЕЙ.
Это я также понимаю, в книге действительно есть некоторые интересные детали, которые можно так или иначе взять на вооружение, но так сильно хвастаться этим... Буквально на примере, можете представить статью Шеннона "Теория связи в секретных системах", где вместо 49 страниц (в русском варианте) будет присутствовать 59 страниц, 10 из которых чистый маркетинг этой же статьи. Примерно такое представление у меня сложилось об этой книге, но на счёт всё же СЕНСАЦИИ возник скептицизм.
Также меня очень смутил следующий абзац.
Из этой книги вы узнаете, как это сделать. Я представлю широкий набор инструментов, новых и давно известных, которые можно комбинировать бесчисленными способами, получая в итоге шифры сколь угодно высокой стойкости. Студенты, изучающие криптографию, и программисты, применяющие её в работе, найдут здесь широчайщий спектр практических методов, которые можно использовать для разработки новых криптографических продуктов и сервисов.
Про студентов ладно, для них действительно будет полезным информация о том, как можно самолично создавать и конструировать шифры, но вот говорить, что такое структурирование поможет программистам - это сильно. Так например, после книги "Прикладная криптография" появилось очень много криптографов-любителей, а вместе с этим в одном лице и программистов-самоучек, решивших писать собственные шифры. Вследствие всего этого, далее была написана книга "Практическая криптография", как некий пересмотр ложных представлений о безграничной безопасности криптографии, в роли волшебного порошка, которым можно осыпать приложение и оно станет априори безопасным, Давать программистам самостоятельно писать шифры и применять их на практике - это крайне сомнительное решение. Здесь можно процитировать Шнайера.
Любой, кто создает собственный образец шифрования, – гений или глупец. С учетом соотношения гениев и глупцов в нашей действительности шансы выжить у образца невелики.
Также, после прочтения книги, есть некоторое количество небольшой лжи во введении. Так например, автор пишет.
Я буду объяснять всю необходимую математику, так что обращаться к другим источникам не придётся.
А теперь забегаем вперёд, на главу 12 "Принципы безопасного шифрования".
Чем приводить формулу, как в большинстве учебников, я лучше объясню, как и почему она работает.
Итак, это было введение, три страницы... Благо в последующем такое не прям так плотно встречается, разбавляясь формулами, конкретными реализациями шифров, пояснениями формул и шифров и т.д. Но уже здесь можно помечтать о том какие весёлые приключения нас ожидают.
2. Что такое криптография?
Здесь хотел бы ввести некую предысторию, перед началом данной главы. Однажды в ВК (примерно 4-5 лет назад) существовала группа связанная с мемами по криптографии. Там постились всеразличные мемы про то, что множественное шифрование шифром Цезаря делает твои данные безопаснее, про то, что Base64 - это современный симметричный алгоритм шифрования и т.п. Сейчас она к сожалению заброшена, но глава этой книги дала мне прям ностальгические ощущения.
Перлы начинаются с самого первого абзаца
Криптографию часто называют "искусством тайнописи". Но этим она не исчерпывается. Криптография включает всё: от невидимых чернил до передачи сообщений с применением квантового запутывания фотонов. В частности, криптография включает придумывание и вскрытие кодов и шифров.
Тем кто знаком с криптографией уже скорее всего заметна рука мастера. В общем, суть здесь такова, что невидимые чернила относятся к стеганографии (искусству `тире` науке). Благо про коды он использовал правильный смысл, что это есть замена целых слов на что-либо. Вот только потом он начинает использовать термин "Код" уже как захочет, например под "Вскрытием кода" он понимает взлом шифра. При этом, такие обозначения расположены прям на одной странице.
Далее автор даёт нам понятие термина "невскрываемый", который нас поставил буквально в тупик. И тут автор пишет следующее.
Что я понимаю под словом "невскрываемый"? Во-первых, что шифр невозможно вскрыть криптографическими средствами [автор исключает подкуп, шантаж, предательство и т.д.]. Во-вторых, я имею в виду, что шифр нельзя вскрыть на практике.
И вот тут лично у меня немного уже подгорело. Во-первых, что мешало об этом сказать сразу во введении? Во-вторых, зачем такой термин, требующий "разжёвывания", вносить на обложку книги (тут вопрос риторический)? В-третьих, раз это вычислительная криптостойкость, значит автор не нашёл никаких книг про криптоанализ современных симметричных шифров и всё хвастовство улетучивается как только начинается вторая глава? В-четвёртых, остаётся недопонятым следующее чудо "раскрою практический метод получения невскрываемого шифра с помощью одноразового блокнота". То-есть он ухудшит одноразовый блокнот до своего кастомного шифра или просто сделает реализацию поточного шифра (в принципе одно другое не отменяет)?
Ладно, идём далее по тексту.
Существует много видов криптографии. Перечислим несколько видов, которые использовались в прошлом:
* скрытое сообщение, например гонец мог проглотить сообщение, спрятать его в каблуке или в седле [переводчики запятую забыли поставить] либо просто запомнить. В древности часто заставляли гонца заучивать сообщение на не понятном ему языке;
* тайный метод, например шифр Цезаря, в котором каждая буква алфавита заменялась буквой, отстоявшей от неё на три позиции. То есть A заменяется на D, B - на E, C - на F и так далее;
* замаскированное сообщение, похожее на что-то другое, например на деталь одежды гонца;
* невидимое сообщение, например микроточки или невидимые чернила, которые проявляются при нагревании или обработке кислотой;
* ложный путь, например когда истинным сообщением является подпись или форма и цвет бумаги, а всё остальное служит только для отвлечения внимания или дезинформации;
А теперь давайте попробуем найти что из этого действительно относится к криптографии. Скрытое сообщение, замаскированное сообщение, невидимое сообщение - это всё суть одного и того же - стеганографии, не более и не менее. Только в стеганографии существуют такие базовые понятия как контейнер сообщения. Как в примере автора, контейнером для истинных сообщений может являться гонец, для замаскированных сообщений - одежда гонца, для невидимых сообщений - микроточки и т.д. В криптографии как таковых контейнеров для хранения информации не существует, ни в классической, ни в современной. На счёт ложного пути более сложная ситуация, так например у Шнайера в "Прикладной криптографии" приводится пример цифровой подписи (4.2. Скрытый канал), которая обладает и криптографическими, и стеганографическими свойствами. Но меня терзают смутные сомнения на счёт того, что автор говорил о цифровой подписи, с учётом "использовались в прошлом". Итого, из всего представленного списка остаётся только шифр Цезаря, как действительно представитель криптографии.
Вот мы вроде и описали это всё, но автор не заканчивает своё повествование, и начинает смешивать термины уже не стесняясь.
Все эти методы носят общее название стеганография
А теперь, вопрос к самому автору, раз это всё есть виды криптографии, а само общее название всех этих видов является стеганографией, то по транзитивному закону криптография = стеганография? В общем я бы пожелал автору здоровья и сил на структуризацию всего, что так или иначе связано с классической криптографией и стеганографией вообще. Более подробно на счёт классической криптографии можно почитать здесь.
Далее, автор меняет имена привычные в криптографии: Алиса, Боб и Кэрол на Сандра, Рива и Эмили. Автор приводит аргумент в пользу этого, потому что так естественнее (Сандра=Sender, Рива=Receiver, Эмили=Enemy). Вроде как и да, но как-то привычнее всё же в протоколах иногда именовать участников не именами, а точками A, B и C, а не S, R и E. Помимо прочего E уже существует в традиционном описании как Ева и непонятно зачем было переименовывать в Эмили. К тому же такое "разыменование" начинает больше напоминать какие-то дешёвые пародии Гарри Поттера, по типу:
Ну да ладно, это уже вкусовщина, идём дальше с Сандрой, Ривой и Эмили в путешествие к башне волшебника. Далее, автор начинает рассуждать о том, что такое шифр с секретным ключом, шифр с открытым ключом и шифр с персональным ключом. Всё бы хорошо, вот только не существует шифров с персональным ключом. Шифр - это алгоритм, а не протокол. Автор же даёт следующее пояснение шифрам с персональным ключом. Я бы сказал, что автор выдал базу, базу банкнот из банка приколов.
Криптографию с персональным ключом называют ещё трехпроходным протоколом. Протокол - это последовательность шагов, используемая для достижения определённой цели, например передачи сообщения. Иными словами, протокол - это алгоритм. [Далее автор приводит в качестве примера трёхэтапный протокол Шамира]
Скажу наверное сразу, что алгоритм != протокол. В то время как алгоритм описывает действия исключительно и только относительного одного участника, протокол же вбирает в себя алгоритмы нескольких участников (двух и более) и трактует порядок их действий для достижения определённой общей цели.
На этом наше путешествие ещё не заканчивается, буквально на этой же странице автор ещё говорит о следующем:
Более того, классификация симметричная-асимметричная не всегда точна. В разделе 15.1 опишу шифр Хилла - метод с секретным ключом, в котором шифрование сводится к умножению сообщения на ключ, а дешифрование к умножению на обратный ключ - так же, как в криптографии с открытым ключом.
Это просто пушка, квитенсенция магистра математики и человека, изучающего криптографию больше 50-ти лет. Тем, кто знаком с криптографией, наверное и не стоит объяснять, что связь симметричная и асимметричная, по крайней мере на данном примере, точна настолько насколько она может быть. Чтобы разрушить данное суждение, нам нужно лишь базовое знание алгебры, желательно пятого-шестого класса. При этом необязательно рассматривать всё это на шифре Хилла, подойдёт даже шифр Цезаря.
Предположим, у нас существует шифр Цезаря. Чтобы зашифровать сообщение, нам необходимо применить функцию шифрования вида EK(M) = M+K (mod N), где M - открытое сообщение, K - ключ шифрования, N - модуль (величина алфавита). Модуль приводит все вычисления к конечному кольцу ZN, где появляются следующие свойства:
Коммутативность: M+K = K+M
Ассоциативность: (M+K)+K = M+(K+K)
Дистрибутивность: x(M+K) = xM + xK
Существует нулевой элемент [0]: K + 0 = 0 + K = K
Существует противоположный элемент [-K]: K + (-K) = 0
В общем виде, все свойства более менее понятны тем, кто когда-либо работал с числами на множестве рациональных чисел. Но суть здесь заключается именно в том, что множество ZN не содержит внутри себя отрицательные числа, а поэтому и числа -K не существует в привычном виде. Это лишь алгебраический символ. Чтобы найти -K нам необходимо действительно выполнить операцию минус, но таким образом, чтобы -K стало положительным. Здесь мы можем применить такую формулу: (-K)=N-K.
В итоге, из всей этой теории к чему мы пришли? Легче показать на примере. Предположим, нам необходимо зашифровать сообщение M=20. У нас есть ключ K=7, а также модуль N=26. При шифровании у нас выполняется формула вида M+K = 20+7 (mod 26) = 1. Чтобы расшифровать M, нам необходима обратная функция к шифрованию, или иными словами EE-1=I, где I(M) = M, ну или более лёгкими словами DK(EK(M)) = M, где D - функция расшифрования. Функция D внутри должна выглядить так: DK(C) = C-K (mod N), где C - зашифрованное сообщение. Выполнить операцию вычитания мы сразу не сможем, потому что мы получим отрицательное число 1-7=-6, которого существовать в конечном кольце просто не может. В итоге, мы применяем операцию вычисления противоположного числа к 7: 26-7=19. Теперь применяем данное число уже через стандартную операцию конечного кольца - сложение: 1+19=20. И о чудо, в шифре Цезаря ключи получились разные - для шифрования мы использовали K=7, а для расшифрования K=19. ПРЯМ КАК В КРИПТОГРАФИИ С ОТКРЫТЫМ КЛЮЧОМ! Но нет, так оно не работает.
Основное отличие криптографии с открытым ключом состоит в том, что из одного ключа мы не можем вычислить другой. Из открытого вычислительно сложно найти закрытый. В симметричных шифрах такое не работает. В шифре Цезаря легко из K=19 получить K=7 (N-K = 26-19 = 7), легко из K=7 получить K=19 (N-K = 26-7 = 19). Такая же ситуация и в шифре Хилла. Хоть он математически более сложен, но ситуация у него сохраняется. У него используются квадратные матрицы в качестве ключей. Допустим есть K и обратная матрица K-1. Они образуют единичную матрицу E=KK-1. Чтобы получить из K - K-1 нам нужно использовать формулу нахождения обратной матрицы, которая выглядит как K-1=detK-1K*, где detK-1 - обратный определитель матрицы и K* - союзная матрица (состоящая из алгебраических дополнений). Если просто сказать вкратце, мы относительно легко (не вычислительно сложно) можем выявить из ключа K обратный ему ключ. Ровно такая же ситуация и с K-1.
Ну и из всего нами рассмотренного, наиболее комично теперь выглядит следующий абзац.
Классификация шифра как симметричного или асимметричного не особенно полезна. Она не отражает существуенного различия между криптографией с секретным и открытым ключом: в криптографии с секретным ключом все ключи хранятся в секрете, а в криптографии с открытым ключом каждая сторона хранит в секрете один ключ, а второй делает общедоступным.
Мы не останавливаемся и продолжаем идти к поиску нероботизированной жабы.
Другой способ классификации - разделение шифров на блочные и потоковые. Блочные шифры применяются к блокам символов сообщения, скажем к блокам по 5 символов. Обычно размер всех блоков одинаков и для каждого используется один и тот же ключ.
Потоковые шифры применяются к одному символу сообщения за раз.
Тут также у меня материализовался камень в огород переводчиков: раз уж вы используете термин "Блочный", тогда используйте "Поточный". Если используете "Потоковый", тогда используйте "Блоковый". Смешение двух способов выглядит странно.
Теперь же к самому разделению блочных шифров и поточных (вместо потоковых буду употреблять поточные, более привычно). На самом деле вышесказанное вообще ничего не даёт о понимании различия между блочными и поточными шифрами. Что если блочный шифр состоит из блока равного одному символу, что дальше? Вся классификация тут же начнёт сыпаться, потому что основное различие поточных и блочных шифров не в том, какова длина блока, а в том, может ли шифр шифровать наименьшую долю информацию - бит, сразу, без накапливания дополнительной информации. Если да, значит шифр поточный, нет - значит блочный. Чисто технически, блочный шифр может быть с двумя битами, но с одним не может. Это разграничение ещё исходит из классической криптографии, когда минимальной единицей информации считались символы. По такому же разграничению классифицировались моноалфавитные/полиалфавитные шифры с полиграммными. В более общем виде, шифры поточные отличаются от блочных ещё тем, что накладывают гамму (генерируемый ключ шифрования) на сообщение, в то время как блочные шифры преобразуют непосредственно сами блоки сообщений.
Далее автор ещё выдаёт интересные наблюдения.
В более современных потоковых шифрах длина ключа сообщения обычно совпадает с длиной сообщения и называется гаммой. Такой непериодический подход к шифрованию называется одноразовым блокнотом.
Вот теперь мы и поняли, что автор подразумевал под 30-тью одноразовыми блокнотами - просто поточные шифры с генерируемой гаммой, не более, не менее. Вот только в криптографии уже достаточно давно под одноразовыми блокнотами понимаются правила теоретически криптостойких шифров. А сам такой подход называется "наложением гаммы". Об одноразовых блокнотах можно почитать в большом количестве литературы, будь то известной или нет. Возьмём для разнообразия википедию.
Далее по книге я могу придраться к тому, что доподлинно неизвестно о применении шифра Скитала в Древней Спарте. Тут я отошлюсь уже к книге "История криптографии в Западной Европе в раннее новое время" (Русецкая). Но с учётом того, что я видел, на такие придирки я более не буду заострять внимание.
Начинается подраздел "Зачем выбирать шифр с секретным ключом?". Лично я бы ответил, что просто он быстрее, в некоторых задачах два ключа вовсе не нужны и способен выдержать постквантовую криптографию. В этом предложении должен был бы быть описан весь подраздел, но автор не так прост.
Для криптографии с открытым ключом (PKC) необходима инфраструктура открытых ключей. Должны существовать серверы открытых ключей, которые раздают открытые ключи потенциальным корреспондентам. Криптография с открытым ключом является мишенью самых разных атак с противником в середине или с подлогом, когда противник представляется отправителем, получателем или сервером распределения ключей. Поэтому для PKC необходима тщательная аутентификация и верификация. Лицо, запрашивающее открытый ключ, должно доказать свою принадлежность той же сети, что и получатель. Для сообщения, содержащего открытый ключ, необходимо проверить, что оно поступило от сервера. Получателя необходимо аутентифицировать как при первом размещении открытого ключа на сервере, так и при каждом последующем изменении. Если в сеть добавляется новая сторона, то авторизующее ее лицо должно быть аутентифицировано. Когда на сервер добавляется новая сторона, необходимо аутентифицировать все вовлеченные в процесс субъекты. Получатель должен проверять каждое полученное сообщение на предмет изменения или подмены третьей стороной. Все это приводит к обилию циркулирующих сообщений.
Для работы криптографии с секретным ключом все эти административные хлопоты не нужны.
Гениально. Нет асимметричной криптографии - нет проблем, силами симметричных криптосистем справимся. Далее аргументы вообще пушка.
Два человека могут обмениваться сообщениями, зашифрованными секретным ключом, ни привлекая никого постороннего и не пользуясь системой-посредником. Когда несколько человек обмениваются такими сообщениями, нужно проверить лишь, что каждая сторона располагает текущим ключом. Неавторизированное лицо не получит ключей и не сможет читать сообщения.
Я думаю надо пойти дальше и откатиться до первобытного общества. Там и симметричной криптографии не существовало, всё было безопасно, люди разговаривали глаз на глаз, без всяких этих ваших линий связи.
Далее у меня также ещё придирки появляются насчёт того, что асимметричная криптография не годится для шифрования файлов. Тут могу возразить ранцевыми алгоритмами, которые до сих пор пытаются модифицировать, потому что они быстрые, базируются на NP-сложной задаче и могут защищать теоретически даже от квантовых компьютеров. Тут конечно присутствует масса условностей, включая то, что на раннем этапе таковые шифры раскалывались как орешки, но всё же шифровать файлы становится вполне реально.
Когда нужно разослать сообщение сразу нескольким получателям, сделать это с помощью методов с секретным ключом просто. Нужно лишь, чтобы у каждой стороны был ключ.
Как понимаю, для автора удобнее хранить N*(N-1)/2 ключей, вместо 2N. Ну удобнее и удобнее, что тут бубнить. Переходим к подразделу "Зачем создавать собственный шифр?".
В 1975 году IBM предложила шифр, ныне известный под названием DES (Data Encryption Standard). Ему предстояло стать мировым стандартом шифрования с секретным ключом. Поначалу, на этапе проектирования, ключ в DES имел длину 64 бита. Агентство национальной безопасности (АНБ) потребовало уменьшить длину ключа до 56 бит, а оставшиеся 8 использовать как контрольную сумму. В этом не было никакого смысла. Если контрольная сумма так уж необходима, то следовало увеличить длину ключа с 64 до 72 бит. Многие считали, что истинная причина такого требования заключалась в том, что АНБ знало, как вскрывать шифр с 56-битовым ключом, а вот читать сообщения, зашифрованные 64-битовым ключом, не умело. Оказалось, что так оно и было.
Хотите пруфы? Не будет, сказано мимолётом. Если разбирать более детально данное суждение, то мы придём как раз к полностью противоположному мнению. При криптоанализе шифра DES Бихам и Шамир не смогли провести успешно дифферинциальный криптоанализ, который не был известен общественности в момент стандартизации шифра DES. При этом, шифр Люцифер, являющийся ранней версией шифра DES, подвергался данной атаке. Подобная атака базируется в первую очередь на S-блоках, которые были изменены на другие S-блоки вместе с ключом шифрования самим АНБ. Этот факт, по крайней мере, говорит о том, что шифр не был ориентирован на свою слабость, а скорее наоборот. При этом, даже после взлома DES перебором всех ключей, в самом алгоритме так и не было найдено способа взлома, который был бы лучше полного перебора, и не было найдено бэкдоров.
Всё, закончилась вторая глава.
Сказать, что желание читать у меня отпадало прямо пропорционально неструктуризированности и безграмотности самого материала - это значит ничего не сказать. С другой стороны, эту книгу я начинал уже читать just-for-fun, чтобы понять насколько глубока кроличья нора. Спойлер: глубока. Но дальше я думаю уже нет смысла объяснять сие произведение.
Заключение
Если бы я начал изучать криптографию по этой книге, то несомненно в моих мыслях было бы заложено много неверных фундаментов, которые бы мешали мне изучать криптографию по другим источникам, делая само обучение более сложной процедурой. Также у меня остаются сомнения, что найденные мною ошибки и неточности единственны в этих двух главах (не говоря вообще о всех главах), и если покопаться, то думаю можно найти ещё N-ое количество.
В итоге, хоть я и рассмотрел данную книгу исключительно со стороны критики (что я считаю справедливо), тем не менее, в ней всё равно остаются и присутствуют некоторые интересные моменты, хоть и не в плане базового изучения, но в плане закрытия белых пятен при более углубленном изучении.
Комментарии (19)
pyrk2142
00.00.0000 00:00+6Есть забавное предположение, что автора могли заставить написать книгу, он не хотел это делать, но не мог отказаться (потеряет работу, гранты, какие-то перспективы). А так написал книгу, она умеренно плохая, за это уже не карают, но заставлять ещё раз не будут. В некоторых наших универах и компаниях такое встречается, сделать плохо гораздо лучше для отношения с окружающими, чем не сделать вовсе.
А так книга - шедевр, спасибо за разбор, было интересно почитать. Я бы предложил сформулировать основные тезисы с самыми любыми косяками и отправить письма в универ, на работу автору книги, если не ответят - тегнуть в социальных сетях его коллег/представителей клмпвнии. Интересно, что они скажут.
FuzzyWorm
00.00.0000 00:00Могу предположить более простой вариант - автор, указанный на обложке, эту книгу не писал. Ему просто заплатили за имя, он пролистал книгу, увидел знакомые слова и не стал вычитывать.
Fedorkov
00.00.0000 00:00+5Есть вариант, что книгу вообще никто не писал.
Предчувствие будущего: фальшивые книги, победившие настоящий контент
Gummilion
00.00.0000 00:00+19Возможно, если взять первую букву с каждой страницы и применить определенный шифр Цезаря, можно получить объяснение автора, что его заставило написать эту книгу.
sshmakov
00.00.0000 00:00+1Из всех книг на фото читал, наверное, только "Книга шифров" a.k.a. Codebook. Всем рекомендую. И язык хороший, и погружение достаточное для общего понимания.
xi-tauw
00.00.0000 00:00+2Я не буду защищать автора книги, поскольку не читал, а некоторые перечисленные фрагменты действительно вызывают удивление. Но хочется отметить несколько моментов, которые могут оправдать некоторые из пассажей, просто, скажем так, они вызвали немного вьетнамских флешбеков.
С переводом терминов по криптографии очень часто возникает путаница. Дело в том, что уж очень не любят в английском языке слово crypt из-за связи с кладбищами. Вот и получается, что вместо понятной пары encrypt-decrypt используется encode-decode. Скорее всего переводчики поленились и перевели все с использованием слова "код".
Я встречал два определения симметричной криптографии: в одном один ключ и два тривиально выводимых алгоритма на шифрование и расшифровывание, в другом один алгоритм и два тривиально выводимых ключа. Для наглядности шифр Цезаря по первому будет иметь ключ 3 и алгоритмы в виде сдвига по алфавиту влево и сдвига по алфавиту вправо, а по второму: ключ 3 и ключ -3, а алгоритм просто сдвиг по алфавиту на число. Да, в любом случае, это все равно не похоже на асимметричную крипту, но я вполне допускаю, что это просто косноязычность + попытка смешать разные аксиоматики.
Блочный-блоковый, поточный-потоковый. Хоть и не аргумент, но все же, если обратимся к вики, то основные статьи Блочный шифр и Потоковый шифр, а уже "поточный шифр" перенаправляет на вторую. Так что, я бы тут не стал придираться.
nmrulin
00.00.0000 00:00+1"К сожалению, российская служба связи совершенно не отвечала предъявлявшимся к ней требованиям. Когда армии Раненкампфа и Самсонова оказались разделенными Мазурскими болотами и стали осуществлять связь друг с другом в основном по радио, выяснилось, что в армии Раненкампфа новый шифр получили и старый уничтожили, а у Самсонова все еще действовал старый шифр. В результате переговоры между ними некоторое время велись по радио в открытую. " - подобная же шизуха до сих пор случается. Например постоянно заменяют пароли , народ естественно кладёт болт и начинает писать его на бумажке.
18741878
00.00.0000 00:00+4Я ни разу не специалист по криптографии и купил эту книгу как раз для того, чтобы попробовать немного разобраться. Однако, даже мой совсем уж никакой уровень знаний в этой области оказался достаточным для того, чтобы закралось подозрение, что я читаю какую-то лажу.
Вижу, что так и есть. Не денег жалко. Жалко, что обманулся. Обычно "ДМК" выпускает книги весьма качественные и ответственно выбранные для перевода.P.S. Выпущенная этим же издательством манга по криптографии, не смотря на ее легкий жанр с картинками, и та, кажется, куда лучше
ForSokolov
00.00.0000 00:00+3Не по теме статьи, просто глаз зацепился:
В распоряжении армии Самсонова находилось немногим более шестисот километров провода, который был вскоре израсходован. Такое скудное обеспечение резко отличалось от снабжения вооруженных сил Англии и Франции, которые на Западном фронте ежедневно расходовали почти в десять раз больше провода.
Ежедневно почти 6 тысяч километров провода укладывали? Оо
chervital
00.00.0000 00:00+2Предположу, что имелось ввиду - союзники укладывали в 10 раз больше, чем наши за тот же период. Но сама фраза немного корявая, согласен.
kichrot
Вы не правы, когда противопоставляете криптографию и стенографию.
Криптография, как наука, включает в себя стенографию, как метод. Любая наука на практике реализуется через методы, которые эта наука анализирует и определяет.
Так, что стенография, это часть криптографии.
Number571 Автор
*Стеганографию
Криптография и стеганография - это разные науки, хоть и обе защищают информацию. Одна (криптография) защищает информацию посредством шифрования, когда существует факт сообщения, но смысл неясен. Другая (стеганография) защищает информацию посредством самого факта её сокрытия. Обе науки развивались иногда параллельно, иногда в синтезе. Но их даже теоретически нельзя связать, кроме того, что они защищают информацию. Плюс к этому криптография, вырадившись из своей классической оболочки, стала также способной не только предоставлять конфиденциальность информации, но также её целостность и аутентификацию. Стеганография в этом плане отстаёт, как в способах применения, так и на практике.
unC0Rr
У стеганографии так же есть применения, отличные от банального скрытия информации, включающие контроль целостности и аутентификацию.
neit_kas
Отстаёт не значит отсутствует. Если посмотреть на реальный мир, то стеганография в целом имеет более узкие и более специализированные сферы применения. Тот же контроль целостности, часто проще привинтить какую-нибудь контрольную сумму, а не страдать с контейнером. Да и аутентификация, стеганография - это больше о скрытых её способах, что чаще нужно каким-нибудь спецслужбам, но не для широкого использования.
0mogol0
на всякий случай добавлю, что стеганография - сообщение замаскированное в картинки или что-то подобное, совсем не то же самое, что стенография - метод ускоренной рукописной записи текста с помощью особых значков... ;-)