Опрокидывающиеся VISA PIN

Среда, 2 июля, 2008 @ 12:38 AM | Банковские и EFTPoS

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

Я думал, я хотел бы повторить это здесь, на моем местного ведения.

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

http://69.46.26.132/ ~ biggold1/fastget2you/tutorial.

--- Подлинный ----

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

Вся информация, используемая для этой работы является открытой и может быть свободно найти в Остальное дело и программирования, таким образом, мы можем узнать и развлечься. Я не раскрыть тайну. Кроме того, цель (и окончательный этой работы заключается в том, чтобы продемонстрировать, что алгоритмов все еще достаточно сильны, чтобы обеспечить достаточную Мы все знаем, не является

Данная работа анализирует один из самых распространенных алгоритмов, используется во многих и карт), и пытается выяснить, насколько устойчивы является угадать нападений. Под "угадать" Я не имею в виду, выбирая случайные и пытается ее в банкомате. Хорошо известно, что в целом мы с учетом трех последовательных попыток ввода право если мы не банкомат держит Как четыре цифры долго можно легко сделать вывод, что вероятность случайного угадали 3 / 10000 = 0.0003, кажется низким, чтобы он был безопасным, оно означает, что вам надо потерять более чем в три тысячи раз ( или потерять больше, чем три тысячи карт одновременно:) до тех пор, пока существует разумная вероятность потерять

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



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

Описание можно найти в двух документах, связанных в предыдущей странице. В целом он состоит в 8 байт (64 бит) строку называется Преобразованные Параметр (TSP), с (DEA) в книг кодекса режима (ЕЦБ) с помощью тайного ключа 64 бит. вытекает из результатов процесса, который представляет собой 8 байт строки. Четыре цифры (слева направо) соответствует первых четырех десятичных цифр (слева направо) от выхода из если его рассматривать в качестве 16 шестнадцатеричных символов (16 х 4 = битные 64-битные) строку. Если нет Есть четыре десятичных цифр из 16 шестнадцатеричных символов затем завершена приняты (слева направо), не десятичное символов и decimalizing них с помощью преобразования-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Вот пример:

Результат от 0FAB9CDEFFE7DCBA

0975

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

ОВЧ, видели, как 16 шестнадцатеричных символов (64 бит) строка, формируется (слева направо) с 11 справа цифры PAN за исключением последней цифры (контрольная цифра), одна цифра от 1 до 6 который выбирает тайным ключом шифрования, и, наконец, четырех цифр Вот пример:

PAN: 1234 5678 9012 3445
Ключевые селектора: 1
2468

ОВЧ: 5678901234412468

Очевидно, что проблема разрушения состоит в поиске тайного ключа для шифрования Метод заключается в том, что делать грубую силу поисках ключа пространстве. Заметим, что это не единственный метод, можно попытаться найти недостатки в ДЭА, многие пытались, но это старый стандарт по-прежнему в широком использовании (в настоящее время заменен AES и однако). Это свидетельствует о его достаточно, чтобы грубая сила является единственным реальным способом (Есть несколько атак, но лучше не практично в нашем случае, в резюме см. LASEC памятки и грязные подробности см. Biham И Шамире 1990, Biham И Шамире 1991 году, Мацуи 1993, Biham И Бирюков 1994 и Heys 2001).

Ключевым селектор цифра весьма вероятно, представил на возможность компромисса ключа. В этом случае они просто выпустить новые карточки, используя другой селектор ключа. Раньше карты могут быть заменены на новые или просто банкоматы могут прозрачно писать новые (соответствующий новым ключом и сохранение того же в следующий раз клиент использует его / ее Для встряски все пользователи должны попросить их изменить PIN-кода, однако было бы стыдно за объяснить причину, так что весьма вероятно, они бы не сделать такой запрос.

Подготовка к


Грубая сила состоит в шифровании ОВЧ с известными используя все возможные ключи шифрования и сравнивать каждый получил с известными Если файл найден у нас есть кандидат ключа. Но сколько клавиши мы попробовать? Как мы уже говорили выше ключ длиной 64 бит, то это означает, что мы должны попытаться 2 ^ 64 ключей. Однако это не так. На самом деле только 56 бит являются эффективными в ключами, поскольку один бит (младший) из каждой октете исторически защищены как контрольная для других; на практике эти 8 бит (по одному для каждой из 8 октетов) игнорируются.

Поэтому ключа пространство состоит из 2 ^ 56 ключей. Если мы попробуем все эти ключи будут найдены один и только один матч, в соответствии с секретный ключ? Конечно, нет. Мы получим много соответствия клавиш. Это происходит потому, что это лишь небольшая часть (одна четвертая) от выходных. Кроме того является выродились, поскольку некоторые цифры (тех, от 0 до 5 после последнего, видел с лева на право, между цифрой 6 и 9) может исходить от десятичных цифр или decimalized шестнадцатеричные цифры производства. Таким образом, многие ключи даст производства, который дает к тому же соответствует

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

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

всегда можно рассматривать как соотношение благоприятных случаев к возможным случаям. В нашей задаче число возможных случаях дается из 16 элементов (от 0 до F шестнадцатеричных цифр) в группе из 16 из них (16 шестнадцатеричных цифр выходных). Это дает 16 ^ 16 ~ 1.8 * 10 ^ 19, который, конечно, совпадает с 2 ^ 64 (разные номера 64 бит). Этот набор номера могут быть разделены на пять категорий:

Те, по крайней мере четырех десятичных цифр (от 0 до 9) из 16 шестнадцатеричных цифр (от 0 до F) от выходных.

Те, кто точно лишь три десятичных цифр.

Те, кто точно только двух десятичных цифр.

Те, кто точно только одно десятичная цифра.

Те, кто не десятичных цифр (от всех и F).

Давайте подсчитать, сколько номеров падения в каждой категории. Если мы этикетка 16 шестнадцатеричных цифр выводятся X1 для X16, то можно ярлык первых четырех десятичных цифр любой номер первой категории, как Си, XJ, Xk и XL. Количество различных комбинаций с этим профилем дает продукт 6 I-1 * 10 * 6J-I-1 * 10 * 6K-J-1 * 10 * 6 LK-1 * 10 * 1616-L, где 6 ' S из числа возможностей для F цифры, в 10 из возможностей 0 до 9 цифр, и 16 из возможностей 0 F цифры. Теперь общее число в первой категории просто учитывая путем суммирования этого продукта за I, J, K, L от 1 до 16, но при I <J <K <Л. Если вы что-нибудь математические работы вы увидите эту равна произведению 104 / 6 с суммированием за I от 4 до 16 (I-1) * (I-2) * (I-3) * 6i-4 * 16 16-я ~ 1,8 * 1019.

Аналогично ряде случаев во второй категории предоставляется путем суммирования над I, J, K от 1 до 16 с I <J <К продукту 6i-1 * 10 * 6J-I-1 * 10 * 6K-J -1 * 10 * 616-K, который вы можете работать это будет 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7.3 * 1015. Аналогично для третьей категории мы суммирования над I, J от 1 до 16 с I <J 6 I-1 * 10 * 6J-I-1 * 10 * 616-й, который равен 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9.4 * 1014. Опять же, для четвертой категории мы суммирования за I от 1 до 16 6i-1 * 10 * 616-I = 160 * 615 ~ 7.5 * 1013. И, наконец, сумма случаев пятой категории дается шести элементов (Ф цифрами), в группе из 16, т.е. 616 ~ 2.8 * 1012.

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

До сих пор мы подсчитали количество возможных случаев, в каждой из пяти категорий, но мы заинтересованы в получении число благоприятных случаях вместо. Очень легко получить последний из бывшей так как это просто фиксация комбинация из четырех десятичных цифр (или требуется шестнадцатеричных цифр, если нет Есть четыре десятичных цифр) от вместо предоставления им бесплатно. На практике это означает превращение в 10 в формуле выше, в 1 и требуется сумма в 6 в 1 в случае, если нет Есть четыре десятичных цифр. То есть, мы должны разделить первый результат на 104, второй 103 * 6, третий 102 * 62, четвертый 10 * 63 и пятый на 64. Тогда число благоприятных случаев в пяти категориях примерно 1,8 * 1015, 1.2 * 1012, 2.6 * 1011, 3,5 * 1010, 2.2 * 109, соответственно.

Теперь мы можем получить то, что выход на матч случайно. Нам просто нужно добавить пять номеров благоприятных случаи и разделите его на общее число возможных случаев. При этом мы получаем, что очень 0.0001 или примерно одна из десяти тысяч. Это странно, это хорошо, округленным результат? Вовсе нет, просто посмотрите на номера мы подсчитали выше. К первой категории доминирует на несколько порядков число благоприятных и возможные случаи. Это скорее интуитивное, как представляется очевидным, что это весьма маловероятно, не имея четырех десятичных цифр (10 шансов из 16 процентов цифра) среди 16 шестнадцатеричных цифр. Мы видели ранее, что взаимосвязь между числом возможных и благоприятных случаях в первую категорию было разделение на 10 ^ 4, что, когда наш результат P = 0.0001 приходит от.

Наша цель для всех этих расчетов состоит в том, чтобы выяснить, сколько пара нужно иметь успешный грубой силы Теперь мы можем вычислить ожидаемое количество ложных срабатываний на первом поиска: оно будет рядом судебных разбирательств раза для одной случайной ложноположительный, т.е. T * P, где Т = 2 ^ 56, размер ключа пространстве. Это составляет примерно 7.2 * 10 ^ 12, довольно большое количество. Ожидаемое число ложных срабатываний во втором поиска (только для позитивных ключей в первом поиска) будут (T * P) * P, на третий поиск будет ((T * P) * P) * P и так далее. Таким образом, для N поисков ожидаемое число ложных срабатываний будет T * P ^ Н.

Мы можем получить ряд обысков требуется ожидать лишь один ложноположительный выразить уравнением T * P ^ N = 1, и решение по Н. Так N равен на базе P 1 / T, которая по свойствам логарифмов он дает N = LOG (1 / T) / LOG (P) ~ 4.2. Поскольку мы не можем сделать поиск дробно это удобно раунд этого числа. Поэтому то, что ожидаемое количество ложных срабатываний, если мы проводим пять обысков? Это T * P ^ 5 ~ 0.0007, или примерно 1 из 1400. Таким образом, используя пять пара безопасно получить истинное секретный ключ, не ложных срабатываний.

The


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

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

Я сделал простую программу на С, getpvvkey.c, чтобы совершить Она состоит из петли попробовать все возможные ключи для шифрования первый ОВЧ, если полученные матчей верно новых ОВЧ судом, и так до тех пор, пока существует несоответствие, и в этом случае ключ отбрасываются, а новое судом, или пяти, полученных PVVs матча соответствует подлинной PVVs, и в этом случае мы можем предположить, мы получили секретным ключом, однако цикл продолжается до тех пор, пока она изнуряет ключевых пространстве. Это делается для обеспечения мы находим истинные ключевых потому что есть вероятность (хотя и очень низкий) первым ключевым найденные ложноположительный.

Ожидается, программа займет очень много времени, чтобы закончить и свести к минимуму риски, отключения электричества, компьютер зависает, и так далее это контрольно-пропускных пунктов в файле getpvvkey.dat время от времени (точное время зависит от скорости на компьютере, это примерно один час для самых быстрых компьютеров в настоящее время использования). По той же причине, если позитивные ключ было написано в файле getpvvkey.key. Программа отображает только одно сообщение в начале года, начиная с позицией КПП файл, если таковые имеются, после этого больше ничего не отображается.

является ключевым пунктом в программе, поэтому очень важно оптимизировать его скорость. Я проверял несколько реализаций: libdes, SSLeay, OpenSSL, cryptlib, NSS, libgcrypt, катакомб, libtomcrypt, cryptopp, UFC-склепе. функции первых четырех, основаны на тех же код Эрик Янг, и тот, который наиболее эффективны (включает оптимизированный C и ассемблере код x86). Таким образом, я выбрал libdes которая была оригинальной и осуществления всех соответствующих конденсированная код в файлы encrypt.c (C версия) и x86encrypt.s (x86 ассемблер версия). Код слегка изменен для достижения каких-либо улучшений в силой: первоначальный является фиксированной общей крутые в каждом ОВЧ и поэтому можно сделать только один раз в начале. Еще одно улучшение в том, что я написал совершенно новую функцию setkey (я назвал его nextkey), которая является оптимальной для грубой силы петли.

Чтобы получить рабочую программу вы набрать в соответствующем месте пять TSPs и их PVVs, а затем собрать его. Я тестировал только в UNIX платформ, с помощью Makefile Makegetpvvkey обобщить (используйте команду "Make-F Makegetpvvkey"). Он может составить от других систем, но вы, возможно, потребуется установить некоторые вещи. Будьте уверены, что определение long64 соответствует 64-битное целое. В принципе, нет зависимости от endianness от процессора. Я успешно обобщены и запустить его на Pentium-Linux, Альфа-Tru64, MIPS-Irix и Sparc-Solaris. Если у вас нет и не хотите, чтобы установить Linux (вы не знаете, что вам не хватает ;-) Вы все еще можете выбрать для запуска Linux на CD и использовать свои программы, см. мою страницу Linux, не устанавливая его.

После того как вы нашли секретные ключа, если вы хотите найти от произвольного вам просто нужно написать аналогичную программу (жаль я не написали его, я слишком ленив:), что бы попробовать все 10 ^ 4 коды путем создания соответствующей ОВЧ, зашифровать его с (не более) секретного ключа, вытекающие и сравнив его с на Вы получите один матч за истинную Только один матч? Помните, что мы видели выше, у нас есть шанс на 0.0001, что случайное матчей Мы стараемся 10000-Пен (и, следовательно, TSPs), таким образом, мы ожидаем, 10000 * 0.0001 = 1 ложноположительный в среднем.

Это очень интересный результат, это означает, что, в среднем, каждая имеет два действительных коды: клиент и ожидалось ложноположительный. Я назвал это "ложной", но отмечают, что до тех пор, как он создает истинную это же актуальны, как один клиент. Кроме того, нет возможности узнать, какой является, которые, даже в банкомате, только заказчик знает. Даже если ложноположительный были не действительны как вы еще три судебных процесса в любом банкомате, достаточно в среднем. Поэтому мы подсчитали, в начале этого документа о случайном догадываться о должен быть исправлен. На самом деле это два раза выше, чем стоимость, то есть, она 0.0006 или один из более чем 1600, по-прежнему безопасно низкая.

Результаты


Важно, чтобы оптимизировать компиляцию программы и запустить ее в кратчайшие возможные процессора из-за долгого времени ожидается запуск. Я обнаружил, что компилятору оптимизации флаг-O получает лучшую производительность, подумал некоторое улучшение достигается добавлением-fomit-кадр-указателя на флаг Pentium-Linux,-всплеска флаг на "Альфа-Tru64,-МПА флаг на Mips-Irix и скорость флаг на Sparc-Solaris. Специальные флаги (-DDES_PTR-DDES_RISC1-DDES_RISC2-DDES_UNROLL-DASM) для кодекса, в целом, а выгоды. Все эти флаги уже испытаны и я выбрала наилучшее сочетание для каждого процессора (см. Makefile), но вы можете попробовать оптимизировать другие флаги.

По моему испытаний лучшей производительности достигается с AMD Athlon 1600 МГц процессор, превысив 3,4 млн. ключей в секунду. Интересно оно получает лучшие результаты, чем Intel Pentium IV 1800 МГц и 2000 МГц (см. диаграммы ниже, нажмите на них, чтобы увеличить). Я считаю, это связано с некоторыми I / O насыщения, то кэш-памяти или что процессор AMD (которая вдвое кэш Pentium) или материнская плата, в которой она работает, удается избежать. В первом рисунке вы можете увидеть, что нарушение скорости процессоров все более или менее линейной взаимосвязи с процессором скорости, за исключением двух Intel Pentium я упоминал ранее. Это логично, это означает, что за двойной процессор скорости вы получите двойной разрыв скорости, но следить за насыщение эффектов, в данном случае это лучше, AMD Athlon 1600 МГц, которые будут даже дешевле, чем Intel Pentium 1800 МГц или 2000 МГц.

На второй диаграмме можно видеть более подробно то, что мы бы назвали собственного мощность процессора. Я получаю это значение простого деления перерыва скорости на скорости процессора, то есть, мы получаем число ключами попытались в секунду и на МГц. Это показатель эффективности работы процессора независимо от его скорости. Полученные результаты свидетельствуют о том, что лучший процессор для выполнения этой задачи является AMD Athlon, а затем приходит Alpha и очень близки после того, как его Intel Pentium (за исключением высокой скорости те, которые выполняют очень плохо из-за эффекта насыщения). Далее идет Mips процессор, и в последнем месте Sparc. Некоторые Alpha и Mips процессоры расположены в нижней части шкалы, поскольку они являются ранние релизы не включая увеличение конце версий. Имейте в виду, что я включала выполнение x86 процессоры для C и ассемблере код как есть большая Кажется, что GCC является не очень хорошая генератора оптимизированный машинный код, но мы, разумеется, не знают ли ручной оптимизации кода ассемблера для других процессоров (Alpha, MIPS, Sparc) будет увеличить свои результаты по сравнению с родной компилятор C (я не использую GCC для этих других платформ), как это происходит с процессором x86.

Обновление

Вот статья, где эти методы могут быть использованы.

http://redtape.msnbc.com/2008/08/could-a-hacker.html

Недавно

  • SQL-инъекции Cheat бюллетени
  • Корпоративный телефон заблокирован Ссылки
  • VoIP и SIP ссылки
  • Радиолюбительство и Radhaz
  • Безопасное применение развитию связей
  • Кэти школа - школа строительного проекта в Камбодже.
  • Электронные устройства Syetms и соображения
  • Интернет Банкинг Оценка Соображения безопасности
  • Мобильный банкинг безопасности и оценке рисков Соображения
  • DNS Hack потребностей Исправление - серьезная проблема
  • Оставить Ответить

    XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> < дель Datetime = ""> <em> <i> <q cite=""> <strike> <strong>