действительно ли GUID является хорошей солью? мой процесс регистра/входа в систему получен какой-либо дефект?

В общем, вы могли бы выполнить простую операцию, которая отражает саму природу Int32, заполнить все доступные биты единицами - это то, что вы можете легко сохранить в своей памяти. Он работает в основном одинаково в большинстве языков, но я собираюсь использовать Python для примера:

max = 0
bits = [1] * 31 # Generate a "bit array" filled with 1's
for bit in bits:
    max = (max << 1) | bit
# max is now 2147483647

Для неподписанных Int32, сделайте его 32 вместо 31 1.

Но так как опубликовано еще несколько авантюрных подходов, я начал думать о формулах, просто для удовольствия ...

Формула 1 (Числа объединяются, если оператор не указан)

  • a = 4
  • b = 8
  • ba / a
  • ab-1
  • ab
  • ab-ab
  • ab-1

Python quickcheck

a = 4
b = 8
ab = int('%d%d' % (a, b))
ba = int('%d%d' % (b, a))
'%d%d%d%d%d' % (ba/a, ab-1, ab, ab-a-b, ab-1)
# gives '2147483647'

Формула 2

  • x = 48
  • x / 2-3
  • x- 1
  • x
  • x * 3/4 ​​
  • x-1

Быстрый контроль Python

x = 48
'%d%d%d%d%d' % (x/2-3, x-1, x, x*3/4, x-1) 
# gives '2147483647'
16
задан Fredou 28 July 2009 в 15:07
поделиться

5 ответов

Это довольно стандартно - руководство подойдет для соли. Дело в том, чтобы предотвратить атаки Rainbow , и практически любое значение, которое является случайным (или даже если не случайным, то, по крайней мере, различным) для каждого пользователя, подойдет.

11
ответ дан 30 November 2019 в 22:55
поделиться

Если безопасность является основной проблемой, я бы предпочел НЕ использовать GUID для значения соли.

GUID бывают разных «типов», некоторые из них имеют больше «случайным», чем другие. Однако даже лучший тип GUID (это был бы GUID типа V4 с точки зрения «случайности») не действительно подходящие для криптографических функций.

Из статьи Википедии о GUID :

GUID V4 используют более поздний алгоритм, что является псевдослучайным числом. Эти иметь "4" в той же позиции, для пример {38a52be4-9352-453e-af97-5c3b448652f0}. В частности, бит data3 шаблон будет 0001xxxxxxxxxxxx в первый случай и 0100xxxxxxxxxxxx В секунду. Криптоанализ Генератор WinAPI GUID показывает, что, поскольку последовательность GUID V4 псевдослучайно, учитывая начальное состояние можно предсказать до следующих 250 000 GUID, возвращаемые функцией UuidCreate. Вот почему GUID не должны использоваться в криптографии, например. g., как случайные ключи.

4
ответ дан 30 November 2019 в 22:55
поделиться

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

0
ответ дан 30 November 2019 в 22:55
поделиться

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

Существуют разные типы GUID , не все они случайны. Но тогда случайность на самом деле не требуется для добавления пароля. В целом, ваш подход выглядит нормально, хотя вы можете рассмотреть возможность многократного хеширования ( «усиление ключа» ) для дальнейшего повышения безопасности.

0
ответ дан 30 November 2019 в 22:55
поделиться

Зачем вы заново изобретаете логин, если не понимаете одноразовых номеров ?

  1. Делать что-либо, связанное с криптовалютой, сложно. Эксперты делают ошибки, которые упускают другие эксперты в течение десятилетий . Остальные из нас еще хуже.
  2. Существует большое количество стандартных систем аутентификации, доступных бесплатно. Почти все они будут лучше реализованы и более гибкими, чем то, что вы делаете самостоятельно.

Обновление основано на новых деталях вопроса из комментариев. Для приложения Windows GUI, взаимодействующего с SQL Server, мой выбор аутентификации будет начинаться с:

  1. Доменная аутентификация (простая, но требует доменов).
  2. Cardspace . Несложно, очень гибко, но требует клиентской инфраструктуры.
  3. SQL Server смешанный режим аутентификации (простой, но негибкий).
  4. Kerberos через SSPI (сложнее, но легко настраивается).
-1
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

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