Android 如何在安卓截击中使用ssl提高安全性

Android 如何在安卓截击中使用ssl提高安全性,android,security,ssl,packet-capture,packet-sniffers,Android,Security,Ssl,Packet Capture,Packet Sniffers,我为我的问题搜索了2天,但我没有幸运地找到它 我的问题是: 我已经在我的服务器上安装了comodo ssl/tls证书,我正在使用android volley库连接到服务器,直到现在我只使用了“https://...“用于我的url,并通过https连接到我的服务器,没有问题。 但我最近在我的手机上安装了“数据包捕获”android应用程序,默认设置下,如果手机没有根目录,则无法从我的应用程序向服务器检索post/response信息,但如果使用根目录手机,数据包捕获应用程序要求您在手机上安装自

我为我的问题搜索了2天,但我没有幸运地找到它

我的问题是:

我已经在我的服务器上安装了comodo ssl/tls证书,我正在使用android volley库连接到服务器,直到现在我只使用了“https://...“用于我的url,并通过https连接到我的服务器,没有问题。 但我最近在我的手机上安装了“数据包捕获”android应用程序,默认设置下,如果手机没有根目录,则无法从我的应用程序向服务器检索post/response信息,但如果使用根目录手机,数据包捕获应用程序要求您在手机上安装自定义证书,这样它甚至可以检索ssl/tls连接,起初我觉得这是开玩笑的,但在安装证书后,它会显示ssl连接到我的服务器时使用的全部信息。。。 我非常担心我的应用程序的安全性,黑客可以使用该捕获应用程序知道向我的服务器发送什么,并将其硬币号码设置为100000:(

请告诉我如何使我的应用程序的连接更安全。 *我没有在应用程序上安装自定义证书,因为服务器证书是可信的,并且在默认使用下工作正常

对不起,我的英文打字很差:)

编辑: 感谢@Ch4t4r的创意。。。我搜索并找到了这个用于固定公钥的链接,它太棒了,下面是github链接:


希望它能帮助其他有同样问题的人

应用程序的工作方式如下(总结):

  • 您的应用程序尝试建立与服务器的连接
  • 应用程序捕获请求并转发它
  • 应用程序从服务器捕获答案并替换其证书
  • 这是一个典型的中间人攻击,因为你正在使用的应用的证书是可信的。无法阻止根用户破坏加密


    你唯一能做的就是默默无闻地保护自己。尝试对您的值进行编码(互补值,或使用存储在应用程序中的密钥对其进行加密),或发送整个请求的散列。这将把大多数人(非技术人员)拒之门外,但没有绝对的方法阻止用户以这种方式作弊。您还可以使用一次性标记(盐的工作方式)对重要值进行编码。混淆源代码也会有所帮助。但同样,没有绝对的方法,这只是在为用户铺石头,甚至可能作弊。它显著地增加了计算方法所需的时间。

    我不会在这上面浪费太多时间,原因如下:

    • 大约20-25%的安卓设备是根设备(根据一些较旧的数据,我想实际上更少)
    • 一些根设备是测试或存储设备(Kiosk模式);让这占所有根设备的15%
    • 如果50%的其他扎根用户知道这个应用程序(不会那么高),那么我们在所有Android用户中的比例将降至8.5%
    • 使用隐蔽性安全原则,只有非常精通技术的用户才能知道如何作弊。如果这对20%(同样,这是一个非常高的数字)的所有符合上述条件的用户来说是真的,那么我们在所有Android用户中的比例是1.7%
    • 考虑到并非所有的用户都会使用你的应用程序,有些人可能根本不在乎,我认为有能力作弊并使用你的应用程序的用户比例最大为0.5%

    更激进的方法是阻止所有根用户。

    编辑:另一个答案表明,您可能正在使用公钥锁定。请记住,并非所有用户都会在发布新版本后立即更新,如果他们不更新,则会导致应用程序无效。因此,它的风险很小。

    应用程序的工作方式如下(总结):

  • 您的应用程序尝试建立与服务器的连接
  • 应用程序捕获请求并转发它
  • 应用程序从服务器捕获答案并替换其证书
  • 这是一个典型的中间人攻击,因为你正在使用的应用的证书是可信的。无法阻止根用户破坏加密


    你唯一能做的就是默默无闻地保护自己。尝试对您的值进行编码(互补值,或使用存储在应用程序中的密钥对其进行加密),或发送整个请求的散列。这将把大多数人(非技术人员)拒之门外,但没有绝对的方法阻止用户以这种方式作弊。您还可以使用一次性标记(盐的工作方式)对重要值进行编码。混淆源代码也会有所帮助。但同样,没有绝对的方法,这只是在为用户铺石头,甚至可能作弊。它显著地增加了计算方法所需的时间。

    我不会在这上面浪费太多时间,原因如下:

    • 大约20-25%的安卓设备是根设备(根据一些较旧的数据,我想实际上更少)
    • 一些根设备是测试或存储设备(Kiosk模式);让这占所有根设备的15%
    • 如果50%的其他扎根用户知道这个应用程序(不会那么高),那么我们在所有Android用户中的比例将降至8.5%
    • 使用隐蔽性安全原则,只有非常精通技术的用户才能知道如何作弊。如果这对20%(同样,这是一个非常高的数字)的所有符合上述条件的用户来说是真的,那么我们在所有Android用户中的比例是1.7%
    • 考虑到并非所有的用户都会使用你的应用程序,有些人可能根本不在乎,我认为有能力作弊并使用你的应用程序的用户比例最大为0.5%

    更激进的方法是阻止所有根用户。
    编辑:另一个答案表明,您可能正在使用公钥锁定。请记住,并不是所有的人都能用