斐波那契数列在标量乘法中的应用

频道:生活应用 日期: 浏览:26

技术与应用

斐波那契数列在标量乘法中的应用

李磊

0引

诞生了。此时只要不改变椭圆曲线方程和基础点P,任意改变标

Kobilitz和Millier:建议将椭圆曲线用于公钥加密体系的乘法系数k的规模,这个系数k的确定,能够借助预先保存的斐波那契数列来完成

自中叶起,椭圆在众多领域得到日益广泛的应用,这得益于其能显著降低运算的繁复程度。

曲线具有高比特的安全性,所以在资源有限的环境中更能得到广

1.2算法实现步骤简介

泛的应用,例如应用在智能卡和嵌入式设备中。

(1)先确定椭圆曲线方程和基点P。因为斐波那契算法是使

椭圆曲线计算中的一个很重要的操作就是点的标量乘法运

用了一个被称为斐波那契数库的结构,它局限于在同一条椭圆曲

算,例如计算kP,其中k是标量,P是椭圆曲线上的任意一点

线上的制定点P下执行。改变椭圆曲线任意一个系数或者改变基

标量乘法包括两个层雨上的操作:一个是椭圆曲线上点的基本操

点P都会产生个新的斐波那契数库

作,如点的倍加,二倍加和三倍加等;二是域上的操作,开发快

(2)生成斐波那契数库。给定曲线方程和基点P后会有唯一

速模块化的乘法和求逆算法等。人们提出了各种各样的算法用以

个斐波那契数库与之对应,系统会根据指令自动生成该数库并

提高椭圆曲线加密系统的效率。

保存。

日前计算标量乘法的方法有许多,例如二进制展开法、带符

3)输入系数k。系数k的值是可以任意输入的,因为只要

号的二进制法、m进制法以及利用复乘的GLV法等等。

k为正整数,都可以分解为若干个斐波郝契数之和。

SPA攻击是种有效地攻击方式,它通过对不同操作的功耗

(4)分解系数k。原理见斐波那契数列性质2,为方便程序

研究以获取涉及核心的资讯,针对加密活动里的各类步骤,在执行层面,我们运用了这种划分方法:首要是选取不大于量值ん的最值

能量使用模式能呈现多种形态,恶意攻击者借助各类斐波那契数值k,计算k减去k,再从中选取不超过k的最大斐波那契数

通过分析能量消耗的差异来提取有效数据,为了有效抵御侧信道攻击,应该首先确定k2的值,接着令m2等于m减去k2,然后继续这个步骤,直到m变为零,这样就可以

的办法就是将标量乘法中的操作尽可能的转化成同类型的操作

得到k对应的斐波那契加法链k,k2,ky…k。

例如将乘法转化为一系列的加法运算,这样就会使得功耗变化不

(5)在斐波那契数库中査找系数k分解后对应的项。由丁斐

再明显

斐波那契数列是这样一个数列“1,1,2,3,5“它存在这样

波那契数是固定的一组数,因此步骤(4)中分解得到的一组斐

个性质,即任意一个正整数都可以表示为若干个斐波那契数之

波邶契数群,包括k2,ky等k值,肯定存储于数据库里,采用对照方式能够十分便捷地

和。利用这一性质,我们可叮以把斐波那契数列运用到椭圆曲线标

容易的提取出相应的项。

量乘法的计算中来,通过对系数k的有效变化使kP的运算转化

(6)计算kP。通过步骤(5)的比对和提取,在使用次简

为加法运算(斐波那契法),这样就可以有效预防SPA攻击了。

单的点加法就可以还原最初的标量乘法kP

液那契数列的引入

2功能块实现

新的标量乘法的核心部分就是斐波那契数列的引入,由于任

2.1斐波那契数列和斐波那契数库的实现

意一个大整数都可以表示成斐波那契数列中若干项之和,所以对

(1)斐波那契数列( Fibonacci. m)程序

于大系数的分解有着重要的意义。

斐波那契数列有着非常利于程序实现的推导公式:

例如对于任意大整数14235,我们可以表示成

Fn)=F(v-1+F(n-2),m23

14235=10946+2584+610+895+1

下面就是斐波那契数列的源程序的编写了。因为斐波那契数

假如有一个斐波那契数列清单开元棋官方正版下载开yunapp体育官网入口下载手机版开yun体育app入口登录,很容易识别出10946、2584、610这些数值

列是这样一个数列112358

,它满足第一位和第二位都是

89, 5, 1均属于斐波那契数列,该数列具备特定的规律,按照第n项等于前两项之和的规则生成,第n项的值等于第n-1项与第n-2项之和,这一特点在设计过程中需要被考虑进去

性质,因此能够将其纳入标量运算范畴内,将kP改写成多个步骤时,由于是以函数文件方式存储,所以开头必须先使用 function

项之和,即

创建一个名为a-fb的函数,这个函数接收一个参数n,它指定了要构建一个fb函数,这个fb函数的作用是

kP=k,P+k2P+k3P+…,k为斐波那契数

实现的斐波那契数列函数,其中a是一个变量,就表示fb函数,

在上述公式里,若已知等式右侧各项的具体数值,那么P仅是为了方便后续程序设计而设定的符号:n代表fhb序列的项数

也就不难算出了,那么问题来了,怎么能够事先知道k1P的值

情况一,当n等于1时,需要特别指出,情况二,当n等于2时,也必须分开来讲,就是说,如果n

elseif n==2,a-

:当n>2时,就要开始用递推

关系了,可以假设b=fhb,那么a就应该是数列b再加上最

1.1斐波那契数库的使用

为了便于探讨新的标量乘法方法,我们借助椭圆曲线公式来体现梅1加上b,其中b代表最终那个值,通过这种方式,整个函数的构成得以展现

圆曲线,即

棍序就编辑完成,如图1所示:

y2=x2+ax+b,其中,b∈K

(2)

实际上这是一种简化了的椭圆曲线表示形式,这既有助于新

求基液那契序列

function f=Fibonacci(n

算法的程序实现而又不失一般椭圆曲线的性师。后,椭圆曲线

从以上表达式中可以看出,当系数a,b确

f(1)=1:f(2

的一般形式也随之确定,如果再给出点P,则可以构造这样一组

数据;

f(i)=f(1-2)+f(i-1)

P,P,2P,3P,5P8P…kP…,其中ん为斐波那契数

确定了椭圆曲线方程和点P,我们很容易根据椭圆曲线上点

图1斐波那契数列源码

的加法运算来求出2P,再由斐波那契数列的递推公式

(2)斐波那契数库( Fibonacci-Eccm)的建立

通过运用公式F(n)等于F(n-1)加上F(n-2),能够较为便捷地计算出后续各项的值

这里所说的斐波那契数库实际上就是系数为斐波那契数的

相应的数值。这样,针对特定方程中某一点P,其斐波那契数列的对应值就构成了一个标量乘法数值集合,例如P,P,2P,3P,5P,8P等等,之所以需要构建这样一套

万方数据

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。