Добрый день, уважаемые читатели.
В последнее время я еженедельно публикую рассчет сравнительного коэффициента ненадежности антивирусных сервисов (названного кратко "Коэффициент ненадежности антивирусов"). Как показало время, у многих читателей вызывает большой поток вопросов методика его рассчета и корректность исходных данных. В этой статье я дам математическое обоснование этого Коэффициента.
______________________________________________
Коэффициент ненадежности продукта (общее понятие).
Коэффициент ненадежности продукта означает процент отказов и вычисляется по формуле К = Sотк / S
где
S -общее количество находящихся в эксплуатации экземпляров продукта
Sотк - общее количество экземпляров продукта, вызвавших сбой в период эксплуатации
Коэффициенты ненадежности обычно используются внутри компании-производителя для оценки качества продукта. В случае публикации Коэффициентов ненадежности в открытых источниках потребители часто используют их для оценки степени риска при приобретении продукта. В последнее время для снижения Коэффициента ненадежности большинство производителей стало реализовывать различные сервисные программы, состоящие из бесплатного выполнения гарантийных обязательств, профилактических работ и образовательных программ. Пример 1
Широко известные компании по отзыву бракованных автомобилей на деле представляют собой профилактические работы по замене деталей, чей Коэффициент ненадежности превысил допустимые производителем нормы. Таким образом общий Коэффициент ненадежности автомобиля понижается.
Пример 2
Рассчет Коэффициента ненадежности карманных компьютеров по данным сервисной службы МакЦентр за 2000 год: http://www.hpc.ru/lib/arts/1140/ Коэффициент ненадежности антивируса.
Как известно, любой современный антивирус представляет из себя не только конечный программный продукт, работающий на компьютере пользователя, но и постоянные обновления антивирусных баз. Ни для кого также не является секретом, что ни один современный антивирус не может обеспечить 100% защиты от всех угроз, т.к. злоумышленник всегда имеет возможность до начала распространения созданной им вредоносной программы проверить ее любым коммерческим антивирусом, и, применяя различные методы обмана антивируса, добиться отсутствия детектирования. Более того, многие злоумышленники добиваются не только отсутствия детектирования, но и нейтрализуют сам программный продукт. Поэтому исследование деструктивных функций новых вирусов, в результате которого выпускаются обновления программного продукта, также является необходимой составной частью антивирусного сервиса. Если установленный у пользователя антивирус не смог обнаружить вредоносный код, но сам пользователь оказался достаточно подготовлен, чтобы заподозрить неладное и не запустить вредоносную программу, следует считать, что образовательная программа антивирусного сервиса (обучение в специализированных центрах, чтение специальной и просветительской литературы, аналитических материалов) защитила пользователя. В случае же заражения компьютера пользователь обращается за помощью в сервис клиентского обслуживания (технической поддержки) и публичные форумы производителя его антивируса. Если пользователю эту помощь оказывают, эта услуга считается частью работающего антивирусного сервиса. Если же пользователь не получает ожидаемой помощи, считается, что антивирусный сервис привел к сбою. Таким образом, можно собрать воедино все основные свойства современного антивирусного сервиса:- наличие образовательных программ
- программный продукт, установленный на компьютере пользователя, работающий в автоматическом режиме и предоставляющий доступ ко всем следующим компонентам сервиса:
- непрерывная работа антивирусной лаборатории, выпускающей обновления антивирусных баз
- непрерывная работа технического подразделения, выпускающего обновления программного продукта
- непрерывное функционирование сервиса технической поддержки
- наличие официальных интернет-форумов
Сбой антивирусного сервиса определяется по факту несрабатывания всех перечисленных компонентов, допущению заражения компьютера и невозможности вылечить его с помощью официальных специалистов антивирусной компании (в том числе - энтузиастов на официальном форуме).
Как посчитать Коэффициент ненадежности антивируса?
Истинный рассчет
Истинный рассчет заключается в использовании истинных значений S и Sотк. В этом случае рассчет свелся бы к простой формулеК(n) = Sотк(n)/ S(n)
где
S(n) -общее количество пользователей антивируса N
Sотк(n) - общее количество пользователей антивируса N, допустивших заражение и не вылечивших свой компьютер
Однако у нас нет возможности получить обе эти цифры. Потому что первая, S(n), складывается из количества проданных лицензий (которое является закрытой информацией антивирусной компании), количества пробных и "пиратских" установок (которые отсчитать невозможно). Вторую же цифру, Sотк(n), складываемую из количества обращений к независимым специалистам (security-форумы, вызов специалиста на дом или выезд к специалисту, обращение к знакомым) также взять неоткуда.
Почему статистика?
Что представляется собой статистика? Статистика - это набор данных по некоторой выборке, позволяющий вычислить приблизительные конечные значения одного или нескольких параметров измерений. Точность статистики зависит от качества и величины выборки. Пример 1
Некто имеет калькулятор, и умеет вычислять функцию f(x), и предлагает нам угадать, что за функция скрывается за этим названием. При правильно подобранном массиве значений {x}, который мы будем ему называть, мы можем нарисовать график этой функции и угадать ее значение в любой точке графика. Это называется аппроксимацией, и является одним из вариантов использования временнОй статистики.
Пример 2
Некто рассыпал на столе 100 красных и желтых пуговицы в случайном порядке, и предлагает нам за несколько попыток угадать, сколько на столе красных, а сколько желтых пуговиц. Нам известно, что эти пуговицы рассыпаны случайно, поэтому мы можем так же случайно взять со стола несколько пуговиц (например, с закрытыми глазами). Посчитав отдельно количества взятых со стола красных и желтых пуговиц, и соотнеся его к общему количеству пуговиц в ладони, мы узнаем процентное соотношение этих величин. Например, их оказалось 6 и 14. Следовательно, у нас в руке 20 пуговиц, причем 30% из них красные, а 70% - желтые. В результате мы можем предположить, что всего на столе рассыпано 30 красных пуговиц, и 70 - желтых.
Способ отбора и количество взятых в ладонь пуговиц характеризуют качество и величину выборки.
Рассмотрим статистику популярности антивирусов
P(n) = S(n)/ S
где
S - общее количество пользователей всех антивирусов
S(n) - общее количество пользователей антивируса N
P(n) - процентное отношение пользователей антивируса Nк общему количеству пользователей всех антивирусов
Эта статистика собирается различными способами. Чаще всего - опросами на различных сайтах. Наиболее точно отражает реальную картину популярности статистика, собранная полностью независимой от антивирусных компаний организацией, точно следующей распределению этой популярности по различным географическим, возрастным и социальным критериям. При корректно собранной статистике можно угадать значение P(n), не зная истинных значений Sи S(n):P'(n) = S'(n)/ S'
где
S' - количество опрошенных пользователей всех антивирусов
S'(n) - количество опрошенных пользователей антивируса N
P'(n) - процентное отношение опрошенных пользователей антивируса Nк количеству опрошенных пользователей всех антивирусов
В идеальном случае P(n) = P'(n).
Рассмотрим статистику обращений за помощью к независимым экспертам.
Пусть:
Sотк - общее количество обращений пользователей всех антивирусов, допустивших заражение и не вылечивших свой компьютер
Sотк(n) - количество пользователей антивируса N, допустивших заражение и не вылечивших свой компьютер
B(n) - процентное отношение пользователей антивируса N, допустивших заражение и не вылечивших свой компьютер, к общему количеству пользователей всех антивирусов, допустивших заражение и не вылечивших свой компьютер.
Тогда:
B(n) = Sотк(n) / Sотк
Естественно, нам не известны истинные значения Sотк(n) и Sотк. Однако если для выборки мы возьмем группу не знакомых друг с другом пользователей различных антивирусов, неудовлетворенных своими антивирусными сервисами, и по этой причине обратившихся к одному независимому эксперту, мы можем предположить, что эта выборка будет с достаточной степенью достоверности характеризовать значение B(n):B'(n) = Sотк'(n) / Sотк'
где
Sотк' - общее количество обращений пользователей всех антивирусовза помощью к одному независимому эксперту
Sотк'(n) - количество обращений пользователей антивируса Nза помощью к этому независимому эксперту
B'(n) - процентное отношение обратившихся за помощью одному независимому эксперту пользователей антивируса N к общему количеству обращений пользователей всех антивирусов за помощью этому независимому эксперту
В идеальном случаеB(n) = B'(n).
Сравнительный коэффициент ненадежности антивирусов
Как было сказано выше, для вычисления истинных значений Коэффициент ненадежности нам необходимо знать точное количество пользователей антивируса N и количество тех из них, кто допустил заражение компьютера, и не смог вылечить его с помощью антивирусного сервиса N. Однако мы можем попробовать построить сравнительный Коэффициент по формуле:K'(n) = Sотк'(n) / S'(n)
Развернем эту формулу:
Sотк'(n) = B'(n) * Sотк'
S'(n) = P'(n) * S'
Следовательно:
K'(n) = ( B'(n) * Sотк' ) / ( P'(n) * S' ) = ( B'(n) / P'(n) ) * ( Sотк' / S' )
Все значения в правой части формулы нам известны из двух статистик: популярности антивирусов и обращений к независимому специалисту. Следовательно, мы можем вычислить значение K'(n). В идеальном случае, если выборка обращений к независимому специалисту есть подмножество выборки, сделаной при подсчете популярности антивирусов, K'(n) = K(n).
Теперь, если мы хотим просто сравнить Коэффициенты ненадежности нескольких антивирусов, мы можем упростить формулуK'(n) = ( B'(n) / P'(n) ) * k
где
k = ( Sотк' / S' ) - общий множитель для всех участвующих в сравнении антивирусов. Следует учесть, что мы брали независимые величины S' и Sотк' (выборка Sотк' не является подмножеством выборки S'), следовательно получившийся у нас K'(n) никогда не будет равен K(n). Однако при качественном сравнении K'(n) с K'(m) этот множитель не играет роли, т.к. уничтожается дробью:
K'(n, m) = K'(n) / K'(m) = (( B'(n) / P'(n) ) * k) / ( ( B'(m) / P'(m) ) * k) = ( B'(n) / P'(n) ) / ( B'(m) / P'(m) )
Последняя выкладка приведена лишь для понимания того, почему при построении графиков Коэффициента ненадежности антивирусов был проигнорирован параметр k, и Коэффициент рассчитывался по упрощенной формуле:K'(n) = B'(n) / P'(n)
Этот K'(n) отличается от реального значения K(n) на величину погрешности (обусловленную возможной грубостью сбора статистик) и постоянную для всех антивирусов величину множителя k. Наличие множителя k на графике лишь растягивало бы бы его пропорционально по вертикали на каждой итерации, затруднив визуальное восприятие.
Нарастающий итог
Целью исследования было максимально быстро выяснить текущие значения K'(n) при недостатке выборки Sотк' и подозрениях в ее периодическом загрублении. Поэтому была принята модель подсчета B'(n) нарастающим итогом - т.е. каждая итерация рассчета вбирала в себя результаты предыдущей. Таким образом, по углу наклона графиков K'(n) предлагается судить о стремлении K'(n) к конечным значениям: чем более горизонтальным становится линия графика, тем более точным является значение K’(n). Подобный подход (аппроксимация) позволяет примерно в два раза сократить время, затрачиваемое на сбор и оценку статистики, получаемой достаточно малыми порциями.