我在数据库中加密一个秘密。
我是使用AES加密的256位密钥和随机IV每次加密.
他们的AES密钥是硬编码的代码。每个IV被清空地存储在包含密码的行中的另一个字段中。
我如何改进这种加密?我相信我需要加密AES密钥,但我不确定最好的方案。请给我建议。
该秘密由同一组件加密和解密。我需要坚持这个(密码的)秘密。我正在使用C#。
发布于 2013-10-28 22:46:38
AES密钥在代码中是硬编码的。
这就是问题所在。但是,不,用另一个密钥加密密钥(这将在代码中进行硬编码)并不能显著改善问题。
您必须做的是:写下攻击模型。你做加密是有原因的:你相信某个邪恶的人会试图.具体是什么?这就是攻击模型的要点:定义假定的攻击者可以做什么,以及他想要实现什么。只有使用一个明确定义的攻击模型,您才能开始考虑哪些安全算法和协议将对您有所帮助。
例如,加密是一个很好的保密工具:攻击者希望读取一些数据,但您不希望他成功。加密并不能解决机密性问题,它只是集中了一个问题:通过加密,数据保密问题变成了密钥保密问题。由于密钥较短,这可能(或不可能)使问题更容易处理。一个重要的问题是决定谁应该能够访问数据。
简而言之:如果数据应该在攻击者的机器上解密(例如,攻击者是用户,并且您希望阻止他访问原始数据,作为某种许可或DRM方案的一部分),那么,坦率地说,您就输了。您不能可靠和一贯地阻止某人访问自己硬件上的数据。这是因为逆向工程运行得很好。如果您堆积了加密层(密钥是用另一个密钥加密的,等等,直到初始密钥是硬编码的),您只需增加开发时间和反向工程时间;很可能您比攻击者花费更多的时间。
https://security.stackexchange.com/questions/44589
复制相似问题