Публикации
Последние новости:
 
Высокие технологии
Technology
Компьютерное железо
Программное обеспечение
Компьютерная безопасность
Операционные системы
Компьютерный справочник
БД
Интернет сегодня
AudioТехника
Средства связи
Весь спектр цифровой техники
Мир авто
Бизнес-финансы
Всё о культуре
ПроСпорт
Всё о компьютерах
Детское чтение
Мировые телекоммуникации
Пресс-релизы
 
Статьи
Мир культуры
Интересно о спорте
Покупаем:
ТурТранс
Для прекрасных дам
Усадьба, дом
 

Платный хостинг от провайдера HostSpace.com.ua - хостинг, регистрация доменов. Поддержка PHP, MySQL, почта - в каждом тарифном плане.





Шифрование данных с помощью функции ENCRYPT


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









Начиная с SQL сервера версии 6.x, для шифрования данных вы можете применять функцию ENCRYPT, которая использует тот же метод (шифрования), что и опция WITH ENCRYPTION. Это достаточно обьемная проблема, которую мы обсудим после следующего примера. При использовании функции ENCRYPT размещайте ее впереди строчной переменной, как указано ниже:

SELECT ENCRYPT(TestPW1)

В результате получим:

------------------------------
0x5400650073007400500057003100

(1 row(s) affected)

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

CREATE TABLE Users (
UserID Varchar(10),
UserPW Varchar (20))

INSERT INTO Users values(TestUser1,ENCRYPT(TestPW1))
INSERT INTO Users values(TestUser2,ENCRYPT(TestPW2))
INSERT INTO Users values(TestUser3,ENCRYPT(TestPW3))
INSERT INTO Users values(TestUser4,ENCRYPT(TestPW4))

Если вы теперь выполните выборку данных из этой таблицы, то результат будет представлен в зашифрованном виде. Обратите внимание на то, что результаты выполнения SELECT ENCRYPT(TestPW1) отличаются от результатов выборки данных из таблицы Users после ее заполнения. Алгоритм, который SQL сервер использует для шифрования данных, является относительно простым и различает регистр до тех пор, пока он не сохранен в таблице. После этого он становится очень сложным для расшифровки. Возможность сохранить данные в зашифрованном поле может использоваться для хранения паролей. Вы не можете расшифровать обратно данные, которые уже зашифрованы и сохранены в таблице. Единственное, что вы можете сделать, так это сравнить данные, как указано ниже:

SELECT * from Users where UserID = TestUser2 
and UserPW = ENCRYPT(TestPW2)

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

INSERT INTO USERS values(TestUser1,ENCRYPT(UPPER(TestPW1)))

SELECT * from Users where UserID = TestUser2
and UserPW = ENCRYPT(UPPER(TestPW2))

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

UserID UserPW
---------- --------------------
TestUser1 T
TestUser2 T
TestUser3 T
TestUser4 T

(4 row(s) affected)

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

userid Length
---------- -----------
TestUser1 14
TestUser2 14
TestUser3 14
TestUser4 14

(4 row(s) affected)

Этот результат удостоверяет, что длина поля отражает длину уже зашифрованных данных, а не длину исходных данных. А теперь (поговорим) о больших недостатках, упоминавшихся ранее. Эта хранимая процедура не поддерживается Microsoft и может быть легко изменена или изьята. Хорошим примером явилось изменение этой функции между версиями SQL сервер 6.5 и 7.0. Другим важным вопросом является дешифрование. Очевидно, Microsoft не делает это просто и зашифрованные данные могут быть легко расшифрованы только с использованием метода сравнения, который я показывал ранее. Если вы не хотите использовать этот метод для шифрования ваших паролей, то существуют другие, более совершенные. Эти методы являются более устойчивыми и более защищенными чем тот, который мы обсуждали. Например, Les Smith опубликовал две статьи, в которых показано как использовать Java или COM для шифрования паролей. Их можно найти по адресу:
http://www.sqlservercentral.com/columnists/lsmith/usingjavatoencryptpasswords.asp
Если защищенность ваших данных является действительно важной, то функция ENCRYPT - это совсем не то, что вам нужно. Вместо нее лучше использовать один из нескольких уже реализованных методов, о которых Les Smith упоминает в своих статьях. Эти методы шифрования не будут изменяться от версии к версии, но требуют немного больше работы.




www.sdteam.com

БД 29-01-2007

SAP покупает компанию Visiprise 07-07-2008 БД
Европейский производитель корпоративного программного обеспечения SAP планирует купить компанию Visiprise, занимающуюся созданием софта для корпоративного и производственного планирования. Сделка, финансовые условия которой не разглашаются, будет закрыта в июле этого года.После завершения покупки, все разработки Visiprise будут интегрированы в программное обеспечение SAP для автоматизации бизнес-процессов и комплексной интеграции производственных...


SAP занялась продажей индивидуальных лицензий 08-10-2007 БД
SAP представила новый тип лицензии на программное обеспечение NetWeaver, используемое для автоматизации деятельности компаний. Новая лицензия представляет собой годовую подписку и ориентирована она на индивидуальных разработчиков.В компании говорят, что ранее SAP занималась лишь продажей лицензий компаниям, теперь индивидуальные пользователи смогут купить годовую лицензию. Для этого им необходимо будет присоединиться к сети SAP developer network ...


Oracle купила компанию Netsure Telecom 05-09-2007 БД
Oracle сегодня сообщила о покупке компании Netsure Telecom Limited, производителя средств для обеспечения безопасности сетей, исследования данных в сетях и общего анализа корпоративных сетей.Основная задача программного обеспечения Netsure Teleocm - это комплексная диагностика критически важных крупных сетей. Среди клиентов купленной компании есть и крупнейшие операторы связи - Vodafone, Cable&Wireless, Eircom и ряд других.Компания Netsure являет...


Москву посетил Президент Oracle Чарльз Филлипс 19-08-2007 БД
Сегодня в рамках московской пресс-конференции Президента Oracle Чарльза Филлипса было объявлено об итогах 30-летнего развития корпорации и ее продуктов, а также представлена глобальная стратегия Oracle.В программе четырехдневного визита руководителя Oracle в Москву и Санкт-Петербург - встречи с ключевыми клиентами и партнерами, эффективно использующими технологии и бизнес-приложения Oracle в России.По итогам 2007 финансового года, годовой доход O...

Вооруженные силы Грузии внедрили систему управления ресурсами SAP 13-07-2007 БД
Специалисты украинского НИИ автоматизированных компьютерных систем «Экотех» (НИИ АКС «Экотех») совместно со специалистами главного исполнителя проекта – грузинской компании «UGT», при участии «SAP Украина», завершили этап создания Концептуального проекта по внедрению интегрированной системы управления ресурсами предприятия SAP ERP в Вооруженных Силах (ВС) Грузии.По словам министра обороны  Грузии Давида Кезерашвили, прое...

Oracle представляет СУБД Oracle Database 11g 10-07-2007 БД
Корпорация Oracle завтра представит новую версию своего основного и самого популярного продукта - СУБД Oracle Database 11g. Новая версия станет самым значимым обновлением системы управления базами данных за последние 4 года.Однако бума скачиваний и покупок новой версии вряд ли стоит ожидать. Дело в том, что СУБД, равно как и другие продукты Oracle, рассчитаны на корпоративный сектор, причем сектор довольно крупных компаний. Данный сегмент являетс...
 
При любом использовании материалов сайта ссылка на сайт www.archive.com.ua обязательна.
Rambler's Top100 Рейтинг@Mail.ru