本发明专利技术公开了一种基于UCPS协议的快速模乘方法,它是在现有的移位-加算法的基础上,将每次移位1比特位,改为将每次移位16比特位,将加法器转化为减法器。本发明专利技术还公开了一种基于UCPS协议的快速模乘硬件实现方法,采用两级流水线结构;第一级流水线为相乘流水线,计算:y[(i×16-1):(i-1)×16]×x;第二级流水线为取模流水线,计算:x`[191:0]+x`[209:192]×(~n);基本运算单元为16位乘法器和16位加法器,将192bit×16bit运算分解为12次16bit×16bit运算;192bit+192bit运算分解为12次16bit+16bit运算。本发明专利技术能够有效提高模乘的计算速度,而且简单易行。
【技术实现步骤摘要】
本专利技术涉及多媒体领域,特别是涉及一种基于UCPS协议的快速模乘方法。本专利技术还涉及一种基于UCPS协议的快速模硬件实现方法。
技术介绍
为绕开国外HDCP(High-bandwidth Digital Content Protection高带宽数字内容保护规范)的技术专利壁垒,同时也为适应中国这个庞大的数字多媒体市场的开发,我国提出了统一数字保护协议,简称UCPS(Unified Content Protection System)协议,它是我国提出的具有自主知识产权的数字保护协议,该协议可以用在从便携式多媒体设备到高清数字电视的各种多媒体设备上。 UCPS协议中最耗费运算时间的是数字签各部分,椭圆曲线密码体系(Elliptic Curve CryptographyECC)标量乘是数字签名的核心部分,而模乘又是其中的基本单元,所以模乘的速度关乎到整个协议性能优越与否的关键。 模乘是乘数与被乘数相乘得出乘积后对某个素数求模运算(即求余数),即q=a×b mod n。在一般情况下多采用蒙格马利模乘。但是由于蒙格马利模乘是一种通用模乘方法,软硬件实现成本大,即便是进行优化也会保持原有的框架,实现代价还是不会有很明显的减少,因此,提高和改善模乘速度和性能势在必行。
技术实现思路
本专利技术要解决的技术问题是提供一种基于UCPS协议的快速模乘方法,硬件实现方法,能够有效提高模乘的计算速度,而且简单易行;为此,本专利技术还要提供一种基于UCPS协议的快速模硬件实现方法。 为解决上述技术问题,本专利技术的基于UCPS协议的快速模乘方法,是在现有的移位-加算法的基础上,将每次移位1比特位,改为将每次移位16比特位,将加法器转化为减法器; 设,输入 192位x,y 192位模值n; 输出 xy mod n; 具体实现的步骤如下 步骤1、初始化x`=y×x; 步骤2、令i从12到1循环, x`=x`+x`×(~n)//~n表示n的补码, x`=x`<<16, s=x`+y×x; 步骤3、s=x`+x`×(~n); 步骤4、若(s=1),则s=s+(~n); 步骤5、返回s; 其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均为192比特位数,i为0-191的整数。 本专利技术的基于UCPS协议的快速模乘硬件实现方法是采用两级流水线结构; 第一级流水线为相乘流水线,计算y×x; 第二级流水线为取模流水线,计算x`+x`×(~n); 基本运算单元为16位乘法器和16位加法器,将192比特位×16比特位运算分解为12次16比特位×16比特位运算;192比特位+192比特位运算分解为12次16比特位+16比特位运算,其中x`,x,y,n均为192比特位数,i为0-191的整数。 本专利技术根据UCPS协议中椭圆曲线密码体系算法的一些特点,提出了一种基于流水线的简单有效的模乘实现方法,该方法以16位乘法单元为基础采用流水线的方式实现,提高了计算速度,比蒙格马利模乘平均要快4~5倍。 附图说明 下面结合附图与具体实施方式对本专利技术作进一步详细的说明 图1是本专利技术的实现模乘的ECC_MM模块框图; 图2是图1所示ECC_MM模块框图接口时序图; 图3是图1所示ECC_MM模块框图验证方案示意图。 具体实施例方式 如前所述,模乘运算可以采用下式表示 q=a×b mod n公式(1) 其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,a、b、n、q均为192bit(比特位)数。完成一次计算需要226个时钟周期;在SPIIIE(XILINX公司芯片编号)器件上最高工作频率达到82MHz。 实现公式(1)的模乘ECC_MM模块硬件电路结构参见图1,其接口信号如下表1所示。 表1,ECC_MM模块接口信号表 接口信号的时序参见图2所示。 本专利技术的基于UCPS协议的快速模乘硬件实现方法是由移位-加算法演变而来的。移位-加算法的数学描述如下 输入 192位x,y 192位模值n 输出 xy mod n 具体实现的步骤是 步骤一、初始化x`=x,若y(191)=1,则s=x`,否则s=0; 步骤二、令i从191到0循环,且使x`=x<<1, 若x`>n,则x`=x`-n, 若y(i)=1,则s=s+x`, 若>n,则s=s-n; 步骤三、返回s。 其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均为192bit数,i为0-191的整数。 将上述算法进行改进,由每次移位1bit(位)改为移位16bit(位),将比较器转换为减法器(加补码),其数学表达如下 输入 192位x,y 192位模值n 输出 xy mod n 具体实现的步骤是 步骤1、初始化x`=y×x; 步骤2、令i从12到1循环, x`=x`+x`×(~n)//~n表示n的补码, x`=x`<<16, s=x`+y×x, 步骤3、s=x`+x`×(~n); 步骤4、若(s=1),则s=s+(~n); 步骤5、返回s。 上述改进后的算法,硬件电路实现采用流水线的方式,基本运算单元为16位乘法器和16位加法器。如上述表达式中将192bit×16bit运算分解为12次16bit×16bit运算;192bit+192bit运算分解为12次16bit+16bit运算。若采用两条流水线,则取模流水线计算x`+x`×(~n),相乘流水线计算y×x。最佳设计情况下,改进后的算法步骤2循环需要12*12=144时钟周期,整个模乘需要144+12*2=168时钟周期(步骤4要运行2次)。 第一级流水线(相乘流水线)按16bit分组完成两个192bit相乘计算,结果存储在存储单元mul_qp中。当启动计算,一个时钟脉冲信号mm_start有效时,控制x(即输入乘数mm_a)移位的计数器cnt_a和控制y(即输入乘数mm_b)移位的计数器cnt_b清0,cnt_a计数达到16时cnt_b进位,如取输入乘数mm_b乘输入乘数mm_a时,输入乘数mm_a依次移位送输入乘数mm_a、mm_a……到16位乘法器MULT16X16,当cnt_a=11时乘法器完成16bit×192bit的计算,cnt_a=15时相乘结果完全存储到存储单元mul_qp中。 第二级流水线(取模流水线)对存储单元mul_qp的值取模,左移16bit。取模过程为 result=mul_qp+mul_qp×(~n)。 取模流水线和第一级流水线一样,基本单元为16bit加法器和乘法器。左移16位在代码里采用比第一级流水线时序滞后一拍实现,因为一个时钟周期计算16bit。 本专利技术采用FPGA(Field Programmeble Gate Array现场可编程门阵列)进行了验证,验证的方案参见图3所示。由于UCPS硬件DEMO(演示板)系统本文档来自技高网...
【技术保护点】
一种基于UCPS协议的快速模乘方法,其特征在于:它是在现有的移位-加算法的基础上,将每次移位1比特位,改为将每次移位16比特位,将加法器转化为减法器;设,输入192位x,y192位模值n;输出xymodn;具体实现的步骤如下:步骤1、初始化x`=y[191:176]×x;步骤2、令i从12到1循环,x`[192:0]=x`[191:0]+x`[209:192]×(~n)//~n表示n的补码,x`=x`<<16,s=x`+y[(i×16-1):(i-1)×16]×x;步骤3、s=x`[191:0]+x`[209:192]×(~n);步骤4、若(s[192]=1),则s=s+(~n);步骤5、返回s;其中:n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均为192比特位数,i为0-191的整数。
【技术特征摘要】
【专利技术属性】
技术研发人员:闵敬国,袁世强,
申请(专利权)人:上海华虹集成电路有限责任公司,
类型:发明
国别省市:31[中国|上海]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。