Инфоурок Информатика КонспектыРазработка урока по информатике на тему "Хеширование и пароли" (10 класс)

Разработка урока по информатике на тему "Хеширование и пароли" (10 класс)

Скачать материал

Тема. Хэширование и пароли.

 

Автор разработки учитель информатики, педагог дополнительного образования Бронина А.В.

Урок информатики разработан для учащихся 10 класса (профильный уровень - 4 часа в неделю).

Автор УМК Поляков К. Ю., Еремин Е. А.

Раздел «Информационная безопасность», урок в календарно-тематическом планировании №126.

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

Цель

Обучающая: изучить процесс хеширования и разработать комплекс программ хеширования паролей в рамках закрепления темы основные алгоритмические конструкции.

Развивающая: развивать логическое и алгоритмическое мышление, творческие способности

Воспитательная: правила безопасности в Интернете.

Задачи:

1) Изучить теоретический материал по теме.

2) Разработать программы для хеширования паролей.

3) Исследовать созданные модели на существование коллизий.

Планируемые результаты

Предметные

·         Формирование навыков написания программ с использованием циклических и ветвящихся конструкций; умения работать со строками;

·         Умение разрабатывать и использовать компьютерно-математические модели, оценивать числовые параметры моделируемых объектов и процессов, интерпретировать результаты;

·         Формирование навыков безопасной работы в Интернете;

·         Знакомство с новыми понятиями «хеш», «хеширование»

Личностные

·         формирование коммуникативной компетентности в общении и сотрудничестве со сверстниками в процессе образовательной, учебно-исследовательской и проектной деятельности

Метапредметные

·         умение критически оценивать правильность решения учебно-исследовательской задачи;

·         умение корректировать свои действия, производить отладку и тестирование программы, вносить изменения в программу и в соответствии с новыми условиями

Оборудование: ПК, проектор, маркерная или интерактивная доска. Язык программирования - Python

 

№ этапа

цель

Деятельность педагога

Деятельность обучающегося

Время

1

Этап постановки цели и задач занятия, мотивации к учебной деятельности, повторение

5

Повторить цикл for и функции для работы с символьными строками.

Создать рабочую атмосферу в группе

Приветствие учеников

Известно, что каждый символ, вводимый с клавиатуры, имеет десятичный код. Эти таблицы ASCII (American standard code for information interchange) или Unicode легко можно найти в Интернете.

Для того чтобы узнать коды букв русского и латинского алфавитов, а также цифр и знаков, можно написать простейший программный код на языке программирования Python.

Педагог заранее подготовил строки с алфавитами.

Пишут программы вывода кодов символов русского и/или(по желанию) латинского алфавитов

 

Заинтересовать обучающихся, мотивировать к учебной деятельности

Беседа. Каждый из нас пользуется облачными сервисами, зарегистрирован в социальных сетях, имеет электронную почту, имеет личные кабинеты в online банках, Госуслугах, доверив этим службам свою безопасность. Пользователь регистрируется на сайте, создав логин и придумав пароль. Зная эту информацию, злоумышленники могут воспользоваться личными данными в корыстных целях.

Вопросы:

·         Где и в каком виде хранятся логины пароли всех пользователей? Каким образом происходит их защита?

·         Что такое хеш (хэш, hash)? хеширование  (англ. hashing)

 

 

 

 

 

 

 

·         Чем хеширование отличается от шифровки данных?

 

 

 

 

 

Размышляют, делают предположения, используют необходимую информацию из интернета, отвечают на вопросы, спорят.

В результате беседы обучающиеся приходят к следующим выводам.

 

 

 

 

 

 

 

Примерные ответы.

На самом деле, наши логины и пароли не знают, даже создатели сайтов и службы безопасности, так как, на сервере хранятся не наши пароли, а таблицы хешей (мешанина).

Хеш — это криптографическая функция хеширования (function), которая представляет собой математический алгоритмспособный преобразовать произвольный массив данных в строку фиксированной длины, состоящую из цифр и букв. Это может быть хеш-код или хеш-сумма.

«Хеширование (англ. hashing) — преобразование массива входных данных произвольной длины в (выходную) битовую строку установленной длины, выполняемое определённым алгоритмом».[1]

Хеширование отличается от шифровки данных, шифровка информации двусторонняя операция, шифрованием занимались, например, разведчики, по определенному коду можно расшифровать сообщение, а задача хеширования состоит в том, чтобы сообщение (пароль) невозможно было привести к первоначальному виду.

 

 

 

Целеполагание

 

Педагог совместно с обучающимися ставит цель и задачи занятия

 

 

2

Этап актуализации знаний и пробного учебного действия

6

Разобрать на простом примере хешироване

Педагог предлагает придумать простейшую хеш-функцию, используя ранее выполненную программу. Можно рассмотреть следующий пример.

Введем следующую хеш-функцию: пусть строка преобразуется в сумму  кодов всех символов вводимой строки (пароля).

Например, исходная строка – это «Максил».

Тогда, результатом будет хеш-сумма – 6458.

1052 (код «М») +1072 (код «а») + 1082 (код «к») + 1089 (код «с») + 1080 (код «и») + 1083 (код «л») = 6458

Известно, что  для паролей используются латинские буквы, знаки и цифры.

Допустим пароль – это строка «Max21», тогда хэш-кодом будет следующее число 393:

77 (код «M») + 97 (код «a») +120 (код «x») + 50 (код «2») + 49 (код «1») =393

Задание реализуйте в среде программирования данный алгоритм хеширования.

 

Кто-то из ребят может предложить самый простой способ.

 

Обучающиеся пишут программу на ПК, тестируют на различных входных данных.

Пример программного кода, написанного учеником.

 

 

Итак, для приведенных примеров, вместо паролей будут храниться не строки символов, а хеш-суммы, в нашем случае 6458 и 393.

При входе в систему, будут проверяться контрольные суммы, а не сами пароли!

А теперь попробуем вместо первого пароля «Максил» использовать «New6)». Посмотрите, что получилось!

 

Делают вывод, что  контрольная сумма и хеш-код совпали у двух разных паролей. Можно сказать, что произошел взлом пароля!

 

 

 

 

 

 

 

 

 

 

 

Алгоритм должен преобразовать входные данные уникальным способом, то есть результат должен быть однозначным и не допускать совпадений при вводе других строк.

 

 

3

Этап изучения нового материала

 

7

Познакомить обучающихся с понятием «коллизия», модулем

 hashlib

Коллизии хеш-функций

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

Коллизия хеш-функции — это такая пара входных данных  A и B, для которых результат хеширования  одинаковый. H(A) = H(B), где H(x )- хеш-функция.

Для приведенного выше примера хеш-функции существует много коллизий для одного пароля.  В этом можно убедиться с помощью простой программы, написанной на Python.

Например, строка «Марица» имеет тот же хеш, что и «Максил» -6458.

Педагог предлагает обучающимся найти выход из данной ситуации.

Педагог.

Даже если использовать сложную математическую функцию, то коллизии все равно могут возникнуть!

Для обеспечения безопасности в Интернете используются разработанные математиками криптографически стойкие хеш-функции.

 

Ребята могут предложить следующее решение данной проблемы.

Эту проблему можно решить, используя сложную математическую функцию. Кроме того, данная  ситуация возникает из-за малого количества символов в хэш. Чем меньше знаков использует формула, тем больше вероятность повтора одного и того же хэш-кода на разные наборы данных. Пароль должен быть длинным. Это повысит безопасность и уменьшит риск возникновения коллизии.

Учащиеся знакомятся с популярными стандартами хеширования.

 

 

Таблица популярных  стандартов хеширования[2]

 

MD5

Протокол базируется на 128-битном (16-байтном) фундаменте. Применяется для хранения паролей, создания уникальных криптографических ключей и ЭЦП. Используется для аудита подлинности и целостности документов в ПК. Недостаток – сравнительно легкое нахождение коллизий.

SHA-1

Реализует хеширование и шифрование по принципу сжатия. Входы такого алгоритма сжатия состоят из набора данных длиной 512 Бит и выходом предыдущего блока. Количество раундов – 80. Размер значения хэш – 32 Бит. Найденные коллизии – 252 операции. Рекомендовано для основного использования в госструктурах США.

SHA-2

Семейство протоколов – однонаправленных криптографических алгоритмов, куда входит легендарный SHA-256, используемый в Bitcoin. Размер блока – 512/1024 Бит. Количество раундов 64/80. Найденных коллизий не существует. Размер значения однонаправленных хэш-функций – 32 Бит.

ГОСТ Р 34.11-2012 «Стрибог»

Детище отечественных программистов, состоящее из пары хэш-функций, с длинами итогового значения 256 и 512 Бит, отличающиеся начальным состоянием и результатом вычисления. Криптографическая стойкость – 2128. Преобразование массива данных основано на S-блоках, что существенно осложняет поиск коллизий.

 

 

Модуль hashlib, включенный в стандартную библиотеку Python, представляет собой модуль, содержащий популярные алгоритмы хеширования.

 

 

При наличии времени можно предложить ученикам онлайн хеширование в интернете. Можно познакомиться с онлайн ресурсами хеширования дома.

 

4

Этап проверки понимания и первичного закрепления

5

Закрепить изученные понятия хеширования

Код import hashlib предназначен для импорта алгоритмов хеширования.

Попробуйте написать программу, которая использует различные алгоритмы хеширования модуля hashlib

Пример выполненного задания.

 

 

Результат работы программы.

5

Этап контроля усвоения и коррекции ошибок

17

Формировать навыки разработки программ, планировать свою деятельность, развивать логическое мышление и исследовательские навыки

Проведем эксперимент, усложнив хеш-функцию.

Попробуйте написать для выбранного вами варианта.

Исследуйте предложенную модель хеш-функции на коллизии.

Придумайте свои примеры паролей.

Предлагается на выбор задания различной степени трудности

 

Один из вариантов

Пусть строка преобразуется по следующему правилу:

1.      Код каждого символа будем делить на число Фибоначчи = 1.618

2.      Полученную целую часть переводим в шестнадцатеричный код

3.      К хешу приписываем полученный16-ный код

4.      Находим разность кода символа и целой части при делении на 1.618

5.      Полученное число переводим в шестнадцатеричный код

6.      К хешу приписываем полученный16-ный код

7.      Повторяем действия 1-6  с первого до последнего символа строки

8.      Полученная строка из шестнадцатеричных кодов и есть результат хеширования

9.      Контрольную сумму хеширования получаем преобразовав 16-й код в десятичное число

10.   Выводим  контрольную сумму и хеш-код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Педагог контролирует работу учеников, оказывает помощь, корректирует, консультирует.

 

Педагог перед домашним заданием сообщает следующую информацию с целью заинтересовать учеников

 

Для снижения риска возникновения  коллизии:

·                    используют хеширование с «солью».

·                    двойное хеширование строк, в котором существуют  два протокола, например, в Bitcoin используется открытый и закрытый ключ.

 

Учащийся оценивает свои способности, делает свой выбор задания, рассчитывает время реализации модели на ПК.

 

Пример программы, выполненный учеником.

Программный код хеширование функцией деления на число Фибоначчи.

Результаты выполнения программы:

 

 

Одинаковые символы и их количество, но разное размещение

Прописная и строчная буква Р

В следующем примере последний символ первой строки цифра 0, во второй – латинская буква O

6

Информация о домашнем задании, инструктаж по его выполнению

1

закрепить знания, полученные на уроке и формировать интереса к предмету

Домашнее задание

1.      Найдите информацию о хешировании с солью, о двойном хешировании строк.

2.      Попробуйте придумать свой алгоритм хеширования и напишите программы для его реализации.

3.      Предложить прочитать статью «Чудеса хеширования» блога Касперского

 

Учащиеся задают вопросы по домашнему заданию

 

7

Этап рефлексии деятельности на занятии

4

Закрепить пройденный материал

формировать способность к рефлексии, научить фиксировать собственные трудности

Блиц-опрос

Какие выводы можно сделать?

 

 

 

 

 

Когда можно хеш-функцию назвать эффективной?

 

 

 

Какие затруднения вы испытали на уроке? В чем причина их возникновения

Выводы:

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

Чем сложнее математическая функция, тем меньше повторений при различных входных данных.

Хеш-функцию можно назвать эффективной, если она соответствует следующим критериям:

·    Чувствительность. Небольшие изменения в вводимых данных изменяют хеш.

·    Необратимость. Невозможность восстановления из результата хеширования  исходных данных.

·    Коллизионная устойчивость. Входная информация должна иметь уникальный хеш. Алгоритм хеширования использует  математические вычисления, которые снижают риски появления коллизии.

 

 

Учитель предлагает разбиться на две группы и написать синкве́йн по темам «хеш-функция» и «хеширование»

Педагог выдает памятку о том, что такое синквейн.

Делятся на группы, работают над созданием синквейна. Озвучивают результат своей деятельности.

 Ниже приведен результат коллективной работы одной из групп.

 

Классический синквейн строится так:
первая строка – тема синквейна, одно слово, существительное или местоимение;
вторая строка – два прилагательных или причастия, которые описывают свойства темы;
третья строка – три глагола или деепричастия, рассказывающие о действиях темы;
четвертая строка – предложение из четырех слов, выражающая личное отношение автора синквейна к теме;
пятая строка – одно слово (любая часть речи), выражающее суть темы; своего рода резюме.
,Хеш-функция
Уникальная и непредсказуемая
Преобразует, генерирует, вычисляет
Нам безопасность в Интернете обеспечивает!
Мешанина!
 



[1] Материал из Википедии — свободной энциклопедии

[2] Материал из статьи «Что такое хэш и хэш-функция: практическое применение, обзор популярных алгоритмов»

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал
Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 098 790 материалов в базе

Материал подходит для УМК

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 26.05.2022 204
    • DOCX 1.9 мбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Бронина Анна Витальевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Бронина Анна Витальевна
    Бронина Анна Витальевна
    • На сайте: 5 лет и 10 месяцев
    • Подписчики: 3
    • Всего просмотров: 6679
    • Всего материалов: 15

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой