Шифрование баз данных

Шифрование хранимых данных в MySQL 5.7

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

Шифрование на уровне базы данных

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

Шифрование данных в MySQL 5,7 имеет следующие преимущества:

  • Надежное шифрование AES-256 для таблиц InnoDB;
  • Прозрачное для приложений. Отсутствие кода для приложения, схемы. Нет необходимости изменять тип данных;
  • Прозрачное для администраторов баз данных. Ключи не управляются администраторами баз данных;
  • Управление ключами. Ключи можно безопасно хранить отдельно от данных, а смена ключей является простой.

MySQL 5.7 свойственно шифрование только таблиц InnoDB, при этом остаются открытыми следующие файлы: binlogs, redo logs, relay logs, slow log, error log, general log, и audit log.

Еще один заслуживающий внимания фактор — защита главного ключа внутри ключевого файла.

Шифрование и дешифрование базы данных Access

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

Пример

Начнем с того, что разрешим шифрование MySQL, добавив следующие параметры в файл конфигурации my.cnf.

[mysqld] early-plugin-load=keyring_file.so keyring_file_data=/var/lib/mysql/keyring

Следующим шагом является запуск службы и проверка активности плагина.

mysql> SELECT plugin_name, plugin_status FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name LIKE ‘keyring%’; +—————+—————+ | plugin_name | plugin_status | +—————+—————+ | keyring_file | ACTIVE | +—————+—————+

Мы также можем проверить настройки шифрования баз данных.

mysql> show global variables like ‘%keyring%’; +——————-+————————+ | Variable_name | Value | +——————-+————————+ | keyring_file_data | /var/lib/mysql/keyring | +——————-+————————+

Чтобы зашифровать таблицы в InnoDB, следует убедиться в том, что параметр innodb_file_per_table включен (ON).

mysql> show global variables like ‘innodb_file_per_table’; +————————+——-+ | Variable_name | Value | +————————+——-+ | innodb_file_per_table | ON | +————————+——-+

Если этот параметр выключен (OFF), нужно добавить следующие параметры для файла конфигурации my.cnf, и перезапустить службу.

[mysqld] innodb_file_per_table=ON

Рассмотрим шифрование базы данных MySQL в действии. Создадим таблицу для хранения конфиденциальных данных.

mysql> CREATE TABLE sample_db.sensitive_data_tb ( id int primary key auto_increment, payload varchar(256) ) engine=innodb;

Добавляем строку к таблице.

mysql> INSERT INTO sample_db.sensitive_data_tb(payload) VALUES(‘Private sensitive data’);

Используем команду strings, чтобы извлечь каждую строку символов в двоичном файле, который относится к таблице sensitive_data_tb.

$ strings /var/lib/mysql/sample_db/sensitive_data_tb.ibd infimum supremum Private sensitive data

Также можно проверить, что ключевой файл пуст (нет главного ключа).

$ cat /var/lib/mysql/keyring

Чтобы использовать шифрование баз данных в таблице sensitive_data_tb, нужно сменить таблицу.

mysql> ALTER TABLE sample_db.sensitive_data_tb encryption=’Y’;

Если мы попытаемся вывести таблицу sensitive_data_tb, то увидим, что теперь данные зашифрованы, и их невозможно увидеть из файловой системы.

$ strings /var/lib/mysql/sample_db/sensitive_data_tb.ibd bbf7aee4-a14a-11e6-8d4c-080027001884 {i<|4w RMt_

Хотя мы не можем видеть данные из файловой системы, их можно увидеть из MySQL, используя традиционный оператор SQL.

mysql> SELECT * FROM sample_db.sensitive_data_tb; +—-+————————+ | id | payload | +—-+————————+ | 1 | Private sensitive data | +—-+————————+

Также можно проверить, что главный ключ генерируется в MySQL.

$ cat /var/lib/mysql/keyring Keyring file version:1 XXXX

Можно сменить главный ключ шифрования базы данных MySQL, выполнив инструкцию alter instance.

mysql> alter instance rotate innodb master key;

Можно верифицировать смены ключа, проверив временную отметку ключевого файла.

$ ls -al /var/lib/mysql/keyring

Просмотреть список зашифрованных таблиц, можно выполнив запрос.

mysql> SELECT * FROM information_schema.tables WHERE create_options LIKE ‘%ENCRYPTION="Y"%’;

Заключение

В этой статье я объяснил принципы шифрования данных на уровне базы в новой версии MySQL. Также я продемонстрировал их на реальных примерах. Теперь вы можете применять эти принципы и приведенные примеры для защиты конфиденциальной информации.

Перевод статьи “Data Encryption at Rest in MySQL 5.7” был подготовлен дружной командой проекта Сайтостроение от А до Я.

При выборе метода шифрования необходимо исходить из правила — «Если стоимость взлома алгоритма выше, чем стоимость зашифрованных данных, вы,
скорее всего, в безопасности»
Брюс Шнайер.

НЕМНОГО ТЕОРИИ
Существует два метода шифрования:

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

Электронная цифровая подпись (ЭЦП) – это разновидность асимметричного шифрования, когда документ подписывается закрытым ключом, а достоверность документа проверяется открытым.
Хотя в реальности это выглядит несколько сложнее. Хэш-функцией создается хэш документа, который и подписывается закрытым ключом. Далее, эта подпись добавляется к документу.
При проверке подписи, хэш-функцией создается хэш проверяемого документа.

Шифрование хранимых данных в MySQL 5.7

Подпись, присоединенная при подписи, дешифруется открытым ключом. Сравниваются два хэша, если они равны, то все в порядке.

Сертификат безопасности – если упростить до предела, сертификат безопасности и является тем самым открытым ключом с дополнительной информацией. Обычно,
сертификаты располагаются в базах данных центров сертификации, которые и формируют из открытого ключа, сертификат. Эти центры отвечают за достоверность сертификатов.
На практике, если вы получили документ, подписанный ЭЦП, и хотите проверить подлинность подписи, необходимо проверить сертификат в центре сертификации и, если он действительно принадлежит отправителю и не просрочен, проверить целостность документа.
При отправке шифрованного сообщения, получаете сертификат получателя в центре, зашифруете сообщение открытым ключом из сертификата и отправляете получателю.
Поскольку создание сертификата и размещение в базе данных дело платное, можно создать временный сертификат. Это сертификат, который не удостоверен в центре сертификации, и его достоверность не может быть подтверждена кроме как вашим словом.
Каждая локальная машина под управлением любой ОС имеет свою локальную базу сертификатов. В Windows для просмотра сертификатов достаточно запустить консоль управления набрав в командной строке certmgr.msc, в Linux можно использовать апплет шифрования оболочки, хотя там возможностей больше.
Обычно сертификаты попадают в эту базу автоматически, когда используется шифрованное соединение вроде SSL, VPN и др., однако временный сертификат необходимо добавлять в ручную.

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

МЕТОДЫ ШИФРОВАНИЯ
В 1С возможны три варианта с помощью которых можно шифровать данные:

  1. Шифрование методом встроенного объекта «МенеджерКриптографии».
  2. Шифрование с использованием внешних компонент.
  3. Шифрование непосредственно в 1С.

ШИФРОВАНИЕ МЕТОДОМ ВСТРОЕННОГО ОБЪЕКТА «МенеджерКриптографии».
Этот метод достаточно подробно описан в Синтакс-Помощнике. Поэтому я опишу только последовательность работы с ним.
Создаем объект МенеджерКриптографии.

Где «Microsoft Enhanced Cryptographic Provider v1.0» и есть тот самый криптопровайдер, а «1» тип который можно посмотреть в реестре.

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

ШИФРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ВНЕШНИХ КОМПОНЕНТ
Использование внешних компонент зависит от опыта и прихоти программиста. Есть множество бесплатных и платных реализаций.
Каждая из таких реализаций предусматривает наличие собственных методов управления ключами и алгоритмами шифрования, поэтому описывать хотя бы некоторые из них не имеет никакого смысла, так как каждый выберет реализацию по душе.
В качестве единственного примера реализации предлагаю статью «Шифрование
и защита информации в 1С:Предприятие 7.7/8.0/8.1/8.2», так как она использует широко распространённую платформу .Net Framework, в которой можно реализовать шифрование множеством алгоритмов.

ШИФРОВАНИЕ НЕПОСРЕДСТВЕННО В 1С
Чаще всего, бывают случаи, когда «танцы с бубнами» вокруг сертификатов абсолютно не нужны. Никто не будет заморачиваться покупкой сертификатов, а создание и отслеживание временных сертификатов, только добавляет «головной боли» программисту. К тому же необходимо всего лишь передать ведомость по зарплате в филиал или в документообороте создать персональную служебную записку.
Для этого можно реализовать достаточно надежный для этих целей алгоритм шифрования на встроенном языке.
Основными ограничениями в этом случае являются отсутствие в 1С методов для работы с двоичными данными и производительность платформы.
Обойти ограничения отсутствия методов двоичного счисления можно применив для работы алгоритма обычную десятичную математику.
С производительностью, к сожалению, ничего сделать нельзя. Все попытки существенно увеличить производительность при шифровании и дешифровании не привели к успеху, натыкаясь на ограничения платформы.

RSA для 1С
С теорией алгоритма RSA можно познакомиться здесь.
Основываясь именно на этом материале был реализован программный код состоящий всего из шести небольших функций.

Функции расположены в модуле объекта обработки «ОбменСообщениями» из демонстрационного примера |File: demo.zip — Hash: MD5 — 63AF4F485464C863D6B626BAEC44C6C0|.
Демонстрационный пример представляет из себя средство обмена сообщениями между пользователями 1С.

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

Алгоритм RSA был разработан еще в 1977 г. В 2003 г. Ади Шамир и Эран Тромер разработали схему устройства TWIRL, которое при стоимости $ 10 000 может дешифровать 512-битный ключ за 10 минут, а при стоимости $ 10 000 000 – 1024-битный ключ меньше, чем за год.
Однако этот алгоритм используется и до настоящего времени с рекомендуемой длинной ключа 2048 бит.
В нашем же случае используется ключ примерно в 14 бит, увеличить длину ключа можно увеличив период диапазона.

Однако значительное увеличение, резко замедляет процесс шифрования и дешифрования.

9.3 Методы защиты информации

Что такое защита информации?

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

  • резервированием файлов;
  • архивным копированием файлов;
  • ограничением доступа к информации;
  • применением антивирусных средств.

Резервирование файлов

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

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

В этом способе резервирования получается простая копия одного или нескольких файлов или файловой структуры, то есть дерева каталогов с входящими в них файлами на том же или другом носителе информации (диске, магнитной ленте, СD, flesh и т.д.). Резервные копии занимают столько же места, сколько занимают исходные файлы. В MS-DOS – это команды COPY, XCOPY, DISKCOPY. В Norton Commander, FAR и др. – есть аналогичные команды. Копирование файлов, каталогов и дисков в Windows выполняется при помощи буфера обмена или другим способом. Резервирование файлов применяется также при транспортировке файлов с одной ЭВМ на другую, если они не объединены в сеть.

Архивное копирование файлов

Основная особенность архивного копирования файлов – это сжатие файлов с целью уменьшения занимаемого архивной копией пространства на машинном носителе информации. При таком резервировании создается один архивный файл, представляющий собой набор из одного или нескольких сжатых файлов, откуда их можно извлечь в первоначальном виде. Размер сжатого файла от двух до десяти раз меньше размера файла-оригинала. Степень сжатия зависит, во-первых, от типа файла, а во-вторых, от программы-архиватора. Больше всех сжимаются файлы баз данных и текстовые файлы, а меньше всех – двоичные программные файлы (типа ЕХЕ и СОМ).

Процесс записи файлов в архивный файл называется архивированием(упаковкой), извлечение файлов из архива – разархивированием (распаковкой), а архивный файл – архивом .

Архив
Архивный файл содержит оглавление, позволяющее узнать, какие файлы содержатся в архиве. Некоторые архиваторы могут создавать многотомные архивы.

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

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

Ограничение доступа к информации

Под ограничением доступа к информации понимается исключение несанкционированного доступа к ней. Оно обеспечивается программными и техническими средствами:

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

Пароли

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

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

Шифрование

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

Защита дисков

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

Защита локальной сети

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

Электронные ключи

Электронные ключи относятся к аппаратным средствам защиты программ и данных.

Электронный ключ представляет собой специализированную заказную микросхему (чип или сим-карта).

Шифрование базы данных

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

Применение программно-аппаратных комплексов

Перспективным направлением является применение программно-аппаратных комплексов защиты, которые выполняют следующие функции защиты:

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

Защищенное изготовление ЭВМ

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

Кроме этого предусмотрены:

  • средства криптографической защиты;
  • система разграничения доступа с электронным ключом Touch Memory;
  • съемный накопитель на жестком магнитном диске.

Специфика обработки конфиденциальной информации

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

Стеганографические системы

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

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

Контейнер + скрываемое сообщение + стегоключ = стегоконтейнер

Контейнер – любая информация, предназначенная для сокрытия тайных сообщений.

Скрываемое (встраиваемое) сообщение – тайное сообщение, встраиваемое в контейнер.

Стегоключ – секретный ключ, необходимый для скрытия (шифрования) информации.

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

Стегоконтейнер – контейнер, содержащий встроенное сообщение.

Стеганографический канал (стегоканал) – канал скрытой передачи информации. Чтобы не вызывать подозрений, в результате описанных выше преобразований передаваемый стегоконтейнер для стороннего наблюдателя практически ничем не должен отличаться от исходного контейнера. Но этого мало. Чтобы стегосистема была надежной, при ее построении необходимо исходить из предположения, что наш пресловутый «цензор» имеет полное представление о применяемой стеганографической системе и деталях ее реализации. Единственной неизвестной ему величиной является стегоключ. Исходя из этого предположения, стегосистема должна быть сконструирована таким образом чтобы только обладатель стегоключа имел возможность выделить из стегоконтейнера встроенное сообщение, и, главное, чтобы только обладатель стегоключа имел возможность установить факт присутствия скрытого сообщения.

Компьютерная стеганография

В настоящее время в связи с развитием цифровой техники и средств телекоммуникаций возникло новое направление – компьютерная стеганография.

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

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

Примеры

Не очень сложные компьютерные стегосистемы уже реально применяются злоумышленниками (в частности, «виросописателями»). Известен, например, вирус, имеющий кодовое название «W32/Perrun». Этот вирус «прячет» свое тело объемом 18КБ в файле *.jpg. Точнее говоря, он просто добавляет свой код в конец *.jpg файла. С точки зрения стеганографии (впрочем, и с точки зрения вирусологии) это весьма примитивный вирус. Но он показывает метод, как внедрить в систему программу – закладку большого объема. Нужно сделать эту программу двухкомпонентной. Стартовая часть, которая только ищет основное тело программы в других файлах, может быть очень маленькой, что облегчает ее внедрение. Объем же основной части программы может быть очень большим, и при этом риск ее обнаружения может быть сведен к минимуму.

Возможности современных методов компьютерной стеганографии можно хорошо прочувствовать, поэкспериментировав, например, со свободно распространяемыми стегопрограммами. Одна из самых распространенных утилит, умеющая прятать информацию в графических (форматы gif, bmp) и звуковых (формат wav) файлах является программа Э.Брауна S-Tools. Программа позволяет не только скрыть сообщение, но и зашифровать его с помощью стойкого криптоалгоритма, что обеспечивает как высокую скрытность факта передачи сообщения, так и стойкость секретного сообщения.

С помощью данной программы в графический файл внедрен целый куплет одной песни вместе с припевом (формат MP3, объем 46,4 КБ). Полученный стегоконтейнер можно рассмотреть на рисунке. Визуально невозможно определить, что рисунок содержит в себе еще какую-то информацию. Более того, даже имея упомянутую программу S-Tools, невозможно обнаружить, что файл содержит вложенное сообщение.

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

Добавить комментарий

Закрыть меню