博客
关于我
Zcash中的key aggrement
阅读量:283 次
发布时间:2019-03-01

本文共 2762 字,大约阅读时间需要 9 分钟。

1. 引言

所谓key agreement scheme K A KA KA,是指密码学协议中的双方agree a shared secret,每一方都使用 己方的private key和对方的public key。

key agreement scheme K A KA KA,其public key表示为 K A . P u b l i c KA.Public KA.Public,private key表示为 K A . P r i v a t e KA.Private KA.Private,shared secrets表示为 K A . S h a r e d S e c r e t KA.SharedSecret KA.SharedSecret

  • K A . D e r i v e P u b l i c : K A . P r i v a t e × K A . P u b l i c → K A . P u b l i c KA.DerivePublic: KA.Private\times KA.Public\rightarrow KA.Public KA.DerivePublic:KA.Private×KA.PublicKA.Public,为根据指定的KA private key和base point生成相应KA public key。

  • K A . A g r e e : K A . P r i v a t e × K A . P u b l i c → K A . S h a r e d S e c r e t KA.Agree: KA.Private\times KA.Public\rightarrow KA.SharedSecret KA.Agree:KA.Private×KA.PublicKA.SharedSecret,为the agreement function。

注意:

The range of K A . D e r i v e P u b l i c KA.DerivePublic KA.DerivePublic may be a strict subset of K A . P u b l i c KA.Public KA.Public

安全要求:

  • K A . F o r m a t P r i v a t e KA.FormatPrivate KA.FormatPrivate 必须从输入中保留足够的熵才能用作安全的 KA private key。
  • 下节介绍的key agreement 和 KDF (Key Derivation Function) 均必须满足类似 或 中的suitable adaptive security assumption。

2. Key Derivation

KDF (Key Derivation Function) 为一种特殊的key agreement scheme 和 authenticated one-time symmetric encryption scheme,其输入为:

  • 由key agreement输出的shared secret;
  • 其它参数。

其输出为:

  • a key suitable for the encryption scheme。

实际实现时,Sapling中的 K D F S a p l i n g KDF^{Sapling} KDFSapling的输入为:

  • the shared Diffie-Hellman secret s h a r e d S e c r e t sharedSecret sharedSecret
  • the ephermeral public key e p k epk epk

K D F S a p l i n g KDF^{Sapling} KDFSapling的输出为:

  • key for S y m . E n c r y p t Sym.Encrypt Sym.Encrypt

K D F S a p l i n g : K A S a p l i n g . S h a r e d S e c r e t × B Y [ l j / 8 ] → S y m . K KDF^{Sapling}: KA^{Sapling}.SharedSecret\times\mathbb{B}^{\mathbb{Y}^{[l_j/8]}}\rightarrow Sym.\mathbf{K} KDFSapling:KASapling.SharedSecret×BY[lj/8]Sym.K

【Shielded payment address 中包含的transmission key p k d pk_d pkd 可用于 a “key-private” asymmetric encryption scheme。所谓"key-private"是指,ciphertexts中不会泄露其加密key的信息,只对拥有加密key对应private key(此处也可称为receiving key)的一方可见。该机制主要用于communicate encrypted output notes on the block chain to their intended recipient,拥有receiving key的一方可扫描区块链来获取notes addressed to them 并 decrypt those notes。】

详细见博客 ,其中的基于 p k d pk_d pkd实现的asymmetric encrytion(输出为 C e n c C^{enc} Cenc)的构建过程中用到的 K A S a p l i n g 、 K D F S a p l i n g 和 S y m KA^{Sapling}、KDF^{Sapling}和Sym KASaplingKDFSaplingSym 都要求为 IND-CCA2-secure 和 key-private 的。

Key privacy的定义参见 。

3. Sapling key agreement 具体实现

Sapling key agreement K A S a p l i n g KA^{Sapling} KASapling 的具体实现为:

在这里插入图片描述

4. Sapling key derivation 具体实现

Sapling key derivation K D F S a p l i n g KDF^{Sapling} KDFSapling 的具体实现为:

在这里插入图片描述

参考资料

[1]

转载地址:http://fkqx.baihongyu.com/

你可能感兴趣的文章
NLP 模型中的偏差和公平性检测
查看>>
Vue3.0 性能提升主要是通过哪几方面体现的?
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP三大特征抽取器:CNN、RNN与Transformer全面解析
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP度量指标BELU真的完美么?
查看>>
NLP的不同研究领域和最新发展的概述
查看>>
NLP的神经网络训练的新模式
查看>>
NLP采用Bert进行简单文本情感分类
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
查看>>
NLP:从头开始的文本矢量化方法
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
nmap 使用方法详细介绍
查看>>
nmap使用
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
nmap指纹识别要点以及又快又准之方法
查看>>
Nmap渗透测试指南之指纹识别与探测、伺机而动
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>