ECC椭圆曲线密码学简介

什么是椭圆曲线?

我们在《几何》课本里学过二元一次方程表示直线,二元二次方程表示圆锥曲线(圆,椭圆,双曲线和抛物线),那么二元三次方程表示什么曲线呢?答案自然就是椭圆曲线。为了方便研究,大部分的二元三次方程可以简化成魏尔斯特拉斯方程的形式,见公式(4)。其中,系数a 和b 需要满足条件4a3 + 27b2 ≠ 0,该条件保证方程中不会出现非奇异点以获得平滑的椭圆曲线。

ax + by + z = 0 (1)

ax2 + by2 + cxy + dx + ey + = 0 (2)

ax3 + bx2y + cxy2 + dy3 + ex2 + fxy + gy2 + hx + iy + j = 0 (3)

y2 = x3 + ax + b (4)

一个违反直觉的事实是:椭圆曲线的形状跟椭圆毫无关系。当初数学家们在研究如何计算椭圆弧长的时候发现需要求解如下类型的积分, 由于和椭圆相关,积分中的分母项y =√(x3+ax+b) 便被称作椭圆曲线。


下图展示了一些合法的椭圆曲线,

下图展示了两种非法的椭圆曲线,分别存在一个尖点和叉点使曲线不平滑。

密码学与有限循环群

现代密码学算法和协议中,消息是作为有限空间中的数字或元素来处理的。加密和解密的各种操作必须在消息之间进行变换,以使变换服从有限消息空间内部的封闭性。然而,数的一般运算诸如加减乘除并不满足有限空间内部的封闭性。所以密码算法通常运行于具有某些保持封闭性的代数结构的空间中,这种代数结构就是有限循环群。在数学中,群是一种代数结构,由一个集合以及一个二元运算组成。群必须满足以下四个条件:封闭性,结合律,存在单位元和存在逆元。

最常见的群之一是整数集Z以及加法操作。

有限循环群在群的基础上满足两个额外条件:群元素个数有限以及交换律。循环群由单个元素(产生元)的叠加操作生成,最常见的有限循环群为模拟时钟。

椭圆曲线群定义

1985年,Neal Koblitz和Victor S.Miller分别独立提出利用椭圆曲线产生椭圆曲线循环群用于密码学。在数学上,椭圆曲线群的元素为椭圆曲线上的点,群操作为”+”,”+”的定义为,给定曲线两点P,Q,P+Q等于P和Q两点的连线与曲线交点沿X轴的对称点,如果P=Q,则P+P等于P在曲线上的切线与曲线交点沿X轴的对称点。该群的单位元为无穷远零点记作O=(0,0),有P+O=P,点P的逆元为其沿X轴的对称点,记作-P。

下图演示了如何计算P+Q=R(P≠Q)。

下图演示了如何计算P+Q=2P=R(P=Q)。

下图演示了如何计算P的逆元-P。

椭圆曲线有限循环群

前面介绍的椭圆曲线都是基于有理数的,但是计算机运算浮点数(小数)的速度较慢,更重要的是四舍五入浮点数会产生误差,导致多次加密解密操作后原始消息不能被还原。故考虑到加密算法的可实现性,密码学上使用基于整数的模加运算产生椭圆曲线有限循环群。

本文不涉及具体的数学计算,将用具体的例子展示如何产生ECC有限循环群。例如考虑y2=x3-7x+10(mod 19)的集合,该集合中所有的元素如下图所示。模运算把发散的椭圆曲线映射到19*19的正方形空间中,并且保持了原有曲线的上下对称特性。

下图展示了y2=x3-7x+10(mod19)集合中的元素和椭圆曲线的关系。

点Q’映射到点Q,点P的对称点也由点-P’映射到点-P。

如果取一个更大的质数p进行模运算,集合中的元素点也会相应地增多。下图展示了利用同一个曲线方程进行不同模运算的结果。在实际的椭圆曲线加密算法中,使用长度为192-256位的质数p进行模运算。

现在我们基于y2=x3-7x+10(mod19),利用产生元P=(2,2)来生成ECC有限循环群。如下图所示。具体的计算使用在线的ECC计算器(链接见参考资料)。

G={nP|P=(2,2)}完整的集合为{p=(2,2),2P=(13,8),3P=(1,2),4P=(16,17),5P=(10,3),6P=(18,15),7P=(3,15),8P=(12,1),9P=(9,12),10P=(5,10),11P=(17,15),12P=(7,0),13P=(17,4),14P=(5,9),15P=(9,7),16P=(12,18),17P=(3,4),18P=(18,4),19P=(10,16),20P=(16,2),21P=(1,17),22P=(13,11),23P=(2,17),24P=O=(0,0)}。如下图所示,随着n的连续增加,元素点的分布没有任何特征,这正是密码学需要的特性。

椭圆曲线离散对数问题ECDLP

请问上图中与点Q相对应的n值为多少?查找集合G={nP|P=(2,2)}中的元素可知答案是Q=(5,10)=10P,但是实际应用中没有现成的集合可供查表。若已知某个点Q,只能用比较原始的方法演算可能的n值,目前可实现的效率最高的算法为Baby-step giant-step算法,计算复杂度为O(√n)。反过来,如果已知n计算n*P则简单的多,因为有限循环群满足结合律,可以使用square and multiply算法,计算复杂度为O(<2log2n)。例如,比特币使用名为secp256k1的标准ECC曲线,n的长度为256位. Baby-step giant-step算法的计算复杂度为O(2128),而square and multiply算法的计算复杂度仅为O(<512)。

用密码学术语描述为:ECC有限循环群构成了一个单向函数Q=nP,已知n,P可以很容易计算Q;反过来已知P,Q则难以计算n.于是(n,Q=n*P )构成了一对私钥和公钥。

举个具体的例子,利用square and multiply 算法计算Q=137P,仅需9步便得到计算结果。

ECDH基于椭圆曲线的Diffie-Hellman密钥交换

ECC可以用于加密解密,但是由于其算法复杂计算速度慢,故莱迪思iCE40 UltraPlus系列芯片综合使用ECDH算法进行密钥交换,再通过AES进行消息的快速加密/解密助力于IoT通信。故本文以iCE40 UltraPlus芯片的Security IP为例介绍ECDH密钥交换。下图为ECDH密钥交换算法的示意图,iCE40Plus和Host分别产生自己的私钥和公钥,然后通过公共网络把公钥分享给对方,再各自使用私钥在本地计算出相同的密钥进行AES加密通信。

由于有限循环群满足交换律,我们可以验证KEYHost=m*n*P=n*m*P=KEYFPGA.

总结

相比于RSA和经典DL加密,ECC使用更短的密钥实现更安全的非对称加密。莱迪思首先在低功耗低成本FPGA中实现了ECC密钥交换算法助力于IoT通信。本文简要介绍了ECC的相关知识,希望能对大家在具体实施加密方案的时候提供一定的帮助与指导。

8参考资料

Blog: Andrea Corbellini. Elliptic Curve Cryptography: a gentle introduction. Link: andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/

Book: Wenbo Mao. Modern Cryptography: Theory and Practice.

Blog: Certicom. ECC tutorial. Link: www.certicom.com/content/certicom/en/ecc-tutorial.html

Online Tool: Online tool: ECC calculator. Link: christelbach.com/ECCalculator.aspx

Paper: 陆俊,浅说椭圆曲线。

Paper: Mahesh Agarwal. Elliptic Curves do arise from ellipses.

Online Course: Christof Paar. Understanding Cryptography. Link: www.crpto-textbook.com


https://mp.weixin.qq.com/s/jOcVk7olBDgBgoy56m5cxQ

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容