【发布时间】:2017-10-09 02:15:41
【问题描述】:
我需要为 Mac 构建一个安全的应用程序。为此,我使用了仅存在于创建者头脑中的主密码。
要检索它,首先需要在安全的文本字段中输入密码*,然后才能使用它来加密和解密文件。当应用程序保持打开状态时,主密码将存储在一个变量中,这意味着它存在于内存中。在内存中加密这个密码会不会过大?
我问这个问题的原因是,在可以为内存加密主密码之前,它已经作为变量存在,这意味着它已经对内存扫描攻击开放。这是我应该担心的事情吗?
我在https://www.apple.com/macos/security/阅读了以下内容:
运行时保护是核心防御。技术成熟 macOS 中的运行时保护在 Mac 的核心工作,以提供帮助 确保您的系统安全。 XD(执行 disable) 功能在用于数据的内存之间创建了一道坚固的墙 和用于可执行指令的内存。这可以防止 试图欺骗 Mac 以相同方式处理数据的恶意软件 它处理程序以破坏您的系统。地址空间 布局随机化 (ASLR) 改变了内存位置 存储应用程序的不同部分。这使得一个人很难 攻击者通过查找和重新排序应用程序的各个部分来造成伤害 它做了一些它不打算做的事情。 macOS 将 ASLR 带入 操作系统核心内核使用的内存,所以 在 Mac 的各个级别上都可以使用相同的防御措施。
我可以断定 Mac 已经内置了防止内存扫描和劫持的保护吗?
(* 我知道这可能会导致键盘记录器漏洞)
【问题讨论】:
-
如果密码仅以加密形式存在,您将如何处理?