В тво­ем кошель­ке навер­няка есть нес­коль­ко карт меж­дународ­ных пла­теж­ных сис­тем, таких как Visa или MasterCard. Задумы­вал­ся ли ты, какие алго­рит­мы исполь­зуют­ся в этих кар­тах? Нас­коль­ко пла­тежи безопас­ны? Мы рас­пла­чива­емся кар­тами каж­дый день, но зна­ем о них край­не мало. Еще боль­ше мифов соп­ровож­дает кар­точные пла­тежи. Что­бы понять, какие есть спо­собы похитить день­ги с кар­ты, нуж­но сна­чала понять, как про­исхо­дит опла­та. Давай раз­бирать­ся вмес­те.
 

Номер карты

Оп­лата по номеру кар­ты исто­ричес­ки — самая стар­шая. Рань­ше на кар­тах не было ничего, кро­ме это­го номера. Номер был «эмбосси­рован» — выдав­лен на кар­те. При опла­те кар­та «про­каты­валась» на спе­циаль­ном устрой­стве, что поз­воляло про­дав­цу быс­тро внес­ти номер в древ­нюю замену базы дан­ных, то есть отпе­чатать на лис­те бумаги.

В кон­це рабоче­го дня или недели эти дан­ные собира­лись и переда­вались в банк‑эквай­ер. Далее банк отправ­лял зап­росы на спи­сание этих денег у вла­дель­цев карт через бан­ки‑эми­тен­ты. Это было так дав­но, что нем­ного людей зна­ют, отку­да появил­ся трех­знач­ный код верифи­кации пла­тежей, записан­ный на обратной сто­роне кар­ты, так называ­емый CVV2/CVC2. До нас дош­ла информа­ция, что этот код исполь­зовал­ся ско­рее как кон­троль­ная сум­ма, нуж­ная, что­бы вла­делец кар­ты не ошиб­ся и кор­рек­тно ввел всю информа­цию при опла­те. Похоже на прав­ду, если учесть, нас­коль­ко корот­кий этот код.

Сей­час физичес­кая кар­та может и вов­се не учас­тво­вать в опла­те. Это называ­ется card not present и чаще все­го исполь­зует­ся при опла­те в интерне­те. Если номер кар­ты вво­дит­ся при опла­те в пла­теж­ном тер­минале, а это харак­терно для оте­лей, биз­несов, ведущих дела по телефо­ну, а так­же для боль­шинс­тва тер­миналов в США, такой под­тип пла­тежей называ­ется PAN Key Entry.

Мно­гие до сих пор счи­тают, что поле Cardholder name с лицевой сто­роны кар­ты нуж­но вво­дить кор­рек­тно и что оно про­веря­ется. Это не так — ни один банк не про­веря­ет это поле.

 

Магнитная полоса

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

На кар­тинке выше ты видишь при­мер записан­ной на кар­ту информа­ции. Чер­ные полос­ки — это еди­ницы, белые — нули. Сущес­тву­ют open source решения для декоди­рова­ния этих дан­ных — к при­меру, magstripe.

На самом деле по изоб­ражению вид­но, что на кар­те не одна, а целых две маг­нитные полосы раз­ной плот­ности (Track1 и Track2). Какие дан­ные содер­жатся на маг­нитной полосе?

  • Но­мер кар­ты, дата окон­чания дей­ствия, имя вла­дель­ца кар­ты — все, что физичес­ки отпе­чата­но на лицевой сто­роне кар­ты.
  • Сер­висный код — три циф­ры, которые помога­ют вза­имо­дей­ству­юще­му с кар­той устрой­ству (тер­минал или бан­комат) понять, какие фун­кции есть у кар­ты, а каких нет. Мож­но ли исполь­зовать эту кар­ту в бан­комате, осна­щена ли кар­та чипом.
  • Код верифи­кации (CVV, CVC, CID — тер­миноло­гия зависит от пла­теж­ной сис­темы) — код, ана­логич­ный тому, что написан на обратной сто­роне кар­ты. Он рас­счи­тыва­ется по алго­рит­му крип­тогра­фичес­кой чек‑сум­мы (MDK MAC) с помощью 128-бит­ного клю­ча от информа­ции, записан­ной на маг­нитной полосе. Исполь­зование вычис­ляемо­го CVV вмес­то слу­чай­ного помога­ет от атак, ког­да, нап­ример, зло­умыш­ленник под­меня­ет сер­висный код и пыта­ется убе­дить пла­теж­ный тер­минал, что кар­та не осна­щена чипом. Банк‑эми­тент получит дан­ные маг­нитной полосы, све­рит их, и кон­троль­ная сум­ма не сой­дет­ся с передан­ным зна­чени­ем в поле CVV. Свер­ки про­ходят в защищен­ном хра­нили­ще клю­чей — так называ­емом HSM (Hardware Secure Module).
 

Чип/EMV

На сме­ну маг­нитной полосе в девянос­тых приш­ли смарт‑кар­ты, для популя­риза­ции которых соз­дали кон­сорци­ум EMV (Europay, MasterCard, Visa). Прод­вига­емая кон­сорци­умом идея была прос­та: исполь­зуя осо­бен­ности смарт‑карт, сим­метрич­ную крип­тогра­фию и крип­тогра­фию с откры­тым клю­чом, решить все проб­лемы, свя­зан­ные с маг­нитной полосой. Опе­рации со смарт‑кар­той обес­печива­ют три сте­пени защиты:

  1. Аутен­тифика­ция кар­ты. Про­вер­ка пла­теж­ным тер­миналом того, что кар­та под­линная и дей­стви­тель­но была выпуще­на бан­ком N, а не была соз­дана зло­умыш­ленни­ками в домаш­них усло­виях.
  2. Ве­рифи­кация пла­тель­щика. Про­вер­ка того, что эта кар­та при­над­лежит покупа­телю, сто­яще­му перед пла­теж­ным тер­миналом.
  3. Ав­ториза­ция тран­закции. От кар­ты до бан­ка‑эми­тен­та путь дол­гий. Банк дол­жен убе­дить­ся, что дан­ные опе­рации ниг­де не были иска­жены зло­умыш­ленни­ками. Что сум­ма оста­лась неиз­менной, что дата опе­рации кор­рек­тная, что эта опе­рация уни­каль­на, а не была уже про­веде­на в прош­лом месяце.

Да­вай прой­дем­ся по исполь­зуемым методам.

 

Аутентификация карты

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

Все­го сущес­тву­ет три режима аутен­тифика­ции кар­ты:

  • SDA — static data authentication;
  • DDA — dynamic data authentication;
  • CDA — combined dynamic data authentication.

В пер­вом методе исполь­зовалось толь­ко одно ста­тичес­кое поле, хра­няще­еся на кар­те. Оно под­писыва­лось при­ват­ным клю­чом и про­веря­лось тер­миналом. Это было EMV-поле AIP (application interchange profile). Но кон­сорци­ум EMV быс­тро понял, что для популяр­ных в то вре­мя офлай­новых тер­миналов (они не выходи­ли в онлайн для свер­ки крип­тограм­мы) это­го было явно недос­таточ­но — любой мог кло­ниро­вать пуб­личный ключ и под­писан­ную ста­тичес­кую стро­ку, что­бы соз­дать под­делку.

Сле­дующий метод полагал­ся на динами­чес­кие дан­ные, при­ходя­щие от тер­минала. Тер­минал генери­рует поле UN — Unique Number, которое под­писыва­ется при­ват­ным клю­чом кар­ты. Энтро­пия это­го поля — 232, чего дос­таточ­но для защиты от пер­вой ата­ки.

Од­нако в 2009 году иссле­дова­тели из Кем­бридж­ско­го уни­вер­ситета пред­ста­вили работу, опи­сыва­ющую так называ­емую ата­ку PIN OK (PDF). Спе­циаль­ное устрой­ство, рас­полага­ющееся меж­ду кар­той и тер­миналом, совер­шало ата­ку «человек посере­дине» и под­меняло одно из полей, которые отправ­ляла кар­та. Эту под­мену нель­зя было обна­ружить на тер­минале с помощью опи­сан­ных выше методов. Для защиты от таких атак кон­сорци­ум EMV еще до наход­ки иссле­дова­телей пре­дус­мотрел новый механизм защиты — схе­му CDA. Во вре­мя нее тер­минал может про­верить целос­тность боль­шинс­тва полей, которые переда­ет кар­та и которые учас­тву­ют в фазе под наз­вани­ем «риск‑менед­жмент».

Оф­лай­новая аутен­тифика­ция соз­давалась в пер­вую оче­редь для защиты офлай­новых пла­тежей, ког­да тер­минал не под­клю­чен к интерне­ту пос­тоян­но. Имен­но поэто­му, если резуль­тат работы режимов DDA или CDA не закан­чива­ется успе­хом, в сов­ремен­ных тер­миналах, под­клю­чен­ных к интерне­ту, это не при­ведет к отка­зу тран­закции в 99% слу­чаев, так как банк‑эми­тент авто­ризу­ет ее с помощью крип­тограм­мы, как опи­сано ниже. Одна­ко некото­рые пла­теж­ные сис­темы рекомен­дуют обра­щать вни­мание на пос­тоян­ные неус­пешные аутен­тифика­ции, осо­бен­но если они про­исхо­дят в раз­ных тер­миналах.

 

Верификация плательщика

Есть два основных спо­соба верифи­кация пла­тель­щика: ПИН‑код и под­пись. На самом деле их нем­ного боль­ше — ПИН‑код может про­верять­ся в офлай­не (на самой кар­те) и онлайн. Он может быть зашиф­рован (с помощью сим­метрич­ного клю­ча 3DES) или переда­вать­ся в откры­том виде.

Еще воз­можен спо­соб верифи­кации NoCVM — то есть отсутс­твие верифи­кации. Хороший при­мер таких опе­раций — те, которые не пре­выша­ют лимиты 3000 руб­лей и не тре­буют вво­да ПИН‑кода. Их иног­да называ­ют Tap & Go.

Дру­гой спо­соб, который в зависи­мос­ти от пла­теж­ной сис­темы называ­ется CDCVM или On-Device CVM, дела­ет воз­можной верифи­кацию на мобиль­ном телефо­не вла­дель­ца кар­ты. Как ты уже догадал­ся, он исполь­зует­ся в Google Pay и Apple Pay.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

2 комментария

  1. Аватар

    salvo

    28.01.2021 в 16:26

    Какая-то дичь про cvv\cvc — никогда это не было контрольным кодом! При перевыпуске карты, номер карты не меняется, меняется дата валидности и CVC\CCV. Контрольная сумма уже зашита в номер карты, последняя цифра, если не ошибаюсь. На хабре была статья, где расшифровывалось все что содержится в номере карты: https://habr.com/ru/post/112269/

  2. Аватар

    ~Onionone

    30.01.2021 в 04:26

    буквально на той неделе думал об этом)))

Оставить мнение