{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Как снизить риски кибербезопасности с помощью Computer vision?

Давайте разберем, как Computer vision может помочь компаниям защитить свои данные от злоумышленников.

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

Для снижения рисков кибербезопасности был разработан инструмент, позволяющий выявлять случаи фотографирования экранов АРМ с использованием Computer Vision. В качестве языка программирования использовался python. Поиск сотрудников проводился с помощью видеоматериалов, полученных с камер видеонаблюдения. Далее видео нарезалось и получался пул кадров, используемый для дальнейшей обработки. Нарезка осуществлялась с использованием библиотеки OpenCV.

for videoname in inpath: inpathfull = os.path.join(dir_path, videoname) vidcap = cv2.VideoCapture(inpathfull) success, image = vidcap.read() i=0 while vidcap.isOpened() and success: cv2.imwrite(outpath+videoname[:-4]+"_"+str(i)+".jpg",image) vidcap.set(cv2.CAP_PROP_POS_MSEC,(i*1000*3)) success, image = vidcap.read() i = i + 1 vidcap.release()

Техническую реализацию можно разбить на 2 основные составляющие:

  • детекция объектов (сотрудник, монитор, телефон);

  • определить наличие признаков фотографирования экранов АРМ

Основным инструментом, который использовался для обнаружения объектов (сотрудник, монитор, телефон), стала модель YOLO (разновидность CNN). Ее особенность состоит в том, что сверточная нейронная сеть(CNN) применяется один раз ко всему изображению. За счет это получается значительный выигрыш по времени. При дообучении сети в качестве стартовых весов использовался заранее обученный COCO датасет. Во второй части требовалось определить действия, которые могут быть связаны с фотографированием экрана. Здесь применялась простая математика. Проверялось, находится ли телефон у сотрудника. Использовались координаты сотрудника и телефона, полученные после первой части, затем, через алгебраические преобразования находили пересечения людей с телефоном.

def GetPhoneHumanMapping(boxes, classes, smartphoneLabel, humanLabel): smartphoneIndexes = [] humanIndexes = [] for i in range(0, len(classes)): if classes[i] == smartphoneLabel: smartphoneIndexes.append(i) if classes[i] == humanLabel: humanIndexes.append(i) humanPhoneMapping = [] for phoneIndex in smartphoneIndexes: phoneX, phoneY, phoneWidth, phoneHeight = boxes[phoneIndex] phoneBox = { 'x': phoneX, 'y': phoneY, 'width': phoneWidth, 'height': phoneHeight } for humanIndex in humanIndexes: humanX, humanY, humanWidth, humanHeight = boxes[humanIndex] humanBox = { 'x': humanX, 'y': humanY, 'width': humanWidth, 'height': humanHeight } if CheckBoundingBoxEnclosure(phoneBox, humanBox) == True: humanPhoneMapping.append({ 'human': boxes[humanIndex], 'phone': boxes[phoneIndex] }) return humanPhoneMapping

Далее проверялось, можно ли провести направленный отрезок через три объекта (сотрудник, телефон, монитор). Если можно, то кадр помечался как подозрительный. Таким образом, получалась риск-ориентированная выборка для ручного анализа.

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

0
Комментарии
-3 комментариев
Раскрывать всегда