领域
我正在设计一个软件 ATM,我想将必要的加密操作隐藏在一个“加密守护进程”后面,它访问磁盘上的加密密钥并为这些操作提供一个高级的、特定于应用程序的接口。
其他程序必须:
- 对守护进程进行身份验证(有效的身份验证允许守护进程解密磁盘上的密钥)
- 向守护进程发出命令并接收答案
我有通过 localhost 使用 TCP 进行这些操作的想法。在进行 TCP 握手之后,程序必须向守护进程进行身份验证,并且 - 如果成功 - 可以向守护进程发出加密命令。
实际问题
至少有两个假设必须成立,否则这在设计上是不安全的:
- 本地主机上的 TCP 通道不能被劫持/修改(管理员/root 除外)
- localhost 上的 TCP 通道是私有的(不能被窥视)(管理员/root 除外)
这些假设是真的吗?为什么?为什么不?还有什么缺陷吗?