diff --git a/docs/censorship/collateral.mdx b/docs/censorship/collateral.mdx new file mode 100644 index 0000000..8ba9b04 --- /dev/null +++ b/docs/censorship/collateral.mdx @@ -0,0 +1,33 @@ +--- +title: Collateral Freedom +sidebar_position: 30 +--- + +Collateral freedom is an anti-censorship strategy that attempts to make it **economically prohibitive** for censors to +block a resource. +The diverse needs of businesses to exchange information across international borders makes it impossible to build a +catalogue of "good" and "bad" networks or websites. +A censor requires some confidence when they block a resource that it won't be affecting economic activity. +It’s difficult to achieve accuracy with filtering as most internet traffic is encrypted and must be categorised +at speed to make blocking decisions. +As a result, censors will usually err on the side of under-blocking. + +One way to exploit this is by deploying solutions in large platforms that are **“too big to block”**, like public cloud +providers. +Public cloud providers host large numbers of clients in shared infrastructure to benefit from economies of scale, but +this sharing also makes it difficult to know what content is being accessed. +Similarly, large social networks host content from large numbers of publishers but all traffic between the user and the +social network is typically encrypted and so the censor cannot know what is being read. +Blocking the cloud provider would have a negative impact on businesses and would hurt state revenue, and blocking the +social media platform would cause backlash from the people: neither is an attractive option for the censor. + +Another approach is to use constantly rotating identifiers, as even where a resource may be easy to block once +identified, a new resource can be deployed quickly to replace it rendering the blocks ineffective. +Due to erring on the side of under-blocking, attempts to access previously unseen content usually succeed. +Even with a procedure for screening or approval, blocking by default would bog down innovation and development to the +extent that it could cease, certainly falling behind other economies. +This approach is particularly suited for news media where the majority of readers will be interested in an article for +only a short time after it is published, and if it is later blocked by the censor then the effect will be minimal. + +With collateral freedom on your side **you can have the upper hand** when it comes to making your content accessible to +your audience. diff --git a/docs/censorship/history.mdx b/docs/censorship/history.mdx index a2265a1..29c2a83 100644 --- a/docs/censorship/history.mdx +++ b/docs/censorship/history.mdx @@ -1,9 +1,8 @@ --- +title: The Context sidebar_position: 10 --- -# The Context - Censorship has been a tool for controlling information and suppressing dissent throughout history. It is often employed by authoritarian regimes to maintain power and control over their populations. The roots of censorship can be traced back to ancient civilizations, where rulers sought to suppress dissenting voices and control the narrative surrounding diff --git a/docs/censorship/index.mdx b/docs/censorship/index.mdx index cc4ecb7..432d379 100644 --- a/docs/censorship/index.mdx +++ b/docs/censorship/index.mdx @@ -1,6 +1,6 @@ --- title: Censorship 101 -sidebar_label: Introduction to Censorship +sidebar_label: Introduction sidebar_position: 0 --- @@ -10,5 +10,6 @@ import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; # Censorship 101 Understand the most important censorship and circumvention concepts. +This section contains background information on historical censorship, online censorship, and collateral freedom. diff --git a/docs/censorship/ladder.md b/docs/censorship/ladder.md deleted file mode 100644 index a42a4ec..0000000 --- a/docs/censorship/ladder.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -sidebar_position: 20 -draft: true ---- - -# The Ladder - -:::info[Todo] -Write text. -::: \ No newline at end of file diff --git a/docs/censorship/techniques.md b/docs/censorship/techniques.md deleted file mode 100644 index d3a7901..0000000 --- a/docs/censorship/techniques.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_position: 30 -draft: true ---- - -# Building Blocks - -Censorship is the suppression of speech, public communication, or other information. -This may be done on the basis that such material is considered objectionable, harmful, sensitive, or “inconvenient”. -Regardless of the reasons for censorship, the technical measures taken to implement it often look the same. -*jasima.app* provides a toolkit for circumventing censorship of Internet resources. -The circumvention methods available will often use collateral freedom, fingerprint resistance, probe resistance, or -combinations of these and more, to counter the measures put in place by the censor. - -## Collateral Freedom - -Collateral freedom is an anti-censorship strategy that attempts to make it economically prohibitive for censors to block an Internet resource. -The way in which a censor restricts access to resources will require knowing which content to block and which to allow. -It’s incredibly difficult to achieve accuracy with filtering as the Internet is comprised of untagged free-form content that must be categorised at speed. -This results in either over-blocking or under-blocking, and neither of these are desirable properties for the censor. - -This can be exploited by circumvention systems by deploying solutions at places that are “too big to block”, like cloud providers. -Either encryption or constantly rotating identifiers are then used to prevent censors from identifying requests for censored information that is hosted among other content. -This forces censors to either allow access to the censored information or take down entire services. - -:::info[Todo] -Difference between unique and global endpoints. -::: - -## Fingerprint Resistance - -Fingerprint Resistance, also known as Traffic Obfuscation, is an anti-censorship strategy that attempts to make it difficult to identify the destination, parties, and content of Internet traffic. -This is more commonly used for general censorship circumvention solutions rather than means of accessing specific resources. -There is a long tail of types of traffic on the Internet, including critical infrastructure communications like industrial control systems, point-of-sale systems and security systems. -This can be exploited by circumvention systems by making their traffic look like one of these unclassified systems. -Not being able to accurately identify the traffic means that the cost of blocking access is unknown, and so it is more difficult for a censor to justify the block. - -## Probe Resistance - -:::info[Todo] -Write text. -::: \ No newline at end of file diff --git a/docs/censorship/web.mdx b/docs/censorship/web.mdx new file mode 100644 index 0000000..608b975 --- /dev/null +++ b/docs/censorship/web.mdx @@ -0,0 +1,55 @@ +--- +title: The World Wide Web +sidebar_position: 20 +--- + +As the web has become an integral part of everyday life, with many using it as their primary source of news, governments +are employing various techniques to control online content just as they have with literature, newspapers, radio, and +television in the past. + +Publishing content online has a far lower barrier to entry than publishing a book or a newspaper, or operating a radio +station. +This democratization of content creation has led to an explosion of diverse voices and perspectives, but has also +become a target for censorship as governments wish to suppress content they find undesirable. + +The way that web content is consumed is also different to the previous means of publishing. +To read an article online, there is a one-to-one exchange between the reader's device and the publisher's server. +This exchange needs to be carried over one or more Internet Service Provider (ISP) networks. +This highlights the connection between privacy and online censorship, as it is not possible to implement such censorship +unless there is a device that attempts to know what it is that the reader has requested in order to decide whether to +allow access. + +Below are some notable examples of contemporary censorship efforts: + +* The Great Firewall of **China** (GFW) is a sophisticated system of censorship and surveillance implemented by the + Chinese government. + The GFW effectively isolates Chinese internet users from global discourse, limiting exposure to foreign ideas and + information that contradict the state narrative. + Further to the direct censorship, the surveillance capabilities lead to self-censorship too where users are afraid + to search for dissenting views and ideas. +* In recent years, **Russia** has enacted stringent media laws aimed at controlling the flow of information and + suppressing dissent. + The government has the authority to block websites and remove content deemed "extremist" or harmful to state + interests. + These measures have led to a significant decline in independent journalism and a stifling of free expression, as many + journalists face harassment or legal repercussions for their work. +* **Turkey** has increasingly employed censorship to control media narratives and suppress dissent, particularly + following the 2016 coup attempt. + The government frequently blocks access to social media platforms during times of unrest or political sensitivity. + Authorities can order the removal of content that is critical of the government or its policies. + Journalists and citizens face prosecution for "insulting" the president or spreading "terrorist propaganda." +* **Iran** employs extensive censorship to control the narrative and suppress dissenting voices, particularly regarding + political and social issues. + The government blocks access to numerous websites, including social media platforms and news outlets that do not align + with state ideology. + Online activities are closely monitored, with authorities tracking users' communications and internet usage. + Individuals who share dissenting views online can face imprisonment or other severe penalties. + The pervasive censorship in Iran stifles free expression and limits the public's ability to engage with diverse + perspectives, fostering an environment of fear and repression. + +All of these countries, however, rely on web access to support economic activity. +Being able to send and receive emails is a critical capability to engage with modern business, to send a purchase order, +to receive an invoice, or to request a price list. +eCommerce, electronic funds transfer, electronic data interchange for billing and shipping, and automated stock exchange +platforms all rely on an internet connection. +It is this fact that supports our main weapon against online censorship: **Collateral Freedom**. \ No newline at end of file diff --git a/docs/mirrors/index.mdx b/docs/mirrors/index.mdx new file mode 100644 index 0000000..25353c9 --- /dev/null +++ b/docs/mirrors/index.mdx @@ -0,0 +1,26 @@ +--- +title: Overview +sidebar_position: 0 +--- + +A web mirror can help users by providing alternate URLs to access censored resources, allowing them to bypass censorship +and access information that may be otherwise blocked. +Web mirrors work by forwarding requests to the original website, and providing a different URL to access that content. + +Dynamic web mirrors use frequently changing URLs to evade censorship, making it more difficult for censors to maintain +blocks for the content. +This assumption of a limited lifetime is built-in to the system, allowing for automated block detection to trigger the +deployment of new URLs, and for the new URLs to be made available via the portal, the API, and via dead drops. + +Named web mirrors use alternative domain names with limited distribution to evade censorship. +By blending with the "long tail" of web traffic, it may take longer for these mirrors to be discovered. + +Web mirrors can be accessed via a normal web browser, making them easily accessible to users without requiring any +special software or technical knowledge. + +
+ +
+ The jasima.app portal overview for web mirrors +
+
\ No newline at end of file diff --git a/docs/mirrors/troubleshooting.mdx b/docs/mirrors/troubleshooting.mdx new file mode 100644 index 0000000..1efd7ac --- /dev/null +++ b/docs/mirrors/troubleshooting.mdx @@ -0,0 +1,32 @@ +--- +title: Troubleshooting +sidebar_position: 100 +--- + +We have collected solutions to common issued faced by web mirrors users. +If you are unable to resolve your issue, please [get in touch](/contact) with us to discuss the options. + +## Upstream Rate Limiting + +CDNs (Content Delivery Networks) can impose rate limiting or "bot detection" on websites to ensure that the network +resources are efficiently utilized, to protect the websites from Denial of Service (DoS) attacks, and to +maintain the quality of service for all the websites using the CDN. +If you find that mirrors are producing many “Rate Limited Exceeded” or “Access Denied” errors then you may be suffering +from this problem. + +These rate limits will be sized according to the expected rate of requests from an average user, however the mirror +system is a bottleneck that aggregates requests from multiple users and passes these on to the original CDN. +When a single system is used to send a large number of requests to a CDN like this, the CDN may interpret this as a +DoS attack and prevent access to the website. + +The optimal approach is to configure the origin to use an alternative host for connections, so that the CDN is bypassed +and the backend origin (web server) is used directly. +The mirror will still be the access point for users and this will not reveal the location of the backend origin to your +users. + +If this is not possible, then deploying mirrors for websites hosted on CDNs will require either configuration at, or +co-operation from, the CDN provider. +Additional headers can be configured for the origin to authenticate requests that originate from jasima.app, and these +can be used to bypass the protection mechanisms at your CDN. +Consult your CDN's documentation or contact their support team to configure using an additional header to disable the +rate limiting for requests originating from jasima.app. \ No newline at end of file diff --git a/docusaurus.config.ts b/docusaurus.config.ts index dc42281..4d53b2b 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -73,13 +73,13 @@ const config: Config = { items: [ { type: 'docSidebar', - sidebarId: 'tutorialSidebar', + sidebarId: 'docsSidebar', position: 'left', label: 'Docs', }, { type: 'docSidebar', - sidebarId: 'apisidebar', + sidebarId: 'apiSidebar', position: 'left', label: 'API', }, @@ -100,6 +100,10 @@ const config: Config = { label: 'Censorship 101', to: '/docs/censorship/', }, + { + label: 'Web Mirrors', + to: '/docs/mirrors/', + }, ], }, { diff --git a/sidebars.ts b/sidebars.ts index 856df6c..6d7606d 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -1,34 +1,17 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; import * as apiSidebar from './docs/api/sidebar'; -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ const sidebars: SidebarsConfig = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: ['welcome', {'label': "Censorship 101", 'type': "category", items: [{'type': 'autogenerated', dirName: 'censorship'}]}], - apisidebar: apiSidebar.default, - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], - */ + docsSidebar: ['welcome', { + 'label': "Censorship 101", + 'type': "category", + items: [{'type': 'autogenerated', dirName: 'censorship'}] + },{ + 'label': "Web Mirrors", + 'type': "category", + items: [{'type': 'autogenerated', dirName: 'mirrors'}] + }], + apiSidebar: apiSidebar.default, }; export default sidebars; diff --git a/static/img/mirrors/overview.png b/static/img/mirrors/overview.png new file mode 100644 index 0000000..4721595 Binary files /dev/null and b/static/img/mirrors/overview.png differ