Автор работы: Пользователь скрыл имя, 20 Марта 2013 в 13:24, реферат
Надлежащий уровень защиты может быть обеспечен с помощью криптографических методов. Математическая криптография возникла как наука о шифровании и о криптосистемах. В классической модели системы секретной связи имеются два участника, которым необходимо передать секретную (конфиденциальную) информацию, не предназначенную для третьих лиц. Обеспечение конфиденциальности, защиты секретной информации от внешнего противника является одной из главных задач криптографии.
Основные проблемы и способы их решения
Классификация криптографических алгоритмов
Криптография в Java
Алгоритм DSA
Работа отправителя
Генерация ключей
Создание подписи
Сохранение подписи
Работа получателя
Работа с ключом: чтение из файла и преобразование в PrivateKey
Проверка подлинности (верификация)
Исходные программы
Асимметричная криптография в Perl
Алгоритм RSA
Основные методы работы с RSA
Пример использования цифровой подписи
RSA
DSA
Универсальные криптографические интерфейсы
Microsoft CryptoAPI
Использование криптозащиты в других языках
Заключение
Виктор Рудометов
Основные проблемы и способы их решения
Классификация криптографических алгоритмов
Криптография в Java
Алгоритм DSA
Работа отправителя
Генерация ключей
Создание подписи
Сохранение подписи
Работа получателя
Работа с ключом: чтение из файла и преобразование в PrivateKey
Проверка подлинности (верификация)
Исходные программы
Асимметричная криптография в Perl
Алгоритм RSA
Основные методы работы с RSA
Пример использования цифровой подписи
RSA
DSA
Универсальные криптографические интерфейсы
Microsoft CryptoAPI
Использование криптозащиты в других языках
Заключение
аше время часто называют переходным
от индустриальной цивилизации к
цивилизации преимущественно
По мере становления информационного общества средства защиты превращаются в один из основных инструментов, поскольку они обеспечивают доверие, конфиденциальность, секретность, авторизацию, корпоративную безопасность, возможность осуществления электронных платежей и бесчисленное множество других важных атрибутов современной жизни. В связи с этим наличие встроенных механизмов защиты информации и эффективность их работы в прикладных системах стали определяющими факторами при выборе потребителями оптимального решения, поэтому разработчики программных средств уделяют этим вопросам особое внимание.
Надлежащий уровень защиты может
быть обеспечен с помощью
К защите информации можно подходить по-разному. Во-первых, можно попытаться создать абсолютно надежный и недоступный другим канал связи. К сожалению, достичь этого крайне сложно, по крайней мере на современном уровне развития науки и техники, поскольку существующие методы и средства передачи информации одновременно дают возможность несанкционированного доступа к ней. Во-вторых, можно использовать общедоступные каналы связи и при этом скрыть сам факт передачи какой-либо информации. Этим направлением занимается стеганография, но применяемые здесь методы не могут гарантировать должного уровня конфиденциальности. В-третьих, можно использовать общедоступный канал связи, но передавать данные в преобразованном виде, чтобы восстановить их мог лишь адресат. Разработкой методов преобразования информации, обеспечивающей ее шифрование, и занимается криптография.
Со времени своего возникновения сфера криптографии расширилась и видоизменилась. В качестве иллюстрации рассмотрим следующий пример. Допустим, клиент банка намерен переслать деньги со своего счета на счет какой-либо организации. При этом не вся передаваемая информация является конфиденциальной. Действительно, необходимо переслать лишь банковские реквизиты, которые общеизвестны и общедоступны. Однако банку важно убедиться, что деньги хочет перевести именно их владелец, а не злоумышленник. Клиент же заинтересован в том, чтобы сумма не была изменена и чтобы никто не смог ни переслать деньги от его имени, ни изменить информацию о получателе денег.
Любая современная криптосистема работает по определенной методологии (процедуре) и использует следующие компоненты:
Пример схемы методологии
|
|
уществует два вида методологии с использованием ключей: симметричная — с применением секретного ключа и асимметричная — с открытым ключом. Каждая методология использует собственные процедуры, способы распределения и типы ключей, алгоритмы шифрования и расшифровки.
При симметричной (symmetric) методологии с секретным ключом используется один ключ, с помощью которого производится как шифрование, так и расшифровка посредством одного и того же алгоритма симметричного шифрования. Этот ключ передается двум участникам взаимодействия до передачи зашифрованных данных при соблюдении надлежащих мер безопасности. К достоинствам данной системы можно отнести сравнительно большое быстродействие при шифровании и расшифровке передаваемых сообщений, а к недостаткам — то, что безопасно распространять секретные ключи довольно трудно.
Пример использования
При асимметричной (asymmetric) методологии с открытым ключом используются два взаимосвязанных ключа, один из которых является секретным, а другой публикуется в открытых источниках. Данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом. Главный недостаток — необходимость использования очень больших по размеру ключей для обеспечения безопасности, что негативно отражается на скорости работы алгоритмов шифрования.
Часто обе методологии комбинируются. Например, генерируется симметричный (секретный) ключ, который передается с помощью алгоритмов асимметричной методологии.
К самым распространенным алгоритмам симметричной методологии можно отнести DES (Data Encryption Standard), 3-DES, RC2, RC4 и RC5. Примеры асимметричной — RSA и ECC. И отдельную позицию занимает один из наиболее популярных алгоритмов цифровой подписи DSA (Digital Signature Algorithm).
Важность
сохранения целостности или
Наличие встроенных механизмов защиты информации в прикладных системах все чаще становится определяющим фактором при их выборе потребителями, о чем хорошо знают все разработчики программных средств. Однако работы по созданию и тестированию криптографической защиты требуют существенных финансовых затрат. Кроме того, необходимы квалифицированные сотрудники, в частности криптографы и программисты с математическим образованием. Все это в значительной степени определяет качество разработки и успех реализации универсальных интерфейсов.
Многие фирмы, в том числе крупнейшие системные интеграторы, применяя криптографическую защиту в своих прикладных системах, пошли по пути реализации универсальных интерфейсов. В их задачи входит предоставление приложению широкого набора возможностей по вызову криптографических сервисов, что обеспечивает гибкость системы и определенную ее независимость от алгоритмов. В результате такого подхода разработчикам программного обеспечения нет необходимости задумываться над тем, какие именно алгоритмы криптографической защиты будут реализованы в конечном продукте — используются лишь интерфейсы вызовов функций защиты, созданных сторонними производителями. Примером может служить фирма Sun Microsystems, предлагающая разработчикам программного обеспечения язык Java с широким набором интерфейсов, реализующих основные криптографические алгоритмы и протоколы.
|
|
зык Java создан сравнительно недавно и имеет множество достоинств и немало недостатков. Часто эти достоинства сводят только к возможности создания машинно-независимых приложений, но существуют и другие, возможно даже более важные в условиях стремительного развития информационного общества. Речь идет, в частности, о сетевой направленности при разработке языка.
В 1993 году компания Sun обратила внимание на рост популярности Интернета и начала дорабатывать Java таким образом, чтобы написанные программы можно было запускать из Web-браузеров (аплеты). Также в язык были встроены расширенные возможности создания приложений типа «клиент-сервер». В связи с явной сетевой направленностью языка Java необходимо было уделить должное внимание средствам защиты. В первую очередь это касалось пересылки важных данных, например между клиентом и сервером, а также запуска программ или аплетов. Такие средства были разработаны и встроены в набор стандартных библиотек (JDK security API).
Необходимость защиты может быть обусловлена желанием пользователя-получателя иметь возможность верификации, что дает определенные гарантии подлинности документа или кода. В качестве подписываемого объекта могут выступать аплеты, которые широко распространены в Интернете. В результате у получателя появляется уверенность, что информация получена именно от нужного отправителя и что она не была изменена в процессе пересылки. Для обеспечения такого рода безопасности служат цифровые подписи и сертификаты.
|
|
Основная идея цифровой подписи (digital signature) заключается в следующем. Допустим, отправитель хочет послать получателю некоторые данные. Он подписывает документ или код посредством специального закрытого ключа (private key), который генерируется с помощью утилиты keytool или средствами API. В данном случае слово «подписывает» означает, что генерируется специальная цифровая подпись с помощью утилиты jarsigner или средствами API.
Диаграмма, иллюстрирующая прохождение через все этапы подписи jar-архива (работа отправителя), представлена на рис. 3. Следует отметить, что в jar-файле могут быть произвольные данные, например программа, картинка или документ Word.
Диаграмма, представляющая работу получателя jar-архива, дана на рис. 4.
В процессе генерации закрытого
ключа создается и так
Получателю отправляются следующие данные:
Приняв все три компонента, получатель с помощью открытого ключа определяет подлинность подписи и целостность документа. Защищенность данного метода заключается в том, что для подделки или взлома необходимо сгенерировать закрытый ключ. При этом для данной задачи не существует «быстрого» алгоритма при условии, что длина ключей достаточно велика.
Правда, указанный простой метод имеет свои недостатки. Дело в том, что получатель в предложенной схеме заведомо предполагает подлинность и целостность открытого ключа. Однако злоумышленник мог изменить или подменить открытый ключ, а следовательно, сгенерировать фальшивую подпись и подменить документ. Таким образом, в этом случае необходим механизм, удостоверяющий подлинность открытого ключа.
Примером могут служить
Если при этом имеет место
доверие составителю
Следует отметить, что для доказательства сложности взлома данного метода потребовались колоссальные математические исследования.
Рассмотрим возможность использования Java Security для генерации (рис. 5) и верификации (рис. 6) цифровой подписи.
|
|
Для генерации ключей программист, не вникая в математические формулы и особенности их реализации, может использовать уже готовые алгоритмы и методы криптографии. Они предоставляются определенными организациями, так называемыми провайдерами (provider). По умолчанию встроенные средства Java поставляет провайдер SUN. Таким образом, единственное, что необходимо сделать — это указать собственно алгоритм и провайдера.
В первую очередь нужно сгенерировать пару ключей — public key и private key, для чего используется класс KeyPairGenerator. С целью получения конкретного объекта этого класса необходимо вызвать static factory метод getInstance(). В качестве аргументов передаются строки с указанием алгоритма и провайдера. Например, для использования DSA (Digital Signature Algorithm) и провайдера SUN необходимо писать:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance
(“DSA”, “SUN”);
Поскольку большинство криптографических алгоритмов являются вероятностными, необходимо создать вероятностный источник — объект класса SecureRandom. При этом существует возможность использовать разные методы, например SHA1PRNG (pseudo-random-number generation algorithm):
Информация о работе Криптографические методы защиты в языках программирования