Шаблон строки / алгоритм для PIN и PUK, сгенерированный из MSIN - PullRequest
1 голос
/ 13 октября 2010

Интересно, как компании мобильной связи генерируют PIN-код и PUK-код для своих SIM-карт?

У меня большая база уже сгенерированных кодов, эта база содержит 3 столбца: * MSIN: идентификационный номер мобильного абонента (10 цифр) * PIN: персональный идентификационный номер (4 цифры) * PUK: персональный код разблокировки (8 цифр)

Пока что, возможно, PIN и PUK генерируются из MSIN, поскольку столбец MSIN увеличивается, в то время как другие генерируются с помощью логики, что-то вроде:

MSIN            PIN     PUK  
1000000000      3234    20005627  
1000000001      5993    92870018  
1000000002      3465    30327846  
...

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

Я прошу это ради знаний, только чтобы не использовать предоставленную информацию в какой-либо незаконной деятельности;)

спасибо.

UPDATE

Я искал, сколько раз повторяются некоторые пин-коды, и нашел это

0000 –> 261 times
1111 –> 429982 times
2222 –> 275
3333 –> 233
4444 –> 279
5555 –> 277
6666 –> 242
7777 –> 263
8888 –> 249
9999 –> 242

штифт 1111 используется чаще других! так что, возможно, время от времени меняется алгоритм ... или нет никакой логики внутри: (

ОБНОВЛЕНИЕ 2

Я проверил MSIN и обнаружил, что они совершают скачки в инкрементной системе, например,

1011000000
1011000001
…              here they followed incrementing until 1011499999     
1011499999     and they jumped to 1031000000
1031000000
…              the same thing here
1031299999
1131000000
… 

это приводит к мысли, что всякий раз, когда они хотят выпустить новые карты, скажем, 500 000 карт, они начинают с нового MSIN, который не следует правилу увеличения в базе данных, и может изменить алгоритм генерации кода (именно поэтому мы находим в некоторых случаях, что они выпустили все следующие карты с пин 1111)

Ответы [ 3 ]

1 голос
/ 13 октября 2010

Ответ может быть от очень просто до довольно сложно .

Если бы мне пришлось проектировать систему, функция f (Pin,Puk) = f(MSIN) не была быЛегко угадать, и, кроме того, необратим (то есть, если вы знаете (pin, puk), вы не можете угадать MSIN).

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

Если это не задокументировано где-то в сети (что я сомневаюсь), очень маловероятно, что вы найдетефункция f.

1 голос
/ 13 октября 2010

Если предположить, что PUK / PIN генерируются из MSIN, существует практически бесконечное число способов, которыми они могли бы это сделать. Чтобы взять один (разумный) пример, они могли бы использовать HMAC. Даже если предположить, что вы знаете, какой алгоритм хэширования они используют, вам все равно придется определить секретный ключ, а пространство для его поиска составляет порядка 2 ^ 160 (для HMAC-SHA1) - совершенно нецелесообразно проводить исчерпывающий поиск.

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

0 голосов
/ 17 октября 2010

Обычно это не оператор мобильной связи, который генерирует PIN и PUK.Производитель SIM-карты делает это, если оператор не заказывает иное.

Почему вы полагаете, что можно рассчитать SIM-карту и / или PUK из MSIN?Ни оператор сети, ни производитель SIM-карты не получили бы от этого никаких преимуществ.Я бы предположил, что PIN и PUK настолько случайны, насколько это экономически целесообразно для реализации предполагаемой защиты.

Однако я считаю интересной аномалию 1111.Ваш образец прямо с производства?Или вы получили дамп HLR?Последний может дать объяснение кумуляции 1111: люди меняют свой PIN-код на что-то, что легко запомнить и напечатать, 1111 будет наиболее распространенным кандидатом для этого.

...