Ошибаетесь. Сертификаты вполне могут быть именными и это не просто true/false.Palych wrote: 21 Apr 2021 20:06Первый подвох в том, что сертификаты (и пароли в данном примере) не привязаны к пользователю. Например, если у кого-то сертификат протух - от может одолжить/украсть сертификат другого пользователя, и провайдера этого не заметит.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: Зашифровать данные в базе данных
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
Сертификаты не могут не быть именными. Это по сути многокомпонентное имя (X.509?...) подписанное электронным ключём.kostik78 wrote: 21 Apr 2021 20:10Ошибаетесь. Сертификаты вполне могут быть именными и это не просто true/false.Palych wrote: 21 Apr 2021 20:06Первый подвох в том, что сертификаты (и пароли в данном примере) не привязаны к пользователю. Например, если у кого-то сертификат протух - от может одолжить/украсть сертификат другого пользователя, и провайдера этого не заметит.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: Зашифровать данные в базе данных
Ок. Говорим об одном и том же в принципе.Palych wrote: 21 Apr 2021 21:12 Сертификаты не могут не быть именными. Это по сути многокомпонентное имя (X.509?...) подписанное электронным ключём.
Я говорю о том, что если "тупо проверить стоит ли такой сертификат на машине сервера" - это имя игнорируется, что ломает весь процесс аутентификации/авторизации.
Чтобы под итожить с mutual SSL auth можно использовать в двух воркфлов:
* для предотвращения MitM тогда нету user auth (просто проверка наличия правильного клиентского и серверного сертификата) и нужно добавлять что то ещё для user auth
* использование SSL cert с дополнительными полями для user auth - в данном случае защита от MitM + user auth.
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
ну Вы докопались простоPalych wrote: 21 Apr 2021 21:12 Я говорю о том, что если "тупо проверить стоит ли такой сертификат на машине сервера" - это имя игнорируется, что ломает весь процесс аутентификации/авторизации.
![Smile :)](./images/smilies/icon_smile.gif)
![Smile :)](./images/smilies/icon_smile.gif)
-
- Уже с Приветом
- Posts: 742
- Joined: 08 Apr 2021 01:54
Re: Зашифровать данные в базе данных
Нет проблем. Проверка сертификата заключается в том, что сертификат ( т.е. public key) подписан CA private key. Это делается с использованием CA public key ( или key chain).kostik78 wrote: 21 Apr 2021 20:09 Извините конечно но в чем по Вашему заключается проверка сертификата ? Просто Вы утверждаете про private key и public key и что они как то отдельно от сертификата и это выглядит сильно странно.
Результат этой проверки - можно дoверять pubic key, который содержится в сертификате.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Зашифровать данные в базе данных
kostik78 wrote: 21 Apr 2021 18:48
Любая защита может быть взломана а хардварный ключ утащен![]()
Далее по Вашей аксиоме никто не должен был использовать user level access and privileges. Но используется и много где более того во этот пунктик часто фигурирует в сертификация. P.S. На линухе все системные приложения обычно имеют уникального юзвера для каждого приложения и ничего работает как то десятки лет.
Ну в целом то да но
- понятно что любая защита это забор
- защита через сегрегацию сети это ров с водой и высокая стена за ним с колючкой.
- защита через виртуалки это забор с колючей проволокой
- защита через юзеров это невысокий штакетник да еще и с дырами которые постоянно белки и койоты прогрызают
- защита через докеров это табличка _не влезай убьет_.
Расчитывать на защиту через юзеров можно только как на дополнительное препятствие - честные не полезут, нечестный зацепится и порвет штаны. Но как что то серьезное это просто несерьезно. Замучаетесь бегать дырки затыкать и все одно ваши же девелоперы дыр неумышленно накрутят. Ее естественно тоже ставят, но перед рвом с водой или после забора с колючкой да и то приходится туда Карацюпу с его Шариком запускать чтобы бегал и нарушителей обгавкивал. Проще считать что этого забора нет вообще и строить защиту не расчитывая на него, но конечно собака с пограничником и легкий штакетник как еще один уровень защиты никому еще не мешали. Правда кормить их надо, пограничника и его собаку.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Зашифровать данные в базе данных
Нуу если делать 2 стадийную регистрацию - например когда не просто QT код с гугла сканируем а когда софт токен сначала кажет приваси свой код а потом сканирует QT - то оно уже просто так не копируется. А так то да, конечно. Хот н сегодня больше любят PUSH методы. Чем меня они радуют - а кто сказал что мы не пушаем запрос на то же устройство с которого заходим и которое забыли на скамейке? Я от гугла нежданно получил запрос сразу на все свои планшетки. В этом смысле токены чуть секьюрнее но с другой стороны их да, можно и скопировать если криво сделано, бумажный можно сосканить, и так далее. Ну и потом если это H токен а не T то каждый заход то вызывает смену и если кто то без вас зашел то у вас следующий код уже не сработает (он уже использован). В этом смысле, кстати, T токены менее безопасны иногда.Flash-04 wrote: 21 Apr 2021 20:10 А кто-то предлагает без пароля? Это как бы разные уровни проверки авторизации пользователя. Вначале покажи аусвайс, потом ещё и пароль. Каждый этап затрудняет вражеский доступ.
Оффтоп: вот что меня реально напрягает, так повсемесиный переход с Hardware RSA токен на софтовый. Копируй сколько хочешь.
Может кстати сертификат шифровать как то так что только по мак адресу девайса он расшифруется? Тогда тупой перенос на другой девайс сразу сломает его. Это все можно обойти но оно уже усилий потребует и еать шанс что поймается.
Нуу, не надо так сразу. Вполне бывают сертификаты с именем пользователя. Никто же не мешает его в сертификат засунуть и потом проверить. Помнится мне что то в эту сторону в ssh вроде делали но до конца не уверен.Сертификаты не могут не быть именными. Это по сути многокомпонентное имя (X.509?...) подписанное электронным ключём.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Зашифровать данные в базе данных
Все верно написано про layers of defense. Не совсем понятен Ваш "наезд" про не серьезность защиты на уровне изоляции пользователей ибо в контексте обсуждаемого вопроса данное решение возможно и реально при наличии других слоев что Вы описали, включая ограниченая возможность ескалации привилегии.StrangerR wrote: 22 Apr 2021 00:42kostik78 wrote: 21 Apr 2021 18:48
Любая защита может быть взломана а хардварный ключ утащен![]()
Далее по Вашей аксиоме никто не должен был использовать user level access and privileges. Но используется и много где более того во этот пунктик часто фигурирует в сертификация. P.S. На линухе все системные приложения обычно имеют уникального юзвера для каждого приложения и ничего работает как то десятки лет.
Ну в целом то да но
- понятно что любая защита это забор
- защита через сегрегацию сети это ров с водой и высокая стена за ним с колючкой.
- защита через виртуалки это забор с колючей проволокой
- защита через юзеров это невысокий штакетник да еще и с дырами которые постоянно белки и койоты прогрызают
- защита через докеров это табличка _не влезай убьет_.
Расчитывать на защиту через юзеров можно только как на дополнительное препятствие - честные не полезут, нечестный зацепится и порвет штаны. Но как что то серьезное это просто несерьезно. Замучаетесь бегать дырки затыкать и все одно ваши же девелоперы дыр неумышленно накрутят. Ее естественно тоже ставят, но перед рвом с водой или после забора с колючкой да и то приходится туда Карацюпу с его Шариком запускать чтобы бегал и нарушителей обгавкивал. Проще считать что этого забора нет вообще и строить защиту не расчитывая на него, но конечно собака с пограничником и легкий штакетник как еще один уровень защиты никому еще не мешали. Правда кормить их надо, пограничника и его собаку.
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
Как раз наоборот: я лично ни разу не видел чтобы в реальных проектах делали не так как Вы описали.shadow7256 wrote: 21 Apr 2021 21:55ну Вы докопались простоPalych wrote: 21 Apr 2021 21:12 Я говорю о том, что если "тупо проверить стоит ли такой сертификат на машине сервера" - это имя игнорируется, что ломает весь процесс аутентификации/авторизации.)) Я просто привел пример одного из методов валидации сертификата
) Конечно можно и нужно использовать более изощренный способ нежели простая проверка стоит ли такой сертификат на машине пользователя.. вариантов много.
Везде тупо проверяли стоит ли такой сертификат на сервере.
И здесь пока никто не опроверг эту позицию. Наоборот, говорят что так и надо.
-
- Уже с Приветом
- Posts: 13723
- Joined: 16 Jan 2001 10:01
Re: Зашифровать данные в базе данных
В данном случае аусвайс содержит имя владельца, фотографию, и проч. И всё это в защищённом чипе. И аппарат для чтения имеется.Flash-04 wrote: 21 Apr 2021 20:10Это как бы разные уровни проверки авторизации пользователя. Вначале покажи аусвайс, потом ещё и пароль. Каждый этап затрудняет вражеский доступ.
Но вахтёрам даётся инструкция проверять только водяные знаки.
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
Но с другой стороны, чем так сильно плох этот метод?Palych wrote: 22 Apr 2021 02:08 Как раз наоборот: я лично ни разу не видел чтобы в реальных проектах делали не так как Вы описали.
Везде тупо проверяли стоит ли такой сертификат на сервере.
И здесь пока никто не опроверг эту позицию. Наоборот, говорят что так и надо.
-
- Уже с Приветом
- Posts: 38016
- Joined: 14 Dec 2006 20:13
- Location: USA
Re: Зашифровать данные в базе данных
Метод имееет свою цель. Предотвратить кражу креденшиалов подсовыванием (или MITM или через подсунутый DNS) своего сервера вместо штатного.shadow7256 wrote: 22 Apr 2021 12:45Но с другой стороны, чем так сильно плох этот метод?Palych wrote: 22 Apr 2021 02:08 Как раз наоборот: я лично ни разу не видел чтобы в реальных проектах делали не так как Вы описали.
Везде тупо проверяли стоит ли такой сертификат на сервере.
И здесь пока никто не опроверг эту позицию. Наоборот, говорят что так и надо.
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Зашифровать данные в базе данных
MITM не получится. Весь разговор с API идет через HTTPS, по другому просто не получится, серверная часть требует client certificate, а в этом случае WEB API Framework даже не станет запускать инстанс сервера, если он вдруг захочет работать по HTTP протоколу.StrangerR wrote: 22 Apr 2021 16:25Метод имееет свою цель. Предотвратить кражу креденшиалов подсовыванием (или MITM или через подсунутый DNS) своего сервера вместо штатного.shadow7256 wrote: 22 Apr 2021 12:45Но с другой стороны, чем так сильно плох этот метод?Palych wrote: 22 Apr 2021 02:08 Как раз наоборот: я лично ни разу не видел чтобы в реальных проектах делали не так как Вы описали.
Везде тупо проверяли стоит ли такой сертификат на сервере.
И здесь пока никто не опроверг эту позицию. Наоборот, говорят что так и надо.
Подсунутый DNS .. а можно поподробнее, что это такое и каким образом так можно "обмануть" серверную часть приложения?
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
вот именно. Абсолютной защиты нет. NSA и тот взламывали. Shadowbrokers стащили их тулкит с сервера не имеющего интернет соединения и находящегося в изолированной сети.StrangerR wrote: 22 Apr 2021 16:25 Метод имееет свою цель. Предотвратить кражу креденшиалов подсовыванием (или MITM или через подсунутый DNS) своего сервера вместо штатного.
Но затрудняя работу взломщику, повышаем свои шансы выжить.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Зашифровать данные в базе данных
https://www.kaspersky.com/resource-cent ... itions/dnsshadow7256 wrote: 22 Apr 2021 17:54 Подсунутый DNS .. а можно поподробнее, что это такое и каким образом так можно "обмануть" серверную часть приложения?
Not everyone believes what I believe but my beliefs do not require them to.