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

shadow7256
Уже с Приветом
Posts: 9402
Joined: 18 Mar 2004 15:11
Location: New York -> FL

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

Post by shadow7256 »

Уважаемые,

Имеем колонку в SLQ Server типа varbinary. В ней хранится конфигурация "сервера" в двоичном виде. То есть это просто объект какого то класса в C# serialized into binary form. Это представление довольно легко перевести в удобочитаемый вид и увидеть что из себя представляет этот объект и какие данные он содержит. Длина данные примерно 4К.

Стоит теперь задача, прежде чем сохранять данные в этой колонке их необходимо зашифровать (ну и потом дешифровать при чтении). По сети никакие данные передавать не надо, приложение (написано на C#), которое читает и записывает данные в базу находится на той же машине что и база данных.

Первое, что приходит на ум это использовать симметричный алгоритм, типа AES. Использует один ключ, быстрый, можно использоват для работы с большими объемами данных..

Начальство зарекнулось про ассиметриченый алгоритм, типа RSA. Но тут у меня сомнения, зачем его использовать. Он обычно используется для шифрации/дешифрации небольших объемов данных, гораздо медленнее, чем симметричный алгоритм, использует два ключа вместо одного.. и т.п.

Вообщем посоветуйте что лучше подойдет
User avatar
VovaK98
Уже с Приветом
Posts: 1830
Joined: 04 Mar 2002 10:01
Location: Tampa

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

Post by VovaK98 »

Поле с guid в таблице есть? Шифруй через него. И никто не догадается :wink:
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
User avatar
veey+
Уже с Приветом
Posts: 2198
Joined: 29 Jul 2019 17:34
Location: Нуёкщина -> Притампье

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

Post by veey+ »

а пароль где хранить будете?
This world is totally fugazi.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

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

Post by Flash-04 »

Во первых все уважающие RDBMS имеют встроенную поддержку шифрования и во вторых, систему управления ключами (что кстати ещё важнее чем само шифрование). Поэтому не надо изобретать велосипед, а читать документацию.
Например: https://docs.microsoft.com/en-us/sql/re ... rver-ver15
Not everyone believes what I believe but my beliefs do not require them to.
shadow7256
Уже с Приветом
Posts: 9402
Joined: 18 Mar 2004 15:11
Location: New York -> FL

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

Post by shadow7256 »

VovaK98 wrote: 20 Dec 2020 16:02 Поле с guid в таблице есть? Шифруй через него. И никто не догадается :wink:
Нет такого поля :)
shadow7256
Уже с Приветом
Posts: 9402
Joined: 18 Mar 2004 15:11
Location: New York -> FL

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

Post by shadow7256 »

veey+ wrote: 20 Dec 2020 16:31 а пароль где хранить будете?
Вы имеете в виду symmetric key? Ну первое что на ум приходит это хранить его внутри кода нашего приложения.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

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

Post by Flash-04 »

а потом его на Гитхаб в лучших традициях :D
Если ваша компания ходит под какими-нибудь регулейшанами типа HIPAA, то готовтесь к увольнению после первого же аудита.
Not everyone believes what I believe but my beliefs do not require them to.
shadow7256
Уже с Приветом
Posts: 9402
Joined: 18 Mar 2004 15:11
Location: New York -> FL

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

Post by shadow7256 »

Flash-04 wrote: 20 Dec 2020 16:33 Во первых все уважающие RDBMS имеют встроенную поддержку шифрования и во вторых, систему управления ключами (что кстати ещё важнее чем само шифрование). Поэтому не надо изобретать велосипед, а читать документацию.
Например: https://docs.microsoft.com/en-us/sql/re ... rver-ver15
это потребует работы от клиента и его DBA, что очень трудно. Немного истории. Клиент - банк Barclay's - самый еба...ый из всех клиентов, которые у нас есть.

Как только у них возникает какая то "проблема" они пишут нам и требуют решить ее немедленно, как будто у нас этот банк единственный клиент и у нас нет текущих проектов, мы должны все бросить и решать их проблему. Помимо этого они начинают писать писульки своему высшему начальству и угрожают что будут писать нашему СЕО, что мы не выполняем их требования. Вообщем гавнюки еще те.

У них DBA сидят в Индии, они ничего не знают и делать не хотят, кроме того, как создавать проблемы нам на ровном месте. Вот и сейчас говорят своему начальству, что типа наши sensitive данные хранятся в базе данных в незащищенном виде. Мы говорим так вы можете вообще использовать Transparent Data Encryption (TDE) в вашей базе и защищить все данные какие вам надо. Им лень изучать это и они просто пишут отмазку - it would not be enough in terms of security и типа вы должны сами шифровать ваши данные когда вы их записываете в нашу базу. Поэтому приходится изобретать велосипед.
shadow7256
Уже с Приветом
Posts: 9402
Joined: 18 Mar 2004 15:11
Location: New York -> FL

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

Post by shadow7256 »

Flash-04 wrote: 20 Dec 2020 16:39 а потом его на Гитхаб в лучших традициях :D
кого на Гитхаб?
Если ваша компания ходит под какими-нибудь регулейшанами типа HIPAA, то готовтесь к увольнению после первого же аудита.
уж не знаю под чем ходит компания наша
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

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

Post by Flash-04 »

shadow7256 wrote: 20 Dec 2020 16:50 кого на Гитхаб?
сырцы с ключами. :) знаете сколько их каждый день на Гитхабе находят? :food:
уж не знаю под чем ходит компания наша
а надо бы знать, чтобы потом не оказаться крайним.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

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

Post by Flash-04 »

shadow7256 wrote: 20 Dec 2020 16:49 это потребует работы от клиента и его DBA, что очень трудно. Немного истории. Клиент - банк Barclay's - самый еба...ый из всех клиентов, которые у нас есть.
пусть у вашего менеджера голова болит. Вам надо знать плюсы и минусы всей этой кухни с шифрованием. Для ключей кстати придётся организовывать какой-нибудь Vault, продуктов много для этого.
Вообще всё это тянет на хороший project. По крайней мере в моей конторе так бы оно и было. Все что связано с безопасностью должно хорошо документироваться и иметь "хвост" документов для аудита.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

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

Post by Flash-04 »

VovaK98 wrote: 20 Dec 2020 16:02 Поле с guid в таблице есть? Шифруй через него. И никто не догадается :wink:
хороший совет! :great: чтобы гарантированно стать всеобщим посмешищем после data breach который неизбежно произойдет рано или поздно :D
Not everyone believes what I believe but my beliefs do not require them to.
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
User avatar
timeau
Уже с Приветом
Posts: 17556
Joined: 15 Aug 2002 00:39
Location: Maryland

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

Post by timeau »

Flash-04 wrote: 20 Dec 2020 17:04Для ключей кстати придётся организовывать какой-нибудь Vault, продуктов много для этого.
Я бы вообще через environment variables выставлял все это, и нигде никакие пароли не валяются...
Не задираться, а то съем!..
User avatar
VovaK98
Уже с Приветом
Posts: 1830
Joined: 04 Mar 2002 10:01
Location: Tampa

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

Post by VovaK98 »

Flash-04 wrote: 20 Dec 2020 17:05
VovaK98 wrote: 20 Dec 2020 16:02 Поле с guid в таблице есть? Шифруй через него. И никто не догадается :wink:
хороший совет! :great: чтобы гарантированно стать всеобщим посмешищем после data breach который неизбежно произойдет рано или поздно :D
Хороший совет, практичный. И алгоритм быстрый, и ключ динамический, и в исходнике хранить его не надо.
На самом деле, необязательно брать guid целиком, можно часть, можно каждый 2-й символ, можно производную.
Можно вообще из другой таблицы брать.
Если кто украдёт базу - флаг ему в руки, пусть разгадывает, как на самом деле ключ генерировался.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.

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