(4条消息) RSA(非对称加密)与ECC(椭圆曲线加密)的区别

1、RAS

2、ECC

椭圆曲线加解密算法原理

  建立基于椭圆曲线的加密机制,需要找到类似RSA质因子分解或其他求离散对数这样的难题。而椭圆曲线上的已知G和xG求x,是非常困难的,此即为椭圆曲线上的的离散对数问题。此处x即为私钥,xG即为公钥。

  椭圆曲线加密算法原理如下:

  设私钥、公钥分别为k、K,即K = kG,其中G为G点。

  公钥加密: 
  选择随机数r,将消息M生成密文C,该密文是一个点对,即: 
  C = {rG, M+rK},其中K为公钥

  私钥解密: 
  M + rK - k(rG) = M + r(kG) - k(rG) = M 
  其中k、K分别为私钥、公钥。

椭圆曲线签名算法原理

  椭圆曲线签名算法,即ECDSA。 
  设私钥、公钥分别为k、K,即K = kG,其中G为G点。

  私钥签名: 
  1、选择随机数r,计算点rG(x, y)。 
  2、根据随机数r、消息M的哈希h、私钥k,计算s = (h + kx)/r。 
  3、将消息M、和签名{rG, s}发给接收方。

  公钥验证签名: 
  1、接收方收到消息M、以及签名{rG=(x,y), s}。 
  2、根据消息求哈希h。 
  3、使用发送方公钥K计算:hG/s + xK/s,并与rG比较,如相等即验签成功。

  原理如下: 
  hG/s + xK/s = hG/s + x(kG)/s = (h+xk)G/s 
  = r(h+xk)G / (h+kx) = rG

3、RAS与ECC比较

数字签名技术已经广泛使用于网络安全协议或分布式系统中,目前比较流行的数字签名算法有RSA和ECDSA。很多同学在产品设计中往往都难以区分RSA和ECDSA的优劣,所以笔者将基于自己的实践,来给出一些初步的建议。

1. 密码强度比较

这是学术界普遍认可的密码强度对照表。比如,3072-bit的RSA密码强度,大约相当于283-bit的ECC密码强度,大约相当于128-bit的对称密码算法的强度。换句话说,攻击分组加密算法AES-128的难度,与攻击数字签名RSA-3072的难度相当。此外,我们应注意到,从RSA-1024到RSA-3072,模数长度增长了200%,但密码强度仅增强了50%左右;拿密码哈希函数来比较,这个安全强度的增长只是相当于从SHA1增强到SHA-256。

2. 性能比较

笔者基于开源的tommathlib实现了ECDSA(符合ANSI X9.62标准)和RSA签名算法(符合PKCS#1 v2.1, e=65537)。

表中数据是笔者基于自己的开发机器(Intel Xeon CPU E5520  @ 2.27GHz)上单线程运行得出的实验结果。对于ECDSA来说,生成签名与验证签名的开销相差不大,而对于RSA来说,验证签名比生成签名要高效得多,这是因为RSA可以选用小公钥指数,比如{3, 5, 17, 257 or 65537},而安全强度不变。如果只看单次操作,那么ECDSA的Sign操作比RSA的性能更好,而RSA的Verify要比ECDSA更好。

3. 结论

(1) RSA签名算法适合于:Verify操作频度高,而Sign操作频度低的应用场景。比如,分布式系统中基于capability的访问控制就是这样的一种场景。
(2) ECDSA签名算法适合于:Sign和Verify操作频度相当的应用场景。比如,点对点的安全信道建立。

(0)

相关推荐

  • 加密算法:什么是 Deffi-Hellman 算法?

    图解:什么是 Deffi-Hellman 算法? 背景 椭圆曲线(Elliptic Curve)的研究可以被追溯至十九世纪中叶,那时代数学家.几何代数学家.以及数论专家都在研究.1984年,Hendr ...

  • 这 HTTPS,真滴牛逼!

    HTTPS 常用的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法. 其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的.而 ECDHE 算法具有前向安全 ...

  • 密码套件:密码,算法和协商安全设置(二)

    上期内容我们分析了什么是密码套件以及它的背景,从算法和密钥.再到数学原理等方面进行详细地探讨,小编我都感觉非常精彩.那么这一期必须精彩继续,让我们接着深入地研究TLS 1.2密码套件的四个不同组件.但 ...

  • 椭圆曲线乘法ECDSA

    ECDSA算法 椭圆曲线乘法(又称为ECDSA)是密码学重要的非对称加密算法,同时在比特币系统中,私钥的生成使用的也是ECDSA算法.比特币使用了secp256k1标准定义的一条特殊的椭圆曲线和一系列 ...

  • (11条消息) 国密算法概述

    国密即国家密码局认定的国产密码算法,即商用密码. 国密算法是国家密码局制定标准的一系列算法.其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法.具体包括SM1,SM2,SM3等,其中: SM2为 ...

  • (7条消息) c语言中 char* 和 unsigned char* 的区别浅析

    背景 最近在项目中遇到了一个编译警告,是因为定义的变量为char[],而在使用时作为函数的unsigned char*类型的参数调用.这个警告很容易避免,但是char*和unsigned char*到 ...

  • (1条消息) java 过滤器、监听器、拦截器的区别

    先说最易混淆的过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求 ...

  • (14条消息) 使用ConfuserEx加密混淆程序以及如何脱壳反编译

    ConfuserEx是.NET下的一款开源混淆工具,功能比较强大,应用也较广泛,本文就使用ConfuserEx工具演示如何混淆及如何对其混淆的程序进行脱壳. 所需工具: 请自行百度下载如下工具: Co ...

  • (32条消息) 小米NFC手机复制加密IC门禁卡

    几年没有发过任何文字信息了.闲来无事发一个NFC手机复制加密门禁卡的教程 思路: 第一步通过破解加密的门禁卡得到dump文件,获取卡号.修改dump文件只保留0扇区0块的内容也就是卡号,通过读卡器写入 ...

  • (10条消息) JS gzip加密字符串并base64输出

    最近开发中遇到一些问题,关于js怎么给一个字符串进行字节流加密.下面就详细说下做法. 首先引入pako_deflate.min.js(https://github.com/nodeca/pako/tr ...

  • RSA 非对称加密原理(小白也能看懂哦~)

    RSA 加密原理 步骤说明描述备注 1找出质数P .Q- 2计算公共模数N = P * Q- 3欧拉函数φ(N) = (P-1)(Q-1)- 4计算公钥E1 < E < φ(N)E的取值必 ...

  • (7条消息) C++中位运算的使用方法

    一:简介1 位逻辑运算符:& (位   "与")  and^  (位   "异或")|   (位    "或")   or~  (位 ...

  • (35条消息) 中国城域网路由情况介绍

    中国的城域网,大概有三张比较典型的,一个是中国移动的CMnet,一个是中国电信IP城域网,还有一个是中国网通IP城域网.作为接入最后的阵地,城域网的业务是最复杂的.含盖了IPTV,语音,Interne ...

  • (35条消息) 家用宽带网络与服务器使用的网络有什么不同?

    很多人都知道,服务器的网络跟家用网络有很多区别.其中有很多技术大牛,都是使用家里的宽带做很多别人使用公网服务器才能完成的服务. 但是对于普通人来讲,似乎都觉得没什么区别,本文就此简单做一下区分: 固定 ...