Пользователь
0,0
рейтинг
27 февраля 2012 в 10:54

Технология Mobile-ID


Привет!
Я хочу рассказать о том, что такое Mobile-ID, и как использовать эту услугу в своём софте.

Предыстория


В последние 10 лет в Эстонии появилось много разных электронных няшек: ID карта, электронные выборы, электронная школа (e-kool), дигитальный рецепт (digiretsept), электронный билет на общественный транспорт, порталы для граждан, пациентов больниц, портал для подачи показаний электросчётчиков и оплаты счетов за электричество, и так далее и тому подобное.

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


Как это видит пользователь


Сначала давайте посмотрим, как выглядит аутентификация через Mobile-ID с точки зрения пользователя.

Первым делом вам нужно пойти к своему мобильному оператору и заключить соответствующий договор. Вам поменяют вашу обычную SIM-карту на волшебную, на которой будет бегать специальное приложение, умеющее обрабатывать SMS определённого типа. Всё, с данного момента вы являетесь счастливым пользователем услуги Mobile-ID, что обойдётся вам примерно в 1$ ежемесячно.

Теперь мы заходим на нужный портал, например, крупнейший банк в Эстонии www.swedbank.ee, вводим номер пользователя и номер телефона.

Картинка 1: вход в интернет-банк



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

Картинка 2: сверяем код



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

Картинка 3: вводим пароль



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

Картинка 4: попадаем в банк



Как это работает


Схема работы изображена на диаграмме ниже.
В системе три действующих лица:
  1. Пользователь, которому нужно авторизироваться на сайте
  2. Сайт (банк, интернет-магазин, гос. портал и т.д. — в общем, любой сайт)
  3. Сертификационный центр (sertifitseerimiskekus, SK) — некая организация, которой доверяет государство и телефонные провайдеры. У неё есть база данных всех пользователей Mobile-ID, их телефонные номера и личные коды (аналог российского ИНН).




Как это видит разработчик


Допустим, вы разработчик того сайта, который хочет позволить своим пользователям авторизироваться через Mobile-ID. Ну например, вы делаете свой интернет-магазин. Что вам нужно сделать — это обратиться к SK посредством веб-сервиса. Вызов веб-сервиса довольно муторный, там целая куча разных параметров. Если вы делаете свой сайт на Java, вам скорее всего придётся сгенерировать целую кучу классов по заданному WSDL, вызвать библиотеку AXIS и всё такое. Так вот (к чему я всё это пишу!), чтобы облегчить жизнь программерам, мы в нашей фирме выпустили специальную опен-сорсную библиотеку, которая позволяет использовать Mobile-ID буквально в две строчки.

Выглядит это так:
  MobileIDAuthenticator mid = new MobileIDAuthenticator("https://www.openxades.org:8443/");
  MobileIDSession session = mid.startLogin(phoneNumber);
  showMessage("Чувак, ты сейчас получишь SMS с кодом " + session.challenge + ". Нажми OK и введи пароль.");
  mid.waitForLogin(session);


Вот и всё. Три строчки. Вызвать startLogin, показать пользователю код (challenge), и вызвать waitForLogin. Если пользователь согласился, метод вернёт его данные (имя, фамилия, личный код). Если пользователь отказался или выключил телефон — вылетит соответствующее исключение.

Здесь можно поглазеть на полноценное Swing приложение HelloWorld, использующее Mobile-ID.

Чтобы использовать библиотеку MobileID в своём коде, достаточно включить следующую зависимость:
  <dependency org="com.codeborne" name="mobileid" rev="0.9.2"/>


Кстати, в Питоне использовать веб-сервисы Mobile-ID гораздо проще: здесь описано, как.

Итогошки


Помимо авторизации, Mobile-ID позволяет ставить дигитальную подпись. Например, подписывать документы, подтверждать денежные переводы в интернет-банке и т.п. Правда, для этого придётся запомнить второй пин-код (из 5 цифр).

Вообще у технологии Mobile-ID большое будущее. Уже строятся планы, например, о том, как в магазине оплачивать покупки через Mobile-ID. В этом видео идея обрисована в деталях.

Вот правда, не знаю, в каких странах, кроме Эстонии, есть такая штуковина. Вроде слышал, что в Литве есть, ну а в России, видимо, пока нет.

Такие дела.

Надеюсь, было интересно.

Андрей Солнцев @asolntsev
карма
90,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

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

  • +2
    Напоминает сервис E-Num, с которым работает WebMoney. Интересненько. Жалко, что это только в Эстонии.
    • 0
      В Латвии тоже такое есть :)
  • –1
    > Никаких паролей для каждого сайта, никаких карточек с кодами для интернет-банка!
    Ну да, конечно же не надо! Стырили телефон в поезде — бац, проснулся, а карточка уже пустая. Грамотно спроектированная система должна вести себя так, чтобы при краже чего-то одного (телефона, пароля, симки, ...) не было бы способа это использовать.
    • +1
      Вы забыли про PIN.
      • +1
        Мегафону достаточно ещё раз допустить утечку СМС, чтобы решить эту проблему.
  • 0
    Мне кажется что мои мама и бабушка к такому не готовы.
  • 0
    >Теперь мы заходим на нужный портал, например, крупнейший банк в Эстонии www.swedbank.ee, вводим номер пользователя и номер телефона.

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

    Из описания следует, что нужно ввести номер пользователя, номер телефона и пин. Не очень понятно, чем это удобней пары логин-пароль в том или ином виде.
    • 0
      Ну что вы, у системы «логин+пароль» уровень защиты недостаточно высок. Достаточно кому-то узнать ваш пароль, и каюк. Не знаю, где как, а в Эстонии уже давно все банки используют систему «логин+пароль+карточка с кучей паролей», и при логине банк просит тебя ввести, например, пароль номер 26 с твоей карточки.
      Ну и две новые возможности — ID-карточка и Mobile-ID.
      • 0
        >Ну что вы, у системы «логин+пароль» уровень защиты недостаточно высок.

        Речь шла об удобстве. По этому параметру логин-телефон-пин ничем не лучше чем логин-пароль-карточка. Ну то есть логиниться, вероятно, будет безопасней, но не удобней.

        >Достаточно кому-то узнать ваш пароль, и каюк.

        В случае mobile-id достаточно знать пин и иметь телефон (насколько я понял, номер не привязан) с волшебной симкой. То вся сложность для злоумышленника здесь состоит в получении этой волшебной симки?
        • 0
          1. Ну ясен пень, надёжность требует жертв.
          2. Да, ему придётся узнать ваш пин-код и завладеть телефоном. То есть это по-любому не ускользнёт от вашего внимания. Вы тут же сообщите о пропаже мобильному оператору, и номер заблокируют.
          Понятно, что на любую схему найдётся свой ловкач, но такая схема определённо добавляет злодеям проблем.
  • 0
    какой такой дигитальный? Есть растение Дигиталис — Наперстянка по-русски, такого слова дигитальный нет.
  • 0
    Всегда с удовольствием и белой завистью читаю статьи об информатизации в Эстонии и некоторых других странах — так держать!!!

    В Украине уже второй год добиваюсь (громко сказано, конечно, но написал два бумажных!!! письма и связывался с их администрацией электропочтой), чтобы местная энергопоставляющая компания дала возможность вводить показания счетчика через интернет — а воз и ныне там…
    • 0
      Я про Украину мало что знаю, так что не обижайтесь, если что.

      Летом я отдыхал в Крыму и не раз ужаснулся от того, как плохо организовано движение между послёками. По ужасным дорогам ездят ужасные маршрутки, в которые люди набиваются как селёдки, едут стоя. При том, что дороги горные и аварии часты — это чистой воды безумие! О безопасности пассажиров там никто не заботится, я уж не говорю о комфорте. Водилы сажают левых пассажиров, называют свои цены, никто их не контролирует.

      Я ещё тогда подумал: если в такой простой отрасли они не могут навести порядок, то что уж тут говорить об IT… :(
      • 0
        Везде есть свои примеры идиотизма… Но нужно менять менталитет — на примере российской РосЯмы или украинского Дорожного Контроля видно, что в граждан страны есть сила и желание что-то менять к лучшему, используя идиотское законодательство в свою же пользу.
        Возможно, наши дети доживут и до электронного правительства…
    • 0
      www.mega-billing.com попробуйте. или портмоне.ком.
      • 0
        Спасибо, но тут не оплата, а именно дача показаний для составления счета. Кроме того, на первом сайте моей компании нет.

        Но не взирая на мой пессимизм, буквально через две недели после последнего обращения в службу поддержки появилась желаемая возможность. Реализована, конечно, через одно место, но тем не менее функции свои выполняет. Надеюсь, что именно моя активная позиция подтолкнула руководство к реализации решения проблемы, хотя ответ лично мне не был отправлен.
        • 0
          у меня на свободное время, видимо зимой уже в планах написать софтинку которой можно подсунуть jpeg отсканированных квитанций — и чтобы пользователь мог указать где на квитанции есть текстовые поля, а туда бы вносились текущие показания счётчика + по формуле высчитывать результаты. с записью в лог/ домашнюю юухгалтерию или еще куда, дальше на печать, подписал, отнес в кассу, дал денег.
          скорее just for fun — я c# изучаю.

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