News for hackers. Stuff that matters.
Re:Cover Your Tracks by 1vuio0pswjnm7 on Saturday November 21, 2020 @12:32AM (#25168038)
Here is another way to look at it. Not expecting anyone to agree; it's just a thought experiment.

Instead of asking "How do we become "non-unique""?

We could ask "How do we send less data to the parties who want to do tracking?"

For example,

User A sends 2-3 HTTP headers, the bare minimum, e.g., Host, Connection, maybe User-Agent or Cookie in some instances if required. User A has disabled Javascript unless she needs it.

User B sends a potentially unlimited number of HTTP headers (User B does not care to control the headers she sends, she just leaves that to the applications). User B leaves Javascript enabled regardless of whether it is needed.

Each user may be "unique", with sufficient effort from the party doing tracking, but there's an argument that User A is less interesting to the tracking parties than User B. Both users have footprints, both can be tracked, but one is sending much more data to the trackers than the other. She's leaving more detailed tracks, so to speak. User A is leaving a more generic footprint.

There is also an argument that finding "uniqueness" among a large group of "User B's" would be easier than amongst a large group of "User A's". If we were trying to achieve the impossible goal of "non-uniqueness" it would arguably be easier to try to have all users appear to be identical to User A than trying to get all users to match User B what with all the additional potential variables User B presents thanks to uncontrolled HTTP headers and Javascript's access to her computer's resources (and all the potential issues and "options" that raises).

Re:Cover Your Tracks by atoav on Saturday November 21, 2020 @02:44AM (#25168379)
If non-uniqueness means "there are others that look like you", it is clear that giving them less identifying clues makes things harder.

The question is how to do it tho, because some things might actually be useful: if your browser tells the site you prefer dark themes the site can react and display your prefered color scheme. If the browser tells the site how big your viewport is it can give you a site that fills that viewport neatly — and if the site can do these useful things it can also track you using that info.

Re:Cover Your Tracks by antepodius on Saturday November 21, 2020 @08:27AM (#25169628)
The viewport can be filled neatly by html/css. No javascript required.
Re:Cover Your Tracks by sokoloff on Saturday November 21, 2020 @09:07AM (#25169798)
If you’re trying to layout a newspaper style web page, sure.

I think it’s less true if you’re trying to play a game, look over a complex dataset, do high-end image previewing, maybe host a multi-party video conference, or other highly interactive application in a web browser (for user convenience and, to some extent, because users semi-reasonably trust browsers more than random app downloads).

Re:Cover Your Tracks by goatinaboat on Saturday November 21, 2020 @05:43AM (#25168943)
User A sends 2-3 HTTP headers, the bare minimum, e.g., Host, Connection, maybe User-Agent or Cookie in some instances if required. User A has disabled Javascript unless she needs it.

There is actually no technical reason that an HTTP request needs to be any more than

    GET / HTTP/1.0
It's nice for the server to know your user agent, what fonts you have installed, your OS, and whatever else, but it is not necessary and so the majority of the problem of fingerprinting browsers is one created by the browser developers themselves. The original concept of the web was that the client controlled the rendering, the server shouldn't care about what specific fonts you have or the size of your screen.

There is no reason that the Firefox or Safari developers couldn't decide in the next version to send only bare minimal request headers.

Re:Cover Your Tracks by EE84M3i on Saturday November 21, 2020 @05:54AM (#25168976)
Is it actually possible to request most sites that way, without a host header? Maybe if it's tls and you already used sni, but I think most sites use a cdn that uses some form of virtual hosting to share ip addresses.
Re:Cover Your Tracks by 1vuio0pswjnm7 on Sunday November 22, 2020 @01:18AM (#25175397)
Consider the basic httpd feature of providing an automatically generated index to a directory. It is possible to locate content, including names of virtual hosts, with only an IP address.
Re:Cover Your Tracks by formerly_proven on Saturday November 21, 2020 @09:00AM (#25169755)
Sure.

    > nc news.ycombinator.com 80 
    GET / HTTP/1.0

    HTTP/1.1 301 Moved Permanently
    Server: nginx
    Date: Sat, 21 Nov 2020 13:59:31 GMT
    Content-Type: text/html
    Content-Length: 178
    Connection: close
    Location: https://news.ycombinator.com/
Re:Cover Your Tracks by sokoloff on Saturday November 21, 2020 @09:09AM (#25169812)
That is perhaps the least convincing test case you could have chosen to support your argument. (You basically proved you could fetch a content-less page, in part because that was the easiest proof case you could write, but because it didn’t demonstrate anything that an HN reader would come here for, it doesn’t resonate convincingly.)
Re:Cover Your Tracks by formerly_proven on Saturday November 21, 2020 @12:26PM (#25171063)

    > openssl s_client -connect news.ycombinator.com:443
    GET / HTTP/1.0

    HTTP/1.1 200 OK
    Server: nginx
    Date: Sat, 21 Nov 2020 17:25:28 GMT
    Content-Type: text/html; charset=utf-8
    Connection: close
    Vary: Accept-Encoding
    Cache-Control: private; max-age=0
    X-Frame-Options: DENY
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Referrer-Policy: origin
    Strict-Transport-Security: max-age=31556900
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://cdnjs.cloudflare.com/; frame-src 'self' https://www.google.com/recaptcha/; style-src 'self' 'unsafe-inline'

    <html lang="en" op="news"><head><meta name="referrer" content="origin"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" type="text/css" href="news.css?jacyibSTLtogl89kgrgw">
            <link rel="shortcut icon" href="favicon.ico">
              <link rel="alternate" type="application/rss+xml" title="RSS" href="rss">


            <title>Hacker News</title>
Re:Cover Your Tracks by 1vuio0pswjnm7 on Sunday November 22, 2020 @12:47AM (#25175240)
As the kids say, "100%".

All that additional crud has probably contributed to the "relative ease" of conducting tracking as well as the "richness" of the data one can gather from tracking. Why should we ignore this simple fact.

The people behind these browers, especially Mozilla, keep assuring the public they are working to protect user privacy. This may be true to some extent but what they are not telling the public is how they are working to ensure the online advertsing industry continues to thrive, i.e., how they are working to ensure they do not upset the status quo. The words do not match the actions.

I would not rely on the browser developers to address this problem. To experiment with how well minimalism works on today's web, one can use alternative HTTP clients that allow control over headers and/or one can use a forward proxy one can remove/modify headers generated by the browser.

Re:Cover Your Tracks by SeriousM on Saturday November 21, 2020 @05:25AM (#25168879)
You can never be non-unique because of your actions. To stay in the analogy of tracks: it really doesn't matter how your Tires look, the direction of the tracks make you unique. That's the same reason why Tor is not secure. But you can make it harder by cutting your tracks in smaller pieces.
Re:Cover Your Tracks by 1vuio0pswjnm7 on Sunday November 22, 2020 @01:09AM (#25175341)
There is another idea I did not mention and that is "minimalising" the behavioural fingerprint. The most simple examples I can think of are DNS and Wikipedia.

User A makes a single request to download bulk DNS data or Wikipedia content, then makes it available on her loopback or local network.

User B makes a series of DNS queries for specific RR's or HTTP requests for specific Wikipedia pages.

How do the behavioural fingerprints of User A and User B compare?

Trackers generally cannot see the individual DNS queries or HTTP requests for Wikipedia pages that User A makes over her loopback or to addresses on her local network. However all of User B's individual DNS queries and HTTP requests, including timings and context, are easily visible to a variety of trackers operating on the internet.

Re:Cover Your Tracks by enriquto on Saturday November 21, 2020 @10:13AM (#25170133)
> Instead of asking "How do we become "non-unique""? We could ask "How do we send less data"

The basic principle of information theory is that these two things are exactly the same. There is no "correspondence" between them, they are one and the same thing. The amount of information that you send is, by definition, the measure of how unique it is.

Re:Cover Your Tracks by dan-robertson on Saturday November 21, 2020 @10:40AM (#25170251)
I don’t think that’s the point being made by the parent comment. If the information being sent is some identifying information + the extra information information in the http requests you send, then both users may be identifiable however one user may still send more information than the other. The parent comment suggests that reducing this extra information should be a goal.
Re:Cover Your Tracks by enriquto on Saturday November 21, 2020 @11:55AM (#25170790)
But the information has nothing to do with the size of the message. It is just a measure of how unique the message is. If everybody in the internet submits the same 1TB of data, but you transmit a single byte, then you are transmitting a lot of information, but everybody else is transmitting almost nothing.

I don't see how your reasoning about sending more or fewer headers fits into this; but anyhow the conclusion won't depend at all on the amount or the length of the headers, but on how many people are sending the same headers as you. It is impossible to know how much information are you sending by only looking at the bytes you send. You need to know the worldwide distribution of headers to measure that.

Re:Cover Your Tracks by vladTheInhaler on Saturday November 21, 2020 @09:31PM (#25174410)
It seems that the term "information" is being used in two different ways in this thread. The usual meaning of a bit of information is with regard to a probability distribution over messages which the user wants to send to a server. I don't think most people are used to thinking about bits in other contexts, so that's where the miscommunication is happening.

Your interpretation, which I think is correct in this context, seems to be with regard to the entropy of a probability distribution over internet users, and the mutual information between that and the distribution over messages. The actual length of the message is irrelevant to the math once you fix the joint probability distribution.

The argument others seem to be making is that the joint probability distribution is in fact not fixed, and that you can smear out the conditional probability over users given a message by shrinking the space of possible messages. In theory that seems possible, but I don't know enough to have any idea how well that would work in practice. If you shrank the message space to be small enough to be useful for this purpose, wouldn't that get in the way of usability?

Re:Cover Your Tracks by enriquto on Sunday November 22, 2020 @07:14AM (#25176847)
> Your interpretation

This is not "my" interpretation, it's the standard definition of information content in computer science, as given [1] by Shannon in 1948 and used by everybody since.

[1] https://en.wikipedia.org/wiki/A_Mathematical_Theory_of_Commu...

Re:Cover Your Tracks by vladTheInhaler on Sunday November 22, 2020 @11:56PM (#25183717)
Obviously I'm familiar with the definition. If you didn't get that, you should probably read my comment again. It seems like you've somehow decided that people in this thread are arguing with you, but they're not. And anyways, it's a bit silly to get mad at people because they haven't studied information theory.

Define the random variables M for message content and U for the identity of the user. The interpretation of "bits of information" that most people will have is H(M). The correct interpretation in this context is H(U). You seem to be confused about why people are talking about H(M) instead of H(U). But I think people correctly intuit that those aren't independent, so the mutual information I(U;M) = H(U) - H(U|M) is positive. And obviously if you change P(M), you will also change the amount of mutual information. That's why talking about sending fewer headers makes sense.

Re:Cover Your Tracks by gruturo on Saturday November 21, 2020 @05:42AM (#25168939)
User A is also "unique", indeed... until more people start doing the same. Then they can no longer be told apart.

We should agree on common set of absolutely minimal necessary data (User agent, supported fonts, screen resolution and DPI if Javascript can probe those, etc) and then ALL run with the same, except on the very few sites one truly needs and which don't work with this bare minimum for some (hopefully valid!) technical reason.

We could actually package all of this into an addon or a simple recipe of settings. I'm not knowledgeable enough to pull such an effort with absolute certainty that nothing gets forgotten, but if someone does, I'd suggest "V for Vendetta" as a name, as it reminds me of the 5th of November scene.