Шифрование данных средствами Microsoft SQL Server. Шифрование и дешифрование базы данных Access

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

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

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

В этой статье

Обзор

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

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

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

    При шифровании баз данных, созданных в более ранних версиях Access (MDB-файлов), или применении к ним паролей используются соответствующие функции из Access 2003.

Шифрование базы данных с помощью пароля

В этом разделе описано, как создать пароль и применить к базе данных Access рабочего стола.

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

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

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

Открытие и расшифровка базы данных

Напоминание. Обязательно запомните пароль. Забытый пароль невозможно восстановить.

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

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

Мы уже публиковали обзор средств шифрования , поэтому необходимо напомнить следующее:

1. В обзоре рассматривались «универсальные» криптосистемы, работа которых в большей степени не зависит от платформы.

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

3. Данные средства работают самостоятельно в стеке между приложениями и носителями информации, что требует дополнительных ресурсов производительности и добавляет еще одно звено в цепочку передачи данных.

Учитывая все вышесказанное, возникает закономерный вопрос: нет ли более простого решения? Можно ли пожертвовать универсальностью решения в пользу производительности, удобства, безопасности, учитывая специфику работы с информацией в конкретной организации?

Допустим, в компании используется ERP, CRM или учетная система, данные которых необходимо защищать. Любая из этих систем не привязана к какой-то определенной СУБД и у нас есть свобода выбора. Тогда стоит обратить внимание на систему управления базами данных Microsoft SQL Server. Компания Microsoft стала больше уделять внимания безопасности в своих продуктах – и вот что это нам принесло на сегодняшний день.

Шифрование баз данных средствами MS SQL Server

В Microsoft SQL Server 2008 впервые реализовано прозрачное шифрование баз данных (Transparent Data Encryption). Прозрачное шифрование кодирует базы данных целиком. Когда страница данных записывается из оперативной памяти на диск, она шифруется. Когда страница загружается обратно в оперативную память, она расшифровывается. Таким образом, база данных на диске оказывается полностью зашифрованной, а в оперативной памяти – нет. Основным преимуществом TDE является то, что шифрование и дешифрование выполняются абсолютно прозрачно для приложений. Использовать преимущества шифрования может любое приложение, использующее для хранения своих данных Microsoft SQL Server. При этом модификации или доработки приложения не потребуется.

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

1. Каждой базы данных шифруется при помощи специального ключа – Database Encryption Key.

2. Database Encryption Key шифруется сертификатом, который создан в базе данных Master.

3. Сертификат базы данных Master шифруется ее главным ключом.

4. Главный ключ БД Master шифруется главным ключом службы Service Master Key.

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

Наглядно схема работы с зашифрованной базой данных выглядит следующим образом:

Рисунок 1 - Схема работы с зашифрованной базой данных

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

Так, база данных защищается более быстрым симметричным шифрованием, которое, при учете больших объемов информации, предпочтительнее. В свою очередь, ассиметричному шифрованию подвергаются ключи шифрования базы, размер которых несоизмеримо мал, но критичность их защиты выше. Использование такого подхода, на серверах с низким уровнем ввода/вывода, низким потреблением процессорного времени и оперативной памятью, достаточной для хранения больших массивов информации, влияет на производительность на 3-5% при включении TDE. Серверы с меньшим объемом ОЗУ, чьи приложения нагружают ЦПУ и систему ввода/вывода, будут страдать на 28%, что достигается асинхронным выполнением процедур SQL (распараллеливание процессов).

Что следует понимать и помнить при использовании TDE

При включении функции Transparent Data Encryption для любой пользовательской базы происходит следующее:

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

Также следует отметить, что Transparent Data Encryption (TDE) не заменяет криптографические возможности SQL Server 2005. Шифрование в MS SQL Server 2005 работает на уровне значений и столбцов, а Transparent Data Encryption (TDE) – на уровне базы данных – на более высоком уровне. Данное решение не защитит от системного администратора или администратора SQL Server, но идеально противостоит краже или изъятию самой базы данных.

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

Шифрование соединения средствами MS SQL Server

Если возможность прозрачного шифрования появилась лишь в SQL Server 2008, то защита соединения между сервером и клиентом известна еще со времен SQL Server 7.0. К релизу 2012 она претерпела значительные доработки. Если раньше, для передачи конфиденциальных данных использовался протокол SSL, то теперь пакеты «оборачиваются» в его логическое продолжение – протокол TLS.

По заявлению Microsoft: «SQL Server всегда шифрует сетевые пакеты, связанные со входом в систему. Если сертификат не был предоставлен на сервере при запуске, SQL Server создает самозаверяющий сертификат, который используется для расшифровки пакетов входа». И это действительно так: сервер создает собственный сертификат, который принимается клиентом, но шифруется лишь информация о соединении.

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

Подводя итоги

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

Системная интеграция. Консалтинг

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

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

    Запустите Microsoft Access без открытия базы данных. При работе с сетевой (общей) базой данных убедитесь, что все пользователи закрыли базу данных.

Важно! Нельзя зашифровать или дешифровать открытую базу данных.

    В меню Сервис выберите командуЗащита и подкомандуШифровать/дешифровать .

    Укажите имя базы данных, которую требуется зашифровать или дешифровать, и нажмите кнопку OK .

    Укажите имя, диск и папку для конечной базы данных и нажмите кнопку OK .

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

Создание, присоединение и исправление файлов рабочих групп

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

Создание и присоединение файла рабочей группы

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

    Запустите Microsoft Access.

    В меню Сервис выберите командуЗащита , а затем командуАдминистратор рабочих групп .

    В диалоговом окне Администратор рабочих групп нажмите кнопкуСоздать .

    В диалоговом окне Сведения о владельце рабочей группы введите свое имя, название организации и любое сочетание букв и цифр длиной до 20 знаков в качестве кода рабочей группы (WID).

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

    Нажмите кнопку OK .

Новый файл рабочей группы будет использоваться при следующем запуске Microsoft Access. Любые создаваемые учетные записи пользователей и учетные записи групп, а также их пароли, сохраняются в новом файле рабочей группы. Чтобы присоединить к рабочей группе, определенной новым файлом рабочей группы, других пользователей, скопируйте этот файл в общую папку (если он не был сохранен на шаге 5 в общей папке); после этого каждый пользователь должен будет запустить «Администратор рабочих групп» и присоединиться к новому файлу рабочей группы.

Я пытаюсь создать платформу для пользователей, которые будут хранить конфиденциальные данные о своих клиентах. Контекст довольно прост: французские законы запрещают мне иметь доступ к данным, которые хранят мои пользователи (например, медицинские записи пациентов).

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

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

Проблема в том, что я понятия не имею, с чего начать, как это сделать... и даже не на то, что искать в google. Я даже пытался найти что-то подходящее на codecanyon.net, например, и не мог любить любые соответствующие сценарии.

Заранее спасибо:)!

PS: У меня будет такая же проблема с файлами (jpg, word, pdf, xls..., которые должны быть достаточными для пользователей). Но эта другая история.

3 ответов

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

Однако я считаю, что вам не хватает важного момента: если у вас нет доступа к определенным данным, эти данные НЕ ДОЛЖНЫ поступать в вашу организацию в обычном формате. Период. Если да, то у вас уже есть доступ к нему. Таким образом, php (или любое шифрование на основе сервера) или основанные на mysql решения для шифрования не соответствуют действительности.

Единственное решение, о котором я могу думать, это объединиться с сторонним поставщиком PKI, который предоставит вашим клиентам сертификаты (возможно, на чип-картах), а клиентская сторона вашего приложения шифрует чувствительные персональные данные на клиент, прежде чем они будут отправлены на ваш сервер, а также расшифруйте эти элементы данных на клиенте. Это также означает, что вам нужно будет использовать некоторые плагины на стороне клиента, если вы хотите, чтобы эта система была веб-. Возможно, вам понадобится какое-то подписанное приложение java для управления устройством чтения карт и сертификатом.

У установки есть 2 недостатка для ваших клиентов:

Итак, предполагая, что проблема такова:

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

На самом деле это инструмент: он называется API герметизации , и это может быть достигнуто через OpenSSL или Libsodium.

Вообще-то, у меня тоже есть аналогичный проект, где я пытаюсь создать безопасную базу данных в MySQL Server, что также полезно для запуска всех действительных SQL-запросов. Он все еще находится в процессе, и существует слишком много трудностей; Я согласен.

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

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

    Второй способ: генерировать случайный ключ для каждого другого пользователя, например, во время регистрации. И данные другого пользователя могут быть просмотрены только пользователем, у которого есть ключ для его расшифровки, который здесь только у пользователя. И затем вы применяете первый подход после этого. т.е. вы выбираете ключ, который будет использоваться для шифрования этих ключей разных пользователей. а затем сохраните этот зашифрованный ключ в базе данных в отдельной таблице. Чтобы в следующий раз пользователь попытался получить доступ к своим данным, его введенный ключ (может быть его пароль) будет зашифрован вашим выбранным статическим ключом, если этот зашифрованный ключ находится в таблице вашей базы данных, вы получите данные этого пользователя, расшифровать его своим ключом и отобразить его/ее.
    Все, что вам нужно, это,
    (i) платформа программирования для выбора, лучше JAVA.
    (ii) узнать, как использовать базу данных с этим языком программирования, MySQL Server - отличный выбор для работы. (iii) И хороший алгоритм шифрования для реализации.

Надеюсь, я не рассердился на этот ответ:) Приветствия.