Ответы пользователя по тегу Хранение паролей
  • Криптографический алгоритм шифрования по мастер-паролю

    Carcharodon
    @Carcharodon
    люблю криптографию
    Чем хорош RSA, например, то с ним можно использовать любой «мастер-ключ», так как там открытый и закрытый ключ взаимозависимые, а не как, например, в протоколе Эль-Гамаля.

    Но тут будет проблема. Для программы, которая сама хранит пароли, хранить еще информацию о ключе шифрования ключей (мастер-ключе) — как-то небезопасно.
    Лучше использовать другой подход. А именно стойкую (!) криптографическую хэш-функцию (так проще и информации о мастер-ключе почти не будет в программе) и симметричный алгоритм шифрования (3DES, AES, любой другой, который будет понятен для реализации. Даже ГОСТ28147-89 подойдет. Для всех них в сети много максимально разжеванных алгоритмов).

    Теперь собственно протокол работы программы.

    Шифрование:
    Есть сообщение M, содержащее пользовательский пароль, который необходимо хранить в программе.
    Шифруется оно случайно созданным ключом шифрования K.
    К в свою очередь шифруется ключом шифрования ключей (мастер-ключом).
    Ключ шифрования ключей — пусть будет результат воздействия стойкой криптографической хэш-функции H() на фразу-пароль P.

    Расшифрование:
    Я беру фразу-пароль P.
    Беру от нее хэш H(P).
    Расшифровываю разовый ключ шифрования данных K с помощью H(P) в качестве ключа.
    Расшифровываю с помощью K хранимое сообщение М, содержащее пароль.

    Возможные проблемы:
    стойкость хэш-функции
    равномерное распределение ГПСЧ

    В остальном, будет очень даже увлекательное занятие. Для меня бы точно было таким =)
    А если для хранения данных использовать списки и деревья, то преподаватели будут довольны)))
    Ответ написан
    1 комментарий