Шрифт:
Защита с помощью LRC, применяемая к словам из любого числа битов, состоит в последовательном применении операции исключающего ИЛИ (XOR) ко всем словам, а затем в присоединении к ним результата такого вычисления в виде одного единственного слова.
Например, рассмотрим следующий блок данных (без бита четности, младший бит стоит в начале):
Определение LRC происходит по следующим этапам:
Защищенный блок данных будет тогда записан в следующем виде:
или, добавляя бит четности к каждому из составляющих его слову:
Предположим, что первое слово подвержено двойной ошибке. Это позволяет преодолеть контроль четности:
Вычислим LRC этого блока ошибочных данных (без учета входящих в него битов четности и LRC):
Вычисленный код LRC блока с ошибками (5) отличается от LRC, переданного в составе блока без ошибок (0), что индицирует наличие ошибки, не позволяя, однако, определить ее местоположение: LRC — механизм не исправления ошибок, а только их обнаружения.
В подобном случае следует повторно проводить считывание до тех пор, пока контроль четности и по LRC пройдет успешно.
В частном случае стандартизованных магнитных карт (а также большого числа нестандартных магнитных носителей) обычно прибегают к защите с помощью LRC всех символов, начиная с флажка start и заканчивая флажком end включительно. Таким образом, LRC занимает место сразу после флажка end, то есть непосредственно перед нулями заполнения.
Вероятность того, что одна или несколько ошибок смогут ускользнуть от такого двойного контроля, крайне мала. Несмотря на это, как правило, используется дополнительный третий уровень защиты.
Рассматриваемая чисто арифметическая обработка, применимая только к цифровым данным, существует в двух вариантах в зависимости от четного или нечетного числа цифр контролируемого числа.
Если число включает четное количество цифр, необходимо, прежде всего, умножить на два каждую цифру из нечетного ряда и вычесть из полученного результата 9, если он превышает или равен 10. Все цифры, обработанные таким образом, затем складываются, и к ним добавляются все цифры четного ряда.
Контролируемое число считается верным тогда и только тогда, когда окончательный результат кратен 10. В случае карт с нечетным количеством цифр поступают наоборот: удваиваются цифры четного ряда.
На практике довольствуются добавлением одной цифры или «ключа контроля» к цифрам, правильность которых должна быть гарантирована, — и это вне зависимости от количества содержащихся в числе цифр.
Естественно, эта цифра выбирается таким образом, чтобы проверялись все перечисленные выше правила. Можно доказать, что это всегда возможно и что рассматриваемая цифра единственна.
К примеру, защищенные таким каскадным способом тройного контроля цифры кредитной карточки, считываемые на дорожке ISO 2, вполне могут считаться защищенными от любого случайного сбоя. Между тем, они не носят никакого конфиденциального характера, поскольку полностью отпечатываются кассовым аппаратом на любом чеке и хранятся продавцом в качестве доказательства.
Только проверка подписи или, еще лучше, четырехзначного конфиденциального кода может считаться достаточным доказательством подлинности произведенной транзакции, хотя банки все чаще стараются на договорной основе перекладывать эту ответственность на плечи своих клиентов.
Несмотря на то что стандарты, фиксирующие содержимое различных дорожек (и особенно ISO 2), касаются, в основном, карт с финансовой направленностью, единообразие которых должно обеспечиваться на международном уровне, они, в конце концов, применяются и подавляющим большинством изготовителей самых разнообразных карт.
Для изготовителей это своего рода упрощение и залог надежности, а для нас — удача в том смысле, что нам проще будет раскрывать маленькие секреты карт, считыванием которых мы сейчас и займемся.
Банковские карты
Прежде всего, обратимся к изучению банковских карточек, которые выпускаются в строжайшем соответствии со стандартами, и дорожки ISO 2, поскольку она используется чаще других.
Примерное содержимое банковской карточки
Пример, приведенный выше, естественно, не взят с персональной банковской карточки автора, а составлен на базе выдуманного номера, широко используемого на табличках, указывающих на то, что в данном месте принимаются банковские карточки: 4970 1012 3456 7890. И хотя этот номер недействителен (ключ контроля намеренно неверен), его первые цифры совершенно правдивы. Они идентифицируют изготовителя карточки, а следующие принадлежат ее владельцу. Таким образом, номера MASTERCARD и EUROCARD начинаются с 5, a VISA — с 4.