1

有没有什么办法可以用你的代码创建一个由三部分组成的谜题,你可以让你拥有一个加密的字符串,一个专门为那个字符串构建的函数,并且只为那个字符串,(解密形式的字符串实际上是代码/执行指令)。第三个也是最重要的,最后一个部分是使函数的执行成为可能的上下文,并且该环境状态必须是不可伪造的。所以函数只对匹配的字符串执行一次,只有一个环境状态,然后过期。它必须是一个完美的时钟机制,即使只是缺少一个部件,也使它“不可……滴答”(当然,不能滴答,就像“发挥作用”一样,因为每个部分都是至关重要的)。

我在这里谈论的是脚本语言,其中存在 eval 之类的东西,但它可以作为一种通用技术应用。

使用基于各种内存状态和变量(随机或非随机)的某种“多米诺骨牌”效应,您可以创建类似于“泄漏效应”的东西,让您的代码位在结构化(但隐藏)的地方,所以最后,使用一个奇怪的工具作为“代码漏斗”来安排执行流程。

由于我不知道这样的事情,所以我的文字是虚构的,以便能够给出任何可读和可理解的形式。

我的问题正是关于这个......这可能吗?我能得到什么帮助吗?有什么想法吗?因为我现在找不到任何可以保持这种效果的东西。

当然,您可能会发现我没有理由要求这样的事情,因为您可以说没有人对我的代码感兴趣,或者我患有偏执狂。但仍然认为这可能是一个原因。不,这肯定是我想知道这一点的原因。

请不要急于下结论,例如“明确指出这不是论坛”,因为这是我面临的一个问题,迫切需要解决方案。由于我对很多事情都缺乏经验,包括严肃的数学和扎实的算法思维,我急切地寻求帮助。所以我感谢那些愿意考虑这个问题的人。

4

3 回答 3

1

从根本上说,这基本上是不可能的。

您想给某人一些信息(您的代码)。您希望他们能够在一种特定状态下(您没有很好地定义)执行一次代码。但是您不希望他们能够检查该代码,或在其他情况下执行它。不可能的。

该人机器上的程序(将执行代码)必须能够检查代码,以便能够执行它。因此,该机器上的其他程序也将能够检查代码。

你可以加密你的代码,这样任意程序就无法检查它,你重新获得控制权。但是打算执行代码的程序仍然需要检查它,因此您必须以某种方式获取解密代码所需的信息。

但是现在您又回到了最初的问题:您想为用户提供一些信息(解密密钥)以用于特定用途(仅在您指定的情况下解密和运行您的代码),而不是用于任何其他。

更有趣的是,您可以改为使用从您要检查的环境部分派生的哈希值来加密您的代码(如果不知道您要检查什么,就不可能说您究竟是如何派生密钥的)。然后,如果用户(或代表他们执行您的代码的程序)想要检查代码,它将必须遵循从环境中获取哈希值的相同过程拥有正确的环境。但是用户可以安排从该环境中收集哈希值并保留它,让他们可以随时检查您的代码。

另外,我不知道您可以检查什么实际上可以保证正确的环境。如果程序应该在解密自身的秘密部分并运行它之前检查它是否正确运行(无需修改对您的代码进行监视),那么间谍可以轻松提取加密的东西,从(未加密)检查代码进行了哪些计算来检查环境,然后根据“正确”环境而不是实际存在的环境进行自己的计算。

最后,您所能做的就是让恢复您的最高机密代码的过程更加烦人,从而消除烦恼。大多数人无论如何都不会费心去看你的代码。他们只是不在乎。剩下的大多数人都会在最轻微的阻力下放弃(尽管使用您的软件可能会推迟他们)。在那之后仍在尝试的人......总是有机会(如果你的密码真的那么有价值/有趣)会有足够积极的人来解决你所做的任何事情(除非你只是从不给任何人你的密码首先)。因此,我的倾向是只需付出一些简单的努力来隐藏您的密码,不要担心实现完美的安全性,因为这是不可能的。

于 2011-09-07T00:52:14.080 回答
0

您可以简单地使用对称加密对代码进行加密。使用随机密钥对其进行加密,将该密钥存储在计算机上,然后在加密代码中包含一个在代码运行时从内存中删除该密钥的部分。当然,有人在删除之前复制密钥并稍后将其恢复到内存中会相对容易,但是您可以将其放在不起眼的地方,而且我认为无论您做什么,都可以将计算机恢复到较早的状态(使用备份软件)。

于 2011-09-07T00:22:07.803 回答
0

@Ben,有趣的演示,我相信从我了解什么可以做,什么不能做的那一刻起,我就在考虑这个问题。你说的每一种可能的情况我都想到了,更何况,确实好像没有办法。也许我应该限制自己,尽可能让自己头疼。这不仅是一个超级机密的代码,正如你所说的那样,而且我隐藏它还有另一个意图,那就是,原谅我缺乏谦虚,这确实是一个有趣的代码,我真的想过滤那些看到它, 如果不经过 B 从 A 到 C 需要一个天才,那么它必须需要另一个才能弄清楚如何。我虽然是我缺乏经验让我沮丧的是无法解决的问题。但是,我总是被放在这些看似不可能的情况面前,我通常会举起地狱来找到解决方案,我管理得很好。但现在只是我不能投降。

我可能从一开始就知道答案,无论你怎么努力都做不到,当然很容易找出原因,因为它不正常,也不正确,这取决于你的知识和经验限制了你正在创造的东西。考虑到这一点,很明显,为什么一定会有比你更好的人,而且肯定会有比你更好的人来克服你。即使这对我来说,至少从主观上来说,是一件很麻烦的事。那么,我想我会尽力减少那些知道我的超级机密代码的人。毕竟,即使是上帝也是伟大的拼图制造者。

无论如何,我非常感谢您的回答。

PS 很抱歉回答迟了,但由于我 8 小时无法回答我的问题,我不得不等待,之后我找不到任何可用的时间来做这件事。

于 2011-09-09T05:03:36.660 回答