Архив статей журнала
В статье рассматривается поиск ошибок помеченных данных в исходном коде программ, т.е. ошибок, вызванных небезопасным использованием данных, полученных из внешних источников, которые потенциально могут быть изменены злоумышленником. В качестве основы использовался межпроцедурный статический анализатор Svace. Анализатор осуществляет как поиск дефектов в программе, так и поиск подозрительных мест, в которых логика программы может быть нарушена. Целью является найти как можно больше ошибок при приемлемой скорости и низком уровне ложных срабатываний (<20–35%). Для поиска ошибок Svace с помощью компилятора строит низкоуровневое типизированное промежуточное представление, которое подается на вход основному анализатору SvEng. Анализатор строит граф вызовов, после чего выполняет анализ на основе резюме. При таком анализе функции обходятся в соответствии с графом вызовов, начиная с листьев. После анализа функции создается ее резюме, которое затем будет использовано для анализа инструкций вызова. Анализ имеет как высокую скорость, так и хорошую масштабируемость. Внутрипроцедурный анализ основан на символьном выполнении с объединением состояний в точках слияния путей. Для отсеивания несуществующих путей для некоторых детекторов может использоваться SMT-решатель. При этом SMT-решатель вызывается, только если есть подозрение на ошибку. Анализатор был расширен возможностью поиска дефектов, связанных с помеченными данными. Детекторы реализованы в виде плагинов по схеме источник-приемник. В качестве источников используются вызовы библиотечных функций, получающих данные извне программы, а также аргументы функции main. Приемниками являются обращение к массивам, использование переменных как шага или границы цикла, вызов функций, требующих проверенных аргументов. Реализованы детекторы, покрывающие большинство возможных типов уязвимостей, для непроверенных целых чисел и строк. Для оценки покрытия использовался проект Juliet. Уровень пропусков составил от 46.31% до 81.17% при незначительном количестве ложных срабатываний.
Современный дисплей пилота гражданского самолета основан на новой идеологии интерфейса и позволяет улучшить восприятие полетной информации из нескольких источников за счет ее объединения на одном многофункциональном дисплее. В работе рассматриваются вопросы реализации многооконной визуализации дисплея пилота при использовании OpenGL SC с аппаратным ускорением. Предложен алгоритм компоновки информации на дисплее, позволяющий применять только одно GPU устройство, доступное на борту самолета. Подробно изложен подход адаптации и модификации пакета Mesa с открытым программным кодом для получения сертифицируемого драйвера GPU. Особое внимание уделено технологии адаптации открытых кодов пакета к операционной системе реального времени и к требованиям к системам, критичным для безопасности. Реализация предложенного подхода предназначена для работы под управлением операционной системы реального времени JetOS в системах визуализации бортовых комплексов гражданской авиации. Описанная реализация многооконной визуализации предполагает в дальнейшем ее сертификацию для систем, критичных для безопасности.
Модель памяти языка программирования определяет семантику многопоточных программ, создаваемых на этом языке и оперирующих с разделяемой памятью. Наиболее известна модель последовательной согласованности, которая является слишком строгой, запрещая многие сценарии поведения, наблюдаемые при исполнении программ на современных процессорах. Попытки формально описать эти сценарии привели к возникновению так называемых слабых моделей памяти. В последние годы было предложено значительное количество слабых моделей памяти для различных языков программирования. Эти модели предлагают различные компромиссы относительно простоты/сложности рассуждений о поведении многопоточных программ и возможностей их оптимизации. Цель данной статьи заключается в обзоре существующих моделей памяти языков программирования и выработке общих рекомендаций по выбору/созданию модели памяти при создании/стандартизации языков программирования, а также при разработке компиляторов. Для данного обзора мы рассмотрели более 2000 статей, найденных по ключевым словам “Relaxed Memory Models”, “Weak Memory Models”, и “Weak Memory Consistency” поисковой системой Google Scholar. Используя разные критерии, мы сузили это множество до 40 статей, предлагающих и описывающих модели памяти языков программирования. Мы разделили эти модели на шесть классов и проанализировали их свойства и ограничения. В заключение мы показали, как дизайн языка программирования влияет на выбор модели памяти и обсудили возможные направления дальнейших исследований в этой области.
В статье описывается программная реализация быстрого алгоритма поиска распределенных рассеивателей для задачи построения скоростей смещений земной поверхности на базе платформы Apache Spark. Рассматривается полная схема расчета скоростей смещений методом постоянных рассеивателей (PS). Предложенный алгоритм интегрируется в схему после этапа совмещения с субпиксельной точностью стека изображений временной серии радарных снимков космического аппарата Sentinel-1. Поиск распределенных рассеивателей происходит независимо в окнах сдвига по всей площади снимка. Наличие последних определяется путем предположения о гомогенности пар выборок в окне, составленных из векторов комплексных значений пикселей в каждом из N изображений. Данное предположение вытекает из выполнимости критерия Колмогорова–Смирнова для каждой из пар. Для оценки значений фаз гомогенных пикселей решается задача максимизации. Показано, что предложенный алгоритм не является итерационным и может быть реализован в парадигме параллельных вычислений. Применяемая платформа Apache Spark позволила распределенно обрабатывать массивы стека радарных данных (от 60 изображений) в памяти на большом количестве физических узлов в сетевой среде. При этом, время поиска распределенных рассеивателей удалось снизить в среднем в 10 раз по сравнению с однопроцессорной реализацией алгоритма. Приведены сравнительные результаты тестирования вычислительной системы на демонстрационном кластере. Алгоритм реализован на языке программирования Python c подробным описанием объектов и методов алгоритма.
Разработан метод контроля и восстановления целостности данных в многомерных системах хранения. Предложенные конструкции контроля и восстановления целостности многомерных массивов данных основаны на агрегировании методов криптографии и помехоустойчивого кодирования. На основе представленных криптокодовых конструкций показана особенность комплексирования существующих методов, заключающаяся в повышении вероятности обеспечения целостности информации в условиях разрушающих воздействий злоумышленника и среды для многомерных систем хранения данных. Получены расчетные данные вероятности обнаружения и исправления возникающих в многомерных массивах данных ошибок, приводящих к нарушению их целостности, посредством разработанного метода.
Непрерывно-временные сети Петри (НВСП), где каждому переходу сети ставится в соответствие временной интервал его срабатывания, используются для моделирования сложных параллельных систем, критичных с точки зрения безопасности. В общем случае, пространство состояний НВСП бесконечно и несчетно и, следовательно, анализ их поведения довольно сложен. ‘Истинно параллельная’ семантика представляет поведение НВСП в виде набора действий, отношение причинной зависимости между которыми моделируется частичным порядком, а отношение параллелизма – отсутствием порядка. Такое представление является более приемлемым для изучения следующих свойств параллельных систем: отсутствие тупиков, ‘справедливость’ (fairness), максимальный параллелизм и т.д. В статье вводятся и исследуются семантики шага (множества параллельных действий) и частичного порядка (множества упорядоченных по причине и параллельных действий) в контексте НВСП, поведение которых определяется слабой временной стратегией (т.е. ход модельного времени не ограничен срабатыванием переходов сети) и устойчиво атомарной техникой сброса часов (т.е. при сбросе часов срабатывание переходов сети рассматривается как атомарное действие).
Предложены шесть методов бинаризации алгоритма стаи ласточек для решения задачи отбора признаков по методу обертки. Эффективность выбранных подмножеств признаков оценивается двумя классификаторами: нечетким классификатором и классификатором на основе k-ближайших соседей. При поиске оптимального подмножества признаков учитывались количество признаков и точность классификации. Разработанные алгоритмы протестированы на наборах данных из репозитория KEEL. Для статистической оценки методов бинаризации использовался двухфакторный дисперсионный анализ Фридмана для связных выборок. Лучшие способности к отбору признаков показал гибридный метод, основанный на методе модифицированных алгебраических операций и введенной нами операции MERGE. Лучшая точность классификации получена с использованием метода V-образной функции трансформации.
Здесь дается описание алгоритмов и программного обеспечения для двух новых методов решения полиномиальных уравнений, основанных на построении выпуклого многоугольника. Первый метод позволяет находить приближенные корни многочлена с помощью многоугольника Адамара. Второй метод позволяет находить ветви алгебраической кривой вблизи ее особой точки и вблизи бесконечности с помощью многоугольника Ньютона и строить эскизы вещественных алгебраических кривых на плоскости. Указаны соответствующие геометрии и алгоритмы компьютерной алгебры, которые позволяют анализировать любые сложные случаи.
За последние годы популярность языка Go значительно возросла. Вместе с тем в настоящее время для языка Go существуют только легковесные статические анализаторы. Мы восполнили этот пробел, адаптировав статический анализатор Svace для поиска ошибок в программах на языке Go. Нами был реализован межпроцедурный и межмодульный статический анализатор имеющий чувствительность к потоку и путям. Для оценки результатов использовалось 10 проектов с открытым исходным кодом. 16 оцениваемых детекторов выдали 6817 предупреждений с 76 срабатываний.
В работе строится вычислительно эффективная реализация алгоритма Брейди расчета быстрого преобразования Хафа (БПХ) на отечественном сопроцессоре СРСА, входящем в состав системы-на-кристалле 1890ВМ9Я “КОМДИВ128-М”. Показывается, что БПХ находит широкое применение в задачах анализа изображений, от зрительных систем беспилотного транспорта до вычислительной рентгеновской томографии. Приводится и анализируется с точки зрения низкоуровневой имплементации классическая рекурсивная реализация БПХ. Впервые рассматривается более эффективный нерекурсивный вариант алгоритма, для которого проводится анализ нагрузки на вычислители и память сопроцессора, а также экспериментальные замеры производительности. Показывается, что теоретически возможная производительность нерекурсивного алгоритма на СРСА составляет 800 Мопс, при этом максимально достижимая на практике производительность составила 470 Мопс, а максимальное полученное экспериментально значение оказалось 406 Мопс. При этом загрузка вычислителей сопроцессора достигла 18%. Таким образом, несмотря на относительно малое число арифметических операций в методе, использование сопроцессора оказывается целесообразным.
В 2020 пандемия коронавируса затронула миллиарды людей по всему свету и заставила пересмотреть отношение к системам здравоохранения и к методам, используемым в современной медицине. Ввиду высокой нагрузки на радиологов и врачей появилась необходимость автоматических систем выявления патологий на медицинских исследованиях. Множество работ, посвященных работе с КТ-снимками пациентов с Covid-19, предполагают внедрение в системы медицинской помощи. Но улучшение по “классическим” метрикам вроде mAP или IoU по всем исследованиям не всегда отображает улучшение модели с точки зрения врачей. В данной работе было предложено считать метрики, усредняя не по всем исследованиям, а по группам в зависимости от размера патологий, а также оценивать количество ложноположительных участков найденных вне легких, поскольку наличие таких участков очень негативно оценивается врачами. Так же был предложен метод, улучшающий сегментацию патологий легких и плеврального выпота, с учетом замечаний, которые были высказаны выше.
Статья посвящена исследованию возможности автоматического выявления информационных кампаний в условиях отсутствия априорных знаний о факте проведения, целях, затрагиваемых объектах и целевой аудитории. В статье предлагается общая модель информационной кампании, а также выделяются признаки проведения скрытых информационных кампаний. Модель подходит для описания информационных кампаний как в социальных медиа, так и в традиционных СМИ, в том числе за пределами сети Интернет. На основе описанных признаков предложен метод обнаружения информационных кампаний, позволяющий решать задачу в автоматическом режиме. Для подтверждения работоспособности метода было проведено экспериментальное исследование на данных, собранных из социальных медиа. Мы привлекли экспертов в смежных областях для разметки сообщений и создания тестового корпуса. С целью анализа сложности задачи мы оценили степень их согласия. Результаты анализа подтвердили первоначальную гипотезу, что даже для профессионалов, задача обнаружения скрытых информационных кампаний является нетривиальной. Тем не менее, используя метод голосования, мы построили тестовую коллекцию на которой провели исследование отдельных признаков, а также сравнения предложенного метода с отдельными ответами экспертов. Результат экспериментов подтвердил перспективность предложенного подхода к решению задачи обнаружения информационных кампаний.