我必须确保我的应用程序拍摄的媒体(图片、视频和音频)是加密的,并且在应用程序范围之外不可见。为此,我不确定是否应该使用 AES 加密或 Libsodium。从论坛来看,这两种方法都受到了好评,那么就内存需求、速度和整体安全性而言,哪种方法最强大、最有效。
其次,在应用程序没有任何 Internet 连接的离线场景中,这是管理加密密钥的最安全方式吗?
我必须确保我的应用程序拍摄的媒体(图片、视频和音频)是加密的,并且在应用程序范围之外不可见。为此,我不确定是否应该使用 AES 加密或 Libsodium。从论坛来看,这两种方法都受到了好评,那么就内存需求、速度和整体安全性而言,哪种方法最强大、最有效。
其次,在应用程序没有任何 Internet 连接的离线场景中,这是管理加密密钥的最安全方式吗?
Libsodium 是一个备受推崇的库,AES(高级加密标准)是一种非常安全的加密算法,它们不是同一种东西。
Libsodium 在 GCM 模式下提供 AES,这非常好,因为它包括身份验证。
Libsodium 的问题在于可用的算法有限,因此互操作性很低。
安全很大程度上取决于您的实施有多安全,加密中的任何错误或滥用都会破坏安全性。
定义您要保护的对象,从好奇的青少年到资金充足的政府,并设计满足您需要的安全级别。
管理密钥是一个非常困难的问题。在电话上通常是某种形式的密钥存储库,这可能是您能做的最好的事情。但这取决于用户是否拥有良好的密码。
如果您想要一个非常安全的系统,请付费让密码领域专家审查您的方案和代码。
更新:
唯一安全的密钥管理是设备上没有密钥;根据我的 SME(主题专家)。要求用户在每次调用应用程序时输入密码,并确保在每次使用后关闭应用程序。然后,您将需要添加代码来限制访问尝试,并可能会出现指数回退延迟。最后,用户必须有一个非常好的密码。