Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Инcтpумeнты 
Криптография 
Статьи - Основы криптографии

Основы криптографии
[color=#800000]Общее[/color]
  Криптография (от др.-греч. криптос — скрытый и графос — пишу) — наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.

Изначально криптография изучала методы шифрования информации — обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст). Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системы электронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.
[color=#800000]Современная криптография[/color]
Для современной криптографии характерно использование открытых алгоритмов шифрования, предполагающих использование вычислительных средств. Известно более десятка проверенных алгоритмов шифрования, которые при использовании ключа достаточной длины и корректной реализации алгоритма криптографически стойки. Распространенные алгоритмы:
  — симметричные DES, AES, ГОСТ 28147-89, Camellia, Twofish, Blowfish, IDEA, RC4 и др.;
  — асимметричные RSA и Elgamal (Эль-Гамаль);
  — хэш-функций MD4, MD5, MD6, SHA-1, SHA-2, ГОСТ Р 34.11-94.

Во многих странах приняты национальные стандарты шифрования. В 2001 году в США принят стандарт симметричного шифрования AES на основе алгоритма Rijndael с длиной ключа 128, 192 и 256 бит. Алгоритм AES пришёл на смену прежнему алгоритму DES, который теперь рекомендовано использовать только в режиме Triple DES (3DES). В Российской Федерации действует стандарт ГОСТ 28147-89, описывающий алгоритм блочного шифрования с длиной ключа 256 бит, а также алгоритм цифровой подписи ГОСТ Р 34.10-2001
[color=#800000]Криптография с симметричным ключом[/color]
  Симметричные криптосистемы (также симметричное шифрование, симметричные шифры) — способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим способом являлось симметричное шифрование. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Алгоритм шифрования выбирается сторонами до начала обмена сообщениями.
В настоящее время симметричные шифры — это:
  — блочные шифры. Обрабатывают информацию блоками определённой длины, применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. Результатом повторения раундов является лавинный эффект — нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.
  — поточные шифры, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования.

В пакете применяются следующие симметричные шифры:

НазваниеТипДлина блокаДлина ключа
RC2блочный64 бита128 бит
RC4поточныйнет128 бит
DES56блочный64 бита56 бит
3DES112блочный64 бита112 бит (56 + 56 бит)
3DES168блочный64 бита168 бит (56 + 56 + 56 бит)
AES128блочный128 бит128 бит
AES192блочный128бит192 бит
AES256блочный128 бит256 бит
CYLINK_MEKблочный64 бита64 бита (40-битный DES ключ + 24 бита нулей)

[color=#800000]Криптография с открытым ключом[/color]
  Криптографическая система с открытым ключом (или Асимметричное шифрование, Асимметричный шифр) — система шифрования и/или электронной цифровой подписи (ЭЦП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности, в протоколах TLS и его предшественнике SSL (лежащих в основе HTTPS), в SSH. Также используется в PGP, S/MIME

  Данный тип шифрования необходимо рассмотреть более подробно, тк в настоящее время этот тип шифрования является самым перспективным и наиболее защищенным.
  Предположим, что имеется некий центр шифрования,, назовем его "Боб", и некий резидент, назовем его "Алисой". Для обменя информацией от "Алисы" к "Бобу", "Боб" генерирует у себя в центре ключевую пару - секретный и открытый ключ, и передает "Алисе" открытый ключ по какому-либо незащищенному каналу, предположим, через интернет. "Алиса", приняв ключ, генерирует у себя разовый сессионный ключ и шифрует им свои данные, после чего шифрует сам сессионный ключ открытым ключом "Боба", получая ключ обмена. Затем, "Алиса", по незщищенному каналу, пересылает "Бобу" ключ обмена и свои зашифрованные данные. "Боб", приняв данные от "Алисы", расшифровывает своим секретным ключом ключ обмена и получает сессионный ключ для расшифровки данных "Алисы". Сторонний перехват информации ничего не даст, только потому, что у перехватчика, назовем его "Евой", нет секретного ключа, посредством которого можно получить сессионный ключ для расшифровки данных "Алисы".
  Но тут есть одно "но". В таком обмене шифрованной информацией существует незащищенная "дыра" - "Ева" может подменить открытый ключ на свой, из своей пары, где секретный ключ будет уже у "Евы". Что в данном случае может произойти - "Боб" посылает открытый ключ "Алисе", "Ева" перехватывает этот ключ и посылает "Алисе" свой открытый ключ. "Алиса", естественно, про это ничего не знает и шифрует данные открытым ключом "Евы". "Ева" получает данные от "Алисы", расшифровывает информацию, копирует ее и отсылает "Бобу", закодировав ее перед этим, перехваченным у "Боба", открытым ключом. Это существенное препятствие в обмене данными подчеркивает необходимость аутентификации открытых ключей или пересылаемых данных. Для этого, обычно, используют сертификаты или электронные цифровые подписи. О чем и пойдет речь в следующем разделе
[color=#800000]Электронная цифровая подпись[/color]
  Мы рассмотрели обмен информацией при помощи открытого ключа и показали, как можно осуществить простой перехват этой информации. Чтобы такого не происходило, ключ обмена или информацию необходимо подписать, можно подписать и то, и другое. Продолжим рассмотрение данной процедуры на примере уже известных нам персонажей - "Боба", "Алисы" и "Евы". Если "Алиса" зашифрует сообщение своим закрытым ключом, то успешное расшифровывание убедит "Боба" в том, что послать корреспонденцию мог только хозяин ключевой пары, и никто иной. При этом расшифровку может выполнить любой, кто имеет открытый ключ отправителя, в данном случае, "Алисы". Ведь наша цель - не конфиденциальность, а аутентификация.
  Чтобы избежать шифрования всего сообщения при помощи асимметричных алгоритмов, используют хеширование, те вычисляется хеш-значение исходного сообщения, и только эта короткая последовательность байтов шифруется закрытым ключом отправителя. Результат представляет собой электронную цифровую подпись. Добавление такой подписи к сообщению позволяет установить:
  —  аутентичность сообщения - создать подпись на основе закрытого ключа мог только его хозяин;
  —  целостность данных - легко вычислить хеш-значение полученного сообщения и сравнить его с тем, которое хранится в подписи: если значения совпадают, значит, сообщение не было изменено злоумышленником, в нашем случае "Евой", после того, как отправитель ("Алиса") его подписал.
[color=#800000]Концепция построения Shareware программ на основе криптографии[/color]
  Рассмотрим основные положения построения Shareware программ, те программ, которые ограничены в использовании, до получения разрешения автора на их полное использование, при помощи принципов криптографии. Возникает вопрос -- как нам в этом может помочь криптография?... А ведь довольно просто.
  Предположим, что у нас есть какой-то центр по распространению программного продукта, это можете быть и вы сами лично. Содаем ключевую пару электронной подписи. Открытый ключ помещаем в распространяемое ПО и подключаем внутри ПО модуль анализатора подписи. При заппуске ПО, последнее потребует от пользователя ввода какого-то идентификатора, присущего конкретному компьютеру, предположим, серийный номер HDD, можно и не просить ввода идентификатора, а просто оповестить пользователя об идентификаторе, полученном автоматически. Этот номер, плюс еще какие-то нужные параметры по желанию автора, о чем пользователю знать и не обязательно, к примеру, имя запускного файла, чтобы пользователь не смог ничего переименовать, высылаются автору. После получения гонорара за ПО, проверку получения которого от пользователя рассматривать в рамках этого раздела не будем, автор подписывает свои секретным ключом хеш-сумму идентификатора и возвращает его пользователю файлом, предположим, под именем license.lic. Получив такой файл, пользователь помещает его в папку с ПО и запускает его. ПО снова просит идентификатор или получает его сам, автоматически, проверяет подпись из файла своим открытым ключом, и если подпись совпадает, то запускается дальше. Все это делается в прозрачном режиме, можно, правда, поблагодарить за регистрацию один раз. Но если подпись не совпадает, то работа прекращается, выводится предупреждение, и запустить можно будет в демо режиме, либо вообще заблокироваться.
  Хакеры могут выдернуть из ПО открытый ключ, но он им не поможет, секретного ключа-то у них нет, а потому, они не смогут сделать собственный KeyGen. В такком ПО проще будет обойти модуль проверки аутентификации, чем пытаться получить секретный ключ для подписи, если только таким ключом любезно не поделится сам автор
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)
Комментарий
...