我正在使用一个椭圆曲线库,它为我提供了一个共享的秘密,使用我的秘密密钥和外国公钥。不幸的是,在编程语言中没有ECIES。
我想按以下方式实施ECIES。
这种方法正确和安全吗?
发布于 2018-01-16 12:52:10
您所描述的是从泛型PRNG创建的流密码。但是,应该使用实际的流密码。PRNG是危险的,因为它们有时会被系统预先播种或重新播种.如果没有强制算法,那么底层实现也可能发生变化。否则:是的,如果正确使用,流密码当然可以用于获取消息的机密性。
在CTR (计数器)模式下的AES是一个相当安全的赌注。
你好像在用加密签名。通常使用签名后加密。加密签名的问题是有人可以重新签署密文,并声称它的所有权。另一个方面是解密后签名丢失。
因此,通常将签名加密用于不对称原语,如ECIES和ECDSA.但是,在您的特定协议中,这可能不是问题;您可能只希望允许来自一个特定的私钥/公钥的签名,并且您可以很好地保护传输中的密文。
一旦建立了密钥并对交换进行了身份验证,您还可以使用AES-GCM或其他经过验证的密码发送消息,提供消息的完整性、真实性,当然还可以提供消息的机密性。
注意,如果要创建传输协议,还有很多工作要做。在适当的地方,加密对可能的攻击向量来说稍微容易一些。如果系统最终是安全的,这取决于系统可能受到的威胁是否被阻止。
因此,我们不能告诉您您的方法是否安全;我们可以判断它是否不安全,不过:)
https://crypto.stackexchange.com/questions/54749
复制相似问题