Шифрование
Эти свойства позволяют использовать хеш-функции для проверки целостности данных, для сравнения данных произвольной длины по хешу, для ускорения поиска данных произвольной длины — сравниваются хэши фиксированной длины.
Одними из самых распространённых на сегодня функций являются CRC16, MD5, SHA-1.
Симметричное шифрование
Симметричное шифрование — алгоритм шифрования, который использует один и тот же ключ для зашифровывания и расшифровывания (иначе говоря — пароля). Т.е. в частном случае существует некий секретный ключ, известный обоим сторонам, с помощью которого одна сторона шифрует информацию, вторая — расшифровывает. В основном используется из-за простоты и скорости реализаций.
Популярные алгоритмы симметричного шифрования — AES, DES, 3DES, IDEA, Blowfish, Twofish
Асимметричное шифрование
Асимметричное шифрование или шифрование с открытым ключом — система шифрования использующая пару — секретный ключ и открытый ключ. Массив шифруется одним ключом и расшифровывается другим ключом. Информацию, зашифрованную одним из ключей, невозможно расшифровать этим же ключом, и наоборот.
Эта система намного более популярна, чем симметричное шифрование, ввиду того, что публичный ключ можно распространять по открытым каналам данных без опасения, что им воспользуются для шифрования. Это же свойство делает шифрование с открытым ключом популярным и в электронно-цифровой подписи — подпись можно проверить с помощью открытого ключа, но нельзя им подделать,
Асимметричное шифрование более ресурсоёмкое, чем симметричное. Поэтому, обычно используют гибридные системы. Две системы обмениваются паролем с помощью шифрования с открытым ключом, а дальше используют симметричное шифрование при помощи этого пароля. Так работают SSL/TLS, SSH.
Самыми популярными алгоритмами асимметричного шифрования являются RSA и DSA. В России также применяется отечественный алгоритм ГОСТ. Это хороший надёжный алгоритм. Однако он не так давно был реализован в популярных библиотеках шифрования и с ним умеет работать очень мало программ.
Шифрование: все что нужно знать
Шифрование необходимо для защиты данных от кибератак и любых других случаев получения нежелательного доступа к информации. В статье расскажем, что это такое, какие виды шифрования бывают, а также о вариантах его использования.
Что такое шифрование
Шифрование является средством защиты конфиденциальных данных, хранящихся в компьютерных системах. Сейчас это один из самых популярных и эффективных способов, который повсеместно применяется при обеспечении информационной безопасности. С его помощью можно преобразовать данные в иную форму или код, прочитать которые могут только те пользователи, которые имеют пароль или доступ к ключу дешифрования.
Зашифровка выполняется с помощью специальных алгоритмов, которые постоянно усложняются и совершенствуются, а также ключа. Он генерируется случайным образом и являются уникальными. Получить несанкционированный доступ к информации с помощью подбора (брутфорса) крайне сложно и займёт слишком много времени, чтобы всерьез рассматривать такой вариант.
Получить консультацию об облачных сервисахЗаказать звонок
Какие виды шифрования существуют
Их существует два типа: симметричное и асимметричное. Они отличаются способом применения ключей.
1. Симметричное. Здесь применяется единый симметричный ключ для шифрования и дешифрования. Он должен устанавливаться на устройстве, где происходит кодирование и на том, где декодирование.
Методы симметричного шифрования:
- DES — низкоуровневый алгоритм, который разбивает обычный текст на блоки по 64 бита и преобразует их в зашифрованный текст с использованием ключей на 48 бит.
- Тройной DES запускает шифрование DES три раза, шифруя, расшифровывая и снова шифруя данные.
- Advanced Encryption Standard (AES) – стандарт правительства США, который часто называют золотым стандартом. В нём применяется шифр с размером блока 128 бит, а длина ключа составляет 128, 192 или 256 бит.
- Twofish считается одним из самых быстрых алгоритмов и является бесплатным.
2. Асимметричное (иначе оно называется шифрованием с открытым ключом). В данном случае используется два ключа. Один ключ частный (закрытый), а второй – открытый. Первый, частный, ключ находится на шифрующем устройстве, а второй, открытый, пересылается на устройство, где будет выполняться дешифрование.
В данном случае «открытый» не означает «общедоступный».
Методы ассиметричного шифрования:
- RSA. Алгоритм, где шифрование происходит с помощью открытого ключа, а в расшифровке применяется закрытый ключ.
- PKI Инфраструктура открытых ключей. Это способ управления ключами через выдачу и управление цифровыми сертификатами.
Где используется шифрование
Применение шифрования в качестве средства защиты информации является повсеместным, от смартфонов и фитнес-браслетов до систем «умный дом». Любые данные, которые хранятся или передаются по сети находятся в зашифрованном состоянии.
Оно защищает конфиденциальные данные в процессе финансовых транзакций, сообщения, передаваемы через мессенджеры, криптографические алгоритмы лежат в основе криптовалют. При взаимодействии пользователей с сайтами в интернете криптонадстройка протокола HTTPS шифрует криптографическими протоколами SSL и TLS передаваемую информацию.
В облачных решениях кодирование информации также играет ключевую роль. Шифрование виртуальной машины позволяет обезопасить данные, расположенные на виртуальном жестком диске. С его помощью можно хранить файлы (конфигурацию и содержимое виртуальных дисков, снапшоты) виртуальной машины в зашифрованном виде.
Какой способ выбрать
Для защиты данных можно применять три вида шифрования: аппаратное, программное и программно-аппаратное. Каждый из них шифрует данные через криптографический алгоритм, но есть разница в реализации процесса.
Программное. Это более дешёвый, но менее надёжный способ. Для кодирования оно использует процессор компьютера. Пароль задаётся пользователем. Подходит для защиты домашних ПК, а также не слишком критичных корпоративных данных.
Аппаратное использует для работы собственный процессор и является более надёжным. Пароль создаётся генератором случайных чисел. Подходит для защиты критически важной информации: денежных транзакций, разработок компании и т.п.)
Руководство по выживанию — шифрование, аутентификация
Это руководство по выживанию охватывает такие ошеломительные темы как криптография, шифрование, авторизация и аутентификация. Для тех, кто сомневается в своей математической подготовке (и даже для тех, кто не сомневается) хочется отметить, что используемая в криптографии математика может ужаснуть кого угодно, и в этом руководстве она либо вообще не рассматривается, либо рассматривается поверхностно. Данное руководство сконцентрировано на функциональности системы и состоит исключительно из описаний и разъяснений, а не из конкретных команд или реализаций. Большинство из рассматриваемых здесь вопросов служат основой для материалов статьи «SSL/TLS и сертификаты X.509», где есть такие описания реализаций и команды, которые способны надолго вывести кого угодно из состояния душевного равновесия.
Содержание:
- Терминология
- Общий обзор криптографии
- Симметричное шифрование
- Асимметричное шифрование
- Отпечатки и хэши
- Аутентификационный код сообщения (MAC)
- Цифровые подписи
Терминология
Неполный перечень терминов, используемых в защите информации. Многие из этих терминов разъясняются далее в тексте, другие остались сами по себе и приведены здесь отчасти для того, чтобы напугать читателя, но, главным образом потому, что мы понятия не имеем, что они означают.
| Аутентификация (Authentication) | Процесс или процедуры, используемые для проверки того, что данные или информация, заявленные как поступившие из какого-то источника, могли поступить только из этого источника. Методы, используемые для аутентификации, включают цифровые подписи , MAC и даже добрые старые пароли. Как правило, после аутентификации Вам ещё нужно быть авторизованным для доступа к ресурсам или информации. |
| Авторизация (Authorization) | После того, как пользователи прошли аутентификацию, они, как правило, авторизованы (на основании их учётных данных для входа или свойств учетной записи) на получение или запрет доступа к определённым системным ресурсам, таким как файлы, приложения или сетевые ресурсы. Термин привилегия иногда используется как синоним авторизации. Так, пользователь может иметь достаточно привилегий для доступа к ресурсу X, но не к ресурсу Y, или, иными словами, они авторизованы на доступ к X, но не авторизованы на доступ к Y. |
| Битовая сложность, битовая стойкость (Bit Strength) | Определяется в битах и является мерой объема работ, которые необходимо выполнить для взлома криптографического алгоритма. Битовая сложность предоставляет метод, с помощью которого можно измерить относительную стойкость одного алгоритма шифрования к другому. В зависимости от алгоритма, размер ключа и битовая сложность могут совпадать или не совпадать. В разделе 5.6.1 части первой публикации NIST SP 800-57 битовая сложность определяется в умопомрачительных подробностях. Согласно текущих рекомендаций NIST (на 2010-2030 годы), минимальная битовая сложность алгоритма шифрования должна составлять не менее 112 бит. |
| Шифр, шифрование (Cipher) | Шифр иначе называется алгоритмом шифрования. В английском языке под этим термином также иногда понимается процесс шифрования. |
| Открытый текст (Clear Text или Plain Text) | Блок данных, к которому не применялся процесс шифрования, либо блок данных, полученный в результате операции расшифрования или дешифрования. |
| Удостоверяющие данные (Credentials) | Причудливое название того, что большинство из нас назвало бы паролем (хотя они могут принимать и иные формы, такие как аппаратный токен или биометрические данные). Ваши удостоверяющие данные являются одним из способов доказать, что Вы именно тот, за кого себя выдаёте. Так как Вы должны быть единственным человеком (или, в некоторых случаях, группой лиц) кто знает или имеет доступ к Вашим удостоверяющим данным, то когда Вы предоставляете их в системе или в сети это доказывает, что Вы именно тот, за кого себя выдаёте. После выполнения неких форм обмена данными, которые будут включать в себя предоставление Ваших удостоверяющих данных (например, набор пароля) Вы становитесь аутентифицированы. Как правило, после аутентификации Вам ещё нужно быть авторизованным для доступа к ресурсам или информации. |
| Расшифрование (Decipher) | Применение алгоритма дешифрования к зашифрованному блоку или тексту с предоставлением соответствующих ключей, в результате чего он превращается в открытый текст. Многие (но не все) шифры используют один и тот же алгоритм для шифрования и дешифрования. |
| Шифрование (Encryption) | Процесс преобразования данных с использованием шифра (или алгоритма шифрования). Используемые методы могут быть симметричными или асимметричными. |
| Хэш (Hash) | Он же — отпечаток (digest или fingerprint), или односторонний хэш (one-way hash). Алгоритм для уменьшения бесконечно большого блока данных до уникальной строки октетов значительно меньшего и фиксированного размера, например, 128 или 256 бит (16 или 32 байт). Хэши используются для обеспечения целостности сообщений, а также в MAC или цифровых подписях. Термин fingerprint (дословно отпечаток пальца) иногда используется в том смысле, что отпечаток пальца в определённых случаях может заменить всего человека, то есть хэш становится тем отпечатком, который может храниться и передаваться независимо от сообщения или данных, но всегда может быть использован для проверки целостности этого сообщения или данных. |
| Размер ключа (Key Size) | Иначе называется длиной ключа. Количество бит, используемых для ключа алгоритма шифрования. В общем случае, чем больше бит, тем более стойким является алгоритм. Многие алгоритмы могут принимать ключи переменного размера, что позволяет им время от времени постепенно увеличивать свою стойкость. Длина (размер) ключа могут не совпадать с битовой сложностью алгоритма, их не следует путать. Так, в RSA длина (размер) ключа — 2048 бит, а битовая сложность — 112 бит. |
Общий обзор криптографии
Согласно словарю Уэбстера криптография — это «шифрование и дешифрование сообщений с помощью секретного кода или шифра; также: компьютеризированное кодирование и декодирование информации».
Криптографией называют процесс преобразования (шифрования) данных, представленных «открытым текстом», с помощью некоторого метода (шифра или алгоритма шифрования) в абракадабру, которую можно трансформировать (расшифровать) обратно в открытый текст, только если получатель обладает неким секретным знанием, таким как ключ или набор ключей.
Исторически секретное знание представляли из себя сами шифры или алгоритмы шифрования. Например, такой шифр, как замена каждой буквы на предшествующую ей в алфавите, который порой используют дети или мы сами, когда посылаем секретные послания своим друзьям. Слабое место такого подхода в том, что если метод или алгоритм шифрования раскрыт, все коммуникации, зашифрованные с помощью этого алгоритма или шифра, могут быть преобразованы в обычный текст (расшифрованы). Нужно будет разработать новый алгоритм и распространить по всем заинтересованным сторонам перед тем, как мы можем снова начать посылать сообщения.
Современная криптография предполагает, что злоумышленники рано или поздно раскроют криптографический алгоритм. По причинам, которые мы увидим позднее, в действительности сами алгоритмы находятся в свободном доступе. Секретное знание же теперь состоит в уникальном ключе или ключах, используемых этими алгоритмами для преобразования (шифрования и дешифрования) данных. Если этот ключ скомпрометирован (проще говоря, украден злоумышленником), то путём простой замены ключа, оставляя алгоритм без изменений, можно возобновить конфиденциальные коммуникации. Злоумышленнику ничего не остаётся, как приниматься за раскрытие ключа заново, причём знаний у него будет не больше, чем перед началом предыдущего взлома, а мы, в свою очередь, постараемся ужесточить процедуры обеспечения безопасности ключевой информации.
Криптографические алгоритмы не являются абсолютно закрытыми, наоборот, информация о них обычно находится в свободном доступе и они вновь и вновь подвергаются атакам определённого круга исследователей и специалистов (тестеров-взломщиков), которые жить без этого не могут. Только те алгоритмы, которые длительное время выдерживали повторяющиеся атаки, используются затем в промышленной эксплуатации. Поскольку исследования в сфере криптографических алгоритмов продолжаются, иногда это приводит к необходимости замены казалось бы зрелого и надёжного алгоритма, когда в нём обнаруживается уязвимость. В качестве недавнего примера здесь можно привести теоретические уязвимости, обнаруженные в алгоритме создания отпечатков MD5 в 2004 году. Хотя нельзя исключать того, что для нахождения ключа злоумышленник может использовать атаки методом грубой силы (то есть простым перебором), криптографические системы используют концепцию, известную как вычислительная невозможность, которая, попросту, означает, что атака методом грубой силы будет потреблять неприемлемо большое количество ресурсов и времени. Вычислительная невозможность основывается на достигнутом в определённый момент уровне технологий и, следовательно, не является абсолютной величиной. Так, например, в некоторых алгоритмах время от времени, по мере увеличения вычислительных мощностей, увеличивается и размер ключа.
Если злоумышленники получили секретный ключ или ключи (путём воровства, подбора, удачи или иных мелкопакостных средств), они конечно же не станут трубить об этом на весь мир, чтобы пользователь сразу же поменял ключ (ключи). Вместо этого они продолжат тихо и спокойно прослушивать якобы безопасные коммуникации. Это, конечно же, является серьёзной проблемой и обычно решается некоей комбинацией содержания ключей в среде «доказанного вмешательства (tamper-proof)» (которая уничтожит ключи при попытке компрометации) или «оповещения о вмешательстве (tamper-aware)» (она же HSM, которая предупредит пользователя, если ключ скомпрометирован), либо путём регулярной смены ключей, — так называемым обслуживанием ключей, — которая просто минимизирует потенциальные риски.
Замечание по эксплуатации криптосистем: Многие криптографические алгоритмы существуют и остаются неизменными на протяжении многих лет (в некоторых случаях больше десятка лет). Было написано много стандартов, предлагающих ряд криптографических алгоритмов, но, как правило, обязательным из них являлся только один, а остальные нужны лишь для поддержания некоторой формы «общего знаменателя». Однако, поскольку скорости вычислений возрастают, а криптоатаки учащаются (иногда от источников, никогда не вызывавших опасений), всё большее значение приобретает необходимость менять либо алгоритмы, либо размеры ключей. Этот процесс, на жаргоне называемый алгоритмической гибкостью, может стать серьёзной проблемой в эксплуатации систем, в которых используются «старые» версии алгоритмов или ключей.
Криптография может использоваться для решения трёх задач:
- Конфиденциальность: Только стороны, участвующие в коммуникации, могут понять сообщения или данные, посылаемые между этими сторонами.
- Аутентификация: Данные могут поступать только из распознанного источника.
- Целостность: Данные, полученные одной стороной, являются именно теми данными, которые были отправлены другой стороной; во время передачи они не подвергались манипуляциям или компрометации.
Решение одной или нескольких из перечисленных задач может обеспечиваться применением как единственного алгоритма, так и комбинацией алгоритмов или методов.
Сначала обратимся к основным методам. Современные криптографические методы могут быть симметричными или асимметричными.
Примечание: Один из лучших источников информации по криптографии — публикации Национального Института стандартов и технологий США (NIST). В частности, в первой части SP800-57 (на текущий момент ревизия 3, 2012 год) обсуждается управление ключами и приводится превосходный и тщательный анализ как методов криптографии, так и угроз. Кроме того, там даны (в таблицах 2 и 4) практические рекомендации по размерам ключей для различных алгоритмов. Заинтересованным читателям мы настоятельно рекомендуем хорошенько изучить этот достойный, хотя и большой, документ, как основательное и весьма практичное посвящение в тайные знания криптографии. На этой странице мы ссылаемся также на ряд других документов NIST SP.
Симметричная криптография
Симметричные алгоритмы шифрования, называемые также системами с одним ключом (single-key), с общим секретом (shared-secret), или даже системами с закрытым ключом (private-key), используют единственный ключ (или набор ключей) для шифрования и дешифрования данных. Единственный ключ (общий секрет) должен быть безопасным образом распространён между сторонами, которые будут его использовать, перед началом самих безопасных коммуникаций. У систем с общим секретом существует как минимум два узких места. Во-первых, ключ должен быть распространён безопасным способом с помощью процесса, называемого управлением ключами, который сам по себе нетривиален. Во-вторых, ответственность за безопасность уже распространённого ключа лежит на всех сторонах коммуникации: «Самому себе я доверяю, но могу ли я доверять всем остальным сторонам, что они не допустили огласки ключа?». Если ключ, являющийся общим секретом, скомпрометирован на любой из сторон, то он скомпрометирован для всех использующих его сторон. Симметричные алгоритмы используют значительно меньше вычислительных ресурсов, нежели их асимметричные коллеги. Как правило, они являются единственным приемлемым способом шифрования объемных потоков данных.
Примеры распространённых симметричных алгоритмов шифрования: DES (Data Encryption Standard, он же Data Encryption Algorithm (DEA)), Triple DES (TDES, он же TDEA (Triple DEA)), AES (Advanced Encryption Standard), IDEA (International Data Encryption Algorithm), а также RC4 (Rivest Cipher 4 — по состоянию на 2013 год рассматривается как потенциально подверженный взлому, хотя факты успешных атак ещё не доказаны и не опубликованы), типичные размеры ключей 64, 128, 192 или 256 бит. На рисунке 1 демонстрируется рабочее применение общего секрета в классических конфиденциальных коммуникациях. Примечание: Термин «общий секрет (shared secret)», описывающий единственный ключ (или набор ключей), используемый или разделяемый обеими сторонами коммуникации, не следует путать с «разделением секрета (secret sharing)», описывающим процесс, при котором общий или единственный секретный ключ разбивается на части и распределяется между несколькими лицами, чтобы сделать его более защищённым.

Рисунок 1 — Симметричная криптография
Асимметричная криптография
Асимметричные алгоритмы шифрования используют пару ключей, — открытый и закрытый, — и обычно называются криптографическими системами с открытым ключом или, иногда, несекретным шифрованием (своего рода оксюморон). В таких системах данные (на жаргоне — открытый текст), зашифрованные одним ключом, могут быть расшифрованы только парным ему ключом. Имея один ключ, вычислительно невозможно вывести парный ему ключ. Принцип работы асимметричной криптографии заключается в предоставлении одного ключа, называемого открытым, в широкий доступ, при сохранении другого ключа, называемого (сюрприз!) закрытым, в тайне. У этой технологии есть интересный побочный эффект. Если сообщение было зашифровано закрытым ключом и может быть расшифровано парным ему открытым ключом, то только владелец закрытого ключа мог произвести шифрование. Это свойство используется в цифровых подписях и описано ниже. По сравнению со своими симметричными коллегами, асимметричные алгоритмы потребляют значительное количество вычислительных ресурсов и потому обычно не применяются для шифрования объёмных потоков данных.
Наиболее широкое распространение среди криптосистем с открытым ключом получили RSA (по первым буквам фамилий разработчиков: Rivest, Shamir и Adelman), DSA (Digital Signature Algorithm, алгоритм цифровой подписи) и Криптография на основе эллиптических кривых (Elliptic Curve Cryptography, ECC). Типичные размеры ключа в системах с открытым ключом RSA — 512, 1024, а в последнее время 2048 бит (текущие рекомендации US NIST на период с 2010 по 2030 год), а то и больше, если кому-то доставляет удовольствие чрезмерно перегружать процессор. Размеры ключа в ECC — 112, 224, 256, 384 или 512 бит. Открытый ключ из пары закрытого и открытого ключей может без нарушений безопасности храниться в общедоступных сервисах, таких как DNS, а закрытый ключ должен храниться в надёжном защищённом месте (возможно даже в аппаратных модулях безопасности (Hardware Security Modules, HSMs)). На рисунке 2 демонстрируется использование криптографии с открытым ключом для классических конфиденциальных коммуникаций.

Рисунок 2 — Асимметричная криптография
Для достижения конфиденциальности сообщение, посылаемое от хоста 2 на хост 1 зашифровывается с использованием открытого ключа хоста 1. Это сообщение можно расшифровать только с помощью закрытого ключа хоста 1. Если хосту 1 требуется отправить конфиденциальное сообщение на хост 2, то он должен получить открытый ключ хоста 2 (не показано на рисунке 2, чтобы не загромождать).
У систем с открытым ключом есть одно существенное ограничение. Они полагаются на знание или доверие тому, что открытый ключ, который будет использоваться в коммуникациях с человеком и организацией, действительно является открытым ключом человека и организации и не был подменён злонамеренной третьей стороной. Обычно это достигается двумя основными методами: инфраструктурой открытых ключей (Public Key Infrastructure, PKI), или, в более общем случае, использованием доверенной третьей стороны. Третья сторона безопасно управляет открытыми ключами и подтверждает их подлинность. Если некто запрашивает у третьей стороны (в контексте сертификатов X.509 называемой удостоверяющим центром (Certificate Authority, CA)) открытый ключ объекта X, он доверяет, что ему был предоставлен корректный открытый ключ. Третья сторона, на основании проведенных проверок подлинности (аттестаций, нотариальных заверений и других), достоверно заявляет, что X — это единственный глобально-уникальный объект X. Наиболее распространённый способ информирования о том, что открытые ключи были удостоверены третьей стороной — встраивание их в сертификаты X.509 (или SSL), подписанные цифровой подписью издателя сертификата (обычно удостоверяющего центра).
Отпечатки сообщений (хэши)
Для обеспечения целостности данных сообщение можно просто зашифровать. Чтобы изменить содержащиеся в сообщении данные, злоумышленник должен обладать единственным ключом (в симметричных системах) или закрытым ключом (в асимметричных системах). Однако алгоритмы шифрования/дешифрования используют сложные математические функции и потому потребляют много ресурсов процессора. Шифрование всех сообщений подряд приводит к неприемлемо высокому потреблению ресурсов, и это особенно неприятно, когда конфиденциальность данных не требуется. К счастью, для уменьшения нагрузки можно использовать другие методы. Самый распространённый — нересурсоёмкая процедура, называемая односторонним хэшем, просто хэшем, или чаще отпечатком сообщения (message digest) (в обиходе просто digest). Алгоритм хэшей или отпечатков создаёт уникальный и относительно небольшого фиксированного размера (независимо от исходной длины сообщения) отпечаток (digest), вернуть который в исходное состояние невозможно. Полученные хэши или отпечатки иногда называются отпечатками пальцев, поскольку они уникально описывают исходный открытый текст. Отправляемое сообщение включает сразу и открытый (незашифрованный) текст и отпечаток этого сообщения. Алгоритм хэширования применяется к полученному открытому тексту, и, если результат совпадает с полученным отпечатком сообщения, значит данные не были изменены. В некотором смысле отпечатки сообщений аналогичны по концепции с контрольными суммами, но значительно отличаются от них математическими свойствами.
Самые распространённые формы отпечатков сообщений — MD5 (Message Digest 5) и SHA-1, а в последнее время SHA-224, SHA-256, SHA-384 и SHA-512 (последние четыре — представители семейства алгоритмов SHA-2 (Secure Hash Algorithm 2)). В августе 2015 года NIST представил алгоритм SHA-3. Рисунок 3 демонстрирует использование отпечатков сообщений.

Рисунок 3 — Отпечатки сообщений
У простого добавления отпечатка сообщения к блоку открытого текста есть очевидное слабое место: путём замены сразу и открытого текста, и его отпечатка злоумышленник может подменить исходное сообщение или даже послать ложное сообщение от имени легального отправителя.
Примечание: Таблица 1 документа NIST SP800-107 содержит оценку относительной «силы» каждого алгоритма создания хэшей или отпечатков сообщений.
Аутентификационный код сообщения (Message Authentication Code, MAC)
Для аутентификации и поддержания целостности данных может использоваться так называемый аутентификационный код сообщения (MAC). MAC сочетает в себе отпечаток сообщения и общий (секретный) ключ. Часть, являющаяся ключом, аутентифицирует отправителя, а часть, представляющая собой хэш или отпечаток, обеспечивает целостность данных. Существуют две формы MAC. MAC, основанный на симметричном блочном шифре (таком как TDEA или AES), называется CMAC. MAC, основанный на алгоритме хэширования (создания отпечатка сообщения), называется Hashed MAC (HMAC) и, вероятно, используется наиболее широко.
Самые распространённые формы HMAC — HMAC-MD5, HMAC-SHA-1, а в последнее время HMAC-SHA-224, HMAC-SHA-256 и HMAC-SHA-384. На рисунке 4 показано, как используется MAC. Применяемый в HMAC закрытый ключ может быть сгенерирован различными методами (определёнными в SP 800-107, ревизия 1). На упрощённом уровне этот ключ HMAC может быть рассмотрен как простая «соль», назначение которой — аутентифицировать источник. Примечание: Алгоритм хеширования MD5 и, косвенно, любые использующие его алгоритмы, такие как HMAC-MD5, получили в большинстве документов IETF статус «нерекомендуемые» в связи с некоторыми теоретическими уязвимостями, опубликованными в начале 2005 года. Тем не менее, наличие этих недостатков не говорит о том, что использовать данные алгоритмы нельзя. Скорее это значит, что, как только появится возможность, следует перейти на более безопасные HMAC (семейство HMAC-SHA-2). К сожалению, во многих старых системах единственным поддерживаемым алгоритмом HMAC может быть HMAC-MD5.

Рисунок 4 — Аутентификационный код сообщения (MAC)
Секретный ключ (2) распространяется с помощью некой процедуры распространения ключей (3) до начала взаимодействия. Открытый текст (1) обрабатывается алгоритмом хеширования (4) для создания отпечатка отправляемого сообщения (5), который затем шифруется (8) с использованием выбранного алгоритма и ключа (2). Затем сообщение и его зашифрованный отпечаток отправляется получателю по незашифрованному каналу передачи (6). Получатель берёт открытый текст (1) и пропускает его через тот же алгоритм хэширования (4) для создания отпечатка полученного сообщения (7). Принятый зашифрованный отпечаток отправляемого сообщения (5) расшифровывается (9) с использованием выбранного алгоритма и ключа (2), и полученный в результате отпечаток отправляемого сообщения (в открытом виде) сравнивается с отпечатком полученного сообщения (7). Совпало — все в шоколаде, не совпало — сами знаете в чём.
На рисунке 4 показано шифрование только отпечатка или хэша. В результате мы получаем гарантию целостности сообщения. Если требуется также обеспечение конфиденциальности сообщения, то можно зашифровать его целиком (сразу и открытый текст, и хэш, или отпечаток). Протокол TLS (SSL) обеспечивает эту (последнюю) возможность в фазе записи данных.
Показанный на рисунке 4 ключ назван секретным ключом, но это также и закрытый ключ. Он назван секретным ключом, поскольку для того, чтобы оставаться в тайне, он должен постоянно быть закрытым. Аналогично, и даже более корректно, он может быть назван закрытым ключом (хотя термин закрытый ключ имеет подтекст асимметричной криптографии), поскольку он должен постоянно быть закрытым для того, чтобы оставаться в тайне. Иногда в жизни так трудно разобраться.
Цифровые подписи
В мире асимметричной криптографии, или криптографии с открытым ключом, для аутентификации и поддержания целостности данных используются так называемые цифровые подписи. Отправляемое сообщение, опять же, хэшируется с помощью, скажем, MD5, SHA-1, SHA-256 или SHA-384, чтобы можно было убедиться в целостности данных. Полученный в результате отпечаток сообщения затем зашифровывается с помощью закрытого ключа отправителя (с точностью до наоборот относительно обеспечения конфиденциальности в криптографии с открытым ключом, смотрите примечание ниже). Получателю отправляются и сообщение в виде открытого текста, и зашифрованный отпечаток. Получатель расшифровывает отпечаток сообщения с помощью открытого ключа отправителя, применяет алгоритм хэширования к полученному открытому тексту, и, если результаты совпали, то подтверждается сразу и подлинность отправителя, и целостность данных.
Наиболее распространённые алгоритмы цифровых подписей — RSA-MD5, RSA-SHA-1, RSA-SHA-256, RSA-SHA-384, DSA (Digital Signature Architecture, стандарт правительства США, определён в FIPS-186, ревизия 4) и ECDSA (Elliptic Curve Digital Signature Algorithm, определён в FIPS-186, ревизия 4). Типичные размеры ключа для систем цифровых подписей RSA и DSA — 768, 1024, а в последнее время 2048 бит (текущие рекомендации US NIST на период с 2010 по 2030 год), а то и больше. Размеры ключа цифровых подписей ECDSA для аналогичного уровня обеспечения безопасности значительно меньше и обычно составляют 112, 128, 192 или 256 бит. На рисунке 5 показано, как используется цифровая подпись. Примечание: Алгоритм хеширования MD5 и, косвенно, любые использующие его алгоритмы, такие как RSA-MD5, получили в большинстве документов IETF статус «нерекомендуемые» в связи с некоторыми теоретическими уязвимостями, опубликованными в начале 2005 года. Тем не менее, наличие этих недостатков не говорит о том, что использовать данные алгоритмы нельзя.

Рисунок 5 — Цифровая подпись
Примечание: Как показано на рисунке, с помощью находящегося в свободном доступе открытого ключа любой может расшифровать сообщение и сделать с него контрольный отпечаток, а зашифровать его может только обладатель закрытого ключа — таким образом обеспечивается гарантия подлинности источника. Лежащий в основе цифровой подписи отпечаток сообщения обеспечивает его целостность. Такое применение отличается от обеспечения конфиденциальности сообщения, при котором отправитель шифрует данные с помощью открытого ключа получателя, а расшифровать сообщение можно только с помощью закрытого ключа получателя.
Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.
Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 8 декабря 2015 г.
Переведено участниками проекта Pro-LDAP.ru в 2013-2017 г.
НАУКА и ОБРАЗОВАНИЕ
![]()
Файл статьи: 1О©╫О©╫О. ©╫_P.pdf (440.29Кб)
автор: Гончаров Н. О.
МГТУ им. Н.Э. Баумана
Введение
Целью работы является изучение симметричного шифрования (гаммирования), которое считается одним из самых высокопроизводительных методов для защиты информации, рассмотрение известных блочных шифров, общей схемы, и принципов работы шифрования, разработка программного обеспечения по реализации алгоритма шифрования, основанного на гаммировании.
Криптография в прошлом использовалась лишь в военных целях. Однако сейчас, по мере образования информационного общества, криптография становится одним из основных инструментов, обеспечивающих конфиденциальность, авторизацию, электронные платежи, корпоративную безопасность и бесчисленное множество других важных вещей.
Криптографические методы могут применяться для решений следующих проблем безопасности: конфиденциальность передаваемых/хранимых данных; аутентификация; целостности хранимых и передаваемых данных; обеспечение подлинности документов. Так же эти методы применяются в базовых метода преобразования информации, которыми являются: шифрование (симметричное и несимметричное); вычисление хэш функций; генерация электронной цифровой подписи; генерация последовательности псевдослучайных чисел.
Шифрование – это обратимое преобразование данных с целью их сокрытия от посторонних. Почти все методы шифрования используют ключ шифрования – секретную кодовую последовательность, используемую в процессе преобразования информации.
Методов шифрования было придумано множество – от шифров простой замены (наиболее известный пример – «Пляшущие человечки» Конан Дойля) до принципиально невскрываемого шифра Вернама (двоичное сложение исходного текста с однократно используемой случайной последовательностью).
Классическими шифрами принято называть симметричные блочные шифры, которые для шифрования и дешифрования информации используют один и тот же ключ и шифруют информацию блоками. Длина блока обычно составляет 8 или 16 байт. Есть алгоритмы, допускающие переменную длину блока.
Самыми известными блочными шифрами являются отечественный шифр, определённый стандартом ГОСТ 28147-89 и американский стандарт DES ( D ata Encryption Standard) , у которых длина блока n равна 64 и 256 соответственно.
Необходимо отметить, что кроме блочных шифров существуют и активно используются поточные шифры. Они, как и блочные шифры, используют симметричный ключ, но выполняют шифрования входного потока побайтно или, иногда, побитно. Идея поточного шифра состоит в том, что на основе симметричного ключа вырабатывается ключевая последовательность (гамма–последовательность), которая складывается по модулю два (операция xor) с входным потоком. Поточные шифры, как правило, более производительны, чем блочные и используются для шифрования речи.
Термин гамма-последовательность (gamma sequence) обычно употребляется в отношении последовательности псевдослучайных элементов, которые генерируются по определенному закону и алгоритму.
В процессе выполнения работы выполнен анализ известных данных о методах симметричного шифрования. Рассмотрен метод классического шифрования Шеннона [1], блочные шифры — американский шифр DES [2] и отечественный шифр, определённый стандартом ГОСТ 28147-89, IDEA ( International Data Encryption Algorithm ), CAST , Шифр Skipjack , RC 2 и RC 4 и др. [3]
Кроме того, выполнена опытно-экспериментальная работа по разработке программного обеспечения по реализации алгоритма шифрования, основанного на гаммировании. Используя при этом язык объектно-ориентированного программирования Visual Basic [4].
1. Симметричное шифрование (гаммирование)
Симметричное шифрование — это метод шифрования, при котором для защиты информации используется ключ, зная который любой может расшифровать или зашифровать данные [2].
Алгоритмы с симметричными ключами имеют очень высокую производительность. Криптография с симметричными ключами стойкая, что делает практически невозможным процесс дешифрования без знания ключа. При прочих равных условиях стойкость определяется длиной ключа. Так как для шифрования и дешифрования используется один и тот же ключ, при использовании таких алгоритмов требуются высоко надежные механизмы для распределения ключей. Ещё одна проблемой является безопасное распространение симметричных ключей. Алгоритмы симметричного шифрования используют ключи не очень большой длины и могут быстро шифровать большие объемы данных.
Гаммированием (gamma xoring) называется процесс «наложения» гамма-последовательности на открытые данные. Обычно это суммирование по какому-либо модулю, например, по модулю два, такое суммирование принимает вид обычного «исключающего ИЛИ» суммирования.
Симметричное шифрование остаётся самым актуальным и криптографически гарантированными методом защиты информации. В симметричном шифровании, основанном на использовании составных ключей, идея состоит в том, что секретный ключ делится на две части, хранящиеся отдельно. Каждая часть сама по себе не позволяет выполнить дешифрование.
Основным недостатком симметричного шифрования является то, что секретный ключ должен быть известен и отправителю, и получателю. Это создает проблему распространения ключей. Получатель на основании наличия зашифрованного и расшифрованного сообщения не может доказать, что он получил это сообщение от конкретного отправителя, поскольку такое же сообщение он мог сгенерировать самостоятельно. Схема распределения ключей представлена на рисунке 1.

Рисунок 1. Схема распределения ключей при симметричном шифровании
2. Схемы и принципы симметричного шифрования
В общедоступной литературе математические задачи криптографии на современном уровне впервые были рассмотрены К. Шенноном в работе [1], хотя по некоторым данным в России аналогичные результаты были известны и раньше. В этой работе К. Шеннон с помощью предложенного им теоретико-информационного подхода решил некоторые из важнейших проблем теоретико-информационной криптографии. В частности, им показано, что абсолютной надежностью могут обладать только те шифры, у которых объем ключа не меньше объема шифруемой информации, а также приведены примеры таких шифров. Там же были предложены и принципы построения криптографически надежных преобразований с помощью композиции некоторых разнородных отображений и т. п.
В указанной работае Шеннона были сформулированы и доказаны математическими средствами необходимые и достаточные условия недешифруемости системы шифра. Было установлено, что единственным недешифруемым шифром является, так называемая, лента одноразового использования (One-time Pad), когда открытый текст шифруется с помощью случайного ключа такой же длины. Это обстоятельство делает абсолютно стойкий шифр очень дорогим в эксплуатации.
Прежде всего, Шеннон сделал вывод, что во всех, даже очень сложных шифрах, в качестве типичных компонентов можно выделить шифры замены и перестановки.
Математическое описание шифра замены выглядит следующим образом. Пусть Х и Y — два текста (открытый и шифрованный соответственно), Х взаимно однозначно отображается в текст Y. Действие шифра замены можно представить как преобразование открытого текста X = (x1,x2,…xn) в шифрованныйтекст Y = g ( X )=g (x1,x2,…,x n ).
Математическое описание шифра перестановки выглядит следующим образом. Пусть длина отрезков, на которые разбивается открытый текст, равна m , а S — взаимно однозначное отображение X = (x1,x2,…x m ) в себя. Шифр перестановки преобразует отрезок открытого текста x1,x2,…x m в отрезок шифрованного текста S (x1,x2,…,x m ) (рисунок 2).

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

Блочный шифр Ak представляет собой автомат, входами и выходами которого являются последовательности X и длины n. Входная последовательность X разбивается на блоки длины n и каждый блок шифруется независимо один от другого одним ключем K.
Поточный шифр представляет собой автономный автомат, который вырабатывает псевдослучайную двоичную последовательность
. В качестве шифрованной информации выступает последовательность
. Обычно в качестве функции наложения
используется функция сложения в каком либо конечном поле или кольце, в частности, в двоичном случае
. В последнем случае обратное преобразование (дешифрование) осуществляется по формуле
, что позволяет на обоих концах канала связи иметь шифраторы с одинаковыми ключами.
Поточные шифры, как правило, более производительны, чем блочные и используются для шифрования речи, сетевого трафика и иных данных с заранее неизвестной длиной. При достаточно частой смене ключа для выработки гаммы — последовательности поточные шифры обеспечивают достаточную стойкость.
3. Классическое шифрование
Шифр DES работает следующим образом [2]. Данные представляются в цифровом виде и разбиваются на блоки длинной 64 бита, затем поблочно шифруются. Блок разбивается на левую и правую части. На первом этапе шифрования вместо левой части блока записывается правая, а вместо правой — сумма по модулю два левой и правой частей. На втором этапе по определенной схеме выполняются побитовые замены и перестановки. Ключ DES имеет длину 64 бита, из которых 56 битов — случайные, а 8 — служебные, используемые для контроля ключа.
IDEA [5] — блочный шифр с длиной ключа 128 бит. Этот европейский стандарт предложен в 1990 году. Шифр IDEA по скорости и стойкости к анализу не уступает шифру DES.
CAST [5] — это блочный шифр, использующий 128-битовый ключ в США и 40-битный — в экспортном варианте. CAST используется компанией Northern Telecom (Nortel).
Шифр Skipjack [5], разработанный Агентством национальной безопасности США (National Security Agency — NSA), использует 80-битовые ключи.
Шифры RC2 и RC4 [5] разработаны Роном Рейвестом — одним из основателей компании RSA Data Security, и запатентованы этой компанией. Они используют ключи разной длины, а в экспортируемых продуктах заменяют DES. Шифр RC2 — блочный, с длиной блока 64 бита; шифр RC4 — поточный. По замыслу разработчиков, производительность RC2 и RC4 должна быть не меньше, чем у алгоритма DES.
4. Асимметричное шифрование
В 1976 году была опубликована работа молодых американских математиков У. Дифффи и М.Э. Хеллмана «Новые направления в криптографии» [6]. В данной работе центральными являются два определения: односторонняя функция и функция с секретом.
Односторонней называется функция F(Х), обладающая двумя свойствами: существует полиномиальный алгоритм вычисления значений F(Х), не существует полиномиального алгоритма инвертирования функции F. Иначе говоря, в этой функции расшифровка зашифрованного ею же текста не предусмотрена.
Функцией с секретом называется функция F k зависящая от параметра k и обладающая следующими свойствами: существует полиномиальный алгоритм вычисления значения F k (Х) для любых k и Х; не существует полиномиального алгоритма инвертирования F k при неизвестном k ; существует полиномиальный алгоритм инвертирования F k при известном k .
Шифрование при помощи функции с секретом получило также название асимметричного шифрования.
На рисунке 3 представлена блок-схема алгоритма шифрования, основанного на гаммировании.

Рисунок 3. Блок-схема алгоритма
На рисунке 4 представлена блок-схема полного алгоритма шифрования, основанного на гаммировании.

Заключение
Симметричное шифрование остаётся самым актуальным и криптографически гарантированным методом защиты информации . В симметричном шифрование, основанном на использовании составных ключей, идея состоит в том, что секретный ключ делится на две части, хранящиеся отдельно. Каждая часть сама по себе не позволяет выполнить дешифрование. Если у правоохранительных органов появляются подозрения относительно лица, использующего некоторый ключ, они могут в установленном порядке получить половинки ключа и дальше действовать обычным для симметричного дешифрования образом. Порядок работы с составными ключами — хороший пример следования принципу разделения обязанностей. Он позволяет сочетать права на разного рода тайны (персональную, коммерческую) с возможностью эффективно следить за нарушителями закона, хотя, конечно, здесь очень много тонкостей и технического, и юридического плана.
Алгоритмы с симметричными ключами имеют очень высокую производительность. Криптография с симметричными ключами очень стойкая, что делает практически невозможным процесс дешифрования без знания ключа. При прочих равных условиях стойкость определяется длиной ключа. Так как для шифрования и дешифрования используется один и тот же ключ, при использовании таких алгоритмов требуются очень надежные механизмы для распределения ключей.
Алгоритмы симметричного шифрования используют ключи не очень большой длины и могут быстро шифровать большие объемы данных .
Поточные шифры очень производительны, используются для шифрования речи, сетевого трафика и иных данных с заранее неизвестной длиной. При достаточно частой смене ключа для выработки гамма — последовательности поточные шифры обеспечивают достаточную стойкость.
Всем системам открытого шифрования присущи следующие основные недостатки: ключ должен передаваться по секретному каналу; к службе генерации ключей предъявляются повышенные требования, обусловленные тем, что для n абонентов при схеме взаимодействия «каждый с каждым» требуется n*(n-1)/2 ключей, то есть зависимость числа ключей от числа абонентов является квадратичной. Основным недостатком симметричного шифрования является то, что секретный ключ должен быть известен и отправителю, и получателю.
Проблемой, которая актуальна и для других криптосистем, является вопрос о том, как безопасно распространять симметричные (секретные) ключи.
В перспективах возможно: Осуществить передачу ключей на основе квантовой криптографии; разработать методы и их программно-аппаратную реализацию по увеличению длины псевдослучайной последовательности.
Литература:
1. Шеннон К. Э. Работы по теории информации и кибернетике, М.: ИЛ, 1963. 832 с.
2. A . B . Аграновский, Р.А. Хади. Практическая криптография (серия «Аспекты защиты»), М.: Солон-Пресс, 2002. 254 с.
3. Т.Л. Партыка, И.И. Попов. Информационная безопасность. М.: Форум-Инфра, 2007. 368 с.
4. С.В. Глушаков А.С.Сурядный. Программирование на Visual Basic 6. Х.: Фалио, 2004. 497с.
5. Брюс Шнайер. Прикладная криптография, 2е изд, изд.Триумф,2002. 816 с.
6. У.Диффи и М.Э.Хеллман. Новые направления в криптографии,1976 . 654 с.
- IBM Lotus Domino Enterprise Server and Notes v.7.0.2. получил сертификат соответствия ФСТЭК России
- Обзор моделей и программ мониторинга безопасного поведения пользователей
- 77-30569/340943 О периоде обобщённых клеточных автоматов