Главная » Microsoft SQL Server, Базы данных » Уровень С2 системы безопасности

0

Организации, которым требуется надежная защита базы данных, могут разработать и внедрить систему безопасности уровня С2.

Критерии оценки безопасности Министерства обороны США для компьютерных систем и баз данных варьируются от уровня А (используется очень редко), обозначающего проверенную конструкцию, до уровня D, обозначающего минимальную защиту. Уровень безопасности С2 обозначает защиту управления доступом. Она необходима для многих классифицированных данных, данных информационно-поисковых систем и большинства правительственных контрактов.

В сущности, уровень защиты С2 требует наличия нескольких условий.

?               Уникальный идентификатор регистрации для каждого пользователя, защищенный от перехвата. Для предоставления доступа к базе данных пользователь должен зарегистрироваться.

?               Метод аудита всех попыток каждого пользователя или процесса доступа к данным и их изменения.

?               Отсутствие прав доступа по умолчанию ко всем объектам.

?               Предоставление доступа к объектам исключительно их владельцу или под его ответственность.

?               Ответственность всех пользователей за свой доступ к данным и их изменение.

?               Защита данных в памяти от несанкционированного доступа.

Для сертификации SQL Server корпорация Science Applications International Corporation (Сан-Диего) выполнила тестирование для Агентства национальной безопасности США и Национального института стандартов и технологий, которые вовлечены в правительственную программу сертификации безопасности. Процесс тестирования продолжался 14 месяцев и финансировался компанией Microsoft.

Публикацию SQL 2005 С2 Admin and Users Guide можно загрузить с сайта http: / /msdn. microsoft.com/library/en-us/secauthz/security/c2_level_security.asp.

Реализация системы безопасности уровня С2 в SQL Server требует следующего.

?               СУБД SQL Server должна быть запущена в операционной системе Windows NT 4 Service Pack 6a.

?               He допускаются репликации слияния, репликации снимков базы данных, федеративные и распределенные базы данных.

?               С помощью утилиты SQL Profiler должен осуществляться полный аудит.

?               Параметр безопасности С2 должен быть включен — это приводит к останову SQL Server, если файл аудита не функционирует.

?               Существуют другие ограничения на размещение и размеры файла аудита.

Представления и безопасность

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

Дополнительная О том, как создавать представления и использовать параметр with check информация OPTION, см. в главе 14.

Оппоненты использования представлений в качестве средства защиты используют следующие аргументы.

?               Представления не откомпилированы и не оптимизированы.

?               Защиту на уровне столбцов можно обеспечить и стандартными средствами защиты SQL Server.

?               Использование представлений для обеспечения безопасности на уровне строк предполагает, что параметр WITH CHECK OPTION должен быть создан в каждом представлении вручную. По мере увеличения категорий уровня строк система потребует ручной настройки.

Криптография

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

В то время как предыдущие версии SQL Server совершенно не решали задачу Новинка шифрования данных (возможно, за исключением процесса транспортировки

2005 данных клиенту), СУБД SQL Server 2005 лучше оснащена для корпоративной

среды, так как способна шифровать данные с помощью ключей, паролей и сертификатов. Все редакции SQL Server поддерживают шифрование.

Введение в криптографию

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

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

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

г          Данные могут быть также зашифрованы и дешифрованы на среднем или кли-

Назаметку ентском уровне приложения .NET. Этот подход имеет то преимущество, что сервер баз данных никогда не видит незашифрованных данных. Мы с Дарреном Шейфером использовали этот метод при реализации проекта хранения данных кредитных карточек в SQL Server 2000. Даррен создал класс C#.NET, задействующий класс System.Security.Cryptography, для использования криптографического алгоритма Rinjdael. Этот класс работал отменно, и данные были зашифрованы с момента их изначального ввода до момента просмотра автори- зированным пользователем отчета.

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

Сертификаты аналогичны ключам, но чаще всего выпускаются специальными центрами сертификации, такими как VeriSign, гарантирующими легитимность организации, связанной с сертификатом. В SQL Server можно сгенерировать и локальный сертификат.

Криптографическая иерархия SQL Server

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

На следующем уровне иерарх™ находится мастер-ключ базы данных, являющийся симметричным ключом, используемым в SQL Server для шифрования частных сертификатов и асимметричных ключей. Мастер-ключ базы данных создается с помощью инструкции DDL CREATE MASTER KEY. После этого созданный ключ шифруется с помощью служебного мас- тер-юноча и сохраняется как в пользовательской базе данных, так и в базе данных master.

CREATE MASTER KEY

ENCRYPTION BY PASSWORD = ‘P@$rwOrD';

Пароль ключа должен удовлетворять требованиям операционной системы Windows для строгого ключа.

| Для просмотра информации о мастер-ключах используются представления ка-

суо талога syssymmetric_keys и sysdatabases . is_master_key_encrypted_ I * by_server.

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

Когда необходимо выполнить шифрование данных, SQL Server использует четыре метода:

?               использование парафраз;

?               использование симметричного ключа;

?               использование асимметричного ключа;

?               использование сертификата.

Шифрование парафразой

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

Реальное шифрование выполняется с помощью функции Encrypt by Pass Phrase. Первым ее параметром является парафраза, за которой следуют шифруемые данные. В следующем примере продемонстрировано шифрование данных в инструкции INSERT:

CREATE TABLE CCard (

CCardID INT IDENTITY PRIMARY KEY NOT NULL,

CustomerID INT NOT NULL,

CreditCardNumber VARBINARY(12 8),

Expires CHAR(4)

) ;

INSERT CCard(CustomerlD, CreditCardNumber, Expires)

VALUES(1,EncryptbyPassPhrase(‘Passphrase’,

‘ 123456789012345678 90′) , ‘ 08081) ;

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

SELECT *

FROM CCard

WHERE CustomerlD = 1;

Результат в данном примере будет получен следующий (двоичное значение обрезано): CCardID CustomerlD CreditCardNumber             Expires

1        1                           0x010 ООО 0 0C8CF6 8C 0808

Для дешифровки данных кредитной карточки в обычный читаемый текст используется функция decryptbypassphrase в паре с функцией convert, преобразующей двоичный формат:

SELECT CCardID, CustomerlD,

CONVERT(VARCHAR(20), DecryptByPassPhrase(‘Passphrase’, CreditCardNumber)),Expires FROM Ccard

WHERE CustomerlD = 1;

Будет получен следующий результат:

CCardID CustomerlD                                                       Expires

1             1                           12345678901234567890 0808

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

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

В следующем примере мы добавим аутентификатор в шифрование с использованием парафразы. Код 1 включает аутентификатор, а последним аргументом является фраза аутентификатора:

INSERT CCard(CustomerlD, CreditCardNumber, Expires)

VALUES(3,EncryptbyPassPhrase(‘Passphrase’,

‘12123434565678788989’,1,

‘hardCoded Authenticator’), ‘0808’);

SELECT CCardID, CustomerlD,

CONVERT(VARCHAR(20),DecryptByPassPhrase(‘Passphrase’, CreditCardNumber,1,

‘hardCoded Authenticator’)), Expires FROM Ccard

WHERE CustomerlD = 3;

Будет получен следующий результат:

CCardID                                                        CustomerlD      Expires

2      3                    12123434565678788989 0808

Шифрование с помощью симметричного ключа

Использование симметричного ключа предполагает наличие реального объекта, используемого при шифровании, а не пригодной для чтения парафразы. Симметричные ключи создаются в SQL Server с помощью следующей инструкции CREATE:

CREATE SYMMETRIC KEY CCardKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY PASSWORD = ‘P@s$wOrD';

После того как ключи будут созданы, они отобразятся в узле Security^Symmetric keys окна Object Explorer утилиты Management Studio,.

Для просмотра информации о симметричных ключах используется запрос T-SQL к представлению каталога syssymmetric_keys.

Ключи представляют собой объекты, так что их можно изменить и удалить так же, как и любые другие объекты SQL Server.

Криптографические алгоритмы

Криптографические алгоритмы определяют, как именно данные будут шифроваться с помощью ключа. Существует девять доступных для выбора алгоритмов: DES, TRIPLE_DES, RC2, RC4, RC4_128, DESX, AES_128, AES_192 и AES_256. Они отличаются скоростью и строгостью.

Алгоритм DES (Data Encryption Standard) был выбран в 1976 году официальным криптографическим алгоритмом для правительства США, однако редко использовался, так как на компьютерах того времени процесс шифрования мог занять сутки. Алгоритм TRIPLE_DES использует более длинный и, следовательно, более строгий ключ.

Алгоритм AES (Advanced Encryption Standard), также известный как Rijndael, введен Национальным институтом стандартов и технологий США в ноябре 2001 года. Числа 128, 192 и 256 в имени алгоритма отражают размер ключа в битах. Самым строгим алгоритмом этого семейства является AES_256.

SQL Server использует криптографические алгоритмы Windows. Так что если На заметку некоторый алгоритм не установлен в операционной системе, SQL Server не сможет его использовать. Алгоритмы AES не поддерживаются в Windows ХР и Windows 2000.

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

Временный ключ действителен на протяжении текущей сессии, и, аналогично временным таблицам, его можно идентифицировать по знаку решетки (#). Временные ключи могут использовать идентификаторы GUID для идентификации зашифрованных данных, применяя параметр indent ity_value= ‘ passphrase ‘.

Использование симметричных ключей

Для использования симметричного ключа его нужно вначале открыть с помощью команды OPEN, которая дешифрует ключ и делает его доступным для SQL Server:

OPEN SYMMETRIC KEY CCardKey

DECRYPTION BY PASSWORD = ‘P@s$wOrD';

Используя ранее созданную таблицу CCard, в следующем фрагменте кода данные шифруются с помощью ключа CCardKey. Функция encryptbykey принимает идентификатор GUID ключа, который находится с помощью функции key_guid (), а также данные, подлежащие шифрованию:

INSERT CCard(CustomerlD, CreditCardNumber, Expires)

VALUES(1,EncryptbyKey(Key_GUID(‘CCardKey’),

‘ 11112222333 344445555′) , ‘0808 ‘ ) ;

Для дешифровки данных ключ должен быть открыт. Функция decryptbykey идентифицирует корректный ключ из данных, а затем выполняет дешифровку:

SELECT CCardID, CustomerlD,

CONVERT(varchar(2 0), DecryptbyKey(CreditCardNumber)) as CreditCardNumber, Expires FROM Ccard

WHERE CustomerlD = 7;

Будет получен следующий результат:

CCardID                                                                                                       CustomerlD CreditCardNumber Expires

1           7                           11112222333344445555                                   0808

На практике рекомендуется закрывать открытый ключ сразу же после транзакции, в которой он использовался:

CLOSE SYMMETRIC KEY CCardKey

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

Использование асимметричных ключей

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

CREATE ASYMMETRIC KEY AsyKey WITH ALGORITHM = RSA_512 ENCRYPTION BY PASSWORD = ‘P@s$w0rD';

SQL Server поддерживает следующие асимметричные алгоритмы: RSA_512, RSA_1024 и RSA_2048. Они различаются длиной частного ключа.

Асимметричные ключи также могут быть сгенерированы из существующих файлов ключей: CREATE ASYMMETRIC KEY AsyKey

FROM FILE = ‘C:\SQLServerBIble\AsyKey.key1 ENCRYPTION BY PASSWORD = ‘P@s$w0rD';

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

Использование сертификатов

Сертификаты обычно используются для шифрования данных, передаваемых по Интернету между ключевыми точками HTTPS. SQL Server содержит сертификаты для своей “родной” службы HTTP Web Services. Сертификаты получают от специализированных центров сертификации.

Дополнительная Об использовании сертификатов с концевыми точками HTTP см. в главе 32.

информация

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии