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

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

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

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

Итак, Алиса хочет отправить сообщение Бобу...

Симметричное шифрование

Итак, Алиса хочет отправить сообщение Бобу, но так, чтобы любопытная Ева не могла ознакомиться с его содержимым. Где и как будет передаваться сообщение - Алиса не знает, но знает, что Ева - особа крайне любопытная и при случае обязательно сунет нос в их с Бобом переписку.

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

Привет Боб

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

3/9 1/8 5/1 7/1 2/2 6/3 4/3 1/5 1/13

Теперь данное сообщение можно смело передавать по незащищенным каналам, но ни Боб, ни Ева не могут прочитать его, так как не владеют ключом. Что такое ключ? В нашем случае это вполне определенная страница вполне определенной книги. Даже зная каким именно текстом зашифровано это сообщение Ева не сможет его прочитать, пока точно не будет знать издание, так как в другой книге на указанной странице, в указанных позициях могут оказаться совсем иные буквы.

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

Ключ - основа секретности любого криптографического алгоритма и должен сохраняться в тайне.

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

Итак, Алиса успешно зашифровала сообщение и отправила его Бобу. Но возникает новая сложность - каким образом передать Бобу ключ?

Послать второй экземпляр книги по почте? Сообщить название и тип издания по телефону? Ни один из этих способов не дает гарантии, что ключ получит именно Боб и что он не станет известен Еве. Ведь располагая секретным ключом Ева не только может читать переписку Алисы и Боба, но и общаться с Бобом от имени Алисы, а с Алисой от имени Боба.

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

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

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

Алгоритм Диффи-Хеллмана

Передача ключа по незащищенному каналу была большой проблемой криптографии в XX веке. Действительно, возникал некий, неразрешимый на первый взгляд, парадокс: для защиты открытого канала стороны должны прежде обменяться секретной информацией, которую нельзя передавать по открытым каналам. Однако в 1976 году Уитфилдом Диффи и Мартином Хеллманом, а также независимо от них Ральфом Мерклом был предложен алгоритм, получивший впоследствии название алгоритм (протокол) Диффи-Хеллмана .

В основу данного алгоритма были положены односторонние вычисления, не вдаваясь в подробности можно сказать, что это такие математические преобразования, при которых выполнить исходное вычисление достаточно просто, а вот обратное преобразование будет невозможным, либо займет значительное количество времени.

Одним из таких преобразований являются вычисления по модулю и именно они и легли в основу данного алгоритма. Чтобы понять его суть, проведем следующую аналогию: односторонние вычисления можно сравнить со смешиванием краски, сделать это легко, а вот разделить полученную смесь на исходные составляющие чрезвычайно трудно, практически невозможно. Этим мы и воспользуемся.

Итак, Алиса хочет послать сообщение Бобу...

Для того, чтобы выработать общий секрет, который впоследствии будет использоваться в качестве ключа шифрования, Алиса и Боб договариваются о некотором общем цвете. Пусть это будет один из оттенков желтого, данная информация является общедоступной и может быть известна Еве.

Затем каждый добавляет к одной части общей краски часть секретной, которая известна только Алисе или только Бобу, в итоге получается некий промежуточный цвет, который можно отправить по открытому каналу другой стороне. Даже перехватив оба этих цвета и располагая сведениями об общем цвете Ева в разумный промежуток времени не сможет быстро восстановить исходные цвета Алисы и Боба.

В случае с вычислениями по модулю это потребует практически полного перебора всех возможных исходных значений, что способно занять очень много времени, особенно если исходные данные 1024 и 2048-битные числа.

В итоге, получив от другой стороны промежуточный цвет, Алиса и Боб снова добавляют туда одну часть своего секретного цвета, в итоге у каждого из них получится оттенок, который в равных частях содержит оба секретных и общий цвета. Но при этом никакая секретная информация по открытому каналу не передается! Таким образом Алиса и Боб оказываются владельцами общего секрета, который они могут использовать для шифрования переписки не боясь, что ее содержимое станет известно Еве.

Обратите внимание, что алгоритм Диффи-Хеллмана не является алгоритмом шифрования, а представляет только протокол обмена ключами. Полученный таким образом ключ может быть использован для шифрования по любым доступным сторонам алгоритмам.

Кроме очевидных достоинств, алгоритм Диффи-Хеллмана имеет и существенные недостатки, один из которых - отсутствие взаимной аутентификации сторон, т.е. у Алисы нет уверенности, что промежуточный цвет прислал ей именно Боб и наоборот. Это делает возможными атаки типа "человек посередине" о которых мы поговорим позже.

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

Асимметричное шифрование

Годом позже изобретения алгоритма Диффи-Хеллмана была представлена первая асимметричная система шифрования с открытым ключом - RSA. Можно сказать, что с этого момента произошло возникновение массовой криптографии в том виде, в котором мы ее знаем сейчас. Принципиальное отличие асимметричных систем состоит в создании ключевой пары: открытого и закрытого (приватного) ключей. Открытый ключ является общедоступным, но все что зашифровано с его помощью не может прочесть никто, кроме владельца закрытого ключа.

Вернемся к нашим героям.

Алиса генерирует ключевую пару и, поместив закрытый ключ в надежное хранилище, публикует открытый в виде сертификата. Сертификат, кроме собственно ключа, содержит ряд служебной информации, которая помогает определить личность владельца ключа, срок его действия и некоторые иные параметры. Никакой тайны данные сведения не составляют и наоборот являются общедоступными, в чем можно удостовериться, открыв для просмотра любой сертификат.

Боб, желая написать сообщение Алисе получает от нее сертификат и шифрует свое сообщение содержащимся в нем открытым ключом. Точно такой же сертификат может получить и Ева, но это не даст ей ничего, так как прочитать зашифрованное открытым ключом не может никто, кроме Алисы.

Чтобы отправить обратное сообщение можно воспользоваться аналогичной схемой: Алиса берет открытый ключ Боба... Но на практике данная схема не нашла своего применения по целому ряду причин. Одна из них - крайне низкая производительность асимметричных алгоритмов, вторая - необходимость формирования ключевой пары для всех участников переписки.

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

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

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

Но у данного подхода есть один существенный недостаток, так как сессионный ключ передается внутри зашифрованного канала, то в случае компрометации закрытого ключа Алисы любопытная Ева сможет расшифровать с его помощью все сессионные ключи, а затем прочитать всю перехваченную ею переписку. Чтобы этого избежать в настоящее время для формирования сессионного ключа используется алгоритм Диффи-Хеллмана, который позволяет создать общий секрет без передачи его по каналу связи.

Атака "Человек посередине"

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

Встречаем нового персонажа - Мэллори. Если Ева была просто любопытной особой, то Мэллори не только любопытная, но и деятельная. Когда Боб хочет отправить сообщение Алисе он обращается к ней за открытым ключом, Мэллори перехватывает это сообщение и отправляет Бобу собственный открытый ключ. После чего она обращается к Алисе и получив ее сертификат также устанавливает защищенный канал связи с ней.

Таким образом и Алиса, и Боб думают, что общаются друг с другом, у обоих имеется защищенное соединение, однако на самом деле их канал полностью контролирует Мэллори. Получив сообщение от Боба, зашифрованное сеансовым ключом Мэллори-Боб, она расшифровывает его, при необходимости изменяет, и, зашифровав сеансовым ключом Алиса-Мэллори отправляет уже Алисе. Это уже гораздо более серьезная уязвимость, так как позволяет не только перехватывать, но и изменять передаваемую в таком канале информацию.

В данном случае мы показали классический пример атаки на RSA, но точно таким же образом Мэллори может осуществить атаку и на алгоритм Диффи-Хеллмана.

Кто уязвим перед такого рода атаками? Прежде всего пользователи самоподписанных сертификатов. Существует распространенный миф, что шифрование при помощи таких сертификатов ненадежно, однако это не так, по стойкости шифра самоподписанные сертификаты не отличаются от тех, которые выдаются за деньги, но есть одна большая разница. Если мы не знаем, кто именно выпустил данный сертификат, то рискуем вместо сертификата Алисы принять сертификат от Мэллори со всеми вытекающими.

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

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

Удостоверяющий центр

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

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

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

В дальнейшем значение хэша кешируется и при последующих соединениях отпечаток ключа сервера сравнивается со значением из кеша. Поэтому получив повторно подобный запрос с иным значением хеша следует глубоко задуматься и незамедлительно начать расследование, так как изменение отпечатка говорит о том, что вы подключаетесь к иному узлу (либо администратор переустановил ОС или вручную перегенерировал ключи).

Понятно, что такой способ подходит только для служебных соединений, когда количество лиц, использующих его ограничено, все они знают друг друга лично и могут быстро удостовериться в подлинности отпечатка.

Также Алиса может выпустить и передать Бобу сертификат своего удостоверяющего центра (CA, Certification authority ), который содержит открытый ключ, позволяющий проверить подлинность любого выпущенного Алисой при помощи данного удостоверяющего центра сертификата. Здесь возникает еще один интересный момент. Сертификат CA не содержит секретных сведений, но его не следует передавать по незащищенным каналам, а также следует хранить его так, чтобы избежать доступа к нему третьих лиц.

Почему так? Весь вопрос в доверии, если Боб доверяет Алисе, то он доверяет ее УЦ, а установив сертификат УЦ он автоматически будет доверять любому выпущенному Алисой сертификату. Поэтому если Мэллори подменит сертификат "по дороге" или сделает это позже, в незащищенном хранилище, то Боб станет автоматически доверять сертификатам Мэллори, думая, что это сертификаты Алисы.

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

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

Как же быть? Выход прост: потребуется третья сторона, чей авторитет неоспорим и которая может выступить гарантом подлинности, скажем, нотариус.

Таким образом Алиса должна лично посетить нотариуса Трента, который сначала проверит личность Алисы, а затем заверит ее сертификат своей подписью. Получив такой сертификат Боб всегда может связаться с Трентом и получить от него образец подписи, который он может сравнить с тем, что на сертификате. Если подписи совпали, то данный сертификат действительно принадлежит Алисе, чему порукой авторитет Трента.

Если сертификат не содержит подписи Трента, то Боб не может проверить, принадлежит данный сертификат Алисе, либо это проделки Мэллори и поэтому, при невозможности точно проверить подлинность, такие (самоподписанные) сертификаты следует отклонять.

Может ли Мэллори подписать свой сертификат у Трента? Вполне, но она сможет подписать его только от своего имени и представиться Алисой у нее уже не получится.

В современной инфраструктуре открытых ключей (PKI, Public Key Infrastructure ) роль нотариуса Трента исполняют доверенные корневые центры сертификации, сертификаты которых поставляются в составе операционной системы и располагаются в защищенном хранилище.

Это означает, что система будет автоматически доверять сертификатам, которые имеют подписи данных удостоверяющих центров, но что означает это доверие? Здесь мы вплотную подошли к тому, какие бываю типы сертификатов и что они удостоверяют. Выделяют три основных типа сертификатов, которые различаются уровнем удостоверения владельца и, соответственно, стоимостью.

DV - Domain Validation - самый простой и недорогой вид сертификата, который можно получить очень быстро, а с некоторых пор и бесплатно. Данный вид сертификата всего лишь удостоверяет факт владения доменом, т.е. для его получения необходимо выполнить некоторые действия доступные только владельцу домена, например, разместить файл в определенном месте на сайте или ввести код отправленный на почтовый ящик, указанный во WHOIS.

Соединение с сайтом, использующим DV-сертификат выглядит следующим образом, а в поле Субъект сертификата находится только доменное имя:

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

Проще говоря, если Боб знает, что данный сайт принадлежит Алисе, то он может спокойно сообщать ему конфиденциальную информацию, а если он видит данный сайт в первый раз, то наличие защищенного соединения никоим образом доверия не добавит.

Несмотря на это, DV - самый распространенный и используемый в сети вид сертификатов. Он идеально подходит тем сайтам, которым не нужно удостоверять личность владельца, а всего лишь надо предоставить своим пользователям защищенный канал.

OV - Organization Validation - для получения данного сертификата требуется не только подтвердить факт владения доменом, но и факт существования компании владельца или личность физического лица. Это позволяет обеспечить дополнительный уровень доверия для сайтов, осуществляющих бизнес в сети.

Внешне соединение с таким сайтом ничем не отличается от сайта с DV-сертификатом, но поле Субъект содержит дополнительные сведения о владельце.

Данные сертификаты широко используются в бизнес-целях, когда требуется не только подтвердить факт безопасного соединения с данным ресурсом, но и факт его принадлежности определенной компании или физлицу. Так впервые попав на новый сайт Алисы и проверив поле субъект в OV-сертификате Боб может быть уверен, что принадлежит данный сайт именно Алисе, а не Еве или Мэллори.

Но опять-таки, наличие OV-сертификата никоим образом не способно оградить вас от мошенничества. Стоят такие сертификаты недорого, и никто не мешает фирме-однодневке приобрести его для использования в неблаговидных целях. В общем вопрос доверия и здесь остается открытым, а здоровая бдительность не должна притупляться фактом наличия OV-сертификата.

EV - Extended Validation - сертификат с расширенной проверкой, выдается только компаниям и только после ряда дополнительных проверок. В частности, проверяется не только факт существования компании, но и соответствие указанных сведений действительности, например, проверяется наличие компании по указанному адресу, принадлежность компании указанных телефонов и возможность по ним связаться и т.д., и т.п.

Соединение с сайтом владеющим таким сертификатом визуально отличается крупным указанием компании владельца прямо в адресной строке браузера, а также сообщением, что подлинность компании подтверждена. В поле Субъект также присутствуют дополнительные сведения.

Данный тип сертификата предусматривает гораздо более высокий уровень доверия. Например, Боб теперь может быть уверен, что данный сайт не просто принадлежит компании Алисы, но и если он пройдет по указанному в уставных документах адресу, то там он с большой вероятностью обнаружит указанную компанию и Алису собственной персоной.

Однако не следует впадать в эйфорию и читать EV-сертификат залогом добросовестности компании или высокого качества ее работы, он всего лишь подтверждает, что компания не только существует, но и ведет свою деятельность по указанным координатам, ни больше, ни меньше. Так наличие у Почты России DV-сертификата нисколько не уменьшит уровень доверия к ним, ровно как наличие у ООО "Рога и копыта" сертификата уровня EV доверия к ним не повысит.

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

  • Теги:

Please enable JavaScript to view the
  • Предисловие
  • Базовая терминология
  • Основные алгоритмы шифрования
  • Цифровые подписи
  • Криптографические хэш-функции

Предисловие

Разные люди понимают под шифрованием разные вещи. Дети играют в игрушечные шифры и секретные языки. Это, однако, не имеет ничего общего с настоящей криптографией. Настоящая криптография (strong cryptography ) должна обеспечивать такой уровень секретности, чтобы можно было надежно защитить критическую информацию от расшифровки крупными организациями --- такими как мафия, транснациональные корпорации и крупные государства. Настоящая криптография в прошлом использовалась лишь в военных целях. Однако сейчас, с становлением информационного общества, она становится центральным инструментом для обеспечения конфиденциальности.

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

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

Базовая терминология

Представьте, что вам надо отправить сообщение адресату. Вы хотите, чтобы никто кроме адресата не смог прочитать отправленную информацию. Однако всегда есть вероятность, что кто-либо вскроет конверт или перехватит электронное послание.

В криптографической терминологии исходное послание именуют открытым текстом (plaintext или cleartext ). Изменение исходного текста так, чтобы скрыть от прочих его содержание, называют шифрованием (encryption ). Зашифрованное сообщение называют шифротекстом (ciphertext ). Процесс, при котором из шифротекста извлекается открытый текст называют дешифровкой (decryption ). Обычно в процессе шифровки и дешифровки используется некий ключ (key ) и алгоритм обеспечивает, что дешифрование можно сделать лишь зная этот ключ.

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

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

Основные алгоритмы шифрования

Метод шифровки/дешифровки называют шифром (cipher ). Некоторые алгоритмы шифрования основаны на том, что сам метод шифрования (алгоритм) является секретным. Ныне такие методы представляют лишь исторический интерес и не имеют практического значения. Все современные алгоритмы используют ключ для управления шифровкой и дешифровкой; сообщение может быть успешно дешифровано только если известен ключ. Ключ, используемый для дешифровки может не совпадать с ключом, используемым для шифрования, однако в большинстве алгоритмов ключи совпадают.

Алгоритмы с использованием ключа делятся на два класса: симметричные (или алгоритмы секретным ключом) и асиметричные (или алгоритмы с открытым ключом). Разница в том, что симметричные алгоритмы используют один и тот же ключ для шифрования и для дешифрования (или же ключ для дешифровки просто вычисляется по ключу шифровки). В то время как асимметричные алгоритмы используют разные ключи, и ключ для дешифровки не может быть вычислен по ключу шифровки.

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

Ассиметричные шифры (также именуемые алгоритмами с открытым ключом, или --- в более общем плане --- криптографией с открытым ключом) допускают, чтобы открытый ключ был доступн всем (скажем, опубликован в газете). Это позволяет любому зашифровать сообщение. Однако расшифровать это сообщение сможет только нужный человек (тот, кто владеет ключом дешифровки). Ключ для шифрования называют открытым ключом , а ключ для дешифрования --- закрытым ключом или секретным ключом .

Современные алгоритмы шифровки/дешифровки достаточно сложны и их невозможно проводить вручную. Настоящие криптографические алгоритмы разработаны для использования компьютерами или специальными аппаратными устройствами. В большинстве приложений криптография производится программным обеспечением и имеется множество доступных криптографических пакетов.

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

Многие качественные криптографические алгоритмы доступны широко - в книжном магазине, библиотеке, патентном бюро или в Интернет. К широко известным симметричным алгоритмам относятся DES и IDEA, Наверное самым лучшим асимметричным алгоритмом является RSA. На страничке литературы приведен список хороших учебников по криптографии и смежным вопросам.

Цифровые подписи

Некоторые из асимметричных алгоритмов могут использоваться для генерирования цифровой подписи . Цифровой подписью называют блок данных, сгенерированный с использованием некоторого секретного ключа. При этом с помощью открытого ключа можно проверить, что данные были действительно сгенерированы с помощью этого секретного ключа. Алгоритм генерации цифровой подписи должен обеспечивать, чтобы было невозможно без секретного ключа создать подпись, которая при проверке окажется правильной.

Цифровые подписи используются для того, чтобы подтвердить, что сообщение пришло действительно от данного отправителя (в предположении, что лишь отправитель обладает секретным ключом, соответствующим его открытому ключу). Также подписи используются для проставления штампа времени (timestamp ) на документах: сторона, которой мы доверяем, подписывает документ со штампом времени с помошью своего секретного ключа и, таким образом, подтверждает, что документ уже существовал в момент, объявленный в штампе времени.

Цифровые подписи также можно использовать для удостоверения (сертификации --- to certify ) того, что документ принадлежит определенному лицу. Это делается так: открытый ключ и информация о том, кому он принадлежит подписываются стороной, которой доверяем. При этом доверять подписывающей стороне мы можем на основании того, что ее ключ был подписан третьей стороной. Таким образом возникает иерархия доверия. Очевидно, что некоторый ключ должен быть корнем иерархии (то есть ему мы доверяем не потому, что он кем-то подписан, а потому, что мы верим a-priori, что ему можно доверять). В централизованной инфраструктуре ключей имеется очень небольшое количество корневых ключей сети (например, облеченные полномочиями государственные агенства; их также называют сертификационными агенствами --- certification authorities ). В распределенной инфраструктуре нет необходимости иметь универсальные для всех корневые ключи, и каждая из сторон может доверять своему набору корневых ключей (скажем своему собственному ключу и ключам, ею подписанным). Эта концепция носит название сети доверия (web of trust ) и реализована, например, в PGP.

Цифровая подпись документа обычно создается так: из документа генерируется так называемый дайджест (message digest ) и к нему добавляется информация о том, кто подписывает документ, штамп времени и прочее. Получившаяся строка далее зашифровывается секретным ключом подписывающего с использованием того или иного алгоритма. Получившийся зашифрованный набор бит и представляет собой подпись. К подписи обычно прикладывается открытый ключ подписывающего. Получатель сначала решает для себя доверяет ли он тому, что открытый ключ принадлежит именно тому, кому должен принадлежать (с помощью сети доверия или априорного знания), и затем дешифрует подпись с помощью открытого ключа. Если подпись нормально дешифровалась, и ее содержимое соответствует документу (дайджест и др.), то сообщение считается подтвержденным.

Свободно доступны несколько методов создания и проверки цифровых подписей. Наиболее известным является алгоритм RSA.

Криптографические хэш-функции

Криптографические хэш-функции используются обычно для генерации дайджеста сообщения при создании цифровой подписи. Хэш-функции отображают сообщение в имеющее фиксированный размер хэш-значение (hash value ) таким образом, что все множество возможных сообщений распределяется равномерно по множеству хэш-значений. При этом криптографическая хэш-функция делает это таким образом, что практически невозможно подогнать документ к заданному хэш-значению.

Криптографические хэш-функции обычно производят значения длиной в 128 и более бит. Это число значительно больше, чем количество собщений, которые когда-либо будут существовать в мире.

Много хороших криптографических хэш-функций доступно бесплатно. Широко известные включают MD5 и SHA.

Криптографические генераторы случайных чисел

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

В идеале случайные числа должны основываться на настоящем физическом источнике случайной информации, которую невозможно предсказать. Примеры таких источников включают шумящие полупроводниковые приборы, младшие биты оцифрованного звука, интервалы между прерываниями устройств или нажатиями клавиш. Полученный от физического источника шум затем "дистиллируется" криптографической хэш-функцией так, чтобы каждый бит зависел от каждого бита. Достаточно часто для хранения случайной информации используется довольно большой пул (несколько тысяч бит) и каждый бит пула делается зависимым от каждого бита шумовой информаци и каждого другого бита пула криптографически надежным (strong ) способом.

Когда нет настоящего физического источника шума, приходится пользоваться псевдослучайными числами. Такая ситуация нежелательна, но часто возникает на компьютерах общего назначения. Всегда желательно получить некий шум окружения --- скажем от величины задержек в устройствах, цифры статистики использования ресурсов, сетевой статистики, прерываний от клавиатуры или чего-то иного. Задачей является получить данные, непредсказуемые для внешнего наблюдателя. Для достижения этого случайный пул должен содержать как минимум 128 бит настоящей энтропии.

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

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

Доступны несколько примеров криптографических генераторов случайных чисел.

Обеспечиваемая шифром степень защиты

Хорошие криптографические системы создаются таким образом, чтобы сделать их вскрытие как можно более трудным делом. Можно построить системы, которые на практике невозможно вскрыть (хотя доказать сей факт обычно нельзя). При этом не требуется очень больших усилий для реализации. Единственное, что требуется --- это аккуратность и базовые знания. Нет прощения разработчику, если он оставил возможность для вскрытия системы. Все механизмы, которые могут использоваться для взлома системы надо задокументировать и довести до сведения конечных пользователей.

Теоретически, любой шифровальный алгоритм с использованием ключа может быть вскрыт методом перебора всех значений ключа. Если ключ подбирается методом грубой силы (brute force ), требуемая мощность компьютера растет экспоненциально с увеличением длины ключа. Ключ длиной в 32 бита требует 2^32 (около 10^9) шагов. Такая задача под силу любому дилетанту и решается на домашнем компьютере. Системы с 40-битным ключом (например, экспортный американский вариант алгоритма RC4) требуют 2^40 шагов --- такие компьютерные мощности имеются в большинстве университетов и даже в небольших компаниях. Системы с 56-битными ключами (DES) требуют для вскрытия заметных усилий, однако могут быть легко вскрыты с помощью специальной аппаратуры. Стоимость такой аппаратуры значительна, но доступна для мафии, крупных компаний и правительств. Ключи длиной 64 бита в настоящий момент, возможно, могут быть вскрыты крупными государствами и уже в ближайшие несколько лет будут доступны для вскрытия преступными организацими, крупными компаниями и небольшими государствами. Ключи длиной 80 бит могут в будущем стать уязвимыми. Ключи длиной 128 бит вероятно останутся недоступными для вскрытия методом грубой силы в обозримом будущем. Можно использовать и более длинные ключи. В пределе нетрудно добиться того, чтобы энергия, требуемая для вскрытия (считая, что на один шаг затрачивается минимальный квантовомеханический квант энергии) превзойдет массу солнца или вселенной.

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

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

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

Чтобы дать представление о степени сложности вскрытия RSA, скажем, что модули длиной 256 бит легко факторизуются обычными программистами. Ключи в 384 бита могут быть вскрыты исследовательской группой университета или компании. 512-битные ключи находятся в пределах досягаемости крупных государств. Ключи длиной в 768 бит вероятно не будут надежны продолжительное время. Ключи длиной в 1024 бит могут считаться безопасными до тех пор, пока не будет существенного прогресса в алгоритме факторизации; ключи длиной в 2048 большинство считает надежными на десятилетия. Более подробную информацию о длинах ключей RSA можно почерпнуть из статьи Брюса Шнайера (Bruce Scheier).

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

Криптоанализ и атаки на криптосистемы

Криптоанализ - это наука о дешифровке закодированных сообщений не зная ключей. Имеется много криптоаналитических подходов. Некоторые из наиболее важных для разработчиков приведены ниже.

  • Атака со знанием лишь шифрованного текста (ciphertext-only attack ): Это ситуация, когда атакующий не знает ничего о содержании сообщения, и ему приходтся работать лишь с самим шифрованным текстом. На практике, часто можно сделать правдоподобные предположения о структуре текста, поскольку многие сообщения имеют стандартные заголовки. Даже обычные письма и документы начинаются с легко предсказумой информации. Также часто можно предположить, что некоторый блок информации содержит заданное слово.
  • Атака со знанием содержимого шифровки (known-plaintext attack ): Атакующий знает или может угадать содержимое всего или части зашифрованного текста. Задача заключается в расшифровке остального сообщения. Это можно сделать либо путем вычисления ключа шифровки, либо минуя это.
  • Атака с заданным текстом (chosen-plaintext attack ): Атакующий имеет возможнот получить шифрованный документ для любого нужного ему текста, но не знает ключа. Задачей является нахождение ключа. Некоторые методы шифрования и, в частности, RSA, весьма уязвимы для атак этого типа. При использовании таких алгоритмов надо тщательно следить, чтобы атакующий не мог зашифровать заданный им текст.
  • Атака с подставкой (Man-in-the-middle attack ): Атака направлена на обмен шифрованными сообщениями и, в особенности, на протокол обмена ключами. Идея заключается в том, что когда две стороны обмениваются ключами для секретной коммуникации (например, используя шифр Диффи-Хелмана, Diffie-Hellman), противник внедряется между ними на линии обмена сообщениями. Далее противник выдает каждой стороне свои ключи. В результате, каждая из сторон будет иметь разные ключи, каждый из которых известен противнику. Теперь противник будет расшифровывать каждое сообщение своим ключом и затем зашифровывать его с помощью другого ключа перед отправкой адресату. Стороны будут иметь иллюзию секретной переписки, в то время как на самом деле противник читает все сообщения.

Одним из способов предотвратить такой тип атак заключается в том, что стороны при обмене ключами вычисляют криптографическую хэш-функцию значения протокола обмена (или по меньшей мере значения ключей), подписывают ее алгоритмом цифровой подписи и посылают подпись другой стороне. Получатель проверит подпись и то, что значение хэш-функции совпадает с вычисленным значением. Такой метод используется, в частности, в системе Фотурис (Photuris).

    Атака с помощью таймера (timing attack ): Этот новый тип атак основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в стенень по модулю целого числа. Ей подвержены по крайней мере следующие шифры: RSA, Диффи-Хеллман и метод эллиптических кривых. В статье Пола Кочера подробно рассмотрен этот метод.

Имеется множество других криптографических атак и криптоаналитических подходов. Однако приведенные выше являются, по-видимому, наиболее важными для практической разработки систем. Если кто-либо собирается создавать свой алгоритм шифрования, ему необходимо понимать данные вопросы значительно глубже. Одно из мест, где можно начать систематическое изучение информации --- это замечательная книга Брюса Шнейера "Прикладная криптография" (Bruce Schneier, Applied Cryptography).

Перевод статьи Tatu Ylonen "Introduction to Cryptography"

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

Предмет криптографии.
Что же является предметом криптографии? Для ответа на этот вопрос вернемся к задаче ТП, чтобы уточнить ситуацию и используемые понятия.

Прежде всего заметим, что эта задача возникает только для информации, которая нуждается в защите. Обычно в таких случаях говорят, что информация содержит тайну или является защищаемой, приватной, конфиденциальной, секретной. Для наиболее типичных, часто встречающихся ситуаций такого типа введены даже специальные понятия:
- государственная тайна;
- военная тайна;
- коммерческая тайна;
- юридическая тайна;
- врачебная тайна и т. д.

Далее мы будем говорить о защищаемой информации, имея в виду следующие признаки такой информации:
- имеется какой-то определенный круг законных пользователей, которые имеют право владеть этой информацией;
- имеются незаконные пользователи, которые стремятся овладеть этой информацией с тем. чтобы обратить ее себе во благо, а законным пользователям во вред.

Для простоты мы вначале ограничимся рассмотрением только одной угрозы - угрозы разглашения информации. Существуют и другие угрозы для защищаемой информации со стороны незаконных пользователей: подмена, имитация и др. О них мы поговорим ниже.

Оглавление
Предисловия
Глава 1. Основные понятия криптографии
§1. Введение
§2. Предмет криптографии
§3. Математические основы
§4. Новые направления
§5. Заключение
Глава 2. Криптография и теория сложности
§1. Введение
§2. Криптография и гипотеза Р = NP
§3. Односторонние функции
§4. Псевдослучайные генераторы
§5. Доказательства с нулевым разглашением
Глава 3. Криптографические протоколы
§1. Введение
§2. Целостность. Протоколы аутентификации и электронной подписи
§3. Неотслеживаемость. Электронные деньги
§4. Протоколы типа «подбрасывание монеты по телефону»
§5. Еще раз о разделении секрета
§6. Поиграем в «кубики». Протоколы голосования
§7. За пределами стандартных предположений. Конфиденциальная передача сообщений
§8. Вместо заключения
Глава 4. Алгоритмические проблемы теории чисел
§1. Введение
§2. Система шифрования RSA
§3. Сложность теоретико-числовых алгоритмов
§4. Как отличить составное число от простого
§5. Как строить большие простые числа
§6. Как проверить большое число на простоту
§7. Как раскладывают составные числа на множители
§8. Дискретное логарифмирование
§9. Заключение
Глава 5. Математика разделения секрета
§1. Введение
§2. Разделение секрета для произвольных структур доступа
§3. Линейное разделение секрета
§4. Идеальное разделение секрета и матроиды
Глава 6. Компьютер и криптография
§1. Вместо введения
§2. Немного теории
§3. Как зашифровать файл?
§4. Поучимся на чужих ошибках
§5. Вместо заключения
Глава 7. Олимпиады по криптографии для школьников
§1. Введение
§2. Шифры замены
§3. Шифры перестановки
§4. Многоалфавитные шифры замены с периодическим ключом
§5. Условия задач олимпиад по математике и криптографии
§6. Указания и решения
Приложение А. Отрывок из статьи К. Шеннона «Теория связи в секретных системах»
Приложение Б. Аннотированный список рекомендованной литературы
Приложение В. Словарь криптографических терминов
Алфавитный указатель русскоязычных терминов
Алфавитный указатель англоязычных терминов.

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Введение в криптографию, Ященко В.В., 2012 - fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.

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

Криптосистемы

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

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

Методология с использованием ключа

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

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

Другой проблемой является аутентификация. При этом существуют две серьезных проблемы:

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

    Когда участники взаимодействия получают ключи, откуда они могут узнать, что эти ключи на самом деле были созданы и посланы уполномоченным на это лицом?

Существуют две методологии с использованием ключей ‑ симметричная (с секретным ключом) и асимметричная (с открытым ключом). Каждая методология использует свои собственные процедуры, свои способы распределения ключей, типы ключей и алгоритмы шифрования и расшифровки ключей. Так как терминология, используемая этими методологиями, может показаться непонятной, дадим определения основным терминам:

Термин

Значение

Замечания

Симметричная методология

Используется один ключ, с помощью которого производится как шифрование, так и расшифровка с использованием одного и того же алгоритма симметричного шифрования.

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

Часто называется методологией с секретным ключом.

Асимметричная методология

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

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

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

Часто называется методологией с открытым ключом

Секретный ключ(1)

Симметричная методология

Используется один ключ, с помощью которого производится как шифрование, так и расшифровка. См. выше

Секретный ключ(2)

Секретный ключ симметричного шифрования

Симметричный секретный ключ

Секретный ключ(3)

Секретный ключ асимметричного шифрования

Асимметричный секретный ключ.

Асимметричные ключи создаются парами, так как связаны друг с другом. Выражение «секретный ключ» часто используют для одного из пары асимметричных ключей, который должен держаться в секрете.

Асимметричный секретный ключ не имеет ничего общего с симметричным секретным ключом.

Открытый ключ (1)

Асимметричная методология

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

Открытый ключ (2)

Открытый ключ асимметричного шифрования

Асимметричные ключи создаются парами, каждый из двух ключей связан с другим.

Выражение «открытый ключ» часто используют для одного из пары асимметричных ключей, который должен быть всем известен.

Сеансовый ключ

Симметричный (секретный) ключ шифрования

Используется в асимметричной методологии для шифрования самих данных с помощью симметричных методологий.

Это просто симметричный секретный ключ (см. выше)

Алгоритм шифрования

Математическая формула

Для симметричных алгоритмов требуются симметричные ключи.

Для асимметричных алгоритмов требуются асимметричные ключи.

Вы не можете использовать симметричные ключи для асимметричных алгоритмов и наоборот.

Секретные криптосистемы

Открытые криптосистемы

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

Используют симметричные алгоритмы и симметричные (секретные) ключи для шифрования данных.

Защита информации ‑ совокупность мероприятий, методов и средств, обеспечивающих:

    исключение несанкционированного доступа к ресурсам ЭВМ, программам и данным;

    проверку целостности информации;

    исключение несанкционированного использования программ (защита программ от копирования).

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

Испытанный метод защиты информации от несанкционированного доступа ‑ шифрование (криптография).

С помощью криптографических методов возможно:

    шифрование информации;

    реализация электронной подписи;

    распределение ключей шифрования;

    защита от случайного или умышленного изменения информации.

К алгоритмам шифрования предъявляются определенные требования:

    высокий уровень защиты данных против дешифрования и возможной модификации;

    защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Киркхоффа);

    малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект «обвала»);

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

    экономичность реализации алгоритма при достаточном быстродействии;

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

Симметричные алгоритмы шифрования

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

Обмен информацией осуществляется в 3 этапа:

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

    отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;

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

Потоковые шифры

В потоковых шифрах, т. е. при шифровании потока данных, каждый бит исходной информации шифруется независимо от других с помощью гаммирования.

Гаммирование ‑ наложение на открытые данные гаммы шифра (случайной или псевдослучайной последовательности единиц и нулей) по определенному правилу. Обычно используется «исключающее ИЛИ», называемое также сложением по модулю 2 и реализуемое в ассемблерных программах командой XOR. Для расшифровывания та же гамма накладывается на зашифрованные данные.

При однократном использовании случайной гаммы одинакового размера с зашифровываемыми данными взлом кода невозможен (так называемые криптосистемы с одноразовым или бесконечным ключом). В данном случае «бесконечный» означает, что гамма не повторяется. В некоторых потоковых шифрах ключ короче сообщения. Так, в системе Вернама для телеграфа используется бумажное кольцо, содержащее гамму. Конечно, стойкость такого шифра не идеальна.

Понятно, что обмен ключами размером с шифруемую информацию не всегда уместен. Поэтому чаще используют гамму, получаемую с помощью генератора псевдослучайных чисел (ПСЧ). В этом случае ключ ‑ порождающее число (начальное значение, вектор инициализации, initializing value, IV) для запуска генератора ПСЧ. Каждый генератор ПСЧ имеет период, после которого генерируемая последовательность повторяется. Очевидно, что период псевдослучайной гаммы должен превышать длину шифруемой информации.

Генератор ПСЧ считается корректным, если наблюдение фрагментов его выхода не позволяет восстановить пропущенные части или всю последовательность при известном алгоритме, но неизвестном начальном значении. При использовании генератора ПСЧ возможны несколько вариантов:

    Побитовое шифрование потока данных. Цифровой ключ используется в качестве начального значения генератора ПСЧ, а выходной поток битов суммируется по модулю 2 с исходной информацией. В таких системах отсутствует свойство распространения ошибок.

    Побитовое шифрование потока данных с обратной связью по шифротексу. Такая система аналогична предыдущей, за исключением того, что шифротекст возвращается в качестве параметра в генератор ПСЧ. Характерно свойство распространения ошибок. Область распространения ошибки зависит от структуры генератора ПСЧ.

    Побитовое шифрование потока данных с обратной связью по исходному тексту. Базой генератора ПСЧ является исходная информация. Характерно свойство неограниченного распространения ошибки.

    Побитовое шифрование потока данных с обратной связью по шифротексту и по исходному тексту.

К наиболее известным потоковым шрифтам относятся:

    RC4 (Rivest Cipher 4), разработанный Р. Ривестом, в этом шифре может использоваться ключ переменной длины;

    SEAL (Software Encryption Algorithm) – приспособленный для программной реализации потоковый шрифт, использующий ключ длиной 160 бит;

    WAKE (Word Auto Key Encryption) ‑ шифрование слов с автоключом, был предложен Дэвидом Уилером.

Блочные шифры

При блочном шифровании информация разбивается на блоки фиксированной длины и шифруется поблочно. Блочные шифры бывают двух основных видов:

    шифры перестановки (transposition, permutation, P-блоки);

    шифры замены (подстановки, substitution, S-блоки).

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

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

    моноалфавитные (код Цезаря);

    полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma).

В моноалфавитных шифрах замены буква исходного текста заменяется на другую, заранее определенную букву. Например, в коде Цезаря буква заменяется на букву, отстоящую от нее в латинском алфавите на некоторое число позиций. Очевидно, что такой шифр взламывается совсем просто. Нужно подсчитать, как часто встречаются буквы в зашифрованном тексте, и сопоставить результат с известной для каждого языка частотой встречаемости букв.

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

В современных криптографических системах, как правило, используют оба способа шифрования (замены и перестановки). Такой шифратор называют составным. Он более стойкий, чем шифратор, использующий только замены или перестановки.

Блочное шифрование можно осуществлять двумя способами:

    Без обратной связи. Несколько битов (блок) исходного текста шифруются одновременно, и каждый бит исходного текста влияет на каждый бит шифротекста. Однако взаимного влияния блоков нет, то есть два одинаковых блока исходного текста будут представлены одинаковым шифротекстом. Поэтому подобные алгоритмы можно использовать только для шифрования случайной последовательности битов (например, ключей). Примерами являются DES в режиме ECB (Electronic Code Book) и ГОСТ 28147-89 в режиме простой замены.

    С обратной связью. Обычно обратная связь организуется так: предыдущий шифрованный блок складывается по модулю 2 с текущим блоком. В качестве первого блока в цепи обратной связи используется инициализирующее значение. Ошибка в одном бите влияет на два блока ‑ ошибочный и следующий за ним. Пример ‑ DES в режиме CBC (Cipher Block Chaining).

Генератор псевдослучайных чисел может применяться и при блочном шифровании:

    Поблочное шифрование потока данных. Шифрование последовательных блоков (подстановки и перестановки) зависит от генератора ПСЧ, управляемого ключом.

    Поблочное шифрование потока данных с обратной связью. Генератор ПСЧ управляется шифрованным или исходным текстом или обоими вместе.

Весьма распространен федеральный стандарт США DES (Data Encryption Standard), на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (American National Standards Institute, ANSI) и рекомендован для применения Американской ассоциацией банков (American Bankers Association, ABA). DES предусматривает 4 режима работы:

    ECB (Electronic Codebook) электронный шифрблокнот;

    CBC (Cipher Block Chaining) цепочка блоков;

    CFB (Cipher Feedback) обратная связь по шифротексту;

    OFB (Output Feedback) обратная связь по выходу.

ГОСТ 28147-89 ‑ отечественный стандарт на шифрование данных. Стандарт включает три алгоритма зашифровывания (расшифровывания) данных: режим простой замены, режим гаммирования, режим гаммирования с обратной связью и режим выработки имитовставки.

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

Алгоритмы шифрования ГОСТ 28147-89 обладают достоинствами других алгоритмов для симметричных систем и превосходят их своими возможностями. Так, ГОСТ 28147-89 (256-битовый ключ, 32 цикла шифрования) по сравнению с такими алгоритмами, как DES (56-битовый ключ, 16 циклов шифрования) и FEAL-1 (64-битовый ключ, 4 цикла шифрования) обладает более высокой криптостойкостью за счет более длинного ключа и большего числа циклов шифрования.

Следует отметить, что в отличие от DES, у ГОСТ 28147-89 блок подстановки можно произвольно изменять, то есть он является дополнительным 512-битовым ключом. Алгоритмы гаммирования ГОСТ 28147-89 (256-битовый ключ, 512-битовый блок подстановок, 64-битовый вектор инициализации) превосходят по криптостойкости и алгоритм B-Crypt (56-битовый ключ, 64-битовый вектор инициализации). Достоинствами ГОСТ 28147-89 являются также наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.

Блочные алгоритмы могут использоваться и для выработки гаммы. В этом случае гамма вырабатывается блоками и поблочно складывается по модулю 2 с исходным текстом. В качестве примера можно назвать B-Crypt, DES в режимах CFB и OFB, ГОСТ 28147-89 в режимах гаммирования и гаммирования c обратной связью.

Асимметричные алгоритмы шифрования

В асимметричных алгоритмах шифрования (или криптографии с открытым ключом) для зашифровывания информации используют один ключ (открытый), а для расшифровывания ‑ другой (секретный). Эти ключи различны и не могут быть получены один из другого. Схема обмена информацией такова:

    получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным (сообщает отправителю, группе пользователей сети, публикует);

    отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;

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

К наиболее известным ассиметричным криптографическим системам относятся:

    RSA защищен патентом США N 4405829. Разработан в 1977 году в Массачусетском технологическом институте (США). Получил название по первым буквам фамилий авторов (Rivest, Shamir, Adleman). Криптостойкость основана на вычислительной сложности задачи разложения большого числа на простые множители;

    ElGamal ‑ разработан в 1985 году. Назван по фамилии автора ‑ Эль-Гамаль. Используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Криптостойкость основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях;

Сравнение симметричных и асимметричных алгоритмов шифрования

В асимметричных системах необходимо применять длинные ключи (512 битов и больше). Длинный ключ резко увеличивает время шифрования. Кроме того, генерация ключей весьма длительна. Зато распределять ключи можно по незащищенным каналам.

В симметричных алгоритмах используют более короткие ключи, т. е. шифрование происходит быстрее. Но в таких системах сложно распределение ключей.

Поэтому при проектировании защищенной системы часто применяют и симметричные, и асимметричные алгоритмы. Так как система с открытыми ключами позволяет распределять ключи и в симметричных системах, можно объединить в системе передачи защищенной информации асимметричный и симметричный алгоритмы шифрования. С помощью первого рассылать ключи, вторым же ‑ собственно шифровать передаваемую информацию.

Обмен информацией можно осуществлять следующим образом:

    получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;

    отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному каналу;

    получатель получает сеансовый ключ и расшифровывает его, используя свой секретный ключ;

    отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;

    получатель получает сообщение и расшифровывает его.

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

Проверка подлинности информации. Электронная цифровая подпись

При передаче информации должны быть обеспечены вместе или по отдельности:

      Конфиденциальность (privacy) ‑ злоумышленник не должен иметь возможности узнать содержание передаваемого сообщения.

      Подлинность (authenticity), которая включает два понятия

    целостность (integrity) ‑ сообщение должно быть защищено от случайного или умышленного изменения;

Шифрование может обеспечить конфиденциальность, а в некоторых системах и целостность. Целостность сообщения проверяется вычислением контрольной функции (check function) от сообщения ‑ некоего числа небольшой длины. Эта контрольная функция должна с высокой вероятностью изменяться даже при малых изменениях сообщения (удаление, включение, перестановки или переупорядочивание информации). Называют и вычисляют контрольную функцию по-разному:

    код подлинности сообщения (Message Authentical Code, MAC);

    квадратичный конгруэнтный алгоритм (Quadratic Congruentical Manipulation Detection Code, QCMDС);

    Manipulation Detection Code (MDС);

    Message Digest Algorithm (MD5);

    контрольная сумма;

    символ контроля блока (Block Check Character, BCC);

    циклический избыточный код (ЦИК, Cyclic Redundancy Check, CRC);

    хеш-функция (hash);

    имитовставка в ГОСТ 28147-89;

    алгоритм с усечением до n битов (n-bit Algorithm with Truncation).

При вычислении контрольной функции может использоваться какой-либо алгоритм шифрования. Возможно шифрование самой контрольной суммы. Широко применяется цифровая подпись (цифровое дополнение к передаваемой информации, гарантирующее целостность последней и позволяющее проверить ее авторство).

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

Назначение ЭЦП. Цифровая подпись предназначена для аутентификации лица, подписавшего электронный документ. Кроме этого, использование цифровой подписи позволяет осуществить:

    Контроль целостности передаваемого документа. При любом случайном или преднамеренном изменении документа изменится подпись, следовательно, она станет недействительной.

    Защиту от изменений (подделки) документа.

Все эти свойства ЭЦП позволяют использовать её для следующих целей:

    Декларирование товаров и услуг (таможенные декларации).

    Регистрация сделок по объектам недвижимости.

    Использование в банковских системах.

    Электронная торговля и госзаказы.

    Контроль исполнения государственного бюджета.

    В системах обращения к органам власти.

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

    Организация юридически значимого электронного документооборота.

    В расчетных и трейдинговых системах.

Известны модели цифровой подписи (digital signature) на основе алгоритмов симметричного шифрования, но при использовании систем с открытыми ключами цифровая подпись осуществляется более удобно.

Для использования алгоритма RSA сообщение следует сжать функцией хеширования (алгоритм MD5 ‑ Message Digest Algorithm) до 256-битового хеша (H). Сигнатура сообщения S вычисляется следующим образом:

Сигнатура пересылается вместе с сообщением. Процесс идентификации заключается в получении хеш-функции сообщения (H) и сравнении с

где H ‑ хеш сообщения,

S ‑ его сигнатура,

d ‑ секретный ключ,

e ‑ открытый ключ.

Проверке подлинности посвящены стандарты:

    проверка подлинности (аутентификация, authentication) - ISO 8730-90, ISO/IES 9594-90 и ITU X.509; (ISO - Международная организация по стандартизации /МОС/, ITU - Международный союз электросвязи /МСЭ/.)

    целостность - ГОСТ 28147-89, ISO 8731-90;

    цифровая подпись - ISO 7498, P 34.10-94 (Россия), DSS (Digital Signature Standard, США).

CryptoAPI операционной системы windows

Криптографический интерфейс приложений операционной системы Windows представляет собой набор констант, типов данных и функций, предназначенных для выполнения операций шифрования, расшифрования, получения и проверки ЭЦП, генерации, хранения и распределения ключей шифрования. Эти услуги для приложений предоставляют провайдеры криптографического обслуживания (Cryptographic Service Provider, CSP) ‑ динамически компонуемые библиотеки (DLL), экспортирующие единый набор объектов, определяемый интерфейсом CryptoAPI.

Взаимодействие между приложением и CSP строится на основе следующих принципов:

    приложение не имеет прямого доступа к изготовлению и хранению ключей шифрования (нет риска их потери из-за ошибок в приложении);

    приложение не определяет детали выполнения криптографических операций, а лишь указывает на требуемые от CSP действия (например, зашифровать по заданному алгоритму данные и получить для них ЭЦП);

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

На рисунке приведена архитектура криптографической подсистемы Windows. Вызовы функций CryptoAPI обрабатываются модулем операционной системы advapi32.dll, который преобразует их в вызовы функций интерфейса провайдера криптографического обслуживания (Cryptographic Service Provider Interface, CryptoSPI). Для обеспечения аутентичности и подлинности CSP он снабжается ЭЦП, которая периодически проверяется операционной системой в ходе сеанса работы пользователя. Получение ЭЦП производится корпорацией Microsoft на основе хеш-значения CSP, представленного изготовителем этой библиотеки.

Каждый CSP характеризуется своим присвоенным производителем именем и типом, определяющим поддерживаемые этим провайдером криптографические алгоритмы.

К основным атрибутам CSP относятся:

    обязательно поддерживаемый алгоритм ЭЦП (всегда единственный);

    длина ключей асимметричного шифрования;

    формат ЭЦП;

    форматы блоков, в которых открытый и (возможно) секретный ключи асимметричного шифрования экспортируются из CSP;

    возможно поддерживаемый алгоритм обмена сеансовыми ключами симметричного шифрования (всегда единственный);

    возможно поддерживаемые алгоритмы симметричного шифрования (конкретный CSP может поддерживать только часть таких алгоритмов, определенных для соответствующего типа криптопровайдера);

    схема генерации сеансового ключа из хеш-значения;

    длины сеансовых ключей (в зависимости от алгоритма);

    формат блока сеансового ключа при его экспорте из CSP;

    режимы симметричного шифрования, принятые по умолчанию.

Информация об установленных на компьютере криптопровайдерах содержится в реестре Windows в разделе

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults. В подразделе Provider размещается информация о пути к библиотеке, ЭЦП и типе каждого CSP (по его имени), а в подразделе Provider Types ‑ сведения о полных именах криптопровайдера и его типе.

Для каждого зарегистрированного у него пользователя или конкретного приложения CSP хранит контейнер ключей асимметричного шифрования, который может включать в себя две пары ключей ‑ открытый и секретный ключи для обмена сеансовыми ключами, а также открытый и секретный ключи для ЭЦП. Ключи симметричного шифрования не сохраняются CSP и об их сохранении должно позаботиться приложение.

Существуют две версии CryptoAPI: 1.0 и 2.0. В CryptoAPI 2.0 введены дополнительные функции для поддержки инфраструктуры открытых ключей. Дополнительные функции CryptoAPI 2.0 используют вызовы функций CryptoAPI 1.0, функций CryptoAPI 1.0 приведены в таблице ниже.

Название функции

Краткое описание функции

CryptAcquireContext CryptReleaseContext

Получение и освобождение дескриптора CSP

CryptGetProvParam CryptSetProvParam

Получение и установка атрибутов CSP

CryptSetProvider

Установка используемого по умолчанию CSP

CryptGenKey CryptDestroyKey

Создание ключей шифрования и освобождение их дескрипторов

Создание сеансового ключа из хеш-значения

CryptExportKey CryptlmportKey

Экспорт и импорт ключа шифрования в CSP

Получение дескриптора открытого ключа

CryptGetKeyParam CryptSetKeyParam

Получение и установка параметров ключа шифрования

CryptEncrypt CryptDecrypt

Симметричное шифрование и расшифрование данных

CryptCreateHash CryptDestroyHash

Создание пустого хеш-значения и освобождение его дескриптора

CryptHashData CryptHashSessionKey

Хеширование (добавление к хеш-значению) произвольных данных и сеансового ключа

CryptGetHashParam CryptSetHashParam

Получение и установка параметров хеш-значения

CryptVerifySignature

Получение и проверка ЭЦП

Генерация случайного значения

Для возможности доступа пользователя или его приложения к услугам, предоставляемым конкретным CSP, необходимо создать для этого субъекта пустой контейнер ключей (иначе говоря, зарегистрировать его у этого криптопровайдера). После этого в начале каждого сеанса работы с CSP приложение должно получить у криптопровайдера дескриптор контейнера ключей соответствующего субъекта. Создание контейнера ключей и получение его дескриптора выполняются с помощью функции CryptoAPI CryptAcquireContext.

В защищенных версиях операционной системы Windows для создания нового контейнера ключей приложение должно иметь полномочия администратора (требуется запись в раздел реестра HKEY_LOCAL_MACHINE). Полученный дескриптор контейнера ключей должен указываться приложением при вызове других функций CryptoAPI. Для освобождения дескриптора контейнера ключей, полученного с помощью функции CryptAcquireContext, предназначена функция CryptoAPI CryptReleaseContext.

Вместе с любой версией Windows поставляется криптопровайдер «Microsoft Base Cryptographic Provider vl.0». Начиная с версий Windows 2000/МЕ, в состав операционных систем Windows включаются также криптопровайдеры «Microsoft Enhanced Cryptographic Provider vl.0» и «Microsoft Strong Cryptographic Provider». Криптопровайдер «Microsoft Enhanced Cryptographic Provider vl.0» может быть установлен на компьютерах под управлением операционных систем Windows 9x путем загрузки с веб-сервера Microsoft.

Криптопровайдер «Microsoft Base Cryptographic Provider vl.0» использует ключи асимметричного шифрования длиной 512 бит и ключи симметричного шифрования по алгоритмам RC2 и RC4 длиной 40 бит, что недостаточно на современном уровне развития компьютерных технологий. Криптопровайдеры «Microsoft Enhanced Cryptographic Provider vl.0» и «Microsoft Strong Cryptographic Provider» используют ключи асимметричного шифрования длиной 1024 бита и ключи симметричного шифрования длиной 56 (DES), 128 (RC2 и RC4) и 168 (3-DES) бит.

Существуют криптопровайдеры, в которых реализованы алгоритмы симметричного шифрования и ЭЦП, соответствующие российским стандартам в области информационной безопасности (ГОСТ 28147-89, ГОСТ Р 34.10-94, ГОСТ Р 34.10-2001 и ГОСТ Р 34.11-94). Примером такого криптопровайдера является средство криптографической защиты информации «КриптоПро CSP».

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

Защита документов Microsoft Office от несанкционированного доступа

Защита документов Microsoft Office от несанкционированного доступа основана на их шифровании с помощью вызова соответствующих функций CryptoAPI. При установке защиты пользователю предлагается ввести пароль доступа к защищаемому документу, из которого будет сгенерирован сеансовый ключ шифрования этого документа. При попытке в дальнейшем открыть защищаемый документ потребуется ввод пароля доступа, на основании которого произойдут генерация сеансового ключа и расшифрование документа.

В текстовом процессоре Microsoft Word (версия Microsoft Office ХР и старше) установка защиты от несанкционированного доступа к редактируемому документу выполняется с помощью команды меню Сервис\Параметры\Безопасность. Кнопка «Дополнительно» позволяет установить параметры шифрования документа:

    тип шифрования (на основе выбора одного из установленных в системе криптопровайдеров и алгоритма потокового шифрования RC4);

    стойкость (длину) сеансового ключа шифрования в битах;

    необходимость шифрования свойств документа (возможно только при использовании шифрования с помощью CryptoAPI).

При выборе типа шифрования нецелесообразно выбирать варианты «Слабое шифрование» и «Совместимое с Office 97/2000», поскольку в этом случае для защиты документа будет применено ненадежное шифрование, не использующее возможностей CryptoAPI. Существует немало программных средств, позволяющих расшифровывать защищенные таким образом документы путем простого перебора возможных паролей доступа.

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

Стойкость шифрования документа зависит также от длины пароля (фактически ключевой фразы для генерации сеансового ключа). Максимальная длина пароля доступа равна 255 знакам. При выборе пароля доступа к документу необходимо руководствоваться теми же соображениями, что и при выборе пароля пользователя для входа в компьютерную систему: выбирать пароли достаточной длины и сложности, не использовать один пароль для защиты различных документов, не использовать легко угадываемые пароли, совпадающие с логическим именем пользователя или названием документа, и т.п.

Для защиты от несанкционированного внесения изменений в документ Microsoft Word можно установить пароль разрешения записи в него. В этом случае перед открытием документа также будет предложено ввести пароль доступа. При вводе неправильного пароля или отказе от ввода пароля документ будет открыт только для чтения. Однако эту защиту нельзя считать достаточно надежной, поскольку измененная версия документа может быть сохранена под другим именем, после чего файл с оригинальным документом может быть удален, а вновь созданный файл соответствующим образом переименован. Кроме того, пароль разрешения записи содержится непосредственно в тексте документа и поэтому может быть просто удален из него с помощью специальных программных средств.

Для защиты документов Word от несанкционированного изменения необходимо применять средства разграничения доступа к папкам и файлам, имеющиеся в защищенных версиях операционной системы Windows и файловой системы NTFS.

Документ Microsoft Word (версия Microsoft Office XP и старше) может быть снабжен электронной цифровой подписью для обеспечения его аутентичности и целостности. Добавление ЭЦП к файлу документа возможно с помощью кнопки «Цифровые подписи» в окне настроек параметров безопасности. Для добавления ЭЦП к документу необходимо в окне «Цифровые подписи» выбрать соответствующий сертификат ключа ЭЦП. При получении первой подписи для документа следует с помощью кнопки «Добавить» выбрать сертификат для добавляемой к документу ЭЦП.

Сертификат открытого ключа ЭЦП может быть получен одним из следующих способов:

    в удостоверяющем центре корпоративной компьютерной системы, использующей, например, инфраструктуру открытых ключей Microsoft Windows;

    в коммерческом удостоверяющем центре (например, в удостоверяющем центре компании VeriSign, Inc.);

    самостоятельно с помощью программы Selfcert.exe, входящей в стандартную поставку пакета Microsoft Office.

Перед добавлением ЭЦП к защищаемому документу сертификат можно просмотреть с помощью кнопки «Просмотр сертификата». При самостоятельном создании сертификата (вместе с соответствующим ему секретным ключом ЭЦП) программа Selfcert.exe запросит имя владельца сертификата, а после успешного завершения процедуры создания выдаст соответствующее сообщение. Самостоятельно созданный сертификат предназначен только для персонального использования владельцем защищаемого документа.

При попытке сохранения измененного документа, снабженного ЭЦП, Microsoft Word выдаст предупреждение о том, что все ЭЦП будут удалены из документа. Если файл с защищенным ЭЦП документом будет изменен с помощью других программных средств (например, с помощью Блокнота), то при последующей попытке открытия документа Microsoft Word выдаст соответствующее сообщение и файл с документом открыт не будет.

Защита от несанкционированного доступа к электронным таблицам Microsoft Excel и презентациям Microsoft PowerPoint в пакете Microsoft Office XP производится полностью аналогично защите документов Microsoft Word. Установка защиты от несанкционированного доступа к базам данных Microsoft Access выполняется следующим образом.

    Файл базы данных (с расширением «.mdb») открывается в монопольном режиме (с помощью раскрывающегося списка справа от кнопки «Открыть»).

    Выполняется команда Сервис\Защита\Задать пароль базы данных и дважды вводится пароль доступа.

    При последующем открытии базы данных потребуется ввести пароль доступа.

Пароль доступа к базе данных Microsoft Access сохраняется в файле базы данных в открытом виде.

Вместо использования одного пароля доступа к базе данных Microsoft Access можно организовать разграничение доступа к ее объектам (таблицам, формам, запросам и отчетам) на уровне отдельных пользователей.

Вначале удобно воспользоваться услугами Мастера защиты Microsoft Access (команда меню Сервис\Защита\Мастер).

В диалоге с Мастером после открытия файла базы данных в монопольном режиме потребуется указать:

    необходимость создания нового или изменения существующего файла рабочей группы для базы данных;

    имя файла и код рабочей группы, а также имя владельца базы данных и название организации;

    объекты разграничения доступа в базе данных (по умолчанию все таблицы);

    предопределенные группы пользователей с заранее определенными правами доступа (например, все права или только чтение);

    разрешенные права доступа для группы Users, в которую будут входить все зарегистрированные пользователи базы данных;

    имена и пароли (возможно, первоначально пустые) всех регистрируемых Мастером пользователей базы данных;

    группы, в которые будут входить регистрируемые Мастером пользователи.

После завершения работы Мастера для получения доступа к базе данных пользователю необходимо будет пройти процедуру входа, указав свои логическое имя и пароль доступа к базе данных. Для дальнейшего добавления новых пользователей базы данных и установки им прав доступа к ней необходимо использовать соответственно команды меню Сервис\Защита\Пользователи и группы и Сервис\Защита\Разрешения. Изменения в списке пользователей и групп, а также в их правах доступа к объектам базы данных могут быть произведены только владельцем базы данных или пользователем, входящим в группу Admins, в противном случае при попытке выполнения привилегированной операции Microsoft Access выдаст соответствующее сообщение об отказе в доступе.

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

Шифрование базы данных с разграничением доступа к ее объектам на уровне пользователей возможно только для владельца базы данных или члена группы Admins. Для шифрования базы данных Microsoft Access используется команда меню Сервис\Защита\Шифровать/Расшифровать.

К достоинствам рассмотренных средств защиты от несанкционированного доступа относится то, что они могут применяться в программах пакета Microsoft Office, работающих под управлением как открытых, так и защищенных версий операционной системы Windows.

Шифрующая файловая система в защищенных версиях операционной системы Windows

В защищенных версиях операционной системы Windows, начиная с Windows 2000, для дополнительной защиты от несанкционированного доступа к папкам и файлам пользователей могут применяться средства шифрующей файловой системы (Encrypted File System, EFS), которые базируются на криптографическом интерфейсе приложений Windows CryptoAPI.

Шифрующая файловая система разработана с учетом следующих принципов:

    автоматическая генерация криптопровайдером асимметрических ключей обмена при первом обращении пользователя к услугам EFS (шифровании первой папки или файла);

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

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

    возможность вызова функций шифрования и расшифрования с помощью контекстного меню Проводника Windows и программы командной строки cipher;

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

Пользователь сообщает шифрующей файловой системе Windows о необходимости шифрования папки или файла с помощью дополнительных атрибутов этих объектов, доступных по команде контекстного меню Свойства\Другие. Состояние выключателя «Шифровать содержимое для защиты данных» определяет необходимость шифрования информации в данном объекте. При изменении этого состояния EFS запрашивает пользователя о подтверждении изменения атрибута шифрования, а также о том, распространяется это изменение только на папку или также на все вложенные в нее файлы и папки.

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

В операционной системе Windows 2000 не обеспечивается возможность совместного доступа к зашифрованному файлу со стороны нескольких пользователей, а также передача по сети зашифрованных файлов. Поэтому для исключения угрозы потери зашифрованных пользователем данных, например из-за невозможности его входа в систему, администратор должен применять политику обязательного использования агента восстановления данных (Data Recovery Agent, DRA).

В операционной системе Windows XP Professional и более поздних защищенных версиях этой системы реализована поддержка общего доступа к зашифрованным файлам. С помощью кнопки «Подробно» в окне установки дополнительных атрибутов зашифрованного файла открывается окно просмотра списка пользователей, которым разрешен доступ к этому файлу. Кнопка «Добавить» в этом окне предназначена для добавления пользователей, уже обращавшихся за услугами шифрующей файловой системы (уже имеющих пары асимметричных ключей обмена) или имеющих сертификаты своих открытых ключей, заверенные используемым в компьютерных системах удостоверяющим центром.

Разрешение доступа к зашифрованным файлам со стороны других пользователей может избавить от необходимости использовать в компьютерных системах политику агента восстановления.

Недостатки реализованного механизма совместного доступа к зашифрованным файлам в Windows XP Professional:

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

    нет возможности предоставления совместного доступа к зашифрованной папке.

В качестве дополнительной услуги в Windows XP Professional поддерживается выделение имен зашифрованных файлов и папок зеленым цветом, хотя это может рассматриваться и как дополнительное указание на объекты, содержащие конфиденциальную информацию. Помимо шифрования по алгоритму DESX поддерживается также и шифрование по алгоритму 3-DES (изменить алгоритм шифрования можно с помощью изменения значения соответствующего параметра безопасности).

Начиная с версии Windows XP Professional, возможно использование средств шифрующей файловой системы при работе с кэшированными на клиентском компьютере автономными файлами из общих для пользователей сети папок. Благодаря кэшированию пользователи могут продолжать просматривать и редактировать файлы из общих папок в ситуации, когда их компьютер отключен от сети. При последующем подключении к серверу сети операционная система синхронизирует произведенные изменения в файлах с их более ранними версиями, размещенными в общих папках. Возможность автоматического шифрования и расшифрования автономных файлов повышает их защищенность от несанкционированного доступа при работе с ними на мобильных компьютерах.

На криптографическом интерфейсе приложений Windows и технологии многокомпонентных объектов (СОМ-технологии) базируется объект CAPICOM, доступный в версиях операционной системы Windows, начиная с Windows XP Professional. Объект CAPICOM может использоваться для выполнения основных криптографических операций в приложениях, созданных как на универсальных языках программирования, так и на языках сценариев. Объекты CAPICOM поддерживают получение и проверку ЭЦП, обмен сеансовыми ключами, симметричное шифрование и расшифрование данных.

Обычная криптография

В традиционной криптографии, также называемой шифрованием тайным , или симметричным , ключом, один и тот же ключ используется как для зашифрования, так и для расшифрования данных. Data Encryption Standart (DES) - пример симметричного алгоритма, широко применявшегося на Западе с 70-х годов в банковской и коммерческой сферах. В настоящее время его сменяет Advanced Encryption Standard (AES). Рисунок 2 иллюстрирует процесс симметричного шифрования.

Из книги Секреты и ложь. Безопасность данных в цифровом мире автора Шнайер Брюс

Глава 6 Криптография Криптография весьма загадочна. С одной стороны – это набор сложных математических выражений. Шифровальщики вечно изобретают сложные математические преобразования, а им вечно противостоят криптоаналитики, находя все более оригинальные способы

Из книги Журнал «Компьютерра» N 31 от 29 августа 2006 года автора Журнал «Компьютерра»

Глава 7 Криптография в контексте Если криптография так надежна, то почему же происходят сбои в системах защиты? Почему существуют электронные кражи, мошенничество, нарушения конфиденциальности и все прочие проблемы безопасности, которые обсуждались в предыдущих главах?

Из книги Криптоанархия, кибергосударства и пиратские утопии автора Ладлоу Питер

Наука: Эллиптическая криптография Автор: Сергей Николенко But the security of cryptosystems based on elliptic curves is not well understood, due in large part to the abstruse nature of elliptic curves. Few cryptographers understand elliptic curves, so there is not the same widespread understanding and consensus concerning the security of elliptic curves that RSA enjoys. Over time, this may change, but for now trying to get an evaluation of the

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Криптоанархия и виртуальные сообщества Современная криптография Тимоти Мэй За два прошедших десятилетия в криптографии (сокращенно крип-то), науке создания шифров и кодов, произошла революция. Помимо обычных шифров, полезных, главным образом, для сохранения

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

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

Из книги Введение в криптографию автора Циммерманн Филипп

Глава 6 Криптография В этой главе обсуждаются следующие темы: Концепции криптографии Стандарты алгоритмов шифрования «Грубая сила» Неверное использование алгоритмов шифрования Любительская криптография · Резюме · Конспект · Часто задаваемые вопросы

Из книги Реконизм. Как информационные технологии делают репутацию сильнее власти, а открытость - безопаснее приватности автора Сименко Илья Александрович

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

Из книги Анонимность и безопасность в Интернете. От «чайника» к пользователю автора Колисниченко Денис Николаевич

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

Из книги Криптография и свобода автора Масленников Михаил

Стойкая криптография «В мире различают два типа критографии: криптография, которая помешает вашей младшей сестре читать ваши файлы, и криптография, которая помешает читать ваши файлы правительствам могучих держав. Эта книга посвящена криптографии второго типа» - Брюс

Из книги автора

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

Из книги автора

Криптография с открытым ключом Проблема управления ключами была решена криптографией с открытым, или асимметричным, ключом, концепция которой была предложена Уитфилдом Диффи и Мартином Хеллманом в 1975 году.Криптография с открытым ключом - это асимметричная схема, в

Из книги автора

Из книги автора

5.1.3. Способ 3: криптография с открытым ключом Если первые два способа практически не требовали во что-либо вникать: указал параметры прокси-сервера, изменил настройки почтовой программы, и на этом все, то здесь начинается высшая математика. Еще бы – сейчас мы рассмотрим

Из книги автора

5.4. Криптография с открытым ключом на практике Настало время реализовать теорию, изложенную ранее, на практике. Первым делом вам нужно сгенерировать пару ключей. В каждом почтовом клиенте это действие осуществляется по-разному (а в некоторых вообще нет поддержки

Из книги автора

Глава 8. Криптография Слово «криптография» впервые было произнесено перед нами только на 2 курсе. До этого – ни-ни, никаких упоминаний о будущей специальности. Полная секретность, все в точности так, как завещал товарищ Сталин: никому ни слова, ни жена, ни мать, ни отец –