Американскими учеными создана первая программа-паразит, от которой принципиально не существует защиты
31 августа 2001 года, 02:26 |
Текст: Иван Карташев
Идея распределенных вычислений пользуется в настоящее время достаточно большой популярностью. Множество людей добровольно участвует в проектах вроде SETI@Home, добровольно предоставляя вычислительные ресурсы своих компьютеров для решения самых разных задач от поиска разумной жизни в галактике до разработки медицинских препаратов индивидуального действия. Во всех этих случаях на компьютеры устанавливаются программы, запускающиеся в момент его простоев, то есть работающие как скринсейверы.
Однако ученым из Нотрдамского университета (США, штат Индиана) удалось создать программу, способную несанкционированно использовать вычислительные мощности чужих компьютеров во время выполнения ими своих основных задач. Программа при этом запускается на единственном компьютере, подключенном к Интернету, а для своей работы использует мощности удаленных серверов, причем, в отличие от вирусов и троянов, не проникая непосредственно в их память.
Для работы программа-паразит использует весьма оригинальный способ, основанный на методе защиты от ошибок, реализованном в протоколе TCP/IP. Как известно, для обнаружения ошибок в этом протоколом предусмотрена проверка контрольной суммы каждого пакета данных. Любой такой пакет завершается числом, значение которого однозначно зависит от его содержания. Получив данные, сервер сразу вычисляет их контрольную сумму, и если число в конце пакета совпадает с вычисленным значением, то сервер отвечает. В противном случае пакет считается неверным и игнорируется.
Исследователи из Нотрдамского университета решили использовать процессорные мощности, необходимые серверу для вычисления контрольной суммы в своих целях. Для этого они написали программу, преобразующую решаемую задачу в формат запроса к веб-серверу. При этом формируется сразу множество запросов, а возможные ответы, выбираемые случайным образом, записываются в виде контрольных сумм пакетов. При получении запроса сервер вычисляет контрольную сумму, и если она совпадает с записанной в пакете, отвечает на запрос. Правильная контрольная сумма при этом и является верным решением.
Естественно, что подобным образом нельзя решать сложные вычислительные задачи, не разбив их предварительно на несколько элементарных частей. При этом вычисления контрольных сумм отнимают у сервера не более одной тысячной доли процессорного времени и практически не сказываются на производительности. Впрочем, ученые подчеркивают, что создавали программу с чисто исследовательскими целями и стремились показать, что мощности всех без исключения серверов, в принципе, может использовать любой желающий - ведь программа-паразит использует не дыры в ПО, а особенности протокола TCP/IP. При этом надо иметь в виду, что отняв по одной тысячной мощности у нескольких тысяч серверов (а их, на самом деле, миллионы) можно получить в распоряжение весьма неплохие вычислительные ресурсы.