- PVSM.RU - https://www.pvsm.ru -

Начался 8-й конкурс Underhanded C для программистов-хакеров

По условиям конкурса Underhanded C [1], исходный код программы должен быть читаемым, ясным, простым и совершенно невинным для постороннего взгляда. При этом программа выполняет некую вредоносную функцию, которая совершенно не очевидна при изучении исходного кода.

В этом году конкурсное задание основано на реальной проблеме контроля за ядерными вооружениями. Задание составлено совместно с некоммерческой организацией Nuclear Threat Initiative [2], которая борется с ядерным, химическим и биологическим оружием, отслеживая состояние ядерных программ во всех странах мира [3].

По правилам, программа должна обработать исходные данные и подделать результат обработки. Приз за победу — $1000.

Задание

Две страны, Народная Славная Демократическая Республика Элис (НСДРЭ) и Славная Демократическая Народная Республика Боба (СДНРБ), договорились о соглашении по ядерному разоружению. На практике договор предусматривает визит инспекторов в каждую страну для проверки наличия в боеголовках ядерных материалов, таких как плутоний, после чего боеголовки могут быть уничтожены.

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

Чтобы решить проблему, обе стороны договорились разработать детектор радиоактивных материалов с «информационным барьером», а именно — компьютерной программой, которая берёт результаты сканирования, определяет соответствие определённому шаблону и выдаёт ответ: только «да» или «нет».

Задача конкурсантов — написать функцию, которая сравнивает результаты тестовых измерений с эталонным шаблоном:

int match( double * test, double * reference, int bins, double threshold )

где test и reference — одномерные массивы шириной bins, которые соответствуют спектру гамма-излучения проверяемой боеголовки и эталонной боеголовки, соответственно.

Ваш детектор должен выдать результат "1" («да»), если два массива совпадают в существенной степени, или результат "0" («нет»), если два массива не совпадают. Для настройки чувствительности детектора используется параметр threshold.

Можно использовать любую формулу для проверки близости test[] и reference[]. Больше очков дадут за использование стандартных формул сравнения.

«Секретная» часть программы. Каким-то образом функция match() выдаёт результат "1" («да»), даже если ядерный материал в боеголовке отсутствует. Такой результат должен быть вызван некими специальными условиями, которые организует принимающая страна. При этом в остальном детектор работает нормально и выдаваёт "0" («нет»), если специальные условия отсутствуют, а результат test[] не соответствует reference[].


Конкурс стартовал 15 августа. Образцы программ принимают на адрес underhandedC@gmail.com до 15 ноября 2015 года. Результаты объявят в январе.

Автор: alizar

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/96171

Ссылки в тексте:

[1] Underhanded C: http://www.underhanded-c.org/

[2] Nuclear Threat Initiative: http://www.nti.org/

[3] во всех странах мира: http://www.nti.org/country-profiles/

[4] Источник: http://geektimes.ru/post/260332/