Browser Fingerprinting Without JavaScript
fingerprintjs.com
fingerprintjs.com
That's because the Tor Browser, contrary to urban legend, is not just a browser that routes trafic through the tor network, but a firefox reworked (most of which is being upstreamed) explicitly to combat fingerprinting (some kind of digital black block if you will).
Overall that's an amazing compilation of modern web fingerprinting vectors. I'm just a little disappointed they left screen size (and maybe other obvious avenues) out of the demo. That would be a really cool way to demonstrate how Tor Browser's window cutting (or whatever that's called) works [0].
I read somewhere (but i can't vet the claims) there's enough variance on TCP implementations across systems to be able to distinguish, and i'm curious how the Tor Browser deals (or doesn't) with that. Could be an idea for v2 demo.
Thanks for the cool demo! I definitely enjoyed the script-like UX of the page. I wish more sites did stuff like that instead of defaulting to JS for every little animation or dynamic content.
[0] Tor Browser enforces actual width and height of the web rendering part of the window to be multiples of certain numbers, so that websites can provide experience for smaller/larger screens while retaining limited fingerprinting (eg. your fingerprint will not be affected by a user-configured or desktop-dependent window border, scroll bar width, or anything such)
If you want privacy, use Tor Browser. It's the only privacy-friendly browser out there. All others have many holes and leaks and very little intentions to close them. Although Firefox has a "Tor uplift" project upstreaming patches from Tor Browser into Firefox's strict privacy mode.
The "Standard" and "Safer" modes give the same fingerprint tho.
I'm tempted to give it a whirl for a week.
Root my phone, flash something secure, leave VPN always on, and limit web browsing to Tor to get a feel for how bad or good it is.
The self inflicted contortions developers go through to justify the need to spy drive me crazy. Modern devices and bandwidth are more than sufficient to handle a vast majority of applications, but everything has to be cloud based rent-seeking-as-a-service.
In my experience, not really much. There's occasionally a few articles i can't read because they require JS just to display their blogpost but outside of HN planet, it's not that common (most people use Wordpress themes or other decent HTML/CSS templates).
The real problem is Cloudflare and other gatekeepers who claim to protect from bots and attacks, but are more likely to block honest people. If you know people using Cloudflare, please insist that they don't. If you really need DDOS protection because you're repeatedly been a victim, please use a decent network-level mitigation (as provided by professional hosts like OVH/Hetzner) not some shitty invasive DPI solution that will have 99% false positives.
An interesting aspect of Safest mode i enjoy is the web is "read-only" again with it. Well you can still POST stuff via forms, but it's an explicit opt-in operation. TBB's Safest mode is closer to reading a newspaper than the modern web could ever be.
As a nice bonus, the Safest mode is really resource-efficient. I can have hundreds (thousands?) of tabs open for days without leaking memory, and CPU is only used to draw stuff (no tab mining coins on my behalf). I don't know a single browser with JS enabled who can keep many tabs open without rendering my machine utterly useless due to overusing CPU/RAM. Hell, i don't know a single browser with JS who can prevent a single tab from using all of my resources. TBB's Safest mode is really the only modern way i know to browse the web on low-resource hardware (lighter webbrowsers exist, but they usually don't implement modern CSS3 features).
EDIT: I should mention that the only useful service i can't use with Safest mode is Gitlab. Because Gitlab still does client-side rendering for some reason?!
People who use privacy tooling are left out, people from poorer countries are left out (due to bad IP range reputation), and legit bots scraping websites are left out.
If you need DDOS protection, use network-level mitigations from your host and basic rate limiting. If you need to protect your admin area from bruteforce and known vulns, restrict it to localhost queries and use SSH tunneling with public-key auth. If you need geo-replication, think again, you probably don't: make your pages lighter (why JS? why custom fonts?) and reduce the number of queries at all costs (the biggest slowing factor on high-latency links).
You don't need Cloudflare, even for a popular international website. Designing your website properly will make it more user-friendly and faster to load. From anywhere in the world, it should be fully rendered before any similar Cloudflare-powered page could load the JS spyware blocking access to the content.
Basically, you don't log in to your Linux box (or Windows, Mac, etc) as root for day to day use and same thing goes for your phone.
Rooting is not incompatible with security. Trusting carrier distributed software on a locked down device is far less secure than using a custom install of something like Calyx or GrapheneOS.
In my view, trusting Google, Apple, Verizon, t-mobile, or at&t is incompatible with security.
The idea that people having administrative access to their own devices is inherently insecure is vicious anti-consumer nonsense.
thou for non-technical users, rooting a phone is a bit like going back to windows xp.
https://madaidans-insecurities.github.io/android.html#rootin...
Modern smartphones are basically spyware distros. I would argue it's far more secure to run a decent distro (Lineage/Replicant) with root, than it is to run any SamWeiMi crapware without root. Oh yes, the manufacturer's crapware has system privileges whether you ask for it or not, and so does Google Play Services, Google's universal backdoor for Android.
On paper, no root is better. In practice, even on a crap distro, rooting it will enable you to remove most crapware to reduce attack surface.
Also related: if you're concerned about security, you should probably only use applications from F-Droid.org repos. Google Play Store (and others) are just full of spyware! See also the Exodus Privacy project tracking trackers via static analysis of APKs.
The term you're looking for is letterboxing.
https://www.zdnet.com/article/firefox-to-add-tor-browser-ant...
It would stop this sort of privacy attack, and it'd have the additional benefit of making the web look a lot nicer.
I know you're thinking "well I don't see any of that in my analytics so this seems unlikely". Consider then that your analytics needs to actually load before the visitor bounces for them to show up in the statistics.
thou it will be argued that it is a minority that is affected and it makes little economic sense to care.
But you get a sort of selection bias. Out of the people with money to buy the tech that can keep up with these sites and the network speeds to use these sites, out of those people, most people have modern tech and good metropolitan network access.
Google is not the only company that has no respect for privacy. Privacy protection needs to go further, and stop privacy invasion completely.
There is a reasonable balance to strike between privacy, design and usability though. That's why I said 2 or 3 fonts. Maybe 4 at a push. If a site is using more than that then either the developers aren't very good, or the designers aren't very good, or it's trying to attack the user's privacy. Whichever one it is, it should be stopped.
How do you do multiple colors in fonts?
That would be trivial to break over a few requests, I think
The fact is very few websites use more than three fonts at a time on any particular page, and most sites than do could rework their design so they don't (swapping icon fonts for an SVG font map, for example), or they could implement a canvas or WebGL alternative.
SVGs are vectors so they aren't larger at larger sizes, and they can be responsive so you don't always have to display the same image at every size.
It depends how the question is framed and presented. If the permission prompt is modal and the user believes that they will be prevented from accessing the application unless they click Yes, then they will always click Yes.
But if the website loads first and then they are asked for permission to load some additional feature, they are much less likely to reflexively click Yes rather than to press X to close the non-modal.
I read that as Management (PHB) wanted that but some how the implementing engineer got them to do it the respectful way.
Why can't we make a better web like this that respects your privacy?
Yes.
Security and privacy come at the expense of other things. It's not totally unreasonable to prioritize them though.
It would limit creativity, but not by very much.
We keep suggesting things like limiting use of fonts as a polyfill for not being able to create legislation or what not. How about not exposing the available fonts to the browser through JS? If the font is not available, it should silently regress through options listed in CSS or browser defaults. JS can request a font, and it can be used if available. If it's not available, JS shouldn't need to know about it.
Italic and Bold are also separate fonts (albeit in the same family).
Bold and italic were different fonts in the past, but variable fonts have solved loading separate fonts for different weights and italics. This change would require developers swap to use those in many cases, and to create variable versions of brand fonts if necessary. I don't see that as a problem. The benefit makes it worthwhile.
In essence, do what we do with JS code, but with fonts.
You'd lose the parallel request benefits of HTTP2 but nevermind.
OK, I tried the demo with Firefox Focus, and it worked. But it doesn't tell you how unique your fingerprint is. If multiple users have the same fingerprint, then its effectiveness will be limited.
This demo doesn’t mention cookies. screen size, cache, etc, which could be used to further differentiate.
This article is less of a tech demo and more of an introductory article to how some fingerprinting works.
If these techniques were combined with more well-known such as screen size or DPI, uniqueness would be more relevant.
I don't need a browser extension, I need CEOs in prison. Then reactions will catch up.
Things are or are not a problem in certain places because that’s just how things have been done. You pick it up when you grow up in that culture.
Which leads to the problem of determining what is actually right or wrong.
For example, I naturally believe that racism is wrong because of the culture I grew up in (multicultural California) tells me that it’s wrong. But I also believe it is wrong because it undermines society and adds unnecessary friction to interactions, so it’s simply more productive if it didn’t exist.
I believe that privacy is important because I believe humans work best when they feel free to think and act freely. I believe society (and myself as a result) benefits far more in that scenario.
I think it is more of a worldview thing which is influenced by local culture. You beliefs about answers to fundamental questions like why do people exist? What are valid authority systems and structures? What is the origin of humans? And more questions like this, makes the difference.
I believe racism is wrong because I don't believe race is a thing beyond a social classification system. I believe in ethnicities and diffrences between them, but humans share a common origin. Even if some humans have less or more capability to do certain things than others, in order to be just, one must evaluate others as individuals not groups. Even if some statistic about a group can predict behavior of all but one members of a group, prejudice against that one member is still unjust and unfair, We should treat others the way we want to be treated ourselves.
But back to the topic, I think I agree with you that why we believe privacy is important is critical to make any improvements or changes. Simply put, privacy is power. When someone deprives you of privacy against your consent (where expectation of it is readonable), they are excercising power over you. They are excecising a claim that for whatever reason, information about you now belongs to them. If all or most information about you belongs to someone, you are now their subject.
It could be as simple as a lack of understanding of the implications of privacy deprivation.
Interesting how you are trying to change the conversation and make it about the analogy used to analyze the root cause of the issue described in the post.
Could you clarify what you mean and what countries?
They also try to be kinda snapchat with self-destructing file shares. That this is impossible at the very least thanks to the analog hole is a given, but at least they mention that and mention how they intent to fight it (by using watermarks to discourage people from screenshots, etc). They seem to overstate their capabilities in their main marketing material, tho. They are a bit sparse on the details and very "marketingey" - which is understandable given the target audience of this campaign - but they promise a proper white paper and open source (not necessarily free) code soon.
All I see is that they have a kickstarter for a measly $150K, not really VC funding? So "make a profit for investors" might be a kind non-goal at least for now. It doesn't sound like they aim to be the next unicorn, just to be sustainable and maybe eventually make the major investors their money back and then some.
I wouldn't call this thing "fishy". It has a high likelihood of failure in the market and/or not quite delivering on the promises, sure, but that's true for all early startups. But they might come out with a real product valuable enough for some niche of people to pay for it and sustain it.
The Smarter Every Day guy also put his reputation on the line. He doesn't seem stupid enough to back complete vaporware or worse, grab the money and run. His reputation is likely more valuable mid to long term than the $500K (of $150K they asked for).
My personal guess: it will fail to be big (the space is too crowded in "good enough" apps, and they will have a hard time building enough network effect that their "sharing files" mission requires), it will fail to deliver everything they aspire to deliver, but they will deliver something that a niche of people will like and use. If that will be enough to sustain the thing... maybe not. They kinda have to go as a freemium app, like lastpass or mega.nz or protonmail to even have a chance to build up momentum, or find themselves some "sugardaddies" and "sugarmommies" as signal did or mozilla did (tho the latter is in trouble now thanks to the codependence - as well as bad management). They could even become a mega or even a dropbox competitor. Or they will fail to acquire enough users and fade away or have to pivot to a secure and private file management/backup solution, and still face a lot of competitors.
[1] Obligatory: https://news.ycombinator.com/item?id=8863
Great article and a good demo and insight into CSS capabilities in particular but I have to disagree with the above quote taken from the article. I surf the web with JavaScript disabled and the words 'most', 'properly' and 'suboptimal' in my view are debatable.
most - for me, about 99% of websites still work best with JS disabled. If I see the 'please enable JavaScript ' message on a content site (like a blog) I generally bail immediately because delivering content with JS is my definition of suboptimal and a sign of inexperienced devs or a CMO with way too much influence over dev.
properly - when I view a pure content site (like a blog), actually seeing the content is my definition of 'properly'. Seeing a blank screen or the 'please enable JavaScript ' is my definition of not functioning properly. Using JavaScript to deliver content seems like overkill to me.
suboptimal - for me, rather than leading to a suboptimal web experience, disabling JavaScript leads to an optimal web experience. I avoid most ads and I don't suffer JS download delays. All I want is the info. Helping to preserve my online privacy is just a side bonus.
I have a simple rule. If a website is an application (i.e. it has instrumental value) and it's behind a login screen, then by all means use JS. If it's not (i.e. it has intrinsic value like a blog post) then don't. To me, a PWA is the optimal app experience, not the optimal content experience. JS is not for delivering content, it's for delivering functionality, instrumentality.
The browser, if it's asked to retrieve that thing (image, page, etc) later, sends the "etag" back in the request via a If-None-Match header. The server then knows whether the image/page/etc has changed since the client last requested it. And, it can send back either the new version of the image/page/etc, or a "304 Not Modified" if the page hasn't changed...that is, the computed etag hash value is the same.
Here's the problem. There's no spec for how an etag is computed or how it's used. So on the server side, I can use it like a marker tag. Say, I generate a known unique tag for every new visitor that doesn't send me If-None-Match, like a GUID. And I keep a table of those Etag values. You're now fingerprinted...your browser will send that value back every time you visit, no JavaScript required.
And what if my browser sends requests via multiple proxies? Would the etag likely be different then as well?
But then again, AdNauseam exists https://adnauseam.io/
I get a different fingerprint every time on refresh.
Brave Version 1.31.87 Chromium: 95.0.4638.54 (Official Build) (64-bit) with uBlock Origin.
Firefox, Ubuntu, and a handful of common plugins.
I imagine this would be a pain for browsing in general, but could help browsers in a privacy mode
These days I have a 70 GB plan with data rollover, which leaves me with plenty of data to spare. But for the longest time I used to be on a plan with only a couple of GB of data per month, and it was a real pain in general. In that situation, downloading all resources instead of only the ones I need would have made a noticeable impact I am sure.
Even though I now have data to spare, the additional slowness that you mentioned would be annoying enough that I would not want my device to do that. Additionally, transferring more data would also consume more battery.
Also, your argument assumes everyone is browsing on a phone, and with a "plan". Is there no other way to access the web these days?
I think simply disabling JS spares a lot more battery. Hell, with noScript you can block font manipulation.
but I even tried refreshing the page on both firefox and chromium, it was different each time.