用于PIN和PIN的字符串模式/算法PUK由MSIN生成

时间:2010-10-13 11:02:18

标签: algorithm code-generation design-patterns gsm

我想知道手机公司如何为他们的SIM卡生成PIN和PUK?

我有一个已生成代码的大型数据库,此数据库包含3列: * MSIN:移动用户识别码(10位数) * PIN:个人识别码(4位数) * PUK:个人解锁代码(8位数)

到目前为止,PIN和PUK都可能是从MSIN生成的,因为MSIN列正在递增,而其他的则是使用逻辑生成的,类似于;

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

是否可以知道如何生成此序列?使用现有的数据库是否可以猜测使用算法?

我是为了知识而问这只是为了不在任何非法活动中使用提供的信息;)

感谢名单。

更新

我搜索了一些pin码被重复多少次并找到了这个

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 个答案:

答案 0 :(得分:1)

如果我们假设PUK / PIN是从MSIN生成的,那么他们可以通过无数种方式来实现这一点。举一个(合理的)例子,他们可能正在使用HMAC。即使假设你知道他们正在使用什么哈希算法,你仍然必须确定密钥,并且搜索空间大约为2 ^ 160(对于HMAC-SHA1) - 完全搜索是不切实际的。

你唯一的机会就是如果他们做了一些愚蠢的事情,比如使用一个容易猜到的或确定的算法来生成PIN / PUK - 并且没有实际的机械程序可以解决这个问题,只有试验,错误和直觉

答案 1 :(得分:1)

答案可以从非常简单非常复杂

如果我必须设计系统,那么f函数(Pin,Puk) = f(MSIN)就不容易猜到,而且,不可逆(意思是如果你知道(pin,puk)你无法猜测MSIN)。

因为主题是安全和付款,所以你可能会期望一个复杂的功能。

除非在网上某处记录(我怀疑),否则你很可能找不到函数f

答案 2 :(得分:0)

通常不是生成PIN和PUK的移动网络运营商。除非操作员另有要求,否则SIM卡制造商会这样做。

是什么让您相信可以从MSIN计算SIM和/或PUK?网络运营商和SIM制造商都不会从中获得任何优势。我认为PIN和PUK在经济上可行是随机的,以实现预期的安全性。

然而,我发现1111异常有趣。您的样品是否适合制造?或者你得到了HLR转储?后者可能会为1111累积提供一个解释:人们将他们的PIN更改为易于记忆和键入的内容,1111将是最常见的候选人。