UMBRAL:阈值代理重加密方案

UMBRAL github link

Overview

Umbral是遵循密钥封装机制(KEM)方法的阈值代理重新加密方案。 它受到ECIES-KEM 和BBS98代理重新加密方案的启发。 使用Umbral,Alice(在NuCypher KMS中为数据所有者的通用名称)可以通过一组N个半受信任的代理执行的重新加密过程,将针对任何给她的密文的解密权委派给Bob。 当这些代理中的至少t个(共N个)通过执行重新加密参与时,Bob能够组合这些独立的重新加密并使用其私钥解密原始消息。 “ Umbral”这个名称源于西班牙语中的“阈值”一词,强调了该方案的这一特性,因为它在NuCypher KMS的分散式体系结构中起着核心作用。

Roles setup

UMBRAL:阈值代理重加密方案_第1张图片
代理重新加密的简要介绍。代理重新加密是一种特殊类型的公钥加密,它允许代理将密文从一个公钥转换为另一个,而代理不能get到有关原始消息的任何信息。为此,代理必须拥有启用此过程的重新加密密钥。因此,它用作委派解密权限,打开许多可能需要委托访问加密数据的应用程序的手段。在PRE文献中,通常以委派​​关系来标记参与的各方,即:
Delegator( 委托人):该参与者是使用代理重新加密委托解密权的参与者。为此,他创建了一个重新加密密钥,并将其发送给代理。
Delegatee( 被委托人):被委托人授予解密密文的权利,尽管这些密文虽然最初不是给他使用的,但在原始收件人(即委托人)的许可下,已为他重新加密。
Proxy(代理服务器):它处理重新加密过程,该过程将代理人的公共密钥下的密文转换为委托人可以使用其私钥解密的密文。代理在此过程中使用重新加密密钥,并且不学习任何其他信息。

Features

方向性:如果重新加密密钥仅允许从Delegator到Delegatee的一个方向上转换密文,则PRE方案是单向的,否则为双向的。
跳数:如果重新加密的密文无法进行多跳(或多次使用),则PRE方案是单跳(或一次性使用) 否则为多跳。
**交互性:**如果在重新加密密钥生成过程中不需要Delegatee的Secret key,则该方案不是交互性的(由于他不必参与该过程)。 否则,我们说它是交互式的。

Process

UMBRAL:阈值代理重加密方案_第2张图片
(1)Key Generation Algorithms. 密钥生成
• **KeyGen()**密钥对生成: The key generation algorithm KeyGen outputs a pair of public and secret keys
(pk A , sk A ).
ReKeyGen(sk A , pk B , N, t)重加密密钥: On input the secret key sk A = a, the public key of the in-
tended delegatee pk B = g b , a number of fragments N , and a threshold t, the re-encryption
key generation algorithm ReKeyGen computes N fragments of the re-encryption key be-
tween A and B, each of them named kF rag.

(2)Encapsulation and Decapsulation.
Encapsulate(pk A )封装: On input the public key pk A , the encapsulation algorithm Encapsulate
a symmetric key K and a capsule that allows to derive again (i.e., “decapsulate”) the
symmetric key K.
Decapsulate(sk A , capsule) 解封便于重加密: On input the secret key sk A , and an original capsule, the
decapsulation algorithm Decapsulate outputs the symmetric key K, or ⊥ if the capsule
is invalid.
(3)Re-Encapsulation and Fragments Decapsulation.
ReEncapsulation(kF rag, capsule)重加密: On input a re-encryption key fragment kF rag, and a
capsule, the re-encapsulation algorithm ReEncapsulation outputs the capsule fragment
cF rag, or ⊥ if the the process fails.
DecapsulateFrags(sk B , {cF rag i } ti=1 , capsule)解密: On input the secret key sk B , and a set
of t capsule fragments or cF rags, the fragments decapsulation algorithm outputs the
symmetric key K, or ⊥ if the decryption fails.

你可能感兴趣的:(区块链,密码学)