什么是保护分区? (参考遗传编程和密码学)
我在一篇关于遗传编程的论文中引用了“受保护的除法”操作。当我用谷歌搜索这个时,我得到的大部分是关于遗传编程的论文以及与密码学相关的各种结果,但没有一个能够解释它实际上是什么。有人知道吗?
I am getting references in a paper on genetic programming, to a "protected division" operation. When I google this, i get mostly papers on genetic programming and various results related to cryptography, but none that explain what it actually is. Does anybody know?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
http://en.wikipedia.org/wiki/Genetic_programming
在密码学中似乎并没有定义明确,但谷歌最热门的是防止侧通道攻击(在这种情况下,通过电力使用 - 您可以通过查看进行加密的硬件的功耗来猜测该部门使用的数字) <一href="http://dl.acm.org/itation.cfm?id=1250996" rel="noreferrer">http://dl.acm.org/itation.cfm?id=1250996 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.7298&rep=rep1&type=pdf
http://en.wikipedia.org/wiki/Genetic_programming
In cryptography it doesn't seem to be well-defined, but the top google hit is for protecting against side channel attacks (in that case, via power use - you can guess what numbers are being used in the division by looking at the power consumption of the hardware doing the encryption) http://dl.acm.org/citation.cfm?id=1250996 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.9.7298&rep=rep1&type=pdf
在 GP 中,受保护除法是一种改进的除法运算符,当分母为 0(零)时,它不会发出“除零”错误信号。当分母为零时,它通常返回 1。
In GP protected division is a modified division operator which does not signal "division by zero" error when denominator is 0 (zero). It typically returns 1 when denominator is zero.
它按参数的阈值函数而不是参数进行划分。
其中 Theta() 是 theta 函数的非零变体。
其他可能的阈值函数。或者有时它只是“epsilon”。
It divides on threshold function of argument instead of argument.
Where Theta() is non-zero variant of theta-function.
Other threshold functions possible. Or sometimes it is just 'epsilon'.
当使用遗传编程(GP)进化程序时,每个生成的程序都会经过测试以获得其适应度值。
当进化的程序是数学表达式时,需要保护除法。在密码学中,数学表达式可用于对决策过程进行建模。
在评估步骤中,程序可能会执行除以零的操作,这会导致崩溃。为了避免这种情况,受保护的除法被设置为在分母等于零时返回特定值。我见过三种设置:
该设置应在论文中的某处指定。
如果不是,最安全的选择是假设受保护的除法返回分子。
鉴于 1 是乘法中性,0 是加法中性,它们可能会导致进化过程中生成的程序出现一些偏差,但仍然常用。
When evolving programs with Genetic Programming (GP), every generated program is tested to get its fitness value.
The protected division is required when the evolved programs are mathematical expressions. In cryptography, the mathematical expression might be used to model a decision-making process.
In the evaluation step, the program may perform a division by zero, which would cause a crash. To avoid this, the protected division is set to return a specific value if the denominator equals zero. I've seen three settings:
The setting should be specified somewhere in the paper.
If not, the safest bet is to assume that the protected division returns the numerator.
Given that 1 is a multiplicative neutral and 0 is an additive neutral, they could cause some bias in the programs generated during the evolution but are still commonly used.
上面的答案很好,但我的建议是避免受保护的分裂,因为结果是不可预测的。
相反,如果您除以零(或任何其他异常),请将该运算符修改(变异)为另一个不会生成异常的运算符。
我确实将这个策略实施到 多表达式编程< /a>.
这是与此案例相关的代码片段:
The above answers are good, but my advice is to avoid protected division because the results are unpredictable.
Rather, if you get division by zero (or any other exception) do modify (mutate) that operator into another one which does not generate an exception.
I did implemented this strategy into Multi Expression Programming.
Here is a code snippet relevant to this case: