Freedombone Blog

Freedom in the Cloud

Collaboration during Crisis

The pandemic is undoubtedly a huge crisis, but it's not as if the time before that wasn't also a different kind of crisis. Many people are now working from home and using videoconferencing, and the problems with the proprietary systems for that are starting to become well understood.

During the pandemic it may be even more important than before that your communications remain private. You don't need to use proprietary tools which spy on you or leak your data. This is where self-hosting or running p2p apps gains additional importance.

So does Freedombone have any better alternatives? The answer is yes.

The main apps which you can install for videoconferencing are NextCloud and Matrix/Riot. There is an app installable within NextCloud called NextCloud Talk, which then allows you to do video chat between multiple participants.

Riot (the web client for Matrix) can do video chat on a one-to-one basis, and you can do chat between three or more participants via the Jitsi integration. The particular Jitsi server which is used can be configured from the Freedombone Web admin system by selecting the Riot app and then choosing Settings. Unfortunately, Jitsi isn't an app within Freedombone because it's just not stable on low power hardware.

If you only need voice chat, not video, then Mumble is the best app to use. It has been around for a long time, works even with low bandwidth internet connections and is reasonably secure. This may be a more practical way to hang out with friends during lockdown.

When it comes to getting work done in a collaborative real-time way then CryptPad or EtherPad apps can be useful for that. Etherpad permanently stores documents on the server, whereas CryptPad is designed for more ephemeral document creation within a Tor browser. CryptPad even has a collaborative spreadsheet and source code editor. One thing to watch out for with CryptPad is that the first time you access the site your browser window may appear blank for a while and perhaps ask to continue waiting. This is because it's downloading a lot of javascript from the server into your browser. Just wait and it will eventually appear.

Outside of the Freedombone project there is also other Free Software which you can try. Jami also does videoconferencing and so does qTox. qTox can also be routed through Tor for extra security. Jitsi Meet is also installable on Android or LineageOS via F-droid.

Static Analysis for Epicyon

Recently I discovered a bug in Epicyon which was just a missing function argument, and since my background is with languages like C, where this sort of thing would be caught at compile time, I was thinking that there ought to be some static analysis tool to find bugs like this automatically. It turns out that there are a few for Python.

The tool I went with is flake8, which imposes a certain code style and also finds syntax errors, missing imports and other things. It's already packaged for Debian, and so this doesn't change the status of Epicyon as potentially being included within a pure blend.

While using flake8 other bugs were found, and they were mostly minor ones in lesser visited parts of the code. I've also added a script called static_analysis which runs flake8 on all the source files, apart from the unit tests.

So now I can have greater confidence that the code is doing some approximation of what it's supposed to be doing, without variable names with typos in them or missing imports.

Improving onion support

I've been improving the support for the dual use case of Epicyon in which the instance is primarily on a clearnet domain but can also be used via an onion address. Previously when accessing via an onion address in a Tor browser it would often try to revert back to the clearnet domain, but now in nearly all cases it will stick with the onion address.

This kind of dual use case is typical for apps on Freedombone, and it gives you an alternative way to get to your sites if the clearnet becomes censored - such as if there is a hostile corporate firewall between you and your server. Due to the existence of bridges it's difficult for firewalls to entirely block access to Tor.

The future seems more uncertain than ever and so making use of alternate domain systems, like onion addresses, DAT, SSB, I2P, IPFS and so on is probably wise, at least as a fallback. Censoring things via DNS poisoning or blocking has historically been the go-to way that authoritarian governments try to stop people having the right to read in times of "national emergency".

Relaying and Hashtag Federation

I just saw the talk about hashtag federation in the fediverse and since I havn't written anything on this topic here are my current thoughts.

I think relaying of posts, in the style of an email open relay, is probably a bad idea. It's probably a bad idea in the fediverse for the same reasons that it's usually a bad idea for email. The most obvious issue is that it easily enables spam. For example, suppose there was a hashtag for a currently urgent event. A spammer could then just flood that hashtag with ads, or a political adversary could post random garbage with the hashtag attached in order to flood out the signal with noise and make it less likely that people will pay attention to that topic.

The other issue is post integrity. Usually this is ensured by a http signature, but if a post is relayed then how do we know that the post stored on the relay is the same as the original? An evil relay could alter public posts to deliberately create flame wars and instance blocking.

So I think relaying of posts and hashtags could create more problems than they solve. In the scenario mentioned in the talk you may still get to know what's happening in a protest because people you follow will be boosting posts with the hashtag. Boosting becomes a decentralized way of distributing hashtags around between instances, without breaking the integrity checks via signatures and directly following the chain of trust from one person to another. In the relay model you need to somehow trust that the relay is not evil and it becomes too easy for bad actors to try to influence what people are thinking about a topic.

Notes during Pandemic

I thought for a long time about whether I should write anything about the pandemic of 2020 here on this blog. It's such a serious situation that in future anything I might write now could appear to be hopelessly naive or disrespectful. Many mistakes have been made, and I think that's primarily because nobody has experience of this type of event within living memory.

Something which the pandemic has already shown is who is really important in the economy. It's not the highly paid people, like bankers or tenured professors. The people who deliver the most value to the economy, and who keep it going, are the supermarket and warehouse workers, the delivery drivers, care workers, farmers, cleaners, bakers, nurses and refuse collectors. The people who are typically on minimum wage or zero hours contracts. There's a paradox that the people which society values least are actually the ones most essential to its continued functioning.

The crisis will eventually pass, and when it does I hope that the people who got us through it are appropriately recognized. I also hope that grief and anger can be effectively transformed into lasting change. We must not return to the old world which existed before the crisis. In the new economy nobody must be denied medical care or food or housing, and the well-being of everyone, rather than private gain for a few, must be the main priority.

The Cloudflare Conundrum

As an extra firewall option I've added the ability to block Cloudflare IP addresses within Freedombone. For now I'm not going to make it the default and instead leave it as an option within the freedombone-sec command. The reason for that is because Cloudflare has become so pervasive that blocking it by default could break things.

Cloudflare is an expanding centralized system implementing a sort of internet based firewall or firewall by proxy. It has sometimes been described as "the lazy admin's firewall". So if you're a corporate sysadmin on a six figure salary and you'd rather spend time on the golf course than configuring servers then your go-to solution is to proxy your traffic through Cloudflare and hope that they do a good job of filtering any incoming bogons. The trouble is that this proxied Man In The Middle situation then turns into a hazard, because it's a point at which third parties can exert control without the knowledge of sender or receiver (Alice and Bob in the security lingo. Cloudflare would be Eve). Unless you absolutely trust Cloudflare, it breaks the transport layer security.

One problem on the immediate horizon is that Gitlab will be using Cloudflare soon. If cloning a repo goes through a Cloudflare proxy then there is very obvious potential for targeted nefariousness to occur. Imagine a government issuing a secret order to insert a bug into a repo when it is cloned by a certain IP address, without the knowledge of the git hosting company.

At present the Gitlab mirror of Freedombone is being used for updates, so I may need to rethink that and move it elsewhere.