Этот проект включает в себя реализацию комбинаторного замка от логического дизайна до его сборки на аппаратном уровне. Процесс повышения безопасности этого замка путём защиты от сканирования шпионского программного обеспечения и расшифровки также будет рассматриваться. Целью данного проекта является реализация вышеописанного комбинаторного замка на платах FPGA с использованием языка VHDL и технологии конечных автоматов. На стороне взаимодействия входные данные и вывод будут использовать кнопки, переключатели, светодиоды и семисегментные индикаторы платы FPGA.
Предлагаются некоторые возможные решения для решения проблем, таких как деэмулирование, генерация случайных чисел и проверка комбинаций, а также выбор подходящей стратегии на разных этапах.
В этом проекте будет использована начальная плата Nexys 4 DDR производства компании Digilent. Эта плата использует FPGA модели Artix 7 XC7A100T от компании Xilinx. Ниже приведена диаграмма начальной платы:
В этой части дизайна пользователю предлагается ввести последовательность пятизначного кода. Если последовательность верна, все светодиоды на плате FPGA засветятся. Все последующие эксперименты будут проводиться с использованием последовательности кода 4, 2, 7, 5, 7.
Интерфейс пользователя будет работать следующим образом:
Кнопка BTNU указывает, что пользователь может начать ввод своего пароля.
Каждое число будет введено в двоичной форме с помощью переключателей.
Как только пользователь подготовит ввод переключателей, он может нажать кнопку BTNL, чтобы считать число и ввести следующее число до тех пор, пока не будет введена вся пятизначная последовательность пароля.
Если последовательность кода верна, то светодиоды засветятся.
Состояние инициализации — это состояние INI. Когда кнопка BTNU нажата, все состояния переходят в состояние INI. В состоянии INI массив всех пользовательских вводов usr_in обнуляется. Состояния A, B, C, D, E, RES переходят к следующему состоянию при каждом нажатии кнопки BTNL. Если нет входного сигнала, состояния остаются неизменными.Поскольку кнопки в основном являются механическими выключателями, нестабильность сигнала возникает при переходе состояния выключателя. Это можно видеть на вышеуказанной фигуре: хотя кнопка нажата всего один раз, фактически генерируемый сигнал кнопки не происходит только один раз. При использовании высокочастотного тактового сигнала для отбора образцов, такого как 100 МГц, это может привести к ошибочному суждению. Система ошибочно считает, что пользователь сделал несколько нажатий.
Поэтому ключевые шаги этого проекта для решения проблемы следующие:
Уменьшение частоты высокочастотного тактового сигнала, увеличение периода выборки для обеспечения максимальной достоверности выборки;
На основе тактового сигнала после понижения частоты производится запаздывающее выборочное чтение сигнала кнопки, а когда выборочный сигнал кнопки находится на уровне "высокий" (нажата) через фиксированное время, выводится сигнал кнопки снятия дребезга.
Основная идея на этом этапе заключается в загрузке массива правильной последовательности кода 'keys' при инициализации системы и массива входных данных пользователя 'usr_in'. Когда пользователь нажимает кнопку BTNL один раз для выполнения операции чтения и переключения состояния, соответствующий элемент массива usr_in обновляется. После ввода всех пяти цифр проверяется, совпадают ли массивы usr_in и keys, и отображается соответствующий результат.
Основная цель этой части дизайна — улучшить опыт пользователя; цифры и семисегментный индикатор будут использоваться для отображения пяти цифр и информации о проверке, введенных пользователем.- Когда кнопка BTNL нажата, введенные цифры отображаются в реальном времени на семисегментном индикаторе последовательно.
После ввода пяти цифр система будет отображать сообщение об успехе 'OK' и сообщение об ошибке 'Err' на семисегментном индикаторе в зависимости от корректности последовательности кода.
Отображение 'OK' и 'Err' будет чередоваться каждую секунду вместе с отображением введенных цифр.
Отображение цифр будет улучшено с помощью счетчика, который быстро переключается между различными цифрами. Отображающий модуль затем последовательно пройдет через каждую цифру (вызывая циклическое перемещение цифры в последовательность 1110111, 1111011, 1111101, 1111110) и выведет требуемые значения для каждого сегмента. Хотя одновременно активируется только одна цифра, устойчивость светодиода и невосприимчивость человеческого глаза к частоте изменения значений означает, что отображение будет казаться как будто все цифры адресуются одновременно.
Это достигается за счет использования счетчика со скоростью 100 МГц, который считает до 58192 (двоичное число 1110001101010000), после чего сбрасывается обратно в ноль и начинается заново.Поскольку в этой системе одновременно могут отображаться максимум пять цифр, они должны быть представлены трёхразрядным двоичным числом, поэтому первые три разряда счетчика должны изменяться от 0 до 1 (от 000 до 111).## 3.2 Альтернативное отображение
Функция дискретного отображения реализуется в этом дизайне с использованием счетчиков count_flk
и флага switch_flk
. Для повышения повторного использования кода этот счетчик может быть рассчитан на основе медленного тактового сигнала. Кроме того, скорость мигания можно регулировать путем изменения максимального значения счетчика, которое является множителем медленного тактового сигнала.
Флаг переключения switch_flk
используется как сигнал для переключения состояния. Если состояние равно E
, то при значении switch_flk
равном 1, состояние автоматически переключается на RES
. Если состояние находится в RES
, то при значении switch_flk
равном 0, состояние автоматически переключается на E
для достижения эффекта мигающего цифрового табло.
Проблема паролей заключается в шпионском программном обеспечении, которое может быть установлено на компьютер пользователя для логирования активности клавиатуры и перехвата пароля. Высоко защищённые системы пытаются решить эту проблему, никогда не запрашивая у пользователя ввод всего пароля за один вход.
Поэтому на данном этапе проектирования пользователю предлагается ввести различные случайные цифры своего пароля, например, пятый и первый символы пароля. При следующем входе пользователю будут запрошены другие пары символов.- Третья кнопка BTNR будет использована для указания начала ввода двух чисел из последовательности кода. - Система выберет случайное число в диапазоне от 1 до 5 и выведет его на семисегментный индикатор. Пользователь вводит соответствующее число из последовательности кодов с помощью переключателей и второго кнопочного переключателя как обычно.
Затем система выберет другое случайное число в диапазоне от 1 до 5 и выведет его на семисегментный индикатор. Пользователь вводит соответствующее число из последовательности кодов.
Если два цифровых значения верны, то система покажет сообщение 'OK'. В противном случае она выдаст сообщение 'Err'.
Инициализационное состояние — INI_R. Когда нажата кнопка BTNR, все состояния переходят в состояние INI_R. В этом состоянии счетчик случайного числа останавливается, а затем генерируются два различных случайных числа rand_1, rand_2. Кроме того, правильная последовательность кодов и соответствующий ей случайный номер, а также последовательность кодов, введенная пользователем usr, будут обнулены, после чего переход осуществляется в состояние A_R. Одновременно первый случайный номер rand_1 будет показан на цифровом индикаторе и ждет ввода пользователя соответствующего пароля.
Состояние B_R выводит второй случайный номер на цифровой индикатор и ожидает ввода пользователя соответствующего пароля. После того как пользователь введет оба цифровых значения, состояние переходит в RES_R, где сравниваются введенный пользователем пароль usr и правильный пароль anw, а результат выводится на экран.
Реализация функции случайного выбора может основываться на индексных счетчиках и многомерных массивах. Поскольку диапазон последовательностей кодов составляет 1–5 бит, существует 20 различных комбинаций двухзначных чисел. Эти комбинации могут быть загружены в многомерный массив с индексами от 0 до 19. При нажатии кнопки BTNU счетчик останавливает свою работу и генерирует случайное число от 0 до 19. Это случайное число можно использовать как индекс многомерного массива для косвенной генерации двух различных случайных чисел от 1 до 5.## 4.3 Проверка случайной последовательности кодов
Два контейнера массивов будут инициализированы во время этапа инициализации, anw и usr. При нажатии кнопки BTNR генерируются два разных случайных числа, что означает, что код, соответствующий каждому случайномu числу, также был определён. В этот момент код, соответствующий каждому случайномu числу, загружается в соответствующие позиции массива anw. При нажатии кнопки BTNL для чтения входных данных пользователя каждый клик обновляет входные данные пользователя в массиве usr. Когда вводятся две цифры, массивы usr и anw сравниваются, и отображаются соответствующие данные.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )