Еще раз к вопросу о банкоматах

в 8:30, , рубрики: atm, legacy, банки, банкомат, безопасность, ПО, Финансы в IT-индустрии, хабр или гиктаймс: вот в чем вопрос

Давеча safinaskar задал мне следующий вопрос в личной беседе:

Здравствуйте, видел вашу статью про банкоматы habrahabr.ru/post/217337. У меня вопрос: почему интерфейс всех банкоматов такой антиюзерфрендли, такой одинаковый и такой «жёсткий», в отличие от других автоматов (скажем, автоматов Qiwi)? Я имел дело с банкоматами Сбербанк, Росбанк и Мой банк (сейчас обанкротился).

Правильно ли я понимаю, что ПО для обычных автоматов (напр. Qiwi) — это самое обычное ПО, разрабатываемое также, как обычно разрабатывается ПО. Легко внести изменения в софт, пишется обычными инструментами под обычные ОС (напр. Windows), учитывается UX и иногда бывают баги.

А ПО для банкоматов пишется один раз и навсегда (в целях безопастности), безопастность ставится превыше UX. Так? И отсюда проблемы с UX?

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

Если я не ошибаюсь, банкомат сперва просит ввести пин, затем сумму и только потом проверяет пин на правильность. Почему так?

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

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

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

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

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

Я сам редко пользуюсь банкоматами, а банкоматами чужих банков не пользуюсь вовсе, поэтому сказать не могу. Но думаю, что это так. Скорее всего, наиболее распространены в России банкоматы фирмы Wincor, работающие по протоколам NDC/DDC с некоторыми Wincor-овскими расширениями. Поэтому поговорим про них.

Надо сказать, спецификации за 2013 год (последняя версия спецификации, которую я видел) не сильно отличаются от спецификаций за 2003 год. В основном устарели некоторые сомнительные возможности, появилась возможность внедрять HTML страницы на экраны. Впрочем, такая возможность у нас еще не поддержана, так что ничего про это не знаю, вполне сносные сценарии реализуются картинками. Не сказать, что прям так убого выглядит. И потом, неужели вам хочется видеть вездесущюю рекламу еще и в банкомате? Она там есть, конечно же, но хотя бы не такая настырная и, как правило, на главном экране, а не внутри сценария.

А ПО для банкоматов пишется один раз и навсегда (в целях безопастности), безопастность ставится превыше UX. Так? И отсюда проблемы с UX?

Нет, дело скорее в обратной совместимости и невозможности из-за этого кардинально изменить протокол общения с банкоматом. Кроме того, мне кажется, что банкомат поставляется вместе со своим ПО: новое ПО — новый банкомат. Так как банкомат — штука недешевая, то это тоже может тормозить изменения. Хотя надо признать, что новые возможности ПО, зачастую, пользовательского интерфейса не касаются и сценарий можно написать и для старый версий. Но есть другие соображения. Я видел банкоматы, срок службы CRT-дисплеев которых подходит к концу, и если там показывать картинку, то получится размытое пятно. Текстовый интерфейс лучше. Кроме того, возможно еще остались банкоматы, которые не умеют показывать картинки. Но об этом могут лучше рассказать железячники, я работаю только над хостовой частью.

Если я не ошибаюсь, банкомат сперва просит ввести пин, затем сумму и только потом проверяет пин на правильность. Почему так?

Потому что проверкой ПИН-а занимается хост. Банкомат не может выполнить эту операцию (вообще говоря, протоколы NDC/DDC имеют такую возможность, но надо помнить, что они зарождались в том момент, когда понятия «информационная безопасность» не существовало).

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

Для своих же карт лишний запрос может слишком замедлять обслуживание. Например, в сети банкоматов, обслуживаемых нашей системой, есть банкоматы, у которых в пике нагрузки транзакции идут каждые 2 минуты, с разных карточек, причем, как правило, одна транзакция на карточку. Замедлять сценарий вдвое ради того, чтобы предупредить человека, что ПИН неверный? Это еще и дополнительная нагрузка на хост — ведь по стандарту PCI DSS проверкой пинов должен заниматься отдельный железный сервер, а ПИН в любой случае будет проверятся еще раз при выполнении операции, согласно тому же PCI DSS.

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

Автор: Mingun

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js