首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECIES中的符号+ ETM

ECIES中的符号+ ETM
EN

Cryptography用户
提问于 2016-12-26 17:45:24
回答 1查看 172关注 0票数 0

在文件加密协议中使用ECIES,我需要对发送方进行身份验证,所以我使用了ECDSA,并且我想知道签署临时公钥(接收方需要用于派生共享对称密钥)是否可行?目的是防止MitM伪造和发送假的临时公钥。代码(C#)使用Inferno,但是考虑到显式变量名和注释,很容易理解:

代码语言:javascript
复制
    internal static void Encrypt(CngKey receiverPublicDhm, CngKey senderDsa, string file, string text)
    {
        var plainTextBytes = text.ToBytes();                         

        var ephemeralBundle = receiverPublicDhm.GetSharedEphemeralDhmSecret();
        var ephemeralPublic = ephemeralBundle.EphemeralDhmPublicKeyBlob;
        var sharedSymmetric = ephemeralBundle.SharedSecret;

        // sign emphemeral public blob and plainText(so that MitM cannot forge a fake ephemeral public key)
        var toSign = Utils.Combine(ephemeralPublic, plainTextBytes);
        byte[] signed;
        using (var ecdsa = new ECDsaCng(senderDsa) { HashAlgorithm = CngAlgorithm.Sha384 })
            signed = ecdsa.SignData(toSign);

        // ETM signature and plaintext
        var toEncrypt = Utils.Combine(signed, plainTextBytes);
        var encrypted = SuiteB.Encrypt(sharedSymmetric, toEncrypt.AsArraySegment());

        using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write))
        {
            // so the format is:
            // [ephemeral public] (signed but not encrypted)
            // [signature] [ciphertext] (both encrypted and MAC'd)
            fs.Write(ephemeralPublic, 0, ephemeralPublic.Length);
            fs.Write(encrypted, 0, encrypted.Length);                                                       
        }
    }

编辑:修正了文件格式描述中的错误

EN

回答 1

Cryptography用户

回答已采纳

发布于 2016-12-28 14:56:26

我不同意Maarten Bodewes对您的特定场景/代码的回答:

  1. 您的ECDSA签名代码不会泄漏有关明文的信息。然而,即使是这样,签名和明文也是加密的。不受MiTM影响)。为了获得ECDSA签名,首先需要解密(即。不管怎么说,明文在解密时都会显示出来)。
  2. 您的代码没有对ECDH公钥进行签名。它正在临时公钥+明文上签名哈希。得到的签名是Inferno加密的(安全性针对MiTM)和安全的接收者篡改。

我相信你所采取的方法没有什么不对。我不对您的文件格式/代码提供任何评论。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/42553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档