Зашифровать данные в базе данных
-
- Уже с Приветом
- Posts: 7723
- Joined: 29 Mar 2000 10:01
- Location: Kirkland,WA
Re: Зашифровать данные в базе данных
интересно может будет почитать про https://docs.microsoft.com/en-us/sql/re ... rver-ver15
одной строчкой: engine never sees unencrypted data. по зашифрованному ключу можно делать индех. и он сортирован (range scans). но больше места займет.
одной строчкой: engine never sees unencrypted data. по зашифрованному ключу можно делать индех. и он сортирован (range scans). но больше места займет.
-
- Уже с Приветом
- Posts: 63377
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
в принципе можно, да.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 1980
- Joined: 10 Oct 2000 09:01
- Location: New England
Re: Зашифровать данные в базе данных
а чем вас orapki не устраивает как тулза - у автора ведь Oracle DB? Зачем выдумывать велосипед? Есть более продвинутые (и дорогие) решения как тот же Orale Key Vault или claud-based like Azure Key Vault.valchkou wrote: ↑12 Jan 2021 03:25 согласен с некоторыми ораторами, простое работающее решение использовать vault + AES.
Простое не значит плохое или недостаточно безопасное!
Вопрос тут в другом, как защитить сам VAULT от несанкционированного доступа и от потери самого вольта.
Вариант без вольта тоже сработает, это установка сертификата на саму машину где запущена прога.
Но и тут есть подводные камни. Как управлять такими сертификатами?
Короче простого решения нет, если нет системы и процесса управления ключами/секретами/сертификатами.
Но если есть, то реализовать фичу просто.
-
- Уже с Приветом
- Posts: 4185
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Зашифровать данные в базе данных
меня устраивает , более того я сторонник готовых решений.Mark wrote: ↑12 Jan 2021 15:17а чем вас orapki не устраивает как тулза - у автора ведь Oracle DB? Зачем выдумывать велосипед? Есть более продвинутые (и дорогие) решения как тот же Orale Key Vault или claud-based like Azure Key Vault.valchkou wrote: ↑12 Jan 2021 03:25 согласен с некоторыми ораторами, простое работающее решение использовать vault + AES.
Простое не значит плохое или недостаточно безопасное!
Вопрос тут в другом, как защитить сам VAULT от несанкционированного доступа и от потери самого вольта.
Вариант без вольта тоже сработает, это установка сертификата на саму машину где запущена прога.
Но и тут есть подводные камни. Как управлять такими сертификатами?
Короче простого решения нет, если нет системы и процесса управления ключами/секретами/сертификатами.
Но если есть, то реализовать фичу просто.
вопрос в другом, почему компания стартера до сих пор этим не пользуется, при том что в клиентах у них как минимум банк
-
- Уже с Приветом
- Posts: 1980
- Joined: 10 Oct 2000 09:01
- Location: New England
Re: Зашифровать данные в базе данных
Если я правильно понимаю в банке собственные DBAs которые просто не знают или не хотят особо шевелится. А компания топик-стартера предполагаю никаких прав на базу и инфраструктуру не имеет.
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Всё верно по всем пунктам. Банк согласился на AES шифрование. Ну пусть радуются.
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Гребаный Барклай теперь пишет вот что:
- Data would be protected by AES-256.
- The key would be stored locally on the server in Windows Key Store (CNG)
Поправьте меня спецы, но CNG используется для хранения public and private keys при использовании asymmetric encryption или digital signatures.
Разве можно в CNG хранить symmetric key and IV, которые используются при AES-256 ???
- Data would be protected by AES-256.
- The key would be stored locally on the server in Windows Key Store (CNG)
Поправьте меня спецы, но CNG используется для хранения public and private keys при использовании asymmetric encryption или digital signatures.
Разве можно в CNG хранить symmetric key and IV, которые используются при AES-256 ???
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Зашифровать данные в базе данных
Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.shadow7256 wrote: ↑25 Jan 2021 18:28 Гребаный Барклай теперь пишет вот что:
- Data would be protected by AES-256.
- The key would be stored locally on the server in Windows Key Store (CNG)
Поправьте меня спецы, но CNG используется для хранения public and private keys при использовании asymmetric encryption или digital signatures.
Разве можно в CNG хранить symmetric key and IV, которые используются при AES-256 ???
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Задача конкретная.. где хранить symmetric key and Initialization vector? В CNG невозможно это сделать, так как CNG используется для asymmetric keys.Oleg-NY wrote: ↑25 Jan 2021 18:49Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.shadow7256 wrote: ↑25 Jan 2021 18:28 Гребаный Барклай теперь пишет вот что:
- Data would be protected by AES-256.
- The key would be stored locally on the server in Windows Key Store (CNG)
Поправьте меня спецы, но CNG используется для хранения public and private keys при использовании asymmetric encryption или digital signatures.
Разве можно в CNG хранить symmetric key and IV, которые используются при AES-256 ???
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Зашифровать данные в базе данных
Ну если собираетесь городить proprietary колхоз, то сгенерите ассиметричный ключ и храните его в CNG, а им уже зашифруйте актуальный AES-256, который храните где угодно, хоть в той же базе, хоть в файле где-нить...shadow7256 wrote: ↑25 Jan 2021 18:58Задача конкретная.. где хранить symmetric key and Initialization vector? В CNG невозможно это сделать, так как CNG используется для asymmetric keys.Oleg-NY wrote: ↑25 Jan 2021 18:49Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.shadow7256 wrote: ↑25 Jan 2021 18:28 Гребаный Барклай теперь пишет вот что:
- Data would be protected by AES-256.
- The key would be stored locally on the server in Windows Key Store (CNG)
Поправьте меня спецы, но CNG используется для хранения public and private keys при использовании asymmetric encryption или digital signatures.
Разве можно в CNG хранить symmetric key and IV, которые используются при AES-256 ???
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Пляски продолжаются.. уже не хотят использовать AES-256 шифрование. Теперь хотят использовать продукт какой то компании CyberArk. Для чего? они сами не знают пока...
-
- Уже с Приветом
- Posts: 63377
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
Их продукты позволяют хранить пароли в vault и много ещё чего. Модная сейчас компания.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Зашифровать данные в базе данных
IV это - не секретная иформация и можете хранить его открыто где угодно и как угодно, ассоциировано с зашифрованными данными (я уже упоминал, что есть "стандартный" формат blob для шифрованного массива данных). Лучше использовать AES-GCM, конечно. Пока нет времени прочитать всю ветку, чтобы понять какова организация данных, которые хотите шифровать, поэтому трудно советовать что-то конкретное...
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
этот реально ебан..ый Барклай сам не знает чего хочет. Теперь говорят "не хотим шифрование, хотим хранить информацию в CyberArk". Я сказал своим менеджерам, что пока от этих дебилов не будет четкой документации, чего они хотят, я и пальцем не пошевелю.Oleg-NY wrote: ↑28 Jan 2021 22:41 IV это - не секретная иформация и можете хранить его открыто где угодно и как угодно, ассоциировано с зашифрованными данными (я уже упоминал, что есть "стандартный" формат blob для шифрованного массива данных). Лучше использовать AES-GCM, конечно. Пока нет времени прочитать всю ветку, чтобы понять какова организация данных, которые хотите шифровать, поэтому трудно советовать что-то конкретное...
-
- Уже с Приветом
- Posts: 5345
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
Re: Зашифровать данные в базе данных
Хватай пока дают. Пусть у CyberArk голова болит о security. Если вас хакнут то это их будут проблемы, а не доморощенного шифровальщика.
-
- Уже с Приветом
- Posts: 63377
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
Типа того.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Зашифровать данные в базе данных
Ну не совсем... IV не имеет отношения к ключу, но к блоку/стриму данных и нехрен его там хранить! ))
Далее, сам AES ключ желательно генерить время от времени или от блока к блоку. И здесь более всего встает вопрос а можете ли вы сгенерить его с достаточной степенью энтропии. За этим лучше обращаться к "правильной" железке или внешнему сервису, а-ля CyberArk (хотя с последними формально не знаком).
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Апдейт. для этих дебилов из Barclay's оказалось, что CyberArk для них дорогое решение
Я уже месяц работал над интеграцией и почти все сделал, оказалось вчера, что CyberArk им не подходит. Опять возвращаются к решению о шифровании даннынх в базе и теперь вопрос где хранить ключ для шифрования. Начали беседу о HSM, я так понимаю это Hardware Security Module ? Типа железяка, где будут хранится ключи?
Я уже месяц работал над интеграцией и почти все сделал, оказалось вчера, что CyberArk им не подходит. Опять возвращаются к решению о шифровании даннынх в базе и теперь вопрос где хранить ключ для шифрования. Начали беседу о HSM, я так понимаю это Hardware Security Module ? Типа железяка, где будут хранится ключи?
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Зашифровать данные в базе данных
Ну да, но только, еще раз, не сам ключ шифрования непосредственно данных, а мастер ключ к нему.
И если железка правильная (сертифицированная), то и генерить ключи лучше на ней тоже.
Я так и не понял как именно вы собираетесь шифровать данные в базе. Целиком файл(ы), по некоторым полям только или что вообще?
Если первое и не пользоваться встроенными шифровнием СУБД (какая кстати?) , то может лучше подумать о файловой системе?
И если железка правильная (сертифицированная), то и генерить ключи лучше на ней тоже.
Я так и не понял как именно вы собираетесь шифровать данные в базе. Целиком файл(ы), по некоторым полям только или что вообще?
Если первое и не пользоваться встроенными шифровнием СУБД (какая кстати?) , то может лучше подумать о файловой системе?
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
В таблице есть колонка типа binary, в ней хранится конфигурация сервера в бинарном виде. То есть у клиента есть UI, на ней допустим он задает параметры для SMTP сервера, куда будут отправляться сообщения.
Пользователь задает Host, port, username, password, и другие параметры для SMTP сервака. Эти параметры передаются на серверную часть софта, запихываются в объекта класса, затем этот объект serialized в бинарную форму и сохраняем все это в поле таблицы. Если кто то считает эти данные из базы данных, то будет очень несложно все это дело конвертировать обратно в удобочитаемую форму и получить допустим username and password для SMTP сервера.
Есть вариант шифровать эту колонку в таблице. В SLQ Server уже есть шифрование - Always Encrypt. Нужно просто правильно настроить базу данных и при удачном стечении обстоятельств наше приложение даже и знать не будет, что данные на самом деле зашифрованы в таблице (шифрование и дешифрование будет делать драйвер базы данных). НО.. для этого надо, чтобы их DB (обезьяна, которая сидит в Индии) слез с дерева и немного почитал и научился как это делать. Он не хочет учить это дело и выдумывает тупые отмазки что типа это not secured enough. Ихние менеджеры его слушают и пытаются найти другое решение. Как вариант я предложил что наше приложение само будет шифровать и дешифровать эти данные через AES-256 алгоритм.
Встает вопрос где хранить encryption key ? Они предлагают два решения
1. Хранить его в файле на диске, и каким то образом сделать так, чтобы доступ к этому файлу имело только наше приложение. Как это сделать непонятно.
2. Хранить ключ внутри кода, но это не очень хорошо, тогда они не смогут его поменять без рекомпиляции приложения.
Вот интересно HSM можно использовать для хранения ключа как то?
-
- Уже с Приветом
- Posts: 64661
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Зашифровать данные в базе данных
так что вы хотите от сборища макак?shadow7256 wrote: ↑19 Apr 2021 22:34 НО.. для этого надо, чтобы их DB (обезьяна, которая сидит в Индии) слез с дерева и немного почитал и научился как это делать. Он не хочет учить это дело и выдумывает тупые отмазки что типа это not secured enough. Ихние менеджеры его слушают и пытаются найти другое решение.
-
- Уже с Приветом
- Posts: 9381
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
- Так что тебе еще надо, собака?Komissar wrote: ↑19 Apr 2021 22:44так что вы хотите от сборища макак?shadow7256 wrote: ↑19 Apr 2021 22:34 НО.. для этого надо, чтобы их DB (обезьяна, которая сидит в Индии) слез с дерева и немного почитал и научился как это делать. Он не хочет учить это дело и выдумывает тупые отмазки что типа это not secured enough. Ихние менеджеры его слушают и пытаются найти другое решение.
- Да ничего не надо.
- Ну так и женись, хороняка.. царь отпускает. (с.)
Надоели они хуже горькой редьки.