【问题标题】:Encryption that allows performing mathematical operations on encrypted numbers?允许对加密数字执行数学运算的加密?
【发布时间】:2013-03-01 17:57:02
【问题描述】:

假设我在在线排行榜上发布了一款得分高的游戏。作弊者通过在发布之前更改内存中的分数来欺骗排行榜。

我认为一种解决方案是加密存储在内存中的数字,并且仅在向用户显示分数时才解密。将加密的分数发送到在线排行榜。

但我发现这个解决方案存在一个问题:可以对加密值进行数学运算吗?什么加密技术允许这样做?

【问题讨论】:

    标签: encryption


    【解决方案1】:

    您的用例的最大问题是密钥必须位于内存中的某个位置,以便您可以加密/解密数据,因此如果“坏”用户有足够的知识来更改内存中的高分,它他也应该不难找到钥匙。

    但是,我可能是错的,或者您的“真正”问题是是否可以对加密值执行数学运算。答案是肯定的,homomorphic encryption

    【讨论】:

    • 这正是我想要的!我没有加密背景,所以谷歌搜索没用(不知道要搜索什么)。但是,您是说这种用于用例的方法并不安全,因为密钥存储在内存中?我想知道将密钥存储在服务器中是否可行,知道真实值的唯一方法是将加密值发送到服务器进行解密。这将需要几乎一直在线来玩游戏。谢谢。
    • 是什么阻止了那些原本会修补内存位置以更改明文排行榜的人更改加密排行榜?如果软件改变了[加密的]排行榜,那么运行该软件的用户也可能学会这样做,不是吗?
    【解决方案2】:

    您可以在需要进行数学运算的任何时候对分数进行加密、解密并加密回来; 基本上你需要在 OOP 术语中加密分数或任何其他信息的设置器和返回解密分数的获取器,所以在内存中你总是会存储加密信息

    【讨论】:

    • 在进行数学运算之前解密的问题是该值与显示给用户的值相似,因此用户可以使用该信息来查找内存中的值。或者我误解了你。
    猜你喜欢
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2020-06-25
    • 2017-01-12
    相关资源
    最近更新 更多