LINUX.ORG.RU

Безопасное хранение и извлечение паролей (MySQL)

 , ,


1

2

Добрый день)

Скажите пожалуйста, как лучше всего хранить пароли в базе (mysql)?

Если кешировать, то как их обратно извлекать, в случае утраты пароля (иногда бывает ломается файл keepass'a с паролем от раздела секретного и поменять пароль без старого нельзя). Если сравнивать, то берем пароль введенный, кешируем его и сами кеши сравниваем, а вот как извлечь его в человеский вид?

И каким образом лучше всего шифровать пароли, читал, что md5 не очень, sha1 получше...

Как правильно хранить пароли, так сказать на все случаи жизни. даже если база «ушла»). Тут конечно сразу будет все заблокированно, но тем не менее, как правильно или где можно про это прочитать?

Спасибо.

Ответ на: комментарий от swwwfactory

Это по сути делает персональный сертификат.

да. Проблема в том, что если передавать сертификат по интернету, сервер может НЕ ТОМУ сертификат передать. Откуда сервер знает, что ему пишет Вася Пупкин, а не Петя Залупкин?

Не, SSL/TLS даёт конечно такую возможность используя локальный ключ, но тут другая проблема: в 95% случаев у клиента Windows™, а значит локально уязвима.

Т.е. идентификация сервера проблемы не представляет, но с клиентом сложнее: нужно что-то такое, что юзер вводит САМ, ручками.

emulek
()
Ответ на: комментарий от emulek

да. Проблема в том, что если передавать сертификат по интернету, сервер может НЕ ТОМУ сертификат передать. Откуда сервер знает,

1. второй пароль

2. персональный сертификат

Т.е. идентификация сервера проблемы не представляет, но с клиентом сложнее: нужно что-то такое, что юзер вводит САМ, ручками.

3. самое простое: вычисление соленого/подсоленого хэша

4. манипуляции с крипто-контейнерами (тупо encode сообщения каким-то крипто-стойким алгоритмом, работающим на JS в браузере)

5. расширение браузера (для лисы :))

6. юзер САМ вводит, да. Возможны реализуемые варианты. По сути это 1,4 пункт этого списка.

swwwfactory ★★
()
Последнее исправление: swwwfactory (всего исправлений: 2)
Ответ на: комментарий от swwwfactory

как насчет динамической соли временного хранения?

а как насчёт врага, который осилил написать скрипт?

Насчет длины 9 символов не согласен. Где оговаривается обоснованно это?

ну возьми и посчитай. Только учти, что md5 является сама по себе сложновычисляемой, и это не баг, а фича. И что РТ не такие уж и хорошие, как это кажется в теории. В теории тебе нужно прочитать C раз по 16 байт. Это кажется «быстро». Но это только кажется. На самом деле, _никакой_ современный девайс по 16 байт читать тупо не умеет, в т.ч. DRAM. Потому скорость НАМНОГО медленнее. HDD тут тупо непригодны.

Ну и да, вопрос в деньгах. 9 символов в пароле достаточно, если бюджет взломщика <$1000 (на сегодня конечно). Если бюджет анлимный, то надо ещё символов добавить.

То что пароль более 14(-18?) символов дурь и только ухудшает стойкость это известно.

почему «дурь»? Единственная беда в том, что человеку такой код с первого раза не вбить, и он его 10 раз будет вбивать, что конечно очень обрадует злоумышленника. Человек вообще не может запомнить более 7и символов за раз, и то, если они «простые» (например буквы _родного_ алфавита), так символ «{» занимает как минимум две «ячейки» мозга. Т.е. пароль вида "!;%%We#$c" придётся вбивать за три приёма минимум, три раза показывая злоумышленнику бумажку (ибо запомнить это нереально)

Но насчет максимальной длины соли не маловато ли 9?

да, это я ошибся. 6*9=54. Для 128и бит надо минимум 15 символов в соли, при условии идеального ГСЧ и алфавита 64 символа. IRL я просто беру 20 байт из хорошего ГСЧ для соли.

ну это уже фактически либо SSL (опять-же) либо gnupg, либо просто криптование как-либо алгоритмом. О чем собственно упоминалось как крипто-контейнер. Если тебе известна более простая схема или есть другая точка зрения, будет не безынтересно...

увы — нет. IRL я юзаю GnuPG. А в своих велосипедах криптографию из OpenSSL.

emulek
()
Ответ на: комментарий от swwwfactory

тупо encode сообщения каким-то крипто-стойким алгоритмом, работающим на JS в браузере

хм, с этого места пожалуйста поподробнее... Я помнится видел md5 на JS, это УЖЕ лютые тормоза. А что, есть какой-нить AES например?

по остальным пунктам это либо пароль, либо NoWay.

emulek
()
Ответ на: комментарий от emulek

а как насчёт врага, который осилил написать скрипт?

не успеет - на то и дается 10 сек + комбинации и смены алгоритмов

Человек вообще не может запомнить более 7и символов за раз

1. pwsafe copy/paste,

2. ssh-id типа

да, это я ошибся. 6*9=54. Для 128и бит надо минимум 15 символов в соли, при условии идеального ГСЧ и алфавита 64 символа. IRL я просто беру 20 байт из хорошего ГСЧ для соли.

вот мне то-же показалось, даже смутило. Но это зачетно т.к. тут довольно легко заблуждаться, ошибиться - главное мнимизировать ошибки, докопаться до приемлемой схемы. Паранойя подсказывает что лучше 256,512,1024 битовые. Это сложно конечно. По сути соль это вектора, ключи. На этой слабости основаны кряки wi-fi и кстати там в полный рост используется hmac.

Да, когда свое - трудно детектировать и предсказать... Так что актуально. Ну и плюс SSL.

swwwfactory ★★
()
Ответ на: комментарий от emulek

хм, с этого места пожалуйста поподробнее... Я помнится видел md5 на JS, это УЖЕ лютые тормоза. А что, есть какой-нить AES например?

AES нафиг (много нареканий и наездов - предмет горячих споров), bluefish есть из свободных, TEA но он не совсем свободен. Надо посмотреть в ядре, что там популярно и погуглить реализацию на JS. Если интересно то могу позже выслать ссылки на JS-кодеры. Но это гуглится легко в общем. От гугла есть библиотека вроде еще.

swwwfactory ★★
()
Ответ на: комментарий от emulek

Я помнится видел md5 на JS, это УЖЕ лютые тормоза.

Скорость постоянно улучшается да и сам говоришь он по определению тормознут. Да, есть и много очень.

swwwfactory ★★
()
Последнее исправление: swwwfactory (всего исправлений: 1)
Ответ на: комментарий от swwwfactory

а как насчёт врага, который осилил написать скрипт?

не успеет - на то и дается 10 сек + комбинации и смены алгоритмов

скрипт успеет.

pwsafe copy/paste,

1. убей не понимаю, чем это лучше чистого текста в gpg?

2. в сбербанке paste не работает. А на ЛОРе можно прямо в браузере хранить пароль.

Паранойя подсказывает что лучше 256,512,1024 битовые.

ну говорю же: да, для машины лучше 1024 бита и даже больше. А вот для человека — увы. Мозги у нас такие, не эффективные в этом смысле. Слабость сильного пароля в том, что его задолбаешься набирать, если в нём нет смысла. Е?л? с?ы?л е?т?, его просто подсмотреть.

Да, когда свое - трудно детектировать и предсказать..

своих алгоритмов я не использую. Те же md5/sha есть в OpenSSL.

emulek
()
Ответ на: комментарий от swwwfactory

AES нафиг (много нареканий и наездов - предмет горячих споров)

а я юзаю. Как и большинство юзеров GnuPG. И ты тоже наверное(для проверки введи gpg --edit-key you, потом showpref). Ты что-то путаешь.

bluefish есть из свободных

ну GnuPG его умеет.

Надо посмотреть в ядре

вот ядро нафиг. Зачем там шифрование?

emulek
()
Ответ на: комментарий от swwwfactory

Скорость постоянно улучшается

ага. Как и алгоритмы. Чем лучше алгоритм, тем он медленнее. Сравни например md2, md4, md5, sha*. (это хеш, но по скорости та же картина)

да и сам говоришь он по определению тормознут.

он «тормознут» если речь про меня с C/C++ и x86, и врага с C/C++ и x86. Тогда у меня «тормознут», а врагу NoWay. А вот если у меня JS+LLVM, а у врага C/C++ + x86, то всё не так радостно.

Да, есть и много очень.

пионерские поделки скорее всего. Да, ещё надо RSA какой-нить. MD5, как я говорил, я видел.

emulek
()
Ответ на: комментарий от emulek

а я юзаю. Как и большинство юзеров GnuPG. И ты тоже наверное(для проверки введи gpg --edit-key you, потом showpref). Ты что-то путаешь.

Возможно путаю, какой-то алгоритм используется традиционно с ослабленными ключами. Не вспомнить сейчас то-ли AES, то-ли DES.

вот ядро нафиг. Зачем там шифрование?

там есть секция в настройках по криптографии. Используется думаю для wi-fi. Удобно по ядру выбирать алгоритм, который наверняка будет нормально реализован и не будет иметь проблем с лицензиями - т.е. практически свободен.

ну GnuPG его умеет.

не исключено, что GnuPG есть (в облегченном варианте) на JS для браузеров или какие-то кастомные версии...

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

Возможно путаю, какой-то алгоритм используется традиционно с ослабленными ключами. Не вспомнить сейчас то-ли AES, то-ли DES.

с какими ещё «ослабленными»? RSA вполне надёжный *алгоритм*. Ты явно путаешь с чем-то другим. Может с недавним скандалом в жёлтой прессе(отголоски здесь, оригинала в рунете ненагуглил, только «журнал хацкер», «хабра», и прочее говно. Здесь тему удалили. ИМХО правильно.)

Эти три буквы «RSA» в деле Сноудена значат совсем другое.

там есть секция в настройках по криптографии. Используется думаю для wi-fi

wi-fi это РЕШЕТО. Я его сам ломал. О чём тут может идти речь-то? Если честно, я не знаю, зачем стандарты связи РЕШЕТО. Наверное это здесь оффтопик. Впрочем, лично я этим доволен. Мне-то фиолетово, у меня связь внутри моих сеток вся через OpenSSH. А остальные пусть страдают, да.

не исключено, что GnuPG есть (в облегченном варианте) на JS для браузеров или какие-то кастомные версии...

ну говорю-же: скорость никакая. Или если сделать ключ в 36 бит, его любой мудак сломает.

emulek
()
Ответ на: комментарий от firefedot

Тогда как поступать в тех случаях, когда пароль нельзя сменить?

Хранить открытые пароли во вне, либо шифровать асимметричным алгоритмом.

ktulhu666 ☆☆☆
()
Ответ на: комментарий от emulek

wi-fi это РЕШЕТО. Я его сам ломал. О чём тут может идти речь-то? Если честно, я не знаю, зачем стандарты связи РЕШЕТО.

С WPA2-AES то? А ещё и 802.1x EAP-TLS прикрутить? Но тут я бы скорее не доверял бы точке доступа (подобные бекдоры там уже были). Для критичного трафика, очевидно, нужно end-to-end туннель поднимать.

ktulhu666 ☆☆☆
()
Ответ на: комментарий от ktulhu666

С WPA2-AES то?

оно устойчивое если только пароль хороший.

Но тут я бы скорее не доверял бы точке доступа

и это тоже.

Для критичного трафика, очевидно, нужно end-to-end туннель поднимать.

для _любого_. Ибо в противном случае, враг может отличить критичный трафик от не критичного.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.