1. API接口

ristretto255用于实现对cofactor不为1曲线的抽象,对外主要提供以下API接口:

  • 1)“Encode”:将internal representations编码为bytestrings,使相同的ristretto255 element上所有相同的repsentations被编码为完全相同的bytestrings;
  • 2)“DECODE”:将bytestrings解码为internal representations,且可对这些internal representations进行built-in validation,保证仅接受由有效ristretto255 elements编码的bytestrings;
  • 3)“EQUALS”:对internal representations进行比对,对于相同ristretto255 element的不同internal representations表示,这些representations也被认为是等效的。
  • 4)“FROM_UNIFORM_BYTES":为hash-to-group和random-point运算提供一致的映射关系(由bytestrings到ristretto255 elements)。

以上提到的internal representations为elliptic curve points,所以内部的group element 加/减/scalar乘法运算可转换为对ellptic curve points的加/减/scalar乘法运算。

这个group运算需要用到Curve25519的Edward curve特性。

/// edwards.rs文件中注释:
Group operations for Curve25519, in Edwards form.

ristretto255抽象层对性能的损耗很小,个别特定的操作(如EQUALS)的运行性能甚至优于底层使用elliptic curve points的运算性能。

2. ristretto255 element

ristretto255 group element为prime order group element的抽象。

  • “element encoding”为对一个ristretto255 group element(以下简称group element)的编码(该编码唯一且可逆的);
  • “internal representation”为实现ristretto255的ellptic curve上的一个point。
    每个group point可以有多个等效的internal representations。(即可满足cofactor不为1的曲线。)

ristretto255 group element以扩展坐标系(x,y,z,t)形式表示。

3. 基于Curve25519的ristretto255层实现

当把Curve25519 points作为internal representation时,具体的ristretto255 group实现细节如下:

Curve25519具有order—— l = 2 252 + 27742317777372353535851937790883648493 l=2^{252}+27742317777372353535851937790883648493 l=2252+27742317777372353535851937790883648493。

ristretto255为prime order group,其中的每个element均可作为generator,但是为了互操作性便利,会选择一个经典的generator——该generator对应的为Curve25519的basepoint,以便于复用现有scalar multiplication的precomputation。这个经典的generator的编码对应为:

e2f2ae0a 6abc4e71 a884a961 c500515f 58e30b6a a582dd8d b6a65945 e08d2d76

参考资料:
[1] https://eprint.iacr.org/2015/673.pdf
[2] https://tools.ietf.org/pdf/draft-hdevalence-cfrg-ristretto-01.pdf
[3] https://ristretto.group/ristretto.html
[4] https://github.com/dalek-cryptography/curve25519-dalek
[5] https://mp.csdn.net/mdeditor/94566837#

ristretto255对外API抽象及基于Curve25519的ristretto255层实现相关推荐

  1. 对外API接口的安全性设计及鉴权方式

    对外API接口的安全性设计及鉴权方式 API鉴权方式 API Key + API Secret实现API鉴权 Cookie + Session实现API鉴权 token机制实现API鉴权 API接口的 ...

  2. JWT的API鉴权,基于拦截器的token与鉴权

    基于JWT的API鉴权 基于拦截器的token与鉴权 如果我们每个方法都去写一段代码,冗余度太高,不利于维护,那如何做使我们的代码看起来更清爽呢?我们可以  将这段代码放入拦截器去实现 Spring中 ...

  3. ArcGIS JS API 4.X实现动态地图服务子图层显隐控制

    ArcGIS JS API 4.X实现动态地图服务子图层显隐控制 文章目录 ArcGIS JS API 4.X实现动态地图服务子图层显隐控制 使用场景 官网示例 注意事项 使用场景 图层控制功能 官网 ...

  4. DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界

    DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界 目录 输出结果 设计代码 输出结果 设计代码 首先查看数据集 import numpy as np from ...

  5. mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)

    using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...

  6. 基于单片机的八层电梯设计

    设计简介: 本设计是基于单片机的八层电梯设计,主要实现以下功能: ①可实现通过内机按键和外机按键控制电梯到达楼层 ②可实现通过一个四相步进电机控制电梯升降,另一个四相步进电机控制电梯开关门 ③可实现通 ...

  7. 【单片机毕业设计】【mcuclub-jj-003】基于单片机的八层电梯的设计

    最近设计了一个项目基于单片机的八层电梯系统,与大家分享一下: 一.基本介绍 项目名:八层电梯 项目编号:mcuclub-jj-003 单片机类型:STC89C52.STM32F103C8T6 功能简介 ...

  8. 基于单片机的六层电梯设计

    设计简介: 本设计是基于单片机的六层电梯设计,主要实现以下功能: ①可实现通过内机按键和外机按键控制电梯到达楼层 ②可实现通过一个四相步进电机控制电梯升降,另一个四相步进电机控制电梯开关门 ③可实现通 ...

  9. 基于MCGS的六层电梯控制

    基于MCGS的六层电梯控制 利用MCGS组态软件进行六层电梯的仿真模拟监控界面设计,需实现电梯轿厢的上下运行显示,内呼选层控制和外呼按钮控制,电梯轿厢开关门显示等,需界面形象逼真,能够实现内外呼申请控 ...

最新文章

  1. 3-flutter 项目结构 资源 依赖
  2. python 文件名相关
  3. 十四、H.264的变换编码(一)——矩阵运算与正交变换基本概念
  4. Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
  5. 光纤交换机的配置 光纤交换机的由来是什么
  6. 11-Flutter移动电商实战-首页_屏幕适配方案和制作
  7. 适用于zTree 、EasyUI tree、EasyUI treegrid
  8. package 和 install的区别
  9. nginx一键安装脚本
  10. linux输入法小结
  11. hdu 1316 斐波那契数
  12. 《数据库系统概念》20-恢复系统
  13. iOS开发,自定义字体,字体名称查询
  14. 2022Java最新学习路线(初学者必看)
  15. python智能推荐系统教程_最新Python黑马头条推荐系统项目视频教程(精讲)
  16. linux下看学校的IPTV
  17. 如何利用 composer 替换第三方包里的某个类(color-thief-php为例)
  18. MD-Pandoc进阶教程:图表、文献和目录
  19. stm32-mini-LCD液晶显示实验
  20. c语言 宏do while,关于C语言宏定义 使用do{ xxxx }while()

热门文章

  1. android x86怎么装驱动,mt65xx android phone驱动怎么安装【图文教程】
  2. 12个国外免费DNS
  3. Numpy:repeat用法图解
  4. 磁盘IOPS概念及IOPS的计算与测试
  5. 计算机专业用什么轴的键盘,平常爱打游戏,机械键盘应该买什么轴?
  6. 线程二—— 网图下载
  7. 推荐系统-排序算法:GBDT+LR
  8. php 获取微博cookie,获取新浪微博cookie
  9. 查看java web日志_java web 日志详细
  10. UTF8 中文占几个字节