Шифрование в SQL Server- использование технологии шифрования для преобразования информации, хранящейся в базе данных (БД), в шифротекст, что делает её прочтение невозможным для лиц, не обладающих ключами шифрования. В SQL Server можно шифровать соединения, данные и хранимые процедуры. Шифрование — это способ сокрытия исходного смысла сообщения или другого документа, обеспечивающей искажение его первоначального содержимого. Преобразование обычного, понятного содержимого в код называется кодированием. При этом подразумевается, что имеется взаимное однозначное соответствие между символами текста и кода — в этом и заключается основополагающее отличие кодирования от шифрования. Часто кодирование и шифрование ошибочно принимают за одно и тоже, забыв о том, что для восстановления закодированного сообщения, достаточно знать правило замены, в то время как для расшифровки уже зашифрованного сообщения помимо знания правил шифрования, требуется ключ к шифру. Под ключом в данном случае подразумевается конкретное секретное состояние параметров алгоритмов шифрования и дешифрования.
Иерархия шифрования SQL Server шифрует данные с помощью иерархической инфраструктуры шифрования и управления ключами. Каждый слой шифрует слой под ним с помощью комбинации сертификатов, асимметричных ключей и симметричных ключей. Асимметричные и симметричные ключи могут храниться за пределами SQL Server в модуле расширенного управления ключами (EKMExtensible Key Management).
Каждый уровень иерархии шифрования шифрует слой под ним и отображает наиболее распространенные конфигурации шифрования. Доступ к началу иерархии обычно защищен паролем .
Так же стоит учитывать следующие принципы: Для лучшей производительности шифруйте данные с помощью симметричных ключей вместо сертификатов или асимметричных ключей. Главные ключи базы данных защищены главным ключом службы. Главный ключ службы создается программой установки SQL Server и шифруется с помощью API защиты данных Windows (DPAPI) Возможны и другие иерархии шифрования, устанавливающие дополнительные слои. Модуль Extensible Key Management (EKM) содержит симметричные или асимметричные ключи вне SQL Server. Прозрачное шифрование данных (TDE) должно использовать симметричный ключ, называемый ключом шифрования базы данных, который защищен либо сертификатом, защищенным главным ключом базы данных master database, либо асимметричным ключом, хранящимся в EKM. Главный ключ службы и все главные ключи базы данных являются симметричными ключами.
SQL Server предоставляет следующие механизмы шифрования: Функции Transact-SQL Асимметричные ключи Симметричные ключи Сертификаты Прозрачное шифрование данных (TDE)Transparent Data Encryption
Функции Transact-SQL Отдельные элементы могут быть зашифрованы при вставке или обновлении с использованием функций Transact-SQL.
Асимметричные ключи Асимметричный ключ состоит из закрытого ключа и соответствующего открытого ключа. Каждый ключ может расшифровать данные, зашифрованные другим. Асимметричное шифрование и дешифрование относительно ресурсоемки, но они обеспечивают более высокий уровень безопасности, чем симметричное шифрование. Асимметричный ключ может использоваться для шифрования симметричного ключа для хранения в базе данных.
Симметричные ключи Симметричный ключ-это один ключ, который используется как для шифрования, так и для дешифрования. Шифрование и дешифрование с помощью симметричного ключа выполняется быстро и подходит для повседневного использования с конфиденциальными данными в базе данных.
Сертификаты Сертификат открытого ключа, обычно называемый сертификатом, является оператором с цифровой подписью, который связывает значение открытого ключа с личностью человека, устройства или службы, которая содержит соответствующий закрытый ключ. Сертификаты выдаются и подписываются центром сертификации (ЦС). Объект, который получает сертификат от ЦС, является субъектом этого сертификатаSQL Server. Эффективная работа . Как правило, сертификаты содержат следующую информацию: Открытый ключ субъекта Идентификационные данные субъекта, такие как имя и адрес электронной почты Время, в течение которого сертификат считается действительным Информация об эмитенте. Цифровая подпись эмитента. Основное преимущество сертификатов заключается в том, что они освобождают хосты от необходимости поддерживать набор паролей для отдельных субъектов. Вместо этого хост просто устанавливает доверие к эмитенту сертификата, который затем может подписать неограниченное количество сертификатов. Когда хост, такой как защищенный веб-сервер, назначает эмитента доверенным корневым органом, хост неявно доверяет политикам, которые эмитент использовал для установления привязок сертификатов, которые он выдает. По сути, хост доверяет тому, что эмитент проверил идентичность субъекта сертификата. Хост назначает эмитента в качестве доверенного корневого центра, помещая самозаверяющий сертификат эмитента, который содержит открытый ключ эмитента, в хранилище сертификатов доверенного корневого центра сертификации на главном компьютере. Промежуточные или подчиненные центры сертификации являются доверенными, только если они имеют действительный путь сертификации от доверенного корневого центра сертификации. Самозаверяющие сертификаты, созданные SQL Server, соответствуют стандарту X.509 и поддерживают поля X.509 v1.
Прозрачное шифрование данных (TDE)
Прозрачное шифрование данных (TDE) шифрует файлы данных SQL Server, базы данных SQL Azure и Azure Synapse Analytics (SQL DW), известные как шифрование данных в состоянии покоя. Для обеспечения безопасности базы данных можно принять ряд мер предосторожности, таких как разработка защищенной системы, шифрование конфиденциальных ресурсов и создание брандмауэра вокруг серверов баз данных. Однако в случае кражи физического носителя злоумышленник может просто восстановить или присоединить базу данных и просмотреть её. Одним из решений является шифрование конфиденциальных данных в базе и защита ключей, используемых для шифрования с помощью сертификата. Это не позволяет никому без ключей использовать данные, но этот вид защиты должен быть запланирован заранее. Реализация Microsoft TDE выполняет шифрование и расшифровку данных и файлов журналов в режиме реального времени. При шифровании используется ключ шифрования базы данных (DEK), который хранится в загрузочной записи базы данных для обеспечения доступности во время восстановления. DEK — это симметричный ключ, защищенный с помощью сертификата, хранящегося в главной базе данных сервера, или асимметричного ключа, защищенного модулем EKM. TDE защищает данные «в состоянии покоя», то есть данные и файлы журналов. Это дает возможность соблюдать многие законы, правила и руководящие принципы, установленные в различных отраслях промышленности. Так же позволяет разработчикам ПО шифровать данные с использованием алгоритмов шифрования AES и 3DES без изменения существующих приложений.
Реализация Oracle TDE применяется для файлов БД на уровне столбцов. Для таблицы, содержащей выбранные к шифрованию столбцы, создаётся симметричный ключ шифрования, защищённый главным ключом, который хранится в безопасном месте за пределами БД, называемом бумажником (). Зашифрованные ключи таблиц содержатся в словаре данных ().
Выбор алгоритма шифрования Шифрование является одним из нескольких способов защиты, доступных администратору. Алгоритмы шифрования определяют преобразования данных, которые не могут быть легко отменены неавторизованными пользователями. SQL Server позволяет администраторам и разработчикам выбирать один из нескольких алгоритмов, включая DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-bit RC4, DESX, 128-bit AES, 192-bit AES и 256-bit AES. При выборе алгоритма шифрования следует учитывать следующие принципы| Choose an Encryption Algorithm : сильное шифрование обычно потребляет больше ресурсов процессора, чем слабое длинные ключи обычно обеспечивают более надежное шифрование, чем короткие асимметричное шифрование работает медленнее, чем симметричное длинные, сложные пароли сильнее коротких симметричное шифрование обычно рекомендуется, когда ключ хранится только локально, асимметричное шифрование рекомендуется, когда ключи должны передаваться по сети если вы шифруете много данных, вы должны зашифровать данные с помощью симметричного ключа и зашифровать симметричный ключ с помощью асимметричного ключа зашифрованные данные не могут быть сжаты, но сжатые данные могут быть зашифрованы. Если вы используете сжатие, вы должны сжать данные перед их шифрованием Разъяснения относительно алгоритмов DES: DESX был неправильно назван. Симметричные ключи, созданные с помощью ALGORITHM = DESX, фактически используют шифр TRIPLE DES с 192-битным ключом. Алгоритм DESX не предусмотрен. Эта функция находится в режиме обслуживания и может быть удалена в будущей версии Microsoft SQL Server. Избегайте использования этой функции в новых разработках и планируйте модифицировать приложения, которые в настоящее время используют эту функцию. Симметричные ключи, созданные с помощью ALGORITHM = TRIPLE_DES_3KEY, используют TRIPLE DES с 192-битным ключом. Симметричные ключи, созданные с ALGORITHM = TRIPLE_DES, используют TRIPLE DES с 128-битным ключом.
Ключи шифрования базы данных В SQL Server ключи шифрования включают в себя сочетание открытых, закрытых и симметричных ключей, которые используются для защиты конфиденциальных данных. Симметричный ключ создается во время инициализации SQL Server при первом запуске экземпляра SQL Server. Ключ используется SQL Server для шифрования конфиденциальных данных, хранящихся в SQL Server. Открытый и закрытый ключи создаются операционной системой и используются для защиты симметричного ключа. Пара открытого и закрытого ключей создается для каждого экземпляра SQL Server, который хранит конфиденциальные данные в базе данных. SQL Server имеет два основных приложения для ключей: главный ключ службы (SMK), созданный на экземпляре SQL Server и для него, и главный ключ базы данных (DMK), используемый для базы данных.
Главный ключ службы (SMK) Главный ключ службыMS SQL Server 2005 для администраторов является корнем иерархии шифрования SQL Server. SMK генерируется автоматически при первом запуске экземпляра SQL Server и используется для шифрования пароля связанного сервера, учётных данных и главного ключа базы данных. SMK шифруется с помощью ключа локального компьютера с помощью API защиты данных Windows (DPAPI). DPAPI использует ключ, полученный из учётных данных Windows, учётной записи службы SQL Server и учётных данных компьютера. Главный ключ службы может быть расшифрован только учётной записью службы, под которой он был создан, или участником, имеющим доступ к учётным данным компьютера. Главный ключ службы может быть открыт только той учётной записью службы Windows, под которой он был создан, или принципалом, имеющим доступ как к имени учётной записи службы, так и к её паролю. SQL Server использует алгоритм шифрования AES для защиты главного ключа службы (SMK) и главного ключа базы данных (DMK). AES — более новый алгоритм шифрования, чем 3DES, используемый в более ранних версиях.
Главный ключ базы данных (DMK) Главный ключ базы данных — это симметричный ключ, который используется для защиты закрытых ключей сертификатов и асимметричных ключей, присутствующих в базе данных. Он также может использоваться для шифрования данных, но имеет ограничения по длине, которые делают его менее практичным для данных, чем использование симметричного ключа. Чтобы включить автоматическое дешифрование главного ключа базы данных, копия ключа шифруется с помощью SMK. Он хранится как в базе данных, в которой он используется, так и в базе данных главной системы.