C, PHP, VB, .NET

Дневникът на Филип Петров


* Разбиване на PIN код

Публикувано на 05 юни 2009 в раздел ОСУП.

Personal Identification Number (PIN) кодът е измислен като метод за автентикация през 1967г от Джон Шепърд-Барон. По-късно е стандартизиран по ISO 9564-1, където се дефинира, че PIN код трябва да бъде поредица от 4 до 12 цифри.

При ATM картите най-често се използва 4 цифрен PIN код. Така възможните комбинации са общо 10 000 – от 0000 до 9999. Повечето банкови системи дават право на до три грешни опита за въвеждане на PIN код, след което блокират картата. По този начин опитите за „налучкване“ са сведени до вероятност от 0.3%.

PIN кода на масово използваните ATM карти се „складира“ на магнитната лента. Той е криптиран с ключ, който се пази от банката, издала картата. Отделно от това преди криптирането на кода, той се превръща в шеснадесетичен формат (цифри от 0-9 и букви A-F). За декриптирането му по-късно се използва т.нар. „decimalization“ таблица, която превръща криптирания код от шестнадесетичен в десетичен (например като превърне A в 0, B в 1 и т.н.).

Когато поставите картата си в банкомат първоначално избирате сума, която искате да изтеглите. След това от вас се иска да въведете PIN код. След като въведете PIN кода си, той заедно с кодирания код на банковата карта се изпрачща към ATM Controller до т.нар. Hardware Security Module (HSM). Той дешифрира подадения низ, след което чрез decimalization таблицата той дешифрира шестнадесетичния код. Така полученото число се сверява с въведеното от клавиатурата на банкомата. След това се изпраща отговор до банкомата дали въведения код е верен или не. Трябва да се отбележи, че важен елемент в този модел на сигурност е, че практически никой не знае вашия PIN код – дори хората в самата банка, тъй като той се складира само и единствено на вашата банкова карта.

Първият сериозен пробив в сигурността на банкоматната система е открит през 2002г. Той е свързан с широко използвани и до днес HSM системи на IBM. Пробивът в сигурността се осъществява от вътрешен за банката човек, който има достъп до ATM контролера. Той подменя „decimalization“ таблицата, която се подава към HSM контролера и по този начин значително намалява броя нужни опити за налучкване на PIN код. Този метод повишава вероятността за налучкване на PIN код до 6.6%. Виждате, че това е 660 пъти по-голяма вероятност от стандартната. За щастие продължава да е достатъчно малка за реална атака и не предизвиква сериозни проблеми в сигурността на банковите системи.

Проблеми с ATM конролера за сигурност обаче все пак има и то изключително сериозен. Когато вътрешен служител на банката има достъп до HSM контролера, то той има възможност да открадне ключа за декриптиране на кодовете, подавани от картите. Така когато бъде открадната банкова карта на същата банка, то крадците могат да си съставят таблица от вече криптирани ключове и да сравняват с този, който са откраднали. Такава таблица се състои от комбинациите между всички възможни decimalization таблици и 10000 възможни PIN кода. За съвременната компютърна техника това не е проблем.

Популярни са и други видове вътрешни за банката атаки, които чрез допълнителен софтуер прочитат PIN кода от RAM паметта на ATM контролера, в момента в който е в декриптиран вид. Затова в банковата система достъп до ATM контролерите се получава под изключително строг режим.

По-обиграните атаки работят с разбиване на кодовете без достъп до банковата система. Един пример е с подмяната на данни. Според стандартите PIN кода освен криптиран с т.нар. „master key“, той трябва да се криптира допълнително и при „транзит“ (тоест при преминаване между различни устройства) – това често се налага, когато например използвате банкомат на друга банка. Именно чрез добавяне на такава допълнителна транзитна точка или имащи достъп до такава атакуващите имат възможност да използват множество открити уязвимости в HSM устройствата.

Такива уязвимости за съжаление има много, тъй като банкоматите са длъжни да работят и с по-стари стандарти за банкови карти. Също така те трябва да работят и с банки от други държави, които може да поддържат остарели стандарти. Има доказани случаи при които чрез външно устройство е била открадвана важна информация за master key на банката, която издава картата. Такива уязвимости се премахват постепенно чрез обновяване на банковите системи, но за съжаление все още са налице. Конкретен пример за сериозността на този проблем е залавянето на 11 хакера миналата година, които са обвинени в кражбата на над 40 милиона криптирани ключа от TJ Maxx и други подобни мрежи в САЩ.

Атаките с конкретно налучкване на master key като че ли са в миналото, когато алгоритмите за криптиране са били слаби. Въпреки това такива атаки са напълно реална заплаха, тъй като е възможно да се използват масивни botnets за търсене на такива ключове. Банките от своя страна не са в състояние да подменят своите ключове често, защото е нужно да подменят огромно количество ATM карти.

 



Добави коментар

Адресът на електронната поща няма да се публикува


*