【问题标题】:Securing Data In A Python Program At Runtime在运行时保护 Python 程序中的数据
【发布时间】:2015-12-18 13:19:16
【问题描述】:

鉴于安全要求,我正在评估 Python 是否适合我的程序的实现选择。

我的程序的输入是一组加密的 (RSA) 文本文件,这些文件描述了我想要保护的一些 I/P。加密/解密库和私钥都通过 SWIG 包装器访问到 C++ 库。我设想 Python 代码将调用该库来解密传入的源文件。

一旦解密,我将以某种方式转换 I/P,然后将其加密写出来,再次使用 SWIG 包装的 C++ 库来实现此功能。

我的程序和 I/P 将分发给客户,但客户应该无法检查 I/P。只有 I/P 作者指定的具有私钥的工具才能使用。

当数据在运行时流经我的程序时,有人可以检查处于解密状态的数据吗?有没有办法在 Python 中保护我的数据? C++ 实现是否比 Python 更安全?

【问题讨论】:

  • 什么可以阻止某人在解密后附加调试器并检查程序的内存? C++ 和 Python 解决方案都容易受到此攻击。
  • @Aldehir:即使剥夺了程序的所有调试信息,这也是可能的吗?
  • 当然,即使没有调试信息,仍然可以获得解密数据,因为它会存在于内存中。不过,我会这么说,我假设您正在使用 python 对解密的数据执行转换;如果是这种情况,那么他们可以修改 python 代码以毫无问题地打印出解密的数据。

标签: python c++ security encryption reverse-engineering


【解决方案1】:

如果您的应用程序中包含私钥,那么您的数据将永远不会真正安全地免受有动机的黑客的攻击(因为他们可以逐步通过程序找到它)...

或者他们可以在调试器中运行您的应用,在文件在内存中解码后暂停它,然后从内存中提取数据。

【讨论】:

  • 加上这个答案并回答 OP Is a C++ implementation more secure than a Python one?:改变语言不会有任何区别,因为你给客户加密数据和密钥,没有什么可以阻止某人解决问题的动力、知识和时间。
  • @KurzedMetal:谢谢。那么问题是,在解释的 Python 或编译的 C++ 中获取未加密数据的工作量是否更少?我们已经有其他 C++ 程序转换未加密版本的数据,因此这个新功能(无论是 C++ 还是 Python 中的)不应该是安全链中最薄弱的环节。
  • 混淆你的 C++ 代码可能更容易让别人更难反编译......但仍然不是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2010-11-15
相关资源
最近更新 更多