智能合约隐私计算之基于FO承诺的零知识范围证明

本文首发公众号:区块链之美关注公众号后可免费阅读!区块链之美 致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。
在这里插入图片描述

至此,已经介绍了改进的Paillier加法同态加密,以及FO承诺和基于FO承诺的范围证明。目前暂未介绍改进的同态加密算法加密,下面介绍基于FO承诺的零知识范围证明实现原理与应用举例,如下!

1. 问题引出

在隐私保护技术方面,比较突出的有两种主流的开源密码数字货币:Monero和Zcash。这两种隐匿币采用的账户模型是UTXO模型,并非ACCOUNT模型。Monero在地址隐私方面采用环签名和一次性地址技术,在交易数据隐私方面采用基于环签名和Pedersen承诺的Ring CT方案,同时也解决了交易输入输出地址不可链接且不可跟踪问题。Zcash在交易数据隐私方面采用的是自研的非交互式零知识证明技术zk-SNARKs。此外,业界还提出一种不用进行可信设置的非交互式零知识证明技术Bulletproof,可结合Pedersen承诺解决范围证明问题。

如果用户的交易数据未加密,用户的资金情况以及交易金额等隐私信息很容易泄露,阻止了区块链技术在更多领域内的应用。虽然可以采用加密技术来对用户的交易数据进行加密,但是在传统的交易过程中,为了防止应用层发起非法交易,链码端还需要对交易数据的合法性进行校验,即对输入金额与输出金额相等性校验、交易金额大于0校验和用户余额大于0校验,这些校验在交易数据为明文时很容易完成,但是在对交易信息采用加密技术后,链码端出现的数据均为密文状态,致使无法像校验明文那样来完成校验过程,同时也无法对密文进行相关的运算,来完成对账本的更新。

同态加密是一种具有特殊属性的非对称加密方法,该加密方法可以对加密后的数据进行基本的运算,然后对结果进行解密与直接用明文进行相应的运算结果是一致的,通过使用同态加密算法,能够让链码端在不解密交易数据的情况下对交易密文进行相关的运算,来完成对用户资产的更新。零知识证明是一种基于承诺的证明技术,该技术可以让验证者在不知道承诺中秘密的情况下,相信关于承诺中秘密的有关信息,譬如秘密所在的范围或两个承诺中是否隐藏同一个秘密,通过使用零知识证明技术,能够使链码端在交易信息为密文的情况下,判断密文中隐藏值的所在范围,来完成对交易信息的校验过程。

因此,一种交易金额的同态加密计算和零知识证明方案,主要解决交易数据在智能合约中如何进行密文加法计算,同时提供对密文数据的有效性证明和验证,例如交易秘密数据范围证明交易秘密数据承诺相等证明交易私密数据输入输出平衡验证

2. 范围证明

首先,我们来研究不使用zk-snark、Bulletproof、Ring CT等技术如何实现范围证明。

FO承诺在没有附加条件下应用于区块链交易时不安全的。利用FO承诺的同态性很容易验证交易的平衡特性,即验证方只需要将输入金额的承诺与输出承诺比较就能确定交易的正确性。这种方案简单且能验证交易,但是并不安全。因为承诺的加减要在一个循环群内进行模 N N N的操作,所以存在溢出或出现负数金额的可能。通常情况下解决的办法是附加一个范围证明条件,证明交易金额为正整数或者在一个确定的整数范围内,如 [ 0 , 2 10 ] [0,2^{10}] [0,210]

以下内容,参考自[1]。设 t , l , s 1 , s 2 t,l,s_1,s_2 t,l,s1,s2为公开的安全参数, n n n为一个大合数,其因式分解Alice和Bob未知。对于 x x x的两个承诺,分别为 E i ( x , r i ) = g i x h i r i m o d n , i = 1 或 2 E_i(x,r_i)=g_i^xh_i^{r_i}modn,i = 1或2 Ei(x,ri)=gixhirimodn,i=12。随机数 r i ∈ [ 2 s 1 n + 1 , 2 s 1 n − 1 ] , i = 1 或 2 r_i \in [2^{s_1}n+1,2^{s_1}n-1],i = 1或2 ri[2s1n+1,2s1

基于STM32F07Z8T6的智能鱼缸程序需要实现以下功能: 1. 监测水温、水质、水位等参数,显示在LCD屏幕上。 2. 控制水泵、加热器、氧气泵等设备的开关,保证鱼缸内环境的稳定。 3. 实现定时喂食功能,可以设置每天几次、每次喂多少鱼食等。 4. 实现远程监控和控制功能,可以通过手机APP或者网页远程查看鱼缸内环境参数和控制设备开关。 基于以上需求,可以设计STM32F07Z8T6智能鱼缸程序的架构: 1. 硬件部分:包括温度传感器、水质传感器、水位传感器、水泵、加热器、氧气泵、LCD屏幕等设备。 2. 通信部分:包括WiFi模块或者蓝牙模块,用于实现远程监控和控制功能。 3. 控制部分:基于传感器数据和用户设置的参数,实现设备的自动控制和定时喂食功能。 具体实现过程如下: 1. 硬件连接:将温度传感器、水质传感器、水位传感器、水泵、加热器、氧气泵等设备连接到STM32F07Z8T6开发板上。 2. 传感器数据采集:通过ADC模块对温度传感器、水质传感器、水位传感器的模拟信号进行采样,将采样结果转换为数字信号,用于后续的数据处理。 3. 设备控制:基于传感器数据和用户设置的参数,通过GPIO模块控制水泵、加热器、氧气泵等设备的开关。 4. 定时喂食功能:通过定时器模块和外部中断模块实现定时喂食功能,用户可以通过按键设置每天几次、每次喂多少鱼食等参数。 5. LCD屏幕显示:通过LCD驱动模块将温度、水质、水位等参数显示在LCD屏幕上。 6. 远程监控和控制:通过WiFi模块或者蓝牙模块实现远程监控和控制功能,用户可以通过手机APP或者网页远程查看鱼缸内环境参数和控制设备开关。 基于以上实现过程,可以设计出一套完整的基于STM32F07Z8T6的智能鱼缸程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值