【问题标题】:Is it secure to use a hash of a memory location as identifier?使用内存位置的哈希作为标识符是否安全?
【发布时间】:2020-03-30 10:13:37
【问题描述】:

我根据它们的内存位置为类的一些对象生成一个哈希(在本例中为来自 vapor swift 的 websocket 对象)。

Unmanaged.passUnretained(webSocket).toOpaque().hashValue

或:

ObjectIdentifier(webSocket).hashValue

https://stackoverflow.com/a/41666807/10551293(关于如何获取对象的内存位置的答案)

我想我会将其用作标识符(最终用户可以查看)。这是否会引发攻击?

【问题讨论】:

    标签: swift security hash


    【解决方案1】:

    Swift 专门为此提供了一个工具:ObjectIdentifier()

    它的散列包含一个每次启动的随机种子,专门用于阻止基于散列的攻击。即使攻击者对哈希进行暴力破解(这本身就是一个重要但可能并非不可能的问题),它也不会揭示内存中的实际位置。这应该是一个安全的标识符。

    但一定要使用ObjectIdentifier。如果将来发现攻击,那就是要缓解的 API。

    【讨论】:

    • 好的,谢谢。这确实给了我内存位置,就像我原来的问题中的代码一样。但在我提供的情况下,该内存位置的 hashValue 是否构成安全威胁?
    • 谢谢,这回答了整个问题。
    猜你喜欢
    • 2015-05-11
    • 2017-12-10
    • 2021-07-19
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多