Size: a a a

JavaScript fwdays

2020 April 15

AI

Andrew Ivanov in JavaScript fwdays
Nikita Kutselay
если приложение нужно доставлять в docker-образе и оно юзает bcrypt библиотеку, та которая из npm, то не удастся как базовый образ использовать node-alpine или node-slim без установки в образ дополнительных библиотек для сборки этого пакета, возможно кого-то это не устраивает
Вот чтобы кто-то использовал контейнер ноду совсем чистую - и ничего ничего из библиотек и npm - это наверно очень маловероятно.. И практически все используют готовые криптобиблиотеки типа Botan, Openssl. Bcrypt - он на openssl.
источник

NK

Nikita Kutselay in JavaScript fwdays
Andrew Ivanov
Вот чтобы кто-то использовал контейнер ноду совсем чистую - и ничего ничего из библиотек и npm - это наверно очень маловероятно.. И практически все используют готовые криптобиблиотеки типа Botan, Openssl. Bcrypt - он на openssl.
npm идет в любом образе ноды, так как это по сути зависимость самой ноды, а вот насчет сторонних библиотек могут быть разные требования, все-таки приятнее когда у тебя собраный image  весит 80мб вместо 900
источник

TS

Timur Shemsedinov in JavaScript fwdays
Nikita Kutselay
npm идет в любом образе ноды, так как это по сути зависимость самой ноды, а вот насчет сторонних библиотек могут быть разные требования, все-таки приятнее когда у тебя собраный image  весит 80мб вместо 900
есть сборки ноды без npm и даже в пакетных менеджерах многих дистрибутивов ос нет npm, вот в debian, arch нужно npm отдельно ставить
источник

ZA

Zaur Abdulgalimov in JavaScript fwdays
Кукурузный Воришка
Представьте, что у вас слили базу юзеров. Какое положение дел вам кажется менее благоприятным?
Анонимный опрос
50%
У каждого хеша уникальная соль, но злоумышленник знает их все (привет bcrypt)
50%
Все пароли хешированы одной солью (перцем?), но злоумышленник её не знает
Проголосовало: 32
интересно сколько людей не разбирающихся в этом вопросе нажмут любую кнопку, чтобы просто увидеть результаты ))
источник

PS

Pavel Shakhov (pongo) in JavaScript fwdays
Nikita Kutselay
если приложение нужно доставлять в docker-образе и оно юзает bcrypt библиотеку, та которая из npm, то не удастся как базовый образ использовать node-alpine или node-slim без установки в образ дополнительных библиотек для сборки этого пакета, возможно кого-то это не устраивает
так обычно же берется node-alpine, ставятся нужные библиотеки, а потом удаляется лишнее?
источник

AL

Andrey Listochkin in JavaScript fwdays
Zaur Abdulgalimov
интересно сколько людей не разбирающихся в этом вопросе нажмут любую кнопку, чтобы просто увидеть результаты ))
и сколько таких, кто думает, что раз база утекла, то при этом перец не утек. Он типа каким-то волшебным образм неуязвим
источник

AI

Andrew Ivanov in JavaScript fwdays
Кукурузный Воришка
Представьте, что у вас слили базу юзеров. Какое положение дел вам кажется менее благоприятным?
Анонимный опрос
50%
У каждого хеша уникальная соль, но злоумышленник знает их все (привет bcrypt)
50%
Все пароли хешированы одной солью (перцем?), но злоумышленник её не знает
Проголосовало: 32
Это вопрос скорее философский - чем технический. Потому как все очень зависит от того насколько ценна информация которую атакующий  может получить в результате атаки. А значит - какие ресурсы он готов потратить на то чтобы получить из шифра - реальные пароли. Также можно представить что атакующий вместе с базой паролей получил еще и перец :)? Обычно "система" копрометируется вся сразу и вы не будете ждать чтобы проверить "утекла" ли у вас только база или база и "перец".  Можно конечно предположить что у вас перец в HSM храниться. Но это врядли :)
источник

КВ

Кукурузный Воришка in JavaScript fwdays
Andrey Listochkin
и сколько таких, кто думает, что раз база утекла, то при этом перец не утек. Он типа каким-то волшебным образм неуязвим
ну даже если хранить его просто хардкодом в config.js, никакая SQL-инъекция его не увидит
источник

PS

Pavel Shakhov (pongo) in JavaScript fwdays
Кукурузный Воришка
ну даже если хранить его просто хардкодом в config.js, никакая SQL-инъекция его не увидит
откуда у вас вообще sql инъекция взялась?
источник

КВ

Кукурузный Воришка in JavaScript fwdays
просто гипотетический сценарий
источник

NK

Nikita Kutselay in JavaScript fwdays
Pavel Shakhov (pongo)
так обычно же берется node-alpine, ставятся нужные библиотеки, а потом удаляется лишнее?
да, хорошее замечание, можно юзать многоуровневые сборки, правда по наблюдениям многие про них не знают
источник

AL

Andrey Listochkin in JavaScript fwdays
Nikita Kutselay
да, хорошее замечание, можно юзать многоуровневые сборки, правда по наблюдениям многие про них не знают
но при этом знают про node-slim? Это очень вряд ли.
источник

AG

Andrey Gusev in JavaScript fwdays
Кукурузный Воришка
Представьте, что у вас слили базу юзеров. Какое положение дел вам кажется менее благоприятным?
Анонимный опрос
50%
У каждого хеша уникальная соль, но злоумышленник знает их все (привет bcrypt)
50%
Все пароли хешированы одной солью (перцем?), но злоумышленник её не знает
Проголосовало: 32
почему в первом случае нельзя к каждой соли подмешивать секретную часть, которая не хранится в базе?
источник

NK

Nikita Kutselay in JavaScript fwdays
Timur Shemsedinov
есть сборки ноды без npm и даже в пакетных менеджерах многих дистрибутивов ос нет npm, вот в debian, arch нужно npm отдельно ставить
Я говорил в контексте докер образов node* из docker-hub, все версии что я пробовал предоставляли npm по умолчанию
источник

КВ

Кукурузный Воришка in JavaScript fwdays
Andrey Gusev
почему в первом случае нельзя к каждой соли подмешивать секретную часть, которая не хранится в базе?
можно и нужно)
источник

NK

Nikita Kutselay in JavaScript fwdays
Andrey Listochkin
но при этом знают про node-slim? Это очень вряд ли.
в сети я видел пару гайдов со сборкой через node-alpine, но ни в одном из них не было указано что возможно потребуется установка доп библиотек и оптимизация через multistage build, так что люди не сразу к этому приходят
источник

КВ

Кукурузный Воришка in JavaScript fwdays
Andrew Ivanov
Это вопрос скорее философский - чем технический. Потому как все очень зависит от того насколько ценна информация которую атакующий  может получить в результате атаки. А значит - какие ресурсы он готов потратить на то чтобы получить из шифра - реальные пароли. Также можно представить что атакующий вместе с базой паролей получил еще и перец :)? Обычно "система" копрометируется вся сразу и вы не будете ждать чтобы проверить "утекла" ли у вас только база или база и "перец".  Можно конечно предположить что у вас перец в HSM храниться. Но это врядли :)
а вы точно не путаете шифр и хеш?)
источник

AI

Andrew Ivanov in JavaScript fwdays
Кукурузный Воришка
а вы точно не путаете шифр и хеш?)
Путаю - потому и написал что bcrypt реализован на blowfish.
источник

М

Максим in JavaScript fwdays
Andrew Ivanov
Что касается соли и bcrypt. Маленький ликбез - Bcrypt основан на blowfish - это симметричный алгоритм шифрования. Это важно. Расшифровать симметричный алгоритм крайне тяжело (в природе не зафиксированно криптоанализа против blowfish). Но есть одно но - в bcrypt мы шифруем всегда одну и туже фразу "OrpheanBeholderScryDoubt" ... с помощью вашего пароля. Сам по себе blowfish это блоковый ECB шифр. У ECB шифров есть особенность: один и тотже текст зашифрованный с помощью одного и тогоже ключа будет каждый раз давать один и тотже шифрованный такст. Это важно! Чтобы этого не произошло мы к паролю добавляем псевдослучайную последовательность "соль". Тогда два пользователя с одинаковыми паролями которыми шифруют всегда одну и туже фразу будут иметь разные шифрованные тексты (или как их называют плохие дядьки  - хеши). Кроме того соль защищает нас от атак по словарю  типа rainbow. Это когда мы заранее шифруем кучу всего а потом просто сравниваем шифры с шифрами в вашей базе данных. И да ! Никаких атак на расшифровку против blowfish мне неведомы. Только брутфорс всемогущий.
Вы пишете в бкрипт  «шифрование паролей» а не хеширование. Шифрование подразумевает обратную процедуру — дешифрование. В бкрипт есть возможность восстановить пароль используя какой-то ключ?
Если нет, то это не шифрование, а хеширование.
источник

М

Максим in JavaScript fwdays
Кукурузный Воришка
Представьте, что у вас слили базу юзеров. Какое положение дел вам кажется менее благоприятным?
Анонимный опрос
50%
У каждого хеша уникальная соль, но злоумышленник знает их все (привет bcrypt)
50%
Все пароли хешированы одной солью (перцем?), но злоумышленник её не знает
Проголосовало: 32
Ну, да... перец никто не знает..
А если я злоумышленник и зарегался в вашем приложении? Я знаю свой пароль. С утекшей базы знаю хэш своего пароля с перцем. Долго ли я буду узнавать перец? Когда узнаю мне будет легче хакать другие пароли. Перец то один.
Ну это мои нубские размышления.
источник