privacy-tech-lab / gpc-android

Code and dynamic analysis scripts for GPC on Android
https://privacytechlab.org/
MIT License
5 stars 1 forks source link

What is the path forward? #38

Closed SebastianZimmeck closed 3 years ago

SebastianZimmeck commented 3 years ago

Per @bella-tassone's question in today's discussion. As the HTTP interceptor idea is hard to implement (issue #36), we now need to rethink our design. If anyone has ideas, let's discuss here ...

ekuller commented 3 years ago

I think the abstraction of ad requests will make it hard to implement a solution that isn't specific to which ad libraries and ad networks are being used. For example, if the developer is using Google AdMob, I think it would make sense to just add Google's RDP (Restricted Data Processing) flag to ad requests. However, I am not sure how we would do this through a library.

SebastianZimmeck commented 3 years ago

I think it would make sense to just add Google's RDP (Restricted Data Processing) flag to ad requests

Yes, indeed, we can add an RDP flag to the requests. Similarly, we can also add the IAB's US Privacy String and other privacy flags. These are essentially alternative takes by companies and industry organizations to accomplish the same goal as GPC. All those flags could be attached to all requests. If some are not applicable to a particular ad network, they would just go into nowhere and be ignored. But that it is OK. It would not cause any trouble for transmitting the requests.

@stanleymarkman and @kbeliauski are working on identifying the different flags to be used in our browser extension. Those exact same flags could be used for our mobile version as well.

Whatever it is --- our GPC flag, RDP, US Privacy String, ... --- the fundamental limitation remains: without having access to the OS it is hard to attach these flags to HTTP requests in a convenient way for ordinary users (i.e., without resorting to rooting the phone, VPNs, web proxies, ...).

I will try to touch base with Google. Maybe, they would be interested to have a conversation and say what they are working on. Though, I am not sure to which extent they would discuss.

ekuller commented 3 years ago

The reason I suggested using the RDP flag is because it can be added to ad requests made to Google (I think abstractly) through code that Google shares, if the developer is using the Ad Mob library. I am unsure of whether other flags (e.g. GPC) can be sent via the same method.

SebastianZimmeck commented 3 years ago

It is a good point and goes exactly to the core of the issue. We want to establish a generic opt out mechanism, that is, GPC. If our solution also enables RDP and other privacy flags, great! But that is a secondary goal and does not solve our problem: how can we get the GPC signal into an app?

SebastianZimmeck commented 3 years ago

We have hit a wall. The fundamental challenge is that the app level does not give us what we need, and there is no easy way for us to get onto the OS level. Here are some ideas:

That's all I can think of at the moment ... . Thoughts?

(cc'ing @stanleymarkman and @kbeliauski)

SebastianZimmeck commented 3 years ago

Maybe, also worthwhile to think about, in-app support for the IAB US Privacy string. Can we do something similar for GPC?

SebastianZimmeck commented 3 years ago

Making a bit more concrete and expanding on what I said earlier, I can see two paths forward:

1. Starting to Implement GPC on LineageOS and other smaller Android-based Operating Systems

Essentially, the strategy is to get a foothold in the Android space. LineageOS is good starting point. There are more than four million LineageOS users, and getting GPC to them would be good progress. Here are a few other projects, some of which with a focus on privacy, that we could approach. Sailfish OS is another one.

Here is the LineageOS wiki on how to contribute (under For developers). On top of their version control, they are using Gerrit, which I am not familiar with. The bottom line is that we would need to learn how to contribute, and get the process going ... .

2. Add GPC to OkHttp, Volley, etc.

Based on the discussion so far it may be the case that even getting into the OS does not quite get us the functionality that we need, i.e., attaching GPC flags to every outgoing HTTP request. So, an obvious way would be to directly integrate GPC in OkHttp, Volley etc. The first thing to do here would be to just post an issue on GPC integration in their repos, and see whether that leads to any response. No idea how open they would be ... .

SebastianZimmeck commented 3 years ago

Google added some new safety information that app developers are required to provide. Not sure if this enforced technically or just via the developer agreement. If someone could dig more into this ...

chunyuema commented 3 years ago

Google added some new safety information that app developers are required to provide. Not sure if this enforced technically or just via the developer agreement. If someone could dig more into this ...

Did some quick readings on this. Based on what I saw, it seems that the developers are just required to declare how apps are using the data and Google will reflect this on the Play Store. I read something about monitoring whether the app follows what the devs declare. It was also mentioned that Google will require the devs to disclose full information / label the app as containing ads / take down the app as enforcement measures. Currently not seeing how this is enforced on a technical level but will keep looking... if they follow the timeline (Q2 2022), we might start to see more information soon too.

Some more info here...

SebastianZimmeck commented 3 years ago

I opened an issue at the OkHttp repo.

SebastianZimmeck commented 3 years ago

I opened an issue at the Volley repo. I did not realize that Volley is supported by Google.

SebastianZimmeck commented 3 years ago

A few other privacy focused OS's that we may want to contact at some point:

I got those from the awesome-privacy list.

SebastianZimmeck commented 3 years ago

Putting this repo on ice. We may pick up the work again at a later time ...