Как обычно в вопросах, связанных с безопасностью, этот ответ будет длинным.
Сначала простой ответ.
В: Как превратить 8-символьную строку в 128-бит ключ?
A: Нет.
Это правдивый ответ.Теперь одно, более соответствующее тому, что вы спрашиваете:
A: Создайте случайное 64-битное значение и сохраните его с паролем в базе данных.Теперь пароль - половина ключа, а случайное значение - другая половина.
Это ложь.Вот что вы на самом деле делаете:
A: Хешируйте пароль вместе со случайной солью, используя метод, производящий 128-битный или более длинный вывод.Используйте 128 бит этого ключа.Храните соль.
Теперь, чтобы ответить на ваши вопросы о соли.Во-первых, цель соли не в том, чтобы удлинить ключи шифрования.Это сделано для того, чтобы люди не строили радужных таблиц - отображения из хэшированных в не хэшированные формы.Чтобы увидеть, что ваше шифрование не сильнее, просто представьте, что злоумышленник знает ваш алгоритм расширения ключа.Теперь, вместо того, чтобы угадывать 128-битные ключи, он просто угадывает ваш 64-битный пароль и затем использует тот же алгоритм.Вуаля.Если соль неизвестна атакующему, да, вы немного выиграли, но у них уже должны быть ваши шифротексты, чтобы атаковать их, и соль должна храниться на равнине вместе с зашифрованным текстом.Так что это маловероятный сценарий.
- Соль случайна для каждого ключа шифрования.
- Случайно означает случайный.Если вы недостаточно случайны, когда используете криптографический алгоритм, предполагающий непредсказуемый материал, вы уязвимы.Вот для чего
/dev/random
- пул энтропии системы очень хорош.Если вы беспокоитесь, получите более качественную аппаратную ГСЧ. - Да, если вы солили ключ, кому-то нужна соль для расшифровки зашифрованных вами данных с использованием хешированного значения соленого ключа.Нет, отправка соли не обязательно ставит под угрозу ваши данные;отправляйте соль только тому, кто подтвердил, что у него уже есть пароль, но он хранится в вашей базе данных рядом с зашифрованным текстом.Как упомянуто выше, кому-то нужна соль и зашифрованный текст для атаки.Опять же, целью соли является , а не , чтобы повысить силу шифрования, это только для того, чтобы предотвратить атаки до вычислений на ваши хэши.
- Существуют методы расширения ключа.Но, в сущности, ваша защита настолько сильна, насколько слабее ее соединение, поэтому для обеспечения 100% неразрушимого шифрования вам понадобится одноразовая клавиатура (действительно случайный ключ, если данные должны быть зашифрованы).).В реальном мире обычно хешируют пароль и соль для получения непредсказуемого более длинного ключевого материала.