1

我想知道移动电话公司如何为他们的 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  
...

是否有可能知道这些连续剧是如何生成的?使用现有的数据库是否可以猜测使用的算法?

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

谢谢。

更新

我搜索了一些密码重复了多少次,发现了这个

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

引脚 1111 比其他引脚使用得更多!所以也许算法会不时改变..或者里面根本没有逻辑:(

更新 2

我检查了 MSIN,发现它们在递增系统中发生了跳跃,例如;

1011000000
1011000001
…在这里他们跟着递增直到 1011499999     
1011499999 他们跳到 1031000000
1031000000
......这里同样的事情
1031299999
1131000000
…

这导致了一个想法,即每当他们想要发行新卡时,比如说 500 000 张卡,他们都会从一个不遵循数据库中递增规则的新 MSIN 开始,并且可能会更改代码生成背后的算法(这就是为什么我们发现在某些情况下,他们发行了所有带有 1111 引脚的卡)

4

3 回答 3

1

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

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

于 2010-10-13T11:55:40.997 回答
1

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

如果我必须设计这个系统,这个f函数(Pin,Puk) = f(MSIN)就不容易猜到,而且不可逆(这意味着如果你知道 (pin,puk) 你就不能猜到 MSIN)。

因为主题是围绕安全和支付,你可能会期待一个复杂的功能。

除非它记录在网络上的某个地方(我对此表示怀疑),否则您不太可能找到该函数f

于 2010-10-13T11:57:26.720 回答
0

通常它不是生成 PIN 和 PUK 的移动网络运营商。除非运营商另行订购,否则 SIM 卡制造商会执行此操作。

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

但是,我发现 1111 异常很有趣。您的样品是否来自制造?还是你得到了 HLR 转储?后者可能为 1111 累积提供了解释:人们将他们的 PIN 更改为易于记忆和输入的东西,1111 将是最常见的候选者。

于 2010-10-17T18:26:40.867 回答