内存加密和内存零未知-帮助我理解

Memory encryption and memory zero unknowns- assist my understanding

我想尽可能地保护我的用户数据!在这种情况下,我试图保护 data-in-use/data-in-memory 免受某些内存攻击,或者至少让不法分子更难获取我的用户数据。

我真的不明白 Flutter 和 Dart 如何处理内存或与此相关的任何语言。因此,我正在寻找一些关于我在这里尝试做的事情的见解、方向或确认,而不需要计算机科学硕士学位。当我使用 Flutter/Dart 时,这也是一个普遍的问题。

我的作案手法很简单,处理完一些敏感数据后我想:

  1. 为内存零加密数据
  2. 将所有加密内存归零

这符合我的意图吗?

如果这不符合我的意图或毫无意义,请解释原因。

/*
    - Symmetric encryption
    - Encryption before putting data into transit
    - This symmetric key and nonce are asymmetrically encrypted with authorized users public keys
    - Authorized users can decrypt the key
    - Sensitive data is encrypted then zeroed
  */
  Future<String> symmetricallyEncrypt(Sale sale) async {
    String saleJson = jsonEncode(sale);
    final symmetricKey = await secureStorage.read(key: kSSKeySymmetric);
    final symmetricNonce = await secureStorage.read(key: kSSKeySymmetricNonce);
    final symmetricCypher = AesCrypt(padding: PaddingAES.pkcs7, key: symmetricKey!);
    final encryptedSale = symmetricCypher.gcm.encrypt(inp: saleJson, iv: symmetricNonce!);

    /* --- ENCRYPTED ZERO --- */
    encryptedZero(saleJson);
    encryptedZero(symmetricKey);
    encryptedZero(symmetricNonce);
    encryptedZero(symmetricCypher.toString());

    return encryptedSale;
  }

  /*
    Encryption zero method
      - Encrypts shredding input
      - Zeros all inputs
  */
  Future<void> encryptedZero(String shredding) async {
    String? asymmetricPublicZeroKey = await secureStorage.read(key: kSSKeyMemoryZeroAsymmetricPublic);
    String encryptedShredding = RSAPublicKey.fromPEM(asymmetricPublicZeroKey!).encrypt(shredding);
    asymmetricPublicZeroKey = '';
    encryptedShredding = '';
    shredding = '';
  }

我明白你的问题,但我认为这不是考虑内存安全的正确方法。

什么是威胁演员 - 另一个进程?操作系统?根用户?

如果您不信任 root 用户、OS 和硬件,您就已经输了。

如果你必须信任他们,那么你的威胁演员还有什么?您必须信任您的应用程序。所以唯一的其他事情是同一系统上的其他应用程序 运行。

操作系统阻止其他应用程序读取您的内存space(SEG FAULT 等)。 OS 在将应用程序的内存页面传递给另一个进程之前将其清零。

但这还不是全部 - 阅读 https://security.stackexchange.com/questions/29019/are-passwords-stored-in-memory-safe 了解更多详情。