• Glusterfs vs ceph vs что-то-еще. Что быстрее/надежнее?

    Tyranron
    @Tyranron
    Нормально живём с кубером без распределенной ФС. Персистентные Pod'ы просто прибиты к Node'ам.

    Для ceph'а есть Rook.
  • Статья на хабре про хеширование паролей. Непонятны некоторые моменты. Поможете разобраться?

    Tyranron
    @Tyranron
    АртемЪ, немного поправочка: хранятся не столько хэши, сколько plain text, а хэши выступают ключами. И за счет того, что хэш-функции обеспечивают достаточно неплохое равномерное распределение, у Вас все plain text'ы будут размазаны по ключам достаточно равномерно, что фактически идеально для шардинга, и Вы по хэшам можете легко масштабироваться на миллионы серверов, хоть в одном ЦОДе, хоть в разных.

    А кем уже это спонсируется - вопрос отдельный вопрос. Во-первых, заинтересованные лица всегда найдутся (привет, АНБ!), а во-вторых, и на добровольной основе может работать (распределенная БД).
  • Статья на хабре про хеширование паролей. Непонятны некоторые моменты. Поможете разобраться?

    Tyranron
    @Tyranron
    АртемЪ, ну кто его знает какие злые гении и как генерирую эти радужные таблицы =)

    Я бы, например, пихал все возможные словари + результаты их простейших хэшей и их комбинации. С радужными таблицами дело такое, что Вы не ограничены временем, а за 10-15 лет чего можно только туда не напихать.

    Потому, перестраховаться криптографически стойкой случайностью не будет лишним. Более того, это ведь совсем не сложно с современными инструментами. Те же Bcrypt и Argon2 делаю это за Вас.
  • Статья на хабре про хеширование паролей. Непонятны некоторые моменты. Поможете разобраться?

    Tyranron
    @Tyranron
    sorry_i_noob,

    почему хеш + соль? это лучше, чем прибавить соль до вычисления хеша?


    Нет, Вы не поняли. При вычислении хэша Вы обязательно прибавляете соль, иначе какой смысл в соли вообще? Но после этого Вам хэш надо сохранить. И не только сохранить, но и вычислять заново, когда пользователь аутентифицируется. А как Вы его вычислите, если не будете знать соль?

    Грубо говоря, смысл следующий (не делать так в коде!):
    // Установка пароля
    $salt = generate_random();
    $footprint = md5($_POST['password'].$salt).$salt;
    save_to_database($footprint);
    
    // Проверка пароля
    $footprint = get_from_db();
    $expectedHash = substr($footprint, 0, 32);
    $salt = substr($footprint, 32);
    $actualHash = md5($_POST['password'].$salt);
    $is_valid = hash_equals($actualHash, $expectedHash);



    я видел в php функцию генерации случайных чисел. но вот случайных токенов - нет. что это за функция?


    Токен - это просто термин. В данном случае имеется в виду строка состоящая из случайных символов, либо просто набор случайных байт.
    random_bytes()

    я прочил про Bcrypt. он уже использует соль. таким образом, дополнительно солить перед использованием этой функции не надо?


    Да, не надо. Он сам генерирует как надо случайную соль и присобачивает её к результирующему отпечатку.

    Вам, по сути, остаётся только:
    // Установка пароля
    $footprint = password_hash($_POST['password'], PASSWORD_BCRYPT);
    save_to_db($footprint);
    
    // Валидация пароля
    $footprint = get_from_db();
    $is_valid = password_verify($_POST['password'], $footprint);


    Вообще, читайте официальную документацию больше, там всё разжевано тоже.
  • Статья на хабре про хеширование паролей. Непонятны некоторые моменты. Поможете разобраться?

    Tyranron
    @Tyranron
    АртемЪ,

    Не выше, чем для строки qwertyFd4^hLJI*f6


    Ну, это спорное, и необоснованное утверждение. Но представим, что это так. Тогда просто соль Fd4^hLJI*f6 тоже плохая, недостаточно энтропии.

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


    Слушайте, если Ваша соль содержится в радужных таблицах как часть строк, то это абсолютно бесполезная соль.
    Соли вида 1111111111111, 000000000000, my super super super salt ever - это всё словарные варианты, а значит вероятность их попадания в радужную таблицу высока.
  • Есть несколько docker-контейнеров. Куда двигаться дальше?

    Tyranron
    @Tyranron
    О Kubernetes задуматься в любом случае советую. Это не только оркестрация контейнеров, но и ещё куча разных вкусных фич.
  • Статья на хабре про хеширование паролей. Непонятны некоторые моменты. Поможете разобраться?

    Tyranron
    @Tyranron
    АртемЪ либо лукавит, либо не до конца разобрался в вопросе.

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

    Соль 1111111111111 плохая, ибо вероятность того, что в радужных таблицах есть хэши для строки qwerty1111111111111 все ещё достаточно велика.
  • End to end шифрование сообщений, какой алгоритм/библиотеку выбрать?

    Tyranron
    @Tyranron
    akdes рад, что "в точку". Не забудьте пометить как "ответ на вопрос", если он таковым для Вас является.
  • Как протестировать вызовы методов у websocket.Conn из gorilla/websocket?

    Tyranron
    @Tyranron
    aikus он через net.Pipe мокает и клиента, и сервер. А дальше, имея это на руках, ты можешь эмулировать всё что пожелаешь.
  • Почему mysql не подхватывает содержимое docker-entrypoint-initdb.d?

    Tyranron
    @Tyranron
    Так а лог контейнера что говорит? Там должна быть вся информация.
  • Как правильно сделать пакеты в Dart?

    Tyranron
    @Tyranron
    devunion а что мешает в Dependency Injection?

    В db себе оставляете чисто реализацию абстрактного интерфейса. В db/sqlite его реализацию под SQLite. В коде используем абстрактный интерфейс, а на этапе инициализации приложения инжектим SQLite'ную реализацию где нам надо.
    ...и нафиг эти фабрики)
  • Безопасно ли так хешировать пароли?

    Tyranron
    @Tyranron
    BlackWolf,

    1. И Argon2, и Bcrypt, разумеется, и так используют соль в своих алгоритмах. Они её генерируют новую для каждого нового хеша. Она приклеивается к результирующему хешу и хранится вместе с ним. Вам для использования соли ничего делать не надо. Достаточно просто использовать указанные алгоритмы.

    2. 100% защита - это только one time pad. Всё остальное - компромиссы. Если Ваш пользователь установит пароль qwerty, то никакой Argon2 не поможет от простейшей атаки по словарю. Другое дело, что для паролей более "нормальных" Argon2 делает перебор крайне невыгодным занятием для атакующего. И делает это лучше других на данный момент.
  • Безопасно ли так хешировать пароли?

    Tyranron
    @Tyranron
    BlackWolf, а вообще - используйте Argon2. Всё-таки победитель, как никак, и не дураками деланый. К тому же, завезли уже и в password_hash() (см. PASSWORD_ARGON2I).
  • Безопасно ли так хешировать пароли?

    Tyranron
    @Tyranron
    BlackWolf, пожалуйста.

    Нет, Ваш хеш не будет достаточно безопасным. Так как у Вас, во-первых, используются устаревшие хеш-функции md5/sha1 (больше радужных таблиц, больше вероятность коллизии), а, во-вторых, у Вас слишком мало раундов хеширования, и хеш вычисляется достаточно быстро, что сильно упрощает атаку по словарю. В нормальных алгоритмах хеширования пароля (Bcrypt/Argon2), кол-во раундов можно контролировать, и оно, как правило, задается параметром cost (стоимость). Например, для Bcrypt в password_hash() дефолтная стоимость - 10, и это, если мне не изменяет память, 2^10 = 1024 раундов хеширования.

    Странно.. Тут многие писали, что вложенность хешей упрощает коллизию. Или это не так?


    Это так. Это происходит потому, что хеш-функция, как и любая математическая функция является отображением из одного множества значений (все возможные строки) в другое (все возможные значения хеш функции). Когда Вы повторяете хеш-функцию на результатах предыдущего хеширования, то Вы снова отображаете текущее множество выходных хешей в ещё более узкое множество выходных хешей. И так, с каждым раундом, множество выходных хешей сокращается. А чем меньше множество выходных хешей, тем проще подобрать коллизию.

    Но! Коллизия - не единственный параметр секьюрности в задаче хеширования паролей о котором стоит беспокоится. Скорость вычисления хеша - не менее важный параметр, так как сводит на нет целесообразность атаки по словарю.

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

    Также, на Хабре есть неплохая статья, где показано на практике, что для хороших хеш-функций:
    Миллионы и миллионы операций практически нисколько не изменят количество элементов в выходном множестве.


    Потому хешируйте тяжело с дофига раундами, и не дуйте в ус =)
  • Безопасно ли так хешировать пароли?

    Tyranron
    @Tyranron
    BlackWolf, если интересно как оно и зачем, то ответ на вопрос о хешировании паролей более-менее подробно расписан здесь.
  • GOLANG приложение и свои сертификаты?

    Tyranron
    @Tyranron
    Алина Масло

    P.S. В будущем, настоятельная просьба формулировать свои вопросы более конкретно, и менее расплывчато. Чем больше Вы предоставите информации о том, что именно Вам требуется, тем меньше времени потребуется отвечающим, чтобы вытянуть из Вас информацию и понять что именно Вам нужно. И, как следствие, Вы быстрее получите свой ответ.

    Относитесь с уважением не только к своему времени, но и к чужому.
  • GOLANG приложение и свои сертификаты?

    Tyranron
    @Tyranron
    Алина Масло а зачем Вам сертификат для echo-приложения? И что Вы подразумеваете под подобным приложением? HTTP-сервер? Сокеты?
  • Авторские права на GitHub?

    Tyranron
    @Tyranron
    test2235 Вы не совсем улавливаете суть. Повторюсь: open source - не про рубку бабла. А изначальная цель что Битрикса, что ВКонтакте - именно рубка бабла. Open source - плохая модель разработки ПО, если стоит цель именно нарубить денег.

    Но это не означает, что в open source нету серьезных продуктов, и там только "мелки куски". Есть огромные и законченные проекты, которые бурно растут и развиваются. И полноценные CMS тоже есть. Воспользуйтесь поиском.

    По поводу глючит - это вообще отдельная тема. И Битрикс глючит, и ВКонтакте. Это фактор не зависит от открытости/закрытости кода, хотя и коррелирует.
  • Авторские права на GitHub?

    Tyranron
    @Tyranron
    test2235 я не спец по Битриксу, но Битрикс - это не просто CMS, а в первую очередь продукт. Может в нём и нет чего-то архиуникального, но есть команда разработчиков, которые его постоянно разрабатывают, есть команда продажников, которые его продают разным бизнесам, есть команды поддержки, которая помогает решать вопросы связанные с этим продуктом. Всем этим людям нужно платить деньги. А себе яхту тоже хочется. На "сыром" опенсорсе, пока к твоему продукту не появится интерес серьезных и крупных бизнесов готовых в него инвестировать вкусные суммы, много не заработаешь. Потому Битрикс и продают как продукт. А если ты что-то продаешь, то не можешь держать код открытым, ибо зачем тогда его покупать, если он и так есть? И зачем кормить конкурентов?