Когда вышел InterBase 2009, я увидел в списке новых фич шифрование. Поскольку лично меня эта тема не затрагивает, я ознакомился с возможностями, и на этом все кончилось. Интересно, что даже разработчики, которых эта тема интересует, ее пропустили. Например, один из вопросов, присланный нам перед вебинаром по InterBase, проводимом 14 марта, был "как в InterBase с шифрованием". Простите, но на дворе уже давно XE (с конца 2010 года), а 2009-ая вышла в августе 2008 года.
В общем, вместе с Embarcadero провели первый вебинар на тему InterBase, и в него вошел общий рассказ про возможности шифрования. Сейчас готовится второй вебинар, а там и третий, но мне кажется, что подробнее эту тему лучше раскрыть в блоге, поэтапно. Здесь и начнем.
Шифрование в InterBase существует в "трех частях"
Слова "а зачем оно нам такое, нам бы попроще" отметаются сразу, потому что простое шифрование так же просто вскрывается. В общем, давайте лучше посмотрим, как оно устроено.
В общем, вместе с Embarcadero провели первый вебинар на тему InterBase, и в него вошел общий рассказ про возможности шифрования. Сейчас готовится второй вебинар, а там и третий, но мне кажется, что подробнее эту тему лучше раскрыть в блоге, поэтапно. Здесь и начнем.
Шифрование в InterBase существует в "трех частях"
- шифрование соединения (Over-the-Wire, OTW)
- шифрование БД (всей БД или отдельных столбцов таблиц)
- шифрование бэкапов
Слова "а зачем оно нам такое, нам бы попроще" отметаются сразу, потому что простое шифрование так же просто вскрывается. В общем, давайте лучше посмотрим, как оно устроено.
Стандарты шифрования
Поддерживается DES (по умолчанию), и AES. DES можно использовать сразу, для AES нужно скачать бесплатную лицензию со своего аккаунта на Embarcadero (при условии, что InterBase куплен и зарегистрирован.
Шифрование соединения
Операционные системы клиента и сервера должны поддерживать SSL v3 и TLS v1. Сертификат и CA файлы должны быть сгенерированы заранее, быть в формате PEM, и размещены на компьютерах клиента (клиентский и публичный серверный ключ) и сервера (серверный ключ).
Строка коннекта при этом получается чудовищная (пример из OpGuide.pdf)
"localhost/gds_ssl?ssl=true?clientPassPhrase=clientkey?clientCertFile=c:\\InterBase\\client\\client.pem?serverPublicFile=c:\\InterBase\\client\\serverCAfile.pem??:c:/db/database.ib"
На сервере должен быть файл ibss.config, в котором прописываются параметры для серверной стороны, и если честно, все это настолько страшно, что я не хочу дальше это описывать, и предоставлю вам самостоятельно дочитать об этом в OpGuide.pdf - там приведен максимум информации, включая примеры настроек и конфигураций (без проверки клиента, с проверкой, и т.п.).
Главное, что шифрование коннекта есть, оно настраивается, но требует определенных усилий по его настройке. Собственно, безопасность через тяп-ляп не обеспечивается.
Вот о шифровании БД (всей или столбцов) я расскажу подробнее, но в следующем посте.
Операционные системы клиента и сервера должны поддерживать SSL v3 и TLS v1. Сертификат и CA файлы должны быть сгенерированы заранее, быть в формате PEM, и размещены на компьютерах клиента (клиентский и публичный серверный ключ) и сервера (серверный ключ).
Строка коннекта при этом получается чудовищная (пример из OpGuide.pdf)
"localhost/gds_ssl?ssl=true?clientPassPhrase=clientkey?clientCertFile=c:\\InterBase\\client\\client.pem?serverPublicFile=c:\\InterBase\\client\\serverCAfile.pem??:c:/db/database.ib"
На сервере должен быть файл ibss.config, в котором прописываются параметры для серверной стороны, и если честно, все это настолько страшно, что я не хочу дальше это описывать, и предоставлю вам самостоятельно дочитать об этом в OpGuide.pdf - там приведен максимум информации, включая примеры настроек и конфигураций (без проверки клиента, с проверкой, и т.п.).
Главное, что шифрование коннекта есть, оно настраивается, но требует определенных усилий по его настройке. Собственно, безопасность через тяп-ляп не обеспечивается.
Вот о шифровании БД (всей или столбцов) я расскажу подробнее, но в следующем посте.
7 комментариев:
Вот бы ещё в Firebird можно было шифровать соединение также просто.
просто??? проще это ZeBeDee, причем в данном случае все равно чей коннект - InterBase или Firebird.
Немного не по теме - но думаю и другим будет интересно. Умеет ли IB вести версионирование данных? Т.е. реализована ли функция просмотра истории редактирования (и удаления) записей?
dogma: разумеется, нет, не умеет, точно так же как такой функции нет в других серверах (с использованием transaction log).
история редактирования данных обычно реализуется программно, есть несколько разных способов.
А почему "разумеется"? Думаю, такая функция может быть реализована на уровне ядра движка. HBase (хотя это уже нереляционная система) имеет встроенную поддержку версионирования... Реализация истории своими руками накладывает трудности с реализацией некоторых запросов (например, запрос состоит из JOIN'ов 15 - 20 таблиц, при считывании их истории нужно учитывать сначала даты, потом уже строить JOIN'ы; и вот здесь я думаю могут возникнуть проблемы с индексами, ведь еще присутствует раздел WHERE с условиями для разных таблиц)
Я тоже на ZeBeDee раньше смотрел. пока меня Сергей Мереуца на путь истинный :-) SSH и Putty/PLink то же самое делают. В случае в *никсами вообще встроенный вариант, в Винде поднимается.
Andyshark, спасибо. Мог бы упомянуть в следующем посте, но деталей не знаю (где почитать?). если сюда не получится, пишите на kdv@ibase.ru
Отправить комментарий