Зашифровать данные в базе данных

alex_127
Уже с Приветом
Posts: 7723
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: Зашифровать данные в базе данных

Post by alex_127 »

интересно может будет почитать про https://docs.microsoft.com/en-us/sql/re ... rver-ver15
одной строчкой: engine never sees unencrypted data. по зашифрованному ключу можно делать индех. и он сортирован (range scans). но больше места займет.
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Зашифровать данные в базе данных

Post by Flash-04 »

Mark wrote: 04 Jan 2021 18:52
Flash-04 wrote: 27 Dec 2020 02:00 В Active Directory хранится информация о пользователях имеющих доступ в Enterprise network. Для того M$ её и создала. Кастомеры не являются пользователями сети, потому информация о них действительно хранится в БД. Что по вашему тут неправильного?
ну можно создать внешний домен для кастомеров - и используя directory services законнектить все к базе (Oracle EUS for example). но в принципе и хранение app users в базе это не криминал - просто хеш вместо plain text password - это как бы закон!
в принципе можно, да.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
Mark
Уже с Приветом
Posts: 1981
Joined: 10 Oct 2000 09:01
Location: New England

Re: Зашифровать данные в базе данных

Post by Mark »

valchkou wrote: 12 Jan 2021 03:25 согласен с некоторыми ораторами, простое работающее решение использовать vault + AES.
Простое не значит плохое или недостаточно безопасное!
Вопрос тут в другом, как защитить сам VAULT от несанкционированного доступа и от потери самого вольта.

Вариант без вольта тоже сработает, это установка сертификата на саму машину где запущена прога.
Но и тут есть подводные камни. Как управлять такими сертификатами?

Короче простого решения нет, если нет системы и процесса управления ключами/секретами/сертификатами.
Но если есть, то реализовать фичу просто.
а чем вас orapki не устраивает как тулза - у автора ведь Oracle DB? Зачем выдумывать велосипед? Есть более продвинутые (и дорогие) решения как тот же Orale Key Vault или claud-based like Azure Key Vault.
User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Зашифровать данные в базе данных

Post by valchkou »

Mark wrote: 12 Jan 2021 15:17
valchkou wrote: 12 Jan 2021 03:25 согласен с некоторыми ораторами, простое работающее решение использовать vault + AES.
Простое не значит плохое или недостаточно безопасное!
Вопрос тут в другом, как защитить сам VAULT от несанкционированного доступа и от потери самого вольта.

Вариант без вольта тоже сработает, это установка сертификата на саму машину где запущена прога.
Но и тут есть подводные камни. Как управлять такими сертификатами?

Короче простого решения нет, если нет системы и процесса управления ключами/секретами/сертификатами.
Но если есть, то реализовать фичу просто.
а чем вас orapki не устраивает как тулза - у автора ведь Oracle DB? Зачем выдумывать велосипед? Есть более продвинутые (и дорогие) решения как тот же Orale Key Vault или claud-based like Azure Key Vault.
меня устраивает :fr: , более того я сторонник готовых решений.
вопрос в другом, почему компания стартера до сих пор этим не пользуется, при том что в клиентах у них как минимум банк
User avatar
Mark
Уже с Приветом
Posts: 1981
Joined: 10 Oct 2000 09:01
Location: New England

Re: Зашифровать данные в базе данных

Post by Mark »

Если я правильно понимаю в банке собственные DBAs которые просто не знают или не хотят особо шевелится. А компания топик-стартера предполагаю никаких прав на базу и инфраструктуру не имеет.
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Mark wrote: 12 Jan 2021 20:42 Если я правильно понимаю в банке собственные DBAs которые просто не знают или не хотят особо шевелится. А компания топик-стартера предполагаю никаких прав на базу и инфраструктуру не имеет.
Всё верно по всем пунктам. Банк согласился на AES шифрование. Ну пусть радуются.
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Гребаный Барклай теперь пишет вот что:

- 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 ???
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Mark wrote: 12 Jan 2021 15:17 у автора ведь Oracle DB?
у них SQL Server.
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Зашифровать данные в базе данных

Post by Oleg-NY »

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 ???
Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Oleg-NY wrote: 25 Jan 2021 18:49
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 ???
Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.
Задача конкретная.. где хранить symmetric key and Initialization vector? В CNG невозможно это сделать, так как CNG используется для asymmetric keys.
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Зашифровать данные в базе данных

Post by Oleg-NY »

shadow7256 wrote: 25 Jan 2021 18:58
Oleg-NY wrote: 25 Jan 2021 18:49
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 ???
Совсем не обязательно там хранить сам актуальный AES-256 key, т.к. они могут и должны быть разными (по аналогии с тем, как это происходит в TLS, например). Все зависит от того как и что вы собираетесь шифровать, но всякие encrypted blob сами в себе содержат оный симметричный ключ в зашифрованном виде с помощью мастер-ключа. Вот мастер-ключ и храните в CNG или где-нибудь еще... Данный подход еще и аппаратно реализован много где так, что можно будет разгрузить основной проц или вынести шифрование в отдельный блок для пущей секретности так сказать! )) Плюс в данном виде можно еще и доп. ключ/пароль от пользоателя подмешивать для авторизации доступа и т.д.
Задача конкретная.. где хранить symmetric key and Initialization vector? В CNG невозможно это сделать, так как CNG используется для asymmetric keys.
Ну если собираетесь городить proprietary колхоз, то сгенерите ассиметричный ключ и храните его в CNG, а им уже зашифруйте актуальный AES-256, который храните где угодно, хоть в той же базе, хоть в файле где-нить...
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Oleg-NY wrote: 25 Jan 2021 19:09 Ну если собираетесь городить proprietary колхоз,
а если не городить колхоз, то как?
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Пляски продолжаются.. уже не хотят использовать AES-256 шифрование. Теперь хотят использовать продукт какой то компании CyberArk. Для чего? они сами не знают пока...
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Зашифровать данные в базе данных

Post by Flash-04 »

Их продукты позволяют хранить пароли в vault и много ещё чего. Модная сейчас компания.
Not everyone believes what I believe but my beliefs do not require them to.
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Flash-04 wrote: 28 Jan 2021 14:06 Их продукты позволяют хранить пароли в vault и много ещё чего. Модная сейчас компания.
то есть наш продукт должен будет сделать запрос к их серверам и достать оттуда допустим symmetric key и IV (если мы используем AES-256) для шифрования, я прав?
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Зашифровать данные в базе данных

Post by Oleg-NY »

IV это - не секретная иформация и можете хранить его открыто где угодно и как угодно, ассоциировано с зашифрованными данными (я уже упоминал, что есть "стандартный" формат blob для шифрованного массива данных). Лучше использовать AES-GCM, конечно. Пока нет времени прочитать всю ветку, чтобы понять какова организация данных, которые хотите шифровать, поэтому трудно советовать что-то конкретное...
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Oleg-NY wrote: 28 Jan 2021 22:41 IV это - не секретная иформация и можете хранить его открыто где угодно и как угодно, ассоциировано с зашифрованными данными (я уже упоминал, что есть "стандартный" формат blob для шифрованного массива данных). Лучше использовать AES-GCM, конечно. Пока нет времени прочитать всю ветку, чтобы понять какова организация данных, которые хотите шифровать, поэтому трудно советовать что-то конкретное...
этот реально ебан..ый Барклай сам не знает чего хочет. Теперь говорят "не хотим шифрование, хотим хранить информацию в CyberArk". :angry: Я сказал своим менеджерам, что пока от этих дебилов не будет четкой документации, чего они хотят, я и пальцем не пошевелю.
User avatar
KVA
Уже с Приветом
Posts: 5382
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Зашифровать данные в базе данных

Post by KVA »

Хватай пока дают. Пусть у CyberArk голова болит о security. Если вас хакнут то это их будут проблемы, а не доморощенного шифровальщика.
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Зашифровать данные в базе данных

Post by Flash-04 »

shadow7256 wrote:
Flash-04 wrote: 28 Jan 2021 14:06 Их продукты позволяют хранить пароли в vault и много ещё чего. Модная сейчас компания.
то есть наш продукт должен будет сделать запрос к их серверам и достать оттуда допустим symmetric key и IV (если мы используем AES-256) для шифрования, я прав?
Типа того.
Not everyone believes what I believe but my beliefs do not require them to.
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Зашифровать данные в базе данных

Post by Oleg-NY »

Flash-04 wrote: 31 Jan 2021 05:27
shadow7256 wrote:
Flash-04 wrote: 28 Jan 2021 14:06 Их продукты позволяют хранить пароли в vault и много ещё чего. Модная сейчас компания.
то есть наш продукт должен будет сделать запрос к их серверам и достать оттуда допустим symmetric key и IV (если мы используем AES-256) для шифрования, я прав?
Типа того.
Ну не совсем... IV не имеет отношения к ключу, но к блоку/стриму данных и нехрен его там хранить! ))
Далее, сам AES ключ желательно генерить время от времени или от блока к блоку. И здесь более всего встает вопрос а можете ли вы сгенерить его с достаточной степенью энтропии. За этим лучше обращаться к "правильной" железке или внешнему сервису, а-ля CyberArk (хотя с последними формально не знаком).
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Апдейт. для этих дебилов из Barclay's оказалось, что CyberArk для них дорогое решение 8O

Я уже месяц работал над интеграцией и почти все сделал, оказалось вчера, что CyberArk им не подходит. Опять возвращаются к решению о шифровании даннынх в базе и теперь вопрос где хранить ключ для шифрования. Начали беседу о HSM, я так понимаю это Hardware Security Module ? Типа железяка, где будут хранится ключи?
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Зашифровать данные в базе данных

Post by Oleg-NY »

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

Я так и не понял как именно вы собираетесь шифровать данные в базе. Целиком файл(ы), по некоторым полям только или что вообще?
Если первое и не пользоваться встроенными шифровнием СУБД (какая кстати?) , то может лучше подумать о файловой системе?
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Oleg-NY wrote: 19 Apr 2021 20:06 Я так и не понял как именно вы собираетесь шифровать данные в базе. Целиком файл(ы), по некоторым полям только или что вообще?
В таблице есть колонка типа 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 можно использовать для хранения ключа как то?
User avatar
Komissar
Уже с Приветом
Posts: 65206
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Зашифровать данные в базе данных

Post by Komissar »

shadow7256 wrote: 19 Apr 2021 22:34 НО.. для этого надо, чтобы их DB (обезьяна, которая сидит в Индии) слез с дерева и немного почитал и научился как это делать. Он не хочет учить это дело и выдумывает тупые отмазки что типа это not secured enough. Ихние менеджеры его слушают и пытаются найти другое решение.
так что вы хотите от сборища макак?
shadow7256
Уже с Приветом
Posts: 10598
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Зашифровать данные в базе данных

Post by shadow7256 »

Komissar wrote: 19 Apr 2021 22:44
shadow7256 wrote: 19 Apr 2021 22:34 НО.. для этого надо, чтобы их DB (обезьяна, которая сидит в Индии) слез с дерева и немного почитал и научился как это делать. Он не хочет учить это дело и выдумывает тупые отмазки что типа это not secured enough. Ихние менеджеры его слушают и пытаются найти другое решение.
так что вы хотите от сборища макак?
- Так что тебе еще надо, собака?
- Да ничего не надо.
- Ну так и женись, хороняка.. царь отпускает. (с.)

Надоели они хуже горькой редьки.

Return to “Вопросы и новости IT”