06 августа 2020, 16:06

Цитата дня:

Одно из неприятных свойств нашего времени состоит в том, что те, кто испытывает уверенность, глупы, а те, кто обладает хоть каким-то воображением и пониманием, исполнены сомнений и нерешительности. Бертран Рассел


Наверное изобрёл велосипед, хотел бы оценить безопасность

Автор Alex-70, 19 апреля 2020, 11:05

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Вниз

Alex-70

Надоело хранить файл паролей, его надо постоянно расшифровывать, шифровать и архивировать. В общем - муторно и при чрезмерной частоте операций, безопасность явно страдает.

Решил написать скрипт для генерации ключа по секретной фразе и логину (индексу ключа)

#!/bin/sh -u

echo -n "Root-Key "
stty -echo
read Root
stty echo
echo

# Проверка корректности главной фразы
Test=$( echo -n "***$Root" | md5sum | ( read a b ; echo $a ) ) # *** - Заменить на случайный набор ~40 символов
Test=${Test%????????????????????}
[ $Test != 29cc3748f7ea ] && echo ERROR $Test && exit 1 # 29cc3748f7ea - Заменить на вывод после ERROR

# Собственно генерация ключа
echo -n "$1$Root" | md5sum | ( read a b ; echo $a )


В надёжности генерации сомнений мало, т.к. это ровно то, что используется в файлах паролей пользователей.
Есть сомнения в тестировании.

Уваров А.С.

Вот это, на мой взгляд, лишнее:

Цитировать
# Проверка корректности главной фразы
Ни к чему хранить это в скрипте, а также давать явные подсказки возможному злоумышленнику.

Alex-70

Да вот, к сожалению, без этого не обойтись. Эту методику можно использовать для генерации приватных ключей. Если так делать ключи для Биткоина, то опечатка обойдётся весьма дорого.

Может следует сделать что-то типа 1000-кратного хеширования?

Alex-70

Вот так, например

#!/bin/sh -u

echo -n "Root-Key "
stty -echo
read Root
stty echo
echo

# Проверка корректности главной фразы
i=0
Test=
while [ $i -lt 1000 ]
do
  Test=$( echo -n "***${Root}${Test}${i}" | md5sum | ( read a b ; echo $a ) ) # *** - Заменить на случайный набор ~40 символов
  i=$((i+1))
done
Test=${Test%????????????????????}
[ $Test != 7cba35cfcec6 ] && echo ERROR $Test && exit 1 # 7cba35cfcec6 - Заменить на вывод после ERROR

# Собственно генерация ключа
echo -n "$1$Root" | md5sum | ( read a b ; echo $a )


Правда, 1000 мне кажется паранойя ;-)

Уваров А.С.

Да вот, к сожалению, без этого не обойтись. Эту методику можно использовать для генерации приватных ключей. Если так делать ключи для Биткоина, то опечатка обойдётся весьма дорого.
Ну тут уже исходить нужно из потребностей и реальных угроз. Пользователю в руки я бы такое не давал. Потому что он поставит главной фазой что нибудь словарное, а соль вот она, рядышком лежит. А md5 на современном оборудовании перебирается быстро.

Вверх