What is Bettiex?
Bettiex is a pocket-size network appliance. Simply connect it to your home router, follow the setup guide or use “auto-configuration” mode and enjoy (mostly) ad- and web-tracker free browsing experience. It seamlessly works for every connected device in your network, including laptops, mobile phones, smart TVs, and even “smart” kettles (right, kettles aren’t smart enough yet to show you ads, but they will be soon).
Bettiex features include but not limited to:
Bettiex comes with a complementary cloud service which provides daily updates to the black lists, which include not only ad-serving and tracking domains but also phishing and malicious hosts. Moreover, the service provides a secure channel for DNS traffic. That is, all DNS requests and responses are routed through an encrypted channel, and every DNS response comes with a digital signature to ensure its authenticity. This prevents your ISP or whoever else is between you and the web-site host, from feeding you with fake DNS responses and snooping on your DNS traffic.
The Bettiex service is subscription based because maintaining a service requires money and we are strongly against treating our users as “assets”. In other words, Bettiex will not sell your data to any third parties. Moreover, we aim to use as little user data as technically possible to keep the service running.
We can’t guarantee that Bettiex will block all the ads, trackers and “bad” sites. This is hardly possible in practice. However, combined with the service, it will certainly provide a Better Internet Experience.
The Kickstarter project is aimed to cover the initial costs of hardware manufacturing and reservation of virtual server instances to run the service.
Why Bettiex?
We appreciate things that just work, things that do not require our attention to continue working. Think of a dishwasher or an air conditioner. These devices work for years with little to no maintenance, but they make your life so much better. We expect them to serve many years without a failure and they (mostly) meet our expectations. With that philosophy in mind we designed a device that once configured, should never ever distract you from other, more important things in your life. Bettiex is the complete opposite of “flashy” and “cool”, for it strives to be an unassuming, non-intrusive, if not boring, appliance.
Most gadgets are aimed at the opposite (especially smart phones, people spend hours (!) every day looking at them). They demand your attention and don’t let you go once they have it. Ads are the same in their nature, they are purposely crafted to attract your attention, to force you have a look at them. All those moments you waste looking at some pop-up ad, or shift your attention on to a short video, add up to minutes and hours a month, days and weeks a year. Yes, you spend days of your life every year looking at something that has little to no value to you.
Bettiex is there to reclaim these moments, never taking it back on itself.
It all started on…
The 3rd of May, 2019 when I came back home after work. I made myself a cup of coffee, occupied a cosy chair, and opened a tech-news website in Firefox, anticipating reading and relaxing in the quiet.
Not on that day! Ads jumped out at me, aggressively, intrusively, without any prior warning. It turned out, one of the digital certificates that Firefox used to verify installed add-ons had expired. That prevented all the installed add-ons from working, the ad-blocking one included. I had been using the add-on since Firefox was still version 1.x, thus being mostly shielded from the nasty experience for more than a decade. That’s why the amount of ads I was seeing on that day was a bewildering, shocking experience. “Hmm… there must be something I can do about it” – I thought to myself.
That “something” assumed …
A dedicated, low-power device, pocket-sized, but durable, which I could just shove somewhere behind my router and forget about its existence. It should not require a dedicated power supply (as I had way too many already), ideally powered by a USB cable which could be plugged into any available USB socket.
Having a burning passion for embedded Linux, I naturally reached for some of the of development boards I had accumulated over the past few years.
I quickly hacked something together using Nerves as the starting point. I can’t help but sing the project praises. Nerves seamlessly combines the strengths of the Linux kernel and the legendary reliability of Erlang VM into one system. That is, no user space services, read-only file system, and on top of it a run-time system purposely built for fault-tolerance and concurrency. Sounds like a perfect match.
This talk by Garth Hitchens was (and still is!) my source of inspiration. In fact, it was what actually got me hooked into the world of embedded Linux in the first place. Thank you Garth, and many thanks to the people behind Nerves.
The First prototype
The prototype was running on Raspberry Pi 3. I chose it mainly because I wanted to share it with my friends and thought that it would be easier for them to get one of those rather than any other SBC.
Initially it was just a caching DNS proxy server. Then I compiled a huge list of ad-serving and web-tracking domains to enable filtering. The web pages, free of ads and tracking scripts, were loading blazingly fast, especially when they hit the cache.
I couldn’t have been happier… for a few weeks, that is, until I started noticing some ads creeping through here and there. The list had more than a million entries, and I naively assumed that no ads would ever pass. Alas, it turned out to be an uphill battle. Thousands of ad-serving domains appear daily. And someone (as a joke, maybe?) regularly adds well-known domains, such as microsoft.com or amazon.com into publicly available black lists.
This was when I realised that the device was only half of the solution. There should be a complementary service that daily, if not hourly, updates the list and verifies it. Moreover, the service should provide some kind of protection from data tampering and be resilient to outages and IP address blocking.
Start of the project
During those early days I was talking about the idea to anyone who had ears to listen. One of the people was Pavel. He was immediately sold on the idea and became more passionate about it than I could ever hope to be :). We had quite a few brainstorming sessions about the device and the service, and made the decision to attempt funding it via Kickstarter.
Having background both in electronics and art, Pavel gave some valuable feedback and made the early sketches.
As time passed, we went through a number of prototypes and revisions, evaluated and extensively tested multiple boards and acquired a decent understanding of what we were going to offer. Then we reached out to manufacturing and fulfilment companies and received the essential quotes.
We felt ready.
Bettiex – a Hardware Ad Blocker
At first we were opposed to investing into a new hardware platform, assuming that we would run it on Raspberry Pi 3 and/or the then-upcoming Raspberry Pi 4. While having fantastic price/performance value, they have some drawbacks. Namely, they require a somewhat powerful and stable power supply (even more so for rpi 4), otherwise they may operate unpredictably. It’s not the case that they are not suitable, quite the opposite, but using and abusing them for months we realised that they didn’t quite fit the “plug anywhere and forget” idea I had back in the beginning.
That is why, after testing some other boards, we decided to base the device on the BeagleBone platform. We found it more “hacker-friendly” and abundantly documented (I’m looking at you, Ti AM335x’s 5000+ (!) pages long reference manual). And with a typical consumption of only around 1-2 Watts it can be powered by pretty much any USB socket out there, including ones commonly found in home routers. What’s more important, however, is that the platform is open-source, both hardware and software. An open-source hardware design allows some tweaks, and potentially, different manufacturers. This helps immensely when you try to build something that should “just work” 24 hours a day, day after day, for months and years to come.
The device has a built-in web-interface which allows to configure multiple parameters, such as upstream DNS servers, custom lists for white/blacklisting, and a flexible parental control
The Bettiex Service
A lot of thought was put into the service. We wanted to make it highly-available, reliable and resilient to partial outages. An ambitious goal, indeed. On the other hand, it should remain accessible for a wide audience and financially sustainable to keep on going even in case of some funding mishaps. In other words, we should be able to scale it up and down depending on the number of users without sacrificing reliability.
We decided to implement it as a geographically distributed, multi-provider, federated clusters of tiny servers (we call it “the swarm”) so that it would be hard to block them all, and it should continue to work even in case of a massive outage.
The sole purpose of the service is to make your Internet experience better. Here is how it achieves the goal:
The service gathers reports from end users about ad-serving and tracker domains. The data is used as an input for a web-crawler which utilises machine learning-based approach to check the reported sites and update the black list. Also, the crawler periodically runs through the Alexa top1000 sites to find the ad-serving and tracker domains and pro-actively update the black list. Moreover, the service combs through materials created by security professionals to update the list which labels potentially malicious domains. The lists are securely distributed across all connected devices on a daily basis.
Another aspect of the Bettiex service, is to ensure DNS data authenticity and to prevent from various attacks related to DNS response tampering. Let’s dive a bit into technical details:
When a request, such as “where is google.com?” comes in from a laptop it is first routed to Bettiex. If it is in the black list, a response is generated which loops back the connection to the device itself. Otherwise the request is forwarded to one of the servers. The server follows the recursive name resolution protocol and rejects unverified DNS responses. All root name servers and TLD name servers do sign their responses. In the case where a leaf authoritative DNS server does not provide a signed response (or it can not be verified for whatever reason), it is simultaneously queried from multiple sources residing in different subnets. Only when the extra responses agree and/or can be verified, the response is delivered back to Bettiex over an encrypted channel. Bettiex again verifies the signature(s) of the response and forwards it to the client – a laptop, from which request was initiated.
Why is DNS response verification and encryption so important? In short, it helps with protecting your privacy and boosts online security. It prevents ISPs and other intermediate, and potentially malicious, entities on the path of your packets from faking responses and redirecting your browser to impersonating and/or malicious web sites.
Note, however, the Bettiex service alone does not prevent traffic eavesdropping (that’s the job of HTTPS and other transport protocols), nor does it hide your browsing history and source IP address (the latter may be achieved through TOR or VPN). However, it ensures that your devices talk to the entities whom they believe they do (and don’t talk to those whom they shouldn’t).
Future plans
We are somewhat reluctant to declare any “stretch goals”, but we have things in mind and/or down the pipeline and exceeding the project goal will certainly help in delivering those.
The following is a non-exhaustive list of things we are considering to implement (without any particular order):
Rewards
All the reward types can be divided into three broad categories:
We decided to allow backers the choice of Raspberry Pi because in the unlikely case they decide not to use Bettiex, they will still have a great SBC they could re-purpose as they wish.
The Bettiex device, on the other hand, is a purpose-built hardware. We are obsessed with reliability and durability and we put our hearts and souls into making Bettiex accordingly.
Both types of hardware kits come with life-time (limited number of rewards) or 1 year subscriptions.
Manufacturing a new product is always a challenge. There are many things that may go wrong. We are trying to mitigate the risks by relying on a proven platform and partnering up with experts in the field. We are optimistic about the process, but we would be lying if we didn’t tell that we feel somewhat uneasy about it, not until we test random samples from the ready-to-ship batch. Another possible challenge is the initial device setup. It is a fairly straightforward process (especially if you have a network engineer degree ;), but we understand that it may be somewhat of an obstacle. That is why we are working hard on the setup guide and are experimenting on our less-technical friends, using them as a “testbed” to ensure that it’s easy to follow. We also found that some ISPs provide their clients with home routers where the required settings are disabled. We are experimenting with an auto-configuration mode to work around those. Unfortunately, it is not a bullet-proof method since it is based on some assumptions about user’s network configuration and is not applicable in all cases.