Если только Вася Пупкин может открыть этот файл, то и скопировать его на другую машину сможет только онshadow7256 wrote: 21 Apr 2021 15:39Мне вот одно непонятно. Допустим я выставил permissions на этот файл (через windows credentials manager или еще как то) и допустим только юзер Вася Пупкин может этот файл открыть.kostik78 wrote: 21 Apr 2021 15:33 В винде есть credentials manager который по идее может сделать похожее на то что я предлагал для *nix. Вроде как можно добавит credentials для системного юзверя и пользоваться ими. Этот вариант рассматривали ?
А что, если кто то утащит этот файл (тупо скопирует на другую машину), то этот файл будет невозможно открыть ?:)![]()
Зашифровать данные в базе данных
-
- Уже с Приветом
- Posts: 4667
- Joined: 07 Apr 2018 15:16
Re: Зашифровать данные в базе данных
-
- Уже с Приветом
- Posts: 742
- Joined: 08 Apr 2021 01:54
Re: Зашифровать данные в базе данных
Palych wrote: 21 Apr 2021 14:47Честно говоря, не помню что там не заработало, но выделенное неверно.Flash-04 wrote: 21 Apr 2021 12:37Не понял. Server authentication - стандартная вещь. Client authentication - вам выдали сертификат, вы его установили, сервер его проверяет. У нас есть такие сервисы. Так что не заработало?
И я, честно говоря, зарёкся объяснять почему.
Просто предлагаю всегда не использовать certificate based client authentication.
![HBZ :pain1:](./images/smilies/pain25.gif)
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Зашифровать данные в базе данных
В случае credentials manager никакого файла нет. Вы просто ложите туда свой enc/dec key. Доступ к этой записи будет только у админа и у юзверя.shadow7256 wrote: 21 Apr 2021 15:39Мне вот одно непонятно. Допустим я выставил permissions на этот файл (через windows credentials manager или еще как то) и допустим только юзер Вася Пупкин может этот файл открыть.kostik78 wrote: 21 Apr 2021 15:33 В винде есть credentials manager который по идее может сделать похожее на то что я предлагал для *nix. Вроде как можно добавит credentials для системного юзверя и пользоваться ими. Этот вариант рассматривали ?
А что, если кто то утащит этот файл (тупо скопирует на другую машину), то этот файл будет невозможно открыть ?:)![]()
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
С точки зрения протокола TLS способ валидации один: проверить подписан ли клиентский сертификат у одной из CA в списке.shadow7256 wrote: 21 Apr 2021 15:13а почему неверно? Мы лично так наше WEB API защищаем.Palych wrote: 21 Apr 2021 14:47Честно говоря, не помню что там не заработало, но выделенное неверно.Flash-04 wrote: 21 Apr 2021 12:37Не понял. Server authentication - стандартная вещь. Client authentication - вам выдали сертификат, вы его установили, сервер его проверяет. У нас есть такие сервисы. Так что не заработало?
И я, честно говоря, зарёкся объяснять почему.
Просто предлагаю всегда не использовать certificate based client authentication.
API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
-
- Уже с Приветом
- Posts: 742
- Joined: 08 Apr 2021 01:54
Re: Зашифровать данные в базе данных
Это очевидно не так: mutual TLS supports self-signed certificatesPalych wrote: 21 Apr 2021 17:41С точки зрения протокола TLS способ валидации один: проверить подписан ли клиентский сертификат у одной из CA в списке.shadow7256 wrote: 21 Apr 2021 15:13а почему неверно? Мы лично так наше WEB API защищаем.Palych wrote: 21 Apr 2021 14:47Честно говоря, не помню что там не заработало, но выделенное неверно.Flash-04 wrote: 21 Apr 2021 12:37Не понял. Server authentication - стандартная вещь. Client authentication - вам выдали сертификат, вы его установили, сервер его проверяет. У нас есть такие сервисы. Так что не заработало?
И я, честно говоря, зарёкся объяснять почему.
Просто предлагаю всегда не использовать certificate based client authentication.
API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
https://tools.ietf.org/html/rfc8705
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
И что?dama123 wrote: 21 Apr 2021 18:02Это очевидно не так: mutual TLS supports self-signed certificatesPalych wrote: 21 Apr 2021 17:41С точки зрения протокола TLS способ валидации один: проверить подписан ли клиентский сертификат у одной из CA в списке.shadow7256 wrote: 21 Apr 2021 15:13а почему неверно? Мы лично так наше WEB API защищаем.Palych wrote: 21 Apr 2021 14:47Честно говоря, не помню что там не заработало, но выделенное неверно.Flash-04 wrote: 21 Apr 2021 12:37Не понял. Server authentication - стандартная вещь. Client authentication - вам выдали сертификат, вы его установили, сервер его проверяет. У нас есть такие сервисы. Так что не заработало?
И я, честно говоря, зарёкся объяснять почему.
Просто предлагаю всегда не использовать certificate based client authentication.
API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
https://tools.ietf.org/html/rfc8705
Механизм проверки тот же, не важно как сертификат подписан.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Зашифровать данные в базе данных
Ну это да, но _вытащили файлы_ я такого даже и не слышал. Все вытаскивания _враги впрыснули в приложение SQL команду select * from users; _ ну и приложение счастливи им всю базу и расшифровало, само и добровольно.Flash-04 wrote: 21 Apr 2021 12:31У банков есть жуткий враг - регуляторы. Вот одно из их требований иметь зашифрованные данные в случае data breach. Это если вам в сеть пробрались враги и вытащили данные просто дампом файлов.shadow7256 wrote:да они сами толком не знают от кого они защищаются. Поэтому и толком не могут дать конкретные требования.Palych wrote: 20 Apr 2021 04:55 От кого защищаемся - только от доступа к данным помимо приложения, или от других пользователей внутри приложения?
Пока ясно одно - хотят защититься от всего и забесплатно.
Поэтому шифровать надо на уровне приложения и чем выше тем лучше, у нас даже бродила идея вообще в веб прокси шифровать.
Но что интересно, регуляторов вполне устраивает эта потемкинская деревня под названием TDE - а что, ключ менеджмент есть, шифрование есть, остальное их не колышет.
(Интересно, кто нибудь слышал чтобы идиот хакер упер базу в форме дампа файлов? Или еще лучше упер диски со свалки? От всего остального TDE не защищает).
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Зашифровать данные в базе данных
Аксиома номер 1 - любой юзер может стать рутом или админом, если очень захочет. Поэтому трактовать надо юзеров как рутов. Все эти user level защиты - от случайных ошибок, от целенаправленного взлома защищают почти что никак. Дырочка найдется рано или поздно был бы желающий ее найти.kostik78 wrote: 21 Apr 2021 16:46В случае credentials manager никакого файла нет. Вы просто ложите туда свой enc/dec key. Доступ к этой записи будет только у админа и у юзверя.shadow7256 wrote: 21 Apr 2021 15:39Мне вот одно непонятно. Допустим я выставил permissions на этот файл (через windows credentials manager или еще как то) и допустим только юзер Вася Пупкин может этот файл открыть.kostik78 wrote: 21 Apr 2021 15:33 В винде есть credentials manager который по идее может сделать похожее на то что я предлагал для *nix. Вроде как можно добавит credentials для системного юзверя и пользоваться ими. Этот вариант рассматривали ?
А что, если кто то утащит этот файл (тупо скопирует на другую машину), то этот файл будет невозможно открыть ?:)![]()
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Зашифровать данные в базе данных
Любая защита может быть взломана а хардварный ключ утащенStrangerR wrote: 21 Apr 2021 18:09Аксиома номер 1 - любой юзер может стать рутом или админом, если очень захочет. Поэтому трактовать надо юзеров как рутов. Все эти user level защиты - от случайных ошибок, от целенаправленного взлома защищают почти что никак. Дырочка найдется рано или поздно был бы желающий ее найти.kostik78 wrote: 21 Apr 2021 16:46В случае credentials manager никакого файла нет. Вы просто ложите туда свой enc/dec key. Доступ к этой записи будет только у админа и у юзверя.shadow7256 wrote: 21 Apr 2021 15:39Мне вот одно непонятно. Допустим я выставил permissions на этот файл (через windows credentials manager или еще как то) и допустим только юзер Вася Пупкин может этот файл открыть.kostik78 wrote: 21 Apr 2021 15:33 В винде есть credentials manager который по идее может сделать похожее на то что я предлагал для *nix. Вроде как можно добавит credentials для системного юзверя и пользоваться ими. Этот вариант рассматривали ?
А что, если кто то утащит этот файл (тупо скопирует на другую машину), то этот файл будет невозможно открыть ?:)![]()
![HBZ :pain1:](./images/smilies/pain25.gif)
Далее по Вашей аксиоме никто не должен был использовать user level access and privileges. Но используется и много где более того во этот пунктик часто фигурирует в сертификация. P.S. На линухе все системные приложения обычно имеют уникального юзвера для каждого приложения и ничего работает как то десятки лет.
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
Предлагаю приложить эту логику к basic authentication:shadow7256 wrote: 21 Apr 2021 15:13 API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
API требует наличия client user:password в каждом запросе, считывает password и делает валидацию (много способов, но один из способов тупо проверить есть ли такой пароль на машине сервера).
Не видим подвоха?
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Зашифровать данные в базе данных
Данный способ вполне можно использовать с SSL mutual authorization. Последнее обычно используется для предотвращения Man-in-the-middle attack и это всё-таки работает на уровне транспорта. Так что одно не заменяет другое а вполне дополняет.Palych wrote: 21 Apr 2021 19:00Предлагаю приложить эту логику к basic authentication:shadow7256 wrote: 21 Apr 2021 15:13 API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
API требует наличия client user:password в каждом запросе, считывает password и делает валидацию (много способов, но один из способов тупо проверить есть ли такой пароль на машине сервера).
Не видим подвоха?
-
- Уже с Приветом
- Posts: 742
- Joined: 08 Apr 2021 01:54
Re: Зашифровать данные в базе данных
Можно не говорить загадками? Решение с сертификатом - не очень, ничем не лучше чем basic authentication. В mutual TLS, кроме сертификата проверяется наличие private key, который соответствует public key из сертификата.Palych wrote: 21 Apr 2021 19:00Предлагаю приложить эту логику к basic authentication:shadow7256 wrote: 21 Apr 2021 15:13 API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
API требует наличия client user:password в каждом запросе, считывает password и делает валидацию (много способов, но один из способов тупо проверить есть ли такой пароль на машине сервера).
Не видим подвоха?
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
Первый подвох в том, что сертификаты (и пароли в данном примере) не привязаны к пользователю. Например, если у кого-то сертификат протух - от может одолжить/украсть сертификат другого пользователя, и провайдера этого не заметит.dama123 wrote: 21 Apr 2021 19:52Можно не говорить загадками? Если передавать сертификат по открытому каналу, то решение не очень, ничем не лучше чем basic authentication. В mutual TLS, кроме сертификата проверяется наличие private key, который соответствует public key из сертификата.Palych wrote: 21 Apr 2021 19:00Предлагаю приложить эту логику к basic authentication:shadow7256 wrote: 21 Apr 2021 15:13 API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
API требует наличия client user:password в каждом запросе, считывает password и делает валидацию (много способов, но один из способов тупо проверить есть ли такой пароль на машине сервера).
Не видим подвоха?
Фундаментальный подвох в том что результатом аутентификации является true/false, есть доступ или нет.
А должно быть - аутентичное имя пользователя, в данном случае подтвержденное сертификатом и подписавшим его CA.
Особенно коварно получается когда начальство решает что self signed certificates - не серьёзно для солидной системы, и добавляет какой-нибудь публичный CA. Тогда доступ открывается полностью.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Зашифровать данные в базе данных
Извините конечно но в чем по Вашему заключается проверка сертификата ? Просто Вы утверждаете про private key и public key и что они как то отдельно от сертификата и это выглядит сильно странно.dama123 wrote: 21 Apr 2021 19:52Можно не говорить загадками? Решение с сертификатом - не очень, ничем не лучше чем basic authentication. В mutual TLS, кроме сертификата проверяется наличие private key, который соответствует public key из сертификата.Palych wrote: 21 Apr 2021 19:00Предлагаю приложить эту логику к basic authentication:shadow7256 wrote: 21 Apr 2021 15:13 API требует наличия client certificate в каждом запросе, считывает сертификат и делает валидацию (много способов, но один из способов тупо проверить стоит ли такой сертификат на машине сервера).
API требует наличия client user:password в каждом запросе, считывает password и делает валидацию (много способов, но один из способов тупо проверить есть ли такой пароль на машине сервера).
Не видим подвоха?
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
А кто-то предлагает без пароля? Это как бы разные уровни проверки авторизации пользователя. Вначале покажи аусвайс, потом ещё и пароль. Каждый этап затрудняет вражеский доступ.
Оффтоп: вот что меня реально напрягает, так повсемесиный переход с Hardware RSA токен на софтовый. Копируй сколько хочешь.
Оффтоп: вот что меня реально напрягает, так повсемесиный переход с Hardware RSA токен на софтовый. Копируй сколько хочешь.
Not everyone believes what I believe but my beliefs do not require them to.