guids可以信任安全性,还是可以预测系统是否可以强制生成许多已知的guid?

And*_*rey 11 .net security guid

要开始,并定义guid,我使用.net框架Guid这有点假设情况用户在执行特定操作时会生成guid.每个用户都可以看到自己的guid.如果用户要知道另一个用户的guid之一,则会出现安全性损害.

如果我们认为用户无法窃取另一个用户的guid并且只能猜测它,那么这个系统的安全性如何?

我明白盲目猜测guid是不可能的.即使他们有一百万个成功价值,他们仍然只有10 ^ 20的成功猜测机会

我害怕可能存在的问题是指导预测.用户是否可以生成大量请求,查看他获得的guid,并且知道.net guid生成公式可以大大提高他猜测的几率?这些几率可以降低到安全问题吗?在这种情况下,如何以一种独特的不可猜测的方式生成密钥?

我问任何提到猜测/碰撞几率的人都会增加一些难以理解的含义.要么是用于定义赔率的确切数字,要么是"它可以用于存储帐户数据,而不是用于存储敏感数据"

编辑

这个问题似乎很好地进入了我最初想要探索的领域这个问题 GUID是(临时)加密的一个好关键吗?

sai*_*lle 7

GUID的/ UUID旨在生成128位数,主要用作唯一的ID(用于所有意图和目的).

UUID不是为了生成加密强的随机数序列而设计的,如果你想要最大的不可预测性,那么加密的强随机数序列就是你想要的.为此,.NET为您提供了RNGCryptoServiceProvider - 从根本上设计为不可预测的,可以通过算法手段合理地实现,那么为什么不使用它呢?

例:

byte[] GenerateRandomBytes()
{
   byte[] key = new byte[16];

    System.Security.Cryptography.RNGCryptoServiceProvider c =
        new System.Security.Cryptography.RNGCryptoServiceProvider();

    c.GetBytes(key);

    return key;
}
Run Code Online (Sandbox Code Playgroud)