Разработка программно-аппаратной системы контроля и управления доступом
Аннотация и ключевые слова
Аннотация (русский):
В данной статье ставится задача разработать программно-аппаратную систему контроля и управления доступом на основе аппаратных платформ Arduino Uno и Raspberry Pi. Разработанная программно-аппаратная система предназначена для сбора данных и хранения их в базе. Представленный комплекс можно переносить и использовать в любом месте, что объясняет его высокую мобильность.

Ключевые слова:
Arduino, Raspberry Pi, RFID, NFC, информационная безопасность, система контроля и управления доступом.
Текст
Текст (PDF): Читать Скачать

Введение

 

Проблема сбора, хранения и обработки больших объёмов данных в настоящее время стоит наиболее остро. С развитием Интернета человечество получило доступ к информации со всего Земного шара; количество уникальных пользователей Всемирной сети растет стремительными темпами, равно как и техническая оснащенность различных организаций и предприятий. Современные методы ведения коммерческой, учебной и других видов деятельности всё чаще и чаще включают в себя использование информационных технологий. В каждой из сфер деятельности непременно задействованы люди – а, как известно, самой серьёзной уязвимостью в любой системе безопасности является человек – и чтобы избежать несанкционированного доступа каждому пользователю необходимо пройти процедуры регистрации в информационной системе – аутентификацию и идентификацию. Для этой цели в организациях внедряются системы контроля и управления доступом.

Постановка задачи

 

Необходимо спроектировать и разработать устройство системы контроля и управления доступом на базе устройств Raspberry Pi и Arduino Uno. Устройство должно иметь модуль ввода данных и систему хранения этих данных. Ввод данных должен осуществляться посредством бесконтактного считывания информации со смарт-карты. Хранение должно осуществляться при помощи программного обеспечения Raspberry Pi. Также система должна иметь графический пользовательский интерфейс для просмотра и отслеживания введенной информации: веб-приложение, имеющее серверную часть, взаимодействующую с базой данных и обслуживающую клиентские запросы. Приложение, равно как и операционная система устройства, должно быть защищено от распространенных угроз безопасности информационных систем [5].

Для реализации проекта были использованы устройства: Arduino Uno, Raspberry Pi 3, RFID/NFC модуль.

Raspberry Pi 3 – это полноценный компьютер с 64-х битным четырехъядерным процессором ARM Cortex-A53 на однокристальном чипе Broadcom BCM2837 [9]. Основной операционной системой является Linux [6].

Плата Arduino Uno–платформа для разработки на базе микроконтроллера ATmega328P [8].Имеет 14 цифровых и 6 аналоговых пинов для подключения разнообразных датчиков, светодиодов и других внешних устройств.

RFID – беспроводное бесконтактное использование радиочастотных волн для передачи данных [10].

Схема соединений устройств представлена на рисунке 1.RFID/NFC-считыватель соединяется с Arduino для передачи данных с NFC-метки, для соединения используются три трехпиновых шлейфа. Затем Arduino соединяется с Raspberry Pi посредством USB-кабеля для дальнейшей передачи считанных данных через последовательный интерфейс.

 

 

 

 

 

 

 

 

 

 

Рис. 1. Схема соединения устройств

 

 

Программная часть устройства включает в себя:

  1. Программу для Arduino, принимающую данные со считывателя и передающую их на Raspberry Pi;
  2. База данных, хранящая считанные данные;
  3. Скрипт, принимающий данные, передаваемые с Arduino, и пополняющий ими базу данных;
  4. Веб-приложение, соединенное с базой данных, предоставляющее доступ к записям в базе данных.

 

Программа для Arduino

 

Для взаимодействия со считывателем используется библиотека Adafruit PN532. К Raspberry Pi для передачи данных Arduino подключается с помощью USB-кабеля, программа использует последовательный интерфейс обмена данными. Реализация программы представлена на листинге 1.

Листинг 1.

Adafruit_PN532 nfc(PN532_IRQ, 100);

void setup(void) {

Serial.begin(9600);

nfc.begin();

int versiondata = nfc.getFirmwareVersion();

if (!versiondata) {

while(1) {}

  }

nfc.SAMConfig();

}

void loop(void)

{

uint8_t success;

uint8_t uid[8];

uint8_t uidLength;

success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

if (success) {

nfc.PrintHex(uid, uidLength);

Serial.println("");

delay(1000);

  }

}

 

База данных

Для хранения данных используется реляционная СУБД MySQL. В базе данных создана таблица, имеющая структуру, описанную в табл. 1.

 

Таблица 1. Структура таблицы записей

 

Название столбца

Тип столбца

id

INT

data

VARCHAR(255)

time

DATETIME

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

Листинг 2.

db = peewee.MySQLDatabase('raspdb', user='www', password='www')

class User(peewee.Model):

username = peewee.CharField(unique=True)

password = peewee.CharField(default='')

class Meta:

database = db

class Record(peewee.Model):

data = peewee.TextField()

time = peewee.DateTimeField(default=datetime.now)

class Meta:

        database = db

 

Считывающий скрипт

 

Для взаимодействия с USB-портом через последовательный интерфейс используется модуль pyserial. При помощи данного модуля производится прием и разбор данных, затем производится добавление записи в базу данных. Соединение с базой данных происходит при помощи модуля peewee. Код скрипта представлен на листинге 3.

 

Листинг 3.

 

serial = pyserial.Serial('/dev/ttyACM0', 9600)

while True:

line = serial.readline()

if line:

line = line.decode(‘utf-8’)

db.Record.create(data=line, time=datetime.now())

 

Веб-приложение

 

Веб-приложение реализуется на основе фреймворка Flask. Взаимодействие с базой данных также происходит при помощи модуля peewee.

В целях обеспечения безопасности веб-интерфейса [4] в приложении реализован механизм защиты от несанкционированного доступа путем идентификации и аутентификации пользователя по логину и паролю, а также защита от таких актуальных угроз, как прослушивание канала связи атакой «человек посредине» [7].

На уровне ОС с использованием метода, изложенного в [2], реализована защита от угроз типа rootkit.

Код приложения представлен на листинге 4.

 

Листинг 4.

context = SSL.Context(SSL.TLSv1_2_METHOD)

context.use_privatekey_file('server.key')

context.use_certificate_file('server.crt')

app = Flask(__name__)

bcrypt = Bcrypt(app)

@app.route('/login', methods=['GET', 'POST'])

def login():

if request.method == 'POST':

if not 'username' in request.form or not 'password' in request.form:

return render_template('login.html')

user = db.User.get_or_none(username=request.form['username'])

if user is None or not bcrypt.check_password_hash(user.password, request.form['password']):

return render_template('login.html')

session['username'] = user.username

return redirect(url_for('index'))

return render_template('login.html')

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

На рисунке 3 представлено собранное переносное устройство.

 

 

 

 

 

 

 

 

 

Рис. 2. Схема взаимодействия программных элементов на базе Raspberry Pi

 

Представленное на рисунке 3 устройство является рабочей системой контроля и управления доступом.В дополнение к этому, устройство защищено от некоторых актуальных угроз безопасности. Тем не менее, многие уязвимости остаются открытыми, поэтому в долгосрочной перспективе целесообразно провести аудит и устранить выявленные слабые места системы [3]. Дальнейшей задачей является рассмотрение методов устранения уязвимостей [1].

 

 

Рис. 3. Собранное устройство

 

Заключение

 

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

Аппаратная часть комплекса включает в себя вышеупомянутые устройства Arduino Uno и Raspberry Pi 3, а также RFID/NFC-считыватель. Последний подключается к Arduino Uno и передает данные по протоколу I2C. Arduino Uno, в свою очередь, соединяется с Raspberry Pi 3 посредством USB-кабеля и передает данные через последовательный интерфейс передачи данных.

Программная часть комплекса включает в себя исполняемый код, загружаемый в Arduino Uno, скрипт на языке программирования Python для считывания данных, передаваемых с Arduino Uno на Raspberry Pi 3, и помещения их в базу данных, непосредственно базу данных, хранящую данные, и веб-приложение также на языке Python, предоставляющее удобный графический интерфейс пользователя для просмотра хранимых данных в базе данных.

Список литературы

1. Аверченков, В.И. Междисциплинарные аспекты анализа тенденций развития интернета вещей (обзор российских и зарубежных исследований) / В.И. Аверченков, К.В. Герасимов, Н.А. Слесаренко // Эргодизайн. - 2019. - №3(05). - С. 106-114. DOI:https://doi.org/10.30987/article_5d25e4dcc73a24.98125589.

2. Кирилова, К.С. Анализ существующих методов реализации rootkit / К.С. Кирилова, А.Ю. Цветков // Актуальные проблемы инфотелекоммуникаций в науке и образование. VIII Международная научно-техническая и научно-методическая конференция: сб. науч. ст. СПб.: СПбГУТ, 2019. С. 492-497.

3. Пестов, И.Е. Выявление угроз безопасности информационных систем / И.Е. Пестов, Д.В. Сахаров, И.Ю. Сергеева, И.С. Чернобородов // Актуальные проблемы инфотелекоммуникаций в науке и образование. VIII Международная научно-техническая и научно-методическая конференция: сб. науч. ст. СПб. : СПбГУТ, 2017. С. 525-527.

4. Таргонская, А.И. Разработка защищенного веб-интерфейса для управления устройствами в сети / А.И. Таргонская, А.Ю. Цветков // Актуальные проблемы инфотелекоммуникаций в науке и образование. VIII Международная научно-техническая и научно- методическая конференция: сб. науч. ст. СПб. : СПбГУТ, 2019. С. 734-739.

5. Темченко, В.И. Проектирование модели информационной безопасности в операционной системе / В.И. Темченко, А.Ю. Цветков // Актуальные проблемы инфотелекоммуникаций в науке и образование. VIII Международная научно-техническая и научно-методическая конференция: сб. науч. ст. СПб.: СПбГУТ, 2019. С. 740-745.

6. Цветков, А.Ю. Исследование существующих механизмов защиты операционных систем семейства Linux / А.Ю. Цветков // Актуальные проблемы инфотелекоммуникаций в науке и образование. VII Международная научно-техническая и научно-методическая конференция: сб. науч. ст. в 4-х т. СПб. : СПбГУТ, 2018. С. 657-662.

7. Цветков А.Ю. Обеспечение безопасности в клиент-серверном Java приложении для учета и автоматической проверки лабораторных работ / А.Ю. Цветков, М.Е. Шалаева, М.А. Юрченко // Актуальные проблемы инфотелекоммуникаций в науке и образование. VIII Международная научно-техническая и научно-методическая конференция: сб. науч. ст. СПб.: СПбГУТ, 2019. С. 756-761.

8. Arduino Reference [Электронный ресурс]. URL:https://www.arduino.cc/reference/en/ (дата обращения 02.12.2019).

9. Raspberry Pi 3 Model B [Электронный ресурс]. URL:https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ (дата обращения 02.12.2019).

10. RFID/NFC-сканер [Амперка / Вики] [Электронный ресурс]. URL:http://wiki.amperka.ru/продукты:nfc (дата обращения 02.12.2019).

Войти или Создать
* Забыли пароль?