|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.6. Применение сертификатов и шифрование данных в SQL Server 20055.6.1. Основы применения сертификатов и шифрования данныхТехнологии шифрования SQL Server 2005, симметричные и асимметричные ключи, центры сертификации Прежде чем начать разговор о возможностях шифрования данных и сертификатов в SQL Server 2005, необходимо рассказать о некоторых концепциях и терминах, связанных с шифрованием данных. Вначале остановимся на основных концепциях шифрования. В настоящее время применяются два принципиально разных способа шифрования: шифрование с использованием симметричного ключа и шифрование с использованием асимметричного ключа (точнее, пары ключей). При шифровании с использованием симметричного ключа ключ, который применяется для шифрования данных, используется и для расшифровки. Это традиционный и очень хорошо отработанный метод шифрования данных. Он требует минимального количества ресурсов компьютера и очень распространен. В качестве примеров использования симметричных ключей можно привести шифрование при помощи паролей архивов ZIP, файлов Office и т. п. Второй способ шифрования — применение асимметричных ключей, т. е. пары общий (public) и частный (private) ключи. При использовании этого метода данных шифруются первым ключом из пары (общим), а для расшифровки нужен второй ключ (частный). При этом если кто-то получит доступ к зашифрованным данным и общему ключу, который использовался для шифрования, расшифровать данные он не сможет: расшифровку можно произвести только при помощи частного ключа. Проиллюстрируем механизм работы этого метода на простом примере. Предположим, что пользователю А необходимо передать информацию в зашифрованном виде пользователю Б. Для этого пользователь Б (а не А!) генерирует у себя пару общий/частный ключи и передает общий ключ пользователю А. Тот шифрует полученным общим ключом данные и передает их в зашифрованном виде пользователю Б. А он уже расшифровывает их при помощи второго ключа из пары (частного), который находился у него на компьютере и никуда не передавался. У шифрования с использованием асимметричных ключей есть очевидные преимущества. При применении симметричных ключей для обмена информацией пользователям необходимо вначале обменяться этим симметричным ключом, который в процессе передачи могут перехватить. Если же вы используете асимметричные ключи, то это позволяет вам надежно защищать данные при передаче по незащищенным каналам связи. Надо отметить, что у метода с применением ассиметричных ключей есть не только достоинства, но и недостатки. Главный из них заключается в том, что шифрование с использованием этого метода требует очень больших ресурсов центрального процессора. Поэтому на практике чаще всего используется комбинированный вариант. Пример этого варианта может выглядеть так. Предположим, что пользователю А необходимо вновь передать информацию в зашифрованном виде пользователю Б. Пользователь Б, как и в прошлом случае, генерирует пару общий/частный ключи и передает общий ключ пользователю А. Пользователь А, вместо того, чтобы напрямую шифровать данные при помощи этого ключа, генерирует еще один ключ — симметричный. После этого пользователь А шифрует общим ключом сгенерированный им симметричный ключ и передает его пользователю Б. После того, как пользователь А получает подтверждение, что симметричный ключ получен и расшифрован пользователем Б, пользователь А начинает передачу данных, зашифрованных симметричным ключом. И еще один момент, связанный с использованием асимметричных ключей. Предположим, что в процесс обмена информации между пользователем А и пользователем Б вмешался зловредный хакер В. Он прислал общий ключ от имени пользователя Б, а затем расшифровал всю секретную информацию, которую передал ему обознавшийся пользователь А. Чтобы такого не происходило, присланные общие ключи принято проверять в специальном месте, которое называется центр сертификации (Certificate Authority). Обычно центр сертификации и генерирует пары общий/частный ключи. В нашем примере пользователь А, получив общий ключ, должен обратиться в центр сертификации, который сгенерировал этот ключ, чтобы убедиться, что данный ключ действительно выдан пользователю Б, что он не устарел, не отозван и т. п. Конечно же, пользователь А должен доверять этому центру сертификации. Список центров сертификации, которые заплатили деньги компании Microsoft и которым по умолчанию доверяет ваш компьютер, можно просмотреть в Internet Explorer (выбрать пункт меню Сервис | Свойства обозревателя, в открывшемся окне перейти на вкладку Содержание, нажать кнопку Сертификаты и в одноименном окне перейти на вкладку Доверенные корневые центры сертификации). Еще одна концепция шифрования данных — сертификат. Сертификат — это контейнер для хранения общего ключа. В сертификат помещается информация о версии (в соответствии со стандартом International Telecommunication Union (Международного союза телекоммуникаций) X.509), серийном номере, кому выдан данный сертификат, для каких целей, сколько времени он будет действовать и т. п. Эта информация математически связывается с открытым ключом (при помощи цифрового отпечатка — thumbprint), так что исказить ее будет нельзя. В SQL Server 2005 шифрование используется в разных ситуациях. Первая ситуация — шифрование данных, передаваемых между клиентом и сервером (или, например, между двумя серверами при зеркальном отображении баз данных или репликации). Для этого используется технология SSL (Secure Socket Layer), которая применяется также для шифрования трафика между Web-браузером и Web-сервером. Эта технология была и в SQL Server 2000, но в SQL Server 2005 появились дополнительные возможности, а настройка в целом стала более удобной. Подробно про шифрование сетевого трафика при подключении к SQL Server 2005 будет рассказано в разд. 5.6.2. Вторая ситуация — шифрование данных в таблицах баз данных. Это совершенно новая и очень важная возможность SQL Server 2005. Про нее будет рассказываться в разд. 5.6.3. Сертификаты можно использовать и для других целей, например, для создания цифровых подписей для программных модулей SQL Server 2005 (например, для хранимых процедур). Защита при помощи сертификата гарантирует защиту целостности кода хранимой процедуры или функции. Если в этот код буду внесены несанкционированные изменения, то такая хранимая процедура просто не будет запускаться на выполнение.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||