DeviceLock для Windows
DeviceLock — с помощью программы вы сможете контролировать доступ пользователей или групп к устройствам (дисководы, CD/DVD-приводы, сменные накопители, жесткие диски, WiFi, Bluetooth и т.п.) и портам ввода-вывода (USB, FireWire, COM, LPT, IrDA). Поддерживаются все виды файловых систем — FAT, NTFS (версии 4 и 5), CDFS и т.п. Приложение имеет систему удаленного управления, позволяющую обеспечивать доступ ко всем возможным функциям программы.
Как хорошо известно системным администраторам встроенные механизмы распределения прав доступа и задания политик безопасности в операционных системах Windows не позволяют контролировать доступ к USB-портам и Plug-and-Play-устройствам. Тем не менее, использование неавторизованных устройств представляет угрозу корпоративным сетям и данным. Все это делает механизм аутентификации устройств, встроенный в DeviceLock, незаменимым и подчас безальтернативным решением проблем внутренней корпоративной безопасности. С помощью программы вы можете:
- Контролировать доступ пользователей к устройствам
- Контролировать доступ в зависимости от времени и дня недели
- Защитить диски от случайного или преднамеренного форматирования.
Anvide Seal Folder (ранее Anvide Lock Folder) — программа для защиты папок от постороннего доступа. Можно.
TrueCrypt — бесплатная программа, которая предназначена для надежной защиты любой информации.
XSpider — сетевой сканер безопасности. Программное средство сетевого аудита, предназначенное для поиска уязвимостей на серверах и рабочих станциях.
VeraCrypt — продвинутая программа для создания надежных зашифрованных хранилищ данных на Вашем ПК, где можно безопасно хранить секретную и приватную информацию.
Shadow Defender — программа предназначена для защиты от вредоносных действий и нежелательных.
Wise Folder Hider — бесплатный инструмент с помощью которого можно за пару кликов мышью надежно.
Отзывы о программе DeviceLock
Gig про DeviceLock 6.4.1 Build 24986 [20-10-2010]
Кристал про DeviceLock 6.4.1 Build 24986 [23-07-2010]
Да, с поддержкой у них плоховато, но для наших 12 компьютеров програмулина вполне подходит, хотя я бы купил другую, но не дали денег
2 | 6 | Ответить
Сергей про DeviceLock 6.4.1 Build 24986 [21-04-2010]
ПО- хорошее. Но у разработчика Полностью отсутствует тех. поддержка. По факту — никакой пользы от их ответов, приходящих через 3- 5 часов после вопроса. Низкий профессионализм работников тех. службы не позволяет воспользоваться их «советами». Эта программа для тех, у кого есть время самому «вылавливать блох».
2 | 2 | Ответить
Kahlil про DeviceLock 6.3 build 18669 [07-03-2009]
отличная прога, удобная интеграция с SQL, учет использования устройств в логах.
2 | 2 | Ответить
Vdevid lock что это такое
DeviceLock — с помощью программы вы сможете контролировать доступ пользователей или групп к устройствам (дисководы, CD/DVD-приводы, сменные накопители, жесткие диски, WiFi, Bluetooth и т.п.) и портам ввода-вывода (USB, FireWire, COM, LPT, IrDA). Поддерживаются все виды файловых систем — FAT, NTFS (версии 4 и 5), CDFS и т.п. Приложение имеет систему удаленного управления, позволяющую обеспечивать доступ ко всем возможным функциям программы.
Как хорошо известно системным администраторам встроенные механизмы распределения прав доступа и задания политик безопасности в операционных системах Windows не позволяют контролировать доступ к USB-портам и Plug-and-Play-устройствам. Тем не менее, использование неавторизованных устройств представляет угрозу корпоративным сетям и данным. Все это делает механизм аутентификации устройств, встроенный в DeviceLock, незаменимым и подчас безальтернативным решением проблем внутренней корпоративной безопасности. С помощью программы вы можете:
- Контролировать доступ пользователей к устройствам
- Контролировать доступ в зависимости от времени и дня недели
- Защитить диски от случайного или преднамеренного форматирования.
VeraCrypt — продвинутая программа для создания надежных зашифрованных хранилищ данных на Вашем ПК, где можно безопасно хранить секретную и приватную информацию.
Anvide Seal Folder (ранее Anvide Lock Folder) — программа для защиты папок от постороннего доступа. Можно.
TrueCrypt — бесплатная программа, которая предназначена для надежной защиты любой информации.
Wise Folder Hider — бесплатный инструмент с помощью которого можно за пару кликов мышью надежно.
XSpider — сетевой сканер безопасности. Программное средство сетевого аудита, предназначенное для поиска уязвимостей на серверах и рабочих станциях.
Небольшая бесплатная утилита, которая служит для автоматической.
Отзывы о программе DeviceLock
Gig про DeviceLock 6.4.1 Build 24986 [20-10-2010]
Кристал про DeviceLock 6.4.1 Build 24986 [23-07-2010]
Да, с поддержкой у них плоховато, но для наших 12 компьютеров програмулина вполне подходит, хотя я бы купил другую, но не дали денег
2 | 6 | Ответить
Сергей про DeviceLock 6.4.1 Build 24986 [21-04-2010]
ПО- хорошее. Но у разработчика Полностью отсутствует тех. поддержка. По факту — никакой пользы от их ответов, приходящих через 3- 5 часов после вопроса. Низкий профессионализм работников тех. службы не позволяет воспользоваться их «советами». Эта программа для тех, у кого есть время самому «вылавливать блох».
2 | 2 | Ответить
Kahlil про DeviceLock 6.3 build 18669 [07-03-2009]
отличная прога, удобная интеграция с SQL, учет использования устройств в логах.
2 | 2 | Ответить
Vdevid lock что это такое
Ahojky vespolek. Chci se zeptat. Snažil jsem se nahrát asi přes měsícem místní týdenní rom a skončilo to bohužel tím ze se mi telefon bootoval a nakonec se objevila obrazovka s hláškou že je telefon blokován a nabídlo mi to pouze volbu reset Phone. Po tom co jsem na to kliknul naběhlo TWRP, udělal jsem kompletní wipe úplně všeho, znovu nainstaloval a objevilo se to znovu. Tak jsem nakonec bohužel nahrál RR s oreem a ve správci souboru jsem našel složku Xiaomi kde je pouze jakýsi soubor vdevid.LOCK. Tuto složku jsem smazal a po restartu se tam stejně objevuje znovu. Tak se chci zeptat co by to mohlo být protože mně docela mrzí že mi Miui nejde spustit a tahle složka mě tam vyloženě sejri. Podotýkám že jsem měl vymazaný otisk prstů i zabezpečení telefonu gestem. Nic takového jsem tam neměl. A vždy mi přehrávání na Miui a zpět na jiné alternativní ROM fungovalo. TWRP jsem zkoušel jak místní tak i RedWolfa. Díky za napady
Vdevid lock что это такое
Программа DeviceLock, успевшая завоевать популярность как в нашей стране, так и за рубежом, дополнилась новыми возможностями. В первую очередь они связаны с расширением системы аудита по использованию устройств и дополнения системой теневого копирования. Кроме того, добавлена авторизация не только устройств, но и носителей информации на основе данных, находящихся на них. Здесь мы остановимся именно на новых возможностях программы.
Несколько слов о программе. При помощи DeviceLock администратор компьютера или домена может контролировать доступ пользователей к дисководам, DVD/CD-ROM, другим сменным устройствам, адаптерам WiFi и Bluetooth, а также к USB, FireWire, инфракрасным, COM- и LPT-портам. Кроме функции контроля доступа, DeviceLock позволяет осуществлять протоколирование и аудит использования устройств на локальном компьютере как отдельными пользователями, так и группами. Для хранения записей аудита DeviceLock использует стандартный журнал Windows, что позволяет просматривать их как с помощью стандартной программы просмотра событий, так и встроенного средства.
Вроде бы вполне достаточно, но хотя наличие журнала аудита и позволяет администратору отслеживать все действия пользователя, в том числе и по копированию файлов, только вот сами файлы пользователь, после копирования на носитель, может уничтожить или просто переименовать, и администратор безопасности уже не сможет сказать, была ли информация разрешена для копирования или нет.
При использовании функции теневого копирования (ее можно включить для отдельных пользователей или групп) все файлы и данные, копируемые пользователем на внешние носители и передаваемые через COM- и LPT-порты, будут "зеркалироваться" и сохраняться для последующего просмотра администратором. Сохраняются полные копии файлов и данных. Если в локальной сети установлено несколько сервисов DeviceLock, для каждого из них можно задавать имена одного или нескольких серверов, куда будут пересылаться данные теневого копирования.
Предусмотрена и дополнительная защита от администратора. В системе имеется и журнал для стертых данных теневого копирования. Теперь, когда записи теневого копирования удаляются из журнала, а содержимое файлов стирается из базы данных, информация об этих записях переносится в отдельный журнал Deleted Shadow Data Log. Для его просмотра есть специальный инструмент в DeviceLock Management Console.
Текущая версия программы состоит из трех элементов: агента (DeviceLock Service), сервера (DeviceLock Enterprise Server) и консоли управления. Ядром системы является агент, устанавливаемый на каждый контролируемый компьютер. Консоли управления требуются для удаленного управления агентами, DeviceLock-сервером. Эти элементы обязательны, а вот сервер — элемент дополнительный, используемый для централизованного сбора и хранения данных теневого копирования и журналов. При значительной нагрузке на сервер (когда в сети свыше нескольких сотен контролируемых компьютеров) их может быть установлено несколько.
Для хранения данных теневого копирования используется сервер MS SQL. Желательно, чтобы он был установлен еще до установки DeviceLock. Он может находиться как на одном компьютере с DeviceLock Enterprise Server, так и на разных. Организация работы с SQL-сервером зависит от размера локальной сети. В большой сети, где имеется мощный SQL-сервер, возможна установка нескольких серверов DeviceLock, подключаемых к одному SQL-серверу.
Для того чтобы не зависеть от учетных записей, под которыми будет запускаться сервер, предусмотрена организация его доступа к контролируемым компьютерам с помощью цифровых сертификатов. Закрытый ключ устанавливается на сервере, а на каждый компьютер, к которому должен подключаться сервер, устанавливается соответствующий ему открытый ключ.
Если DeviceLock Enterprise Server лишь обрабатывает поступающие данные и дает возможность их просмотра, то сбором и передачей данных занимается агент DeviceLock, для чего требуется его дополнительная настройка. В число параметров входит раздел на диске, где будут временно размещаться данные, и размер выделяемого пространства (задается в процентах от общего размера логического диска). Но даже выделив под сохраняемые копии многогигабайтный раздел, когда-то вы достигнете предела и его наполнения. Поэтому в качестве дополнительного параметра предусмотрена установка ограничения на наполнение этого раздела. В этом случае при достижении предельных цифр копирование данных в раздел прекращается.
Для предотвращения умышленного наполнения раздела и попытки копирования файлов во время, когда он отключен, предусмотрена возможность установки запрета на любое копирование данных в это время на контролируемые устройства.
Задачу администратора можно облегчить, если использовать еще один параметр настройки — разрешить автоматическое удаление старых файлов, помещенных в это хранилище. Если сервер для сбора данных не установлен, остается лишь риск того, что администратор может не проверить вовремя, что же копировалось на носители. Если же используется связка с сервером, то данные сами без администратора закачиваются на сервер и удаляются из локального хранилища.
Для завершения настройки надо указать программе, копирование на какие носители будет подвергаться контролю и фиксироваться. Для этого в настройках аудита можно включить протоколирование всех заданий по копированию для гибких дисков, CD/DVD-ROM, последовательных и параллельных портов, съемных носителей. Для этих устройств в настройках аудита есть специальный параметр — включение режима теневого копирования. Файлы, копируемые на гибкие и съемные носители, сохраняются со своими первоначальными именами. Для сохранения информации, записываемой на CD/DVD или передаваемой через порты, DeviceLock в процессе копирования формирует собственные имена.
Раздел, в который копируются файлы и данные на локальном компьютере, недоступен для пользователя. Но администратор, используя модуль управления агентом, может получить доступ к просмотрщику, в котором в виде записей будет выведена информация о том, кто, когда, на какой носитель скопировал файл или передал информацию, какой программой при этом воспользовался. А если выбрать заинтересовавшую вас запись, то соответствующий ей файл или данные можно сохранить на диске в доступном разделе, после чего эти данные можно просматривать через соответствующие типу файла приложения. Впрочем, у пользователя остается возможность запрета доступа к скопированным файлам (но не тем, что передавались через порты COM или LPT). Для этого достаточно зашифровать файл, а таких возможностей сейчас имеется достаточно.
Просмотреть сохраненные данные можно и без их выгрузки на диск. Выбрав любую запись, с помощью опции View контекстного меню можно открыть сохраненные данные и просматривать в шестнадцатеричном либо текстовом виде. (Для текстовых файлов вариант не очень удобен — нет возможности выбора кодировок, к тому же русские символы "съедаются".) Используя контекстное меню, можно удалить из хранилища любую запись и соответствующий ей файл или данные, но нельзя вести поиск по сохраненным данным.
Использование DeviceLock Enterprise Server является более корректным решением как по хранению данных, так и по возможностям контекстного поиска в них. Для выбора момента закачки данных на сервер используется сложный алгоритм, в котором учитывается и нагрузка на сеть, и вносится дополнительная случайная величина сдвига по времени. Это минимизирует нагрузку как на сервер, так и на сеть.
Сохранение информации в базе данных возможно в двух режимах — либо вся информация будет записываться непосредственно в базу данных, либо сохраненные в режиме теневого копирования данные будут помещаться на диск в виде файлов, а в базе будут храниться ссылки на них. Во втором варианте проще выполнять поиск файлов по контексту.
Теперь о второй новинке программы — авторизации носителей информации. Авторизованные носители формируют так называемый "белый" список медианосителей. Этот список позволяет идентифицировать, к примеру, определенный CD/DVD- диск на основе записанных на него данных и разрешить его использование, даже если сам CD/DVD-привод заблокирован. (Но использование — не полное, поскольку на основе "белого" списка пользователю можно предоставить доступ только на чтение, но не на запись.) Изменение данных на носителе приводит к изменению его уникального идентификатора, и, следовательно, этот носитель уже не будет распознан как разрешенный (авторизованный). "Белый" список авторизованных носителей можно экспортировать и устанавливать на любой пользовательский компьютер. Разрешив пользователю доступ к такому носителю, вы предоставляете для него возможность чтения данных даже в том случае, если устройства для него недоступны.
Из других изменений можно отметить изменение интерфейса — стал более удобным. Появилась возможность вывода для пользователей сообщений о том, когда истекает период использования для устройств, разрешенных через функцию временного "белого" списка. Упростился процесс установки программы. Впрочем, о возможностях программы собственное мнение лучше всего формировать при тестировании продукта. А для этого можно использовать бесплатную, 30-дневную пробную версию, доступную для скачивания с сайта компании "Смарт Лайн Инк".
Google Smart Lock: что это за программа на Android
На современных смартфонах пользователи хранят огромное количество данных, в том числе номера банковских карты и пароли от многих сервисов. Поэтому разработчики программного обеспечения уделяют огромное внимание безопасности, создавая всё более качественные средства защиты.
Сейчас самым популярным способом разблокировки устройства является использование сканера отпечатка пальца. Также можно применять и разблокировку по лицу, но как показывает практика, на Android она менее безопасная. И если про эти варианты защиты знают практически все, то что такое Google Smart Lock на телефоне Android известно не каждому. Давайте разберемся, что это за программа, а также рассмотрим принцип её настройки.
Что такое Smart Lock на Android
Если внимательно посмотреть на название программы, то можно догадаться, что она каким-то образом связана с блокировкой смартфона. Так и есть, потому что Google Smart Lock – современная опция, позволяющая значительно облегчить разблокировку телефона. В основе работы сервиса лежит анализ поведения пользователя, то есть ведение статистики по посещённым местам, контактам с другими устройствами и прочим действиям. Система определяет уровень безопасности нахождения владельца, и на основании этого решает – включить блокировку экрана или нет.

Постараемся объяснить более подробно на простом примере. Например, вы часто находитесь дома, поэтому в этом месте блокировка применяться не будет. А вот при попытке разблокировать телефон где-нибудь в другом городе, а тем более в другой стране, будет активирована соответствующая защита. Также программа анализирует положение устройства в пространстве при помощи гироскопа или акселерометра. И если смартфон находится у вас в руках, то ввод пароля или графического ключа не потребуется.
Как настроить Smart Lock
Нужно сразу отметить, что для работы программы Smart Lock на телефоне должен быть установлен один из способов защиты. Это может быть графический ключ, пароль или PIN-код. Если на вашем смартфоне никакие средства обеспечения безопасности не активированы, то это необходимо исправить. Сделать всё правильно вам поможет пошаговая инструкция:
- Заходим в настройки.
- Переходим в раздел «Блокировка и защита» либо «Экран блокировки и безопасность». Опять-таки заметим, что названия пунктов в зависимости от установленной прошивки и версии Android могут отличаться.
- Открываем вкладку «Защита устройства» или «Тип блокировки экрана».
- Нажимаем по строке «Способ защиты» и выбираем нужный вариант блокировки.

А теперь возвращаемся в раздел с настройками безопасности и находим в нём пункт «Smart Lock». Нажимаем по нему и видим список с настройками.

Давайте разберём каждый из вариантов защиты:
- Физический контакт. Современная опция, основанная на использовании информации о перемещении устройства в пространстве. За основу здесь взят установленный в телефоне акселерометр или гироскоп. Программа анализирует данные с датчиков и определяет – держит ли человек смартфон в руке или нет.
- Безопасные места. Утилита Google Smart Lock предлагает выбрать определённые безопасные места, где телефон не будет требовать ввода пароля. Это может быть ваш рабочий офис, любимое кафе или дом. Но стоит отметить, что для работы функции GPS должен постоянно находиться в работающем состоянии. Это совсем не хорошо, так как значительно влияет на расход аккумулятора.
- Надежные устройства. Мы постоянно находимся в окружении многих устройств. Это и умные часы, Bluetooth колонка, магнитола автомобиля и прочие современные девайсы. Разработчики сервиса Smart Lock позволяют перенести все эти гаджеты в список надёжных устройств. Это позволит системе разблокировать телефон при нахождении рядом с этими девайсами.
- Распознавание лиц. Подобный вариант разблокировки используют многие пользователи, поэтому его также можно активировать в настройках Google Smart Lock. Функция в принципе удобная, но не совсем безопасная. Иногда разблокировать телефон можно при помощи обычной фотографии его владельца.
- Распознавание по голосу. Все, наверное, знают фирменного голосового ассистента от Google. Достаточно произнести команду «О’кей, Google» и помощник уже готов выполнять ваши требования. Аналогичная технология применяется в программе Smart Lock. Система запоминает голос владельца, а после произношения нужной команды разблокирует устройство.
Как видим, вариантов настройки программы довольно много, поэтому каждый сможет сделать использование сервиса максимально удобным для себя.
Как отключить Google Smart Lock
Понятное дело, что программа Google Smart Lock нравится не всем, поэтому вопрос об её отключении всегда остаётся актуальным. На самом деле в этом нет ничего сложного, особенно если следовать рекомендациям пошаговых инструкций. Например, на смартфонах Xiaomi функция отключается следующим образом:
- Открываем настройки.
- Переходим в раздел «Расширенные настройки».
- Открываем вкладку «Конфиденциальность».
- Заходим в подкатегорию «Агенты доверия».
- Убираем галочку возле единственной строки «Smart Lock».

Что касается устройств с версией Android 5, то здесь принцип действий немного другой:
- Заходим настройки.
- Открываем вкладку с настройками аккаунта Google.
- Переходим в раздел «Smart Lock».
- Убираем галочку возле строки «Smart Lock для паролей».

Чтобы включить функцию Smart Lock, достаточно проделать указания инструкций в обратном порядке.
Таким образом, Google Smart Lock – программа, или лучше сказать опция, предназначенная для упрощения разблокировки смартфона. Она анализирует данные местоположения, расположения устройства в пространстве, голос пользователя, а также находящиеся рядом устройства. Для отключения функции достаточно убрать галочку с соответствующего пункта в настройках телефона.
Vdevid lock что это такое
Ahojky vespolek. Chci se zeptat. Snažil jsem se nahrát asi přes měsícem místní týdenní rom a skončilo to bohužel tím ze se mi telefon bootoval a nakonec se objevila obrazovka s hláškou že je telefon blokován a nabídlo mi to pouze volbu reset Phone. Po tom co jsem na to kliknul naběhlo TWRP, udělal jsem kompletní wipe úplně všeho, znovu nainstaloval a objevilo se to znovu. Tak jsem nakonec bohužel nahrál RR s oreem a ve správci souboru jsem našel složku Xiaomi kde je pouze jakýsi soubor vdevid.LOCK. Tuto složku jsem smazal a po restartu se tam stejně objevuje znovu. Tak se chci zeptat co by to mohlo být protože mně docela mrzí že mi Miui nejde spustit a tahle složka mě tam vyloženě sejri. Podotýkám že jsem měl vymazaný otisk prstů i zabezpečení telefonu gestem. Nic takového jsem tam neměl. A vždy mi přehrávání na Miui a zpět na jiné alternativní ROM fungovalo. TWRP jsem zkoušel jak místní tak i RedWolfa. Díky za napady
vdevid lock что это такое
DLP-система DeviceLock 8.2 — дырявый штакетник на страже вашей безопасности
В октябре 2017 года довелось побывать на рекламном семинаре DLP-системы DeviceLock, где помимо основного функционала защиты от утечек типа закрытия USB-портов, контекстного анализа почты и буфера обмена рекламировалась защита от администратора. Модель простая и красивая — в маленькую фирму приходит установщик, ставит комплекс программ, паролит БИОС, создает администраторскую учетку DeviceLock, а местному админу оставляет только права на управление собственно Виндой и остальным софтом. Даже в случае умысла этот админ ничего украсть не сможет. Но это все теория…
Т.к. за 20+ лет работы в области разработки средств защиты информации наглядно убедился, что администратор может все, особенно имея физический доступ к компьютеру, то основной защитой от него могут служить исключительно организационные меры типа строгой отчетности и физической защиты компьютеров, содержащих важную информацию, то немедленно возникла мысль проверить стойкость предложенного продукта.
Попытка сделать сразу по завершении семинара не удалась, в лоб защиту от удаления основной службы DlService.exe сделали и даже про права доступа и выбор последней удачной конфигурации не забыли, в результате чего повалить ее, как большинство вирусов, запретив системе доступ на чтение и выполнение, не получилось.
На все вопросы о защите наверняка имеющихся в составе продукта драйверов представитель фирмы-разработчика Смарт Лайн уверенно заявлял, что «все на том же уровне».
Через день решил продолжить изыскания, скачал пробную версию. Сразу же удивил размерчик дистрибутива почти в 2 Гб! Привык, что системное ПО, к которому принято относить средства защиты информации (СЗИ), обычно имеет гораздо более компактный размер.
После установки удивился 2й раз — размер вышеупомянутого ехе-шника тоже весьма немаленький — 13Мб. Сразу подумалось, что при таком объеме есть за что зацепиться. Попробовал подменить модуль с помощью отложенной записи — закрыто. Покопался в каталогах программы, а там одних драйверов аж 11 штук! Потыкал в разрешения — не закрыты для изменения! Ну ладно, всем запрет, перегружаемся!
Эффект просто феерический — все функции отключились, служба не стартовала. Какая там самозащита, бери и копируй что хочешь хоть на флешки, хоть по сети. Вылез первый серьезный недостаток системы — слишком сильная взаимосвязь компонентов. Да, служба с драйверами должна общаться, но падать то зачем, если никто не отвечает? В итоге один метод обхода защиты есть.
Выяснив, что чудо-служба такая нежная и чувствительная, решил проверить ее зависимости от сторонних библиотек. Тут еще проще, список большой, просто наугад стираем библиотеку WinSock_II и наблюдаем аналогичную картину — служба не стартовала, система открыта.
В результате имеем то самое, что живописал докладчик на семинаре, мощный забор, но огораживающий не весь охраняемый периметр из-за нехватки денег, а на незакрытом участке просто колючий шиповник. В данном же случае, учитывая архитектуру программного изделия, предполагающую не закрытую по умолчанию среду, а множество разнообразных затычек, перехватчиков, анализаторов трафика, это скорее штакетник, причем многие планочки прикручены саморезами снаружи и их очень легко открутить. Проблемы большинства подобных решений в том, что в таком огромном количестве потенциальных дырок всегда есть вероятность забыть что-то, пропустить взаимосвязь либо повлиять на стабильность, неудачно реализовав какой-то из перехватчиков. Судя по тому, что приведенные в данной статье уязвимости просто лежат на поверхности, продукт содержит еще множество других, искать которые надо на пару часов дольше.
Причем на рынке полно примеров грамотной реализации защиты от отключения, например отечественные антивирусные средства, где самозащиту просто так не объедешь. Насколько мне известно, они не поленились пройти сертификацию ФСТЭК.
Проведя несколько бесед с сотрудниками Смарт Лайн, несколько подобных мест, о которых они даже не слышали, было найдено. Один из примеров — механизм АррInitDll.
Пусть он не самый глубокий, зато во многих случаях позволяет обойтись без влезания в ядро ОС и не влиять на ее стабильность. Драйвера nVidia во всю используют данный механизм для подстройки видеодаптера под конкретную игру.
Вызывает вопросы полное отсутствие комплексного подхода к построению автоматизированой системы на базе DL 8.2. Предлагается живописать заказчику преимущества продукта, проверить вычислительную мощность имеющихся ПК и серверов (контекстные анализаторы весьма ресурсоемки и модные сейчас офисные моноблоки и неттопы на базе Атом в данном случае не подходят) и просто накатить сверху изделие. При этом такие термины, как «разграничение доступа», «замкнутая программная среда», даже не прозвучали на семинаре. Про шифрование было сказано, что помимо сложности оно вызовет вопросы регуляторов, хотя реально никаких проблем с этим нет. Вопросы про сертификацию даже во ФСТЭК отметаются ввиду их якобы сложности и затянутости. Как специалист по ИБ, неоднократно принимавший участие в подобных процедурах, могу сказать, что в процессе их проведения выявляется множество уязвимостей, подобных описанным в данном материале, т.к. специалисты сертифицирующих лабораторий имеют серьезную профильную подготовку.
В итоге представленная DLP-система может выполнять весьма малый набор функций, собственно обеспечивающих информационную безопасность, генерируя при этом серьезную вычислительную нагрузку и создавая у неискушенного в вопросах ИБ руководства компании ощущение защищенности корпоративных данных.
Реально защитить она может разве что реально большие данные от непривилегированного пользователя, т.к. администратор вполне способен полностью деактивировать защиту, а для необъемных секретов и младший менеджер по клинингу догадается незаметно сфотографировать экран, а то и запомнить адресок или номер кредитки, заглянув в экран через плечо коллеги.
Причем все это справедливо только в случае невозможности физического доступа сотрудников к внутренностям ПК или хотя бы к БИОС для активации загрузки с внешних носителей. Тогда может не помочь даже БитЛокер, который вряд ли применяется в фирмах, которые только задумались о защите информации.
Вывод, как это ни банально звучит, в комплексном подходе к ИБ, включая не только программно/аппаратные решения, но и организационно-технические меры для исключения фото/видеосъемки и недопуска на объект посторонних «мальчиков с феноменальной памятью». Полагаться на чудо-продукт DL 8.2, рекламируемый как одношаговое решение большинства проблем с безопасностью предприятия нельзя ни в коем случае.
.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Я продолжаю создавать текстовую версию своего выступления на митапе по многопоточности. С первой частью можно ознакомиться здесь или здесь, там речь больше шла о базовом наборе инструментов, чтобы запустить поток или Task, способах просмотреть их состояние и некоторых сладких мелочах, вроде PLinq. В этой статье хочу больше остановится на проблемах, которые могут возникнуть в многопоточной среде и некоторых способах их решения.
Содержание
О разделяемых ресурсах
Невозможно написать программу, которая бы работала в несколько потоком, но при этом не имела бы ни одного общего ресурса: т.к. даже если это получится на вашем уровне абстракции, то спустившись на один или несколько уровней ниже окажется, что общий ресурс все-таки есть. Приведу несколько примеров:
Опасаясь возможных проблем, вы заставили потоки работать с разными файлами. По файлу на поток. Вам кажется, что в программе нет ни одного общего ресурса.
Спустившись на несколько уровней ниже, мы понимаем, что жесткий диск один, а проблемы обеспечения доступа к нему придется решать его драйверу или операционной системе.
Прочитав пример#1, вы решили разместить файлы на двух разных удаленных машинах с двумя физически разными железяками и операционными системами. Держим 2 разных соединения по FTP или NFS.
Спустившись на несколько уровней ниже, мы понимаем, что ничего не изменилось, а проблему конкурентного доступа придется решать драйверу сетевой карты или операционной системе машины, на которой работает программа.
Лишившись немалой части волос в попытках доказать возможность написания многопоточной программы вы отказываетесь вообще от файлов и раскладываете вычисления в два разных объекта, ссылки на каждый из которых доступны лишь одному потоку.
Заколачиваю финальную дюжину гвоздей в гроб этой идеи: одна среда выполнения и сборщик мусора, планировщик потоков, физически одна оперативная и память, один процессор все еще являются общими ресурсами.
Итак, мы выяснили, что невозможно написать многопоточную программу без единого разделяемого ресурса на всех уровнях абстракции по ширине всего стека технологий. К счастью, каждый из уровней абстракции, как правило, так или иначе, частично или полностью решает проблемы конкурентного доступа или попросту запрещает его(пример: любой UI фреймворк запрещает работу с элементами из разных потоков), потому проблемы чаще всего возникают с разделяемыми ресурсами на вашем уровне абстракции. Чтобы их решить вводят понятие синхронизации.
Возможные проблемы при работе в многопоточной среде
Ошибки в работе ПО можно разбить на несколько групп:
Deadlock
Deadlock — взаимная блокировка. Существует много разных вариаций. Наиболее частой можно считать следующую:
Пока Thread#1 что-то делал, Thread#2 заблокировал ресурс B, немного позднее Thread#1 заблокировал ресурс A и пытается заблокировать ресурс B, к сожалению это никогда не произойдет, т.к. Thread#2 освободит ресурс B лишь после того как заблокирует ресурс А.
Race-Condition
Race-Condition — состояние гонки. Ситуация, в которой поведение и результат вычислений, выполняемых программой, зависит от работы планировщика потоков среды выполнения.
Неприятность этой ситуации заключается как раз в том, что ваша программа может не работать лишь один раз из ста или даже из миллиона.
Усугубляются ситуация тем, что проблемы могут идти вместе, например: при определенном поведении планировщика потоков возникает взаимная блокировка.
Кроме этих двух проблем приводящих к явным ошибкам в работе программы есть еще те, что, возможно, и не приведут к некорректному результату вычислений, но для его получения будет потрачено больше времени или вычислительной мощности. Двумя такими проблемами являются: Busy Wait и Thread Starvation.
Busy-Wait
Busy-Wait — проблема, при которой программа потребляет ресурсы процессора не для вычислений, а для ожидания.
Часто такая проблема в коде выглядит примерно так:
Это пример крайне плохого кода, т.к. Такой код полностью занимает одно ядро вашего процессора при этом не делая ровным счетом ничего полезного. Он может быть оправдан тогда и только тогда, когда критически важно обработать изменение какого-то значения в другом потоке. И говоря быстро я говорю, о случае, когда вы не можете ждать даже нескольких наносекунд. В остальных случаях, то есть во всех, что может породить здоровый мозг, разумнее использовать разновидности ResetEvent и их Slim версии. О них ниже.
Возможно, кто-то из читателей предложит решить проблему с полной загрузкой одного ядра бесполезным ожиданием добавлением в цикл конструкции вроде Thread.Sleep(1). Это действительно решит проблему, но создаст другую: время реагирование на изменение будет в среднем равен половине миллисекунды, что может и не много, но катастрофически больше, чем могло бы быть используй вы примитивы синхронизации семейства ResetEvent.
Thread Starvation
Thread-Starvation — проблема, при которой в программе слишком много одновременно работающих потоков. При чем речь именно о тех потоках, что заняты расчетами, а не просто ожиданием ответа от какого-либо IO. При этой проблеме теряется весь возможный выигрыш в производительности от использования потоков, т.к. Процессор тратит очень много времени на переключение контекстов.
Такие проблемы удобно искать с помощью различных профилировщиков, ниже пример скриншота из профилировщика dotTrace запущенного в режиме Timeline.
(Картинка кликабельна)
В программе что не страдает от потокового голода, розового цвета на графиках, отражающих потоки не будет. Кроме этого, в категории Subsystems видно, что программа 30.6% ждала CPU.
Когда такая проблема диагностирована, решается она довольно просто: вы запустили слишком много потоков в один момент времени, запустите меньше или не все сразу.
Средства синхронизации
Interlocked
Чтобы осознать весь ужас неатомарных операций, попробуйте написать программу, что запускает 10 потоков, каждый из которых делает миллион инкрементов одной и той же переменной, а по окончанию их работы выведите значение этой переменной — к сожалению оно будет сильно отличаться от 10 миллионов, более того при каждом запуске программы оно будет разным. Происходит это потому, что даже такая простая операция как инкремент не является атомарной, а включает в себя извлечение значения из памяти, расчет нового и запись обратно. Таким образом два потока могут одновременно сделать каждую из этих операций, в этом случае инкремент будет потерян.
Класс Interlocked предоставляет методы Increment/Decrement, нетрудно догадаться, что они делают. Их удобно использовать, если вы обрабатываете данные в несколько потоков и что-то считаете. Такой код будет работать значительно быстрее классического lock. Если для ситуации описанной в прошлом абзаце использовать Interlocked, то программа в любой ситуации будет стабильно выдавать значение 10 миллионов.
Метод CompareExchange выполняет, на первый взгляд довольно неочевидную функцию, но все ее наличие позволяет реализовывать множество интересных алгоритмов, в первую очередь семейства lock-free.
Метод принимает три значения: первое передается по ссылке и это то значение, которое будет изменено на второе, если в момент сравнения location1 совпадает с comparand, то оригинальное значение location1 будет возвращено. Звучит довольно запутано, потому проще написать код, который выполняет те же операции, что и CompareExchange:
Только реализация в классе Interlocked будет атомарной. То есть, напиши мы такой код сами, могла бы произойти ситуация, когда условие location1 == comparand уже выполнилось, но к моменту выполнения выражения location1 = value другой поток изменил значение location1 и оно будет утеряно.
Хороший пример использования этого метода можем найти в коде, что генерирует компилятор для любого события С#.
Напишем простой класс с одним событием MyEvent:
Соберем проект в конфигурации Release и откроем сборку при помощи dotPeek c включенной опцией Show Compiler Generated Code:
Здесь видно, что за кулисами, компилятор сгенерировал довольно изощренный алгоритм. Этот алгоритм защищает от ситуации потери подписки на событие, когда несколько потоков одновременно на это событие подписываются. Давайте распишем метод add подробнее, вспомнив что за кулисами делает метод CompareExchange
Так уже немного понятнее, хотя, наверное, все еще нуждается в объяснении. Словами бы я описал этот алгоритм следующим образом:
Если MyEvent все еще такой как был на момент как мы начали выполнять Delegate.Combine, то запиши в него то, что вернет Delegate.Combine, а если нет, то не беда, давай попробуем еще раз и будем повторять пока не выйдет.
Так ни одна подписка на событие не будет потеряна. Подобную проблему вам придется решать, если вдруг захотите реализовать динамический потокобезопасный lock-free массив. Если несколько потоков рвануться добавлять в него элементы, то важно чтобы все они в итоге были добавлены.
Monitor.Enter, Monitor.Exit, lock
Такая особенность работы критической секции в c# накладывает одно интересное ограничение на работу оператора lock: внутри оператора lock нельзя использовать оператор await. Сначала это вызвало у меня удивление, ведь аналогичная конструкция try-finally Monitor.Enter/Exit компилируется. В чем же дело? Здесь необходимо еще раз внимательно перечитать прошлый абзац, а затем добавить к нему некоторые знания о принципе работы async/await: код после await совершенно не обязательно будет выполнен на том же потоке, что и код до await, это зависит от контекста синхронизации и наличия или отсутствия вызова ConfigureAwait. Из этого следует, что Monitor.Exit может выполниться на потоке отличном от Monitor.Enter, что приведет к выбросу SynchronizationLockException. Если не верите, то можете выполнить в консольном приложении следующий код: он сгенерирует SynchronizationLockException.
Примечательно, что в WinForms или WPF приложении этот код отработает корректно, если его вызвать из главного потока Т.к. там будет контекст синхронизации, который реализует возврат в UI-Thread после выполнения await. В любом случае не стоит играться с критической секцией в контексте кода, содержащего оператор await. В этих случаях лучше использовать примитивы синхронизации, что будут рассмотрены позднее.
SpinLock, SpinWait
Monitor.Wait, Monitor.Pulse[All]
Эту пару методов стоит рассматривать вместе. С их помощью, можно реализовывать различные Producer-Consumer сценарии.
Producer-Consumer — паттерн многопроцессного/многопоточного проектирования предполагающий наличие одного или нескольких потоков/процессов, производящих данные и один или несколько процессов/потоков эти данные обрабатывающие. Как правило использует общую коллекцию.
Оба эти метода могут быть вызваны лишь при наличии у вызывающего их потока в данный момент блокировки. Метод Wait отпустит блокировку и повиснет до тех пор, пока другой поток не вызовет Pulse.
Для демонстрации работы я написал небольшой пример:
(Использовал именно изображение, а не текст, чтобы наглядно показать порядок выполнения инструкций)
Разбор:Установил задержку в 100мс при старте второго потока, специально чтобы гарантировать, что его выполнение начнется позднее.
— T1:Line#2 поток стартует
— T1:Line#3 поток входит в критическую секцию
— T1:Line#6 поток засыпает
— T2:Line#3 поток стартует
— T2:Line#4 зависает в ожидании критической секции
— T1:Line#7 отпускает критическую секцию и зависает в ожидании выхода Pulse
— T2:Line#8 входит в критическую секцию
— T2:Line#11 оповещает T1 при помощи метода Pulse
— T2:Line#14 выходит из критической секции. До этих пор T1 не может продолжить выполнение.
— T1:Line#15 выходит из ожидания
— T1:Line#16 выходит из критической секции
В MSDN есть важная ремарка, касательно использования методов Pulse/Wait, а именно: Monitor не хранит информацию о состоянии, а значит, если вызов метода Pulse до вызова метода Wait может привести к дедлоку. Если такая ситуация возможна, то лучше использовать один из классов семейства ResetEvent.
ReaderWriterLockSlim
Это горячо любимый мною примитив синхронизации, представлен одноименным классом пространства имен System.Threading. Мне кажется, много программ стали бы работать лучше, используй их разработчики именно этот класс, вместо обычного lock.
Идея: много потоков может читать, лишь один писать. Как только поток заявляет о желании писать, новые чтения не могут быть начаты, а будут ожидать завершения записи. Так же есть понятие upgradeable-read-lock, который можно использовать если в процессе чтения понимаете, о необходимости что-то записать, такой lock будет преобразован в write-lock за одну атомарную операцию.
В пространстве имен System.Threading так же есть класс ReadWriteLock, но он крайне не рекомендован для новой разработки. Slim версия позволит избежать ряда случаев, приводящих к дедлокам, к тому же позволяет быстро захватить блокировку, т.к. поддерживает синхронизацию в режиме spin-wait перед уходом в режим ядра.
Если вы к моменту чтения этой статьи еще не знали про этот класс, то думаю сейчас вспомнили немало примеров из кода, написанного последнее время, где такой бы подход к блокировкам позволил программе работать эффективно.
Интерфейс класса ReaderWriterLockSlim прост и понятен, но его использование вряд ли можно назвать удобным:
Мне нравится оборачивать его использование в класс, что позволяет использовать его куда удобнее.
Идея: сделать методы Read/WriteLock что возвращают объект с методом Dispose, тогда это позволит использовать их в using и по количеству строчек это вряд ли будет отличаться от обычного lock.
Такой трюк позволит далее просто писать:
Семейство ResetEvent
К этому семейству я отношу классы ManualResetEvent, ManualResetEventSlim, AutoResetEvent.
Классы ManualResetEvent, его Slim версия и класс AutoResetEvent могут находится в двух состояниях:
— Взведенное (non-signaled), в этом состоянии все потоки, вызвавшие WaitOne, зависают, до перехода события в спущенное(signaled) состояние.
— Спущенное состояние(signaled), в этом состоянии отпускаются все потоки, зависшие на вызове WaitOne. Все новые вызовы WaitOne на событии в спущенном состоянии проходят условно-мгновенно.
Класс AutoResetEvent от класса ManualResetEvent отличает то, что он автоматически переходит во взведенное состояние, после того как отпустит ровно один поток. Если несколько потоков будут висеть в ожидании AutoResetEvent, то вызов Set отпустит лишь один произвольный, в отличии от ManualResetEvent. ManualResetEvent отпустит все потоки.
Рассмотрим пример работы AutoResetEvent:
В примере видно, что событие переходит во взведенное состояние(non-signaled) автоматически лишь отпустив поток, зависший на вызове WaitOne.
Класс ManualResetEvent, в отличии от ReaderWriterLock, не помечен как устаревший и не рекомендованный к использованию после появления своей Slim версии. Slim версию этого класса эффективно использовать для коротких ожиданий, т.к. оно происходит в режиме Spin-Wait, обычная версия подходит для долгих.
Кроме классов ManualResetEvent и AutoResetEvent также существует класс CountdownEvent. Этот класс удобен для реализации алгоритмов, где за частью, что удалось распараллелить, следует часть сведения результатов воедино. Такой подход известен как fork-join. Работе этого класса посвящена отличная статья, потому не буду здесь разбирать его подробно.
Vdevid lock что это такое
Согласно правилам ресурса 4pda перед написанием сообщения в теме необходимо ознакомиться с шапкой, FAQ, выполнить поиск по теме и лишь тогда, при отсутствии ответа на интересующий вопрос, задавать его в теме. Если Ваше сообщение удалено, значит на интересующий Вас вопрос есть ответ в шапке, теме, FAQ или вопрос является оффтопом для данной темы. Если Вам интересна причина удаления поста, то Вы можете обратиться к куратору темы в QMS, чтобы получить разъяснение по поводу удаления Вашего сообщения.
Пункты правил, которые нужно внимательно прочесть и выполнить перед написанием сообщения в теме:
4.1. Перед созданием новой темы или сообщения следует внимательно ознакомиться с принятыми в этом разделе правилами.
4.3. Не торопитесь создавать тему, сообщение. Весьма вероятно, что ваш вопрос обсуждался ранее, либо существует тема обсуждения вашего девайса. Не забудьте обратить внимание на подраздел «Важное» в соответствующем вашему вопросу разделе. Воспользуйтесь поиском. При этом последовательно совершите поиск по нескольким подходящим ключевым словам. Например, если ваш вопрос связан с использованием Bluetooth на Qtek S100, следует искать по словам «Bluetooth» и «Qtek».
4.4. Если вы нашли тему, которая соответствует вашей проблематике, не следует сразу же писать в ней сообщение. Возможно, ваша проблема уже обсуждалась, и решение найдено. Воспользуйтесь «версией для печати» и поиском по ключевым словам в ней. Непременно прочитайте шапку темы — в неё помещается полезная информация, специально для вас.
4.7.1. При ответе в существующую тему постарайтесь формулировать вопрос или ответ так, чтобы он был понятен остальным участникам форума. Избегайте флуда, философствований, лирических отступлений.
3.1. Прежде чем задать вопрос, прочтите FAQ по Устройству и по Прошивке (ссылка на FAQ размещается в шапке темы обсуждения прошивки устройства), если такой имеется. Если Вы не нашли ответа на свой вопрос в FAQ по вашему устройству, или же он отсутствует, то поищите похожие вопросы в общем FAQ по Android и только если ответа там нет спрашивайте. Пользователи, задающие вопросы, ответы на которые занесены в FAQ могут быть наказаны на усмотрение модератора (РО от 1 до 3 дней).