Метод соответствия определению вирусов в словаре

Обнаружение, основанное на сигнатурах.

Сигнату́ра ата́ки (вируса) — характерные признаки атаки или вируса, используемые для их обнаружения. Большинство современных антивирусов, сканеров уязвимостей и систем обнаружения вторжений (СОВ) используют «синтаксические» сигнатуры, взятые непосредственно из тела атаки (файла вируса или сетевого пакета, принадлежащего эксплойту). Также существуют сигнатуры, основанные на поведении или аномалиях — например, слишком агрессивное обращение к какому-либо сетевому порту на компьютере.

Это метод, когда антивирусная программа, просматривая файл, обращается к антивирусным базам, которые составлены производителем программы-антивируса. В случае соответствия какого либо участка кода просматриваемой программы известному коду (сигнатуре) вируса в базах, программа-антивирус может по запросу выполнить одно из следующих действий:

Удалить инфицированный файл.

Заблокировать доступ к инфицированному файлу.

Отправить файл в карантин (то есть сделать его недоступным для выполнения с целью недопущения дальнейшего распространения вируса).

Попытаться «вылечить» файл, удалив вирус из тела файла.

В случае невозможности лечения/удаления, выполнить эту процедуру при следующей перезагрузке операционной системы.

Для того, чтобы такая антивирусная программа успешно работала на протяжении долгого времени, в базу сигнатур вирусов нужно периодически загружать (обычно, через Интернет) данные о новых вирусах. Если бдительные и имеющие склонность к технике пользователи определят вирус по горячим следам, они могут послать зараженные файлы разработчикам антивирусной программы, а те затем добавляют информацию о новых вирусах в свои базы.

Антивирусные программы, созданные на основе метода соответствия определению вирусов в словаре, обычно просматривают файлы тогда, когда компьютерная система создаёт, открывает, закрывает или посылает файлы по электронной почте. Таким образом, вирусы можно обнаружить сразу же после занесения их в компьютер и до того, как они смогут причинить какой-либо вред. Надо отметить, что системный администратор может составить график для антивирусной программы, согласно которому могут просматриваться (сканироваться) все файлы на жёстком диске.

Хотя антивирусные программы, созданные на основе поиска соответствия определению вируса в словаре, при обычных обстоятельствах, могут достаточно эффективно препятствовать вспышкам заражения компьютеров, авторы вирусов стараются держаться на полшага впереди таких программ-антивирусов, создавая «олигоморфические», «полиморфические» и, самые новые, «метаморфические» вирусы, в которых некоторые части участки кода перезаписываются, модифицируются, шифруются или искажаются так, чтобы невозможно было обнаружить совпадение с определением в словаре вирусов.

Создание и распределение сигнатур

Сигнатуры антивирусов создаются в результате кропотливого анализа нескольких копий файла, принадлежащего одному вирусу. Сигнатура должна содержать только уникальные строки из этого файла, настолько характерные, чтобы гарантировать минимальную возможность ложного срабатывания — главный приоритет любой антивирусной компании.

Разработка сигнатур — ручной процесс, тяжело поддающийся автоматизации. Несмотря на массу исследований, посвящённых автоматической генерации сигнатур, нарастающий полиморфизм (и «метаморфизм») вирусов и атак делают синтактические сигнатуры бессмысленными. Антивирусные компании вынуждены выпускать большое количество сигнатур для всех вариантов одного и того же вируса, и если бы не закон Мура, ни один современный компьютер уже не смог бы закончить сканирование большого числа файлов с такой массой сигнатур в разумное время. Так, в марте 2006 года сканеру Norton Antivirus было известно около 72 131 вирусов, а база программы содержала порядка 400 000 сигнатур.

В нынешнем виде, базы сигнатур должны пополняться регулярно, так как большинство антивирусов не в состоянии обнаруживать новые вирусы самостоятельно. Любой владелец ПО, основанного на сигнатурах, обречён на регулярную зависимость от обновления сигнатур, что составляет основу бизнес-модели производителей антивирусов и СОВ.

Своевременная доставка новых сигнатур до пользователей также является серьёзной проблемой для производителей ПО. Современные вирусы и черви распространяются с такой скоростью, что к моменту выпуска сигнатуры и доставки её на компьютер пользователей, эпидемия уже может достигнуть своей высшей точки и охватить весь мир. По опубликованным данным, доставка сигнатуры занимает от 11 до 97 часов в зависимости от производителя, в то время как теоретически, вирус может захватить весь интернет меньше, чем за 30 секунд.

В большинстве ПО по безопасности база сигнатур является ядром продукта, наиболее трудоёмкой и ценной частью. Именно поэтому большинство вендоров предпочитает держать свои сигнатуры закрытыми — хотя и в этой области существует ряд открытого ПО (напр., ClamAV), а также исследования по обратной разработке закрытых сигнатур. Журнал Virus Bulletin [7] регулярно публиковал сигнатуры новых вирусов вплоть до 2000 года.


Недостатки и достоинства синтаксических сигнатур

Позволяют определять конкретную атаку с высокой точностью и малой долей ложных вызовов

Неспособны выявить какие-либо новые атаки

Беззащитны перед полиморфическими вирусами и изменёнными версиями той же атаки

Требуют регулярного и крайне оперативного обновления

Требуют кропотливого ручного анализа вирусов

Метод эвристического сканирования

Метод эвристического сканирования призван улучшить способность сканеров применять сигнатуры и распознавать модифицированные вирусы в тех случаях, когда сигнатура совпадает с телом неизвестной программы не на 100%. [8] Данная технология, однако, применяется в современных программах очень осторожно, так как может повысить количество ложных срабатываний.

Метод обнаружения странного поведения программ

Обнаружение аномалий — динамический метод работы антивирусов, хостовых и сетевых систем обнаружения вторжений. Программа, использующая этот метод, наблюдает определённые действия (работу программы/процесса, сетевой трафик, работу пользователя), следя за возможными необычными и подозрительными событиями или тенденциями.

Антивирусы, использующие метод обнаружения подозрительного поведения программ, не пытаются идентифицировать известные вирусы. Вместо этого они прослеживают поведение всех программ. Если программа пытается записать какие-то данные в исполняемый файл (exe-файл), программа-антивирус может пометить этот файл, предупредить пользователя и спросить, что следует сделать.


В отличие от метода соответствия определению вируса в словаре, метод подозрительного поведения даёт защиту от совершенно новых вирусов и сетевых атак, которых ещё нет ни в одной базе вирусов или атак. Однако программы, построенные на этом методе, могут выдавать также большое количество ошибочных предупреждений, что делает пользователя маловосприимчивым к предупреждениям. Если пользователь нажимает мышью на окно «Принять» («Accept») в каждом случае появления такого предупреждения, антивирусная программа не приносит никакой пользы. В последнее время эта проблема ещё более усугубилась, так как стало появляться всё больше невредоносных программ, модифицирующих другие exe-файлы, несмотря на существующую проблему ошибочных предупреждений.

Метод обнаружения при помощи эмуляции

Обнаружение, основанное на эмуляции — метод работы антивирусной программы, при котором подозрительный файл либо запускается в тщательно контролируемой среде, либо эмулируется его исполнение с целью выявления тех признаков вредоносного кода, которые появляются только во время исполнения программы.

Некоторые программы-антивирусы пытаются имитировать начало выполнения кода каждой новой вызываемой на исполнение программы перед тем как передать ей управление. Если программа использует самоизменяющийся код или проявляет себя как вирус (то есть немедленно начинает искать другие exe-файлы например), такая программа будет считаться вредоносной, способной заразить другие файлы. Однако этот метод тоже изобилует большим количеством ошибочных предупреждений.

Метод использования «песочницы»

Ещё один метод определения вирусов включает в себя использование «песочницы» (зачастую основанной на виртуальной машине). Песочница имитирует операционную систему и запускает исполняемый файл в этой имитируемой системе.

После исполнения программы, антивирусное программное обеспечение анализирует содержимое песочницы на присутствие каких либо изменений, которые можно квалифицировать как вирус. Из-за того, что быстродействие системы снижается и требуется достаточно продолжительное время для выполнения программы, антивирусные программы, построенные по этому методу, обычно используются только для сканирования по запросу пользователя. Следует отметить, что эффективность данных программ намного выше, чем у всех остальных, но и затраты на их работу также выше. Несомненно, эти программы представляют интерес для профессионалов, занимающихся вопросами компьютерной безопасности и восстановлением данных после несанкционированного доступа в компьютер пользователя или атак на сервер.

Метод «Белого списка»

Общая технология по борьбе с вредоносными программами — это «белый список». Вместо того, чтобы искать только известные вредоносные программы, эта технология предотвращает выполнение всех компьютерных кодов за исключением тех, которые были ранее обозначены системным администратором как безопасные.

Выбрав этот параметр отказа по умолчанию, можно избежать ограничений, характерных для обновления сигнатур вирусов. К тому же, те приложения на компьютере, которые системный администратор не хочет устанавливать, не выполняются, так как их нет в «белом списке». Так как у современных предприятий есть множество надежных приложений, ответственность за ограничения в использовании этой технологии возлагается на системных администраторов и соответствующим образом составленные ими «белые списки» надежных приложений. Работа антивирусных программ с такой технологией включает инструменты для автоматизации перечня и эксплуатации действий с «белым списком».


Технология эвристического анализа

Методы эвристического сканирования не обеспечивают какой-либо гарантированной защиты от новых, отсутствующих в сигнатурном наборе компьютерных вирусов, что обусловлено использованием в качестве объекта анализа сигнатур ранее известных вирусов, а в качестве правил эвристической верификации — знаний о механизме полиморфизма сигнатур. В то же время, этот метод поиска базируется на эмпирических предположениях, полностью исключить ложные срабатывания нельзя.

В ряде случаев эвристические методы оказываются чрезвычайно успешными, к примеру, в случае очень коротких программных частей в загрузочном секторе: если программа производит запись в сектор 1, дорожку 0, сторону 0, то это приводит к изменению раздела накопителя. Но кроме вспомогательной программы fdisk эта команда больше нигде не используется, и потому в случае ее неожиданного появления речь идёт о загрузочном вирусе.

В процессе эвристического анализа производится проверка эмулируемой программы анализатором кода. К примеру, программа инфицирована полиморфным вирусом, состоящим из зашифрованного тела и расшифровщика. Эмулятор кода эмулирует работу данного вируса по одной инструкции, после этого анализатор кода подсчитывает контрольную сумму и сверяет ее с той, которая хранится в базе. Эмуляция будет продолжаться до тех пор, пока необходимая для подсчета контрольной суммы часть вируса не будет расшифрована. Если сигнатура совпала — программа идентифицирована.


Другим распространённым методом эвристического анализа, применяемым большой группой антивирусов, является декомпиляция подозрительной программы и анализ её исходного кода. Исходный код подозрительного файла проходит сверку и сравнение с исходным кодом известных вирусов и образчиков вирусной активности. В случае, если определённый процент исходного кода идентичен коду известного вируса или вирусной активности, файл отмечается как подозрительный, о чем оповещается пользователь.

Недостатки эвристического сканирования

Чрезмерная подозрительность эвристического анализатора может вызывать ложные срабатывания при наличии в программе фрагментов кода, выполняющего действия и/или последовательности, в том числе и свойственные некоторым вирусам. В частности, распаковщик в файлах, запакованных PE-упаковщиком (Win)Upack вызывает ложные срабатывания целого ряда антивирусных средств, де-факто не признающих такой проблемы.

Наличие простых методик обмана эвристического анализатора. Как правило, прежде чем распространять вредоносную программу (вирус), ее разработчики исследуют существующие распространенные антивирусные продукты, различными методами избегая ее детектирование при эвристическом сканировании. К примеру, видоизменяя код, используя элементы, выполнение которых не поддерживается эмулятором кода данных антивирусов, используя шифрование части кода и др.

Несмотря на заявления и рекламные проспекты разработчиков антивирусных средств относительно совершенствования эвристических механизмов, эффективность эвристического сканирования на данный момент далека от ожидаемой. Независимые тесты компонентов эвристического анализа показывают, что уровень обнаружения новых вредоносных программ составляет не более чем 40-50 % от их числа.[1](англ.)

Даже при успешном определении, лечение неизвестного вируса практически всегда является невозможным. Как исключение, некоторыми продуктами возможно лечение однотипных и ряда полиморфных, шифрующихся вирусов, не имеющих постоянного вирусного тела, но использующих единую методику внедрения. В таком случае, для лечения десятков и сотен вирусов может существовать одна запись в вирусной базе, как это реализовано, к примеру, в антивирусе И. Данилова.

Важные замечания

Иногда приходится отключать антивирусную защиту при установке обновлений программ, таких, например, как Windows Service Packs. Антивирусная программа, работающая во время установки обновлений, может стать причиной неправильной установки модификаций или полной отмене установки модификаций. Перед обновлением Windows 98, Windows 98 SE или Windows ME на Windows XP лучше отключить защиту от вирусов, в противном случае процесс обновления может завершиться неудачей.

Некоторые антивирусные программы на самом деле являются шпионским ПО, которое под них маскируется. Лучше несколько раз проверить, что антивирусная программа, которую вы загружаете, действительно является таковой. Ещё лучше использовать ПО известных производителей и загружать дистрибутивы только с сайта разработчика.

Обучение пользователей может стать эффективным дополнением к антивирусному программному обеспечению. Простое обучение пользователей правилам безопасного использования компьютера (например не загружать и не запускать на выполнение неизвестные программы из Интернета) снизило бы вероятность распространения вирусов и избавило бы от надобности пользоваться многими антивирусными программами.

Пользователи компьютеров не должны всё время работать с правами администратора. Если бы они пользовались режимом доступа обычного пользователя, то некоторые разновидности вирусов не смогли бы распространяться (или, по крайней мере, ущерб от действия вирусов был бы меньше). Это одна из причин, по которым вирусы в Unix-подобных системах относительно редкое явление.

Метод обнаружения вирусов по поиску соответствия в словаре не всегда достаточен из-за продолжающегося создания всё новых вирусов, метод подозрительного поведения не работает достаточно хорошо из-за большого числа ошибочных решений о принадлежности к вирусам не заражённых программ.

Различные методы шифрования и упаковки вредоносных программ делают даже известные вирусы не обнаруживаемыми антивирусным программным обеспечением. Для обнаружения этих «замаскированных» вирусов требуется мощный механизм распаковки, который может дешифровать файлы перед их проверкой. Однако во многих антивирусных программах эта возможность отсутствует и, в связи с этим, часто невозможно обнаружить зашифрованные вирусы.

Некоторые антивирусные программы могут значительно понизить быстродействие. Пользователи могут запретить антивирусную защиту, чтобы предотвратить потерю быстродействия, в свою очередь, увеличивая риск заражения вирусами. Для максимальной защищённости антивирусное программное обеспечение должно быть подключено всегда, несмотря на потерю быстродействия. Некоторые антивирусные программы (как AVG for Windows) не очень сильно влияют на быстродействие.

Некоторые из продуктов для лучшего обнаружения используют несколько ядер для поиска и удаления вирусов и программ-шпионов. Например, в разработке NuWave Software используется одновременно пять ядер (три для поисков вирусов и два для поиска программ-шпионов).


Классификация антивирусов

Евгений Касперский в 1992 году использовал следующую классификацию антивирусов в зависимости от их принципа действия (определяющего функциональность)[1]:

Сканеры (устаревший вариант — «полифаги») — определяют наличие вируса по базе сигнатур, хранящей сигнатуры (или их контрольные суммы) вирусов. Их эффективность определяется актуальностью вирусной базы и наличием эвристического анализатора (см.: Эвристическое сканирование).

Ревизоры (класс, близкий к IDS) — запоминают состояние файловой системы, что делает в дальнейшем возможным анализ изменений.

Сторожа (мониторы) — отслеживают потенциально опасные операции, выдавая пользователю соответствующий запрос на разрешение/запрещение операции.

Вакцины — изменяют прививаемый файл таким образом, чтобы вирус, против которого делается прививка, уже считал файл заражённым. В современных (2007 год) условиях, когда количество возможных вирусов измеряется сотнями тысяч, этот подход неприменим.

Современные антивирусы сочетают все вышесказанные функции.

Антивирусы так же можно разделить на:

Продукты для домашних пользователей:

Собственно антивирусы;

Комбинированные продукты (например, к классическому антивирусу добавлен антиспам, файрвол, антируткит и т. д.);

Корпоративные продукты:

Серверные антивирусы;

Антивирусы на рабочих станциях («endpoint»).


Антивирусы на SIM, флэш-картах и USB устройствах

Выпускаемые сегодня мобильные телефоны обладают широким спектром интерфейсов и возможностями передачи данных. Потребителям следует тщательно изучить методы защиты прежде, чем подсоединять какие-либо небольшие устройства.

Такие методы защиты, как аппаратные, возможно, антивирусы на USB устройствах или на SIM, больше подойдут потребителям мобильных телефонов. Техническая оценка и обзор того, как установить антивирусную программу на сотовый мобильный телефон, должны рассматриваться, как процесс сканирования, который может повлиять на другие легальные приложения на этом телефоне.

Антивирусные программы на SIM с антивирусом, встроенном в зону памяти небольшой емкости, обеспечивают борьбу с вредоносным ПО/вирусами, защищая PIN и информацию пользователя телефона. Антивирусы на флэш-картах дают пользователю возможность обмениваться информацией и использовать эти продукты с различными аппаратными устройствами, а также отправлять эти данные на другие устройства, используя различные каналы связи.

Антивирусы, мобильные устройства и инновационные решения

В будущем возможно заражение мобильных телефонов вирусом. Все больше разработчиков этой области предлагают антивирусные программы для борьбы с вирусами и защиты мобильных телефонов. В мобильных устройствах есть следующие виды борьбы с вирусами:

ограничения процессора

ограничение памяти

определение и обновление сигнатур этих мобильных устройств


Архиваторы

Архиватор — программа, осуществляющая объединение нескольких файлов в один архив или серию архивов, для удобства переноса или хранения. Многие архиваторы используют сжатие без потерь для уменьшения размера архива.

Простейшие архиваторы просто последовательно объединяют содержимое файлов в архив. Кроме него, архив должен также содержать информацию об именах файлов и длине оригиналов для их восстановления. Большинство архиваторов также сохраняют метаданные файлов, предоставляемые операционной системой, такие, как время создания и права доступа.

Программа, создавая архив, обрабатывает как текстовые файлы,

Те́кстовый файл — разновидность файла, содержащая текстовые данные, как правило организованные в виде строк. Текстовый файл, как и прочие файлы, хранится в файловой системе.

Организация текстового файла

Текстовый файл представляет из себя последовательность символов (принадлежащих некому набору символов). Символы сгруппированы в строки (англ. lines, rows). В современных системах строки разделяются переводом строки, хотя в прошлом применялось хранение строк в виде записей постоянной или переменной длины.

Иногда конец текстового файла, особенно если в файловой системе не хранится информация о размере файла, также отмечается одним или более специальными знаками, известными как маркеры конца файла.


Преимущества и недостатки

Преимущества

Формат текстового файла крайне прост, и его можно изменять текстовым редактором — стандартной программой, присутствующей во всех ОС.

Текстовые файлы, особенно если речь идёт об однобайтных кодировках вроде ASCII, не подвержены многим проблемам, характерным для других форматов файлов. Так, для них не важна разница в порядке байтов или длине машинного слова на разных платформах.

Более того, если повреждение данных (англ.) случится в текстовом файле, в этом случае обычно легче восстановиться и продолжить обработку остального содержимого[источник не указан 135 дней]. Все стандартные системы управления версиями рассчитаны на текстовые файлы и с двоичными файлами могут работать только как с единым целым.

Недостатки

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

Некоторые операции с текстовыми файлами чрезвычайно неэффективны. Например, если в файле встретится число, машина должна будет перевести его в свой внутренний формат, вызвав (сравнительно) сложную процедуру конвертации числа. Чтобы перейти на 1000-ю строку, требуется считать 999 строк, идущих до неё. Сложно заменить одну строку другой, и т. д. Поэтому при работе с большими объёмами данных текстовые файлы применяют только как промежуточный формат, обеспечивающий интероперабельность.

так и бинарные файлы.


 

Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.

В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.

Первые всегда сжимаются в несколько раз (в зависимости от архиватора). Что же касается бинарных файлов, то здесь все зависит от их характера. Может быть сжато в десятки раз, но могут быть и случаи, когда сжатие почти не происходит. Сжатие данных обычно происходит значительно медленнее, чем обратная операция.

Характеристики архиваторов:

По степени сжатия

По скорости сжатия

Характеристики архиваторов — обратно зависимые величины. То есть, чем больше скорость сжатия, тем меньше степень сжатия, и наоборот.


Архив

Архив — файл, содержащий в себе информацию из одного или нескольких, иногда сжатых (без потерь), других файлов. Является результатом работы программы-архиватора.

Виды архивов

Схема совместного использования архиватора и компрессора

Файл, составленный из одного или нескольких файлов и метаданных. Создаются, например, программой tar. Иногда используются совместно с программами сжатия для получения архивов, обычно имеющих расширения типа «.tar.gz» или «.tar.lzma».

Файл, содержащий ровно один сжатый файл. Часто встречается в UNIX-подобных ОС: compress, gzip, bzip2, freeze, lzma. Используются самостоятельно или вместе с программами типа tar для получения архивов, обычно имеющих расширения типа «.tar.gz» или «.tar.bz2».

Некоторые архиваторы и форматы архивов объединяют эти две функции в произвольном порядке — например, 7z, ARJ, ZIP. В таких случаях, если сжатие производится после объединения, архив называется «непрерывным». Это позволяет уменьшить размер полученного архива, но затрудняет восстановление при повреждении данных.

Имея архив, можно получить исходный файл с помощью соответствующей программы распаковки (иногда объединённой с программой для создания архивов).

Сам архив может состоять из нескольких файлов для облегчения хранения и переноса большого количества данных при ограничениях на размер одной части — например, носителя данных, или сообщения e-mail. Такой архив называется многотомным.

К архиву может быть присоединён исполняемый код, который при выполнении распаковывает архив. Код может быть полнофункциональной программой распаковки этого формата архивов. Такой архив называется самораспаковывающимся (англ. self-extracting, иногда сокращённо «SFX»).

Данные в архиве могут быть зашифрованы каким-либо способом. При использовании универсальных архиваторов обычно используется просто шифрование с паролем. При последовательном использовании tar, gzip и GnuPG результирующий файл иногда имеет расширение .tar.gz.gpg.

Метаданные

Архив почти всегда содержит метаданные. Например:

Имена файлов (кроме некоторых программ сжатия одиночных файлов — например, gzip, где в качестве имени файла используется имя архива без расширения, добавленного такой программой)

Идентификаторы владельцев, групп, и т. п. файлов, и их прав

Размеры файлов

Даты изменения, создания файлов

Контрольные суммы файлов для проверки правильности распаковки

Размер и контрольные суммы архива

Избыточные данные для восстановления данных при повреждении

Цифровая подпись создателя архива.

Сжатие без потерь (англ. Lossless data compression) — метод сжатия информации, при использовании которого закодированная информация может быть восстановлена с точностью до бита. При этом оригинальные данные полностью восстанавливаются из сжатого состояния.

Этот тип сжатия принципиально отличается от сжатия данных с потерями. Для каждого из типов цифровой информации, как правило, существуют свои оптимальные алгоритмы сжатия без потерь.

Сжатие данных без потерь используется во многих приложениях. Например, оно используется в популярном файловом формате ZIP и Unix-утилите Gzip. Оно также используется как компонент в сжатии с потерями.

Сжатие без потерь используется, когда важна идентичность сжатых данных оригиналу. Обычный пример — исполняемые файлы и исходный код. Некоторые графические файловые форматы, такие как PNG или GIF, используют только сжатие без потерь; тогда как другие (TIFF, MNG) могут использовать сжатие как с потерями, так и без.

Техника сжатия без потерь

Из комбинаторики следует, что нет алгоритма сжатия без потерь, способного уменьшить хотя бы на байт любой файл. Впрочем, признак качества алгоритма сжатия не в этом — алгоритм должен эффективно работать на тех данных, на которые он рассчитан.

Многоцелевые алгоритмы сжатия отличаются тем, что способны уменьшать широкий диапазон данных — исполняемые файлы, файлы данных, тексты, графику и т. д., и применяются в архиваторах. Специализированные же алгоритмы рассчитаны на некоторый тип файлов (текст, графику, звук и т. д.), зато сжимают такие файлы намного сильнее. Например: архиваторы сжимают звук примерно на треть (в 1,5 раза), в то время как FLAC — в 2,5 раза. Большинство специализированных алгоритмов малопригодны для файлов «чужих» типов: так, звуковые данные плохо сжимаются алгоритмом, рассчитанным на тексты.

Большинство алгоритмов сжатия без потерь работают в две стадии:

на первой генерируется статистическая модель для входящих данных,

вторая отображает входящие данные в битовом представлении, используя модель для получения «вероятностных» (то есть часто встречаемых) данных, которые используются чаще, чем «невероятностные».

Статистические модели алгоритмов для текста (или текстовых бинарных данных, таких как исполняемые файлы) включают:

Преобразование Барроуза — Уилера (блочно-сортирующая преобработка, которая делает сжатие более эффективным)

LZ77 и LZ78 (используется DEFLATE)

LZW

Алгоритмы кодирования через генерирование битовых последовательностей:

Алгоритм Хаффмана (также используется DEFLATE)

Арифметическое кодирование

Сжатие данных с потерями — это метод сжатия данных, когда распакованный файл отличается от оригинального, но «достаточно близок» для того, чтобы быть полезным каким-то образом.

Этот тип компрессии часто используется в Интернете, особенно в потоковой передаче данных и телефонии. Эти методы часто называются кодеками в этом контексте. Альтернативой является сжатие без потерь.

Типы сжатия с потерями

Существуют две основных схемы сжатия с потерями:

В трансформирующих кодеках берутся фреймы изображений или звука, разрезаются на небольшие сегменты, трансформируются в новое базисное пространство и производится квантизация. Результат затем сжимается энтропийными методами.

В предсказывающих кодеках предыдущие и/или последующие данные используются для того, чтобы предсказать текущий фрейм изображения или звука. Ошибка между предсказанными данными и реальными вместе с добавочной информацией, необходимой для производства предсказания, затем квантизуется и кодируется.

В некоторых системах эти две техники комбинируются путём использования трансформирующих кодеков для сжатия ошибочных сигналов, сгенерированных на стадии предсказания.

Сжатие с потерями против сжатия без потерь

Преимущество методов сжатия с потерями над методами сжатия без потерь состоит в том, что первые существенно превосходят по степени сжатия, продолжая удовлетворять поставленным требованиям.

Методы сжатия с потерями часто используются для сжатия звука или изображений.

В таких случаях распакованный файл может очень сильно отличаться от оригинала на уровне сравнения «бит в бит», но практически неотличим для человеческого уха или глаза в большинстве практических применений.

Много методов фокусируются на особенностях строения органов чувств человека. Психоакустическая модель определяет то, как сильно звук может быть сжат без ухудшения воспринимаемого качества звука. Недостатки, причинённые сжатием с потерями, которые заметны для человеческого уха или глаза, известны как артефакты сжатия.

Звуковые данные, прошедшие сжатие с потерями, не принимаются судами как вещественные доказательства (и даже не берутся во внимание) по причине того, что информация, прошедшая сжатие, приобретает артефакты сжатия и теряет естественные шумы среды, из которой производилась запись. В связи с чем невозможно установить подлинная ли запись или синтезированная. Поэтому важные записи рекомендуется производить в формате ИКМ (PCM) или использовать плёночный диктофон.

Фотографии, записанные в формате JPEG, могут быть приняты судом (несмотря на то, что данные прошли сжатие с потерями). Но при этом должен быть предоставлен фотоаппарат, которым они сделаны, или соответствующая фототаблица цветопередачи.