And*_*rey 11 .net security guid
要开始,并定义guid,我使用.net框架Guid这有点假设情况用户在执行特定操作时会生成guid.每个用户都可以看到自己的guid.如果用户要知道另一个用户的guid之一,则会出现安全性损害.
如果我们认为用户无法窃取另一个用户的guid并且只能猜测它,那么这个系统的安全性如何?
我明白盲目猜测guid是不可能的.即使他们有一百万个成功价值,他们仍然只有10 ^ 20的成功猜测机会
我害怕可能存在的问题是指导预测.用户是否可以生成大量请求,查看他获得的guid,并且知道.net guid生成公式可以大大提高他猜测的几率?这些几率可以降低到安全问题吗?在这种情况下,如何以一种独特的不可猜测的方式生成密钥?
我问任何提到猜测/碰撞几率的人都会增加一些难以理解的含义.要么是用于定义赔率的确切数字,要么是"它可以用于存储帐户数据,而不是用于存储敏感数据"
编辑
这个问题似乎很好地进入了我最初想要探索的领域这个问题 GUID是(临时)加密的一个好关键吗?
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)