Шифрование
Содержание:
- PURPOSES FOR WHICH CRYPTOGRAPHY IS SUITABLE
- Блочное шифрование
- Цели шифрования
- Общие принципы реализации режима гаммирования
- Оглавление:
- Java Cryptography
- 2 основных типа алгоритмов асимметричного шифрования
- Дополнительные возможности аппаратных шифраторов
- Шифрование на уровне хранилища
- Виды устройств аппаратного шифрования
- Управление ключами
- Традиционная реализация ГОСТ 28147—89
- Электронная почта и переписка
- Хеш-функции
- И всё вместе Anchor link
PURPOSES FOR WHICH CRYPTOGRAPHY IS SUITABLE
In ancient times and the Middle Ages, people used cryptography to allow certain information to be found only to those to whom the secret message is addressed. Now, over the centuries, the essence of this process still remains the same.
We can find out cryptographic information security tools everywhere — smartphones, smartwatches, and other gadgets, computers and routers, tablets and smart TV, household appliances, messengers and social networks, forex and trading software, etc. All data stored and/or transferred via all those things are ALWAYS encrypted.
Encryption is the most valuable in the financial transactions process, e.g., via NetBanking or PayPal and other international payment systems, and when withdrawing cash at an ATM or during transactions with payment terminals, when acquiring at retail POS or during forex deals.
Let’s add here the tough competition among mobile operating systems, whose crypto-protection will more effectively protect user information.
Various cryptocurrencies, the most hype of the last decade, are also based on cryptographic algorithms.
Internet traffic needs crypto-protection, too, and HTTPS crypto-extension provides security on the data transferred through a secure socket layer (SSL) or transport layer security (TLS) protocol in “client-to-site” connection. Some years ago, Google accented on https and SSL-certificates using, and explained, that websites on https have better search-engine ranking.
Soon, other browsers began to use the label “http = dangerous site, https = secure” after Google Chrome. The infographics described the dynamic using https protocol by web sites can illustrate the from November 2013 to the present:
As you can see, in March 2014, the global volume of https traffic was 28.31%, then five years later, in March 2019, this figure increased almost three times, to 78.38%. But the reason of this phenomenon can be artificial (due to the pressure from the global players of the information market), the results are still very positive — we can confidently say that the level of security of data transmitted over the Internet has increased significantly. So, our information protection is enhanced.
Блочное шифрование
Зашифруем слово AVADAKEDAVRA. Поскольку шифр блочный, открытый текст разобьем на блоки по четыре символа: AVAD | AKED | AVRA. На практике блоки текста состоят из 64‒256 бит. Для каждого блока придумаем свою таблицу замены:
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
b | e | x | g | w | i | q | v | l | o | u | m | p | j | r | s | t | n | k | h | f | y | z | a | d | c |
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
p | g | x | e | n | v | c | i | l | h | u | j | b | m | r | s | w | t | k | o | f | d | z | a | y | q |
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
x | w | b | g | s | q | i | v | l | c | u | m | p | o | r | j | t | m | k | n | f | y | h | a | z | d |
А теперь шифруем каждый из блоков соответствующим алфавитом:
|
|
|
Получилось чуть лучше, нежели с поточным подходом, если говорить о стойкости. Ведь обычный шифр замены мы научились дешифровать одной левой. А при таком блочном подходе злоумышленнику придется изрядно поломать голову, прежде чем он сможет подобрать длину блока и уже тогда для каждого блока применить криптоанализ для шифров замены.
Цели шифрования
Шифрование применяется для хранения важной информации в ненадёжных источниках и передачи её по незащищённым каналам связи. Такая передача данных представляет из себя два взаимно обратных процесса:
- Перед отправлением данных по линии связи или перед помещением на хранение они подвергаются зашифровыванию.
- Для восстановления исходных данных из зашифрованных к ним применяется процедура расшифровывания.
Шифрование изначально использовалось только для передачи конфиденциальной информации. Однако впоследствии шифровать информацию начали с целью её хранения в ненадёжных источниках. Шифрование информации с целью её хранения применяется и сейчас, это позволяет избежать необходимости в физически защищённом хранилище.
Шифром называется пара алгоритмов, реализующих каждое из указанных преобразований. Эти алгоритмы применяются к данным с использованием ключа. Ключи для шифрования и для расшифровывания могут различаться, а могут быть одинаковыми. Секретность второго (расшифровывающего) из них делает данные недоступными для несанкционированного ознакомления, а секретность первого (шифрующего) делает невозможным внесение ложных данных. В первых методах шифрования использовались одинаковые ключи, однако в 1976 году были открыты алгоритмы с применением разных ключей
Сохранение этих ключей в секретности и правильное их разделение между адресатами является очень важной задачей с точки зрения сохранения конфиденциальности передаваемой информации. Эта задача исследуется в теории управления ключами (в некоторых источниках она упоминается как разделение секрета).
В настоящий момент существует огромное количество методов шифрования. Главным образом эти методы делятся, в зависимости от структуры используемых ключей, на симметричные методы и асимметричные методы. Кроме того, методы шифрования могут обладать различной криптостойкостью и по-разному обрабатывать входные данные — блочные шифры и поточные шифры. Всеми этими методами, их созданием и анализом занимается наука криптография.
Общие принципы реализации режима гаммирования
Гамма шифра
Гаммирование — это наложение (или снятие при расшифровке сообщений) на открытое (или зашифрованное) сообщение так называемой криптографической гаммы. Криптографическая гамма — это последовательность элементов данных, которая вырабатывается с помощью определенного алгоритма. Наложение (или снятие) гаммы на блок сообщения в рассматриваемом нами стандарте реализуется с помощью операции побитного сложения по модулю 2 (XOR). То есть при шифровании сообщений каждый блок открытого сообщения ксорится с блоком криптографической гаммы, длина которого должна соответствовать длине блоков открытого сообщения. При этом, если размер блока исходного текста меньше, чем размер блока гаммы, блок гаммы обрезается до размера блока исходного текста (выполняется процедура усечения гаммы).
Принцип реализации режима гаммирования при зашифровывании сообщения
Для дешифровки закрытого сообщения необходимо произвести обратную операцию. То есть каждый блок зашифрованного сообщения ксорится с блоком гаммы, и на выходе мы имеем требуемое расшифрованное сообщение.
Принцип реализации режима гаммирования при расшифровывании сообщения
В большинстве случаев размер блока исходного текста принимается равным размеру блока используемого алгоритма блочного шифрования (напомню, это 16 байт при использовании алгоритма «Кузнечик» или 4 байт при использовании «Магмы»), поэтому процедура усечения блока гаммы может понадобиться только для последнего блока исходного текста, в случае, когда общая длина сообщения не кратна размеру одного блока и последний блок получается неполный.
Усечение блока гаммы при несовпадении размеров блока исходного сообщения и блока гаммы
Чтобы обеспечить высокую стойкость шифрования, блоки гаммы должны отличаться друг от друга, а также иметь случайный (или псевдослучайный) характер. В данном случае блоки различаются благодаря так называемому инициализирующему вектору, значение которого меняется от блока к блоку. Псевдослучайность блоков гаммы при этом реализуется путем шифрования этого вектора с использованием выбранного алгоритма (мы используем «Магму»).
Инициализирующий вектор
Значение этого вектора формируется из так называемой синхропосылки, которая представляет собой число определенной длины. Для режима гаммирования длина этого числа должна быть равна половине размера одного блока используемого алгоритма блочного шифрования. Само значение синхропосылки для режима гаммирования должно быть уникальным для каждого цикла шифрования, проведенного с использованием одинаковых ключей, при этом требований к конфиденциальности синхропосылки не предъявляется (то есть ее можно передавать в открытом виде вместе с зашифрованным сообщением).
В режиме гаммирования инициализирующий вектор формируется дополнением нулями синхропосылки до размера одного блока используемого алгоритма блочного шифрования. В случае «Магмы» длина синхропосылки равна четырем байтам, длина инициализирующего вектора — восьми. Вторая часть инициализирующего вектора (заполненная нулями) будет использоваться в качестве того самого счетчика (Counter), который и лег в основу англоязычного сокращения CTR.
Выработка инициализирующего вектора в режиме гаммирования с алгоритмом блочного шифрования «Магма»
Очередной блок гаммы шифра получается благодаря шифрованию значения счетчика (его начальное значение равно инициализирующему вектору) с помощью выбранного алгоритма блочного шифрования, при этом после выработки очередного блока гаммы значение счетчика увеличивается на единицу.
Выработка гаммы шифра
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Оглавление:
- Java Cryptography
- Cipher
- MessageDigest
- Mac
- Signature
- KeyPair
- KeyGenerator
- KeyPairGenerator
- KeyStore
- Keytool
- Certificate
- CertificateFactory
- CertPath
Java Cryptography
Java Cryptography API предоставляют возможность зашифровывать и расшифровывать данные в java, а также управлять ключами, подписями и осуществлять аутентификацию (проверка подлинности) сообщений, вычислять криптографические хэши и многое другое.
В этой статье объясняются основы того, как пользоваться Java Cryptography API для выполнения различных задач в которых требуется безопасное шифрование.
В этой статье не объясняются основы криптографической теории. Вам придется посмотреть эту информацию где-нибудь еще.
2 основных типа алгоритмов асимметричного шифрования
1. Алгоритм асимметричного шифрования RSA
В 1977 году алгоритм изобрели трое ученых из Массачусетского технологического института Рон Ривест, Ади Шамир и Леонард Адлеман (Ron Rivest, Adi Shamir, and Leonard Adleman отсюда «RSA»). На сегодняшний день является наиболее используемым алгоритмом асимметричного шифрования. Его эффективность заключается в методе «первичной факторизации». По сути, выбираются два различных случайных простых числа заданного размера (например, 1024 бита каждое) и умножаются, чтобы создать еще одно гигантское число. Задача состоит в том, чтобы определить исходные простые числа из умноженного гигантского. Оказывается, эта головоломка практически невозможна для современных суперкомпьютеров, не говоря уже о людях.
В 2010 году группа добровольцев провела исследование, и им потребовалось более 1500 лет вычислительного времени (распределенного по сотням компьютеров), чтобы взломать 768-битный ключ RSA, что намного ниже стандартного 2048-битного, который используется сегодня.
Преимущество использования алгоритма шифрования RSA
Большим преимуществом RSA является его масштабируемость, ключи могут быть разной длины шифрования: 768-битный, 1024-битный, 2048-битный, 4096-битный и т. д.
RSA основан на простом математическом подходе, поэтому его реализация в инфраструктуре открытых ключей (PKI) становится легкой. Адаптивность и безопасность сделали RSA наиболее используемым алгоритмом асимметричного шифрования для различных приложений, включая сертификаты SSL / TLS, криптовалюты и шифрование электронной почты.
2. Алгоритм асимметричного шифрования ECC
В 1985 году два математика по имени Нил Коблиц и Виктор Миллер предложили использовать эллиптические кривые в криптографии. Спустя почти два десятилетия их идея воплотилась в реальность, алгоритм ECC (Elliptic Curve Cryptography) начали использовать в 2004-2005 годах.
В процессе шифрования ECC эллиптическая кривая представляет набор точек, которые удовлетворяют математическое уравнение (y 2 = x 3 + ax + b).
Как и RSA, ECC также работает по принципу необратимости. Проще говоря, в ECC число, символизирующее точку на кривой, умножается на другое число и дает другую точку на кривой. Теперь, чтобы взломать эту головоломку, вы должны выяснить новую точку на кривой. Математика ECC построена таким образом, что найти новую точку практически невозможно, даже если вы знаете исходную точку.
Преимущество использования алгоритма шифрования ECC
Не смотря на то, что по сравнению с RSA, в ECC используется более короткая длина ключа обеспечивает он большую безопасность (от современных методов взлома).
Еще одним преимуществом использования более коротких ключей в ECC является более высокая производительность. Короткие ключи требуют меньшей сетевой нагрузки и вычислительной мощности, и это отлично подходит для устройств с ограниченными возможностями хранения и обработки. Использование алгоритма ECC в сертификатах SSL/TLS значительно сокращает время, необходимое для шифрования и дешифрования, что помогает быстрее загружать веб-сайт. Алгоритм ECC используется для приложений шифрования, цифровых подписей, в псевдослучайных генераторах и т. д.
Однако проблема массового использования ECC заключается в том, что многие серверные программы и панели управления еще не добавили поддержку сертификатов ECC SSL/TLS. Мы надеемся, что это изменится в скором будущем, а пока что RSA будет продолжать оставаться наиболее используемым алгоритмом асимметричного шифрования.
Дополнительные возможности аппаратных шифраторов
Использование целой платы расширения только для аппаратного шифрования слишком расточительно. Помимо функций шифрования, производители стараются добавить в свои устройства разнообразные дополнительные возможности, например:
- Генератор случайных чисел. Он необходим в основном для генерации криптографических ключей. Вдобавок, большое количество алгоритмов шифрования применяют их и для других целей. К примеру, алгоритм электронной подписи ГОСТ Р 34.10 — 2001: При вычислении подписи используется каждый раз новое случайное число.
- Доверенная загрузка. Контроль входа на компьютер. Каждый раз, когда пользователь включает персональный компьютер, устройство будет требовать от него ввода персональной информации (например, вставить дискету с ключами). Только если устройство распознает предоставленные ключи и сочтёт их «своими», загрузка будет продолжена. Иначе пользователь будет вынужден разбирать компьютер и вынимать оттуда плату шифратора, чтобы включить компьютер (тем не менее, как известно, информация на жёстком диске также может быть зашифрована).
- Контроль целостности файлов операционной системы. Злоумышленник не сможет в ваше отсутствие что-либо поменять в операционной системе. Шифратор хранит в своей памяти перечень всех важных файлов с заранее посчитанными для каждого контрольными суммами (или хеш-значениями), и компьютер будет блокирован, если при очередной загрузке не совпадёт контрольная сумма хотя бы одного из файлов.
Устройством криптографической защиты данных (УКЗД) называется плата расширения со всеми вышеперечисленными возможностями. Устройство аппаратного шифрования, контролирующее вход на персональный компьютер и проверяющее целостность всех файлов операционной системы, называется также «электронным замком». Понятно, что аналогия не совсем полная — обычные замки сильно уступают этим интеллектуальным устройствам. Хотя ясно, что последним необходимо программное обеспечение — требуется утилита, генерирующая ключи для пользователей и хранит их список для опознания «свой/чужой». Кроме этого, необходима программа для выбора важных файлов и подсчёта их контрольных сумм. Доступ к этим приложениям обычно есть только у администратора по безопасности. Он должен заранее сконфигурировать все устройства для пользователей, а если появятся проблемы, должен разобраться в их причинах.
Шифрование на уровне хранилища
Также называемое «прозрачным» (англ. Transparent Database Encryption, TDE). Данная технология, применяется, например, в продуктах Microsoft и Oracle для шифрования и дешифрования ввода-вывода файлов БД. Данные шифруются перед записью на диск и дешифруются во время чтения в память, что решает проблему защиты «неактивных» данных, но не обеспечивает сохранность информации при передаче по каналам связи или во время использования. Преимуществом TDE является то, что шифрование и дешифрование выполняются прозрачно для приложений, то есть их модификация не требуется.
Реализация Microsoft
TDE применяется для файлов БД и журнала транзакций на уровне страниц. Страницы шифруются с помощью специального симметричного ключа шифрования базы данных (англ. Database Encryption Key), защищённого сертификатом, который хранится в БД master и шифруется её главным ключом, или асимметричным ключом, защищённым модулем расширенного управления ключами (англ. Extensible Key Manager, EKM). Применение TDE не увеличивает размер зашифрованной БД, а влияние на производительность незначительно.
Реализация Oracle
TDE применяется для файлов БД на уровне столбцов. Для таблицы, содержащей выбранные к шифрованию столбцы, создаётся симметричный ключ шифрования, защищённый главным ключом, который хранится в безопасном месте за пределами БД, называемом бумажником (англ. Wallet). Зашифрованные ключи таблиц содержатся в словаре данных (англ. Data Dictionary).
Шифрование файловой системы
Важно отметить, что традиционные методы шифрования баз данных обычно шифруют и дешифруют содержимое БД, администрирование которой обеспечивается системой управления базами данных, работающей поверх операционной системы. Это уменьшает защищённость информации, так как зашифрованная БД может быть запущена на открытой или потенциально уязвимой операционной системе
Например, Microsoft использует технологию шифрования файловой системы (англ. Encrypting File System, EFS), которая обеспечивает шифрование на уровне файлов. Каждый объект шифруется с помощью уникального ключа шифрования файлов (англ. File Encryption Key), защищённого сертификатом пользователя. Этот сертификат может быть составным, что даёт возможность получить доступ к файлу больше чем одному пользователю. Из-за расширения сферы шифрования, использование EFS может снизить производительность и усложнить администрирование, так как системному администратору требуется доступ к операционной системе для использования EFS.
Виды устройств аппаратного шифрования
Современный рынок предлагает 3 разновидности аппаратных средств шифрования информации потенциальным покупателям
- блоки шифрования в каналах связи
- самодостаточные шифровальные модули (они самостоятельно выполняют всю работу с ключами)
- шифровальные платы расширения для установки в персональные компьютеры
Почти все устройства первых двух типов узкоспециализированы. И поэтому нужно досконально исследовать ограничения, которые при установке эти устройства накладывают на соответствующие устройства, прикладное программное обеспечение и операционные системы до того, как принимать конечное решение об их покупке. В противном случае можно зря потратить деньги, нисколько не приблизившись к желаемой цели. Правда, существуют компании, которые продают коммуникационное оборудование вместе с заранее установленными устройствами аппаратного шифрования, что иногда облегчает выбор.
Платы расширения для персональных компьютеров являются более универсальным средством аппаратного шифрования и, как правило, их очень легко настроить так, чтобы они шифровали всю информацию, записываемую на жёсткий диск или пересылаемую в порты и дисководы. Обычно защита от электромагнитного излучения в платах расширения для аппаратного шифрования отсутствует, так как бессмысленно защищать эти платы, если весь компьютер не защищается аналогичным образом.
Управление ключами
Основная статья: Управление ключами
Основные угрозы ключам
Как было сказано ранее, при шифровании очень важно правильно содержать и распространять ключи между собеседниками, так как это является наиболее уязвимым местом любой криптосистемы. Если вы с собеседником обмениваетесь информацией посредством идеальной шифрующей системы, то всегда существует возможность найти дефект не в используемой системе, а в тех, кто её использует
Можно выкрасть ключи у доверенного лица или подкупить его, и зачастую это оказывается гораздо дешевле, чем взламывание шифра. Поэтому процесс, содержанием которого является составление и распределение ключей между пользователями, играет важнейшую роль в криптографии как основа для обеспечения конфиденциальности обмена информацией.
Цели управления ключами
- Сохранение конфиденциальности закрытых ключей и передаваемой информации.
- Обеспечение надёжности сгенерированных ключей.
- Предотвращение несанкционированного использования закрытых или открытых ключей, например использование ключа, срок действия которого истек.
Управление ключами в криптосистемах осуществляется в соответствии с политикой безопасности. Политика безопасности диктует угрозы, которым должна противостоять система. Система, контролирующая ключи, делится на систему генерации ключей и систему контроля ключей.
Система генерации ключей обеспечивает составление криптоустойчивых ключей. Сам алгоритм генерации должен быть безопасным, так как значительная часть безопасности, предоставляемой шифрованием, заключена в защищённости ключа. Если выбор ключей доверить пользователям, то они с большей вероятностью выбирают ключи типа «Barney», нежели «*9(hH/A», просто потому что «Barney» проще запомнить. А такого рода ключи очень быстро подбираются методом вскрытия со словарём, и тут даже самый безопасный алгоритм не поможет. Кроме того, алгоритм генерации обеспечивает создание статистически независимых ключей нужной длины, используя наиболее криптоустойчивый алфавит.
Система контроля ключей служит для наиболее безопасной передачи ключей между собеседниками. Если передавать ключ шифрования по открытому каналу, который могут прослушивать, то злоумышленник легко перехватит ключ, и всё дальнейшее шифрование будет бессмысленным. Методы асимметричного шифрования решают эту проблему, используя разные ключи для зашифровывания и расшифровывания. Однако при таком подходе количество ключей растет с увеличением количества собеседников (каждый вынужден хранить свои закрытый и открытый ключи и открытые ключи всех собеседников). Кроме того, методы асимметричного шифрования не всегда доступны и осуществимы. В таких ситуациях используются разные методы по обеспечению безопасной доставки ключей: одни основаны на использовании для доставки ключей альтернативных каналов, считающихся безопасными. Другие, в согласии со стандартом X9.17, используют два типа ключей: ключи шифрования ключей и ключи шифрования данных. Третьи разбивают передаваемый ключ на составные части и передают их по различным каналам. Также существуют различные комбинации перечисленных выше методов.
Кроме того, система управления ключами при возникновении большого количества используемых ключей выступает в роли центрального сервера ключей, хранящего и распределяющего их. В том числе она занимается своевременной заменой скомпрометированных ключей. В некоторых системах в целях быстрой коммуникации могут использоваться сеансовые ключи. Сеансовый ключ — ключ шифрования, который используется только для одного сеанса связи. При обрыве сеанса или его завершении сеансовый ключ уничтожается. Также используемые ключи обычно имеют срок действия, то есть срок, в течение которого они являются аутентичными для использования. После истечения данного срока ключ изымается системой управления и, если необходимо, генерируется новый.
Традиционная реализация ГОСТ 28147—89
Я не профессионал в области информационной безопасности, но все же знаком с темой шифрования. Заняться конкретно симметричным поточным шифрованием меня подвигли разговоры с профессиональным криптографом, которого я глубоко уважаю. И, занявшись этой темой, я постарался сделать именно хорошо, и не просто хорошо, а еще и быстро, выполняя максимальное число операций за единицу времени. Другими словами, передо мной встала задача написать программный код с максимальным значением RTT.
Криптографическое преобразование по ГОСТ 28147—89 используется для поточного шифрования информации в каналах связи и на дисковых накопителях.
В настоящее время повсеместно применяется программная реализация данного ГОСТа на РОН центрального процессора. В известных методах реализации ГОСТа вся секретная информация (ключи шифрования, блоки замен) размещаются в оперативной памяти. Это снижает надежность шифрования, поскольку, имея дамп оперативной памяти, можно полностью выявить все секретные элементы криптопреобразования. Кроме этого, метод имеет ограничения по быстродействию, обусловленные расположением основных объектов криптопреобразования в ОП и неполной загрузкой исполнительных устройств ALU. Современные процессоры, реализуя криптопроцедуру по известному методу, могут обеспечить скорость шифрования на уровне 40–60 мегабайт в секунду. И если уж разбираться до конца, то причиной низкого быстродействия и слабой защищенности криптопреобразования является программная реализация блока подстановок. Описание его в ГОСТе см. на рис. 1.
Рис. 1. Цитата из ГОСТа
Другие статьи в выпуске:
Хакер #163. Лучшие гаджеты для хакера
- Содержание выпуска
- Подписка на «Хакер»
По п. 1.2 ГОСТа этот блок реализует тетрадные (по четыре бита) перестановки в 32-битном слове, но архитектура процессора х86/64 и его система команд не способна эффективно манипулировать тетрадами.
Для программной реализации блока подстановок используют специальные таблицы в оперативной памяти, подготавливаемые на этапе инициализации криптофункции. Эти таблицы объединяют узлы замен смежных тетрад в байтовые таблицы размером 8 × 8 бит, таким образом, в оперативной памяти размещается четыре 256-байтных таблицы.
В более продвинутых реализациях эти таблицы имеют размер 1024 байта (256 слов по четыре байта). Это сделано для того, чтобы реализовать в таблицах дополнительно циклический сдвиг на 11 позиций полученного в результате подстановки 32-битного слова (следующая операция алгоритма преобразования по ГОСТу). Пример реализации ГОСТа по данному методу показан в приложении 1 (на диске).
Информация блока подстановок является секретным компонентом криптофункции (как это сформулировано в ГОСТе, см. на рис. 2).
Рис. 2. Еще одна цитата из ГОСТа
Размещение этих таблиц с ключами блока подстановок в ОП противоречит требованиям ГОСТа (п. 1.7), поскольку секретная информация становится доступной для сторонних программ, работающих на вычислительной установке. ФСБ, сертифицирующая в том числе и программные реализации шифрования по ГОСТу, на данное нарушение смотрит, мягко говоря, снисходительно. Если для размещения ключей в ОП ФСБ еще требует наличия «фигового листочка» — маскирования ключей операцией XOR, то для блоков замен в ОП ничего не требуется, они хранятся в открытом виде.
Короче говоря, ФСБ пропускает такие программные реализации криптопроцедуры, несмотря на явное снижение стойкости такого решения и прямое нарушение собственных требований по ГОСТу (п. 1.7). И это несмотря на общеизвестные методы взлома шифров через съем дампа памяти…
К вопросу хранения ключей и блоков замен во внутренних регистрах процессора мы вернемся чуть позже (есть красивое и быстрое решение), а пока только ключи шифрования мы будем хранить в ММХ-регистрах, это надежнее.
Но хватит лирики, важно в рамках рассматриваемой темы то, что этот программный код имеет производительность в 1 RTT-шку. Теперь напишем код с производительностью 2 RTT-шки
Электронная почта и переписка
Учитывая, что мы постоянно пересылаем друг другу документацию, практически у всех пользователей в электронной почте можно найти самую разную информацию — от персональных данных и сканов документов до проектов будущих договоров. В почтовом архиве, который годами хранится на компьютере или на сервере, может находиться не один важный документ. Так что даже для домашнего пользователя взлом почтового архива и кража данных может привести к внезапному оформлению кредита в микрофинансовой организации, о котором вы и не подозревали.
Если основной почтовый клиент — локальный (то есть письма загружаются с сервера и хранятся на компьютере), можно использовать инструменты для локального шифрования писем. А в случае если письма загружаются по протоколу IMAP, вполне можно автоматически организовать шифрование и повторную загрузку писем на сервер. Однако мало кто из пользователей сможет сделать это самостоятельно, и администраторам потребуется настраивать и поддерживать эту экосистему своими силами.
Хеш-функции
Хешированием (от англ. hash) называется преобразование исходного информационного массива произвольной длины в битовую строку фиксированной длины.
Алгоритмов хеш-функций немало, а различаются они своими характеристиками – криптостойкостью, разрядностью, вычислительной сложностью и т.д.
Нас интересуют криптографически стойкие хеш-функции. К таким обычно предъявляют два требования:
- Для заданного сообщения С практически невозможно подобрать другое сообщение С’ с таким же хешем
- Практически невозможно подобрать пар сообщений (СС’), имеющих одинаковый хеш.
Требования называются стойкостью к коллизиям первого рода и второго рода соответственно.
Для таких функций остается важным и другое требование: при незначительном изменении аргумента должно происходить значительное изменение самой функции. Таким образом, значение хеша не должно давать информации даже об отдельных битах аргумента.
Примеры хеш-алгоритмов
- Adler-32
- CRC
- SHA-1
- SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
- HAVAL
- MD2
- MD4
- MD5
-
N-Hash
- RIPEMD-256
- RIPEMD-320
- Skein
- Snefru
- Tiger (TTH)
- Whirlpool
- ГОСТ Р34.11-94 (ГОСТ 34.311-95)
- IP Internet Checksum (RFC 1071)
И всё вместе Anchor link
Совместное использование шифрования как передачи данных, так и их хранения на диске обеспечит наибольший уровень защиты, нежели использование какого-либо одного из этих видов шифрования. Эксперты по безопасности называют такой способ «глубокой защитой». Используя несколько способов защиты данных, вы можете достигнуть максимального уровня безопасности.
Например, если вы отсылаете незашифрованные сообщения (не шифруете передающиеся данные) с зашифрованного мобильного устройства (которое шифрует все хранящиеся данные), эти сообщения будут уязвимы для перехвата со стороны правительств, поставщиков услуг или технически подкованных злоумышленников. А сообщения, записанные на мобильном устройстве, напротив будут защищены от злоумышленников, имеющих физический доступ к устройству, но не знающих пароля.
И наоборот, если вы отправляете сообщение с использованием сквозного шифрования (шифруя передающиеся данные) на устройство, не использующее шифрование (не шифрующее хранящиеся на нём данные), эти сообщения будут недоступны для шпионов в сети. Однако если кто-либо получит физический доступ к этому мобильному устройству, то он получит доступ к сообщению и сможет его прочитать.
Учитывая приведённые примеры, идеальным способом защиты от широкого круга угроз станет шифрование данных, как хранящихся на устройстве, так и передаваемых в сети.
Для получения более подробной информации по использованию шифрования обратитесь к нашему руководству «Ключевые концепции шифрования».