<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tech</title>
    <link>https://blog.transistor.one/tech/</link>
    <description>Anything IT related that frustrates me</description>
    <pubDate>Wed, 15 Apr 2026 00:03:55 +0000</pubDate>
    <item>
      <title>Why I used to love DRM-free streaming</title>
      <link>https://blog.transistor.one/tech/why-i-used-to-love-drm-free-streaming</link>
      <description>&lt;![CDATA[This is kind of a follow-up to my previous blog post about the history of DRM, which I wrote here.&#xA;&#xA;What I want to talk about in this blog post is which video-on-demand providers decided to not use these mechanisms for their content.&#xA;&#xA;!--more-- &#xA;&#xA;The basic gist of what I wrote there was that copyright holders of popular media wanted a means to protect their content when distributed to consumers digitally, video on demand providers wanted technical solutions to provide such means of protection and make a feasible business model out of it and tech companies wanted to solve these issues in various ways.&#xA;&#xA;Long story short, they all had their dreams come true via the development of three concurrent technologies for protecting digital media: Apple&#39;s FairPlay, Microsoft&#39;s PlayReady and, last but not least, Google&#39;s Widevine.&#xA;&#xA;These three pieces of technology is nowadays used to protect, behind the scenes, all video media that&#39;s copyright protected but which also reaches your screen.&#xA;&#xA;They are the foundational building blocks that enforce copyright in a mostly transparent way.&#xA;&#xA;Now, let&#39;s talk about enforcement, as not all video on demand providers use these technologies in equal capacity.&#xA;&#xA;Technically, to enable the usage of these technologies in an agnostic way, the W3C introduced a new web standard called the Encrypted Media Extensions (which introduced the requirement for web browsers to include some form of proprietary decryption components, even browsers that had been traditionally open source).&#xA;&#xA;By the standardization of this technology, all web platforms had a common and stable API to call from their client-side Javascript to interact with the underlying FairPlay/PlayReady/Widevine protection facilities in order to initiate and maintain a secure channel to transfer copyrighted video content through the internet.&#xA;&#xA;Since this particular standardization back in September 2017, it was pretty clear that video on demand services had a stable future ahead of them.&#xA;&#xA;Netflix, which had already been proven to have a successful business model by that point and was already an extremely popular platform even back then, was reaching revenues that were quite impressive.&#xA;&#xA;Many other video on demand platforms were already quite well established, by this point, which was already a good indicator that this EME tech being standardized was pretty much inevitable.&#xA;&#xA;However, there were those people that had issue with this: the free software crowd.&#xA;&#xA;Free software, as a social movement, was always about promoting open source and the ability to contribute and share your changes with the world at large, as much as possible.&#xA;&#xA;The free software crowd never liked the idea of forcing proprietary components into web browsers in order to keep them compliant, as that would go against the very principle of what they argue the open web should be.&#xA;&#xA;But, as I said in my previous blog post, the open source dilemma was a huge one and, realistically, there is no way to write a web browser that&#39;s fully open source but which also is supposed to allow for hiding of digital data that&#39;s copyright protected and very valuable.&#xA;&#xA;To do so entails that anyone that has some experience with the programming language that this web browser is implemented in can very well take the source code as it is, change it to bypass the security measures that are implemented in the vanilla browser, re-write the pipelines that the protected data are supposed to go through and change them so that you reconstruct a video file from the stream instead, dump said file on your desktop and then, &#34;voila!&#34;, just like that, you have an unofficial fork of that browser that can steal the video contents from Netflix and dump them in mp4 files on your desktop and then share that file with the world at large.&#xA;&#xA;Nobody wants that.&#xA;&#xA;And so, even though this decision displeased the free software crowd by a lot (so much so that, the same day the EME tech was officially standardized, the Electronic Frontier Foundation published an open letter of resignation from the W3C), the W3C made the difficult decision to standardize this technology anyways in order to prevent third party media plugins (e.g. Adobe Flash or Microsoft Silverlight) from re-emerging into the scene as necessities to use Netflix or other video-on-demand providers.&#xA;&#xA;Web browsers that were historically open source but still wishing to remain fully web standards complying (such as Mozilla&#39;s Firefox) ended up with having to devise clever workarounds to provide the needed functionality to their userbase. Mozilla, for example, figured out a way to do this by simply piggybacking on Google Chrome&#39;s existent proprietary Widevine CDM solution and simply utilizing this as a plug-in to their, otherwise open source, web browser. And, to still keep their free software promoting user base happy and not have them cry foul and yelling that Mozilla is &#34;polluting&#34; a free software browser with proprietary nastiness, they added a checkbox in their browser&#39;s settings that allows the end user to decide whether to enable the Widevine plug-in or disable it completely. Disabling it would mean, obviously, that video on demand providers would have no way to create a secure communication channel with the Content Decryption Module on the end user&#39;s device (since there is no CDM to talk about at all) and, thus, there would be no way to secure the video content, which means that sites like Netflix would simply refuse to let you stream from them, even if you were a paying customer.&#xA;&#xA;Obviously, this meant that most people that still use Firefox kept that checkbox enabled, so that Widevine would remain as an installed plug-in and be constantly enabled. After all, who doesn&#39;t want to watch Disney+ TV shows on their computer?&#xA;&#xA;Well, maybe this won&#39;t surprise very many people, but I am a hard-boiled free software advocate myself and I&#39;ve always been very adamant about the web needing to be as open and devoid of proprietary technologies, as possible.&#xA;&#xA;Given my very puritan stance on this matter, it should come as no surprise, dear reader, that I was among the very few Firefox users that kept said checkbox unchecked, and so I had no Widevine CDM to speak of installed on my Linux system.&#xA;&#xA;This meant, effectively, that video on demand providers like Netflix, Disney+, Amazon Prime Video and so on would detect the lack of a proper CDM in my browser and, obviously, they would refuse to stream any content to me, because there was a very real risk that I would then copy said video and allow others to pirate it from me.&#xA;&#xA;Needless to say, I was a bit unhappy with the current state of affairs. Still, I wasn&#39;t willing to compromise, and I genuinely believed, deep down, that video-on-demand as a business model was doomed to fail and that it was the root of all evil, as it was causing the advent of more proprietary solutions that were parasitizing a pure and virgin web.&#xA;&#xA;In my quest to find video on demand on the web to consume but which did not require me to enable the proprietary CDM in my browser, I ended up with three video on demand platforms that I had to choose from: Crunchyroll, HIDIVE and Wakanim.&#xA;&#xA;Before you say anything, no, I wasn&#39;t specifically choosing anime services to watch; it just so happened that these were the only services that did not require me to have Widevine enabled.&#xA;&#xA;All the others (Netflix, Amazon Prime Video, HBO Max etc) automatically detected my lack of a CDM and would give me errors when trying to play any stream on their platforms whatsoever.&#xA;&#xA;Those three were the only services that I could use (although, with Wakanim, even this might not have been the case, as I couldn&#39;t even reach the point where I could play media on it).&#xA;&#xA;Wakanim&#xA;&#xA;Wakanim is the outlier because I simply couldn&#39;t use it at all. For whatever reason, whenever I tried to use their website, the website presented itself in Russian to me.&#xA;&#xA;I&#39;ve encountered situations like these when a website tries to auto-detect my location based on my IP and then decides to auto-translate their entire page to whatever language it thinks I speak as a means of convenience.&#xA;&#xA;The only issue is, I&#39;m not Russian, nor do I know or speak Russian whatsoever. I&#39;ve been born, raised, and am currently living in Romania. So the website auto-translating itself to Russian was quite a hindrance to me.&#xA;&#xA;Normally, a rationally designed web platform would still offer the end-user the possibility of correcting these types of errors by giving them a language selection menu to select a different language from the current one. But no, of course it wouldn&#39;t be that easy. Apparently the programmers that worked for Wakanim decided that their platform was too perfect to need such a fallback and that such bugs could never happen on their polished little website (spoiler alert: it happened, to me at least).&#xA;&#xA;So, with Wakanim, at least, I really can&#39;t say whether it would or not allow for playing protected media without a CDM installed. From what I read online, supposedly, you can actually download the video series that you purchase from their platform, in an unencrypted format, so you can then play that media on any player of your choice, offline.&#xA;&#xA;If that were true, I would have been mighty impressed and a big fan of. It would mean that there&#39;s really no point in employing a CDM and encrypting the data stream if you&#39;re just gonna gift-wrap the protected content to your customers anyway. &#xA;&#xA;I guess we&#39;ll never know now, since they&#39;ve been discontinued since November 2023.&#xA;&#xA;HIDIVE&#xA;&#xA;Oh, good ol&#39; HIDIVE. It&#39;s very funny to think that the entire reason why I initially chose to become one of their customers is because I could use their platform without needing to install proprietary components in my browser to watch their videos.&#xA;&#xA;My relationship with them was a short lived one, as any of those that follow my anime blog already know (specifically, the blog which can be found here). &#xA;&#xA;If you don&#39;t know, long story short, I made a subscription to them back in early 2022, watched a couple of their shows that were pretty fun (like Tokyo Mew Mew New, The Executioner and Her Way of Life, Endo and Kobayashi Live! The Latest on Tsundere Villainess Lieselotte and many, many more) but eventually, at some point during April or May 2023 I think, they suddenly and abrutly stopped servicing Romanian customers on their platform. You can read more about that over here.&#xA;&#xA;Eventually I decided to mask my location using a VPN to appear as if I was from a different country so that I could still stream from them but, when the time eventually came to renew my yearly subscription towards them, I decided to cancel and never look back.&#xA;&#xA;In the end, I liked the fact that they don&#39;t force a proprietary CDM down your throat in order to stream videos from them. And if you&#39;re also anti-proprietary DRM and want to support video-on-demand platforms that don&#39;t require them too, then you might like them.&#xA;&#xA;Personally I cannot, in good conscience and with my self respect intact, continue to financially support a service that discriminates against me simply for being from Romania, so I choose not to continue giving them money (I know that it&#39;s not a personal matter and that they just made a financial decision to stop supporting Romania, I get that, but I still find it insulting nonetheless).&#xA;&#xA;Crunchyroll&#xA;&#xA;Finally we came to the last one in our list. Please be aware, though, that what I&#39;m about to write is a, mostly, historical piece about how things were back at the time.&#xA;&#xA;For a long time (I don&#39;t even know since when but it&#39;s been the case at least since I joined them), Crunchyroll has somehow allowed you to stream their content without actually necessitating to activate the Widevine CDM in your web browser.&#xA;&#xA;I don&#39;t know if they&#39;ve ever officially supported that, since as far as I can tell, their website always warned that you should enable it to have it work, but unofficially, if you kept it disabled, either intentionally or unintentionally, the page you&#39;d load would warn you that you need to turn it on but, eventually, the video would still load without any issues.&#xA;&#xA;Yes, that&#39;s right. You used to be able to watch Crunchyroll videos entirely unprotected, no CDM required, at your leisure.&#xA;&#xA;That. was. AWESOME.&#xA;&#xA;Key words being &#34;used to&#34;.&#xA;&#xA;At some point in the past (I think late 2023?) they&#39;ve patched their Javascript implementation and now their website correctly detects whether you have the CDM disabled or not. If you do have it disabled it doesn&#39;t allow you to stream anymore.&#xA;&#xA;So this obscure workaround doesn&#39;t actually work anymore, as of the posting of this blog post.&#xA;&#xA;I am tremendously sad by this outcome, I&#39;m not gonna lie.&#xA;&#xA;Crunchyroll, the last bastion of hope that I had for a free web has betrayed me, and now I am forced to enable my Widevine CDM again, just to watch Crunchyroll videos again.&#xA;&#xA;Conclusion&#xA;&#xA;I know what many people are going to tell me: it&#39;s selfish of me to want for streaming services to disable the only means that they have for protecting their content just because of my personal puritan ideology of hating proprietary software.&#xA;&#xA;I get it, I really do.&#xA;&#xA;That&#39;s why, in the end, I decided to still keep my Crunchyroll subscription. &#xA;&#xA;Because, even though I&#39;m unhappy with how things turned out to be, I realize that what I want is pretty much impossible to implement: I want full complete control over my own hardware and everything that runs on it (i.e. the free software philosophy, in a nutshell) but I also want to be able to stream copyright protected videos through that hardware as well (which requires at least some proprietary closed-source components to implement the necessary protections).&#xA;&#xA;This is a contradiction that has no solution. In fact, this isn&#39;t even a technical dilemma, the way I always thought of it, but merely a philosophical one.&#xA;&#xA;The only way to reconcile on this is to make some compromise: either I give up on streaming media on my PC entirely and embrace a fully open and free software ecosystem, or I decide to allow media streaming on my PC, in which case, I have to install at least some proprietary software to allow for its protection and copyright enforcement.&#xA;&#xA;Ultimately, I made the decision that any weak willed individual would make and I eventually caved in and enabled the Widevine CDM. It was a choice, a painful choice, but a choice I needed to make.&#xA;&#xA;Some might argue that it was the wrong choice and, to be honest, I wouldn&#39;t necessarily even disagree with them. Compromising on one&#39;s own ideals because of convenience is never an easy pill to swallow, but I did.&#xA;&#xA;Still, it is because of this decision that I still get to watch Crunchyroll streams to this day, and maintain my anime blog as well.&#xA;&#xA;So I guess at least some things worked out, for better or for worse.&#xA;&#xA;Still, I can&#39;t help but wish for a better world: a world that maybe copyright holders decide to be more trusting of their consumer base and would allow them to watch their media without having to devolve to such barbaric and convoluted processes just to prevent piracy.&#xA;&#xA;Because, as many people have shown in the past, DRM is nothing more than additional hoops that are added to discourage piracy. It does not guarantee that piracy will never happen.&#xA;&#xA;And time and time again it&#39;s been shown that pirates, for better or for worse, will get their hands on said protected media one way or another, through various means, and the end result is always the same: DRM just acts as a minor impediment in the grand process of breaking the protection schemes.&#xA;&#xA;The people that always end up suffering the most when DRM is added to products are the lawful consumers.&#xA;&#xA;Blog post by Alexandru Pentilescu.&#xD;&#xA;&#xD;&#xA;You may contact me at alexandru.pentilescu@disroot.org&#xD;&#xA;&#xD;&#xA;Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2&#xD;&#xA;&#xD;&#xA;Download that key from any keyserver you wish]]&gt;</description>
      <content:encoded><![CDATA[<p>This is kind of a follow-up to my previous blog post about the history of DRM, which I wrote <a href="https://blog.transistor.one/tech/a-brief-history-of-drm-protection" rel="nofollow">here</a>.</p>

<p>What I want to talk about in this blog post is which video-on-demand providers decided to not use these mechanisms for their content.</p>

 

<p>The basic gist of what I wrote there was that copyright holders of popular media wanted a means to protect their content when distributed to consumers digitally, video on demand providers wanted technical solutions to provide such means of protection and make a feasible business model out of it and tech companies wanted to solve these issues in various ways.</p>

<p>Long story short, they all had their dreams come true via the development of three concurrent technologies for protecting digital media: Apple&#39;s FairPlay, Microsoft&#39;s PlayReady and, last but not least, Google&#39;s Widevine.</p>

<p>These three pieces of technology is nowadays used to protect, behind the scenes, all video media that&#39;s copyright protected but which also reaches your screen.</p>

<p>They are the foundational building blocks that enforce copyright in a mostly transparent way.</p>

<p>Now, let&#39;s talk about enforcement, as not all video on demand providers use these technologies in equal capacity.</p>

<p>Technically, to enable the usage of these technologies in an agnostic way, the W3C introduced a new web standard called the Encrypted Media Extensions (which introduced the requirement for web browsers to include some form of proprietary decryption components, even browsers that had been traditionally open source).</p>

<p>By the standardization of this technology, all web platforms had a common and stable API to call from their client-side Javascript to interact with the underlying FairPlay/PlayReady/Widevine protection facilities in order to initiate and maintain a secure channel to transfer copyrighted video content through the internet.</p>

<p>Since this particular standardization back in September 2017, it was pretty clear that video on demand services had a stable future ahead of them.</p>

<p>Netflix, which had already been proven to have a successful business model by that point and was already an extremely popular platform even back then, was reaching revenues that were quite impressive.</p>

<p>Many other video on demand platforms were already quite well established, by this point, which was already a good indicator that this EME tech being standardized was pretty much inevitable.</p>

<p>However, there were those people that had issue with this: the free software crowd.</p>

<p>Free software, as a social movement, was always about promoting open source and the ability to contribute and share your changes with the world at large, as much as possible.</p>

<p>The free software crowd never liked the idea of forcing proprietary components into web browsers in order to keep them compliant, as that would go against the very principle of what they argue the open web should be.</p>

<p>But, as I said in my previous blog post, the open source dilemma was a huge one and, realistically, there is no way to write a web browser that&#39;s fully open source but which also is supposed to allow for hiding of digital data that&#39;s copyright protected and very valuable.</p>

<p>To do so entails that anyone that has some experience with the programming language that this web browser is implemented in can very well take the source code as it is, change it to bypass the security measures that are implemented in the vanilla browser, re-write the pipelines that the protected data are supposed to go through and change them so that you reconstruct a video file from the stream instead, dump said file on your desktop and then, “voila!”, just like that, you have an unofficial fork of that browser that can steal the video contents from Netflix and dump them in mp4 files on your desktop and then share that file with the world at large.</p>

<p>Nobody wants that.</p>

<p>And so, even though this decision displeased the free software crowd by a lot (so much so that, the same day the EME tech was officially standardized, the Electronic Frontier Foundation published an open letter of resignation from the W3C), the W3C made the difficult decision to standardize this technology anyways in order to prevent third party media plugins (e.g. Adobe Flash or Microsoft Silverlight) from re-emerging into the scene as necessities to use Netflix or other video-on-demand providers.</p>

<p>Web browsers that were historically open source but still wishing to remain fully web standards complying (such as Mozilla&#39;s Firefox) ended up with having to devise clever workarounds to provide the needed functionality to their userbase. Mozilla, for example, figured out a way to do this by simply piggybacking on Google Chrome&#39;s existent proprietary Widevine CDM solution and simply utilizing this as a plug-in to their, otherwise open source, web browser. And, to still keep their free software promoting user base happy and not have them cry foul and yelling that Mozilla is “polluting” a free software browser with proprietary nastiness, they added a checkbox in their browser&#39;s settings that allows the end user to decide whether to enable the Widevine plug-in or disable it completely. Disabling it would mean, obviously, that video on demand providers would have no way to create a secure communication channel with the Content Decryption Module on the end user&#39;s device (since there is no CDM to talk about at all) and, thus, there would be no way to secure the video content, which means that sites like Netflix would simply refuse to let you stream from them, even if you were a paying customer.</p>

<p>Obviously, this meant that most people that still use Firefox kept that checkbox enabled, so that Widevine would remain as an installed plug-in and be constantly enabled. After all, who doesn&#39;t want to watch Disney+ TV shows on their computer?</p>

<p>Well, maybe this won&#39;t surprise very many people, but I am a hard-boiled free software advocate myself and I&#39;ve always been very adamant about the web needing to be as open and devoid of proprietary technologies, as possible.</p>

<p>Given my very puritan stance on this matter, it should come as no surprise, dear reader, that I was among the very few Firefox users that kept said checkbox unchecked, and so I had no Widevine CDM to speak of installed on my Linux system.</p>

<p>This meant, effectively, that video on demand providers like Netflix, Disney+, Amazon Prime Video and so on would detect the lack of a proper CDM in my browser and, obviously, they would refuse to stream any content to me, because there was a very real risk that I would then copy said video and allow others to pirate it from me.</p>

<p>Needless to say, I was a bit unhappy with the current state of affairs. Still, I wasn&#39;t willing to compromise, and I genuinely believed, deep down, that video-on-demand as a business model was doomed to fail and that it was the root of all evil, as it was causing the advent of more proprietary solutions that were parasitizing a pure and virgin web.</p>

<p>In my quest to find video on demand on the web to consume but which did not require me to enable the proprietary CDM in my browser, I ended up with three video on demand platforms that I had to choose from: Crunchyroll, HIDIVE and Wakanim.</p>

<p>Before you say anything, no, I wasn&#39;t specifically choosing anime services to watch; it just so happened that these were the only services that did not require me to have Widevine enabled.</p>

<p>All the others (Netflix, Amazon Prime Video, HBO Max etc) automatically detected my lack of a CDM and would give me errors when trying to play any stream on their platforms whatsoever.</p>

<p>Those three were the only services that I could use (although, with Wakanim, even this might not have been the case, as I couldn&#39;t even reach the point where I could play media on it).</p>

<h2 id="wakanim">Wakanim</h2>

<p>Wakanim is the outlier because I simply couldn&#39;t use it at all. For whatever reason, whenever I tried to use their website, the website presented itself in Russian to me.</p>

<p>I&#39;ve encountered situations like these when a website tries to auto-detect my location based on my IP and then decides to auto-translate their entire page to whatever language it thinks I speak as a means of convenience.</p>

<p>The only issue is, I&#39;m not Russian, nor do I know or speak Russian whatsoever. I&#39;ve been born, raised, and am currently living in Romania. So the website auto-translating itself to Russian was quite a hindrance to me.</p>

<p>Normally, a rationally designed web platform would still offer the end-user the possibility of correcting these types of errors by giving them a language selection menu to select a different language from the current one. But no, of course it wouldn&#39;t be that easy. Apparently the programmers that worked for Wakanim decided that their platform was too perfect to need such a fallback and that such bugs could never happen on their polished little website (spoiler alert: it happened, to me at least).</p>

<p>So, with Wakanim, at least, I really can&#39;t say whether it would or not allow for playing protected media without a CDM installed. From what I read online, supposedly, you can actually download the video series that you purchase from their platform, in an unencrypted format, so you can then play that media on any player of your choice, offline.</p>

<p>If that were true, I would have been mighty impressed and a big fan of. It would mean that there&#39;s really no point in employing a CDM and encrypting the data stream if you&#39;re just gonna gift-wrap the protected content to your customers anyway.</p>

<p>I guess we&#39;ll never know now, since they&#39;ve been discontinued since November 2023.</p>

<h2 id="hidive">HIDIVE</h2>

<p>Oh, good ol&#39; HIDIVE. It&#39;s very funny to think that the entire reason why I initially chose to become one of their customers is because I could use their platform without needing to install proprietary components in my browser to watch their videos.</p>

<p>My relationship with them was a short lived one, as any of those that follow my anime blog already know (specifically, the blog which can be found <a href="https://blog.transistor.one/alex/" rel="nofollow">here</a>).</p>

<p>If you don&#39;t know, long story short, I made a subscription to them back in early 2022, watched a couple of their shows that were pretty fun (like <em>Tokyo Mew Mew New</em>, <em>The Executioner and Her Way of Life</em>, <em>Endo and Kobayashi Live! The Latest on Tsundere Villainess Lieselotte</em> and many, many more) but eventually, at some point during April or May 2023 I think, they suddenly and abrutly stopped servicing Romanian customers on their platform. You can read more about that <a href="https://blog.transistor.one/alex/the-case-for-why-geo-blocking-is-absolutely-terrible-opinion-piece#the-tragedy" rel="nofollow">over here</a>.</p>

<p>Eventually I decided to mask my location using a VPN to appear as if I was from a different country so that I could still stream from them but, when the time eventually came to renew my yearly subscription towards them, I decided to cancel and never look back.</p>

<p>In the end, I liked the fact that they don&#39;t force a proprietary CDM down your throat in order to stream videos from them. And if you&#39;re also anti-proprietary DRM and want to support video-on-demand platforms that don&#39;t require them too, then you might like them.</p>

<p>Personally I cannot, in good conscience and with my self respect intact, continue to financially support a service that discriminates against me simply for being from Romania, so I choose not to continue giving them money (I know that it&#39;s not a personal matter and that they just made a financial decision to stop supporting Romania, I get that, but I still find it insulting nonetheless).</p>

<h2 id="crunchyroll">Crunchyroll</h2>

<p>Finally we came to the last one in our list. Please be aware, though, that what I&#39;m about to write is a, mostly, historical piece about how things were back at the time.</p>

<p>For a long time (I don&#39;t even know since when but it&#39;s been the case at least since I joined them), Crunchyroll has somehow allowed you to stream their content without actually necessitating to activate the Widevine CDM in your web browser.</p>

<p>I don&#39;t know if they&#39;ve ever officially supported that, since as far as I can tell, their website always warned that you should enable it to have it work, but unofficially, if you kept it disabled, either intentionally or unintentionally, the page you&#39;d load would warn you that you need to turn it on but, eventually, the video would still load without any issues.</p>

<p>Yes, that&#39;s right. You used to be able to watch Crunchyroll videos entirely unprotected, no CDM required, at your leisure.</p>

<p>That. was. AWESOME.</p>

<p>Key words being “used to”.</p>

<p>At some point in the past (I think late 2023?) they&#39;ve patched their Javascript implementation and now their website correctly detects whether you have the CDM disabled or not. If you do have it disabled it doesn&#39;t allow you to stream anymore.</p>

<p>So this obscure workaround doesn&#39;t actually work anymore, as of the posting of this blog post.</p>

<p>I am tremendously sad by this outcome, I&#39;m not gonna lie.</p>

<p>Crunchyroll, the last bastion of hope that I had for a free web has betrayed me, and now I am forced to enable my Widevine CDM again, just to watch Crunchyroll videos again.</p>

<h2 id="conclusion">Conclusion</h2>

<p>I know what many people are going to tell me: it&#39;s selfish of me to want for streaming services to disable the only means that they have for protecting their content just because of my personal puritan ideology of hating proprietary software.</p>

<p>I get it, I really do.</p>

<p>That&#39;s why, in the end, I decided to still keep my Crunchyroll subscription.</p>

<p>Because, even though I&#39;m unhappy with how things turned out to be, I realize that what I want is pretty much impossible to implement: I want full complete control over my own hardware and everything that runs on it (i.e. the free software philosophy, in a nutshell) but I also want to be able to stream copyright protected videos through that hardware as well (which requires at least some proprietary closed-source components to implement the necessary protections).</p>

<p>This is a contradiction that has no solution. In fact, this isn&#39;t even a technical dilemma, the way I always thought of it, but merely a philosophical one.</p>

<p>The only way to reconcile on this is to make some compromise: either I give up on streaming media on my PC entirely and embrace a fully open and free software ecosystem, or I decide to allow media streaming on my PC, in which case, I have to install at least some proprietary software to allow for its protection and copyright enforcement.</p>

<p>Ultimately, I made the decision that any weak willed individual would make and I eventually caved in and enabled the Widevine CDM. It was a choice, a painful choice, but a choice I needed to make.</p>

<p>Some might argue that it was the wrong choice and, to be honest, I wouldn&#39;t necessarily even disagree with them. Compromising on one&#39;s own ideals because of convenience is never an easy pill to swallow, but I did.</p>

<p>Still, it is because of this decision that I still get to watch Crunchyroll streams to this day, and maintain my anime blog as well.</p>

<p>So I guess at least some things worked out, for better or for worse.</p>

<p>Still, I can&#39;t help but wish for a better world: a world that maybe copyright holders decide to be more trusting of their consumer base and would allow them to watch their media without having to devolve to such barbaric and convoluted processes just to prevent piracy.</p>

<p>Because, as many people have shown in the past, DRM is nothing more than additional hoops that are added to discourage piracy. It does not guarantee that piracy will never happen.</p>

<p>And time and time again it&#39;s been shown that pirates, for better or for worse, will get their hands on said protected media one way or another, through various means, and the end result is always the same: DRM just acts as a minor impediment in the grand process of breaking the protection schemes.</p>

<p>The people that always end up suffering the most when DRM is added to products are the lawful consumers.</p>

<p>Blog post by Alexandru Pentilescu.</p>

<p>You may contact me at alexandru.pentilescu@disroot.org</p>

<p>Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2</p>

<p>Download that key from any keyserver you wish</p>
]]></content:encoded>
      <guid>https://blog.transistor.one/tech/why-i-used-to-love-drm-free-streaming</guid>
      <pubDate>Mon, 25 Mar 2024 22:17:23 +0000</pubDate>
    </item>
    <item>
      <title>A brief history of DRM protection</title>
      <link>https://blog.transistor.one/tech/a-brief-history-of-drm-protection</link>
      <description>&lt;![CDATA[An icon of a lock&#xA;&#xA;Time to talk about DRM again.&#xA;&#xA;Naturally, most people don&#39;t care much about this topic, and I&#39;m sorry if another blog post talking about DRM might seem very boring and too technical for you, but I really need to get this off my chest.&#xA;&#xA;With that said, I&#39;ll try to keep this as simple and easy to understand for non-technical people as I can.&#xA;&#xA;So, let&#39;s get started!&#xA;&#xA;!--more--&#xA;&#xA;A bit of background on DRM&#xA;&#xA;So, what is DRM anyways? DRM stands for Digital Rights Management and is an umbrella term used to refer to any technological means of enforcing copyright over digital information of any kind. Examples of digital information that are usually DRM protected are music, books, video games and, of course, video files.&#xA;&#xA;Since copy-pasting a file in a computer is as simple as doing a Control + C, Control + V on it and, just like that, you have an exact copy of it without having had to pay any amount of money for a second copy of it, DRM was invented to stop the user from being able to do just that, for the sake of enforcing copyright restrictions.&#xA;&#xA;There are many schemes that have been invented (and reinvented) over the years to do just that, one of the most popular known ones being Apple&#39;s FairPlay technology, that is implemented on macOS and iOS. This tech was used historically for protecting music that was distributed over the iTunes store (and still is), but was also extended for protecting ebooks too, as well as video and other media.&#xA;&#xA;Microsoft also tried their hand at this and came up with the PlayReady technology, a similar proprietary tech that is used primarily for encrypting copyrighted video that gets streamed to devices running the Windows family of operating systems (especially on Microsoft&#39;s own brand of web browsers, particularly Microsoft Edge).&#xA;&#xA;These pieces of technology are needed in the modern day world simply because, if they did not exist, it would be trivial for anyone to steal digital information passing through their computer. Simple tools like Wireshark (which are free, by the way), would allow anyone with a Netflix subscription to capture the network packets coming from Netflix servers and reconstruct the video file that would represent any TV show or movie that you wanted to get a hold of.&#xA;&#xA;Once this reconstruction process would be complete, you, as a simple Netflix customer, would have in your possession a digital copy of the episode or movie in question and would then be able to share it illegally with anyone of your choice.&#xA;&#xA;It is for this reason that Netflix and other video-on-demand platforms have been employing the aforementioned technologies to protect their digital content and bar computer users from misusing their privileges to enable software piracy.&#xA;&#xA;Why is this a problem?&#xA;&#xA;Now, on paper, DRM sounds quite fine and dandy and, for all intents and purposes, it can be seen even as a necessity in a modern digital age.&#xA;&#xA;After all, how could you, as a movie studio or a musician, ever feel comfortable to distribute your own work digitally to your customers if there was no protection in place to prevent them from illegally copying your work and then distributing it freely to others against your will?&#xA;&#xA;After all, piracy means loss of money to you, doesn&#39;t it?&#xA;&#xA;Well, here&#39;s where we get into murky territory.&#xA;&#xA;While it&#39;s easy to think in black and white terms like that when you&#39;re the owner of your own work, it gets complicated when you have to really think about how to prevent people from copying over information when that information has to go through untrusted computers.&#xA;&#xA;Because, at the end of the day, anything that can be shown on a computer, whether it&#39;s a book, music or video, has to come down to being a long series of bits. Because, deep down, that&#39;s the only thing that computers can work with: digital data.&#xA;&#xA;And, also, that data, in order to be useful to a customer that pays you money, has to go through his own hardware: his CPU, his GPU and, eventually, reach his display or his speakers. A song can only be useful to someone if it plays on his speakers, a video can only be useful if it gets played on his monitor etc.&#xA;&#xA;So, regardless of how you spin it, this protected data, somehow, has to travel through the medium of the internet and eventually reach hardware that is a customer&#39;s, a customer that may or may not have malicious intentions of illegally copying it for his own needs.&#xA;&#xA;The inherent problem that I&#39;m trying to highlight here is that, in the end, the data has to reach untrusted territory, and be processed by untrusted hardware.&#xA;&#xA;How can this be resolved when any piece of hardware can be tampered with, physically? How can one guarantee the safety of a piece of data if it has to pass through a CPU that can be made to run an untrustworthy operating system on it?&#xA;&#xA;Well, there is no easy answer to that question. Theoretically, the answer is it&#39;s impossible but, then, that would be quite problematic.&#xA;&#xA;That answer would cause a lot of issues, least of which is the fact that video on demand, as a business model, would be effectively impossible to implement if that were the colloquial answer to this dilemma.&#xA;&#xA;Oh, you want to make a business out of streaming copyrighted content to computers all over the world that have an internet connection? Well, TOO BAD. It&#39;s technically impossible to protect said data from being illegally copied by malicious technically savvy actors and so, well, you can&#39;t make a business out of that. Sorry.&#xA;&#xA;Imagine if that was the case! Netflix, as a business, wouldn&#39;t exist. And TV shows and movies would remain only in the world of TV and Blu-ray/DVD releases. That would be a very sad thing indeed.&#xA;&#xA;But wait a second! I just mentioned Blu-ray and DVD, didn&#39;t I? Home media, as a concept, has been a very lucrative industry for many years and, even that, in theory, relies on giving customers access to copyrighted digital data and letting them view that at their leisure.&#xA;&#xA;Blu-ray, by definition, allows a customer that had purchased the Blu-ray disc of a particular movie or TV show, to watch said movie or TV show on their own TV, which is technically untrusted (since any piece of hardware can be tampered with).&#xA;&#xA;So, if Blu-ray could do it, why can&#39;t video-on-demand platforms?&#xA;&#xA;The breakthrough (sort of)&#xA;&#xA;Multiple things had to happen at the same time to make Blu-ray, as a piece of technology, become possible.&#xA;&#xA;For one, digital transmission of video streams had to be locked down entirely.&#xA;&#xA;Ever used an HDMI cable? Or a DisplayPort? That&#39;s digital video transmission and everything going through those cables has to be encrypted.&#xA;&#xA;The exact name for this encryption technique is known as HDCP, which stands for High-bandwidth Digital Content Protection and it was invented back in 2000 by none other than the Intel Corporation (initially for DVI and later expanded to include other kinds of physical links as well).&#xA;&#xA;Nowadays HDCP is used behind the scenes by pretty much every piece of hardware in existence.&#xA;&#xA;Any type of graphics card will, at the very end of the processing pipeline, encrypt the video stream before it sends it out on the physical cable so that, no matter what that cable is connected to, it will only receive encrypted data (and when I say graphics card, I also mean integrated graphics as well).&#xA;&#xA;But how can a TV or computer monitor read a video stream that&#39;s encrypted?&#xA;&#xA;Well, before the encryption even begins, there&#39;s a special kind of key exchange that happens, and that kind of exchange is only possible if the TV or monitor in question has its own kind of key burned into its own hardware that is, inherently, trusted. The exact type of exchange is complicated and is designed in such a way as to not leak trusted key material to untrusted parties. I won&#39;t go into detail of how this is done but, if you&#39;re up to the task, you can read up on the details here.&#xA;&#xA;In addition to this, the trusted keys that have to be burned into monitors or TVs had to be buried into microchips that are difficult to extract data from.&#xA;&#xA;Physically this is not impossible but it requires specialized equipment and knowledge to reverse engineer these keys.&#xA;&#xA;This is to say, to circumvent the problem of How can you protect copyrighted information that has to go through untrustworthy hardware, the solution engineers came up with was Simple! Just design all hardware in existence that has to handle such information to be trustworthy.&#xA;&#xA;This is to say, make an authentication scheme that cannot be spoofed very easily to ensure that sensitive information doesn&#39;t get sent out to tampered hardware, bury sensitive cryptographic materials that such schemes rely on in microchips that are very difficult to tamper with and, finally, whenever data has to exit such trusted hardware and has to travel through physical links whose integrity cannot be guaranteed, encrypt that information before it has to travel through said links so that only trusted hardware can decrypt it back to a readable form.&#xA;&#xA;So, how did Microsoft and Apple implement a solution for video-on-demand providers? They designed their FairPlay and PlayReady protection schemes to make use of these hardware technologies by enhancing their respective operating systems with the capability of creating secure write-only pipes that have special anti-tamper protections built into the very kernels. Such pipes would have sensitive copyright protected information travel through them, which, in practice, just means that this information gets encrypted as it gets passed around from one memory area to another (much like how a VPN encrypts your network traffic as it travels from one point to the next) and only the hardware parts that need raw access to that information has the means of decrypting it. Everything else would just see encrypted gibberish.&#xA;&#xA;To make this possible, TPMs had to become widespread (as they are designed to be trusted by default and also handle sensitive information), drivers for graphics cards had to be enhanced by video card manufacturers to support these protection schemes, and much more.&#xA;&#xA;Ultimately, the end result of all of this was a very complex system with many many moving parts, where many giant tech companies had to agree to multiple standards and had to come together in their engineering efforts (among of which were Microsoft, Apple, Intel, nVidia, AMD, Google; pretty much all the big names that you can think of) and, in the end, it resulted in a highly advanced protection scheme whose sole purpose was to enforce copyright over digital data.&#xA;&#xA;And, after all these efforts, we had a technological means of guaranteeing to video-on-demand providers that their data could be safely handed over to secure machines running secure operating systems, that would run secure hardware handled by secure signed proprietary drivers.&#xA;&#xA;But wait! What about Linux?&#xA;&#xA;Oh right, of course things couldn&#39;t be that easy! Open source just had to make things complicated again!&#xA;&#xA;You see, dear reader, in this world of security through proprietary secret technologies and encryption schemes implemented through locked-down TPMs or proprietary drivers that nobody can inspect the source code for, there exist those people that want to run only free software, open source software; there exist operating systems whose very kernel can be modified by whoever has the technical knowledge to do so and can be changed to do whatever they so desire. And doing that requires no reverse engineering or hardware tampering whatsoever.&#xA;&#xA;In such a world, you may wonder, how can such data be protected, if the operating system can be modified by anyone in any way?&#xA;&#xA;It would be one thing if the web browser ran directly on the video card and web developers could interface against a secret API from Javascript to access the proprietary underlying drivers to encrypt media, but that&#39;s not how anything works.&#xA;&#xA;The web browser runs from the context of an operating system. The operating system runs on a CPU. In order for data coming from a Netflix server to be protected against illegal copying, it has to be passed over from the web browser process to the video drivers (since we&#39;re talking specifically about video content now) through system calls, and then the video drivers have to take it and encrypt it and then pass it on to the monitor link.&#xA;&#xA;It is at this point where the data has to be passed over from the web browser process to the video card drivers where it is vulnerable to being copied.&#xA;&#xA;If the kernel is truly open source and a hacker can manipulate its source code to make a modified malicious version that can steal any data that gets passed over during this time and extract the unencrypted bits, then it&#39;s all over.&#xA;&#xA;What&#39;s even worse is the fact that there are versions of graphics drivers that are also open source, made by third parties unrelated to nVidia or AMD or Intel, who cannot be controlled by them and who publish the source code for their work as well. These drivers can very well be rewritten by anyone skilled enough to copy the data when it is still unencrypted and dump it into a file.&#xA;&#xA;These issues are very pressing and, honestly, this is where we get into the grey area that nobody likes to talk about.&#xA;&#xA;In a world where nobody cares, the solution that most engineering companies would come up with would be &#34;just ignore Linux users&#34; and that would be it. &#34;Since we cannot ensure a secure pipeline for copyrighted data from the web browser to the physical wire that goes to the monitor, we cannot trust the operating system at all. As such, let&#39;s not support it&#34; and that would be the end of the discussion.&#xA;&#xA;What this would mean would be that Linux users would be left in the dust, and Netflix, Amazon Prime Video, HBO max and all these other platforms would simply refuse to service them, as none of them would be willing to hand over their copyrighted video data to such untrustworthy platforms.&#xA;&#xA;Thankfully, this is not the case.&#xA;&#xA;Widevine to the rescue&#xA;&#xA;And here we come to the end of our story. The hero that saved Linux and made video-on-demand streaming possible to it was none other than a company that wanted to provide a means of securing data from the context of a web browser.&#xA;&#xA;Widevine Technologies have been making a name for themselves in the area of protecting digital content from 1999 onwards, being among the most famous companies that enforce content protection on various platforms.&#xA;&#xA;In 2010, the company was acquired by Google, who was very well aware of the necessity of acquiring their tech.&#xA;&#xA;The problem with the aforementioned PlayReady and FairPlay technologies is that they were proprietary and relied on special support from the underlying operating system to work.&#xA;&#xA;PlayReady would only work on Windows and FairPlay would only be accessible from the context of Apple&#39;s own ecosystem of operating systems.&#xA;&#xA;This posed a problem to Google, since they wanted to make a cross-platform web browser that would the same across all operating systems (namely Google Chrome).&#xA;&#xA;To make Chrome work correctly, it would, in theory, be possible to maintain different code bases for each separate operating system, but that would be an unnecessary amount of extra effort to invest into a means of protecting digital data.&#xA;&#xA;Instead, Google sought to obtain a universal solution, a one-size-that-fits-all glove that would be agnostic to the operating system that it ran on and, would additionally work well on Google&#39;s own operating systems, namely the Linux-based Android and ChromeOS environments which lacked the aforementioned protection schemes.&#xA;&#xA;As such, Google realized that it only made sense to acquire Widevine Technologies as a response to this necessity, and integrate their solutions into Google Chrome and Android ecosystems, which lacked them.&#xA;&#xA;&#34;But how can an open source web browser like Chromium ever be able to encrypt data in such a way that&#39;s impossible to be bypassed by hackers who can just change the source code? And how can they protect such data from a potentially hostile tampered operating system?&#34; you may ask.&#xA;&#xA;Well, the answer is a fair bit complicated, but, to put it simply, Google had to do a lot of patchwork to get there. But, it&#39;s Google. At the end of the day, they had more than enough money and engineers to throw at the problem.&#xA;&#xA;The way they did it for the Chromium project was to simply not make their solution available there, at all. &#xA;&#xA;If you use a pure version of the Chromium web browser to watch Netflix, you&#39;ll quickly find out that it simply doesn&#39;t work. That&#39;s because Google could not reliably implement such a solution into an open source project, lest it invite the open source dilemma that we already talked about.&#xA;&#xA;Instead, they implemented it only for Google Chrome as a proprietary plugin-in dynamic library who does all the heavy work duty of both encrypting and decrypting the media streams in a closed proprietary environment that&#39;s very difficult to reverse engineer.&#xA;&#xA;This is known as the Widevine CDM, and is only a small part of the whole Widevine infrastructure that&#39;s behind the content protection that&#39;s needed.&#xA;&#xA;As this CDM is just a dynamic library file on the local file system, in theory, it is possible for a malicious party to simply disassemble it and extract its inner functioning, analyze it, and figure out how it does things (and this has happened before; I&#39;ve even read up on a now archived Github page how one user attempted to do just that).&#xA;&#xA;At one point in the past, the way this CDM did things was by using RSA encryption to decrypt video content that was being sent over the wire to it.&#xA;&#xA;Basically, the CDM had its own public-private RSA keypair burned into the library, with the private key very cleverly hidden in some .data section in the library file. Whenever a protected content stream was to be initiated, the Chrome browser would load the proprietary plug-in, the plug-in would send an exact copy of its public key in clear text to the Widevine server that was on the other end of the internet connection, the server would check against its database of trusted RSA keys to see if it was trusted and, if it still was trusted at that point in time, would start encrypting the protected data stream using that public key and send the encrypted data to the browser over the internet. The CDM would then use its associated private key to decrypt the stream back to its original form and then display everything from the context of the web browser as a video feed.&#xA;&#xA;Simple, easy and very elegant.&#xA;&#xA;That was how it was done at one point. Since then, especially after this information got released from the guy that reverse engineered it, I imagine Google engineers updated the method to something else now.&#xA;&#xA;The point is, there exist many different ways to do it, and, as hackers reverse engineer the Widevine library to keep finding out how it works, Google has the resources to find new ways of protecting the content, in a constant cat-and-mouse game of trying to evolve a solution to protect digital video feeds.&#xA;&#xA;&#34;But wouldn&#39;t a tampered host operating system defeat this? One could just inspect the RAM memory of the Widevine CDM and access the raw decrypted data directly, if they were skilled enough&#34;.&#xA;&#xA;Yes, yes they could. For this reason Widevine has such a thing as protection levels. Because, unlike Windows or macOS, the Linux operating system that runs in the background cannot have its integrity guaranteed in any way, if Google Chrome detects that it&#39;s running on such an environment, it considers this to be in an L3 (i.e. protection level 3) context. This is the least secure context and it is, for this reason, considered the highest risk one.&#xA;&#xA;Within an L3 context, all operations are done in an unprotected memory area by the Widevine CDM, and this is considered low security. For this reason, most video-on-demand platforms only hand over low quality streams to such an environment, content that, even if it were illegally copied and then distributed via piracy, would only lead to marginal financial damages. I forgot exactly what type of restrictions this has, but for Netflix, if I recall correctly, I think they send out only a maximum of 540p quality streams to such environments (either that or 480p or 720p, I can&#39;t remember which). Such low quality streams are considered low-risk enough that even if they were sent over to insecure channels, the amount of damage they would do would be limited.&#xA;&#xA;The next level up would be L2 protection, in which video decoding and encoding is done in an unprotected environment but cryptographic operations are done securely. This is where Google Chrome running from the context of ChromeOS would be (sometimes, ChromeOS might even support L1 protection even). Technically ChromeOS is also Linux, but it&#39;s treated in a special way, because the operating system is heavily modified by Google to be locked down intensely against tampering, and its own source code is not published online (there is the open source ChromiumOS project that ChromeOS is based off of, but it&#39;s only an approximation of the real thing, as ChromeOS modifies it using proprietary means very heavily, much in the same way that the Chromium project is only an open source approximation of Google Chrome).&#xA;&#xA;Inside the L2 context, most video-on-demand platforms would allow for content streaming up to 1080p, as it&#39;s very unlikely for memory inspection tools to be available in such environments for hackers to tamper around with.&#xA;&#xA;Finally, there is the L1 context, that&#39;s only available on modern hardware that use TPMs and hardware-protected video decoding to ensure the availability of a secure pipeline to send copyright protected information through. This is a 1:1 equivalent to the aforementioned PlayReady and FairPlay solutions, where data protection is guaranteed on every step of the way through the pipeline, from the browser until the data gets displayed on the monitor/TV.&#xA;&#xA;This level of protection can only be guaranteed only on the latest versions of Intel and AMD CPUs (that have TPMs incorporated in them), you have up to date device drivers that ensure that the hardware can handle protected data and the host operating system is guaranteed to not have been tampered with in any way (usually by integrity checks and ensuring that the boot loader of the device is locked, if possible).&#xA;&#xA;From the context of Widevine, this is usually only possible on the latest Chromebooks and on Android devices (smartphones, tablets or smart TVs) that have never had their bootloaders unlocked (and always on iOS and iPadOS devices as well).&#xA;&#xA;In such environments, the security guaranteed is so high that there are no more limits with regards to the quality of the content being shown. This is considered the maximum level of security that Widevine can afford, equivalent to the PlayReady and FairPlay schemes.&#xA;&#xA;And so, thanks to Widevine, Linux as a whole now supports protected video playback (albeit L3 level but still).&#xA;&#xA;Blog post by Alexandru Pentilescu.&#xD;&#xA;&#xD;&#xA;You may contact me at alexandru.pentilescu@disroot.org&#xD;&#xA;&#xD;&#xA;Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2&#xD;&#xA;&#xD;&#xA;Download that key from any keyserver you wish]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://transistor.one/bin/My%20blog%20screenshots/Others/lock2.png" alt="An icon of a lock"></p>

<p>Time to talk about DRM again.</p>

<p>Naturally, most people don&#39;t care much about this topic, and I&#39;m sorry if another blog post talking about DRM might seem very boring and too technical for you, but I really need to get this off my chest.</p>

<p>With that said, I&#39;ll try to keep this as simple and easy to understand for non-technical people as I can.</p>

<p>So, let&#39;s get started!</p>



<h2 id="a-bit-of-background-on-drm">A bit of background on DRM</h2>

<p>So, what is DRM anyways? DRM stands for <em>Digital Rights Management</em> and is an umbrella term used to refer to any technological means of enforcing copyright over digital information of any kind. Examples of digital information that are usually DRM protected are music, books, video games and, of course, video files.</p>

<p>Since copy-pasting a file in a computer is as simple as doing a <em>Control + C, Control + V</em> on it and, just like that, you have an exact copy of it without having had to pay any amount of money for a second copy of it, DRM was invented to stop the user from being able to do just that, for the sake of enforcing copyright restrictions.</p>

<p>There are many schemes that have been invented (and reinvented) over the years to do just that, one of the most popular known ones being Apple&#39;s <em>FairPlay</em> technology, that is implemented on macOS and iOS. This tech was used historically for protecting music that was distributed over the iTunes store (and still is), but was also extended for protecting ebooks too, as well as video and other media.</p>

<p>Microsoft also tried their hand at this and came up with the <em>PlayReady</em> technology, a similar proprietary tech that is used primarily for encrypting copyrighted video that gets streamed to devices running the Windows family of operating systems (especially on Microsoft&#39;s own brand of web browsers, particularly Microsoft Edge).</p>

<p>These pieces of technology are needed in the modern day world simply because, if they did not exist, it would be trivial for anyone to steal digital information passing through their computer. Simple tools like Wireshark (which are free, by the way), would allow anyone with a Netflix subscription to capture the network packets coming from Netflix servers and reconstruct the video file that would represent any TV show or movie that you wanted to get a hold of.</p>

<p>Once this reconstruction process would be complete, you, as a simple Netflix customer, would have in your possession a digital copy of the episode or movie in question and would then be able to share it illegally with anyone of your choice.</p>

<p>It is for this reason that Netflix and other video-on-demand platforms have been employing the aforementioned technologies to protect their digital content and bar computer users from misusing their privileges to enable software piracy.</p>

<h2 id="why-is-this-a-problem">Why is this a problem?</h2>

<p>Now, on paper, DRM sounds quite fine and dandy and, for all intents and purposes, it can be seen even as a necessity in a modern digital age.</p>

<p>After all, how could you, as a movie studio or a musician, ever feel comfortable to distribute your own work digitally to your customers if there was no protection in place to prevent them from illegally copying your work and then distributing it freely to others against your will?</p>

<p>After all, piracy means loss of money to you, doesn&#39;t it?</p>

<p>Well, here&#39;s where we get into murky territory.</p>

<p>While it&#39;s easy to think in black and white terms like that when you&#39;re the owner of your own work, it gets complicated when you have to really think about how to prevent people from copying over information when that information has to go through untrusted computers.</p>

<p>Because, at the end of the day, anything that can be shown on a computer, whether it&#39;s a book, music or video, has to come down to being a long series of bits. Because, deep down, that&#39;s the only thing that computers can work with: digital data.</p>

<p>And, also, that data, in order to be useful to a customer that pays you money, has to go through his own hardware: his CPU, his GPU and, eventually, reach his display or his speakers. A song can only be useful to someone if it plays on his speakers, a video can only be useful if it gets played on his monitor etc.</p>

<p>So, regardless of how you spin it, this protected data, somehow, has to travel through the medium of the internet and eventually reach hardware that is a customer&#39;s, a customer that may or may not have malicious intentions of illegally copying it for his own needs.</p>

<p>The inherent problem that I&#39;m trying to highlight here is that, in the end, the data has to reach untrusted territory, and be processed by untrusted hardware.</p>

<p>How can this be resolved when any piece of hardware can be tampered with, physically? How can one guarantee the safety of a piece of data if it has to pass through a CPU that can be made to run an untrustworthy operating system on it?</p>

<p>Well, there is no easy answer to that question. Theoretically, the answer is <em>it&#39;s impossible</em> but, then, that would be quite problematic.</p>

<p>That answer would cause a lot of issues, least of which is the fact that video on demand, as a business model, would be effectively impossible to implement if that were the colloquial answer to this dilemma.</p>

<p>Oh, you want to make a business out of streaming copyrighted content to computers all over the world that have an internet connection? Well, <em>TOO BAD</em>. It&#39;s technically impossible to protect said data from being illegally copied by malicious technically savvy actors and so, well, you can&#39;t make a business out of that. Sorry.</p>

<p>Imagine if that was the case! Netflix, as a business, wouldn&#39;t exist. And TV shows and movies would remain only in the world of TV and Blu-ray/DVD releases. That would be a very sad thing indeed.</p>

<p>But wait a second! I just mentioned Blu-ray and DVD, didn&#39;t I? Home media, as a concept, has been a very lucrative industry for many years and, even that, in theory, relies on giving customers access to copyrighted digital data and letting them view that at their leisure.</p>

<p>Blu-ray, by definition, allows a customer that had purchased the Blu-ray disc of a particular movie or TV show, to watch said movie or TV show on their own TV, which is technically untrusted (since any piece of hardware can be tampered with).</p>

<p>So, if Blu-ray could do it, why can&#39;t video-on-demand platforms?</p>

<h2 id="the-breakthrough-sort-of">The breakthrough (sort of)</h2>

<p>Multiple things had to happen at the same time to make Blu-ray, as a piece of technology, become possible.</p>

<p>For one, digital transmission of video streams had to be locked down entirely.</p>

<p>Ever used an HDMI cable? Or a DisplayPort? That&#39;s digital video transmission and everything going through those cables has to be encrypted.</p>

<p>The exact name for this encryption technique is known as HDCP, which stands for <em>High-bandwidth Digital Content Protection</em> and it was invented back in 2000 by none other than the Intel Corporation (initially for DVI and later expanded to include other kinds of physical links as well).</p>

<p>Nowadays HDCP is used behind the scenes by pretty much every piece of hardware in existence.</p>

<p>Any type of graphics card will, at the very end of the processing pipeline, encrypt the video stream before it sends it out on the physical cable so that, no matter what that cable is connected to, it will only receive encrypted data (and when I say <em>graphics card</em>, I also mean <em>integrated graphics</em> as well).</p>

<p>But how can a TV or computer monitor read a video stream that&#39;s encrypted?</p>

<p>Well, before the encryption even begins, there&#39;s a special kind of key exchange that happens, and that kind of exchange is only possible if the TV or monitor in question has its own kind of key burned into its own hardware that is, inherently, trusted. The exact type of exchange is complicated and is designed in such a way as to not leak trusted key material to untrusted parties. I won&#39;t go into detail of how this is done but, if you&#39;re up to the task, you can read up on the details <a href="https://en.wikipedia.org/wiki/Blom%27s_scheme" rel="nofollow">here</a>.</p>

<p>In addition to this, the trusted keys that have to be burned into monitors or TVs had to be buried into microchips that are difficult to extract data from.</p>

<p>Physically this is not impossible but it requires specialized equipment and knowledge to reverse engineer these keys.</p>

<p>This is to say, to circumvent the problem of <em>How can you protect copyrighted information that has to go through untrustworthy hardware</em>, the solution engineers came up with was <em>Simple! Just design all hardware in existence that has to handle such information to be trustworthy</em>.</p>

<p>This is to say, make an authentication scheme that cannot be spoofed very easily to ensure that sensitive information doesn&#39;t get sent out to tampered hardware, bury sensitive cryptographic materials that such schemes rely on in microchips that are very difficult to tamper with and, finally, whenever data has to exit such trusted hardware and has to travel through physical links whose integrity cannot be guaranteed, encrypt that information before it has to travel through said links so that only trusted hardware can decrypt it back to a readable form.</p>

<p>So, how did Microsoft and Apple implement a solution for video-on-demand providers? They designed their <em>FairPlay</em> and <em>PlayReady</em> protection schemes to make use of these hardware technologies by enhancing their respective operating systems with the capability of creating secure write-only pipes that have special anti-tamper protections built into the very kernels. Such pipes would have sensitive copyright protected information travel through them, which, in practice, just means that this information gets encrypted as it gets passed around from one memory area to another (much like how a VPN encrypts your network traffic as it travels from one point to the next) and only the hardware parts that need raw access to that information has the means of decrypting it. Everything else would just see encrypted gibberish.</p>

<p>To make this possible, TPMs had to become widespread (as they are designed to be trusted by default and also handle sensitive information), drivers for graphics cards had to be enhanced by video card manufacturers to support these protection schemes, and much more.</p>

<p>Ultimately, the end result of all of this was a very complex system with many many moving parts, where many giant tech companies had to agree to multiple standards and had to come together in their engineering efforts (among of which were Microsoft, Apple, Intel, nVidia, AMD, Google; pretty much all the big names that you can think of) and, in the end, it resulted in a highly advanced protection scheme whose sole purpose was to enforce copyright over digital data.</p>

<p>And, after all these efforts, we had a technological means of guaranteeing to video-on-demand providers that their data could be safely handed over to secure machines running secure operating systems, that would run secure hardware handled by secure signed proprietary drivers.</p>

<h2 id="but-wait-what-about-linux">But wait! What about Linux?</h2>

<p>Oh right, of course things couldn&#39;t be that easy! Open source just had to make things complicated again!</p>

<p>You see, dear reader, in this world of security through proprietary secret technologies and encryption schemes implemented through locked-down TPMs or proprietary drivers that nobody can inspect the source code for, there exist those people that want to run only free software, open source software; there exist operating systems whose very kernel can be modified by whoever has the technical knowledge to do so and can be changed to do whatever they so desire. And doing that requires no reverse engineering or hardware tampering whatsoever.</p>

<p>In such a world, you may wonder, how can such data be protected, if the operating system can be modified by anyone in any way?</p>

<p>It would be one thing if the web browser ran directly on the video card and web developers could interface against a secret API from Javascript to access the proprietary underlying drivers to encrypt media, but that&#39;s not how anything works.</p>

<p>The web browser runs from the context of an operating system. The operating system runs on a CPU. In order for data coming from a Netflix server to be protected against illegal copying, it has to be passed over from the web browser process to the video drivers (since we&#39;re talking specifically about video content now) through system calls, and then the video drivers have to take it and encrypt it and then pass it on to the monitor link.</p>

<p>It is at this point where the data has to be passed over from the web browser process to the video card drivers where it is vulnerable to being copied.</p>

<p>If the kernel is truly open source and a hacker can manipulate its source code to make a modified malicious version that can steal any data that gets passed over during this time and extract the unencrypted bits, then it&#39;s all over.</p>

<p>What&#39;s even worse is the fact that there are versions of graphics drivers that are also open source, made by third parties unrelated to nVidia or AMD or Intel, who cannot be controlled by them and who publish the source code for their work as well. These drivers can very well be rewritten by anyone skilled enough to copy the data when it is still unencrypted and dump it into a file.</p>

<p>These issues are very pressing and, honestly, this is where we get into the grey area that nobody likes to talk about.</p>

<p>In a world where nobody cares, the solution that most engineering companies would come up with would be “just ignore Linux users” and that would be it. “Since we cannot ensure a secure pipeline for copyrighted data from the web browser to the physical wire that goes to the monitor, we cannot trust the operating system at all. As such, let&#39;s not support it” and that would be the end of the discussion.</p>

<p>What this would mean would be that Linux users would be left in the dust, and Netflix, Amazon Prime Video, HBO max and all these other platforms would simply refuse to service them, as none of them would be willing to hand over their copyrighted video data to such untrustworthy platforms.</p>

<p>Thankfully, this is not the case.</p>

<h2 id="widevine-to-the-rescue">Widevine to the rescue</h2>

<p>And here we come to the end of our story. The hero that saved Linux and made video-on-demand streaming possible to it was none other than a company that wanted to provide a means of securing data from the context of a web browser.</p>

<p>Widevine Technologies have been making a name for themselves in the area of protecting digital content from 1999 onwards, being among the most famous companies that enforce content protection on various platforms.</p>

<p>In 2010, the company was acquired by Google, who was very well aware of the necessity of acquiring their tech.</p>

<p>The problem with the aforementioned PlayReady and FairPlay technologies is that they were proprietary and relied on special support from the underlying operating system to work.</p>

<p>PlayReady would only work on Windows and FairPlay would only be accessible from the context of Apple&#39;s own ecosystem of operating systems.</p>

<p>This posed a problem to Google, since they wanted to make a cross-platform web browser that would the same across all operating systems (namely Google Chrome).</p>

<p>To make Chrome work correctly, it would, in theory, be possible to maintain different code bases for each separate operating system, but that would be an unnecessary amount of extra effort to invest into a means of protecting digital data.</p>

<p>Instead, Google sought to obtain a universal solution, a one-size-that-fits-all glove that would be agnostic to the operating system that it ran on and, would additionally work well on Google&#39;s own operating systems, namely the Linux-based Android and ChromeOS environments which lacked the aforementioned protection schemes.</p>

<p>As such, Google realized that it only made sense to acquire Widevine Technologies as a response to this necessity, and integrate their solutions into Google Chrome and Android ecosystems, which lacked them.</p>

<p>“But how can an open source web browser like Chromium ever be able to encrypt data in such a way that&#39;s impossible to be bypassed by hackers who can just change the source code? And how can they protect such data from a potentially hostile tampered operating system?” you may ask.</p>

<p>Well, the answer is a fair bit complicated, but, to put it simply, Google had to do a lot of patchwork to get there. But, it&#39;s Google. At the end of the day, they had more than enough money and engineers to throw at the problem.</p>

<p>The way they did it for the Chromium project was to simply not make their solution available there, at all.</p>

<p>If you use a pure version of the Chromium web browser to watch Netflix, you&#39;ll quickly find out that it simply doesn&#39;t work. That&#39;s because Google could not reliably implement such a solution into an open source project, lest it invite the open source dilemma that we already talked about.</p>

<p>Instead, they implemented it only for Google Chrome as a proprietary plugin-in dynamic library who does all the heavy work duty of both encrypting and decrypting the media streams in a closed proprietary environment that&#39;s very difficult to reverse engineer.</p>

<p>This is known as the Widevine CDM, and is only a small part of the whole Widevine infrastructure that&#39;s behind the content protection that&#39;s needed.</p>

<p>As this CDM is just a dynamic library file on the local file system, in theory, it is possible for a malicious party to simply disassemble it and extract its inner functioning, analyze it, and figure out how it does things (and this has happened before; I&#39;ve even read up on a now archived Github page how one user attempted to do just that).</p>

<p>At one point in the past, the way this CDM did things was by using RSA encryption to decrypt video content that was being sent over the wire to it.</p>

<p>Basically, the CDM had its own public-private RSA keypair burned into the library, with the private key very cleverly hidden in some .data section in the library file. Whenever a protected content stream was to be initiated, the Chrome browser would load the proprietary plug-in, the plug-in would send an exact copy of its public key in clear text to the Widevine server that was on the other end of the internet connection, the server would check against its database of trusted RSA keys to see if it was trusted and, if it still was trusted at that point in time, would start encrypting the protected data stream using that public key and send the encrypted data to the browser over the internet. The CDM would then use its associated private key to decrypt the stream back to its original form and then display everything from the context of the web browser as a video feed.</p>

<p>Simple, easy and very elegant.</p>

<p>That was how it was done at one point. Since then, especially after this information got released from the guy that reverse engineered it, I imagine Google engineers updated the method to something else now.</p>

<p>The point is, there exist many different ways to do it, and, as hackers reverse engineer the Widevine library to keep finding out how it works, Google has the resources to find new ways of protecting the content, in a constant cat-and-mouse game of trying to evolve a solution to protect digital video feeds.</p>

<p>“But wouldn&#39;t a tampered host operating system defeat this? One could just inspect the RAM memory of the Widevine CDM and access the raw decrypted data directly, if they were skilled enough”.</p>

<p>Yes, yes they could. For this reason Widevine has such a thing as protection levels. Because, unlike Windows or macOS, the Linux operating system that runs in the background cannot have its integrity guaranteed in any way, if Google Chrome detects that it&#39;s running on such an environment, it considers this to be in an L3 (i.e. protection level 3) context. This is the least secure context and it is, for this reason, considered the highest risk one.</p>

<p>Within an L3 context, all operations are done in an unprotected memory area by the Widevine CDM, and this is considered low security. For this reason, most video-on-demand platforms only hand over low quality streams to such an environment, content that, even if it were illegally copied and then distributed via piracy, would only lead to marginal financial damages. I forgot exactly what type of restrictions this has, but for Netflix, if I recall correctly, I think they send out only a maximum of 540p quality streams to such environments (either that or 480p or 720p, I can&#39;t remember which). Such low quality streams are considered low-risk enough that even if they were sent over to insecure channels, the amount of damage they would do would be limited.</p>

<p>The next level up would be L2 protection, in which video decoding and encoding is done in an unprotected environment but cryptographic operations are done securely. This is where Google Chrome running from the context of ChromeOS would be (sometimes, ChromeOS might even support L1 protection even). Technically ChromeOS is also Linux, but it&#39;s treated in a special way, because the operating system is heavily modified by Google to be locked down intensely against tampering, and its own source code is not published online (there is the open source ChromiumOS project that ChromeOS is based off of, but it&#39;s only an approximation of the real thing, as ChromeOS modifies it using proprietary means very heavily, much in the same way that the Chromium project is only an open source approximation of Google Chrome).</p>

<p>Inside the L2 context, most video-on-demand platforms would allow for content streaming up to 1080p, as it&#39;s very unlikely for memory inspection tools to be available in such environments for hackers to tamper around with.</p>

<p>Finally, there is the L1 context, that&#39;s only available on modern hardware that use TPMs and hardware-protected video decoding to ensure the availability of a secure pipeline to send copyright protected information through. This is a 1:1 equivalent to the aforementioned PlayReady and FairPlay solutions, where data protection is guaranteed on every step of the way through the pipeline, from the browser until the data gets displayed on the monitor/TV.</p>

<p>This level of protection can only be guaranteed only on the latest versions of Intel and AMD CPUs (that have TPMs incorporated in them), you have up to date device drivers that ensure that the hardware can handle protected data and the host operating system is guaranteed to not have been tampered with in any way (usually by integrity checks and ensuring that the boot loader of the device is locked, if possible).</p>

<p>From the context of Widevine, this is usually only possible on the latest Chromebooks and on Android devices (smartphones, tablets or smart TVs) that have never had their bootloaders unlocked (and always on iOS and iPadOS devices as well).</p>

<p>In such environments, the security guaranteed is so high that there are no more limits with regards to the quality of the content being shown. This is considered the maximum level of security that Widevine can afford, equivalent to the PlayReady and FairPlay schemes.</p>

<p>And so, thanks to Widevine, Linux as a whole now supports protected video playback (albeit L3 level but still).</p>

<p>Blog post by Alexandru Pentilescu.</p>

<p>You may contact me at alexandru.pentilescu@disroot.org</p>

<p>Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2</p>

<p>Download that key from any keyserver you wish</p>
]]></content:encoded>
      <guid>https://blog.transistor.one/tech/a-brief-history-of-drm-protection</guid>
      <pubDate>Sun, 17 Mar 2024 14:35:18 +0000</pubDate>
    </item>
    <item>
      <title>The fall of the Tox peer-to-peer protocol</title>
      <link>https://blog.transistor.one/tech/the-fall-of-the-tox-peer-to-peer-protocol</link>
      <description>&lt;![CDATA[Screenshot of a qTox window&#xA;&#xA;A blog post talking about the history of the privacy-focused Tox protocol.&#xA;&#xA;!--more--&#xA;&#xA;Background&#xA;After the 2013 Snowden US government leaks, it&#39;s no secret that many people, including those from the general public, have become quite uncomfortable about the topic of government surveillance.&#xA;&#xA;Up until then, there was always an air of acceptance among everyone that the government was spying on them and that, most likely, all digital communications were being harvested by it somehow, but nobody gave the thought too much thinking.&#xA;&#xA;Well, Snowden changed this and, in the wake of publications of classified materials that showed just how much the US government was eavesdropping on everyone, including domestically on US citizens, it became clear that the idea of being spied upon suddenly lost all its humor in the public&#39;s eyes.&#xA;&#xA;Programs such as PRISM became part of the public consciousness and technologies that many had taken for granted, such as Skype, became the target of much distrust all of a sudden.&#xA;&#xA;People were suddenly concerned about their online privacy, and felt betrayed by the revelations.&#xA;&#xA;And so, as a consequence, in June 2013, the first commit was published on github by a user named irungentoo, a commit for a repository named toxcore.&#xA;&#xA;And so was the Tox protocol born.&#xA;&#xA;Design goals&#xA;The protocol, in its infancy, strived to achieve some very straight forward goals:&#xA;&#xA;It was supposed to be entirely a peer-to-peer protocol, meaning that unlike many other instant messaging protocols devised up until that point (such as Whatsapp, Signal, Telegram etc.), the tox protocol will not rely on any central service at all, outside of the barebones bootstrap nodes which would be used to get the ball rolling&#xA;&#xA;It would be an end-to-end encrypted messaging system, meaning that the only players involved in the conversation would be the ones that would have the means of decrypting it&#xA;&#xA;Once a contact&#39;s friend request is accepted, the two clients would immediately connect directly to each other, without relying on any relays or intermediaries whatsoever (except if any of the contacts decides to use Tor to mask their IPs for additional privacy)&#xA;&#xA;The Snowden leaks revealed that the main reason digital communication was prone to being eavesdropped on was that the most famous and common instant messaging communication programs relied on servers to relay the messages between the participants. This means that the NSA only needed to go to the server operators to convince them to handle these messages to them, either voluntarily or via use of legal coercion.&#xA;&#xA;So the Tox protocol solved this dilemma by simply getting rid of servers altogether. You can&#39;t easily spy on everyone if people are directly connecting to each other to talk, without central intermediaries.&#xA;&#xA;A good analogy is the advent of telephone companies. It&#39;s easy for the government to spy on phone conversations because, ultimately, there are only a handful of phone companies in any country, so they just need to compromise all of them and then they can access the phone conversations of millions of people. This is possible because all these millions of people rely on just a handful of companies for all their communication.&#xA;&#xA;The less companies there are to compromise, the easier it is for the government to breach the service.&#xA;&#xA;Drawbacks&#xA;The idea, was a good one. There were some caveats though.&#xA;&#xA;Who came first? The chicken or the egg?&#xA;The main issue that hampered Tox&#39;s growth was the fact that Tox, by design, was very privacy focused.&#xA;&#xA;Yes, in theory, you could use your real name as your tox profile account&#39;s name, you could post your email and phone number in your tox details as well for all your contacts to see.&#xA;&#xA;But, in practice, most people used an anonymous username that was very difficult for others to guess. Moreover, the protocol didn&#39;t even mandate for the registration of an email address or a phone number. Basically, the protocol allowed for full anonymity at all times.&#xA;&#xA;This was by design like this.&#xA;&#xA;The issue with this was that there was no easy way to find your friends even if they also used tox.&#xA;&#xA;There was no directory where you could search people by name, email address, phone number or even tox username at all.&#xA;&#xA;Instead, if you wanted to talk with someone over tox, you first had to share your Tox ID with them, which is this long 76 character long hexadecimal string, that they would then use to find you over the internet and send you a friend invite.&#xA;&#xA;Once you accepted the invite, your tox client would connect directly with theirs over the internet, negotiate a secret encryption key with them and then use this to encrypt all your communications with each other.&#xA;&#xA;The key would only exist on your device and theirs, never leaked to any third party at all.&#xA;&#xA;Needless to say, this was a cumbersome process, and it made finding new people a complete and utter hassle. Not only this, but it opened the door for a chicken and an egg dilemma, because if you needed to securely talk with someone, you first had to give them your tox ID (or they had to give you theirs) over a secure private channel before you even started talking over tox.&#xA;&#xA;But in order to do that, you needed to have a private trusted communication channel between the two of you already to send the tox ID through, so what even was the point of tox if you already had that?&#xA;&#xA;Offline messages? What&#39;s that?&#xA;Another, glaring shortcoming that the tox protocol suffered from, due to its server-less architecture, was the lack of offline messaging functionality.&#xA;&#xA;Skype, Teams, Signal and all these other instant messaging platforms have servers that are, inherently, trusted by all the clients by design.&#xA;&#xA;Servers might not seem like that much of a huge deal, but it allows for useful features like offline messaging to happen without having to overly engineer a very complicated solution.&#xA;&#xA;Basically, if Bob wants to send Alice a message over Skype, for example, but Alice is offline at the time, Bob can send the message, the message gets recorded and timestamped by Skype servers which are, by design, always online, and then Bob can do other things in the meantime, even go offline as well, knowing that the message has been sent.&#xA;&#xA;Now, even if Bob may have gone offline in the meantime, Alice may come online, connect to a Skype server and, as soon as the server sees her coming online, it remembers that Bob had tried to send her a message when she was offline, and sends the message to her now.&#xA;&#xA;Bob doesn&#39;t need to be online for any of this. The Skype server did the job for him behind the scenes. This is what&#39;s known as offline messaging.&#xA;&#xA;Tox doesn&#39;t have servers, though, so none of this is possible.&#xA;&#xA;I&#39;m sure, technically, this can be done in a peer-to-peer application too, if you put enough thought into designing a clever solution.&#xA;&#xA;As long as there are other peers for you to connect to, you can engineer a solution in which they store the message themselves, instead of relying on a server, and relay it somehow to Alice when she gets online, but then you have to design a propagation protocol so that the message is kept alive while peers come online and go offline randomly, make sure that a malicious peer doesn&#39;t just flood the network with bogus offline messages meant to DoS all other peers and other such nonsense.&#xA;&#xA;The point is, designing a solution that doesn&#39;t rely on servers is not easy and tox just decided to take the easiest approach out: just avoid supporting offline messages entirely.&#xA;&#xA;What this means is that in Tox, if you wish to send any of your contacts a message, both you and the contact in question have to be online!&#xA;&#xA;Sure, tox can hide this fact by queuing the message locally on your computer, waiting for your contact to come online to send it to him but, if you decide to shut down your computer during this time while they&#39;re still offline, they won&#39;t be getting your message while your computer is shut down, even if they will come online in the meantime.&#xA;&#xA;Basically, all your offline messages to your contact will ever be sent to them only during the brief period when both you and them are online at the same time.&#xA;&#xA;This makes people who live on opposite sides of the planet, and who have huge time zone differences between them, very difficult to communicate with each other over tox, as one is usually offline sleeping while the other is online, and vice versa.&#xA;&#xA;Worse, if you have an urgent message you really need someone over tox to read, your only recourse is to keep your computer online and not sleeping at all times, until they get online, for the message to be delivered.&#xA;&#xA;This is not only a huge waste of power but, many times, it&#39;s impractical. Basically, in order to mitigate the lack of servers, communicating parties have to turn their clients into servers themselves.&#xA;&#xA;And, not only this, but because Tox is a trustless protocol by design and peers are designed not to trust each other, even if they are directly communicating with one another, a message that is being received by Alice at a later time than it was when being sent by Bob (i.e. an offline message), gets timestamped by Alice&#39;s tox client as the time of it being received by Alice, not the time it had been sent by Bob to Alice.&#xA;&#xA;Or, in simpler words, if Bob sent Alice a message, but Alice was offline on Tox for an entire week afterwards so she couldn&#39;t receive it, when Alice does finally come online on Tox and receives Bob&#39;s message, the message is recorded in Alice&#39;s client as having been sent at the time Alice came online, not a week prior when it had actually been sent by Bob.&#xA;&#xA;This is because, Bob could have hacked his own Tox client to lie to Alice about when he had sent the message, in which case his client could claim that the message had been sent a month prior, or even a year prior. Without a trusted third party server to corroborate the sending event, Alice&#39;s client has no way of knowing if what Bob&#39;s client says is true, nor can Bob&#39;s client even prove that he had sent the offline message at the time he claims he has and not earlier or later.&#xA;&#xA;As such, in Tox, the offline messages you receive from a contact are timestamped on your end as the time you actually receive them, not at the time your contact claims to have sent them to you.&#xA;&#xA;This is the issue with software that&#39;s inherently distrustful by design. You always end up lacking features that software with trusted servers have.&#xA;&#xA;Have more than one computer? Sucks to be you!&#xA;&#xA;Oh, this one&#39;s a doozy.&#xA;&#xA;You know how, on Skype or Microsoft Teams, you just have to login to your account and then you can send messages from literally any internet-connected computer at your disposal?&#xA;&#xA;Like, let&#39;s say you send a message to your boss on at work, close your computer to go on lunch break, and then, while you&#39;re gone and eating, you decide to see if your boss answered by just logging into Teams via your phone and check.&#xA;&#xA;You can do this because your Teams account is stored somewhere in a database and, regardless of where you connect to Teams servers from, whether it&#39;s your work Desktop machine, your Android phone or your grandma&#39;s laptop, the servers are always the same and the database that they use to store information about you is also always the same. Only the Teams clients are different.&#xA;&#xA;Well, Tox only has clients. It has no servers, no databases, no anything.&#xA;&#xA;Basically, if you want to share your Tox conversations across machines, you&#39;re pretty much out of luck.&#xA;&#xA;OK, in theory, there&#39;s nothing in the Tox protocol that prevents a Tox client from somehow implementing a solution to synchronize conversations across multiple computers using peer-to-peer technology. Maybe someone, someday, will actually implement this and I&#39;ll take my words back.&#xA;&#xA;But, in practice, I&#39;ve personally never seen this done.&#xA;&#xA;Only once did I move my qTox profile from a Linux laptop to my Windows desktop by copying the profile folder on a thumb drive and, thankfully, everything went smoothly and without any bugs whatsoever. That way, I&#39;ve effectively moved my encrypted Tox conversations across machines.&#xA;&#xA;However, it&#39;s worth noting that, at least back at the time, this wasn&#39;t officially supported by qTox, meaning that it could have very well not worked. Or, even if it did work, a future update could make it not work anymore.&#xA;&#xA;Basically, if you want to use Tox on multiple computers, the official fully supported way of doing it, is to just generate a new Tox profile on each and every one of them. And that means you&#39;ll have to re-add all your contacts across all of them, every one of your contacts will have to accept a separate friend request for each computer you use tox on, your friends will have you listed multiple times in their contacts list, once for each of your computers and, even with all of this, none of your chats will be synchronized across your devices, meaning that different computers will have entirely separate conversation histories.&#xA;&#xA;This.IS.A.NIGHTMARE.&#xA;&#xA;If you ever wonder why the Tox protocol was never successful, it&#39;s not because it was buggy or it lacked advanced features; it&#39;s because, by design, it couldn&#39;t implement some of the most basic features that most people expect by default from any instant messaging app.&#xA;&#xA;Its greatest strength, the fact that it had no servers or central database, was also its downfall: no servers means no simple way of inter-device data syncing, offline messaging or central user directories to add friends from.&#xA;&#xA;This is why Tox failed&#xA;&#xA;Lack of support for niche Linux distros for certain Tox clients&#xA;This is more of a niche thing, as most software doesn&#39;t support Linux anyways, but the user base that most Tox clients pandered to, was the privacy oriented, corporation hating, free software loving Linux community.&#xA;&#xA;Sure, there were Tox clients that were geared only towards Windows too, but those were very rare.&#xA;&#xA;So you&#39;d think, given their primary user base, that many client developers would go out of their way to ensure good support for most distros. Well, you&#39;d be wrong in thinking that.&#xA;&#xA;Or at least, I was wrong about this with a tox client named qTox.&#xA;&#xA;qTox was one of the more popular clients out there, and it was my client of choice because it had the widest operating system support of all clients.&#xA;&#xA;So, naturally, that was my first choice for a client.&#xA;&#xA;I also have to point out that I&#39;m a Fedora linux user. I use Fedora Workstation as my daily driver on my personal laptop, and I love this OS, with all its flaws and shortcomings.&#xA;&#xA;One day, I upgraded to Fedora 36, as that was the latest release at the time and then, as usual, I went ahead and enabled RPM fusion repositories on my system.&#xA;&#xA;Then, from RPM fusion, I installed qTox on my system.&#xA;&#xA;Well, wouldn&#39;t you know it, I was getting an error upon trying to start the program.&#xA;&#xA;The error? A library called libvpx.so.6 was missing on my system. Of course, I didn&#39;t get this error message while trying to start qTox normally from my launcher, I had to try to start qTox from the terminal, just so that I would get a printout on why it was failing to start in the first place on the console.&#xA;&#xA;Well, wouldn&#39;t you know it, apparently Fedora 36 upgraded its system libraries and instead of coming preinstalled with libvpx.so.6, as qTox seemed to be expecting, it came with libvpx.so.7 instead, which was entirely different.&#xA;&#xA;I mean, I know RPM Fusion was a third party repository and that people shouldn&#39;t expect much quality control from stuff in it but, isn&#39;t the entire point of a package manager that it was supposed to solve dependency issues like this?&#xA;&#xA;And yes, I tried creating a symbolic link named libvpx.so.6 to libvpx.so.7, expecting it to work out of the box, but it wouldn&#39;t. The program would still crash immediately upon start-up with an even uglier error message.&#xA;&#xA;The point is, while Fedora is indeed a bit niche, it&#39;s still one of the most popular Linux distros on the planet. You&#39;d think the development team for qTox would try to pre-emptively fix issues like these before people would make the upgrade.&#xA;&#xA;And, for the record, I didn&#39;t do the upgrade the exact day Fedora 36 came out. I usually wait a couple of weeks before I upgrade, so they had more than enough time to sort this out. The fact is, they didn&#39;t care.&#xA;&#xA;Granted, qTox is just one Tox client. Their development team doesn&#39;t develop c-toxcore or any of the many other Tox clients on the planet, so they are just one party at fault here.&#xA;&#xA;And, despite this issue, qTox also offered an AppImage that worked out of the box so I could continue to use qTox even after this.&#xA;&#xA;But still, it&#39;s disheartening when you realize that this is the type of bugs you encounter quite often when trying to use Tox.&#xA;&#xA;The titan has fallen&#xA;With all of these shortcomings, and without obvious technical solutions in sight, the Tox protocol has seen an excruciatingly slow but painful death.&#xA;&#xA;It bled users year after year, as more and more privacy focused individuals sought to use other software suites that promised privacy but which also offered the benefits of centralized services, like Signal.&#xA;&#xA;Don&#39;t get me wrong, I despise Signal as much as the next person, and the fact that I still have to have a phone number in order to use the service is extremely infuriating. But, at the end of the day, Signal is easier to use than Tox. And that fact is simply indisputable.&#xA;&#xA;Couple that with the fact that Signal also is open source, much like most tox clients are, and you really have no reason to prefer Tox over Signal.&#xA;&#xA;As time went on, developers, for one reason or another, started abandoning their tox projects, one after the other.&#xA;&#xA;People simply didn&#39;t seem to care about peer-to-peer protocols anymore and, as the Snowden leaks were slowly fading out of the general population&#39;s consciousness, so too did the volunteers working on the myriad of tox clients all around the world.&#xA;&#xA;And, after many years, the most popular tox client out there, qTox, had its official repository on github frozen, with the developers leaving behind a message that they&#39;re planning on abandoning the project.&#xA;&#xA;Keep in mind, there are still many tox clients out there, and the main project, c-toxcore, the one that actually implements most of the functionality offered by Tox, is still maintained to this day.&#xA;&#xA;But c-toxcore is just a platform-agnostic library that implements the Tox protocol itself. A library is worthless if you don&#39;t have front-end clients to expose its functionality.&#xA;&#xA;That&#39;s what all the tox clients are supposed to do. Now, qTox is abandoned, so that&#39;s out of the question.&#xA;&#xA;If you go to the Tox protocol&#39;s wikipedia page, you&#39;ll see a table with the most popular tox clients out there, as well as a column in that table mentioning whether they&#39;re still supported or not.&#xA;&#xA;And, at least as of right now, most clients reported on that page are said to have been abandoned.&#xA;&#xA;The most popular Tox client still being maintained right now is one named Toxic, a C client implementation relying on the Ncurses library. Issue with this one is that it&#39;s reliant on Unix functionality, meaning that it doesn&#39;t work out of the box on Windows.&#xA;&#xA;Sure, technically savvy people can go out of their ways to make it work on Windows, either by compiling the source code using Cygwin or maybe using the Linux subsystem for Windows that&#39;s available under Windows 11 but, at the end of the day, most normal people won&#39;t go through this stuff when there&#39;s Skype, Microsoft Teams, Slack and many other alternatives available at their fingertips.&#xA;&#xA;qTox was the last Tox client that still supported Windows out of the box and now that it&#39;s also abandoned, a large portion of desktop users will don&#39;t have the option anymore to use Tox, sadly.&#xA;&#xA;Sure, this is a huge loss for Windows users, but it&#39;s an even larger loss for Tox, as now, a lot of people won&#39;t even consider using the protocol anymore, since they won&#39;t be able to use it to communicate with friends and family that do use Windows.&#xA;&#xA;The protocol itself is maintained by the previously mentioned c-toxcore github project, which only maintains the library that does all the heavy work behind the scenes and which is used by Tox clients.&#xA;&#xA;The library&#39;s latest stable version, 0.2.17, as of the posting of this blog post, was published more than a year ago at this point (13 months, to be exact).&#xA;&#xA;The developers never said that it was being abandoned too, but, personally, if a piece of software doesn&#39;t get any updates for more than a year, I really start to wonder if it&#39;s still being maintained.&#xA;&#xA;Technically there&#39;s also another Tox client that supports Windows called yat, but as of the writing of this blog post, I tried installing it myself and all installation links lead me to a website called www.lovecry.pt that seems to be down.&#xA;&#xA;I also tried to reach that website a week ago and I didn&#39;t have any success back then either.&#xA;&#xA;So yeah, I&#39;m not getting my hopes up anymore.&#xA;&#xA;At this point, I&#39;m convinced the Tox protocol is either destined to die sooner or later, as nobody cares about mass surveillance anymore to go through the hoops that is using Tox, or, best case scenario, it becomes a protocol mainly used by third party clients that work only on Unix operating systems and used by a very niche community of privacy focused nerds.&#xA;&#xA;For the past decade that I&#39;ve been using it, I&#39;ve never heard anyone mention Tox in day to day conversations, as an alternative to Skype or Discord, and now I&#39;m more than sure I never will.&#xA;&#xA;And with the advent and promotion of the federated communication protocol Matrix, there&#39;s even less of an incentive for people to seek out Tox nowadays.&#xA;&#xA;In the end, one really has to wonder: how long does it take for a project to die?&#xA;&#xA;This blog is federated. If you wish to follow this tech blog, please use the following Fediverse handle: @tech@blog.transistor.one&#xA;&#xA;Blog post by Alexandru Pentilescu.&#xD;&#xA;&#xD;&#xA;You may contact me at alexandru.pentilescu@disroot.org&#xD;&#xA;&#xD;&#xA;Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2&#xD;&#xA;&#xD;&#xA;Download that key from any keyserver you wish]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://transistor.one/bin/My%20blog%20screenshots/Others/qtox.png" alt="Screenshot of a qTox window"></p>

<p>A blog post talking about the history of the privacy-focused Tox protocol.</p>



<h2 id="background">Background</h2>

<p>After the 2013 Snowden US government leaks, it&#39;s no secret that many people, including those from the general public, have become quite uncomfortable about the topic of government surveillance.</p>

<p>Up until then, there was always an air of acceptance among everyone that the government was spying on them and that, most likely, all digital communications were being harvested by it somehow, but nobody gave the thought too much thinking.</p>

<p>Well, Snowden changed this and, in the wake of publications of classified materials that showed just how much the US government was eavesdropping on everyone, including domestically on US citizens, it became clear that the idea of being spied upon suddenly lost all its humor in the public&#39;s eyes.</p>

<p>Programs such as <em>PRISM</em> became part of the public consciousness and technologies that many had taken for granted, such as Skype, became the target of much distrust all of a sudden.</p>

<p>People were suddenly concerned about their online privacy, and felt betrayed by the revelations.</p>

<p>And so, as a consequence, in June 2013, the first commit was published on github by a user named <em>irungentoo</em>, a commit for a repository named <em>toxcore</em>.</p>

<p>And so was the Tox protocol born.</p>

<h2 id="design-goals">Design goals</h2>

<p>The protocol, in its infancy, strived to achieve some very straight forward goals:</p>
<ol><li><p>It was supposed to be entirely a peer-to-peer protocol, meaning that unlike many other instant messaging protocols devised up until that point (such as Whatsapp, Signal, Telegram etc.), the tox protocol will not rely on any central service at all, outside of the barebones bootstrap nodes which would be used to get the ball rolling</p></li>

<li><p>It would be an end-to-end encrypted messaging system, meaning that the only players involved in the conversation would be the ones that would have the means of decrypting it</p></li>

<li><p>Once a contact&#39;s friend request is accepted, the two clients would immediately connect directly to each other, without relying on any relays or intermediaries whatsoever (except if any of the contacts decides to use Tor to mask their IPs for additional privacy)</p></li></ol>

<p>The Snowden leaks revealed that the main reason digital communication was prone to being eavesdropped on was that the most famous and common instant messaging communication programs relied on servers to relay the messages between the participants. This means that the NSA only needed to go to the server operators to convince them to handle these messages to them, either voluntarily or via use of legal coercion.</p>

<p>So the Tox protocol solved this dilemma by simply getting rid of servers altogether. You can&#39;t easily spy on everyone if people are directly connecting to each other to talk, without central intermediaries.</p>

<p>A good analogy is the advent of telephone companies. It&#39;s easy for the government to spy on phone conversations because, ultimately, there are only a handful of phone companies in any country, so they just need to compromise all of them and then they can access the phone conversations of millions of people. This is possible because all these millions of people rely on just a handful of companies for all their communication.</p>

<p>The less companies there are to compromise, the easier it is for the government to breach the service.</p>

<h2 id="drawbacks">Drawbacks</h2>

<p>The idea, was a good one. There were some caveats though.</p>

<h3 id="who-came-first-the-chicken-or-the-egg">Who came first? The chicken or the egg?</h3>

<p>The main issue that hampered Tox&#39;s growth was the fact that Tox, by design, was very privacy focused.</p>

<p>Yes, in theory, you could use your real name as your tox profile account&#39;s name, you could post your email and phone number in your tox details as well for all your contacts to see.</p>

<p>But, in practice, most people used an anonymous username that was very difficult for others to guess. Moreover, the protocol didn&#39;t even mandate for the registration of an email address or a phone number. Basically, the protocol allowed for full anonymity at all times.</p>

<p>This was by design like this.</p>

<p>The issue with this was that there was no easy way to find your friends even if they also used tox.</p>

<p>There was no directory where you could search people by name, email address, phone number or even tox username at all.</p>

<p>Instead, if you wanted to talk with someone over tox, you first had to share your Tox ID with them, which is this long 76 character long hexadecimal string, that they would then use to find you over the internet and send you a friend invite.</p>

<p>Once you accepted the invite, your tox client would connect directly with theirs over the internet, negotiate a secret encryption key with them and then use this to encrypt all your communications with each other.</p>

<p>The key would only exist on your device and theirs, never leaked to any third party at all.</p>

<p>Needless to say, this was a cumbersome process, and it made finding new people a complete and utter hassle. Not only this, but it opened the door for a chicken and an egg dilemma, because if you needed to securely talk with someone, you first had to give them your tox ID (or they had to give you theirs) over a secure private channel before you even started talking over tox.</p>

<p>But in order to do that, you needed to have a private trusted communication channel between the two of you already to send the tox ID through, so what even was the point of tox if you already had that?</p>

<h3 id="offline-messages-what-s-that">Offline messages? What&#39;s that?</h3>

<p>Another, glaring shortcoming that the tox protocol suffered from, due to its server-less architecture, was the lack of offline messaging functionality.</p>

<p>Skype, Teams, Signal and all these other instant messaging platforms have servers that are, inherently, trusted by all the clients by design.</p>

<p>Servers might not seem like that much of a huge deal, but it allows for useful features like offline messaging to happen without having to overly engineer a very complicated solution.</p>

<p>Basically, if Bob wants to send Alice a message over Skype, for example, but Alice is offline at the time, Bob can send the message, the message gets recorded and timestamped by Skype servers which are, by design, always online, and then Bob can do other things in the meantime, even go offline as well, knowing that the message has been sent.</p>

<p>Now, even if Bob may have gone offline in the meantime, Alice may come online, connect to a Skype server and, as soon as the server sees her coming online, it remembers that Bob had tried to send her a message when she was offline, and sends the message to her now.</p>

<p>Bob doesn&#39;t need to be online for any of this. The Skype server did the job for him behind the scenes. This is what&#39;s known as offline messaging.</p>

<p>Tox doesn&#39;t have servers, though, so none of this is possible.</p>

<p>I&#39;m sure, technically, this can be done in a peer-to-peer application too, if you put enough thought into designing a clever solution.</p>

<p>As long as there are other peers for you to connect to, you can engineer a solution in which they store the message themselves, instead of relying on a server, and relay it somehow to Alice when she gets online, but then you have to design a propagation protocol so that the message is kept alive while peers come online and go offline randomly, make sure that a malicious peer doesn&#39;t just flood the network with bogus offline messages meant to DoS all other peers and other such nonsense.</p>

<p>The point is, designing a solution that doesn&#39;t rely on servers is not easy and tox just decided to take the easiest approach out: just avoid supporting offline messages entirely.</p>

<p>What this means is that in Tox, if you wish to send any of your contacts a message, both you and the contact in question have to be online!</p>

<p>Sure, tox can hide this fact by queuing the message locally on your computer, waiting for your contact to come online to send it to him but, if you decide to shut down your computer during this time while they&#39;re still offline, they won&#39;t be getting your message while your computer is shut down, even if they will come online in the meantime.</p>

<p>Basically, all your offline messages to your contact will ever be sent to them only during the brief period when both you and them are online at the same time.</p>

<p>This makes people who live on opposite sides of the planet, and who have huge time zone differences between them, very difficult to communicate with each other over tox, as one is usually offline sleeping while the other is online, and vice versa.</p>

<p>Worse, if you have an urgent message you really need someone over tox to read, your only recourse is to keep your computer online and not sleeping at all times, until they get online, for the message to be delivered.</p>

<p>This is not only a huge waste of power but, many times, it&#39;s impractical. Basically, in order to mitigate the lack of servers, communicating parties have to turn their clients <strong>into</strong> servers themselves.</p>

<p>And, not only this, but because Tox is a trustless protocol by design and peers are designed not to trust each other, even if they are directly communicating with one another, a message that is being received by Alice at a later time than it was when being sent by Bob (i.e. an offline message), gets timestamped by Alice&#39;s tox client as the time of it being received by Alice, not the time it had been sent by Bob to Alice.</p>

<p>Or, in simpler words, if Bob sent Alice a message, but Alice was offline on Tox for an entire week afterwards so she couldn&#39;t receive it, when Alice does finally come online on Tox and receives Bob&#39;s message, the message is recorded in Alice&#39;s client as having been sent at the time Alice came online, not a week prior when it had actually been sent by Bob.</p>

<p>This is because, Bob could have hacked his own Tox client to lie to Alice about when he had sent the message, in which case his client could claim that the message had been sent a month prior, or even a year prior. Without a trusted third party server to corroborate the sending event, Alice&#39;s client has no way of knowing if what Bob&#39;s client says is true, nor can Bob&#39;s client even prove that he had sent the offline message at the time he claims he has and not earlier or later.</p>

<p>As such, in Tox, the offline messages you receive from a contact are timestamped on your end as the time you actually receive them, not at the time your contact claims to have sent them to you.</p>

<p>This is the issue with software that&#39;s inherently distrustful by design. You always end up lacking features that software with trusted servers have.</p>

<h3 id="have-more-than-one-computer-sucks-to-be-you">Have more than one computer? Sucks to be you!</h3>

<p>Oh, this one&#39;s a doozy.</p>

<p>You know how, on Skype or Microsoft Teams, you just have to login to your account and then you can send messages from literally any internet-connected computer at your disposal?</p>

<p>Like, let&#39;s say you send a message to your boss on at work, close your computer to go on lunch break, and then, while you&#39;re gone and eating, you decide to see if your boss answered by just logging into Teams via your phone and check.</p>

<p>You can do this because your Teams account is stored somewhere in a database and, regardless of where you connect to Teams servers from, whether it&#39;s your work Desktop machine, your Android phone or your grandma&#39;s laptop, the servers are always the same and the database that they use to store information about you is also always the same. Only the Teams clients are different.</p>

<p>Well, Tox only has clients. It has no servers, no databases, no anything.</p>

<p>Basically, if you want to share your Tox conversations across machines, you&#39;re pretty much out of luck.</p>

<p>OK, <em>in theory</em>, there&#39;s nothing in the Tox protocol that prevents a Tox client from somehow implementing a solution to synchronize conversations across multiple computers using peer-to-peer technology. Maybe someone, someday, will actually implement this and I&#39;ll take my words back.</p>

<p>But, in practice, I&#39;ve personally never seen this done.</p>

<p>Only once did I move my qTox profile from a Linux laptop to my Windows desktop by copying the profile folder on a thumb drive and, thankfully, everything went smoothly and without any bugs whatsoever. That way, I&#39;ve effectively moved my encrypted Tox conversations across machines.</p>

<p>However, it&#39;s worth noting that, at least back at the time, this wasn&#39;t officially supported by qTox, meaning that it could have very well not worked. Or, even if it did work, a future update could make it not work anymore.</p>

<p>Basically, if you want to use Tox on multiple computers, the official fully supported way of doing it, is to just generate a new Tox profile on each and every one of them. And that means you&#39;ll have to re-add all your contacts across all of them, every one of your contacts will have to accept a separate friend request for each computer you use tox on, your friends will have you listed multiple times in their contacts list, once for each of your computers and, even with all of this, none of your chats will be synchronized across your devices, meaning that different computers will have entirely separate conversation histories.</p>

<p>This.IS.A.NIGHTMARE.</p>

<p>If you ever wonder why the Tox protocol was never successful, it&#39;s not because it was buggy or it lacked advanced features; it&#39;s because, by design, it couldn&#39;t implement some of the most basic features that most people expect by default from any instant messaging app.</p>

<p>Its greatest strength, the fact that it had no servers or central database, was also its downfall: no servers means no simple way of inter-device data syncing, offline messaging or central user directories to add friends from.</p>

<p>This is why Tox failed</p>

<h3 id="lack-of-support-for-niche-linux-distros-for-certain-tox-clients">Lack of support for niche Linux distros for certain Tox clients</h3>

<p>This is more of a niche thing, as most software doesn&#39;t support Linux anyways, but the user base that most Tox clients pandered to, was the privacy oriented, corporation hating, free software loving Linux community.</p>

<p>Sure, there were Tox clients that were geared only towards Windows too, but those were very rare.</p>

<p>So you&#39;d think, given their primary user base, that many client developers would go out of their way to ensure good support for most distros. Well, you&#39;d be wrong in thinking that.</p>

<p>Or at least, I was wrong about this with a tox client named qTox.</p>

<p>qTox was one of the more popular clients out there, and it was my client of choice because it had the widest operating system support of all clients.</p>

<p>So, naturally, that was my first choice for a client.</p>

<p>I also have to point out that I&#39;m a Fedora linux user. I use Fedora Workstation as my daily driver on my personal laptop, and I love this OS, with all its flaws and shortcomings.</p>

<p>One day, I upgraded to Fedora 36, as that was the latest release at the time and then, as usual, I went ahead and enabled RPM fusion repositories on my system.</p>

<p>Then, from RPM fusion, I installed qTox on my system.</p>

<p>Well, wouldn&#39;t you know it, I was getting an error upon trying to start the program.</p>

<p>The error? A library called <em>libvpx.so.6</em> was missing on my system. Of course, I didn&#39;t get this error message while trying to start qTox normally from my launcher, I had to try to start qTox from the terminal, just so that I would get a printout on why it was failing to start in the first place on the console.</p>

<p>Well, wouldn&#39;t you know it, apparently Fedora 36 upgraded its system libraries and instead of coming preinstalled with <em>libvpx.so.6</em>, as qTox seemed to be expecting, it came with <em>libvpx.so.7</em> instead, which was entirely different.</p>

<p>I mean, I know RPM Fusion was a third party repository and that people shouldn&#39;t expect much quality control from stuff in it but, isn&#39;t the entire point of a package manager that it was supposed to solve dependency issues like this?</p>

<p>And yes, I tried creating a symbolic link named <em>libvpx.so.6</em> to <em>libvpx.so.7</em>, expecting it to work out of the box, but it wouldn&#39;t. The program would still crash immediately upon start-up with an even uglier error message.</p>

<p>The point is, while Fedora is indeed a bit niche, it&#39;s still one of the most popular Linux distros on the planet. You&#39;d think the development team for qTox would try to pre-emptively fix issues like these before people would make the upgrade.</p>

<p>And, for the record, I didn&#39;t do the upgrade the exact day Fedora 36 came out. I usually wait a couple of weeks before I upgrade, so they had more than enough time to sort this out. The fact is, they didn&#39;t care.</p>

<p>Granted, qTox is just one Tox client. Their development team doesn&#39;t develop <em>c-toxcore</em> or any of the many other Tox clients on the planet, so they are just one party at fault here.</p>

<p>And, despite this issue, qTox also offered an AppImage that worked out of the box so I could continue to use qTox even after this.</p>

<p>But still, it&#39;s disheartening when you realize that this is the type of bugs you encounter quite often when trying to use Tox.</p>

<h2 id="the-titan-has-fallen">The titan has fallen</h2>

<p>With all of these shortcomings, and without obvious technical solutions in sight, the Tox protocol has seen an excruciatingly slow but painful death.</p>

<p>It bled users year after year, as more and more privacy focused individuals sought to use other software suites that promised privacy but which also offered the benefits of centralized services, like Signal.</p>

<p>Don&#39;t get me wrong, I despise Signal as much as the next person, and the fact that I still have to have a phone number in order to use the service is extremely infuriating. But, at the end of the day, Signal is easier to use than Tox. And that fact is simply indisputable.</p>

<p>Couple that with the fact that Signal also is open source, much like most tox clients are, and you really have no reason to prefer Tox over Signal.</p>

<p>As time went on, developers, for one reason or another, started abandoning their tox projects, one after the other.</p>

<p>People simply didn&#39;t seem to care about peer-to-peer protocols anymore and, as the Snowden leaks were slowly fading out of the general population&#39;s consciousness, so too did the volunteers working on the myriad of tox clients all around the world.</p>

<p>And, after many years, the most popular tox client out there, qTox, had its official repository on github frozen, with the developers leaving behind a message that they&#39;re planning on abandoning the project.</p>

<p>Keep in mind, there are still many tox clients out there, and the main project, <em>c-toxcore</em>, the one that actually implements most of the functionality offered by Tox, is still maintained to this day.</p>

<p>But <em>c-toxcore</em> is just a platform-agnostic library that implements the Tox protocol itself. A library is worthless if you don&#39;t have front-end clients to expose its functionality.</p>

<p>That&#39;s what all the tox clients are supposed to do. Now, qTox is abandoned, so that&#39;s out of the question.</p>

<p>If you go to the Tox protocol&#39;s wikipedia page, you&#39;ll see a table with the most popular tox clients out there, as well as a column in that table mentioning whether they&#39;re still supported or not.</p>

<p>And, at least as of right now, most clients reported on that page are said to have been abandoned.</p>

<p>The most popular Tox client still being maintained right now is one named <em>Toxic</em>, a C client implementation relying on the Ncurses library. Issue with this one is that it&#39;s reliant on Unix functionality, meaning that it doesn&#39;t work out of the box on Windows.</p>

<p>Sure, technically savvy people can go out of their ways to make it work on Windows, either by compiling the source code using Cygwin or maybe using the Linux subsystem for Windows that&#39;s available under Windows 11 but, at the end of the day, most normal people won&#39;t go through this stuff when there&#39;s Skype, Microsoft Teams, Slack and many other alternatives available at their fingertips.</p>

<p>qTox was the last Tox client that still supported Windows out of the box and now that it&#39;s also abandoned, a large portion of desktop users will don&#39;t have the option anymore to use Tox, sadly.</p>

<p>Sure, this is a huge loss for Windows users, but it&#39;s an even larger loss for Tox, as now, a lot of people won&#39;t even consider using the protocol anymore, since they won&#39;t be able to use it to communicate with friends and family that do use Windows.</p>

<p>The protocol itself is maintained by the previously mentioned <em>c-toxcore</em> github project, which only maintains the library that does all the heavy work behind the scenes and which is used by Tox clients.</p>

<p>The library&#39;s latest stable version, 0.2.17, as of the posting of this blog post, was published more than a year ago at this point (13 months, to be exact).</p>

<p>The developers never said that it was being abandoned too, but, personally, if a piece of software doesn&#39;t get any updates for more than a year, I really start to wonder if it&#39;s still being maintained.</p>

<p>Technically there&#39;s also another Tox client that supports Windows called <em>yat</em>, but as of the writing of this blog post, I tried installing it myself and all installation links lead me to a website called <em>www.lovecry.pt</em> that seems to be down.</p>

<p>I also tried to reach that website a week ago and I didn&#39;t have any success back then either.</p>

<p>So yeah, I&#39;m not getting my hopes up anymore.</p>

<p>At this point, I&#39;m convinced the Tox protocol is either destined to die sooner or later, as nobody cares about mass surveillance anymore to go through the hoops that is using Tox, or, best case scenario, it becomes a protocol mainly used by third party clients that work only on Unix operating systems and used by a very niche community of privacy focused nerds.</p>

<p>For the past decade that I&#39;ve been using it, I&#39;ve never heard anyone mention Tox in day to day conversations, as an alternative to Skype or Discord, and now I&#39;m more than sure I never will.</p>

<p>And with the advent and promotion of the federated communication protocol <em>Matrix</em>, there&#39;s even less of an incentive for people to seek out Tox nowadays.</p>

<p>In the end, one really has to wonder: how long does it take for a project to die?</p>

<p>This blog is federated. If you wish to follow this tech blog, please use the following Fediverse handle: <a href="https://blog.transistor.one/@/tech@blog.transistor.one" class="u-url mention" rel="nofollow">@<span>tech@blog.transistor.one</span></a></p>

<p>Blog post by Alexandru Pentilescu.</p>

<p>You may contact me at alexandru.pentilescu@disroot.org</p>

<p>Optionally, you may also encrypt your emails to me using the following PGP key: 0xFF49E5748BD42A6A6A7DECFDD38B28DF9F7497A2</p>

<p>Download that key from any keyserver you wish</p>
]]></content:encoded>
      <guid>https://blog.transistor.one/tech/the-fall-of-the-tox-peer-to-peer-protocol</guid>
      <pubDate>Sat, 22 Apr 2023 15:09:30 +0000</pubDate>
    </item>
  </channel>
</rss>