我有几个关于ECIES的问题。我理解ECIES是如何工作的,如果我想让ECIES与ECDSA一起进行身份验证,我必须做些什么(我知道,为了完全身份验证,我必须拥有PKI,但是为了简单起见,我不会使用PKI)。我可以使用签名-加密-符号(如这里描述的与ECDSA):
ECIES(Bob's public key, M || ECDSA(Alice's static private key, M))在这种情况下,我有发送消息的结构:
[Alice's ephemeral public key, Alice's static public key, ciphertext, Mac's tag]我知道这是安全的,但例如Alice:
fetch Bob's static public key
generate ephemeral key pair
SK = ECDH(Bob's static public key, Alice's ephemeral private key)
Kenc || Kmac = KDF(SK)
Ciphertext = Encrypt(Message, Kenc)
ECDSA's tag = ECDSA(Ciphertext, Alice static private key)
HMAC's tag = MAC(Alice's static public key || Ciphertext || ECDSA's tag, Kmac)Alice首先制作ECDSA的标签,然后根据Alice的静态公钥、密文和ECDSA的标记制作MAC标签。Alice有消息的结构:
|Alice's ephemeral public key, Alice's static public key, Ciphertext, ECDSA's tag, MAC's tag|我认为这是安全的,因为ECDSA的标签是由Kmac签署的,而Eve不能只接收这条信息,扔掉Alice的ECDSA标签,用夏娃自己的密钥签名,因为在那之后她需要制作MAC标签,而她不能,因为她不知道Kmac。
我是否正确理解,这是安全的签名加密签名?
如果这是正确的,我不确定MAC的标签在这个方案中是否必要。爱丽丝会这样做:
fetch Bob's public key
generate ephemeral key pair
SK = ECDH(Bob's public key, Alice's ephemeral private key)
Kenc || Kmac = KDF(SK)
Ciphertext = Encrypt(Message, Kenc)
ECDSA's tag = ECDSA(Alice's public key || Ciphertext || Kmac, Alice's static private key)爱丽丝有发送信息的结构:
|Alice's ephemeral public key, Alice's staic public key, C, ECDSA's tag|我认为Bob可以使用ECDSA的标记来验证消息没有被更改,并且这个消息是由Alice发送的。伊芙不能妥协,因为她必须知道Kmac是用来做正确的ECDSA的标签,不是吗?
或者,例如,我是否可以只对握手消息使用最后一种方案,然后使用对称密码和MAC加密下一个消息?
发布于 2018-07-08 19:41:57
https://crypto.stackexchange.com/questions/60491
复制相似问题