kdemina / skey Goto Github PK
View Code? Open in Web Editor NEWhttp://en.wikipedia.org/wiki/S/KEY
http://en.wikipedia.org/wiki/S/KEY
http://en.wikipedia.org/wiki/S/KEY СГУ. им Чернышевского Криптографические протоколы Практическое задание: “Релизация протокола S/KEY” студенки 431 группы Деминой Ксении Саратов, 2013 Описание протокол аутентификации S/Key Протокол S/Key – процедура аутентификации на основе одноразового пароля. Смысл протокола заключается в том, что пользователь при входе в систему каждый раз передает новый пароль. Эти пароли не бесконечны. Изначально пользователь имеет определенный набор паролей, который может использовать. Программа аутентификации SKEY и протокол с её применением. Программа SKEY : Алиса задает случайное число, R. Компьютер вычисляет значения f(R), f(f(R)), f(f(f(R))), и т.д., около сотни раз. Обозначим эти значения как x1, x2,, ..., x100. Алиса выводит список этих чисел и держит его в секрете. Компьютер сохраняет в регистрационной базе данных напротив имени Алисы только значение x101. Протокол аутентификации: При первом входе в систему Алиса вводит свое имя и значение x100 . A > H: A, x100'. Компьютер вычисляет f(x100) и сравнивает его со значением x101 и, если значения совпадают, подлинность Алисы подтверждается. Затем компьютер заменяет в базе данных x101 на x100. H: если f(x100') =f(x100), то пропуск и f(x100) = x100'), иначе нет. Алиса вычеркивает значение x100 из своего списка. В дальнейшем при каждом входе в систему Алиса вводит последнее не вычеркнутое число из своего списка, например, i. Компьютер рассчитывает f(xi) и сравнивает его со значением xi+1, хранящемся в базе данных. Достоинства протокола Если трафик между пользователем и сервером будут прослушивать, то злоумышленник получит устаревший пароль, для него встанет задача нахождения праобраза хеша, что принято считать неосуществимым, т.е. данный протокол неуязвим к снифингу паролей. Недостатки При перехвате начального секретного ключа w можно самому сгенерировать такую последовательность; пользователя придётся инициировать заново после того, как он «израсходует» все свои ключи. Реализация протокола аутентификации S/Key Для работы программы skey.exe требуются 2 параметра - имя и рандомное число. Это число для пользователя будет создавать программа random_number.exe, которая находится random_number/dist/ Програма random_number запрашивает имя файла и len(w) - количество цифр в десятичной записи числа w , имя файла вводится пользователем без расширения. Программа, используя генератор псевдо-рандомных чисел randrand, выбирает число w от 1 до 10len(w). Если это число станет известным злоумышленнику, то протокол будет скомпрометирован. Программа random_number должна находится на стороне пользователя. Для запуска основной программы переходим в загруженную папку skey/dist/ и запускаем программу: skey.exe Программа предлагает набор действий: работа с существующим пользователем, создание нового, выход. При создании нового пользователя запрашивается его имя user_name и число w, созданное ранее. Если такого еще нет, создается файл с его именем - user_name.txt. Далее должна использоваться односторонняя функция. В данной реализации используется 128-битный алгоритм хеширования md5 с последующим преобразованием получившегося числа в шестнадцатиричную систему счисления: md5(r).hexdigest() Пусть H — хеш-функция. Применим её n раз. Сначала к w, потом к H(w), H(H(w)), …, H(…H(w)…). В файл под названием user_nameKeys.txt записывается сгенерированные n-1 числа и отправляются пользователю. В нашей реализации этот файл остается в папке с программой, для того, что бы иметь возможность проверить корректность. Начальное секретное число w уничтожается. Ключ под номером n связанный с данным пользователем сохраняется на сервере в файле user_name.txt, все остальные уничтожаются. При попытки войти пользователь передаёт своё имя и в качестве пароля последний ключ из своего списка (ключ, который был сгенерирован на шаге n-1). Сервер получает этот ключ, находит запись о ключе для данного имени пользователя в файле user_name.txt, и сравнивает результат хеширования полученного пароля с найденным у себя в базе ключом Если результат операции совпадает с введённым паролем, то пользователь проходит аутентификацию. При удачной попытке входа хранящееся значение ключа в файле user_name.txt заменяется на полученное в начале от пользователя (т.е. прообраз хеша), а пользователь вычёркивает из своего списка последний ключ.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.