SRVB.密码系统入门

Yuri在C ++中拥有经验,以及数学,统计和物理学的良好背景。他开发了SRVB密码系统。
阅读 西班牙语es. 本文的版本翻译 yesica danderfer

介绍

信息安全是一个令人着迷的知识领域,可以涉及从理论计算机科学到软件工程的任何知识,甚至观察人为错误的心理。

介绍SRVB密码系统

加密是我们日常生活的众多匿名技术英雄之一。社交网络,Web银行,军事情报和任何其他信息系统,这些信息系统处理敏感信息所有依赖于密码学。加密允许我们拥有隐私,其中一些考虑 第12个人权.

本文将向您介绍公钥密码系统背后的原则,并向您介绍 Santana Rocha-Villas Boas(SRVB)是由文章和Daniel Santana Rocha教授开发的密码系统。在撰写本文时,算法作者正在烹饪一个广告系列,该活动包括对管理代码破解代码的任何人的财务奖励。由于文章将详细介绍算法功能,这是开始追求奖品的最佳地点。更多信息可用 SRVB.网站.

什么是密码系统?

爱丽丝和鲍勃通过不安全的频道谈谈

加密是妨碍消息的解释性的任何方法,同时仍然允许通过提供特定指令的方式可行解释它,这通常是所谓的“键”。虽然这是一种非常广泛的定义,即杂交即使是最早的技术,值得提及这不涵盖信息安全的所有内容。

预计加密方法与破解它们的方法之间的技术种族将永远不会有一个明确的赢家。预计每一代的新一代都会提高信息安全和密码分析的标准,这是系统解密/中断加密消息的一组技术,即绕过安全或加密。

为了使密码系统(给定的加密技术)被其用户视为安全,它必须得到国际专家社会的批准,从而公开知名,被称为 Kerckhoffs的原则。然而,这种情况下,这种情况使系统从世界上的密码分析界进行审查,他们将尝试设计系统地打破加密的方式。

如何使给定的加密过程秘密足够秘密,只有预期的代理商可以解密它,同时公众足够的时间,世界上的密码分析界可以证明其坚固性?答案是一个组件,它是密码学的关键元素:密钥。密码系统的密钥是加密或解密算法的参数,也是两者的参数。通过保持参数秘密,而不是算法系列,可以实现矛盾的要求。如果参数系列足够大(可能是无限的),并且可以证明其每个组件具有足够的性质,因此攻击者仅通过检查来确定参数是不可行的。

最后,为了有效地工作的关键,必须很容易地生产,但几乎不可能猜测。随着当今计算机的计算能力,计算机需要更少的时间来破译人类生成的钥匙,而不是任何人需要甚至想象它,最重要的是,无论如何它不具有成本效力。因此,键倾向于通过算法生成。

键生成算法不能由于典型使用而创建可预测/可重复的输出。由于算法在没有任何智能进程的情况下执行程序,因此问题成为如何完成。答案是将密钥生成算法转换为将大量真正随机位转换为键的映射。可以从操作系统获取真正的随机比特,从操作系统中生成它们在宇宙中的不确定性。有些来源将是您的鼠标移动,网络包延迟,甚至专用硬件,具体取决于应用程序。


公钥密码系统

不对称密钥加密

准备好一次感到惊讶,因为我们现在将介绍一个看似矛盾的概念,我们刚才所说的:公钥。

到目前为止,我们已经看到秘密参数(键)已经安全地交换后的安全通信的创建,但在公共频道上交换参数的问题仍然存在。现在,我们将介绍一个解决一个稍微明显的问题的概念:创建安全频道。

假设Alice正在使用Bob,他们希望使用加密保持工作交互。他们可以通过将彼此带有钥匙的钥匙来满足并交换他们的加密密钥。但是如果爱丽丝和鲍勃都位于不同的大陆。如何在没有现有的安全频道中建立安全频道?

通过电子邮件发送键不会是一个选项,因为他们的竞争对手eve可以拦截交换并使用它们的键以后读取所有加密数据。如果他们有任何其他数字频道,他们可以通过它传输这种敏感数据,然后它们不需要加密,从而首先是键。通过物理邮件发送密钥仍然可以拦截,因为它需要交换敏感信息以开始。送A. 隐藏在其他数据中的隐士键 会很聪明,但除非发件人确信收件人和接收者单独的收件人,否则无用的是意识到这种信息的存在,并知道如何提取它。正如它所发生的那样,与如何从数据中提取密钥的描述一起对消息的意识是自身的类型,这将我们带回正方形。

解决方案正在设计一个密码系统,因为加密参数不足以可行地解除原始消息[1],并对自己允许限制消息的参数。我们调用该参数私钥。基于私钥,可以为加密工具可行生成一组参数,而无需使这些新参数能够揭示私钥是什么。这组参数可以公开分享,因为它不能加密一些东西,只要只有一个人可以解密它就可以加密一些东西。由于可以公开这组加密工具的参数,因此它被称为公钥。

加密和解密密钥的加密和解密键不同,并且前者不能可操作地用于推断后者,被称为非对称密码学,而对称加密是当那些键相同时我们拥有的,或者彼此容易被推导出来。

Alice发送Bob她的公钥,只能用于加密只有她可以解密的东西(与她私下保持的私钥),并相反,Bob发送了他的公钥,只能用于加密事物他独自可以解密(通过他的私钥,他还私下私下)。但是如何一个可能发布用于加密算法的参数,从中可以从中推测确切的逆算法?

答案位于与编程相关的数学领域, 计算复杂性理论。任何已经熟悉数学问题的人都听到了易于单向做的转变,但难以做到这一反向。例如,在微积分中,发现教科书衍生物通常是一个直接的运动,同时执行逆(类似于解决任何略微非琐碎的积分或教科书的物理 或者 PDE.例如)需要更高的假设函数族的更高的调查过程,该职能是保证(或至少合理的)来包含解决方案并解决来自这些家庭的解决方案的逆问题。

实际使用的示例 RSA.密码系统 在没有已经了解因素的情况下,将大素数与分解产生的产品乘以。做乘法是微不足道的,但要做的需要你随机[2] 猜猜具有数百位数的主要因素。该操作的一个重要属性是需要它划衡。在RSA中添加几位数的数字将导致一个键,该密钥需要在加密过程中增加复杂性的微小增加时需要数千次操作。非常粗略地说,素数的乘积用于加密,而这对主要因素用于解密。

通过所有这一切,让我们来看看SRVB密码系统的工作原理。

底层算法 - 调查SRVB

查看SRVB密码系统

子集合问题

与任何其他公共密钥密码系统一样,SRVB依赖于解决易于生产的特定问题的难度。在SRVB的情况下,它是 子集合问题,这可以描述如下:

鉴于整数$ w $和$ v_1,\ cdot \ cdot \ cdot,v_n \在z $查找序列$ b_1,\ cdot \ cdot \ cdot,b_n \在{0,1} $,这样$ \ sum_ {i = 1} ^ {n} v_i b_i = w $。

显然,可以通过随机挑选n个整数来生产此问题,随机选择它们的子集并求出此子集 - 这是微不足道的。

蛮力搜索将具有$ O(n * 2 ^ n)$的复杂性,计算$ b $ s值的每个值组合。提供更有效的方法 霍洛维茨和萨赫尼于1972年,复杂的$ O(n * 2 ^ {n / 2})$。如果我们用$ k $ -dimensional的整数向量替换$ b $ s和$ w $,则该问题至少难以努力。然而,在举行这个更困难的问题的领域,也必须有一个 同构 与A. 戒指 在发生同一问题的更容易版本的情况下,我们将在下面看到。因此,srvb利用其中的子集合问题 高斯整数,其中$ k = 2 $。

在使用贪婪算法时,存在一个特殊的情况,易于计算易于计算。如果我们对序列缩放因子进行排序$ v_1,\ cdot \ cdot \ cdot,v_n $的序列中的每个整数大于它之前的所有整数的总和($ \ forall i,\ sum_ {j = 1} ^ {i-1} v_j< v_i $), one could use a greedy approach to find the sequence b in linear time. A sequence with the described properties is called a SuperIncreasing序列.

以下是对这种情况进行贪婪解决方案的简单描述:

  1. 从$ i = n $开始,当前观察到的因素和$ w'= w $,剩余的$ w $

  2. 如果当前的缩放因子太大而无法适合$ w $的遗体,这意味着$ v_i>w'$,设置$ b_i = 0 $并继续下一步。否则我们知道缩放因子需要在序列中(因为其余的因素小于$ v_i $),我们设置$ b_i = 1 $。

  3. $ w'\ refrearrow w' - v_i * b_i $,$ i \ refrearrow i - 1 $。如果$我>0 $,返回步骤2。

  4. 验证,现在,$ w'== 0 $,否则问题已损坏

这是作用的,因为我们知道所有乘法器小于当前观察到的所有乘法器都不能统称为当前乘法器可以统称地覆盖(子)和W'$的大部分因此,如果剩余总和大于当前因素,我们知道所有以下因素都不会在没有当前因子的帮助下总结到它。另一方面,由于所有乘法器都是正的,如果当前因子$ v_i $大于剩余的$ w'$,则添加任何其他因素将使结果超越$ w'$。

让我们为剩下的文章设置一个表示法。我们选择$ v_1,\ cdot \ cdot \ cdot,v_n $和$ w $ to superIncreasing序列的因素和总和,而$ u_1,\ cdot \ cdot \ cdot,u_n $和$ y $将是公开的提供以恢复$ b_1,\ cdot \ cdot \ cdot,b_n $的可用参数。

使用序列$ u_1,\ cdot \ cdot \ cdot,u_n $挑选,因此它不是SuperIncreasing,而且N $ y $公开提供,没有足够的信息被公开提供恢复序列$ b_1,\ cdot \ cdot \ cdot ,b_n $。但是,如果有一个superIncreasing序列$ v_1,\ cdot \ cdot \ cdot,V_N $可以取代序列$ u_1,\ cdot \ cdot \ cdot,u_n $,可以使用这个序列来解决问题一种贪婪的方法。

下面我们将展示如何运作。

在先前密码系统中使用子集合

1978年,拉尔夫梅尔克尔和马丁赫尔曼,设计了一种方法来利用这两个背包范式和 线性 模量操作构建前一节中描述的两个序列之间的连接 - 因此构思了一个公钥密码系统。这个想法是改变 轻松背包 (由整数的叠加载体组成的那个通过具有秘密操作数的线性操作(模数)的硬于(缺少该特性)。转换由$ \ theta $乘以每一种$ v_i $乘以$ \ alpha $占据此产品的剩余部分,其中$ \ alpha \ gt \ sum_ {i = 1} ^ n v_i $和$ \ gcd (\ alpha,\ theta)= 1 $(很快就会有合理的两个约束)。结果,序列$ u_1,\ ldots,u_n $,不再是superIncreasing,并且可以被认为是一个 坚硬背包.

序列$ u_1,\ ldots,u_n $的随机排列将被给予想要加密和向我们发送消息的方提供给我们。置换是这样做的,使得第三方具有难以猜测原始超自联序列是什么的更加困难的时间。消息的位块用作系数$ b_1,\ ldots,b_n $。通过将密钥序列乘以此系数序列的键序列来完成加密,并将乘法求出到结果,我们将标记$ y $。只有私钥的所有者可以将$ y $转换为相同的$ w $,如果相同的$ b_1,\ ldots,b_n $块将乘以乘以 轻松整数 (序列$ v_1,\ ldots,v_n $)。这是通过乘以$ y $ \ theta ^ { - 1} $的乘法来完成的 乘法逆 $ \ theta $ modulus $ \ alpha $(其存在取决于$ \ gcd(\ alpha,\ theta)= 1 $)的情况。换句话说,$(\ theta * \ theta ^ {-1})\ bmod \ alpha = 1 $。之后,我们计算了$ w =(y * \ theta ^ {-1})\ bmod a $。这是保证工作的原因是 模量的线性,即,那 剩余物的线性组合等于线性组合的其余部分。

如果我们连续地应用$ U $,商圈和模数运算符的线性度属性的定义,我们会看到对应关系:

$ \begin{align} y &= \ sum_ {i = 1} ^ n b_iu_i \ newline &= \ sum_ {i = 1} ^ n b_i(v_i * \ theta \ bmod \ alpha)\ newline &= \ sum_ {i = 1} ^ n b_i * v_i * \ theta \ bmod \ alpha \ newline &= \ left [\ sum_ {i = 1} ^ n b_i * v_i * \ theta \ rectle] \ bmod \ alpha \ newline &= \ left [\ sum_ {i = 1} ^ n b_i * v_i \ offer] * \ theta \ bmod \ alpha \ newline &= w * \ theta \ bmod \ alpha \end{align} $

因此是 简单的总和 可以通过将$ \ theta ^ {-1} $乘以乘以$ w $,并使用$ \ alpha $占用模数。为此,必须知道$ \ alpha $和$ \ theta $(允许一个人轻松计算$ \ theta ^ { - 1} $),这些键将私钥保密。

一个单个约束,$ \ alpha \ gt \ sum_ {i = 1} ^ n v_i $,留下了不合理的,这里留下了它的解释:第二行和第三行之间的平等包括与之间的平等 残留课程商戒指 整数Modulo $ \ Alpha $。换句话说,它只会在除以$ \ alpha $时,它只能说明成员的其余部分的平等, 这对成员本身的平等来说不是一种充分的条件。因此,可以将多个$ B $值的传染媒介映射到单个$ y $中,通过限制最大可能子址(即所有包裹$ v_i $)$ w_ {max} $来防止对于$ b $值的任何组合小于$ \ alpha $。

就像日常生活的任何其他例子一样,完全了解所有假设通常是不可能的,从不容易。结果,我们必须在判断中依赖数学直觉,如果密码系统安全使用,这为我们提供了实际保证。创作六年后,MH Cryptosystem被打破了 攻击 经过 A. Shamir.。恢复MH有几次尝试,其中许多也失败了。


Santana Rocha - Villas Boas(SRVB)Cryptosystem

在2016年,在与本文作者有关不同启发的一系列头脑风暴之后[3] Cryptosystem的可能性,Daniel Santana Rocha有替换$ \ Theta $和$ \ alpha $的想法。出于更新的原因,这种方法导致对上述Shamir攻击的阻力。

他还构思了一个由先前描述的线性组合的许多步骤组成的位块 坚硬背包。在它们中的每一个中,一个新的(高斯)整数,相当于比序列结束的所有上一体的总和,而当前最小的将被删除。

对于$ \ Alpha $,它是一个不同且且又典雅的约束,现在是一个高斯整数。我们需要$ w_ {max} \ leq \ vert \ alpha \ vert ^ 2 $。原因是非常难以形式化,但幸运的是,它可以很容易地从优雅的描述中介绍:

想象一下在复杂数字的平面中的方形格子,其一侧是右三角形的斜边 守则 A和B,平行于真实和虚轴。下面给出这种晶格的一个例子。瓜森整数Modulo $ \ Alpha = A + Bi $可以由位于此类格子内的点表示。在这样的晶格中有$ \ vert \ alpha \ vert ^ 2 $ distinct点。如果我们选择足够大的$ \ Alpha $,我们可以适用于简单背包的所有线性组合。

格子

这是同义的图形表示$ f:z / n \ lightarrow z [i] /(\ alpha)$,其中$ n = 13 $和$ \ alpha = a + bi = 3 + 2i $(注意$ N $和$ \ alpha $确实满足$ n = \ vert \ alpha \ vert ^ 2 = a ^ 2 + b ^ 2 $。点表示高斯整数,即复杂的数字$ a + bi $,其中$ a $和$ b $是整数。像往常一样,横轴代表实际部分,而垂直表示虚部。因此,向右或向左移动一个点等同于将+1或-1添加到其当前值。同样,向上移动一个点或向下移动,分别对应于添加+ I或-I。

红点是那些等同于$ 0 \ BMOD(\ Alpha)$。除了这些,我们还彩色了4对圆点。

颜色 相当于... modα
橙子 $1$
绿色的 $ i $
蓝色的 $-1-i$
紫色 $1-i$

同构$ F $由循环序列$(0,1,2,\ CDOT \ CDOT \ CDOT,10,11,12,0,1,2,\ CDOT的IN $ I $ TH元素的转换定义\ CDOT \ CDOT)$进入图中的点数的$ I $ TH元素,即遵守以下规则:

  1. 它从第一行的红色点开始;
  2. 它遵循水平右箭头;除了那个
  3. 当沿着箭头引导晶格外的序列时,它将到达其中一个非黑点。它在同一方形内部跳到相同的彩色点(即,等效点模数$ \ alpha $);最后
  4. 当这种非黑点恰好是红色时(在所有其他颜色都通过后发生)时,序列跳转到最上面的红色点,从而重新提高循环;

为了映射至少$ y $自然整数,必须使用区域$ \ vert \ alpha \ vert ^ 2 $(其中$ \ vert \ alpha \ vert = \ sqrt {a ^ 2 + b ^ 2} $是,通过 勾股定理,其侧面的尺寸至少高。

请注意,每个“跳转”将行数为$ r $到$ r \ retrow(r + b)(mod a + b)$,如果一个人从上下计数行,而且等同地,以$ r retrarow(r + a)(mod a + b)$如果从自下而上有一个计数。因此,每行(和点)的必要和充分条件在每个周期上完全罗嗦,是跳跃的大小是具有行数的跳跃,或者换句话说,$ gcd(a,a + b)= gcd(b,a + b)= 1 $。由于最伟大的常见除容器运算符的属性,这两者都相当于$ GCD(A,B)= 1 $。

Y. S. Villas Boas注意到需要为$ a $和$ b $的百分比。为了保留卓越的速度,每次新整数$ W $在序列结束时需要超过所有当前的总和($ w >\ sum_ {i = 1} ^ k v_i $)。他观察到,为了实现这一点,它们的乘法系数$ B_I $必须至少为1,因此,每个位都无法映射到系数0和1.如果系数为0和1,则仅块只有一个人组成的人都会满足叠加度。因此,然后分别映射到乘法系数1和2的比特0和1。

最后,且较少的琐碎:在解码的每个步骤中,将找到一个新的整数$ v_1 $,作为等式的解决方案$ b_1 v_1 = v_ {n + 1} - \ sum_ {i = 2} ^ {n} b_i v_i $,所有$ v_i $和$ b_i $占1美元<我是莱卡。由于我们也不知道$ b_1 $,我们最终得到一个有一个方程和两个变量的系统,这使我们留下了一种自由度。为了纠正这一点,我们必须仲裁一个正值(为了简单起见,1)始终分配给$ b_1 $,从而消除了歧义。因此,由于第一个系数固定为1,以便在每个步骤上编码$ n $位,因此我们的整数序列必须是n + 1 $元素。

解析的一个最终的技术性是消息的大小的情况下,消息的大小不是块大小的倍数。换句话说,与上次数据块的可能剩余字节有关,这样,一旦恢复数据块,就保留了原始内容的所有字节,但不超过它们?我们通过重复消息的最后一个字节来解决。然后,此副本后跟一个随机序列,每个组件都需要与前一个组件不同。因此,当检索数据块时,它们的最后一个 或者,在最坏的情况下,最后一个 在最后一次重复字节中被截断。[4]

现在让我们显示SRVB密码系统的示例。

我们从参数开始:

$ k = 4 $;

$ m = 4 $;

它产生$ l = 4 * 4 = 16 $的块长度,并且运营的$ k + 1 = 5 $ 5 $自然整数的叠加序列 - 即,线性组合,随着这种线性组合的结果附加,并减少到它的最后一次$ k + 1 $元素 - $ m = 4美元;

为简单起见,让以下是$ v_i $的(superincreasing)矢量:

$(1,2,4,8,16)美元

实际上,前五个力量的序列为2,因为这是具有五个元素的超自释放序列和最小的严格阳性可能的值(从而避免了公钥中的0,这将延长其对应的对应物0 )。

正如我们之前所说的那样,对于$ \ alpha = a + bi $,整数$ a $和$ b $必须是coprime,并且根据我们提到的新约束,我们必须要求$ a ^ 2 + b ^ 2 = \ vert \ alpha \ vert ^ 2 \ geq w $。快速计算收益率为1590美元。自$ \ sqrt {1590} \ simeq 39.8 $,非常方便的$ \ alpha $ of over选择为$ \ alpha = 39 + 40i $,因为它只是足够大,以容纳一个与整数环的同义至少1590个组件,同时也满足$ GCD(A,B)= 1 $。此外,我们需要挑选一个$ \ theta $,使得$ gcd(a,\ theta)= 1 $[5] 而且最好是不是太低,所以$(a_1 * \ theta)\%\ alpha \ neq v_1 * \ theta $,(也避免放弃信息)。 $ \ theta = 60 $的工作,屈服:

$ -19-1i,1 + 38i,3-3i,6-6i,12-12i $[6]

Let us get our hands dirty, then. Take the message Hello Toptal!. First we map it into an array of bytes according to ASCII. 以及截断数据块的公约:

01001000 01100101
01101100 01101100
01101111 00100000
01010100 01101111
01110000 01110100
01100001 01101100
00100001 00100001

由于我们的数据块是16位= 2个字节,并且我们的消息有13个字符,我们最终有7个数据块,每个2个字节为2个字节,最后一个包含两个字符的位表示的两倍。让我们逐步加密第一个块。密切关注,因为每个字节的位按照其意义的顺序拍摄。

$ m = 01001000 01100101 $

  • 第一字节的第一个蚕食:$(0,0,0,1)\ lightarrow(1,1,1,1,2)\ cdot(-19-1i,1 + 38i,3-3i,6-6i,12 -12i)= 15 + 4i $
  • 第一个字节的第二个蚕食:$(0,0,1,0)\ lightarrow(1,1,1,2,1)\ cdot(1 + 38i,3-3i,6-6i,12-12i,15 + 4)= 49 + 9i $
  • 第一个第二个字节:$(0,1,0,0)\ lightarrow(1,1,2,1,2)\ cdot(3-3i,6-6i,12-12i,15 + 4i,49 + 9i)= 106-10i $
  • 第二个字节的第二个啃:$(0,1,1,0)\右前线(1,1,2,2,1)\ cdot(6-6i,12-12i,15 + 4i,49 + 9i,106- 10i)= 252-2i $

因此,我们刚刚映射了

“他”$ \ lightarrow(12-12i,15 + 4i,49 + 9i,106-10i,252-2i)$

其余的加密消息如下:

“LL”$ \ lightarrow(12-12i,21-2i,61-3i,185-31i,367-59i)$

“O”$ \ lightarrow(12-12i,25 + 33i,65 + 32i,111 + 44i,244 + 124i)$

“到”$ \右前车(12-12i,9 + 10i,46 + 12i,149 + 5i,277 + 31i)$

“Pt”$ \ lightarrow(12-12i,3 + 16i,46 + 12i,73 + 23i,201 + 49i)$

“al”$ \ lightarrow(12-12i,4 + 54i,44 + 53i,117 + 193i,231 + 389i)$

“!!” $ \ lightarrow(12-12i,4 + 54i,32 + 65i,63 + 92i,121 + 247i)$

现在,对于解密,我们有$ \ theta ^ { - 1} = 60 ^ { - 1} = 27 + i $:

$($“他”$ \ lightarrow)$(12-12i,15 + 4i,49 + 9i,106-10i,252-2i)* \ theta ^ { - 1} \%\ alpha =(16,47 ,93,223,527美元)$

现在,贪婪算法:

首先,我们减去每个贡献因子乘以一个,因为他们已知至少贡献一次,屈服于:

  • 第二个字节的第二个蚕食:

$ t \左路(527-233-93-47-16)= 148 $

$(t \ geq 223)=(148 \ geq 223)= false \ lightarrow b_1 = 0;左臂(T - 0 * 223)= 148 $

$(t \ geq 93)=(148 \ geq 93)= true \ lightarrow b_2 = 1; T \ Lettarrow(T - 1 * 93)= 55美元

$(t \ geq 47)= 55 \ geq 47)= true \ lightarrow b_3 = 1;左臂(t - 1 * 47)= 8 $

$(t \ geq 16)= 8 \ geq 16)= false \ lightarrow b_4 = 0; T \ Lettrarow(T - 0 * 16)= 8 $

结果:0110;

剩余部分:8(在序列的开头添加为新的最低元素);

从当前序列的最后滴527;

  • 第一个蚕食第二个字节:

$ t \左道(233-93-47-16-8)= 59 $

$(t \ geq 93)=(59 \ geq 93)= false \ lightarrow b_1 = 0;左侧(t - 0 * 93)= 59 $

$(t \ geq 47)=(59 \ geq 47)= true \ lightarrow b_2 = 1;左臂(T - 1 * 47)= 12 $

$(t \ geq 16)=(12 \ geq 16)= false \ lightarrow b_3 = 0; T \ Lettrarrow(T - 0 8 16)= 12 $

$(t \ geq 8)=(12 \ geq 8)= true \ lightarrow b_4 = 1; T \ Lettarrow(t - 0 * 12)= 4 $

结果:0101;

剩余时间:4(添加到序列的开头,作为新的最低元素);

从当前序列的最终序列下降233;

  • 第一个字节的第二个蚕食:

$ t \左侧(93 - 47 - 16 - 8 - 4)= 18美元

$(t \ geq 47)=(18 \ geq 47)= false \ lightarrow b_1 = 0; T \ Lettarrow(T - 0 * 47)= 18美元

$(t \ geq 16)=(18 \ geq 16)= true \ lightarrow b_2 = 1; t \左侧(t - 1 * 16)= 2 $

$(t \ geq 8)=(2 \ geq 8)= false \ lightarrow b_3 = 0; t \左侧(t - 0 * 8)= 2 $

$(t \ geq 4)=(2 \ geq 4)= false \ lightarrow b_4 = 0; T \ Lettarrow(T - 0 * 4)= 2 $

结果:0100;

剩余时间:2(添加到序列的开头,作为新的最低元素);

从当前序列的最后一个下降93;

  • 第一个字节的第一节:

$ t \ lettarrow(47-16-8-4-2)= 17 $

$(t \ geq 16)=(17 \ geq 16)= true \ lightarrow b_1 = 1; T \ Lettrow(T - 1 * 16)= 1 $

$(t \ geq 8)=(1 \ geq 8)= false \ lightarrow b_2 = 0; t \左侧(t - 0 * 8)= 1 $

$(t \ geq 4)=(1 \ geq 4)= false \ lightarrow b_3 = 0; t \左侧(t - 0 * 4)= 1 $

$(t \ geq 2)=(1 \ geq 4)= false \ lightarrow b_4 = 0; T \ Letrarrow(t - 0 * 2)= 1 $

结果:1000;

剩余时间:1(添加到序列的开头,作为新的最低元素);

从最终序列的最后跌落47;

因此,我们已恢复数据块:“01001000 01100101”,其中包含前两个字符“他”,我们的消息。不仅如此,我们还正确地检索了我们的私钥SuperConsing序列$(1,2,4,8,16)$。

其他数据块映射以相同的方式进行。


与主要公钥密码系统的比较

与主要公钥密码系统的比较

SRVB.是:

  1. 完全自由和公众;

  2. 比较简单,更容易理解和实施 ECC.[7];

  3. 钥匙丰富,因此实际上是成本的,相反,例如 RSA.,依赖于素数, 这很昂贵.

我们已经可以达到最有可能的漏洞。由于SRVB从MH下降,因此很容易怀疑它会容易受到泛化 Shamir攻击,或其他一些破坏它的其他人。虽然作者有理由相信这不是这样的情况,但没有确认它已经完成(在处理密码系统时是非常典型的)。


下一步是什么?

Rocha观察了几次使用戒指的概括,这可能导致密码分析的复杂性增加。我们也要调查这些可能性。

线性代数模糊

正如它所发生的那样,在SRVB的开发和文件中,Villas Boas提出了另一种方法来改善Whackasack公钥密码系统的概念,这将在本文中的许多细节中不会被解释,以便本文不会变得太长而且令人厌倦,但这是掠过它。如果您没有成功掌握它,请不要担心,只是留下我们的下一篇文章的发布,其中我们将进入详细信息更多的是:看到子集合数$ y $ say, $ n $ quiention ring元素$ u_i $(正是与正整数的正面整数,如前所述,如前所述)作为这些$ u_i $ by列向量$ b $的行向量的乘法(对于二进制)的零和那些[8].

$ y = \ sum_ {i = 1} ^ n u_i b_i =(u_1,\ cdot \ cdot \ cdot,u_n)^ t \ cdot(b_1,\ cdot \ cdot \ cdot,b_n)$ = UB,

其中$ b_i \在{0,1} $中

现在,想象一下,而不是这个$ u_i $的这个向量,你有,左边是$ n $的$ n $(以$ n为<n $)矩阵v,使$ v_i $(来自superqureasing序列的整数)矢量(不损失一般性)它的第一行和噪声填充的所有其他条目。请注意,现在,乘以相同的比特向量B乘以v,为您提供$ w $的列向量w作为其它的第一个进入和噪音。现在,采用此V矩阵并将其乘以随机[9] n在左边的n矩阵r,通过n矩阵p定义n:

p = rv.

这个想法是鲍勃使用p作为他的新公钥。因为R的随机性,载体

$ y = pb = rv b = rw $

在其他行中的噪音中遮挡的信息是否已提前计算并存储满足的行向量S:

$ r ^ t s ^ t = e_1 $

什么时候,Alice会向Bob发送y,他只是找到了sy,因为:

$ sy = s(pb)= s((rv)b)= srvb = {e_1} ^ t r ^ { - 1}((rv)b)= $

(到目前为止只定义)

$ {e_1} ^ t(v b)= {e_1} ^ t w = w $

(现在,利用了 联席期 to cancel the Rs)

然后通过以前提取以前提取$ b_i $的向量通过贪婪算法提取$ b_i $ w $。

因此,在一个单词中,线性代数模糊利用了实习乘法的关联性(我们可以扩展术语的事实,然后以新的顺序操作它们的组件,只要我们保留了序列中所有操作数的序列)到“线性地争夺,然后过滤(分别在加密和解密中)噪声从$ w $ for。并且在限制案例$ n = 1 $,系统优雅地恢复到罗奇的方法。

SRVB.运动 - 奖项挑战

SRVB.广告系列

如前所述,根据Kerckhoffs的原则,经验表明,公知的不间断加密系统的古代是它的可靠性的主要来源,远远超过自己作者的任何理论论证,除了其他任何东西,因为最终证明通常不可用算法的功效。

在这里,我们有机会使这些概念练习赚取大笔资金:意识到这一事实,我们推出了上述了 活动,这基本上是一个自动授予第一个令人作用的令人留言的奖品的众所周心。这笔钱将被转换为位于给定钱包中的比特币,其私钥将被SRVB加密和发布,以便任何能够破译它可以匿名拿起钱的人,没有问题。

致谢

特别是本文,以及整个SRVB加密项目一般受到教授的帮助 Charles F. de Barros,助理教授 联邦大学圣约翰省。 Barros教授为我们提供了SRVB密码系统本身的技术审查。我判断有必要在敢于发表之前提交,并且我肯定会让自己更长时间。

此外,我也想向教授致以深深的感谢 阿南·阿德莫维奇 对于他非常有洞察力,细心和患者作为本文的编辑。


词汇表

  1. 密码学/加密: 在没有特定的指令集(在此上下文中,即所谓的“键”),即使在没有特定的指令(在此上下文中),也可以允许分享这些指令的代理即使由第三方分开即使被第三方分开,也允许分享这些指令的代理商;
  2. 隐写术: 通过向后者添加明显无害的修改,在另一个掩饰消息的科学/做法;
  3. 主要一代: (预期)随机输入的映射到(随机)有效键;
  4. 加密/编码: 易于可解释的消息映射到另一个易于解释的消息,它是难以或不可能通过(作为随机指定的)元素来解释的 一个对应的关键 a(由Kerckhoffs的原则,公开知名和验证的)算法系列;
  5. 解密/解码: 由前一个(如随机指定的那样的倒数,也是可定义的易于计算的映射,因此由第三方)元素_Again的一个元素_Again(由相同的原理,通常已知)算法系列,从而在用加密的一个输入时输出原始信息;
  6. 密码系统: 编码算法系列的三合会,对应的解密算法的系列,以及密钥生成算法;
  7. 盟国: 与沟通的代理商,预计会根据议定书的规则行事;
  8. 敌人/第三方: 沟通不打算的代理商,但尽量尝试窃听通信并绕过密码系统增强的安全性;
  9. 安全频道: 用于易于使用的通信的任何协议(程序),同时也有效地防止第三方可行地解释其用户意味着什么;
  10. 不安全的频道: 任何频道(即协议或程序),顾名思义,不是安全频道;
  11. 打破一个关键: 通过要发现的密钥本身的公共信息(如加密消息或公钥)来发现关键的过程,并且预计不会对键的发现不可行。由于从该过程中产生的信息授予消息的解密,因此这是一个特定的情况......
  12. 打破/解密消息: 通过加密的消息本身和其他任何信息仅推断加密消息的原始内容,并且预计就足以推出原始内容的其他信息;
  13. 打破密码系统: 在任何参数下发现系统的可行性突破的系统方法;
  14. Kerckhoffs的原则/冒险/公理/法律: 在荷兰密码师以荷兰语中命名的密码原理 奥古斯特克霍夫斯根据哪个,为了使密码系统被视为安全,除了其(私人)钥匙之外的一切都必须是公共知识;
  15. 钥匙: 密码系统的秘密参数化,允许在第三方被第三方被猜测(并因此破坏),同时也被Cryptanalysts社区验证(按照Kerckhoffs原则)验证;
  16. 对称密码系统: 任何密码系统,其中编码的任何参数都足以轻松地致电解码参数,因此必须保持私密。可以通过说加密和解密参数等同于密钥来彻底放入它;
  17. 不对称/公钥密码系统: 有一种密码系统,有一种方法可以表达对编码的参数,这些参数不足以使得对解码的对应参数推断出来,允许它通过不安全的信道发送到亚军,甚至是公共的,从而创建安全频道没有;
  18. 公钥: 非对称密码系统的组件,其适用于参数化加密,但不足以使解密参数的可行性贡献,即......
  19. 私钥: 非对称密码系统的组件,其足以参数化解密 因此必须私下保存 并且通常还足以参数化加密;

[1] 注意,这里,短语 解码 或者 解密 由于在给定的密码系统(包含其所有组件(包括其键)之前定义,因此不能将给定的方法分类为从加密的一个将原始消息作为预期的通信(解密)或攻击(解密) )。

[2] 虽然有技术可以改善这种猜测的工作,但它仍然比乘以它们仍然更加困难。

[3] 第一个灵感是看看 Tau猜想的树,一个无限的树,其在数字1​​中,其其他节点由整数组成,导致在先前节点之间的总和,减法或乘法的一个二进制操作,可能是与其自身运行的一个节点。理论的目标涉及这种树中的深度,其中每个整数都会出现。显然很难在低分支中找到大量数量(即使我们放宽需要它),但它立即检查给定的一系列操作是否确实产生给定结果。

[4] 这肯定不是最自然的方法,而是通过采用这一点,确保这个字节填充(调用 填充)......

  1. 隐藏填充的大小(例如,例如 密文窃取)掩盖了消息的末尾,从而渲染 选择 - 明文攻击 more difficult;
  2. 尽可能提高靠近均匀的比特分布;

如果已知每个消息的最后块被系统地偏离均匀分布,则攻击者可以利用这一事实来做统计密码分析,对于任何给定的消息样本都会是统计数据更大的代表性。换句话说,最后一个块在统计上不那么多样化,它们成为他们成为消息的最薄弱的链接。

[5] 没有错误:这位最伟大的普通除数是高斯,而以前是真实的。

[6] ......哪个并不完美,因为它很容易放弃最后三个组件成比例到1,2和4。但是,为了简单起见,我们将忽略此细节。

[7] ......这太复杂了 未能根据其实施和维护协议的臭名昭着的案件.

[8] 在这里,我们不会采用Rocha的多个线性组合块的方法,这也使我们能够随机吹动BIS以更加掩盖它们。

[9] 虽然不是完全随机的。它的转置必须跨越矢量$ e_1 =(1,0,...,0)$生成的子空间。