Патрик Гёлль - Магнитные карты и ПК
В подобном случае следует повторно проводить считывание до тех пор, пока контроль четности и по LRC пройдет успешно.
В частном случае стандартизованных магнитных карт (а также большого числа нестандартных магнитных носителей) обычно прибегают к защите с помощью LRC всех символов, начиная с флажка start и заканчивая флажком end включительно. Таким образом, LRC занимает место сразу после флажка end, то есть непосредственно перед нулями заполнения.
Вероятность того, что одна или несколько ошибок смогут ускользнуть от такого двойного контроля, крайне мала. Несмотря на это, как правило, используется дополнительный третий уровень защиты.
КОНТРОЛЬ С ПОМОЩЬЮ LUHN CHECKРассматриваемая чисто арифметическая обработка, применимая только к цифровым данным, существует в двух вариантах в зависимости от четного или нечетного числа цифр контролируемого числа.
Если число включает четное количество цифр, необходимо, прежде всего, умножить на два каждую цифру из нечетного ряда и вычесть из полученного результата 9, если он превышает или равен 10. Все цифры, обработанные таким образом, затем складываются, и к ним добавляются все цифры четного ряда.
Контролируемое число считается верным тогда и только тогда, когда окончательный результат кратен 10. В случае карт с нечетным количеством цифр поступают наоборот: удваиваются цифры четного ряда.
На практике довольствуются добавлением одной цифры или «ключа контроля» к цифрам, правильность которых должна быть гарантирована, — и это вне зависимости от количества содержащихся в числе цифр.
Естественно, эта цифра выбирается таким образом, чтобы проверялись все перечисленные выше правила. Можно доказать, что это всегда возможно и что рассматриваемая цифра единственна.
К примеру, защищенные таким каскадным способом тройного контроля цифры кредитной карточки, считываемые на дорожке ISO 2, вполне могут считаться защищенными от любого случайного сбоя. Между тем, они не носят никакого конфиденциального характера, поскольку полностью отпечатываются кассовым аппаратом на любом чеке и хранятся продавцом в качестве доказательства.
Только проверка подписи или, еще лучше, четырехзначного конфиденциального кода может считаться достаточным доказательством подлинности произведенной транзакции, хотя банки все чаще стараются на договорной основе перекладывать эту ответственность на плечи своих клиентов.
ПРИМЕРЫ КОДИРОВАННОЙ ИНФОРМАЦИИНесмотря на то что стандарты, фиксирующие содержимое различных дорожек (и особенно ISO 2), касаются, в основном, карт с финансовой направленностью, единообразие которых должно обеспечиваться на международном уровне, они, в конце концов, применяются и подавляющим большинством изготовителей самых разнообразных карт.
Для изготовителей это своего рода упрощение и залог надежности, а для нас — удача в том смысле, что нам проще будет раскрывать маленькие секреты карт, считыванием которых мы сейчас и займемся.
Банковские карты
Прежде всего, обратимся к изучению банковских карточек, которые выпускаются в строжайшем соответствии со стандартами, и дорожки ISO 2, поскольку она используется чаще других.
Примерное содержимое банковской карточки
Пример, приведенный выше, естественно, не взят с персональной банковской карточки автора, а составлен на базе выдуманного номера, широко используемого на табличках, указывающих на то, что в данном месте принимаются банковские карточки: 4970 1012 3456 7890. И хотя этот номер недействителен (ключ контроля намеренно неверен), его первые цифры совершенно правдивы. Они идентифицируют изготовителя карточки, а следующие принадлежат ее владельцу. Таким образом, номера MASTERCARD и EUROCARD начинаются с 5, a VISA — с 4.
Например, цифры 4970 встречаются в начале номеров карт VISA, выпущенных La Poste, а номера карт, выпущенных, скажем, Societe Generale, начинаются с 4973. За границей встречаются другие номера, например 4567.
Первое поле данных (между флажком и разделителем) содержит только номер карты в том виде, в котором он выдавлен. Второе поле начинается сразу после разделителя с четырех цифр, указывающих срок действия данной карты в соответствии с форматом ААММ (год, год, месяц, месяц). Мы выбрали 9912 (декабрь 1999) совершенно произвольно.
Группа из трех цифр (101), которая следует затем, встречается, похоже, на всех банковских карточках. Речь идет о «служебном коде» данного приложения. Стоящие далее нули заменяют более конфиденциальные данные, которые никогда не пропечатываются ни на чеках продавцов, ни на билетах. Здесь содержится в зашифрованном виде копия четырехзначного конфиденциального кода владельца карты. Аналогичный код используется и в банковских чип-картах.
Создается впечатление, что эти так называемые дискретизированные данные просто-напросто игнорируются в некоторых приложениях, которые, обрабатывая транзакции (пересылки), проводимые только с небольшими суммами, не контролируют конфиденциальный код (например, автоматы платы за проезд по скоростной дороге, автоматы в телефонных кабинках и т. д.). Естественно, это значительно упрощает операции, но может вызвать серьезные проблемы в случае привлечения к ответственности или опротестования.
На рис. 2.2 представлено содержимое дорожки ISO 2, подтверждающее то, о чем мы так легко догадались сами, и вносящее некоторые полезные уточнения.
Рис. 2.2. Стандартизованное содержимое дорожки ISO 2
Например, из него мы узнаем, что «чистые» данные дорожки ISO 2 составляют 37 цифровых символов (по 5 бит). Учитывая биты start, end и LRC, получаем максимум 40 символов, речь о которых шла при рассмотрении рис. 2.1.
Интересно также отметить, что номер карточки (PAN — Primary Account Number, первичный банковский счет) может содержать до 19 цифр, хотя мы больше привыкли к номерам из 16 цифр (а когда-то существовали номера только из 13 цифр).
На рис. 2.3 показано содержимое дорожки ISO 1. Оно кажется более сложным, поскольку является алфавитно-цифровым.
Кроме данных, на дорожке ISO 2 расположено только имя владельца карточки, выраженное 26 символами (более короткие имена дополняются пробелами, а слишком длинные рискуют быть урезанными).
Рис 2.3. Стандартизованное содержимое дорожки ISO 1
Перед номером карты стоит символ формата (FORMAT), который, как нам кажется, для банковских карточек всегда обозначается буквой В.
На дорожке ISO 1 может размешаться до 76 символов данных, что в сумме с тремя так называемыми символами окружения дает 79. Стандартизованное содержимое цифровой дорожки ISO 3 представлено исключительно для информации на рис. 2.4, так как эта дорожка, являясь чисто цифровой, практически никогда не используется. Два символа формата (в данном случае речь идет о двух дополнительных цифрах) стоят в начале номера карточки, в то время как поле, рассчитанное минимум на 49 цифр, зарезервировано для данных, носящих название рабочих и данных безопасности. Предполагаемое использование этой зоны могло бы в значительной степени усилить безопасность магнитных карт, но, возможно, это стоило бы дороже, чем решение проблем, связанных с подделками.
Рис. 2.4. Стандартизованное содержимое дорожки ISO 3
Карты для оплаты проезда по скоростным дорогам
Помимо французских кредитных карточек и карточек других стран, которые принимаются практически во всех кассах для оплаты за пользование дорогами, существуют и другие типы так называемых «специальных» карточек. Как правило, они принадлежат к разряду карточек с предварительной оплатой (а значит, одноразовых); такие проездные документы действительны для определенного числа поездок и могут иметь срок использования.
Пример содержимого карты для оплаты проезда
Выше приведено содержимое дорожки ISO 2 реальной карточки для оплаты за проезд по скоростной дороге, имеющей номер 0000203158, выдавленный на обратной стороне в зоне тиснения. По ней было осуществлено только три поездки из двадцати, запрограммированных при покупке. Можно отметить, что срок ее действия не ограничен.
На самом деле не составляет никакого труда опознать эти данные при рассмотрении карты, поскольку они пропечатаны на ней четко и ясно! Точная копия этих данных с аналогичной плотностью 75 bpi записана на дорожке ISO 3, плотность записи которой, как правило, составляет 210 bpi. Это — хороший пример нестандартной карты (кроме того, используемой для считывания и записи), а также пример приложения, использующего избыточность для устранения любой возможности потери части денег из-за сбоя в работе автомата оплаты за проезд или малейшего повреждения самой карточки.