После прочтения одной статьи про хранение паролей от различных сервисов в виде таблиц у меня возникла одна интересная мысль, правда не знаю, как её реализовать.
Итак, что касается хранения паролей. Сам способ был прочитан на сайте “интернет для новичков“, да я читаю подобные сайты, очень интересные материалы для статей попадаются. Именно поэтому и решил написать эту статью.
Итак, в качестве таблицы паролей у нас есть случайно генерируемые таблицы
Выбираем произвольную букву из таблицы и длину пароля. Например J8. Запоминаем эти данные. Саму таблицу можно смело распечатать и положить в кошелёк или ещё куда. Затем условимся, что, например, под цифрой 5 у нас сайт litl-admin.ru. Значит наш пароль начинается с символа, находящегося на J5, и протягивается на 8 символов вправо (или влево, кто как захотел). Т.е. в данном случае это будет XHJNffUF. Достаточно криптостойкий, надо сказать.
Насколько этот способ надёжен? Меня смущает лишь то, что можно записывать названия сайтов в поля таблицы, то есть если таблица будет утрачена, злоумышленнику нужно будет угадать то, что мы запомнили – номер столбца (J) и длину пароля (8). Учитывая, что здесь всего 22 столбца, а длины паролей на разных сервисах могут быть довольно в узком диапазоне (от 8 до 12 например), то нужно составить небольшой словарик размерностью 22^5 вариантов (5,153,632). Затем, когда искомый пароль будет найден, на самом деле мы получим его длину и стартовую букву, то есть доступ ко всем остальным сервисам! Такой вот нюанс.
Ну а теперь о моей идее.
Пока не знаю, как решить задачу программными средствами, но было бы неплохо создать контейнер, который может открываться различными одноразовыми паролями. Приведу пример. Имеется исполняемая программа, производящая определённые действия на компьютере. Я оставляю её у пользователя. При запуске программа требует пароль. Так вот, в случае крайней необходимости я могу сообщить пароль по телефону пользователю, который его вводит и программа запускается и что-то делает. Но теперь этот пароль к ней больше не будет подходить. У меня есть конечный список таких паролей (пусть их будет 8).
Так вот, сперва я подумал, что нужно хранить некий список внутри программы и, после ввода одноразового пароля его просто исключать из этого списка. Но возникла загвоздка. А что, если пользователь скопирует программу в другое место, узнает одноразовый пароль и сможет запустить копию этой программы (из которой пароль ещё не исключён) из другого каталога? Таким образом защита будет ликвидирована, можно создавать произвольное количество копий, которые будут хранить в себе полный список паролей до вмешательства.
Затем была мысль хранить список где-то в системе, но тогда возникает другая проблема, а что если программа будет перенесена на другой компьютер и это будет легитимно. Но мне нужно всё равно ограничивать число запусков этой программы.
Как быть? Может нужно делать динамически генерируемые пароли с неким начальным стартовым зерном? Тогда я всегда буду знать какой пароль будет следующим, а у каждой копии программы менять это начальное зерно и получать различные последовательности? Звучит вроде неплохо, но опять же, поможет ли?
Может есть у кого идеи?
Comments: