SAP является зверем для пререкания вниз.. некоторые предложения:
Несколько вещей иметь в виду также:
Просто начинают, задают вопросы, испытывают некоторые вещи, не бойтесь размером его. Довольно скоро Вы поправитесь в нем...
Также с точки зрения VS 2010, MSdeploy будет интегрирован в IDE, так что это определенно будет правильным направлением ... Ознакомьтесь с Обзорный пост для веб-развертывания в VS 2010 .
Соль усиливает пароль, делая хешированное значение несопоставимым с тем же паролем в той же или другой базе данных и делая недействительными большие заранее сгенерированные списки общих паролей для хеш-поисков (например, «радужные таблицы»).
Итак. очень важно, чтобы соль была уникальной для каждого пользователя и представляла собой случайное значение, хранящееся вместе с паролем; альтернативы, описанные в вопросе (с использованием имени пользователя в качестве соли, с использованием единого значения соли для всего приложения), не работают:
если системы используют имя пользователя или другие мелочи, то пароль можно сравнить с другими пользователями с тем же именем в других системах (представьте, как часто учетная запись пользователя «администратор» или «root» использует один и тот же пароль в разных системах ...)
, если система использует одну случайную соль для всех пользователей в одной системе , тогда два пользователя, у которых случайно окажется один и тот же пароль, будут иметь один и тот же хэш, и угадывание пароля одного пользователя тривиально скомпрометирует другого.
Пытаться сохранить солевой секрет бессмысленно , потому что вся практика соления и хеширования паролей существует только потому, что мы знаем по опыту, что мы не можем даже сохранить наши базы данных в секрете с полным надежность. Вы можете хранить соль отдельно и надеяться, что злоумышленник, получивший доступ к вашей БД, не найдет ее, но если вы использовали хороший алгоритм хеширования и достаточно длинные отдельные соли, вы в любом случае должны быть в безопасности.
соли предназначена исключительно для того, чтобы гарантировать, что вы не сможете амортизировать стоимость атаки методом перебора всей базы данных или даже нескольких баз данных.
Во-первых, необходимо изменить соль с помощью каждую новую версию программного обеспечения, но это не годится, потому что новые версии программного обеспечения больше не будет возможность протестировать старый пароль хеши.
Одна из разновидностей этого метода, которую я видел, - это генерация случайной соли во время установки (и, конечно, сохранение ее в разных версиях), чтобы у каждого запущенного экземпляра был свой. Конечно, еще лучше иметь различную соль для каждого пароля (возможно, в дополнение к вышеуказанному).
Соль , по определению, должна быть случайной, чтобы быть эффективной. Не используйте для этого какие-либо детерминированные значения. Это, конечно, означает, что вам нужно сохранить его в базе данных вместе с хешированным паролем. Системы UNIX традиционно даже хранят хэш в том же поле, что и пароль (соль - это префикс пароля фиксированной длины). В базе данных у вас может быть дополнительный столбец в таблице пользователей.
Ваше второе решение «Сохраните соль для каждого пароля "является правильным и обычно используется.
" Соль "в первую очередь служит для того, чтобы затруднить обнаружение, когда у двух пользователей одинаковый пароль - поэтому вы добавляете известную" Соль "в пароль. Соль должна быть доступна во время проверки пароля.
Обычно вы либо генерируете случайную соль и сохраняете ее с паролем, либо используете другой идентификатор (идентификатор пользователя, имя пользователя и т. Д.) В качестве соли.
Использование единой соли для всех паролей в базе данных полезно, но намного менее безопасно, чем предоставление каждому пользователю уникальной соли.
В основном: более длинный (в байтах) пароль + соль увеличивает пространство поиска и, таким образом, затрудняет использование стандартных радужных таблиц.
Однако, если одна и та же соль используется для всех записей, то можно создать радужную таблицу в частности для атаки на ваше программное обеспечение. Если у вас большая база пользователей, то кто-то может решить создать такую радужную таблицу.
Например, если вы просто добавляете «и много соли» в конец каждого пароля перед хешированием, злоумышленник может построить таблицу хеш-значений, сгенерированных большим количеством строк, все эти строки заканчиваются словами «и много соли».
По этой причине лучше всего использовать соль для каждого пользователя. Однако помните, что вы также хотите, чтобы пароль + соль были «длинными».
Если вы хотите использовать первичный ключ, вероятно, лучше взять хэш первичного ключа, а не используя сам первичный ключ, потому что если пароль + соль для пользователя 43 выглядит как «myPassword00000000043», то злоумышленник может построить таблицу, предполагая, что в середине много нулей. Временные метки создания и случайная строка, вероятно, являются лучшими вариантами, поскольку PKeys иногда можно легко найти или угадать.
Фактически у вас уже есть значение соли, сохраненное в пользовательской таблице: pkey таблицы.
Вам не нужно изобретать новый столбец для хранения соли. Просто используйте pkey. Эта идея, конечно, предполагает, что у вас есть pkey, связанный с именем пользователя. например, имя пользователя не является pkey в таблице.
Это почти дублированный wtb: Хеширование паролей, сохранение и хранение хешированных значений
Нашел ответ, возможно:
air.File.applicationStorageDirectory.spaceAvailable
В конце концов, он был в документации. RTFM.
Соль может быть продуктом существующего материала (например, UserID и др.) Или генерироваться случайным образом. Преимущество состоит в том, что атака на зашифрованную информацию становится все более непрактичной по мере того, как сила соли растет.Помните: любой криптографический алгоритм взломан. Информация может считаться "безопасной" только в том случае, если взлом защиты (с помощью радужной таблицы или иным образом) стоит дороже, чем ее стоимость.
edit:
Предполагая, что вы новичок в криптографии, вот еще несколько советы: