Исчерпывающая информация о солях хеша

Я нахожу стандартные окна treeview поведением выбора поведения для раздражения. Например, при использовании Проводника и щелчка правой кнопкой по узлу и Свойствам хита это выделяет узел и показывает диалоговое окно свойств для узла, на который Вы нажали. Но когда Вы возвращаетесь из диалогового окна, выделенный узел был узлом, ранее выбрал/выделил, прежде чем Вы сделали щелчок правой кнопкой. Я нахожу, что это вызывает проблемы удобства использования, потому что я навсегда смущаюсь на том, действовал ли я на правильный узел.

Так во многих наших графический интерфейсах пользователя, мы изменяем выбранный древовидный узел при щелчке правой кнопкой так, чтобы не было никакого беспорядка. Это не может совпасть со стандартом iwndos приложение как Проводник (и я склонен сильно моделировать наше поведение GUI после стандартных приложений окна по причинам usabiltiy), я полагаю, что этот случай исключения приводит к намного большему количеству применимых деревьев.

Вот некоторый код, который изменяет выбор во время щелчка правой кнопкой:

  private void tree_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {
     // only need to change selected note during right-click - otherwise tree does
     // fine by itself
     if ( e.Button == MouseButtons.Right )
     {         
        Point pt = new Point( e.X, e.Y );
        tree.PointToClient( pt );

        TreeNode Node = tree.GetNodeAt( pt );
        if ( Node != null )
        {
           if ( Node.Bounds.Contains( pt ) )
           {
              tree.SelectedNode = Node;
              ResetContextMenu();
              contextMenuTree.Show( tree, pt );
           }
        }
     }
  }
5
задан tplaner 16 November 2009 в 21:56
поделиться

3 ответа

  1. Если хакер имеет доступ к вашей системе баз данных, вы fsckd. Ваша система должна иметь доступ к обеим таблицам для запуска, поэтому вероятность «спрятать» одну от хакера, который уже взломал систему, практически равна нулю. На мой взгляд, это не стоит дополнительных сложностей.

  2. Добавление «nonce» (в дополнение) к соли для каждого пароля не очень помогает, но и ничему не повредит.

  3. Даже 16 Немного соли обычно достаточно, чтобы сделать взлом пароля невозможным, если все сделано правильно. Я бы, вероятно, использовал 64 или 128 бит, почему бы и нет?

  4. Вы должны использовать «хороший» источник случайности, но он не обязательно должен быть идеальным. Если случайные значения каким-то образом видны злоумышленнику, то он может найти способ предсказать следующее случайное значение, но им придется сделать это, когда пароль будет создан, и он получит только один пароль.

Короче говоря, вам нужна соль для каждого пользователя и хорошая функция хеширования. MD5 ужасен, а SHA-1 уже не «хорош». Вы должны использовать такую ​​систему, как bcrypt, чтобы заставить злоумышленника тратить значительную долю секунды на каждый хэш. 0,1 секунды на проверку пароля, вероятно, не представляет для вас большого труда, но это разрушительно для любого взлома методом перебора.

Это обязательное чтение для всех, кто реализует схему защиты пароля:

http: //chargen.matasano .com / chargen / 2007/9/7 / достаточно-с-радужными-таблицами-что-вам-нужно-знать-о-s.html

7
ответ дан 18 December 2019 в 11:57
поделиться
  1. Нет. Правильное использование солей увеличивает время, необходимое злоумышленнику для взлома всех паролей в вашей базе данных, в миллионы раз. Помещение солей в другую таблицу добавит 30 секунд ко времени, необходимому злоумышленнику, чтобы получить соли.

  2. Да. Неплохая идея использовать и глобальный ключ, и соль для каждого пользователя.

  3. Соль - это или должна быть криптографическим ключом. Сделайте его длинным и случайным. Размер базы данных не является проблемой. Соль, как и любой криптографический ключ, может иметь длину 128 или 16 байтов (32 байта при хранении в шестнадцатеричном формате).

  4. Ваш компьютер должен иметь криптографически стойкий псевдо-RNG. Проверьте безопасность или криптографические API для вашего языка.

2
ответ дан 18 December 2019 в 11:57
поделиться

Что касается №1, вы, вероятно, можете предположить, что если таблица users будет скомпрометирована, они, вероятно, также скомпрометируют соль стол, даже если вы его как-то лучше защитили. Это только немного замедлит их, как это сделал бы «лежачий полицейский».

Что касается пункта 2, жестко закодированное значение соли часто легко реконструировать с помощью декомпиляции или проверки памяти во время выполнения, даже с умеренным количеством обфускации кода. . Это поможет повысить безопасность только в том случае, если ваше приложение строго размещено и никто не может получить доступ к вашему скомпилированному приложению.

Относительно №3: Какова оптимальная длина хэша пароля? (SO link) - 16 - это хорошо!

Что касается пункта 4, то здесь не так уж много работы "

4
ответ дан 18 December 2019 в 11:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: