标签:java uuid long-integer shared-secret
为了访问我的Web服务应用程序中的资源,客户端应用程序需要为每个资源提供唯一的共享密钥.
问题是:SecureRandom为此目的生成的Longs是否合理安全(例如针对暴力攻击)?或者我应该使用UUID吗?
Web服务通过HTTPS运行,我可以保证不会发生冲突(使用Long或UUID).问题实际上只是Java中的Long域是否足够大以提供针对HTTPS的详尽攻击的保护.
解决方法:
简单的答案是,您无法保证随机生成的数字对/序列不会发生任何冲突.您所能做的就是设计一些东西,以便碰撞的概率对于应用来说是可接受的.该概率需要多低取决于应用程序的细节.
令我困惑的是,为什么碰撞会成为共享秘密的问题.你真的在问有人猜测共享秘密的可能性吗?
好的,所以这是一个简单的数学问题.举个很长的例子.
>有2 ^ 64个可能的长值.
>关于V这些是“有效秘密”.
>一些坏人每秒可以合理地尝试N猜测的秘密.
>你可以得出概率P的公式,有人可以在给定的时间间隔T内猜出你的一个秘密.
导出公式,插入变量V,N和T,并确定P是否可接受.
请注意,“实际相关的机会”不是我们可以建议您的.相反,你应该决定什么是可接受的风险……基于对成功破坏你的计划的人的成本/后果的分析.
标签:java,uuid,long-integer,shared-secret 来源: https://codeday.me/bug/20190629/1328831.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。