Техника защиты компакт-дисков от копирования


Синхрогруппы, объединяющие битыmerging bits и DSV


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

Во-первых, объединяющие биты препятствуют возникновению конфликтных ситуаций, образующихся на стыке двух EFM-слов одно из которых оканчивается на единицу, а другое с этой самой единицы и начинается (см. рис. 1.110x042). Поскольку две единицы (каждая из которых соответствует переходу с пита (pit)'a в ленд (laend) или наоборот) должны быть разделены по меньшей мере двумя нулями, такая комбинация считается запрещенной, —– считывающее устройство попросту не заметит, что здесь что-то есть (протяженность одного питаpit'a/лендland'a намного меньше диаметра сфокусированного лазерного пятна и потому для уверенного распознавания его длину приходится увеличивать как минимум до 3T, подробнее см. рис. 1.12 0x02C). С другой стороны, если "хвост" одного из EFM-слов состоит из восьми подряд идущих нулей, а другое EMF-слово с тех же самых восьми нулей и начинается, то – на их стыке образуется цепочка из шестнадцати нулей, при чтении которой произойдет ошибка, т. к. по стандарту между двумя соседними единицами должно находиться не более одиннадцати нулей, в противном случае погрешность определения длины такой последовательности становится очень большой.  (Ввы не пробовали измерять ученической линейкой расстояние между Ленинградом и Москвой? —– попробуйте и тогда прочувствуете всю суть проблемы целиком). Короче говоря, объединяющие биты выбираются так, чтобы между двумя соседними единицами было не меньше трех, но и не больше одиннадцати нулей.

Рис. 1.11.унок 11 0х042 Объединяющие биты в действии

Во-вторых, объединяющие биты предотвращают возникновение ложных синхрогрупп в неположенном мете. Последовательность бит, образующий синхрогруппу (для справки это —– 100000000001000000000010) может встречаться только в заголовке фрейма и потому служит в качестве своеобразного индикатора его начала.
Когда читающая головка перемещается поперек спиральной дорожки в поисках заданного сектора, ей очевидно каким-то образом приходится выясняить в каком именно месте она находится в данный конкретный момент: в начале, середине фрейма или даже середине EFM-слова. Как это осуществляется? Считывающее устройство пропускает через себя поток цифровых данных до тех пор, пока ему не встретится очередная синхрогруппа. Ага! —– говорит "думательное" устройство CD-ROM привода, – теперь-то я точно знаю, что это действительно начало нового фрейма, а не что ни будь еще! Представляете, какая "каша" началась, если бы "паразитная" синхрогруппа случайно появилась бы в середине фрейма? А ведь ни будь объединяющих битов, то – такое происшествие происходило бы регулярно! Рассмотрим, например, следующие EFM-слова: 10000000000100 и 00000000100100. Если их "склеить" вместе, то образуется паразитная синхрогруппа 100000000001000000000010 (в тексте которая, как было указано ранее, может встречаться только в заголовке фреймаона выделена жирным шрифтом) плюс еще четыре бита 0100 [n2k39] и при попытке чтения такого фрейма произойдет крах. Объединяющие биты, связывающие такие EMF-слова, позволяют всего этого избежать.



Рис. 1.12. унок 12 0x2C Форма высокочастотного сигнала, образующегося при чтении последовательности питов (pits) и лендтов (lands) и его итерпретацияинтерпретация

В третьих… Посмотрите на рис. 1.12

0x02C, —– лазерный диск не имеет никакой иной разметки, кроме самой спиральной дорожки, состоящей из чередующихся питpit'ов и лендlend'ов, при быстрой смене которых возникает высокочастотный, так называемый HF (High Frequency) сигнал, схематически изображенный на графике (б). Этот сигнал имеет большое значение в удержании считывающей головки на спиральной дорожке, поскольку никакого другого способа отличить дорожку от междорожечных "междурядий" и нет. Другая сложность связана с отсутствием опорного сигнала, без которого считывающее устройство не может с уверенностью отличить темные участки поверхности от светлых.




Некоторые источники и в том числе FAQ ( Frequently Asked Questions, часто задаваемые вопросы) по CD-ROM утверждают, что "…если в фотодатчик попадает яркий свет (стандартом предусмотрено, что при полном отражении должно отражаться не менее 70 процентов света-, то "проигрыватель" понимает, что это ровное место на диске ("land"), а если в датчик попадает менее яркий свет, это означает, что в данном месте на диске находится углубление ("pit")". На самом деле, это довольно вольная интерпретация стандарта, который буквально горит следующее "The information contained in the HF signal is extracted in the form of the positions of the crossings of the HF signal with a decision level ID. This decision level ID is the level in the middle of the extreme values of I3" —– "Информация, заключенная в HF-сигнале извлекается в форме позиции, в которой происходит пересечения сигнала с пороговым уровнем ID. Пороговый уровень определяется как половина максимального значения I3 (I3 —– уровень сигнала, соответствующий максимальной частоте смены пи pitт'ов и лендlend'ов)". Величина в 70% взята совсем из другого раздела стандарта, описывающего какой должна быть амплитуда модуляции (Modulation amplitude) должна быть, но ничего не говорящий о том, как именно она модулируется! Как говориться, —– почувствуйте разницу!

А теперь представьте, что произойдет, если на каком-то участке спиральной дорожке окажется значительный избыток питовpit'ов по отношению к лендам,land'ам или наоборот. Вместо переменного высокочастотного сигнала, привод будет считывать постоянный ток высокого или низкого уровня, но в отсутствии опорного сигнала "думающему" устройству привода будет не так-то просто разобраться какой из них какой! Короче говоря, в пределах одного фрейма (сектора?) питpit'ов и лендlend'ов должно быть поровну.

Но за счет чего такое равенство достигается?! Не можем же мы в самом деле писать на диск строго упорядоченные последовательности! К тому же, даже беглого взгляда на таблицу кодировки EMF достаточно чтобы понять, что ноль явно доминирует над единицей и какие бы EMF-последовательности мы только ни записывали, —– "кворума" по единицам мы не наберем… Стоп! Ведь между двоичными битами и питамиpit'ами (лендамиlend'ами) нет прямого соответствия, и двоичный ноль может быть закодирован как питомpit'ом, так и лендlend'ом! Представим себе, что мы записываем на диск EMF-последовательность "10000000100000".


Несмотря на явный избыток двоичных нулей, этот EMF-код содержит приблизительно одинаковое количество питовpit'ов и лендlend'ов (см. рис. 1.13,0x043 a).



Рис. 1.13.унок 13 0х043 ДемостнацияДемонстрация вычисления DSV

Для более точного подсчета этого соотношения ввели специальную величину —– DSV (Digital Sum Value), которая вычисляется следующим образом: изначально DSV равно нулю, но каждый питpit увеличивает его на единицу, а каждый лендlend на единицу уменьшает. В частности, для EFM-последовательности "10000000100000" значение DSV равно двум (см. рис. 1.13, 0х043  а). Именно двум, а не "минус двум", т. к. нас интересует только модуль числа, но не его знак (действительно, если бы эта последовательность начиналась не с питpit'a, а с лендlend'a, то мы бы получили прямо противоположный результат —– восемь "+" и шесть "–").

По стандарту, значение DSV, вычисленное для целого фрейма (сектора?) (сектора) должно находится в интервале от 2 до 10, в противном случае, такой сектор будет читаться с трудом, если вообще будет читаться! А ведь далеко не все EFM-коды могут похвастаться невысоким значением DSV, —– взять, например, хотя бы "00010010000000", DSV которого равно 8. Да, эта величена формально удовлетворяет требованиям стандарта, но если таких последовательностей на диске наберется хотя бы с десяток, значение DSV катастрофически возрастет аж до восьмидесяти!!!

Снижения уровня DSV до предельного допустимого минимума —– это и есть третья задача, с которой справляются объединяющие биты. Как они это делают? Взгляните на рис. 1.13,  0x043.в)  —– где за одним EFM-словом, обладающим резко положительным DSV, следует другое EFM-слово с высоким DSV. На самом деле, как уже говорилось ранеевыше, DSV не имеет знака, точнее, действительный знак EFM-слова зависит не от самого этого слова, но от его контекста! Рассмотрим это на примере вырожденной последовательности: "…00000000…".


Поскольку, двоичный ноль соответствует отсутствию изменений в данном месте поверхности диска, то эта последовательность может быть закодирована как восьмью лендlend'ами, так и восемью питpit'ами. Теперь предположим, что мы записываем на диск два EFM-слова, оба каждый из которых имеют значительный избыток лендlend'ов. Можно ли превратить лендlend'ы второго слова в питpit'ы? Да, если хотя бы один из трех объединяющих битов будет равен единице. А единица, как известно, соответствует переходу из лендlend'a в питpit (ну или наоборот), в результате чего второе EFM-слово начнется с пит pit'a и его значение DSV станет резко отрицательным (то есть, попросту говоря она приобретет избыток питpit'ов над лендlend'ами). В результате, EFM-слово с резко положительным DSV будет в той или иной степени компенсировано EFM-словом с резко отрицательным DSV и их общее DSV окажется где-то в районе нуля, – (см. рис. 1.13) 0х043.

Зачем вам, прикладному программисту, знать все эти подробности физического кодирования? А затем, что требования, предъявляемые к объединяющим битам взаимно противоречивы и могут существовать крайне неблагоприятные EFM-последовательности с неустранимо высоким значением DSV. Одна из таких последовательностей и показана на рис. 1.01x024. Смотрите, на конце первого EFM-слова находится восемь нулей, а, поскольку более десяти подряд идущих нулей категорически недопустимо, первый или второй из объединяющих битов обязательно должен быть равен единице. Но в этом случае, следующее EFM-слово приобретает резко отрицательное значение DSV, которое никак не удается скомпенсировать, поскольку между вторым и третьим EFM-словами может присутствовать лишь однако одна-единственная комбинация объединяющих бит "000"., – а Все остальные Любые другие обречены на "провал", т. к. нарушают правило "не менее двух нулей между соседними единицами". В результате, третье EMF-слово также выходит с резко отрицательным DSV-значением и, если мы заполним этой последовательностью весь сектор целиком, его суммарное DSV окажется катастрофически отрицательным!



Рис. 1.14. унок 14 0x024 EFM-последовательность с катострофическикатастрофически низким DSV

Для предотвращения появления подобных последовательностей, все записываемые на диск данные предварительно скремблируются, т. е. преобразуются в псевдослучайную последовательность, близкую по своим характеристикам к "белому шуму". Соответственно, при чтении данных выполняется обратная операция. Однако, при желании скремблер легко обойти! Некоторые защиты от копирования именно так и поступают (см. разд. "Защиты, основанные на «слабых» секторах" главы 9).


Содержание раздела