Сравнение криптографических средств языков программирования

Автор работы: Пользователь скрыл имя, 27 Сентября 2011 в 18:02, курсовая работа

Описание

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

Содержание

Введение 3
1 Классификация криптографических алгоритмов 6
2 Криптографичия в Java 9
2.1 Алгоритма шифрования/дешифрования AES 10
2.1.1 Реализация алгоритма AES 11
2.1.1.1 Работа отправителя 11
2.1.1.2 Работа получателя 12
2.1.2 Тестирование программы 13
2.2 Алгоритм криптографического хеширования SHA 15
2.2.1 Реализация алгоритма SHA 16
2.2.2 Тестирование программы 16
3 Криптография в Delphi 19
3.1 Алгоритма шифрования/дешифрования DES 20
3.1.1 Реализация алгоритма DES 20
3.1.2 Тестирование программы 21
3.2 Реализация криптографического хеширования 23
3.2.1 Тестирование программы 25
4 Асимметричная криптография в Perl 27
4.1 Алгоритма RSA 27
4.1.1 Реализация алгоритма RSA 28
4.1.1.1 Основные методы работы с RSA 28
4.1.1.2 Пример исользования цифровой подписи 29
5 Microsoft CryptoAPI 31
6 Сравнение криптографических средств языков программирования 32
Заключение 34
Список используемых источников 35
Приложение

Работа состоит из  1 файл

Курсовая работа.doc

— 537.00 Кб (Скачать документ)

Содержание 
 

Введение 

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

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

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

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

    Любая современная криптосистема работает по определенной методологии и использует следующие компоненты:

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

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

Рисунок 1 - Схема шифрования

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

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

 

    1 Классификация криптографических алгоритмов  

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

Рисунок 2 – Общая классификация криптографических алгоритмов

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

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

    Криптосистемы с ключом делятся на симметричные и асимметричные системы шифрования. Модель симметричной системы шифрования представлена на рисунке 3.

Рисунок 3 – Обобщенная модель симметричной системы шифрования

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

    Асимметричная система шифрования работает по схеме, представленной на рисунке 4.

Рисунок 4 – Обобщенная модель асимметричной системы шифрования

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

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

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

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

 

     2 Криптографическая в Java 

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

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

    Механизмы безопасности в JDK оформлены в виде четырех основных пакетов и трех пакетов расширения:

  • java.security — содержит интерфейсы и классы, составляющие каркас механизмов безопасности. Сюда входят средства разграничения доступа, а также криптографические средства (выработка электронной подписи, вычисление хэш-функции и т.п.).
  • java.security.cert — средства поддержки сертификатов X.509 версии 3.
  • java.security.interfaces — средства генерации RSA- и DSA-ключей.
  • java.security.spec — средства спецификации ключевого материала и параметров криптографических алгоритмов.
  • javax.crypto — интерфейс и классы для симметричного шифрования.
  • javax.crypto.interfaces — интерфейсы средств выработки ключей для алгоритма Диффи-Хелмана.
  • javax.crypto.spec — классы для управления ключами и параметрами криптографических алгоритмов.

     Пакеты java.security и javax.crypto содержат классы, отображающие основные понятия криптографии:

  • java.security.cert.Certificate – сертификат.
  • javax.crypto.Cipher – шифр.
  • java.security.Key,java.security.PrivateKey,java.security.PublicKey,javax.crypto.SecretKey – ключи, используемые для шифрования и подписи.
  • javax.crypto.KeyAgreement – протокол передачи секретных ключей.
  • javax.crypto.KeyGenerator – производит ключи для симметричных шифров.
  • java.security.KeyPairGenerator – производит пары секретный ключ-секретный ключ для шифрования или цифровой подписи.
  • javax.crypto.Mac – Message Authentication Code (MAC)
  • java.security.MessageDigest – hash-функции.
  • java.security.SecureRandom – генератор случайных чисел.
  • java.security.Signature – цифровая подпись.

    Все методы классов делятся на две  части – Application Programming Interface и Service Provider Interface (методы, которые надо реализовать самому).  

    2.1 Алгоритм шифрования/дешифрования AES  

    Advanced Encryption Standard (AES), также известный как  Rijndael –симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES. Этот алгоритм хорошо проанализирован и сейчас широко используется, как это было с его предшественником DES. Национальный институт стандартов и технологий США опубликовал спецификацию AES 26 ноября 2001. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2009 год AES является одним из самых распространённых алгоритмов симметричного шифрования. Поддержка AES (и только его) введена фирмой Intel в семейство процессоров x86 начиная с Intel Core i7-980X Extreme Edition, а затем на процессорах Sandy Bridge.  

Информация о работе Сравнение криптографических средств языков программирования