Спешу предупредить читателей: Данная статья написана только для ознакомления, и ни в коем случае не призывает заниматься подделкой проездных билетов, так как это противоречит статье 327 УК РФ. Автор не несет ответственности за любые неправомерные действия совершенные людьми с использованием информации из данной статьи.

Я обычная девушка, сравнительно недавно работающая в сфере ИТ, не имею знаний в хакинге и взломе. Но вдохновленная статьями на Хабре про взлом транспортных карт «Тройка» и «Подорожник» (которые уже не доступны, авторы Ammonia и antoo), я решила рассказать про свой собственный опыт взлома транспортных карт «Ситикарт», которые действуют в Нижнем Новгороде.



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

Я не разрабатывала специальные приложения, как делали это авторы упомянутых статей, а покажу, как доступными средствами можно легко взламывать транспортные карты. Методы взлома известны давно (лет 5-7 точно).

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

Но вернусь к взлому. Итак, обо всем по порядку.

Все описанные мною действия я проводила осенью прошлого года, но, насколько мне известно, все работает и сейчас.

Итак, у меня есть недорогой смартфон с NFC. Я в свое время покупала транспортные карты «Ситикард» (так получилось, что у меня их несколько – порой забывала карту то дома, то на работе и приходилось покупать новую).



Я скачала официальное приложение производителя карт Mifare NXP Taginfo и просканировала свою транспортную карту:



Оказалось, что карта основана на чипе Mifare Plus S, но что самое важное, работает она в режиме безопасности № 1. А это значит, что по сути это простая карта Mifare Classic, которая легко взламывается.

Я скачала в Google Play замечательное приложение Mifare Classic Tool и просканировала транспортную карту стандартными ключами:



Тут меня постигло разочарование – ни один из известных ключей не подошел. Соответственно, использовать взлом способом, как было описано в статье про «Подорожник», было не возможно.
«Постойте-ка» — подумала я, «но ведь можно попробовать способ, как описано в статье про взлом «Тройки».

Действительно, у «Ситикард» тоже есть приложение из Google Play, которое позволяет проверять баланс карты, а впоследствии прикрутили возможность и пополнять карту.


Я скачала и установила это приложение. Но теперь передо мной встала дилемма: ключи к карте зашиты или в самом приложении, или «прилетают» с сервера. Декомпиллировать Android-приложения достаточно просто, но я в этом не очень хорошо разбираюсь.

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

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

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

Дальше встал вопрос, что делать с полученным логом. Но непродолжительный поиск в Интернете привел к утилите под название crapto1gui. Ссылки приводить не будут, достаточно легко находится и так.

Скриншот утилиты привожу ниже (взято с одного из сайтов в интернете, так что данные там не реальные, которые мы использовали).


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

Затем я открыла все тоже приложение Mifare Classic Tool (MCT), вставила в приложение полученный ключ и на этот раз мне отобразилось содержимое 0-го и 8-го секторов.


В нулевом секторе в основном были одни нули, а вот в восьмом были какие-то данные, из чего я сделала вывод, что данные по транспортной карте хранятся в 8-м секторе (как и в карте «Тройке» — неужели один и тот же разработчик?), а полученный ключ оказался ключом B (у сектора два ключа A и B).

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

С помощью полученных ключей я попробовала прочитать содержимой другой транспортной карты. Оказалось, что ключ A совпадал, а ключ B – нет. Но с помощью упомянутой утилиты его тоже оказалось легко получить.

Дальше я принялась исследовать содержимое транспортной карты. 8-й сектор состоит из 4-х блоков по 16 байт. С помощью MCT стало понятно, что первый блок является т. н. Value-блоком. Первым делом пришла мысль, что в этом блоке и хранится баланс карты. С помощью MCT удалось его декодировать – он содержал число 2147483647. На баланс карты, будь он даже в копейках, это явно было не похоже.

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

Разбирать содержимое карты особого желания не было, ведь я хотела попробовать так называемую replay attack (это я уже потом узнала, как она правильно называется).

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


(картинка не моя — мне совсем не хотелось привлекать внимание)

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


(вот такой же брелок я использовала для записи в него транспортной карты)

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

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

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

Правда, почему-то поменять номер с помощью MCT не получилось. Но получилось это сделать с помощью ридера и все того же libnfc.

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

Итак, подводя итоги, можно сказать следующее: транспортные карты для оплаты проезда в Нижнем Новгороде так же легко взламываются, как и «Тройка» (Москва) и «Подорожник» (Санкт-Петербург).

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

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

Но ведь злоумышленники не такие сознательные, наверняка они пользуются подобной уязвимостью и наносят ущерб городскому транспорту. Мы же получаем регулярно растущие тарифы на проезд (может быть, в том числе из-за потерь по подделке транспортных карт). Кстати, залог за транспортную карту составляет 50 руб. А ведь точно такие же по безопасности карты Mifare Classic стоят 12,5 руб и ниже.

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

PS Данная история, конечно же, выдуманная. Все персонажи — вымышленные, все совпадения — случайны. Ну, вы поняли…
Поделиться с друзьями
-->

Комментарии (101)


  1. RediHi
    06.04.2017 11:19
    +3

    Хорошая статья, уязвимость действительно просто нубовая. Спасибо, что осветили её!


  1. NikiN
    06.04.2017 11:31

    Когда пишите про тестирование, вспоминайте статью про подделку проездных документов.


    1. Barafu
      06.04.2017 11:59

      Это которая? 327 не подходит, проездной не имеет признаков официального документа. 165 подходит, но ввиду 14.2 никто не будет связываться с отдельным зайцем. Вот если накрыть поточное производство левых билетов, тогда да.


      1. Pas
        06.04.2017 12:11

        Только суды различных глубинок думают по-своему: Как говорится в материалах дела, «билет, являющийся одним из оснований для осуществления проезда, является документом, свидетельствующим о заключении официального договора между пассажиром и компанией, осуществляющей перевозку». Таким образом, следует из постановления, билет — это официальный документ, подделка которого уголовно наказуема. Статья Шевцова о взломе проездной карты приравнивается к распространению информации о способах совершения уголовного преступления.
        Это касаемо поста про Тройку: https://vc.ru/n/habrahabr-troika-court


  1. jok40
    06.04.2017 11:31

    del


  1. heximal
    06.04.2017 12:25

    Надо же… я был уверен, что баланс не хранится на самой карте, а валидация, списания и зачисления производятся на каком-то сервере. это же логично.
    Что же получается, информация о балансе вообще нигде кроме как на карте не хранится?


    1. Pas
      06.04.2017 12:43

      На самом деле, онлайн валидация очень затратная штука. Тот же Сбербанк в лице почившей УЭК решил сделать онлайн-проездной в Подмосковье (Стрелка). Только им пришлось частично отказаться от затеи, так как покрытие связью территория не 100-процентная, да и там, где она формально есть, всё равно время от времени лагает.

      На самом деле, история карт с «хранимой стоимостью» не нова и обкатана в куче стран не только в роли проездных, но и в роли платёжных карт (Visa Cash, Mondex, тот же Сберкард, которого уже нет). Только использовать надо не уязвимые реализации с защитой транспортным ключём, а нормальные криптографические карты.


  1. MMik
    06.04.2017 12:25
    +12

    Цитируя klylex из позавчерашнего слитого поста, в котором НЛО, так же, как и вам, подарило инвайт автору:

    Хочет женщина программировать — программирует. Не хочет — не программирует.

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


    1. 532CDCCC1022
      07.04.2017 00:55

      Извините, это моя первая статья на Хабре (хотя читаю его сравнительно давно). Возможно, подсознательно хотела снисхождения и понимания, если вдруг статья вызовет негативную реакцию.


      1. PapaBubaDiop
        11.04.2017 11:23

        Извините, а Ваш ник это баланс карты или id?


  1. ildarz
    06.04.2017 12:53
    -1

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

    Ох уж эта уверенность, что обманул систему — значит, вокруг дураки. :) Тема-то вполне себе для Хабра, только уровень обсуждения вопроса совсем иной должен быть. Вы когда-нибудь в разработке подобного масштаба участвовали, причем не как рядовой винтик, а как человек, который деньгами распоряжается? Можете оценить, во сколько обойдутся работы по устранению уязвимости по сравнению с ущербом от пары(десяков/сотен) бесплатно ездящих гиков?


    1. redmanmale
      06.04.2017 13:00

      Т.е. чтобы решить проблемы уязвимости карт, стоит условно-бесплатно раздавать взломанные карты и/или мануалы по их взлому на улицах?
      Максимально увеличить ущерб от подобных косяков, чтобы производитель наконец исправил их, а что, это идея.


      1. ildarz
        06.04.2017 13:36

        Угу. Чтобы городу не наносился ущерб, надо нанести ему ещё больший ущерб. А в качестве финала сесть в колонию как безвинный борец с системой. :D Отличный пример мышления хакера-террориста с идеалистическими наклонностями.


        1. redmanmale
          06.04.2017 15:07

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

          Что-то вспомнилась статья про Тёмного рыцаря, в которой доказывается, что Джокер на самом деле герой, потому что своими поступками исправил ситуацию в городе.


        1. 532CDCCC1022
          07.04.2017 00:34

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

          Я писала выше, что не наносила ущерб системе, но что-то подсказывает, что не все бывают таким сознательными


          1. ildarz
            07.04.2017 10:40
            +1

            Это пользователи должны упрашивать исправлять косяки разработчиков?

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


            1. mickvav
              13.04.2017 15:12

              Если со временем в цене билета будет 10-20% наценки на массовую эксплуатацию уязвимостей — вполне себе повод для претензий.


      1. NINeOneone
        06.04.2017 15:16

        Кто сказал что уязвимость карт это проблема?

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


        1. old_bear
          06.04.2017 16:10
          +2

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


          1. NINeOneone
            06.04.2017 16:27

            Я объяснил своей «стройной системой» почему уже существующая, конкретная уязвимость не будет исправляться (какое-то время), но не берусь судить почему ее вообще допустили. Скорее всего это называется или халатность или коррупция, нужно это расследовать отдельно.


            1. bromium
              06.04.2017 23:12
              +1

              нужно это расследовать отдельно

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


            1. 532CDCCC1022
              07.04.2017 00:37

              ну уж нет, вы вначале стали объяснять, что это затратно, что бабули за это не хотят платить, а вам напомнили, что люди за это уже заплатили, и тут вы пошли на попятную


              1. NINeOneone
                07.04.2017 10:20

                >> а вам напомнили, что люди за это уже заплатили
                Я исхожу из того, что система сделана по ТЗ и принята заказчиком. Люди действительно заплатили за ЭТО, то есть за то, что сделано именно так.

                Было ли это в ТЗ и были ли отклонения от ТЗ (на которые вы намекаете) я не знаю. Есть факты — система работает уже несколько лет, откуда можно сделать вывод, что она принята заказчиком. Если она принята, значит работа выполнена, с нарушениями или нет, с неустойкой или нет, неважно. Но она принята, а значит речь об исправлении — отдельная тема.

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

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


                1. dro1d
                  13.04.2017 13:55
                  +1

                  Проблема тут в другом. Описанные в статье дыры известны уже лет 5. Но разрабатываются новые системы, в которых эти дыры до сих пор не учтены. Что это? Некомпетентность разработчиков или пофигизм? Хотя, закрыть эти дыры при разработке нового проекта не стоит больших денег.


                  1. NINeOneone
                    13.04.2017 14:56
                    +2

                    Как же мне объяснить свою мысль уже чтобы понятно было. Представьте, что вы пользуетесь зубной щеткой, который вас вполне устраивает. Зубная щетка выпадает изо рта при чистке не больше чем 1 раз из 1000. И остальных клиентов это тоже устраивает. Но вы так как сами работали на производстве щеток знаете, что за сущие копейки можно разработать щетку с крючком, из за которого щетка будет выпадать 1 раз из 1000 000. Но кроме вас (знающего) никто этим не интересуются, даже если знают что такие щетки теоретически возможны.
                    Почему? Потому что не видит никто проблемы, которая требует исправления. Ну не видит и все тут и пофиг им что иногда выпадает, это ни на что не влияет, погрешность. Вот если выпадала бы 100 раз из 1000, тогда это было бы проблемой, а так — все ок.
                    Вы профессионал — вы понимаете почему это плохо, у остальных — своя работа, когда такая доработка понадобится — они к вам обратятся. Дело не в компетентности заказчика, а в потребности, которой у него нет.


          1. M_AJ
            07.04.2017 08:13

            Точно так же можно задаться вопросом, почему карты поддерживающие нормальную защиту поддерживают и старый ущербный режим. Ответ на самом деле прост — еще живо оборудование поддерживающее только старый стандарт, стоит оно не дешево, и менять его только потому что сотня человек будет ездить бесплатно, просто не выгодно. А новые карты закупают, чтобы однажды, когда это оборудование отомрет естественным путем, начать наконец-то работать по более защищённому протоколу.


            1. bromium
              07.04.2017 10:42

              Да кто сказал, что надо менять оборудование? Там в основном программная, по сути, несущественная доработка.


              1. Zolg
                07.04.2017 10:49
                +1

                программная, по сути, несущественная доработка.

                Только если эта доработка, например, в контроллере считывателя карт, то весьма вероятно, что производитель предложит произвести модернизацию ПО контроллера методом замены онного в сборе. За полный прайс, естественно. Based on true story.


          1. Zolg
            07.04.2017 10:26
            +2

            Диванная аналитика такая диванная.

            Для нашей маленькой системки, технологически работающей с Mifare Classic, регулярно закупаем карты Mifare Plus и используем их в режиме совместимости. Просто потому что:
            а) Быстрее поставляют
            б) Стоят не дороже (а иногда и дешевле).

            Дешевле стоят китайские клоны, но с ними иногда возникают проблемы в самых неожиданных местах.


        1. bromium
          06.04.2017 23:10

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


          Вам уже указали на ошибку в рассуждениях. Бабули уже заплатили за нормальную криптографию (ну, не бабули, а пассажиры, бабулям, возможно, карты бесплатно выдаются), а по факту получили… crap (не мое название, утилита в статье так называется)


          1. 532CDCCC1022
            07.04.2017 00:30

            Если бы вы еще знали, сколько унижений пришлось испытать моей маме, чтобы получить льготную карту…


          1. NINeOneone
            07.04.2017 10:30

            >> Бабули уже заплатили за нормальную криптографию

            Из каких источников эта информация?
            1) Что вы считаете «нормальной» криптографией? Абсолютной безопасности нет, есть некоторые уровни, причем каждый следующий стоит сильно бОльших денег.
            2) Где вы вычитали что подразумевался иной уровень защиты? Кто сказал, что по ТЗ все было не так?

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


          1. Zolg
            07.04.2017 10:46

            Бабули уже заплатили за нормальную криптографию
            с чего вы взяли, что кто-либо уже заплатил за «нормальную криптографию»? С того, что карта Mifare Plus ?!?!? Да одинаково они с Classic стоят при равном объеме памяти.
            А помимо карт для работы системы нужна еще куча разного оборудования и софт (который тоже денег стоит).
            И 'нормальная криптография' в каких-то случаях затруднит атаки, но защищенной систему не сделает. У тройкй, например, ключи добыли другим способом, а далее совершенно безразлично какая там криптография.


    1. Pas
      06.04.2017 13:05
      +3

      Ну, когда Oyster в Лондоне или OpenCard в Праге ломанули, они как-то собрались с силами и пропатчили свои системы. Вроде как заменили Mifare Classic на Mifare Plus, а то и DesFire. И как-то не особо ворчали о паре десятков гиков, так как это в первую очередь репутационный факап. Причём это было ещё при царе Горохе.


      1. ildarz
        06.04.2017 13:33
        -1

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


        репутационный факап

        Опять же подумайте, какие и для кого могут быть негативные последствия от публикации статей на Хабре. :)


        1. Pas
          06.04.2017 15:46
          +1

          Как минимум, репутационные потери компании-интегратора, а так же бенефицианта системы, в случае Ситикард это Сбербанк. Хотя ему падать-то уже особо некуда…

          Сегодня на Хабре, завтра на других сайтах, вспомните историю Тройки. Хотя, конечно, масштабы разные.


          1. Zolg
            07.04.2017 10:57
            +1

            Тройке, между прочим, совершенно все равно, какая там криптография в карте. Ключи вытащены из приложения онлайн-пополнения карты телефоном с NFC.
            Можем поиграть с вами в игру — вы придумываете, как безопасно реализовать такой функционал (весьма полезный и гиковый), я вам объясняю, почему ваша идея либо снижает удобство пользования системы, либо не безопасна, либо очень дорога в реализации (либо и то и другое сразу).


            1. Pas
              07.04.2017 18:54
              -1

              Ну, будем честными, Mifare Plus не имеет никакой особо криптографии, обычные симметричные ключи, просто без коллизий, делающих возможным подбор методом перебора как на Mifare Classic. Это да.

              Что мешает использовать асимметричное шифрование, с каким-нибудь ECDSA/SHA256 для скорости (или, о боже, ГОСТ)? Выстроить модель PKI, cделать что-то a-la PayPass с одноразовыми сессионными ключами, просто без онлайна.


              1. Zolg
                07.04.2017 18:56

                за чей счет банкет?


                1. Pas
                  07.04.2017 19:04
                  -1

                  За счёт того же Сбербанка, что там светится. Тем более как раз им некуда девать свой УЭК с ГОСТами и прочей криптографией. Вон, Стрелку в Подмосковье на этой платформе как раз и запилили. Карточка стоит 80 рублей для пассажира. С внедрением Стрелки тоже были свои сложности, но вроде систему причесали.


                  1. Zolg
                    07.04.2017 19:22

                    Вы представляете разницу между «купить и допилить напильником готовое решение» и сделать свой велосипед?

                    ps:
                    Рано или поздно естественно (массовые) карточные технологии придут к асимметричной криптографии. Mastercard тот же свой M-chip пытается пропихнуть по многим фронтам. Но пока что это непаханное поле.

                    pps: о том, как работает стрелка в московских электричках я помолчу, ибо за мат забанят.


                    1. Pas
                      07.04.2017 19:43

                      Вы представляете разницу между «купить и допилить напильником готовое решение» и сделать свой велосипед?

                      Представляю не по наслышке. Поэтому вопрос в том, почему сразу нельзя было сделать нормально. Тем более с нуля, без поддержки legacy. Это как: «можно поставить СКУД подешевле на Em-Marine, а можно подороже на HID iClass». А потом кто-то удивляется, что кто-то вламывается по клонированному пропуску в офис и тырит ноутбуки на стоимость несоизмеримую со стоимостью СКУД на несколько порядков. Причем, заказчик может даже не подозревать о наличии более защищённых систем, ему просто ставят самое дешёвое решение по-умолчанию.

                      ps:
                      Рано или поздно естественно (массовые) карточные технологии придут к асимметричной криптографии. Mastercard тот же свой M-chip пытается пропихнуть по многим фронтам. Но пока что это непаханное поле.

                      Вроде как как раз из-за M-chip и завернули Сберовский УЭК/ПРО100 из НСПК. Лицензии, санкции, все дела.

                      pps: о том, как работает стрелка в московских электричках я помолчу, ибо за мат забанят.

                      С точки зрения рядового пассажира как раз одинаково, что Стрелка, что Тройка, что РЖДшная БСК. Только что «чисто» Стрелку надо «заряжать» в автомате через контактный чип почему-то, хотя в Стрелко-Тройке уже норм.


                      1. Zolg
                        07.04.2017 20:03

                        Почему сразу нельзя было сделать «нормально» кому ?!? NXP !?!
                        Или дептрансу НН? Дептранс наверняка купил готовую систему. Работающую с Mifare. И с точки зрения антифрода она их вполне устраивает: клонированием карт конкуренцию билетным кассам не составить (а если кто найдет способ, например добыв ключ имитовставки, то проблему решат старым добрым нетехническим методом закупка->следствие->суд->зона), а на одиночных гиков можно наплевать. Будут сильно мешать — допилить механизмы обнаружения и блокировки.

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


                      1. bromium
                        08.04.2017 12:03

                        А потом кто-то удивляется, что кто-то вламывается по клонированному пропуску в офис и тырит ноутбуки на стоимость несоизмеримую со стоимостью СКУД на несколько порядков. Причем, заказчик может даже не подозревать о наличии более защищённых систем, ему просто ставят самое дешёвое решение по-умолчанию.


                        Тут полностью согласен. То же самое, похоже, происходит и с транспортными системами.


                  1. bromium
                    08.04.2017 12:00

                    Вон, Стрелку в Подмосковье на этой платформе как раз и запилили


                    На какой этой? От УЭК там только название. Обычная Java card с эмуляцией Mifare Classic. Без всякого ГОСТа


              1. bromium
                08.04.2017 11:58

                Ну, будем честными, Mifare Plus не имеет никакой особо криптографии, обычные симметричные ключи, просто без коллизий, делающих возможным подбор методом перебора как на Mifare Classic.


                Ну, если для Вас AES-128 не криптография… Может расскажете, как тогда AES ломать?

                Да, и прямой брут-форс ключей даже с классиком не работает


        1. bromium
          06.04.2017 23:14
          +1

          А Вы знаете, как решается это проблема? Чем Вы отличаетесь от «хакера-идеалиста»? Только тем, что Вы «эффективный менеджер, который якобы умеет считать деньги и репутационные риски »?


        1. 532CDCCC1022
          07.04.2017 00:39
          +3

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


          1. NINeOneone
            07.04.2017 10:35
            +2

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

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


            1. bromium
              08.04.2017 12:09

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


              И Вы считаете, это нормально?


              1. NINeOneone
                10.04.2017 09:26

                Нет, не считаю. Но речь не обо мне.


                1. bromium
                  12.04.2017 19:42

                  тогда я не понимаю, зачем вы встаете на защиту ущербной «логики», которую сами же считаете ненормальной?

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


                  1. NINeOneone
                    13.04.2017 10:10
                    -1

                    Я не встаю на защиту «логики» — она в защите не нуждается. Я встаю на защиту любой стороны, относительно которой выносятся суждения ни на чем не основанные.

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

                    >> меня, например, не интересует извращенная логика коррумпированных или некомпетентных
                    Что значит не интересует? Вы можете ей пользоваться, или не пользоваться (можете еще как-то относиться к тем, кто ее использует) — нет никакого интересует/не интересует. Я тоже не пользуюсь логикой "@як, @як и в продакшн", но это не значит что такую возможность надо исключать и сразу винить разработчика.


    1. vagran
      06.04.2017 19:39
      +3

      Тут вопрос вопрос не в устранении, а в том как вообще допустили выпуск продукта, реализованного на таком позорном уровне.


      1. Pas
        07.04.2017 09:54
        +3

        Как раз это очень просто.
        1) Заранее «договорённый» разработчик с тендером задним числом
        2) Отсутствие технической экспертизы решения (см. пункт 1)
        3) Работает и ладно
        4) «Все так делают, чего нам-то париться»?
        5) Экономическое обоснование (стоимость железа и разработки)


        1. ildarz
          07.04.2017 11:21
          -1

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


          1. Pas
            07.04.2017 18:57
            +1

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


            1. ildarz
              07.04.2017 20:32

              Это "не так давно" случилось ещё до того, как регулярно поминаемая тут всуе Mifare Plus вообще в природе появилась.


              1. bromium
                08.04.2017 12:36

                01.11.2014г. Вводится в действие Транспортная карта.

                Протокол Mifare Classic был полностью подвергнут реверс инжинирингу в 2008 г. (за 6 лет до этого)

                MIFARE Plus was publicly announced in March 2008 with first samples in Q1 2009


                Оттуда же: MIFARE Plus is a replacement card for the MIFARE Classic. It provides an easy upgrade of existing infrastructures toward high security. Data management is identical to the MIFARE Classic; however, the security management requires the modification of the installed reader base (но installed base ведь нет при внедрении с нуля).

                Так что, нестыковочка у Вас в рассуждениях.


                1. ildarz
                  08.04.2017 18:09

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


                  1. bromium
                    09.04.2017 00:30

                    и где во фразе «Это „не так давно“ случилось ещё до того, как регулярно поминаемая тут всуе Mifare Plus вообще в природе появилась» предположение? звучит как самоуверенное утверждение.

                    Раньше много чего не было, и что теперь, всем продолжать топтаться на месте?


                    1. ildarz
                      10.04.2017 14:04

                      Если вы хотите что-то обсуждать — держите в голове весь контекст разговора, пожалуйста. Это, как правило, больше одной фразы.


                      и что теперь, всем продолжать топтаться на месте?

                      Вы лично можете не топтаться, сделать, например, у себя дома СКУД на самых современных технологиях и гордиться уровнем технического совершенства. А когда речь идет о трате денег другими людьми, у них неизбежно встаёт вопрос "а за чей счет банкет и что мы от этого выиграем". То самое экономическое обоснование, необходимость которого вы никак не хотите понять.


                      1. bromium
                        10.04.2017 14:49
                        -1

                        Ну понятно, логика Д'Артаньяна, плюс переход на личности, что, как известно, признак отсутствия аргументов, плюс приписывание оппоненту неких качеств, недостаток понимания и т. п.

                        Поэтому дискуссию с ildarz прекращаю: у человека явно недостаток компетенции в вопросе. А надуманные, но яростные аргументы в пользу «зачем покупать новый замок и перестать оставлять ключ под ковриком — ведь ущерба пока не было, да и за чей счет банкет» позволяют задуматься о некой ангажированности (может, представитель того самого нерадивого поставщика?)

                        А вот другим объясню: эксплуатируемая в статье уязвимость обнаружена задолго до внедрения системы (лет этак за 6). Закрыть ее достаточно просто — буквально парой APDU команд. Никаких особенных серьезных затрат это не несет, тем более для заказчика: заказчик мог просто это в требованиях прописать. Вряд ли поставщик прописывал в документации на поставку, что поставляет «дырявый» продукт.

                        Зато даже гипотетического экономического ущерба это позволит избежать. А способы получения экономического ущерба описаны в статье.И они вполне реальны и легкодоступны

                        Простой пример: вы согласны покупать коммерческий продукт (связанный с финансами), в составе которого непропатченный openssl с Heartbleed? А зачем, ведь "а за чей счет банкет и что мы от этого выиграем"?


    1. bromium
      06.04.2017 23:07
      +1

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

      Вообще, у NXP есть много интересных продуктов, которые и защищены хорошо, и обратную совместимость поддерживают. И еще они настоятельно просят не использовать Classic, рассылая регулярно бюллетени. Вдумайтесь: уязвимости скоро 10 лет. Но воз и ныне там. Наверное, какой-нибудь «эффективный менеджер» так и считает: авось никто не заметит, пара сотен гиков — хрен с ними, а «ненужные» затраты на доработку лучше себе в виде премии выписать


    1. 532CDCCC1022
      07.04.2017 00:41

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


    1. 532CDCCC1022
      07.04.2017 00:57

      почему вы приписываете мне то, чего я не говорила? а аргументированно можете сказать, в чем я не права?


      1. ildarz
        07.04.2017 11:09
        +1

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


        Вы считаете, что это уязвимость и её непременно должны исправить. Ок. Вот представьте себе, что вы каким-то чудом пробились на прием к лицу, принимающему решения "делать доработку/не делать доработку". Он вас спрашивает — а зачем? Вы готовы к подобному разговору? Что вы ему ответите? Попробуйте быть убедительной. :)


  1. Vovanys
    06.04.2017 13:04
    +1

    У вас раздвоение?) Или кто то из Ammonia или antoo шифруется?


    1. 532CDCCC1022
      07.04.2017 00:27
      +2

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


  1. KonstantinSpb
    06.04.2017 14:58
    +1

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


    1. 532CDCCC1022
      07.04.2017 00:45
      +1

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


      1. Pas
        07.04.2017 09:58
        +1

        Это как раз актуально. С автором поста про Тройку хотели «познакомиться и пообщаться» представители нескольких ведомств. Сами понимаете, что нормальному человеку такие «знакомства» ни к чему.



  1. NINeOneone
    06.04.2017 16:03

    >> порой забывала карту то дома, то на работе и приходилось покупать новую

    Хорошо шифруется «девушка». У нас тут как бы кроме карт, еще и жетоны в ходу. Более того, карт по сравнению с жетонами ничтожно мало.


    1. NINeOneone
      06.04.2017 16:22

      UPD.: коммент можно игнорировать. Оказывается, карты не только в метро используются (жетоны только в метро).


  1. vagran
    06.04.2017 19:44
    +2

    он содержал число 2147483647

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


    1. 532CDCCC1022
      07.04.2017 00:46

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


      1. TimsTims
        07.04.2017 09:29
        +2

        Однако ник у вас говорит об обратном)


        1. jok40
          07.04.2017 16:58

          Похож на MAC-адрес.


  1. Aingis
    06.04.2017 20:28

    Итак, подводя итоги, можно сказать следующее: транспортные карты для оплаты проезда в Нижнем Новгороде так же легко взламываются, как и «Тройка» (Москва) и «Подорожник» (Санкт-Петербург).

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


    Как минимум надо проверить, в какое время блокируется такой проездной в Нино. Без такой проверки кричать о «взламываемости» бессмысленно.


    1. bromium
      06.04.2017 23:37
      +1

      Не знаю, как в Нижнем, но за день по Тройке в Москве можно наездить на приличную сумму. Стоимость карты (50 руб.) отбивается после нескольких поездок. Заблокировали — выкидываешь карту, покупаешь новую. Почему Вы решили, что это лишено смысла (народ вон боярышником догоняется, а тут обмануть систему «сам Бог велел»)?

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

      Автор писала, что «на работу с работы» блокировки не было. Или я не так понял


      1. Aingis
        07.04.2017 11:19
        +1

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


  1. bromium
    06.04.2017 23:22

    Ничего нового в статье нет. Уязвимостям сто лет в обед, и о них не говорил разве только ленивый.

    Да, уязвимости, действительно, очень простые для воспроизведения. Хотя в данном случае много условий совпало. С Тройкой чуть попроще было.

    ps Хм… и ник не простой у девушки… но проверить не могу )


    1. 532CDCCC1022
      07.04.2017 00:50

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

      зы и да, у меня есть свой небольшой женский секретик )


  1. Snaiperrr
    07.04.2017 00:47

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


  1. Zolg
    07.04.2017 18:35
    -1

    Складывается ощущение, что все транспортные системы, где используются транспортные карты, небезопасны. Не хочу рассуждать, почему так происходит (эта тема не для Хабра), остается лишь задать вопрос: кто (какой город) следующий и когда ждать про это статью на Хабре?
    Что значит 'небезопасны'? Турникеты током бьются?
    Задача транспортной системы — перевозить пассажиров, удобно для них и в прибыль себе. А не быть неломаемым crackme.

    Безопасность защищенность от фрода это всегда компромисс между стоимостью владения, удобством использования и этой самой защищенностью.
    Мнение, что крутые криптографические алгоритмы сами по себе как-то увеличивают защищенность системы — на 100% дилетантское. Помимо крутости алгоритмов они должны быть еще правильно использованы. И это, увы, не всегда возможно. Причем зачастую причины кроются в удобстве и стоимости, а не в криворукости разработчиков.

    В случае карт вашего города с точки зрения защищенности от фрода при конкретной реализации системы безразлично используются ли карты Mifare Plus в уязвимом режиме совместимости, или в 'безопасном' нативном с блекдж AES'ом и CC EAL4. Ну то есть абсолютно безразлично: ну были бы карты в нативном Plus режиме, ну не смогли бы вы вытащить ключи атакой на криптоалгоритм, так вытащили бы (как в случае с Тройкой) из приложения пополнения баланса.
    Собственно многие исследователи изначально пошли бы вторым путем, ибо проще и не требует дополнительного оборудования. А ключи для записи в сектор через приложение в любом случае пролетают.

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


  1. bromium
    10.04.2017 15:03

    Что значит 'небезопасны'? Турникеты током бьются?

    Вы путаете safety и security. Видимо, автор имела ввиду второе, а Вы говорите про первое.

    Мнение, что крутые криптографические алгоритмы сами по себе как-то увеличивают защищенность системы — на 100% дилетантское. Помимо крутости алгоритмов они должны быть еще правильно использованы. И это, увы, не всегда возможно. Причем зачастую причины кроются в удобстве и стоимости, а не в криворукости разработчиков.


    Зачем эти пафосные гипотетические высказывания? Был бы уровень SL3 и простым сниффингом ничего бы не получилось сделать.

    так вытащили бы (как в случае с Тройкой) из приложения пополнения баланса.


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

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


    Снова неверно. Выше же писали, что плюсы даже дешевле классиков. И другие альтернативы есть.

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


    1. Zolg
      10.04.2017 16:00

      Зачем эти пафосные гипотетические высказывания?
      Увы, это совершенно будничная практическая правда жизни. Которую вы активно доказываете.

      Был бы уровень SL3 и простым сниффингом ничего бы не получилось сделать.
      Абсолютно верно, дыру в заборе Plus закроет. Но открытые ворота (в виде ключей в приложении) так и останутся открытыми. Вы действительно не понимаете, что защищенность системы состоит далеко не только из защищенности обмена с картой (и определяется самым слабым звеном) ?!?

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

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

      Использование правильной смарт-карточной
      И другие альтернативы есть.
      Так что и стэк есть, и поле пахано уже давно.
      Расскажите нам об этих картах. Серьезно. Очень интересно и полезно будет послушать.
      Только, пожалуйста, не о том, что теоретически наверное можно сделать, если захотеть (и наплевать на косты), а о том, что уже сделано и успешно внедряется т.е. о готовых, обкатанных рынком решениях.


  1. bromium
    10.04.2017 21:08

    Увы, это совершенно будничная практическая правда жизни. Которую вы активно доказываете.


    Чего-чего? Очередной «специалист», который за отсутствием аргументов на личности переходит? Вы тут всех дилетантами обозвали, ярлыков навешали, а сами рассуждаете о вещах, в которых не смыслите, кроме mchip ничего не знаете, видимо (а ведь " за МКАДом тоже есть жизнь"). об этом ниже

    Но открытые ворота (в виде ключей в приложении) так и останутся открытыми. Вы действительно не понимаете, что защищенность системы состоит далеко не только из защищенности обмена с картой (и определяется самым слабым звеном) ?!?


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

    Расскажите нам об этих картах. Серьезно. Очень интересно и полезно будет послушать


    Рассказываю: Mifare Plus (SL3) (желательно EV1), Mifare Desfire, даже Ultralight EV1, есть и другие варианты. Почитайте про то, как происходит аутентификация в картах, вы думаете, ключ плейнтекстом передается? Даже Mifare Classic не так уж и плох, просто из-за проприетарности ну и, наверное, из-за лени, в Android работа c классиком требует ключ плейнтекстом передавать. Но даже и тут есть варианты…

    И это готовые, обкатанные рынком решения. Лондонский Oyster для Вас обкатанное решение? С классиков ушли еще в 2011 г. А еще Сидней, Торонто, Ванкувер, Хельсинки, Мадрид… достаточно примеров? Если вы чего-то не знаете, то это не значит, что этого не существует.

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

    И у Новакард (Ситикард), кстати, приложение лучше сделано, чем московский «Мой проездной», не так просто ключ расковырять.


    1. Zolg
      11.04.2017 15:12

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

      Теоретически возможно сделать систему, в которой бы взаимно аутентифицировали друг друга карта и удаленный сервер, а вся остальная инфраструктура была эдаким TCP-удлинителем радиоканала. Mifare нечуствителен к таймингам (одна из фич EV1 как раз контроль таймингов, но пользоваться ей никто не заставляет), поэтому очень вероятно, что это бы работало. Это было бы годным хакерским (в самом хорошем смысле) решением.

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

      Примерно то же и в телефонах: authenticateFirst() и понеслась.

      Лондонский Oyster для Вас обкатанное решение?
      Понятия не имею, что и как сделано в лондонском Oyster. Беглое ознакомление с материалами в инете наталкивает на мысли о том, что там очень качественно сделана централизованная обработка данных о проходах: хитро обсчитываются составные поездки и есть личный кабинет, в котором помимо всего прочего видна история поездок с весьма небольшой задержкой. При такой оперативности централизованной обработки информации фактически не столь уж и критично на чем именно сделана карта: фрод оперативно ловится на сервере, сама карта ставится в блок-лист. Отличный вариант. Но дорогой.
      Официального приложения пополнения баланса карты с помощью телефонного NFC я не нашел (особо не искал). Бросите ссылку — попробую посмотреть, что внутри.

      И у Новакард (Ситикард), кстати, приложение лучше сделано, чем московский «Мой проездной», не так просто ключ расковырять.
      Чуть больше obscurity, увы, не добавляют security.
      Рано, или поздно все упрется в вызов authenticateFirst(), или даже authenticateSectorWithKeyA().
      Во втором случае ключ сразу передается плейнтекстом.
      В первом — там конечно keystore и все такое, но даже в самый аппаратный из keystor'ов ключ должен сначала попасть. И в setEntry() он будет передаваться во вполне себе извлекаемом виде (чаще всего — плейнтекстом).


      1. bromium
        12.04.2017 13:55

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


        При чем здесь хакерские решения? То, что Вы про ридер описываете, как раз устаревший подход (для лентяев). Откройте, наконец, для себя, что такое SAM-модуль. Все это «хакерство», как Вы называете, разработчиками чипов смарт-карт поддерживается из коробки. И Classic не исключение.

        Рано, или поздно все упрется в вызов authenticateFirst()

        не знаю про такую функцию в nfc api android. И сам google, похоже, тоже не знает.

        Чуть больше obscurity, увы, не добавляют security.


        конечно, нет. Но и ключи по base64 тупо не передаются. То есть возни на порядок больше, проще сниффернуть протокол и не заморачиваться.

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

        Вы же продолжаете спорить, что-то там придумывать, не зная принципов работы SAM-модулей. Ключи вообще неизвлекаемы и в открытом виде получить невозможно. На аппаратном уровне.


        1. bromium
          12.04.2017 14:01

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


          1. Zolg
            12.04.2017 19:16

            Можно сделать и так. Есть одно огорчающее обстоятельство: в системах, основанных на симметричных криптоалгоритмах (к коим относится Mifare), таких устройств будет ровно два: один конкретный терминал и одна конкретная карта. Захотите еще один терминал к этой карте — придется засветить ключ.


        1. Zolg
          12.04.2017 19:09
          -2

          Все это «хакерство», как Вы называете, разработчиками чипов смарт-карт поддерживается из коробки.
          «Хакерство» в смысле «не лишенное изящества недокументированное использование». Если на ваш взгляд этот функционал документирован — потрудитесь привести ссылку на любой whitepaper от NXP, описывающий реализацию (или хотя бы возможность реализации) Mifare-протокола over TCP/IP.

          Откройте, наконец, для себя, что такое SAM-модуль
          SAM модуль это немножко сильно про другое. Что в широком смысле, что в частном, NXP'шном: P5DF0xxx это как раз те чудесные приблуды к совместимым ридерам, в которые можно загрузить ключи, и не париться ни в прикладном приложении про работу с криптографией, ни про сохранность ключа при физическом похищении терминала.

          Ключи вообще неизвлекаемы и в открытом виде получить невозможно. На аппаратном уровне.
          Повторяю вам: можно сделать ключи неизвлекаемыми, можно. Для этого даже Mifare SAM не нужен: достаточно хранения AES ключей в аппаратном keystore, имеющемся на многих андроид телефонах. Если mifare sdk внутри реализован правильно (в чем лично у меня сомнений нет) то наружу ключи при этом высовываться никак не будут и можем считать, что они действительно неизвлекаемы (методами доступными подавляющему большинству исследователей). Только толку с этого ноль.
          Т.к. ключи эти должны в аппаратный keystore сначала как-то попасть.
          Их ведь не будут зашивать туда при производстве телефона. И врядли кто-то согласится ценной бандеролью отсылать телефон в дептранс на загрузку ключей.
          Увы, единственный реальный вариант — загрузить их туда тем самым приложением из плей-маркета, которое и будет дальше работать с картой.
          И вот в этот момент их и нужно перехватывать во всей их незащищенности.
          О чем собственно в предыдущем посте и написано.

          Рано, или поздно все упрется в вызов authenticateFirst()
          не знаю про такую функцию в nfc api android. И сам google, похоже, тоже не знает.
          Естественно не знает. Потому что ее там нет.
          Вы же вроде с SL3 работать хотели? А SL3 Android NFC API сам по себе не умеет. NXP'шный SDK нужен.
          SDK и дока по нему доступны после регистрации в NXP, как разработчика Mifare-based решений. Раньше процедура была простой формальностью, сейчас думаю тоже.
          Странно, что профессионал по смарт-картам и адепт SL3 об этом не в курсе.

          Для себя делаю вывод, что вы либо тролль, либо. В обоих случаях дискуссию поддерживать бесполезно.


          1. bromium
            12.04.2017 19:36
            +1

            Да нет, тролль — это Вы. Рассказал про SAM — побежали, поизучали быстренько, вернулись, начали про другое говорить.

            Я сразу писал — что Classic настолько проприетарен, что с ним все сложнее.

            Попытка меня развести на witepaper — вот это и есть троллинг 80 левела. Ведь спеки NXP под NDA, и их раскрытие — раскрытие NDA.

            Их ведь не будут зашивать туда при производстве телефона.


            Бгг. Ну что ж, продолжим ликбез. Про SAM я вас научил (в благодарность меня обозвали нелицеприятным образом, но этому я не удивлен — ведь признаться в своем невежестве мало кому хватает мужества), теперь идите учите, что такое eSE…

            Естественно не знает. Потому что ее там нет.


            Вот и я про то же, а мне в ответ радостно — «а что ж ты не знаешь, что ли, про NXP Mifare SDK». А я-то говорил про нативное апи.

            Мы делали реализацию как раз аутентификации по TCP/IP, нормальная карта умеет обмениваться данными с ридером, а ридеру все равно, какие команды выполнять — какие ему отправишь, те они и отправит на карту.

            Поэтому ваш тезис о невозможности не грузить в ридер ключи разбит в пух и прах. В android-приложении ключа нет, и даже в keystore его грузить не надо. Конечно, при условии, что это нормальная карточная технология. А Вы мне все про Mifare Classic твердите, вскрыть ключи для которого можно, не имея самого ключа.

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


            1. bromium
              12.04.2017 20:09
              +1

              Вообще, Zolg забавный товарищ. Попросил привести примеры крупных обкатанных проектов, где не используется Classic — привел. Нет, недостаточно, начал рассказывать, что все равно ключи плейнтекстом передаются.

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

              В общем, еще и троллем меня обозвал (стандартный прием троллей). Нет, тут я уже умываю руки. Бисера на всех не напасешься…


  1. PapaBubaDiop
    11.04.2017 11:34
    -1

    Раз в неделю black list пополняется номерами крякнутых карт и ваш трюк больше не сработает. Неделя — условный период, разный для разных городов.


    1. bromium
      12.04.2017 13:57

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


  1. KoToSveen
    13.04.2017 14:01

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


  1. mike_y_k
    13.04.2017 14:01

    По статье — зачёт. Классный первый блин :D.
    А по ситуации — корень сохранения status quo кандовая бюрократия в цепочке участников процесса.
    Между сигналом об уязвимости и исправлением ситуации путь лежит через множество кабинетов с множеством связанных с ними других кабинетов (разрешения/согласования) и без вмешательства кого-то на самом верху этой пирамиды (а оно им надо?) процесс будет идти вечно, демонстрируя занятость всех винтиков без всякого результата на выходе.
    Все вдруг забыли в какой стране живем?
    Ну только если левую карточку найдут у подозреваемого/обвиняемого по статье терроризм может и внесут исправление. Или кто-то из политиков решит поиграть в популистскую игру забота о благе народа с подачи PR консультанта.


  1. best_petrovich
    13.04.2017 14:01

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

    Удивляться стоит тому как вообще эти системы работают при тамошнем уровне бюрократического маразма.