Compare commits
280 Commits
jonaharago
...
2024.08.05
Author | SHA1 | Date | |
---|---|---|---|
e49d2df4b7 | |||
1b8f5eb531
|
|||
d7c0f0d495 | |||
c0481d65d0
|
|||
42b75c9265 | |||
9ad1c6450a | |||
9d13fafa89 | |||
11f3f8ac13
|
|||
7c41b2ae77
|
|||
687c5afb20
|
|||
e64f6aab7d
|
|||
de0fff5801 | |||
6a62210f15 | |||
6410f2d953 | |||
c88caedad8 | |||
6eec31b9f3 | |||
04e6f2a2c6 | |||
a58f090e79 | |||
a7662a1b55 | |||
8850bcd6cc | |||
d28db8262a
|
|||
ff191d6661 | |||
265998f86f | |||
2dde416f50 | |||
e92210a88f | |||
84d33ed944 | |||
87377a4e8a | |||
00b3ddd217 | |||
84fe22fc7d | |||
a81e0f3371 | |||
f16ed5024b | |||
f399643dff | |||
70f2ae7405 | |||
8158e73aed | |||
ad14bf5574 | |||
1b99537a5f | |||
0d3f4681e0 | |||
cbee839671 | |||
67cdae5585 | |||
503a240d01 | |||
200bf71906 | |||
530901d99b | |||
abc00c3a96 | |||
1bb06b7db1 | |||
34ae172d92 | |||
7e0218b082
|
|||
0a9a24d390
|
|||
291fb49af2 | |||
6d51572142 | |||
5facb997ee | |||
f96e9bf7dc | |||
b0106bfd6b | |||
a366327b79 | |||
6047727d0f | |||
90831803d0 | |||
4d859ea13a | |||
9a489cd130 | |||
b9ef360d25 | |||
99822dae1e | |||
28d9794686 | |||
a5a2ed0fdd | |||
6493cc2076 | |||
3d569ae40c | |||
1ae83dc7ae | |||
66edb72826 | |||
df3583efab | |||
44f35581a9
|
|||
0a0e8b605d
|
|||
0bc8336b6a | |||
3ace34099b | |||
e4ee74ea29 | |||
9aee2381f7 | |||
0ea286bf8e
|
|||
13f1bd19a4 | |||
2b97f64f3b | |||
c19f554b77
|
|||
66847abdaf | |||
32e65cf3e8 | |||
87aa1586f3 | |||
9ed7abb972 | |||
4221863aff
|
|||
26f3300424 | |||
2356a3a49b | |||
4f26072136 | |||
3d8eda7bff | |||
e0b1995d20 | |||
560a46ff03 | |||
f1a0679bd3 | |||
c64d446d52 | |||
25a6a5a937 | |||
8e51dcb5aa | |||
1ce9941018 | |||
5b0f3a6832
|
|||
ece4a76711
|
|||
33474d79e2 | |||
f82cd36298 | |||
c830c0cf30 | |||
61ade2c055 | |||
0d1e4d88f6 | |||
266f92811c | |||
1633232fd5
|
|||
03a35288ec
|
|||
7346c4d3ac
|
|||
e46cb94c86
|
|||
c0139de0e1 | |||
1df7bd988f | |||
f762b5c3f5 | |||
a8a4adee73
|
|||
93136f2a0b
|
|||
5d405830df
|
|||
d80af3968f
|
|||
09d3669fcf | |||
c4c68f7f7e | |||
a80653968e | |||
775ff52b14
|
|||
1acdf1748f | |||
e88ee1a80e | |||
662a3dfeb5 | |||
6458a05355 | |||
a57dc2cd78 | |||
e8f12c1bdf | |||
2c623ce775
|
|||
65bc92af88
|
|||
5b41dec8b0
|
|||
bad1370181 | |||
a1b01b8b8c
|
|||
9626aabea8 | |||
a7a8817c21 | |||
d17adf0299 | |||
dec6fbb64c | |||
f35e64a4f4 | |||
af45bcc642
|
|||
66225f2eff | |||
c2fce11a64 | |||
cf43545f57 | |||
cca4759612 | |||
492facf194 | |||
472a3a5416 | |||
3a8c0a9e66 | |||
0f17a9dce9 | |||
464d7ec3c6 | |||
b6d2c6f113 | |||
895a83b841 | |||
ce7896c07f | |||
04c37b9cdf | |||
b12887310f | |||
ff0a5339a8 | |||
632761cae1 | |||
b536928661 | |||
1372587017 | |||
82ab189d36
|
|||
139a206367
|
|||
4b92316774
|
|||
fc19f44c18
|
|||
0b43cb1fc7 | |||
9a56bd46b1 | |||
9169afa79a | |||
6aa14e8eb1 | |||
f37e72084c | |||
d050d27767 | |||
e5d9d1d055 | |||
a31dcb6df8
|
|||
525a2c1137
|
|||
c5bdbbcdcb | |||
48abc1d42a | |||
f77fbc6a45 | |||
01b3a7d48f | |||
792fc00b06 | |||
d022f53e6b | |||
3b69c565a3 | |||
2b8869882c | |||
bfa4b0f422 | |||
3ad66a447f | |||
aaa843d272 | |||
d8627a1ad2 | |||
ae0800e8ec | |||
df824ee0e3 | |||
298c3cde2b | |||
dd492b272a | |||
67614c3e17 | |||
05e5832161 | |||
0140f0ab7e | |||
b477409747 | |||
f60fcf4b2f | |||
5b09c59a7c | |||
6b7f2bca03 | |||
5d76e2ae0b
|
|||
df13d33a09 | |||
c64814d41a | |||
63270a3e8c | |||
e388e84dc5 | |||
b0aa86f8dc | |||
46b462ad72 | |||
7011b007a0 | |||
a890fc47af
|
|||
3f0ba17dcc | |||
f6f800d49f | |||
97996b9397 | |||
0d0c272a5d | |||
546e728188 | |||
8e3bd2589e | |||
cd4181a7fc | |||
3f26dd3b27 | |||
8a25c48f57 | |||
f098042357 | |||
f12573d40b | |||
2043e644c3 | |||
ede201f76d | |||
96d857da21 | |||
73188e1a21 | |||
8ea30ebd7f | |||
fe121cf0d5 | |||
7c0ff5824a | |||
a650d015fc | |||
33aecf011a | |||
e756ae4b37 | |||
f1e6db05b5 | |||
1634bea9d2 | |||
01c19281f7 | |||
f1864a4062 | |||
a1523e3f81 | |||
c89d1ed25f | |||
667a207010 | |||
b856a51785 | |||
9d0a2de9a1 | |||
e9cde5c75d | |||
93081f84c7 | |||
e182583a17 | |||
8167166eb9 | |||
772cd517cf | |||
2a4885ed39 | |||
7ebe767518
|
|||
9e40a3ece5 | |||
084a0f9427 | |||
fe127bed0f | |||
fce4ad5a6b | |||
ee4ff2d41b | |||
54f37e7f53 | |||
9e247fcbe6 | |||
019c9d46f9 | |||
9d877250f9 | |||
ee1c13db4c | |||
bb04a71b59 | |||
60db942814 | |||
6c771e2ea8 | |||
8b7a0e3233 | |||
b7f20342f2 | |||
efcd5159c8 | |||
aca6b565a7 | |||
5808953199 | |||
dc054d91e0 | |||
2fbc674986 | |||
239ac0d9e9 | |||
55dd7465d2 | |||
cf96d55027 | |||
a896a1a306 | |||
b7f0b672a2 | |||
7004d344ac | |||
461ac8f224 | |||
c8dc59c134 | |||
f8570a4c6a | |||
9d285e3094 | |||
abc22993cb | |||
e56081202d
|
|||
6da9b15464 | |||
d5a31c88bb | |||
d9ff08381f | |||
e6149a97d9 | |||
b69edfefd6
|
|||
d419ac9432 | |||
708b1917a7 | |||
741fb9d904 | |||
05228b4db3 | |||
aa9fed4eac | |||
3db638b937 | |||
43b346a5ff | |||
de216b9cde | |||
add980a655 | |||
58d6e4e044 | |||
366e44a940 |
2862
.all-contributorsrc
Normal file
1
.cache/plugin/social/fonts
Symbolic link
@ -0,0 +1 @@
|
||||
../../../theme/assets/brand/fonts
|
@ -1 +0,0 @@
|
||||
../../../../../theme/assets/brand/WOFF/bagnard/Bagnard.woff
|
8
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,8 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/python
|
||||
{
|
||||
"name": "Privacy Guides",
|
||||
"image": "ghcr.io/squidfunk/mkdocs-material:9.5.17",
|
||||
"forwardPorts": [8000],
|
||||
"postCreateCommand": "git submodule init; git submodule update theme/assets/brand; apk add bash; /bin/bash run.sh --cmd=mkdocs --cmd_flags=--dev-addr=0.0.0.0:8000"
|
||||
}
|
8
.devcontainer/team/devcontainer.json
Normal file
@ -0,0 +1,8 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/python
|
||||
{
|
||||
"name": "Privacy Guides Team",
|
||||
"image": "ghcr.io/privacyguides/privacyguides.org:main",
|
||||
"forwardPorts": [8000],
|
||||
"postCreateCommand": "git submodule init; git submodule update theme/assets/brand; ./run.sh --cmd=mkdocs --insiders --production --cmd_flags=--dev-addr=0.0.0.0:8000"
|
||||
}
|
38
.editorconfig
Normal file
@ -0,0 +1,38 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[{*.caddy,*.example-caddy,Caddyfile}]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
tab_width = 4
|
25
.github/CODEOWNERS
vendored
@ -1,27 +1,5 @@
|
||||
# Copyright (c) 2019-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
# Additional Co-Owners are added to the TOP of this file
|
||||
|
||||
# High-traffic pages
|
||||
/docs/index.en.md @jonaharagon @dngray
|
||||
/docs/index.md @jonaharagon @dngray
|
||||
/theme/overrides/ @jonaharagon
|
||||
|
||||
# Org
|
||||
@ -35,4 +13,3 @@ README.md @jonaharagon @dngray
|
||||
/Pipfile @jonaharagon
|
||||
/Pipfile.lock @jonaharagon
|
||||
/.github/ @jonaharagon
|
||||
/.well-known/ @jonaharagon
|
||||
|
11
.github/ISSUE_TEMPLATE/1_Content_Correction.yml
vendored
@ -22,18 +22,17 @@ name: "Content Correction"
|
||||
description: Report any inaccurate, incorrect, or outdated information on the website.
|
||||
labels: ["t:correction"]
|
||||
body:
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
This form is for reporting verifiable issues with our website.
|
||||
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net/) instead.
|
||||
|
||||
This form is for reporting verifiable issues with our website.
|
||||
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net) instead.
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Affected page
|
||||
description: Please let us know which page the incorrect information can be found on.
|
||||
placeholder: "https://www.privacyguides.org/en/data-redaction/"
|
||||
placeholder: "https://www.privacyguides.org/en/data-redaction"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@ -62,5 +61,5 @@ body:
|
||||
options:
|
||||
- label: I am reporting something that is verifiably incorrect, not a suggestion or opinion.
|
||||
required: true
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||
required: true
|
||||
|
15
.github/ISSUE_TEMPLATE/2_Website_Issues.yml
vendored
@ -24,7 +24,6 @@ labels: ["t:bug"]
|
||||
assignees:
|
||||
- jonaharagon
|
||||
body:
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
@ -32,15 +31,15 @@ body:
|
||||
This is not the place to report an issue with Matrix, Discourse, or our other hosted services.
|
||||
|
||||
If you want us to fix inaccurate information on the website, go back and use the content correction form.
|
||||
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net/) instead.
|
||||
|
||||
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net) instead.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug description
|
||||
description: |
|
||||
Please give a detailed description of the bug.
|
||||
Explain how the website does not behave as you would expect it to, and be as specific as possible.
|
||||
Please give a detailed description of the bug.
|
||||
Explain how the website does not behave as you would expect it to, and be as specific as possible.
|
||||
If you have found a workaround or a fix for the problem too, please let us know.
|
||||
validations:
|
||||
required: true
|
||||
@ -53,7 +52,7 @@ body:
|
||||
Please list all pages where you've noticed this issue, or let us know if it affects every page on the site.
|
||||
value: |
|
||||
-
|
||||
|
||||
|
||||
- type: dropdown
|
||||
id: browser
|
||||
attributes:
|
||||
@ -69,7 +68,7 @@ body:
|
||||
- Safari
|
||||
- Edge
|
||||
- Other
|
||||
|
||||
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
@ -93,7 +92,7 @@ body:
|
||||
options:
|
||||
- label: I am reporting something that is broken on the website, not making a suggestion.
|
||||
required: true
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||
required: true
|
||||
|
||||
- type: markdown
|
||||
|
17
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,6 +1,6 @@
|
||||
Changes proposed in this PR:
|
||||
|
||||
-
|
||||
-
|
||||
|
||||
<!-- SCROLL TO BOTTOM TO AGREE!:
|
||||
Please use a descriptive title for your PR, it will be included in our changelog!
|
||||
@ -13,11 +13,16 @@ family, friends, clients, employers, or your financial and other relationships.
|
||||
Any external relationship can trigger a conflict of interest.
|
||||
-->
|
||||
|
||||
<!-- Place an x in the boxes below, like: [x] -->
|
||||
- [ ] I have disclosed any relevant conflicts of interest in my post.
|
||||
- [ ] I agree to grant Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform, relicense, and distribute my contribution as part of this project.
|
||||
- [ ] I am the sole author of this work. <!-- Do not check this box if you are not -->
|
||||
- [ ] I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
<summary>
|
||||
|
||||
<!-- To agree, place an x in the box below, like: [x] -->
|
||||
- [ ] I agree to the terms listed below:
|
||||
<details><summary>Contribution terms (click to expand)</summary>
|
||||
1) I am the sole author of this work.
|
||||
2) I agree to grant Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform, relicense, and distribute my contribution as part of this project.
|
||||
3) I have disclosed any relevant conflicts of interest in my post.
|
||||
4) I agree to the Community Code of Conduct.
|
||||
</details>
|
||||
|
||||
<!-- What's this? When you submit a PR, you keep the Copyright for the work you
|
||||
are contributing. We need you to agree to the above terms in order for us to
|
||||
|
17
.github/dependabot.yml
vendored
@ -21,7 +21,6 @@
|
||||
version: 2
|
||||
|
||||
registries:
|
||||
|
||||
github-privacyguides:
|
||||
type: git
|
||||
url: https://github.com
|
||||
@ -29,29 +28,37 @@ registries:
|
||||
password: ${{secrets.REPO_PAT}}
|
||||
|
||||
updates:
|
||||
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "monthly"
|
||||
assignees:
|
||||
- "jonaharagon"
|
||||
reviewers:
|
||||
- "jonaharagon"
|
||||
labels:
|
||||
- "fix:github_actions"
|
||||
|
||||
|
||||
# Maintain submodules
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
registries:
|
||||
- github-privacyguides
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "monthly"
|
||||
labels:
|
||||
- "fix:submodules"
|
||||
|
||||
- package-ecosystem: "devcontainers"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
# Disabled because some updates tend to remove needed dependencies for some reason
|
||||
|
||||
# # Maintain dependencies for pipenv
|
||||
|
92
.github/workflows/build-container.yml
vendored
Normal file
@ -0,0 +1,92 @@
|
||||
name: ☁️ Build Container
|
||||
|
||||
# Configures this workflow to run every time a change is pushed to the branch called `release`.
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: container-build
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build-and-push-image:
|
||||
needs: submodule
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- run: |
|
||||
rm -rf modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
rm -rf theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@v3.3.0
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5.5.1
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=ref,event=pr
|
||||
type=sha
|
||||
flavor: |
|
||||
latest=${{ github.event_name == 'release' }}
|
||||
|
||||
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
||||
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
||||
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v6.5.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: build-and-push-image
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
118
.github/workflows/build-pr.yml
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
name: 🛠️ Build PR Preview
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
concurrency:
|
||||
group: ${{github.event.pull_request.head.ref}}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
metadata:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
submodules: ${{ steps.submodules-fork.outputs.submodules || steps.submodules-main.outputs.submodules }}
|
||||
privileged: ${{ steps.submodules-fork.outputs.privileged || steps.submodules-main.outputs.privileged }}
|
||||
env:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
steps:
|
||||
- name: Set submodules for fork
|
||||
if: env.ACTIONS_SSH_KEY == ''
|
||||
id: submodules-fork
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=false" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Set submodules for main repo
|
||||
if: env.ACTIONS_SSH_KEY != ''
|
||||
id: submodules-main
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=true" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Save PR metadata
|
||||
run: |
|
||||
mkdir -p ./metadata
|
||||
echo ${{ github.event.number }} > ./metadata/NR
|
||||
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
|
||||
|
||||
- name: Upload metadata as artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: metadata
|
||||
path: metadata
|
||||
|
||||
submodule:
|
||||
needs: metadata
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.metadata.outputs.submodules) }}
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build_english:
|
||||
needs: [submodule, metadata]
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en]
|
||||
fail-fast: true
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
lang: en
|
||||
continue-on-error: false
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
strict: true
|
||||
|
||||
build_i18n:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }}
|
||||
needs: [submodule, metadata]
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [es, fr, he, it, nl, ru, zh-Hant]
|
||||
fail-fast: false
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
lang: ${{ matrix.lang }}
|
||||
continue-on-error: true
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
strict: true
|
||||
|
||||
combine_build:
|
||||
needs: [build_english, build_i18n]
|
||||
if: |
|
||||
(always() && !cancelled() && !failure()) &&
|
||||
needs.build_english.result == 'success' &&
|
||||
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped')
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: site-build-*
|
||||
merge-multiple: true
|
||||
|
||||
- run: |
|
||||
for file in *.tar.gz; do tar -zxf "$file"; done
|
||||
ls -la site/
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-combined
|
||||
path: site
|
||||
retention-days: 5
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build_english, build_i18n]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
274
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,274 @@
|
||||
name: 🛠️ Build Website
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
config:
|
||||
type: string
|
||||
default: build
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
lang:
|
||||
type: string
|
||||
default: en
|
||||
context:
|
||||
type: string
|
||||
default: deploy-preview
|
||||
continue-on-error:
|
||||
type: boolean
|
||||
default: true
|
||||
privileged:
|
||||
type: boolean
|
||||
default: true
|
||||
strict:
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata
|
||||
if: inputs.config == 'build'
|
||||
run: |
|
||||
{
|
||||
echo "BUILD_CONTEXT=${{ inputs.context }}"
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --production""
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Privileged Builds
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
echo "BUILD_INSIDERS=true" >> "$GITHUB_ENV"
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --insiders"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Offline Mode
|
||||
if: inputs.config == 'offline'
|
||||
run: |
|
||||
{
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --offline""
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Strict Mode
|
||||
if: inputs.strict
|
||||
run: |
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd_flags=--strict"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Copy Translation Files
|
||||
if: inputs.lang != 'en'
|
||||
run: |
|
||||
cp -rl modules/repo-i18n/i18n .
|
||||
cp -rl modules/repo-i18n/includes .
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
if: inputs.privileged
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python (no pipenv)
|
||||
if: ${{ !inputs.privileged }}
|
||||
uses: actions/setup-python@v5
|
||||
|
||||
- name: Restore Privacy Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
id: privacy_cache_restore
|
||||
with:
|
||||
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
path: |
|
||||
.cache/plugin/privacy
|
||||
restore-keys: |
|
||||
privacy-cache-${{ inputs.repo }}-
|
||||
privacy-cache-privacyguides/privacyguides.org-
|
||||
privacy-cache-
|
||||
|
||||
- name: Restore Social Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
id: social_cache_restore
|
||||
with:
|
||||
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
restore-keys: |
|
||||
social-cache-${{ inputs.repo }}-${{ inputs.lang }}-
|
||||
social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-
|
||||
|
||||
- name: Restore Optimize Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
id: optimize_cache_restore
|
||||
with:
|
||||
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/optimize
|
||||
restore-keys: |
|
||||
optimize-cache-${{ inputs.repo }}-
|
||||
optimize-cache-privacyguides/privacyguides.org-
|
||||
optimize-cache-
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Install Python Dependencies (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
pip install mkdocs-material
|
||||
sudo apt install pngquant
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd=mkdocs"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build Website
|
||||
run: |
|
||||
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site
|
||||
|
||||
- name: Find Privacy Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
if: steps.privacy_cache_restore.outputs.cache-hit != 'true'
|
||||
id: privacy_cache_test
|
||||
with:
|
||||
key: privacy-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/privacy
|
||||
|
||||
- name: Find Social Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
if: steps.social_cache_restore.outputs.cache-hit != 'true'
|
||||
id: social_cache_test
|
||||
with:
|
||||
key: social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Find Optimize Plugin Cache
|
||||
uses: actions/cache/restore@v4.0.2
|
||||
if: steps.optimize_cache_restore.outputs.cache-hit != 'true'
|
||||
id: optimize_cache_test
|
||||
with:
|
||||
key: optimize-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/optimize
|
||||
|
||||
- name: Save Privacy Plugin Cache
|
||||
uses: actions/cache/save@v4.0.2
|
||||
if: steps.privacy_cache_test.outputs.cache-hit != 'true'
|
||||
with:
|
||||
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
path: .cache/plugin/privacy
|
||||
|
||||
- name: Save Social Plugin Cache
|
||||
uses: actions/cache/save@v4.0.2
|
||||
if: steps.social_cache_test.outputs.cache-hit != 'true'
|
||||
with:
|
||||
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Save Optimize Plugin Cache
|
||||
uses: actions/cache/save@v4.0.2
|
||||
if: steps.optimize_cache_test.outputs.cache-hit != 'true'
|
||||
with:
|
||||
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||
path: .cache/plugin/optimize
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||
path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
offline_package:
|
||||
if: inputs.config == 'offline' && inputs.lang == 'en'
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: site-offline-en.tar.gz
|
||||
|
||||
- run: |
|
||||
tar -xzf site-offline-en.tar.gz
|
||||
tar -czf offline.tar.gz site/en
|
||||
zip -r -q offline.zip site/en
|
||||
|
||||
- name: Upload tar.gz file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline.tar.gz
|
||||
path: offline.tar.gz
|
||||
|
||||
- name: Upload zip file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline.zip
|
||||
path: offline.zip
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs -w index.html -I assets/brand/logos/png/square/pg-yellow.png -l eng -t "Privacy Guides" -d "Your central privacy and security resource to protect yourself online." -c "Privacy Guides" -p "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site/en /data/offline-privacy_guides.zim
|
||||
|
||||
- name: Upload ZIM file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: offline-privacy_guides.zim
|
||||
path: offline-privacy_guides.zim
|
100
.github/workflows/pages.yml
vendored
@ -1,100 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🛠️ Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
# Allow one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: 3.8
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Pages setup
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Python setup
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.8'
|
||||
cache: 'pipenv'
|
||||
|
||||
- name: Cache files
|
||||
uses: actions/cache@v3.3.2
|
||||
with:
|
||||
key: ${{ github.ref }}
|
||||
path: .cache
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Build website
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CARDS: true
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file config/mkdocs.en.yml
|
||||
pipenv run mkdocs --version
|
||||
|
||||
- name: Package website
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
with:
|
||||
path: site
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
needs: build
|
||||
|
||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
||||
permissions:
|
||||
pages: write # to deploy to Pages
|
||||
id-token: write # to verify the deployment originates from an appropriate source
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@main
|
@ -20,7 +20,10 @@
|
||||
|
||||
name: 🪞 Push to Mirrors
|
||||
|
||||
on: [ push, delete, create ]
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on: [push, delete, create]
|
||||
|
||||
# Ensures that only one mirror task will run at a time.
|
||||
concurrency:
|
120
.github/workflows/publish-pr.yml
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
name: 📦 PR Preview
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: [🛠️ Build PR Preview]
|
||||
types:
|
||||
- completed
|
||||
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
metadata:
|
||||
if: >
|
||||
github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
pr_number: ${{ steps.metadata.outputs.pr_number }}
|
||||
sha: ${{ steps.metadata.outputs.sha }}
|
||||
|
||||
steps:
|
||||
- name: Download Website Build Artifact
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: ${{github.event.workflow_run.id }},
|
||||
});
|
||||
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "site-build-combined"
|
||||
})[0];
|
||||
var download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
var fs = require('fs');
|
||||
fs.writeFileSync('${{github.workspace}}/site-build-combined.zip', Buffer.from(download.data));
|
||||
|
||||
- name: Unpack Website
|
||||
run: |
|
||||
mkdir -p site
|
||||
unzip site-build-combined.zip -d site
|
||||
tar -czvf site-build-combined.tar.gz site
|
||||
|
||||
- name: Upload Combined Build Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-combined.tar.gz
|
||||
path: site-build-combined.tar.gz
|
||||
retention-days: 5
|
||||
|
||||
- name: Download Metadata Artifact
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: ${{github.event.workflow_run.id }},
|
||||
});
|
||||
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "metadata"
|
||||
})[0];
|
||||
var download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
var fs = require('fs');
|
||||
fs.writeFileSync('${{github.workspace}}/metadata.zip', Buffer.from(download.data));
|
||||
|
||||
- name: Set Metadata
|
||||
id: metadata
|
||||
run: |
|
||||
mkdir -p metadata
|
||||
unzip metadata.zip -d metadata
|
||||
echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT"
|
||||
echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
deploy:
|
||||
needs: metadata
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-netlify-preview.yml@main
|
||||
with:
|
||||
netlify_alias: ${{ needs.metadata.outputs.pr_number }}
|
||||
netlify_site_id: ${{ vars.NETLIFY_SITE }}
|
||||
secrets:
|
||||
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||
|
||||
comment:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
needs: [deploy, metadata]
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
address: ${{ needs.deploy.outputs.address }}
|
||||
steps:
|
||||
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||
with:
|
||||
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||
message: |
|
||||
### <span aria-hidden="true">✅</span> Your preview is ready!
|
||||
|
||||
| Name | Link |
|
||||
| :---: | ---- |
|
||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||
comment_tag: deployment
|
103
.github/workflows/publish-release.yml
vendored
Normal file
@ -0,0 +1,103 @@
|
||||
# Copyright (c) 2021-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
concurrency:
|
||||
group: release-deployment
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
deployments: write
|
||||
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand, i18n]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build:
|
||||
needs: submodule
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
|
||||
build: [build, offline]
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
config: ${{ matrix.build }}
|
||||
ref: ${{ github.ref }}
|
||||
repo: ${{ github.repository }}
|
||||
lang: ${{ matrix.lang }}
|
||||
context: production
|
||||
continue-on-error: false
|
||||
|
||||
release:
|
||||
name: Create release notes
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: offline*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Create release notes
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
generateReleaseNotes: true
|
||||
artifacts: "offline.zip,offline.tar.gz,offline-privacy_guides.zim"
|
||||
makeLatest: true
|
||||
|
||||
deploy:
|
||||
needs: build
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||
secrets:
|
||||
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||
PROD_MINIO_KEY_ID: ${{ secrets.PROD_MINIO_KEY_ID }}
|
||||
PROD_MINIO_SECRET_KEY: ${{ secrets.PROD_MINIO_SECRET_KEY }}
|
||||
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
||||
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
||||
CLUSTER_USERNAME: ${{ secrets.CLUSTER_USERNAME }}
|
||||
CLUSTER_PASSWORD: ${{ secrets.CLUSTER_PASSWORD }}
|
||||
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
|
||||
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: build
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
141
.github/workflows/release.yml
vendored
@ -1,141 +0,0 @@
|
||||
# Copyright (c) 2021-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Releases
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
production:
|
||||
name: Push release to production
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Push to production branch
|
||||
run: |
|
||||
git push origin HEAD:production
|
||||
|
||||
build:
|
||||
name: Create release packages
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Python setup
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.8'
|
||||
cache: 'pipenv'
|
||||
|
||||
- name: Cache files
|
||||
uses: actions/cache@v3.3.2
|
||||
with:
|
||||
key: ${{ github.ref }}
|
||||
path: .cache
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Build website
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CARDS: false
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file config/mkdocs-offline.yml
|
||||
pipenv run mkdocs --version
|
||||
|
||||
- name: Package website
|
||||
run: |
|
||||
tar -czvf offline.tar.gz site
|
||||
zip -r -q offline.zip site
|
||||
|
||||
- name: Upload tar.gz file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: offline.tar.gz
|
||||
path: offline.tar.gz
|
||||
|
||||
- name: Upload zip file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: offline.zip
|
||||
path: offline.zip
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs -w index.html -I assets/brand/PNG/Square/pg-yellow.png -l eng -t "Privacy Guides" -d "Your central privacy and security resource to protect yourself online." -c "Privacy Guides" -p "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site /data/privacy_guides.zim
|
||||
|
||||
- name: Upload ZIM file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: privacy_guides.zim
|
||||
path: privacy_guides.zim
|
||||
|
||||
release:
|
||||
name: Create release notes
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: offline.tar.gz
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: offline.zip
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: privacy_guides.zim
|
||||
|
||||
- name: Create release notes
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
generateReleaseNotes: true
|
||||
token: ${{ secrets.REPO_TOKEN }}
|
||||
artifacts: "offline.zip,offline.tar.gz,privacy_guides.zim"
|
60
.github/workflows/test-build.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Manual Test Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand, i18n]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build:
|
||||
needs: submodule
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, fr, he]
|
||||
build: [build, offline]
|
||||
fail-fast: false
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
config: ${{ matrix.build }}
|
||||
ref: ${{ github.ref }}
|
||||
repo: ${{ github.repository }}
|
||||
lang: ${{ matrix.lang }}
|
||||
continue-on-error: true
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: build
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
131
.github/workflows/test-lint.yml
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🤖 Linting
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
push:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.ref }}-${{ github.workflow }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
MAIN_BRANCH: ${{ github.event_name == 'push' }}
|
||||
|
||||
jobs:
|
||||
megalinter:
|
||||
name: MegaLinter
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- if: ${{ env.MAIN_BRANCH }}
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- if: ${{ env.MAIN_BRANCH == 0 }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Configure markdown-link-check
|
||||
run: |
|
||||
cat <<EOT >> .markdown-link-check.json
|
||||
{
|
||||
"ignorePatterns": [
|
||||
{
|
||||
"pattern": "^https://twitter.com"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://reddit.com"
|
||||
},
|
||||
{
|
||||
"pattern": "^#_"
|
||||
},
|
||||
{
|
||||
"pattern": ".onion"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://en.opensuse.org"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://quad9.net"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://dnscrypt.info"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://pipewire.org"
|
||||
}
|
||||
],
|
||||
"replacementPatterns": [
|
||||
{
|
||||
"pattern": "^assets/",
|
||||
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||
},
|
||||
{
|
||||
"pattern": "^(../)*assets/",
|
||||
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||
},
|
||||
{
|
||||
"pattern": "^/",
|
||||
"replacement": "https://www.privacyguides.org/"
|
||||
}
|
||||
],
|
||||
"retryOn429": true,
|
||||
"retryCount": 5,
|
||||
"aliveStatusCodes": [200, 206, 403]
|
||||
}
|
||||
EOT
|
||||
|
||||
- id: ml
|
||||
# You can override MegaLinter flavor used to have faster performances
|
||||
# More info at https://megalinter.io/flavors/
|
||||
uses: oxsecurity/megalinter/flavors/documentation@v7.13.0
|
||||
env:
|
||||
# All available variables are described in documentation
|
||||
# https://megalinter.io/configuration/
|
||||
# Validates all source when push on main, else just the git diff with main.
|
||||
VALIDATE_ALL_CODEBASE: ${{ env.MAIN_BRANCH }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
|
||||
DISABLE: COPYPASTE,SPELL,HTML
|
||||
DISABLE_LINTERS: JSON_JSONLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER
|
||||
DISABLE_ERRORS_LINTERS: CSS_STYLELINT,MARKDOWN_MARKDOWN_LINK_CHECK,YAML_YAMLLINT,DOCKERFILE_HADOLINT,REPOSITORY_TRIVY,REPOSITORY_CHECKOV,REPOSITORY_GITLEAKS
|
||||
EDITORCONFIG_EDITORCONFIG_CHECKER_ARGUMENTS: -disable-indentation
|
||||
ENV_DOTENV_LINTER_ARGUMENTS: "--skip QuoteCharacter"
|
||||
MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_INCLUDE: (docs)
|
||||
MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.yml
|
||||
MARKDOWN_MARKDOWNLINT_FILTER_REGEX_EXCLUDE: (PULL_REQUEST_TEMPLATE\.md)
|
||||
|
||||
# Upload MegaLinter artifacts
|
||||
- name: Archive production artifacts
|
||||
if: success() || failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MegaLinter reports
|
||||
path: |
|
||||
megalinter-reports
|
||||
mega-linter.log
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
@ -20,10 +20,13 @@
|
||||
|
||||
name: 💬 Crowdin Upload
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
@ -34,18 +37,17 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v1.13.1
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_sources_args: '--auto-update --delete-obsolete'
|
||||
download_translations: false
|
||||
config: crowdin.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v2.1.1
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_sources_args: "--auto-update --delete-obsolete"
|
||||
download_translations: false
|
||||
config: crowdin.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
29
.gitignore
vendored
@ -1,22 +1,25 @@
|
||||
site
|
||||
/i18n/
|
||||
/includes/*
|
||||
/includes/*.*.*
|
||||
!/includes/*.en.*
|
||||
/static/i18n/*
|
||||
!/static/i18n/*.en.*
|
||||
/theme/overrides/*
|
||||
!/theme/overrides/*.en.*
|
||||
# include Bagnard font in social card
|
||||
# (not available in Google Fonts)
|
||||
/static/i18n/
|
||||
/theme/overrides/*.*.*
|
||||
|
||||
# commit social card fonts to repo
|
||||
# see: https://github.com/squidfunk/mkdocs-material/issues/6983
|
||||
# ridiculous hide-and-seek https://stackoverflow.com/a/72380673
|
||||
/.cache/*
|
||||
!/.cache/plugin
|
||||
.cache/*
|
||||
!.cache/plugin
|
||||
/.cache/plugin/*
|
||||
!/.cache/plugin/social
|
||||
!.cache/plugin/social
|
||||
/.cache/plugin/social/*
|
||||
!/.cache/plugin/social/fonts
|
||||
/.cache/plugin/social/fonts/*
|
||||
!/.cache/plugin/social/fonts/Bagnard
|
||||
!.cache/plugin/social/fonts
|
||||
|
||||
# Local Netlify folder
|
||||
.netlify
|
||||
node_modules
|
||||
|
||||
# Python
|
||||
.venv
|
||||
.env
|
||||
.mkdocs-insiders-*
|
||||
|
16
.mailmap
Normal file
@ -0,0 +1,16 @@
|
||||
Daniel Gray <dngray@privacyguides.org> <dng@disroot.org>
|
||||
Daniel Gray <dngray@privacyguides.org> <48640805+dngray@users.noreply.github.com>
|
||||
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
|
||||
Daniel Gray <dngray@privacyguides.org>
|
||||
Jonah Aragon <jonah@privacyguides.org> <jonah@triplebit.net>
|
||||
Jonah Aragon <jonah@privacyguides.org> <jonah@privacytools.io>
|
||||
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
|
||||
mfwmyfacewhen <mfw@privacyguides.org> <94880365+mfwmyfacewhen@users.noreply.github.com>
|
||||
mbananasynergy <mbananasynergy@privacyguides.org> <>
|
||||
mbananasynergy <mbananasynergy@privacyguides.org> <107055883+matchboxbananasynergy@users.noreply.github.com>
|
||||
rollsicecream <rollsicecream@proton.me> <153316540+rollsicecream@users.noreply.github.com>
|
||||
rollsicecream <rollsicecream@proton.me> <waterfallnet@proton.me>
|
||||
Freddy <freddy@privacyguides.org> <freddy@decypher.pw>
|
||||
Freddy <freddy@privacyguides.org> <freddy@privacytools.io>
|
||||
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
|
||||
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
|
@ -24,8 +24,7 @@ ul-indent:
|
||||
indent: 4
|
||||
no-inline-html: false
|
||||
code-block-style: false
|
||||
no-hard-tabs:
|
||||
spaces-per-tab: 4
|
||||
no-hard-tabs: true
|
||||
emphasis-style:
|
||||
style: "asterisk"
|
||||
no-duplicate-header: false
|
||||
|
1
.python-version
Normal file
@ -0,0 +1 @@
|
||||
3.12
|
1
.vscode/.empty-schema.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
{}
|
31
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
|
||||
{
|
||||
"recommendations": [
|
||||
"EditorConfig.EditorConfig",
|
||||
"DavidAnson.vscode-markdownlint",
|
||||
"wholroyd.jinja",
|
||||
"mikestead.dotenv",
|
||||
"redhat.vscode-yaml",
|
||||
"ecmel.vscode-html-css",
|
||||
"yzhang.markdown-all-in-one"
|
||||
]
|
||||
}
|
51
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
// Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
|
||||
{
|
||||
"git.ignoreLimitWarning": true,
|
||||
"ltex.diagnosticSeverity": "hint",
|
||||
"editor.unicodeHighlight.ambiguousCharacters": true,
|
||||
"editor.unicodeHighlight.invisibleCharacters": true,
|
||||
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
||||
"[yaml]": {
|
||||
"editor.defaultFormatter": "redhat.vscode-yaml",
|
||||
"editor.quickSuggestions": {
|
||||
"other": true,
|
||||
"comments": false,
|
||||
"strings": true
|
||||
}
|
||||
},
|
||||
"yaml.schemas": {
|
||||
"https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json": ".markdownlint.yml",
|
||||
"https://json.schemastore.org/github-issue-config.json": ".github/ISSUE_TEMPLATE/config.yml",
|
||||
".vscode/.empty-schema.json": "config/*.yml"
|
||||
},
|
||||
"yaml.customTags": [
|
||||
"!ENV sequence",
|
||||
"!ENV",
|
||||
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format",
|
||||
"tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji",
|
||||
"tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg"
|
||||
],
|
||||
"editor.formatOnSave": true,
|
||||
"[github-actions-workflow]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
brew "pngquant"
|
||||
brew "crowdin"
|
@ -1 +0,0 @@
|
||||
brew "pngquant"
|
12
CITATION.cff
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
@ -32,11 +32,11 @@ authors:
|
||||
repository-code: "https://github.com/privacyguides/privacyguides.org"
|
||||
license:
|
||||
- MIT
|
||||
- CC-BY-ND-4.0
|
||||
- CC-BY-SA-4.0
|
||||
references:
|
||||
- authors:
|
||||
- family-names: Donath
|
||||
given-names: Martin
|
||||
- family-names: Donath
|
||||
given-names: Martin
|
||||
title: "mkdocs-material"
|
||||
type: software
|
||||
repository-code: "https://github.com/squidfunk/mkdocs-material"
|
||||
@ -81,7 +81,7 @@ preferred-citation:
|
||||
- alias: samsepi0l
|
||||
website: "https://github.com/d4rklynk"
|
||||
- name: Privacy Guides Contributors
|
||||
website: "https://github.com/privacyguides/privacyguides.org/graphs/contributors"
|
||||
website: "https://www.privacyguides.org/en/about/contributors/"
|
||||
url: "https://www.privacyguides.org"
|
||||
abstract: >-
|
||||
Privacy Guides is a socially motivated website that
|
||||
@ -95,4 +95,4 @@ preferred-citation:
|
||||
- encryption
|
||||
- website
|
||||
- markdown
|
||||
license: CC-BY-ND-4.0
|
||||
license: CC-BY-SA-4.0
|
||||
|
72
Dockerfile
Normal file
@ -0,0 +1,72 @@
|
||||
FROM python:3.12-alpine as base
|
||||
|
||||
LABEL org.opencontainers.image.source="https://github.com/privacyguides/privacyguides.org"
|
||||
|
||||
# Setup env
|
||||
ENV LANG C.UTF-8
|
||||
ENV LC_ALL C.UTF-8
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONFAULTHANDLER 1
|
||||
|
||||
FROM base AS python-deps
|
||||
|
||||
# Install pipenv and compilation dependencies
|
||||
RUN pip install pipenv
|
||||
RUN \
|
||||
apk upgrade --update-cache -a \
|
||||
&& \
|
||||
apk add --no-cache \
|
||||
gcc \
|
||||
libffi-dev \
|
||||
musl-dev
|
||||
|
||||
# Install python dependencies in /.venv
|
||||
COPY modules/mkdocs-material ./modules/mkdocs-material
|
||||
COPY Pipfile .
|
||||
COPY Pipfile.lock .
|
||||
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
|
||||
|
||||
FROM base AS runtime
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN \
|
||||
apk upgrade --update-cache -a \
|
||||
&& \
|
||||
apk add --no-cache \
|
||||
cairo \
|
||||
freetype-dev \
|
||||
git \
|
||||
git-fast-import \
|
||||
jpeg-dev \
|
||||
openssh \
|
||||
pngquant \
|
||||
tini \
|
||||
zlib-dev \
|
||||
libffi-dev \
|
||||
musl-dev \
|
||||
bash
|
||||
|
||||
# Copy virtual env from python-deps stage
|
||||
COPY --from=python-deps /.venv /.venv
|
||||
COPY --from=python-deps /modules/mkdocs-material /modules/mkdocs-material
|
||||
ENV PATH="/.venv/bin:$PATH"
|
||||
|
||||
# Create and switch to a new user
|
||||
RUN mkdir /site
|
||||
WORKDIR /site
|
||||
|
||||
COPY docs docs
|
||||
COPY theme theme
|
||||
COPY includes includes
|
||||
COPY *.yml .
|
||||
COPY .cache/plugin/social/fonts .cache/plugin/social/fonts
|
||||
COPY run.sh .
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
ENV MKDOCS_INHERIT mkdocs-production.yml
|
||||
|
||||
HEALTHCHECK NONE
|
||||
|
||||
ENTRYPOINT ["./run.sh"]
|
||||
CMD ["--cmd=mkdocs", "--insiders", "--cmd_flags=--dev-addr=0.0.0.0:8000"]
|
103
LICENSE
@ -1,4 +1,4 @@
|
||||
Attribution-NoDerivatives 4.0 International
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses.
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
@ -50,17 +50,16 @@ exhaustive, and do not form part of our licenses.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-NoDerivatives 4.0 International Public
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-NoDerivatives 4.0 International Public License ("Public
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
@ -81,7 +80,15 @@ Section 1 -- Definitions.
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Copyright and Similar Rights means copyright and/or similar rights
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
@ -89,29 +96,33 @@ Section 1 -- Definitions.
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
c. Effective Technological Measures means those measures that, in the
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
d. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
e. Licensed Material means the artistic or literary work, database,
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
f. Licensed Rights means the rights granted to You subject to the
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
g. Licensor means the individual(s) or entity(ies) granting rights
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
h. Share means to provide material to the public by any means or
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
@ -119,13 +130,13 @@ Section 1 -- Definitions.
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
i. Sui Generis Database Rights means rights other than copyright
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
j. You means the individual or entity exercising the Licensed Rights
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
@ -141,7 +152,7 @@ Section 2 -- Scope.
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce and reproduce, but not Share, Adapted Material.
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
@ -171,7 +182,13 @@ Section 2 -- Scope.
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
@ -213,7 +230,8 @@ following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material, You must:
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
@ -241,9 +259,6 @@ following conditions.
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
For the avoidance of doubt, You do not have permission under
|
||||
this Public License to Share Adapted Material.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
@ -255,6 +270,25 @@ following conditions.
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
@ -263,13 +297,13 @@ apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database, provided You do not Share
|
||||
Adapted Material;
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
@ -370,23 +404,24 @@ Section 8 -- Interpretation.
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the “Licensor.” The text of the Creative Commons public
|
||||
licenses is dedicated to the public domain under the CC0 Public Domain
|
||||
Dedication. Except for the limited purpose of indicating that material
|
||||
is shared under a Creative Commons public license or as otherwise
|
||||
permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
@ -1,7 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 - 2023 Jonah Aragon <jonah@triplebit.net>
|
||||
Copyright (c) 2020 - 2023 Privacy Guides contributors
|
||||
Copyright (c) 2019 - 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
Copyright (c) 2020 - 2024 Privacy Guides contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
13
Pipfile
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
@ -24,15 +24,14 @@ verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
mkdocs-material = {path = "./modules/mkdocs-material"}
|
||||
mkdocs-material = {extras = ["imaging"], path = "./modules/mkdocs-material"}
|
||||
mkdocs-git-revision-date-localized-plugin = "~=1.2"
|
||||
mkdocs-git-committers-plugin-2 = "~=1.1"
|
||||
mkdocs-macros-plugin = "~=0.7"
|
||||
pillow = "~=10.0"
|
||||
cairosvg = "~=2.7"
|
||||
mkdocs-git-authors-plugin = "~=0.8"
|
||||
mkdocs-macros-plugin = "~=1.0"
|
||||
jieba = "~=0.42"
|
||||
|
||||
[dev-packages]
|
||||
scour = "~=0.38"
|
||||
|
||||
[requires]
|
||||
python_version = "3.8"
|
||||
python_version = "3.12"
|
||||
|
1019
Pipfile.lock
generated
603
README.md
@ -1,82 +1,108 @@
|
||||
<!-- markdownlint-disable MD041 -->
|
||||
<!-- markdownlint-disable MD041 MD045 -->
|
||||
<div align="center">
|
||||
<a href="https://www.privacyguides.org/">
|
||||
<a href="https://www.privacyguides.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo-dark.svg">
|
||||
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo-dark.svg">
|
||||
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo.svg">
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
<p><em>Your central privacy and security resource to protect yourself online.</em></p>
|
||||
|
||||
<p><a href="https://mastodon.neat.computer/@privacyguides">
|
||||
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow%20%40privacyguides%40neat.computer&style=social">
|
||||
</a>
|
||||
<a href="https://twitter.com/privacy_guides">
|
||||
<img src="https://img.shields.io/twitter/follow/privacy_guides?style=social">
|
||||
</a>
|
||||
<a href="https://discuss.privacyguides.net/">
|
||||
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social">
|
||||
</a>
|
||||
<p><a href="https://discuss.privacyguides.net">
|
||||
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social">
|
||||
</a></p>
|
||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
||||
<a href="https://mastodon.neat.computer/@privacyguides">
|
||||
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow%20%40privacyguides%40neat.computer&style=social"></a></p>
|
||||
|
||||
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org">
|
||||
</a>
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+is%3Aclosed">
|
||||
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org">
|
||||
</a>
|
||||
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/graphs/contributors">
|
||||
<img src="https://img.shields.io/github/commit-activity/m/privacyguides/privacyguides.org"></a>
|
||||
<a href="#contributors">
|
||||
<img src="https://img.shields.io/github/all-contributors/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||
<img src="https://img.shields.io/github/release-date/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||
<img src="https://img.shields.io/github/commits-since/privacyguides/privacyguides.org/latest"></a>
|
||||
<a href="https://crowdin.com/project/privacyguides">
|
||||
<img src="https://badges.crowdin.net/privacyguides/localized.svg">
|
||||
</a>
|
||||
<img src="https://badges.crowdin.net/privacyguides/localized.svg"></a>
|
||||
<a href="https://opencollective.com/privacyguides">
|
||||
<img src="https://img.shields.io/opencollective/all/privacyguides">
|
||||
</a></p>
|
||||
<img src="https://img.shields.io/opencollective/all/privacyguides"></a>
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/">
|
||||
<img src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?logo=MaterialForMkDocs&logoColor=white"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/actions/workflows/publish-release.yml">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/privacyguides/privacyguides.org/publish-release.yml?label=release"></a></p>
|
||||
</div>
|
||||
|
||||
## About
|
||||
|
||||
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. Our mission is to inform the public about the value of digital privacy, and global government initiatives which aim to monitor your online activity. We are a non-profit collective operated entirely by volunteer team members and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||
|
||||
The current list of team members can be found [here](https://www.privacyguides.org/about/#our-team). Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) have made contributions to the project, and you can too!
|
||||
The current list of team members can be found [here](https://www.privacyguides.org/about/#our-team). Additionally, [many people](#contributors) have made contributions to the project, and you can too!
|
||||
|
||||
*Featured on: [Tweakers](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html), [The New York Times](https://www.nytimes.com/wirecutter/guides/online-security-social-media-privacy/), and [Wired](https://www.wired.com/story/firefox-mozilla-2022/)*
|
||||
*Featured on: [Tweakers](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html), [The New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy), and [Wired](https://wired.com/story/firefox-mozilla-2022)*
|
||||
|
||||
## Contributing
|
||||
|
||||
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net/)
|
||||
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net)
|
||||
- 💖 [Sponsor the project](https://github.com/sponsors/privacyguides)
|
||||
- 🈴 [Help translate the site](https://crowdin.com/project/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
|
||||
- 📝 Edit the site, everything's accessible in this repo
|
||||
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
|
||||
- View the list of [approved topics waiting for a PR](https://discuss.privacyguides.net/tag/approved)
|
||||
- Read some writing tips in our [style guide](https://www.privacyguides.org/en/meta/writing-style/)
|
||||
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
|
||||
- View the list of [approved topics waiting for a PR](https://discuss.privacyguides.net/tag/approved)
|
||||
- Read some writing tips in our [style guide](https://www.privacyguides.org/en/meta/writing-style)
|
||||
|
||||
All contributors to the site are listed [here](https://github.com/privacyguides/privacyguides.org/graphs/contributors). If you make a substantial (i.e. copyright eligible) contribution to the project and would like to be formally credited, you are welcome to include your information in the appropriate `authors` section in [`CITATION.cff`](/CITATION.cff) as well, just submit a PR or ask @jonaharagon to make the change.
|
||||
All contributors to the site are listed [here](#contributors). If you have contributed to the website or project, please [add yourself](https://github.com/privacyguides/privacyguides.org/issues/2524) to the list or ask @jonaharagon to make the change.
|
||||
|
||||
## Mirrors
|
||||
|
||||
- **GitHub Pages:** [privacyguides.github.io/privacyguides.org](https://privacyguides.github.io/privacyguides.org/en/)
|
||||
- **Netlify (AWS):** [illustrious-bavarois-56cf30.netlify.app](https://illustrious-bavarois-56cf30.netlify.app/en/)
|
||||
- **BunnyCDN:** [privacyguides-org-production.b-cdn.net](https://privacyguides-org-production.b-cdn.net/en/)
|
||||
- **Hetzner:** [direct.privacyguides.org](https://direct.privacyguides.org/en/) (discouraged!)
|
||||
|
||||
### Alternative Networks
|
||||
|
||||
> [!NOTE]
|
||||
> Most hidden service providers are not very extensively used or tested, [which is why we strongly recommend Tor](https://www.privacyguides.org/en/tor/). Using other networks could be more likely to endanger your anonymity, so make sure you know what you're doing.
|
||||
|
||||
- **Tor/onion:** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion)
|
||||
|
||||
- **IPFS:** `/ipns/ipfs.privacyguides.org` (**not** anonymous)
|
||||
- Please help us out by pinning a copy: [Learn more](https://github.com/privacyguides/webserver/blob/main/ipfs/README.md)
|
||||
- via Cloudflare: [cloudflare-ipfs.com/ipns/ipfs.privacyguides.org](https://cloudflare-ipfs.com/ipns/ipfs.privacyguides.org/en/)
|
||||
- via 4everland: [ipfs-privacyguides-org.ipns.4everland.io](https://ipfs-privacyguides-org.ipns.4everland.io/)
|
||||
- via [@jonaharagon](https://github.com/jonaharagon): [ipfs.jonaharagon.net/ipns/ipfs.privacyguides.org](https://ipfs.jonaharagon.net/ipns/ipfs.privacyguides.org/en/)
|
||||
- via [peer](https://docs.ipfs.tech/how-to/peering-with-content-providers/): `/dnsaddr/node-1.ipfs.jonaharagon.net/p2p/12D3KooWMwqzuApCKxYfo66zq5BrTjCoz9naJ1rrMEBCnwuGGqWB`
|
||||
|
||||
- **I2P:** [privacyguides.i2p](http://privacyguides.i2p/?i2paddresshelper=fvbkmooriuqgssrjvbxu7nrwms5zyhf34r3uuppoakwwsm7ysv6q.b32.i2p)
|
||||
|
||||
- **Yggdrasil:** [http://[200:f3a6:4922:e067:770d:ac57:fcb1:8dbf]](http://[200:f3a6:4922:e067:770d:ac57:fcb1:8dbf]/en/) (**not** anonymous)
|
||||
- via public peer: `tcp://5.161.245.8:45454`
|
||||
|
||||
### Git Mirrors
|
||||
|
||||
[](https://github.com/privacyguides/privacyguides.org)
|
||||
[](https://code.privacyguides.dev/privacyguides/privacyguides.org)
|
||||
[](https://gitlab.com/privacyguides/privacyguides.org)
|
||||
[](https://codeberg.org/privacyguides/privacyguides.org)
|
||||
[](https://git.sr.ht/~jonaharagon/privacyguides.org)
|
||||
|
||||
**Hidden service (Tor/onion):** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/)
|
||||
[](https://code.privacyguides.dev/privacyguides/privacyguides.org)
|
||||
[](https://git.jonaharagon.net/privacyguides/privacyguides.org)
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2019 - 2023 [Privacy Guides contributors](https://github.com/privacyguides/privacyguides.org/graphs/contributors).
|
||||
Copyright © 2019 - 2024 [Privacy Guides contributors](#contributors).
|
||||
|
||||
Privacy Guides content is licensed under the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
|
||||
Privacy Guides content is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
|
||||
|
||||
Generally speaking, **content** can be found in the [`/docs`](/docs), [`/theme/assets/img`](/theme/assets/img), [`/includes`](/includes), and [`/i18n`](/i18n) folders; and **source code** and configuration files can be found in the [`/config`](/config) and [`/theme`](/theme) folders, and in the root of this repository. Any source code snippets contained within documentation files are [MIT Licensed](/LICENSE-CODE). Please contact us if you require clarification on any of these terms.
|
||||
Generally speaking, **content** can be found in the [`/docs`](/docs), [`/theme/assets/img`](/theme/assets/img) and [`/includes`](/includes) folders; and **source code** and configuration files can be found in the [`/config`](/config) and [`/theme`](/theme) folders, and in the root of this repository. Any source code snippets contained within documentation files are [MIT Licensed](/LICENSE-CODE). Please contact us if you require clarification on any of these terms.
|
||||
|
||||
These licenses do not apply to any work where another license is otherwise noted.
|
||||
|
||||
**Logos** in the [`/theme/assets/img`](/theme/assets/img) folder may not be original works of Privacy Guides and therefore cannot be (re)licensed by us. We believe that these logos obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://www.copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
**Logos** in the [`/theme/assets/img`](/theme/assets/img) folder may not be original works of Privacy Guides and therefore cannot be (re)licensed by us. We believe that these logos obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
|
||||
You may comply with our license terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides branding in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||
|
||||
@ -84,30 +110,39 @@ When you contribute to this repository you are doing so under the above licenses
|
||||
|
||||
## Developing
|
||||
|
||||
[](https://codespaces.new/privacyguides/privacyguides.org?devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
Committing to this repository requires [signing your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) (`git config commit.gpgsign true`) unless you are making edits via the GitHub.com text editor interface. As of August 2022 the preferred signing method is [SSH commit signatures](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#ssh-commit-signature-verification), but GPG signing is also acceptable. You should add your signing key to your GitHub profile.
|
||||
|
||||
This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders/) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository. Running this website locally without access to insiders is unsupported. If you are submitting a PR, please ensure the automatic preview generated for your PR looks correct, as that site will be built with the production insiders build.
|
||||
### With `mkdocs-material`
|
||||
|
||||
1. Install required packages: `pip install mkdocs-material`
|
||||
2. Run a local preview of the English site: `./run.sh --cmd=mkdocs`
|
||||
|
||||
### With `mkdocs-material-insiders`
|
||||
|
||||
This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository.
|
||||
|
||||
**Team members** should clone the repository with `mkdocs-material-insiders` directly. This method is identical to production:
|
||||
|
||||
1. Clone this repository and submodules: `git clone --recurse-submodules https://github.com/privacyguides/privacyguides.org.git`
|
||||
2. Enable SSH commit verification with our local [`.allowed_signers`](/.allowed_signers) file: `git config gpg.ssh.allowedSignersFile .allowed_signers`
|
||||
3. Install Python **3.8**, this is the only version supported by Netlify
|
||||
3. Install Python **3.12**.
|
||||
4. Install **pipenv**: `pip install pipenv`
|
||||
5. Install dependencies: `pipenv install --dev` (install [Pillow and CairoSVG](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#dependencies) as well to generate social cards)
|
||||
6. Serve the site locally: `pipenv run mkdocs serve --config-file config/mkdocs.en.yml` (set `CARDS=true` to generate social cards)
|
||||
6. Serve the site locally: `./run.sh --insiders` (set `CARDS=true` to generate social cards)
|
||||
- The site will be available at `http://localhost:8000`
|
||||
- You can build the site locally with `pipenv run mkdocs build --config-file config/mkdocs.en.yml`
|
||||
- You can build the site locally with `./run.sh --insiders --build`
|
||||
- This version of the site should be identical to the live, production version
|
||||
|
||||
If you commit to `main` with commits signed with your SSH key, you should add your SSH key to [`.allowed_signers`](/.allowed_signers) in this repo.
|
||||
|
||||
### Local Translated Site Builds
|
||||
|
||||
1. Install the [Crowdin CLI Tool](https://developer.crowdin.com/cli-tool/) (`brew install crowdin`)
|
||||
1. Install the [Crowdin CLI Tool](https://developer.crowdin.com/cli-tool) (`brew install crowdin`)
|
||||
2. Set the `CROWDIN_PERSONAL_TOKEN` environment variable to your Crowdin personal access token
|
||||
3. Run `crowdin download` in the root of this repo
|
||||
4. Serve the site locally: `pipenv run mkdocs serve --config-file config/mkdocs.fr.yml` (replacing the config file with any language in [/config](/config))
|
||||
4. Serve the site locally: `./run.sh --insiders --lang=fr` (replacing fr with the appropriate language in [/config](/config))
|
||||
|
||||
Translations downloaded from Crowdin are [.gitignore](/.gitignore)'d, so any local changes to the translated site cannot be committed to this repo. Actual modifications need to be made on Crowdin. As an alternative to steps 1-3, you can copy the folders from [privacyguides/i18n](https://github.com/privacyguides/i18n) to the root of this repo to obtain the translated files.
|
||||
|
||||
@ -115,10 +150,482 @@ Translations downloaded from Crowdin are [.gitignore](/.gitignore)'d, so any loc
|
||||
|
||||
It is required to create a GitHub release to publish the current site to privacyguides.org. The current `main` branch can be previewed at [https://main.staging.privacyguides.dev](https://main.staging.privacyguides.dev) prior to release.
|
||||
|
||||
1. Create a new tag: `git tag -s v3.X.X -m 'Some message'`
|
||||
- [View existing tags](https://github.com/privacyguides/privacyguides.org/tags)
|
||||
- Tag [numbering](https://semver.org/): Increment the MINOR (2nd) number when making significant changes (adding/deleting pages, etc.), increment the PATCH (3rd) number when making minor changes (typos, bug fixes). Probably leave the MAJOR number at 3 until a massive revamp (v1 -> v2 was the Jekyll to MkDocs transition, v2 -> v3 was the introduction of translations).
|
||||
- Consider enabling GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
|
||||
1. Create a new tag: `git tag -s YYYY.MM.DD -m 'Some message'`
|
||||
- Tag numbering: `YYYY.MM.DD` - if two+ releases are published on the same day, append short commit sha to next release, e.g. `YYYY.MM.DD-6aa14e8`
|
||||
- Enable GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
|
||||
2. Push the tag to GitHub: `git push --tags`
|
||||
3. A GitHub Release will be automatically created and deployed to the live site.
|
||||
- You may wish to manually check or edit the release changelog/title after it is published for accuracy.
|
||||
|
||||
## Contributors
|
||||
|
||||
Privacy Guides wouldn't be possible without these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="#blog-jonaharagon" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️️️️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://polarbear.army/"><img src="https://avatars.githubusercontent.com/u/48640805?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Nathan Gray</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dngray" title="Documentation">📖</a> <a href="#mentoring-dngray" title="Mentoring">🧑🏫</a> <a href="#projectManagement-dngray" title="Project Management">📆</a> <a href="#question-dngray" title="Answering Questions">💬</a> <a href="#research-dngray" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adngray" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Adngray" title="Bug reports">🐛</a> <a href="#maintenance-dngray" title="Maintenance">🚧</a> <a href="#ideas-dngray" title="Ideas, Planning, & Feedback">🤔</a> <a href="#security-dngray" title="Security">🛡️</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="#blog-freddy-m" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-blacklight447" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook9"><img src="https://avatars.githubusercontent.com/u/47239784?v=4" width="100px;" loading=lazy /><br /><sub><b>hook9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook9" title="Documentation">📖</a> <a href="#research-hook9" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ahook9" title="Reviewed Pull Requests">👀</a> <a href="#ideas-hook9" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://aminda.eu/"><img src="https://avatars.githubusercontent.com/u/831184?v=4" width="100px;" loading=lazy /><br /><sub><b>Aminda Suomalainen ⚧</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Mikaela" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3AMikaela" title="Reviewed Pull Requests">👀</a> <a href="#ideas-Mikaela" title="Ideas, Planning, & Feedback">🤔</a> <a href="#research-Mikaela" title="Research">🔬</a> <a href="#a11y-Mikaela" title="Accessibility">️️️️♿️</a> <a href="#question-Mikaela" title="Answering Questions">💬</a> <a href="#projectManagement-Mikaela" title="Project Management">📆</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nitrohorse.com/"><img src="https://avatars.githubusercontent.com/u/1514352?v=4" width="100px;" loading=lazy /><br /><sub><b>nitrohorse</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nitrohorse" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Anitrohorse" title="Reviewed Pull Requests">👀</a> <a href="#ideas-nitrohorse" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-nitrohorse" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://dawidpotocki.com/"><img src="https://avatars.githubusercontent.com/u/38681822?v=4" width="100px;" loading=lazy /><br /><sub><b>Dawid Potocki</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dawidpotocki" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adawidpotocki" title="Reviewed Pull Requests">👀</a> <a href="#ideas-dawidpotocki" title="Ideas, Planning, & Feedback">🤔</a> <a href="#design-dawidpotocki" title="Design">🎨</a> <a href="#research-dawidpotocki" title="Research">🔬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://realguyman.xyz/"><img src="https://avatars.githubusercontent.com/u/93285774?v=4" width="100px;" loading=lazy /><br /><sub><b>Dale E. Wingard, Jr.</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=realguyman" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arealguyman" title="Reviewed Pull Requests">👀</a> <a href="#ideas-realguyman" title="Ideas, Planning, & Feedback">🤔</a> <a href="#research-realguyman" title="Research">🔬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kewde"><img src="https://avatars.githubusercontent.com/u/13770485?v=4" width="100px;" loading=lazy /><br /><sub><b>Kewde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kewde" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=kewde" title="Code">💻</a> <a href="#research-kewde" title="Research">🔬</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://vince.sh/"><img src="https://avatars.githubusercontent.com/u/13933712?v=4" width="100px;" loading=lazy /><br /><sub><b>Vince</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Vincevrp" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=Vincevrp" title="Code">💻</a> <a href="#research-Vincevrp" title="Research">🔬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/shifterovich2"><img src="https://avatars.githubusercontent.com/u/31760859?v=4" width="100px;" loading=lazy /><br /><sub><b>shifterovich2</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=shifterovich2" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=shifterovich2" title="Code">💻</a> <a href="#research-shifterovich2" title="Research">🔬</a></td>
|
||||
<td align="center" valign="top" width="20%"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>mfwmyfacewhen</b></sub><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mfwmyfacewhen" title="Documentation">📖</a> <a href="#ideas-mfwmyfacewhen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amfwmyfacewhen" title="Reviewed Pull Requests">👀</a> <a href="#research-mfwmyfacewhen" title="Research">🔬</a> <a href="#question-mfwmyfacewhen" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tommytran.io/"><img src="https://avatars.githubusercontent.com/u/57488583?v=4" width="100px;" loading=lazy /><br /><sub><b>Tommy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TommyTran732" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3ATommyTran732" title="Reviewed Pull Requests">👀</a> <a href="#research-TommyTran732" title="Research">🔬</a> <a href="#question-TommyTran732" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaitebay.org/"><img src="https://avatars.githubusercontent.com/u/95620167?v=4" width="100px;" loading=lazy /><br /><sub><b>Kai Tebay</b></sub></a><br /><a href="#ideas-KaiTebay" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Documentation">📖</a> <a href="#research-KaiTebay" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="#blog-matchboxbananasynergy" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/actions"><img src="https://avatars.githubusercontent.com/u/44036562?v=4" width="100px;" loading=lazy /><br /><sub><b>GitHub Actions</b></sub></a><br /><a href="#infra-actions" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.netlify.com/"><img src="https://avatars.githubusercontent.com/u/7892489?v=4" width="100px;" loading=lazy /><br /><sub><b>Netlify</b></sub></a><br /><a href="#infra-netlify" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/security"><img src="https://avatars.githubusercontent.com/u/27347476?v=4" width="100px;" loading=lazy /><br /><sub><b>Dependabot</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dependabot" title="Code">💻</a> <a href="#infra-dependabot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://console.hetzner.cloud/"><img src="https://avatars.githubusercontent.com/u/22154697?v=4" width="100px;" loading=lazy /><br /><sub><b>Hetzner Cloud</b></sub></a><br /><a href="#infra-hetznercloud" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cloudflare.com/"><img src="https://avatars.githubusercontent.com/u/314135?v=4" width="100px;" loading=lazy /><br /><sub><b>Cloudflare</b></sub></a><br /><a href="#infra-cloudflare" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://opencollective.com/"><img src="https://avatars.githubusercontent.com/u/13403593?v=4" width="100px;" loading=lazy /><br /><sub><b>Open Collective</b></sub></a><br /><a href="#business-opencollective" title="Business development">💼</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://safing.io/"><img src="https://avatars.githubusercontent.com/u/20678162?v=4" width="100px;" loading=lazy /><br /><sub><b>Safing</b></sub></a><br /><a href="#financial-safing" title="Financial">💵</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="#blog-danarel" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://techlore.tech/"><img src="https://avatars.githubusercontent.com/u/68134985?v=4" width="100px;" loading=lazy /><br /><sub><b>Techlore</b></sub></a><br /><a href="#financial-techlore" title="Financial">💵</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/elitejake"><img src="https://avatars.githubusercontent.com/u/74049394?v=4" width="100px;" loading=lazy /><br /><sub><b>elitejake</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=elitejake" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://simpleprivacy.fr/"><img src="https://avatars.githubusercontent.com/u/74207682?v=4" width="100px;" loading=lazy /><br /><sub><b>samsepi0l</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=d4rklynk" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rollsicecream"><img src="https://avatars.githubusercontent.com/u/153316540?v=4" width="100px;" loading=lazy /><br /><sub><b>rollsicecream</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rollsicecream" title="Documentation">📖</a> <a href="#question-rollsicecream" title="Answering Questions">💬</a> <a href="#translation-rollsicecream" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arollsicecream" title="Reviewed Pull Requests">👀</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://henryfisher.tech/"><img src="https://avatars.githubusercontent.com/u/64515030?v=4" width="100px;" loading=lazy /><br /><sub><b>Henry Fisher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=henry-fisher" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Strappazzon"><img src="https://avatars.githubusercontent.com/u/19752093?v=4" width="100px;" loading=lazy /><br /><sub><b>Alberto Strappazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Strappazzon" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://victorhckinthefreeworld.com/"><img src="https://avatars.githubusercontent.com/u/1514206?v=4" width="100px;" loading=lazy /><br /><sub><b>Victorhck</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=victorhck" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/taivlam"><img src="https://avatars.githubusercontent.com/u/47955724?v=4" width="100px;" loading=lazy /><br /><sub><b>Tai Lam</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=taivlam" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NinebitX"><img src="https://avatars.githubusercontent.com/u/26626722?v=4" width="100px;" loading=lazy /><br /><sub><b>NinebitX</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NinebitX" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://antukh.com/"><img src="https://avatars.githubusercontent.com/u/10441512?v=4" width="100px;" loading=lazy /><br /><sub><b>Alexander Antukh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=c0rdis" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gusted.xyz/"><img src="https://avatars.githubusercontent.com/u/25481501?v=4" width="100px;" loading=lazy /><br /><sub><b>Gusted</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Gusted" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/redoomed1"><img src="https://avatars.githubusercontent.com/u/161974310?v=4" width="100px;" loading=lazy /><br /><sub><b>redoomed1</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Aredoomed1" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=redoomed1" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Offpics"><img src="https://avatars.githubusercontent.com/u/20701635?v=4" width="100px;" loading=lazy /><br /><sub><b>Offpics</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Offpics" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kimg45"><img src="https://avatars.githubusercontent.com/u/138676274?v=4" width="100px;" loading=lazy /><br /><sub><b>kimg45</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kimg45" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/djoate"><img src="https://avatars.githubusercontent.com/u/56777051?v=4" width="100px;" loading=lazy /><br /><sub><b>djoate</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=djoate" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/afighttilldeath"><img src="https://avatars.githubusercontent.com/u/29437578?v=4" width="100px;" loading=lazy /><br /><sub><b>afighttilldeath</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=afighttilldeath" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/paulverbeke"><img src="https://avatars.githubusercontent.com/u/6412153?v=4" width="100px;" loading=lazy /><br /><sub><b>Paul Verbeke</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=paulverbeke" title="Documentation">📖</a> <a href="#translation-paulverbeke" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Apaulverbeke" title="Bug reports">🐛</a> <a href="#mentoring-paulverbeke" title="Mentoring">🧑🏫</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mitchellcash.com/"><img src="https://avatars.githubusercontent.com/u/8009243?v=4" width="100px;" loading=lazy /><br /><sub><b>Mitchell Cash</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=MitchellCash" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NeverDucky"><img src="https://avatars.githubusercontent.com/u/32468662?v=4" width="100px;" loading=lazy /><br /><sub><b>NeverDucky</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NeverDucky" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/efb4f5ff-1298-471a-8973-3d47447115dc"><img src="https://avatars.githubusercontent.com/u/73130443?v=4" width="100px;" loading=lazy /><br /><sub><b>efb4f5ff-1298-471a-8973-3d47447115dc</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=efb4f5ff-1298-471a-8973-3d47447115dc" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.giga.uliege.be/cms/c_4113283/en/giga-directory?uid=u225986"><img src="https://avatars.githubusercontent.com/u/1118942?v=4" width="100px;" loading=lazy /><br /><sub><b>Stephen Karl Larroque</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lrq3000" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/0rdinant"><img src="https://avatars.githubusercontent.com/u/76827384?v=4" width="100px;" loading=lazy /><br /><sub><b>0rdinant</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=0rdinant" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Zenithium"><img src="https://avatars.githubusercontent.com/u/48525551?v=4" width="100px;" loading=lazy /><br /><sub><b>Zenithium</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Zenithium" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.ravellaw.com/"><img src="https://avatars.githubusercontent.com/u/860471?v=4" width="100px;" loading=lazy /><br /><sub><b>Jordan Gwyn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=emanresusername" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gururaja.in/"><img src="https://avatars.githubusercontent.com/u/70903440?v=4" width="100px;" loading=lazy /><br /><sub><b>Guru</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Guru-25" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/datoshkr"><img src="https://avatars.githubusercontent.com/u/79659024?v=4" width="100px;" loading=lazy /><br /><sub><b>datoshkr</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=datoshkr" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Kcchouette"><img src="https://avatars.githubusercontent.com/u/3000936?v=4" width="100px;" loading=lazy /><br /><sub><b>Kcchouette</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Kcchouette" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jacobneplokh.com/"><img src="https://avatars.githubusercontent.com/u/46184597?v=4" width="100px;" loading=lazy /><br /><sub><b>Jacob Neplokh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jneplokh" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/razac-elda"><img src="https://avatars.githubusercontent.com/u/30749146?v=4" width="100px;" loading=lazy /><br /><sub><b>Leonardo Mazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=razac-elda" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/opheron"><img src="https://avatars.githubusercontent.com/u/7110152?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrew Chong</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=opheron" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/woctezuma"><img src="https://avatars.githubusercontent.com/u/570669?v=4" width="100px;" loading=lazy /><br /><sub><b>Wok</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=woctezuma" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://itsnothing.net/"><img src="https://avatars.githubusercontent.com/u/105246487?v=4" width="100px;" loading=lazy /><br /><sub><b>nopeitsnothing</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nopeitsnothing" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lynn.one/"><img src="https://avatars.githubusercontent.com/u/63118982?v=4" width="100px;" loading=lazy /><br /><sub><b>Lynn Stephenson</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lynn-stephenson" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://cory.solovewi.cz/"><img src="https://avatars.githubusercontent.com/u/19578733?v=4" width="100px;" loading=lazy /><br /><sub><b>Cory Solovewicz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=corysolovewicz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://zerolimits.dev/"><img src="https://avatars.githubusercontent.com/u/103803129?v=4" width="100px;" loading=lazy /><br /><sub><b>noClaps</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=noClaps" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Perelandra0x309"><img src="https://avatars.githubusercontent.com/u/22124003?v=4" width="100px;" loading=lazy /><br /><sub><b>Brian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Perelandra0x309" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/SkewedZeppelin"><img src="https://avatars.githubusercontent.com/u/8296104?v=4" width="100px;" loading=lazy /><br /><sub><b>SkewedZeppelin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SkewedZeppelin" title="Documentation">📖</a> <a href="#question-SkewedZeppelin" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Arcadius3D"><img src="https://avatars.githubusercontent.com/u/165268515?v=4" width="100px;" loading=lazy /><br /><sub><b>Arcadius3D</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Arcadius3D" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/vpnarea"><img src="https://avatars.githubusercontent.com/u/17130812?v=4" width="100px;" loading=lazy /><br /><sub><b>vpnarea</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=vpnarea" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://namazso.eu/"><img src="https://avatars.githubusercontent.com/u/8676443?v=4" width="100px;" loading=lazy /><br /><sub><b>namazso</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=namazso" title="Documentation">📖</a> <a href="#question-namazso" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/cYDN48"><img src="https://avatars.githubusercontent.com/u/96789053?v=4" width="100px;" loading=lazy /><br /><sub><b>cYDN48</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=cYDN48" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gjhklfdsa"><img src="https://avatars.githubusercontent.com/u/45323745?v=4" width="100px;" loading=lazy /><br /><sub><b>gjhklfdsa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gjhklfdsa" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://fxgn.dev/"><img src="https://avatars.githubusercontent.com/u/66178592?v=4" width="100px;" loading=lazy /><br /><sub><b>Pavel Zolotarevskiy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=flexagoon" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.mediawiki.org/wiki/User:Quiddity"><img src="https://avatars.githubusercontent.com/u/6633202?v=4" width="100px;" loading=lazy /><br /><sub><b>quiddity-wp</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=quiddity-wp" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nikhiljha.com/"><img src="https://avatars.githubusercontent.com/u/2773700?v=4" width="100px;" loading=lazy /><br /><sub><b>Nikhil Jha</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nikhiljha" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/subatomic-honda-civic"><img src="https://avatars.githubusercontent.com/u/105336176?v=4" width="100px;" loading=lazy /><br /><sub><b>Subatomic Honda Civic</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=subatomic-honda-civic" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ticklemyIP"><img src="https://avatars.githubusercontent.com/u/126688461?v=4" width="100px;" loading=lazy /><br /><sub><b>ticklemyIP</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ticklemyIP" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jermanuts"><img src="https://avatars.githubusercontent.com/u/109705802?v=4" width="100px;" loading=lazy /><br /><sub><b>jermanuts</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jermanuts" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/conorohiggins"><img src="https://avatars.githubusercontent.com/u/16993660?v=4" width="100px;" loading=lazy /><br /><sub><b>conorohiggins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=conorohiggins" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TechFanTheo"><img src="https://avatars.githubusercontent.com/u/78900789?v=4" width="100px;" loading=lazy /><br /><sub><b>TechFanTheo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TechFanTheo" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r-j-taylor"><img src="https://avatars.githubusercontent.com/u/35360143?v=4" width="100px;" loading=lazy /><br /><sub><b>Ryan Taylor</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=r-j-taylor" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Positron832"><img src="https://avatars.githubusercontent.com/u/72881516?v=4" width="100px;" loading=lazy /><br /><sub><b>Positron832</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Positron832" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/JustLuckNoSkill"><img src="https://avatars.githubusercontent.com/u/114787000?v=4" width="100px;" loading=lazy /><br /><sub><b>JustLuckNoSkill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=JustLuckNoSkill" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Akyshnik"><img src="https://avatars.githubusercontent.com/u/23380632?v=4" width="100px;" loading=lazy /><br /><sub><b>Arkadiy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Akyshnik" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jackmchou"><img src="https://avatars.githubusercontent.com/u/56708167?v=4" width="100px;" loading=lazy /><br /><sub><b>Jack Chou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jackmchou" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://ave.zone/"><img src="https://avatars.githubusercontent.com/u/6755762?v=4" width="100px;" loading=lazy /><br /><sub><b>ave</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=aveao" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Booteille"><img src="https://avatars.githubusercontent.com/u/2203721?v=4" width="100px;" loading=lazy /><br /><sub><b>Boo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Booteille" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/IDKwhattoputhere"><img src="https://avatars.githubusercontent.com/u/39969358?v=4" width="100px;" loading=lazy /><br /><sub><b>IDKwhattoputhere</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=IDKwhattoputhere" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/idk-r-n"><img src="https://avatars.githubusercontent.com/u/111711873?v=4" width="100px;" loading=lazy /><br /><sub><b>idkrn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=idk-r-n" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ggg27"><img src="https://avatars.githubusercontent.com/u/52841257?v=4" width="100px;" loading=lazy /><br /><sub><b>ggg27</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ggg27" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/WalterKlosse"><img src="https://avatars.githubusercontent.com/u/27290800?v=4" width="100px;" loading=lazy /><br /><sub><b>WalterKlosse</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=WalterKlosse" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://stosb.com/"><img src="https://avatars.githubusercontent.com/u/108670?v=4" width="100px;" loading=lazy /><br /><sub><b>Tom Hacohen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tasn" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.linkedin.com/in/paulfeuvraux/"><img src="https://avatars.githubusercontent.com/u/13090164?v=4" width="100px;" loading=lazy /><br /><sub><b>Paul Feuvraux</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Super-Baleine" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://sbennett1990.github.io/Resume/"><img src="https://avatars.githubusercontent.com/u/6392550?v=4" width="100px;" loading=lazy /><br /><sub><b>Scott Bennett</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sbennett1990" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://blog.191.161.xyz/"><img src="https://avatars.githubusercontent.com/u/1544371?v=4" width="100px;" loading=lazy /><br /><sub><b>Federico Ariel Castagnini</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=facastagnini" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jslawler-gh"><img src="https://avatars.githubusercontent.com/u/149243371?v=4" width="100px;" loading=lazy /><br /><sub><b>jslawler-gh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jslawler-gh" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/spaceoden"><img src="https://avatars.githubusercontent.com/u/26421479?v=4" width="100px;" loading=lazy /><br /><sub><b>spaceoden</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=spaceoden" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xe-3"><img src="https://avatars.githubusercontent.com/u/137224605?v=4" width="100px;" loading=lazy /><br /><sub><b>xe3</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xe-3" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/anoadragon453"><img src="https://avatars.githubusercontent.com/u/1342360?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrew Morgan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=anoadragon453" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://rossviewef.org/"><img src="https://avatars.githubusercontent.com/u/35670796?v=4" width="100px;" loading=lazy /><br /><sub><b>Caleb King</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=EvasivePangolin" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Eduardo06sp"><img src="https://avatars.githubusercontent.com/u/34868791?v=4" width="100px;" loading=lazy /><br /><sub><b>Eduardo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Eduardo06sp" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NafeezJS"><img src="https://avatars.githubusercontent.com/u/17627305?v=4" width="100px;" loading=lazy /><br /><sub><b>NafeezJS</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NafeezJS" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Sloofy"><img src="https://avatars.githubusercontent.com/u/18003771?v=4" width="100px;" loading=lazy /><br /><sub><b>Sloofy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Sloofy" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://sts10.github.io/"><img src="https://avatars.githubusercontent.com/u/4871664?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Schlinkert</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sts10" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gaborluk"><img src="https://avatars.githubusercontent.com/u/6388299?v=4" width="100px;" loading=lazy /><br /><sub><b>Gabor Luk</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gaborluk" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://deiaspie.github.io/"><img src="https://avatars.githubusercontent.com/u/93835541?v=4" width="100px;" loading=lazy /><br /><sub><b>DeiAsPie</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=DeiAsPie" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://davidetaviani.com/"><img src="https://avatars.githubusercontent.com/u/283733?v=4" width="100px;" loading=lazy /><br /><sub><b>Davide Taviani</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Heliosmaster" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/spanishharlem"><img src="https://avatars.githubusercontent.com/u/9704046?v=4" width="100px;" loading=lazy /><br /><sub><b>spanishharlem</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=spanishharlem" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gonzoknows.com/"><img src="https://avatars.githubusercontent.com/u/122128828?v=4" width="100px;" loading=lazy /><br /><sub><b>Jacob Gonzales</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jacobgonzales20" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaede.ch/"><img src="https://avatars.githubusercontent.com/u/74188936?v=4" width="100px;" loading=lazy /><br /><sub><b>Kaede</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kaedech" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/abbluiz"><img src="https://avatars.githubusercontent.com/u/19765082?v=4" width="100px;" loading=lazy /><br /><sub><b>LABB</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=abbluiz" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Raviu8"><img src="https://avatars.githubusercontent.com/u/36168047?v=4" width="100px;" loading=lazy /><br /><sub><b>Raviu8</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Raviu8" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.peterdavehello.org/"><img src="https://avatars.githubusercontent.com/u/3691490?v=4" width="100px;" loading=lazy /><br /><sub><b>Peter Dave Hello</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PeterDaveHello" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/RoseTheFlower"><img src="https://avatars.githubusercontent.com/u/4759227?v=4" width="100px;" loading=lazy /><br /><sub><b>Rose</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=RoseTheFlower" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://xie.oskarsh.ru/"><img src="https://avatars.githubusercontent.com/u/28492051?v=4" width="100px;" loading=lazy /><br /><sub><b>Oskar Sharipov</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=igoose1" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://samuellucas.com/"><img src="https://avatars.githubusercontent.com/u/63159663?v=4" width="100px;" loading=lazy /><br /><sub><b>Samuel Lucas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=samuel-lucas6" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NylaTheWolf"><img src="https://avatars.githubusercontent.com/u/41797151?v=4" width="100px;" loading=lazy /><br /><sub><b>NylaTheWolf</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NylaTheWolf" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://matthewdavis.me/"><img src="https://avatars.githubusercontent.com/u/298426?v=4" width="100px;" loading=lazy /><br /><sub><b>Matthew Davis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matthewdavis" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mpc.sh/"><img src="https://avatars.githubusercontent.com/u/2894019?v=4" width="100px;" loading=lazy /><br /><sub><b>Mark Cohen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mpcsh" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/madscientist16"><img src="https://avatars.githubusercontent.com/u/67949699?v=4" width="100px;" loading=lazy /><br /><sub><b>Mad Scientist</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=madscientist16" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mmvanheusden"><img src="https://avatars.githubusercontent.com/u/50550545?v=4" width="100px;" loading=lazy /><br /><sub><b>Maarten</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mmvanheusden" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://awesomesheep48.ca/"><img src="https://avatars.githubusercontent.com/u/58151048?v=4" width="100px;" loading=lazy /><br /><sub><b>William Davis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=unbeatable-101" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/WayTooWill"><img src="https://avatars.githubusercontent.com/u/119883899?v=4" width="100px;" loading=lazy /><br /><sub><b>William Thomas Wilkins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=WayTooWill" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/oXyiGYJ"><img src="https://avatars.githubusercontent.com/u/617189?v=4" width="100px;" loading=lazy /><br /><sub><b>wylel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=oXyiGYJ" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://willbrowning.me/"><img src="https://avatars.githubusercontent.com/u/20662079?v=4" width="100px;" loading=lazy /><br /><sub><b>Will Browning</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=willbrowningme" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://ycao.top/"><img src="https://avatars.githubusercontent.com/u/32544798?v=4" width="100px;" loading=lazy /><br /><sub><b>Yi Cao</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xiaoyu2006" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/yusufdaglioglu"><img src="https://avatars.githubusercontent.com/u/90555550?v=4" width="100px;" loading=lazy /><br /><sub><b>Yusuf Daglioglu</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=yusufdaglioglu" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Zackaryia"><img src="https://avatars.githubusercontent.com/u/30780411?v=4" width="100px;" loading=lazy /><br /><sub><b>Zack</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Zackaryia" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://zhw.pages.dev/"><img src="https://avatars.githubusercontent.com/u/14029004?v=4" width="100px;" loading=lazy /><br /><sub><b>ZH王</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=wi24rd" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://cryptography.dog/"><img src="https://avatars.githubusercontent.com/u/1264398?v=4" width="100px;" loading=lazy /><br /><sub><b>ansuz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ansuz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://codeberg.org/archeite"><img src="https://avatars.githubusercontent.com/u/121004047?v=4" width="100px;" loading=lazy /><br /><sub><b>archeite</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=archeite" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asdfghjz"><img src="https://avatars.githubusercontent.com/u/42332644?v=4" width="100px;" loading=lazy /><br /><sub><b>asdfghjz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asdfghjz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ayaen"><img src="https://avatars.githubusercontent.com/u/96900168?v=4" width="100px;" loading=lazy /><br /><sub><b>ayaen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ayaen" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/b-harper"><img src="https://avatars.githubusercontent.com/u/3729684?v=4" width="100px;" loading=lazy /><br /><sub><b>b-harper</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=b-harper" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://verybadfrags.com/"><img src="https://avatars.githubusercontent.com/u/1664052?v=4" width="100px;" loading=lazy /><br /><sub><b>Loic Vourch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=VeryBadFrags" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/crasm"><img src="https://avatars.githubusercontent.com/u/16730716?v=4" width="100px;" loading=lazy /><br /><sub><b>crasm</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=crasm" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/eagerto-learn"><img src="https://avatars.githubusercontent.com/u/51919789?v=4" width="100px;" loading=lazy /><br /><sub><b>eagerto-learn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=eagerto-learn" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/egecelikci"><img src="https://avatars.githubusercontent.com/u/30394812?v=4" width="100px;" loading=lazy /><br /><sub><b>egecelikci</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=egecelikci" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/elleybean"><img src="https://avatars.githubusercontent.com/u/37009392?v=4" width="100px;" loading=lazy /><br /><sub><b>elleybean</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=elleybean" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ferothefox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4" width="100px;" loading=lazy /><br /><sub><b>Evan Song</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ferothefox" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pynixis"><img src="https://avatars.githubusercontent.com/u/5612336?v=4" width="100px;" loading=lazy /><br /><sub><b>pynixis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pynixis" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://seirdy.one/"><img src="https://avatars.githubusercontent.com/u/44756978?v=4" width="100px;" loading=lazy /><br /><sub><b>Seirdy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Seirdy" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NPN"><img src="https://avatars.githubusercontent.com/u/1497826?v=4" width="100px;" loading=lazy /><br /><sub><b>Ryan Huang</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NPN" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/chickahoona"><img src="https://avatars.githubusercontent.com/u/8075146?v=4" width="100px;" loading=lazy /><br /><sub><b>Sascha P.</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=chickahoona" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Securified"><img src="https://avatars.githubusercontent.com/u/79296234?v=4" width="100px;" loading=lazy /><br /><sub><b>Securified</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Securified" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://sy.mk/"><img src="https://avatars.githubusercontent.com/u/18217335?v=4" width="100px;" loading=lazy /><br /><sub><b>Sergey Musiyenko</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=musiyenko" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Spydar007"><img src="https://avatars.githubusercontent.com/u/7336943?v=4" width="100px;" loading=lazy /><br /><sub><b>Spydar007</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Spydar007" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/shbach"><img src="https://avatars.githubusercontent.com/u/5298745?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven Bach</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=shbach" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sjlehn"><img src="https://avatars.githubusercontent.com/u/6686486?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven Lehn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sjlehn" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://steven.vandegraaf.xyz/"><img src="https://avatars.githubusercontent.com/u/8904453?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven van de Graaf</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sgraaf" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skortekaas.nl/"><img src="https://avatars.githubusercontent.com/u/6728108?v=4" width="100px;" loading=lazy /><br /><sub><b>Sven Kortekaas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SvenKortekaas" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tejasgupta.com/"><img src="https://avatars.githubusercontent.com/u/18518375?v=4" width="100px;" loading=lazy /><br /><sub><b>Tejas Gupta</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TGNYC" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tebowy"><img src="https://avatars.githubusercontent.com/u/3144357?v=4" width="100px;" loading=lazy /><br /><sub><b>Tebowy Seba</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tebowy" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tedgravlin.tech/"><img src="https://avatars.githubusercontent.com/u/123981212?v=4" width="100px;" loading=lazy /><br /><sub><b>Ted Gravlin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tedgravlin" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thefrenchghosty.me/"><img src="https://avatars.githubusercontent.com/u/47571719?v=4" width="100px;" loading=lazy /><br /><sub><b>TheFrenchGhosty</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TheFrenchGhosty" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TheNoobWar"><img src="https://avatars.githubusercontent.com/u/1857590?v=4" width="100px;" loading=lazy /><br /><sub><b>TheNoobWar</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TheNoobWar" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://git.synz.io/users/Synzvato/projects#most-recent-activity"><img src="https://avatars.githubusercontent.com/u/2366020?v=4" width="100px;" loading=lazy /><br /><sub><b>Thomas Rientjes</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Synzvato" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/vergenzt"><img src="https://avatars.githubusercontent.com/u/1725615?v=4" width="100px;" loading=lazy /><br /><sub><b>Tim Vergenz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=vergenzt" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tommyent"><img src="https://avatars.githubusercontent.com/u/509970?v=4" width="100px;" loading=lazy /><br /><sub><b>Tom Sullivan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tommyent" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tonyztan"><img src="https://avatars.githubusercontent.com/u/2025495?v=4" width="100px;" loading=lazy /><br /><sub><b>Tony Tan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tonyztan" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TroubleDog54"><img src="https://avatars.githubusercontent.com/u/115918107?v=4" width="100px;" loading=lazy /><br /><sub><b>TroubleDog54</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TroubleDog54" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/User486375"><img src="https://avatars.githubusercontent.com/u/30012923?v=4" width="100px;" loading=lazy /><br /><sub><b>User486375</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=User486375" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/nchristensen"><img src="https://avatars.githubusercontent.com/u/11543181?v=4" width="100px;" loading=lazy /><br /><sub><b>Nicholas Christensen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nchristensen" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/oppressor1761"><img src="https://avatars.githubusercontent.com/u/163018825?v=4" width="100px;" loading=lazy /><br /><sub><b>oppressor1761</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=oppressor1761" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pbbob"><img src="https://avatars.githubusercontent.com/u/34972102?v=4" width="100px;" loading=lazy /><br /><sub><b>pbbob</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pbbob" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pdjpdjpdj"><img src="https://avatars.githubusercontent.com/u/47047080?v=4" width="100px;" loading=lazy /><br /><sub><b>pdjpdjpdj</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pdjpdjpdj" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ph00lt0"><img src="https://avatars.githubusercontent.com/u/15004290?v=4" width="100px;" loading=lazy /><br /><sub><b>Stella Polaris</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ph00lt0" title="Documentation">📖</a> <a href="#research-ph00lt0" title="Research">🔬</a> <a href="#promotion-ph00lt0" title="Promotion">📣</a> <a href="#question-ph00lt0" title="Answering Questions">💬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Aph00lt0" title="Reviewed Pull Requests">👀</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/regaldude"><img src="https://avatars.githubusercontent.com/u/63294824?v=4" width="100px;" loading=lazy /><br /><sub><b>regaldude</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=regaldude" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rusty-snake"><img src="https://avatars.githubusercontent.com/u/41237666?v=4" width="100px;" loading=lazy /><br /><sub><b>rusty-snake</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rusty-snake" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sachk"><img src="https://avatars.githubusercontent.com/u/10218019?v=4" width="100px;" loading=lazy /><br /><sub><b>sacha</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sachk" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/schwukas"><img src="https://avatars.githubusercontent.com/u/33559975?v=4" width="100px;" loading=lazy /><br /><sub><b>schwukas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=schwukas" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sh-dv"><img src="https://avatars.githubusercontent.com/u/44544201?v=4" width="100px;" loading=lazy /><br /><sub><b>sh-dv</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sh-dv" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/szTheory"><img src="https://avatars.githubusercontent.com/u/28652?v=4" width="100px;" loading=lazy /><br /><sub><b>szTheory</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=szTheory" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tbds"><img src="https://avatars.githubusercontent.com/u/32208649?v=4" width="100px;" loading=lazy /><br /><sub><b>Thunderbolt Digital</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tbds" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/theRhinoLogician"><img src="https://avatars.githubusercontent.com/u/8325899?v=4" width="100px;" loading=lazy /><br /><sub><b>E. S. Leonesco</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=theRhinoLogician" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/titanism"><img src="https://avatars.githubusercontent.com/u/101466223?v=4" width="100px;" loading=lazy /><br /><sub><b>titanism</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=titanism" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tomac4t"><img src="https://avatars.githubusercontent.com/u/47532693?v=4" width="100px;" loading=lazy /><br /><sub><b>tomac4t</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tomac4t" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://virustotalop.github.io/"><img src="https://avatars.githubusercontent.com/u/11567285?v=4" width="100px;" loading=lazy /><br /><sub><b>virustotalop</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=virustotalop" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://unit2.ca/"><img src="https://avatars.githubusercontent.com/u/4949200?v=4" width="100px;" loading=lazy /><br /><sub><b>wintr</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=wintr-" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xelarate86"><img src="https://avatars.githubusercontent.com/u/14865038?v=4" width="100px;" loading=lazy /><br /><sub><b>xelarate86</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xelarate86" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/yeoneer"><img src="https://avatars.githubusercontent.com/u/84702275?v=4" width="100px;" loading=lazy /><br /><sub><b>yeoneer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=yeoneer" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://foxt.dev/"><img src="https://avatars.githubusercontent.com/u/12257112?v=4" width="100px;" loading=lazy /><br /><sub><b>foxt</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=foxt" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/fredster33"><img src="https://avatars.githubusercontent.com/u/64927044?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddie</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fredster33" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ghbjklhv"><img src="https://avatars.githubusercontent.com/u/50426427?v=4" width="100px;" loading=lazy /><br /><sub><b>ghbjklhv</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ghbjklhv" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gorhill"><img src="https://avatars.githubusercontent.com/u/585534?v=4" width="100px;" loading=lazy /><br /><sub><b>Raymond Hill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gorhill" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://groovecoder.com/"><img src="https://avatars.githubusercontent.com/u/71928?v=4" width="100px;" loading=lazy /><br /><sub><b>luke crouch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=groovecoder" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/fd1f"><img src="https://avatars.githubusercontent.com/u/30058021?v=4" width="100px;" loading=lazy /><br /><sub><b>fd1f744993de14178e6c</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fd1f" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/habitualname"><img src="https://avatars.githubusercontent.com/u/101975345?v=4" width="100px;" loading=lazy /><br /><sub><b>habitualname</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=habitualname" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook321"><img src="https://avatars.githubusercontent.com/u/7744057?v=4" width="100px;" loading=lazy /><br /><sub><b>hook</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook321" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jfa.sh/"><img src="https://avatars.githubusercontent.com/u/6962524?v=4" width="100px;" loading=lazy /><br /><sub><b>nein</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jfabraxas" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jkhgvfgvsth"><img src="https://avatars.githubusercontent.com/u/52437244?v=4" width="100px;" loading=lazy /><br /><sub><b>jkhgvfgvsth</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jkhgvfgvsth" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/joaonsg"><img src="https://avatars.githubusercontent.com/u/8725806?v=4" width="100px;" loading=lazy /><br /><sub><b>joaonsg</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=joaonsg" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.ivpn.net/"><img src="https://avatars.githubusercontent.com/u/60918126?v=4" width="100px;" loading=lazy /><br /><sub><b>johnnyburnaway</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=johnnyburnaway" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jus9"><img src="https://avatars.githubusercontent.com/u/72120996?v=4" width="100px;" loading=lazy /><br /><sub><b>jus9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jus9" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kc1212"><img src="https://avatars.githubusercontent.com/u/1093806?v=4" width="100px;" loading=lazy /><br /><sub><b>kc1212</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kc1212" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kryptish"><img src="https://avatars.githubusercontent.com/u/39660724?v=4" width="100px;" loading=lazy /><br /><sub><b>kryptish</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kryptish" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/m3t/id"><img src="https://avatars.githubusercontent.com/u/12968867?v=4" width="100px;" loading=lazy /><br /><sub><b>m3t</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=m3t" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/macau23"><img src="https://avatars.githubusercontent.com/u/31501455?v=4" width="100px;" loading=lazy /><br /><sub><b>macau23</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=macau23" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mat1th"><img src="https://avatars.githubusercontent.com/u/6486389?v=4" width="100px;" loading=lazy /><br /><sub><b>mat1th</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mat1th" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mwmcode"><img src="https://avatars.githubusercontent.com/u/13101565?v=4" width="100px;" loading=lazy /><br /><sub><b>MWM</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mwmcode" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/michaelplews"><img src="https://avatars.githubusercontent.com/u/14098929?v=4" width="100px;" loading=lazy /><br /><sub><b>Michael Plews</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=michaelplews" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/moritztk"><img src="https://avatars.githubusercontent.com/u/36471066?v=4" width="100px;" loading=lazy /><br /><sub><b>moritztk</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=moritztk" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://aaronhorler.com/"><img src="https://avatars.githubusercontent.com/u/13065365?v=4" width="100px;" loading=lazy /><br /><sub><b>Aaron Horler</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=aghorler" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Commenter25"><img src="https://avatars.githubusercontent.com/u/35016761?v=4" width="100px;" loading=lazy /><br /><sub><b>Commenter</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Commenter25" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://blog.laubacher.io/"><img src="https://avatars.githubusercontent.com/u/12443257?v=4" width="100px;" loading=lazy /><br /><sub><b>Cédric Laubacher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Starbix" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gitlab.com/dpeukert"><img src="https://avatars.githubusercontent.com/u/3451904?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Peukert</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dpeukert" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/dabreese00"><img src="https://avatars.githubusercontent.com/u/5170955?v=4" width="100px;" loading=lazy /><br /><sub><b>David Breese</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dabreese00" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.dimitrisapostolou.com/"><img src="https://avatars.githubusercontent.com/u/227442?v=4" width="100px;" loading=lazy /><br /><sub><b>Dimitris Apostolou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rex4539" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dyrimon"><img src="https://avatars.githubusercontent.com/u/77260451?v=4" width="100px;" loading=lazy /><br /><sub><b>Dyrimon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Dyrimon" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/IkelAtomig"><img src="https://avatars.githubusercontent.com/u/101938856?v=4" width="100px;" loading=lazy /><br /><sub><b>Ikel Atomig</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=IkelAtomig" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.eliasojala.me/contact/"><img src="https://avatars.githubusercontent.com/u/5832930?v=4" width="100px;" loading=lazy /><br /><sub><b>Elias Ojala</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=theel0ja" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/feni-brian"><img src="https://avatars.githubusercontent.com/u/56452538?v=4" width="100px;" loading=lazy /><br /><sub><b>Feni Brian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=feni-brian" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.filips.si/"><img src="https://avatars.githubusercontent.com/u/16626308?v=4" width="100px;" loading=lazy /><br /><sub><b>Filip Š</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=filips123" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FlxAlbroscheit"><img src="https://avatars.githubusercontent.com/u/2439195?v=4" width="100px;" loading=lazy /><br /><sub><b>Felix Albroscheit</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FlxAlbroscheit" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GReagle"><img src="https://avatars.githubusercontent.com/u/11979774?v=4" width="100px;" loading=lazy /><br /><sub><b>GReagle</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GReagle" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xPMo"><img src="https://avatars.githubusercontent.com/u/16061366?v=4" width="100px;" loading=lazy /><br /><sub><b>Gamma</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xPMo" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GetBoz"><img src="https://avatars.githubusercontent.com/u/8277114?v=4" width="100px;" loading=lazy /><br /><sub><b>GetBoz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GetBoz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GrimPixel"><img src="https://avatars.githubusercontent.com/u/39795763?v=4" width="100px;" loading=lazy /><br /><sub><b>GrimPixel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GrimPixel" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Alonely0"><img src="https://avatars.githubusercontent.com/u/59423215?v=4" width="100px;" loading=lazy /><br /><sub><b>Guillem L. Jara</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Alonely0" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/HxxxxxS"><img src="https://avatars.githubusercontent.com/u/4034517?v=4" width="100px;" loading=lazy /><br /><sub><b>HxxxxxS</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=HxxxxxS" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/himanshuchandola-zz"><img src="https://avatars.githubusercontent.com/u/34373537?v=4" width="100px;" loading=lazy /><br /><sub><b>Himanshu Chandola</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=himanshuchandola-zz" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/concatime"><img src="https://avatars.githubusercontent.com/u/26262387?v=4" width="100px;" loading=lazy /><br /><sub><b>Issam Maghni</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=concatime" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ItsDonny"><img src="https://avatars.githubusercontent.com/u/96709134?v=4" width="100px;" loading=lazy /><br /><sub><b>ItsDonny</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ItsDonny" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/thecodrr"><img src="https://avatars.githubusercontent.com/u/7473959?v=4" width="100px;" loading=lazy /><br /><sub><b>Abdullah Atta</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thecodrr" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/adam-sroka"><img src="https://avatars.githubusercontent.com/u/45038919?v=4" width="100px;" loading=lazy /><br /><sub><b>Adam Sroka</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=adam-sroka" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/criadoperez"><img src="https://avatars.githubusercontent.com/u/8580472?v=4" width="100px;" loading=lazy /><br /><sub><b>criadoperez</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=criadoperez" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://stingle.org/"><img src="https://avatars.githubusercontent.com/u/149764?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Amiryan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=alexamiryan" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/alexshoup"><img src="https://avatars.githubusercontent.com/u/24282323?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Shoup</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=alexshoup" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://alex.lol/"><img src="https://avatars.githubusercontent.com/u/1346090?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Thomassen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Decicus" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://secluded.site/"><img src="https://avatars.githubusercontent.com/u/29460675?v=4" width="100px;" loading=lazy /><br /><sub><b>Amolith</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Amolith" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scarpino.dev/"><img src="https://avatars.githubusercontent.com/u/529436?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrea Scarpino</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ilpianista" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://noplanman.ch/"><img src="https://avatars.githubusercontent.com/u/9423417?v=4" width="100px;" loading=lazy /><br /><sub><b>Armando Lüscher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=noplanman" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/AshTex"><img src="https://avatars.githubusercontent.com/u/11602677?v=4" width="100px;" loading=lazy /><br /><sub><b>Ash T</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=AshTex" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/4-FLOSS-Free-Libre-Open-Source-Software"><img src="https://avatars.githubusercontent.com/u/46166740?v=4" width="100px;" loading=lazy /><br /><sub><b>Bernd Eichelberger</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=4-FLOSS-Free-Libre-Open-Source-Software" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/BionicBison05"><img src="https://avatars.githubusercontent.com/u/93722725?v=4" width="100px;" loading=lazy /><br /><sub><b>BionicBison05</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=BionicBison05" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://brentgervais.com/"><img src="https://avatars.githubusercontent.com/u/7018928?v=4" width="100px;" loading=lazy /><br /><sub><b>Brent Gervais</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gerbrent" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://brian-cooper.com/"><img src="https://avatars.githubusercontent.com/u/20056195?v=4" width="100px;" loading=lazy /><br /><sub><b>Brian Cooper</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=coopbri" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Caboose700"><img src="https://avatars.githubusercontent.com/u/10017396?v=4" width="100px;" loading=lazy /><br /><sub><b>Caboose700</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Caboose700" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cadelwatson.com/"><img src="https://avatars.githubusercontent.com/u/1031518?v=4" width="100px;" loading=lazy /><br /><sub><b>Cadel Watson</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kdelwat" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/trosel"><img src="https://avatars.githubusercontent.com/u/1299322?v=4" width="100px;" loading=lazy /><br /><sub><b>trosel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=trosel" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.bromite.org/"><img src="https://avatars.githubusercontent.com/u/32685696?v=4" width="100px;" loading=lazy /><br /><sub><b>Carl</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=csagan5" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Deimos"><img src="https://avatars.githubusercontent.com/u/9033?v=4" width="100px;" loading=lazy /><br /><sub><b>Chad Birch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Deimos" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://barry.im/"><img src="https://avatars.githubusercontent.com/u/1405770?v=4" width="100px;" loading=lazy /><br /><sub><b>Chris Barry</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=chris-barry" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/claudiojulioferraz"><img src="https://avatars.githubusercontent.com/u/7096023?v=4" width="100px;" loading=lazy /><br /><sub><b>Júlio Ferraz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=claudiojulioferraz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/JackH3103"><img src="https://avatars.githubusercontent.com/u/23507259?v=4" width="100px;" loading=lazy /><br /><sub><b>Jack Hill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=JackH3103" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mathiazom"><img src="https://avatars.githubusercontent.com/u/24361490?v=4" width="100px;" loading=lazy /><br /><sub><b>Mathias Oterhals Myklebust</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mathiazom" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.mxe.no/"><img src="https://avatars.githubusercontent.com/u/10927304?v=4" width="100px;" loading=lazy /><br /><sub><b>Mats Estensen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matsest" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://write.as/matt/"><img src="https://avatars.githubusercontent.com/u/1138779?v=4" width="100px;" loading=lazy /><br /><sub><b>Matt Baer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thebaer" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mehdichaouch"><img src="https://avatars.githubusercontent.com/u/861701?v=4" width="100px;" loading=lazy /><br /><sub><b>Mehdi Chaouch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mehdichaouch" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mjperrone"><img src="https://avatars.githubusercontent.com/u/3848371?v=4" width="100px;" loading=lazy /><br /><sub><b>Mike Perrone</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mjperrone" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/MitchWilkins"><img src="https://avatars.githubusercontent.com/u/17414866?v=4" width="100px;" loading=lazy /><br /><sub><b>Mitch Wilkins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=MitchWilkins" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/moughxyz"><img src="https://avatars.githubusercontent.com/u/3277844?v=4" width="100px;" loading=lazy /><br /><sub><b>Mo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=moughxyz" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://linderud.dev/"><img src="https://avatars.githubusercontent.com/u/1042946?v=4" width="100px;" loading=lazy /><br /><sub><b>Morten Linderud</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Foxboron" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/natzim"><img src="https://avatars.githubusercontent.com/u/103460227?v=4" width="100px;" loading=lazy /><br /><sub><b>natzim</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=natzim" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Nautman"><img src="https://avatars.githubusercontent.com/u/28629647?v=4" width="100px;" loading=lazy /><br /><sub><b>Douglas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Nautman" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nearwood.dev/"><img src="https://avatars.githubusercontent.com/u/1929778?v=4" width="100px;" loading=lazy /><br /><sub><b>Nick</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nearwood" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NielDB"><img src="https://avatars.githubusercontent.com/u/25815880?v=4" width="100px;" loading=lazy /><br /><sub><b>NielDB</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NielDB" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nihal-raj.github.io/"><img src="https://avatars.githubusercontent.com/u/83210067?v=4" width="100px;" loading=lazy /><br /><sub><b>Nihal Raj</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Nihal-Raj" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gitlab.com/NoahGray"><img src="https://avatars.githubusercontent.com/u/3739277?v=4" width="100px;" loading=lazy /><br /><sub><b>Noah</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=OKNoah" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/n0toose"><img src="https://avatars.githubusercontent.com/u/30193966?v=4" width="100px;" loading=lazy /><br /><sub><b>Panagiotis "Ivory" Vasilopoulos</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=n0toose" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://pacr.dev/"><img src="https://avatars.githubusercontent.com/u/32212089?v=4" width="100px;" loading=lazy /><br /><sub><b>Patrick R</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xDazld" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://fart.attorney/"><img src="https://avatars.githubusercontent.com/u/12037849?v=4" width="100px;" loading=lazy /><br /><sub><b>Fart Attorney</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fartattorney" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pilou-"><img src="https://avatars.githubusercontent.com/u/1356830?v=4" width="100px;" loading=lazy /><br /><sub><b>Pilou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pilou-" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PoorPocketsMcNewHold"><img src="https://avatars.githubusercontent.com/u/13170204?v=4" width="100px;" loading=lazy /><br /><sub><b>PoorPockets McNewHold</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PoorPocketsMcNewHold" title="Documentation">📖</a> <a href="#translation-PoorPocketsMcNewHold" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PrinceKael"><img src="https://avatars.githubusercontent.com/u/44752304?v=4" width="100px;" loading=lazy /><br /><sub><b>PrinceKael</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PrinceKael" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mail.protonmail.com/"><img src="https://avatars.githubusercontent.com/u/1345786?v=4" width="100px;" loading=lazy /><br /><sub><b>Richard</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=EpokK" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/walletdude"><img src="https://avatars.githubusercontent.com/u/19595856?v=4" width="100px;" loading=lazy /><br /><sub><b>Jaden Site</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=walletdude" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.jakezeal.com/"><img src="https://avatars.githubusercontent.com/u/13857938?v=4" width="100px;" loading=lazy /><br /><sub><b>Jake Zeal</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jakezeal" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/thatrobotdev"><img src="https://avatars.githubusercontent.com/u/18013689?v=4" width="100px;" loading=lazy /><br /><sub><b>James Kerrane</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thatrobotdev" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sell"><img src="https://avatars.githubusercontent.com/u/34258275?v=4" width="100px;" loading=lazy /><br /><sub><b>Sell</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sell" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://fmbase.tw/blog/"><img src="https://avatars.githubusercontent.com/u/2720857?v=4" width="100px;" loading=lazy /><br /><sub><b>YMHuang</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ymhuang0808" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jonathanvansina"><img src="https://avatars.githubusercontent.com/u/25825247?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonathan Vansina</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonathanvansina" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jorgeluiscarrillo"><img src="https://avatars.githubusercontent.com/u/33134232?v=4" width="100px;" loading=lazy /><br /><sub><b>jorgeluiscarrillo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jorgeluiscarrillo" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://julianfairfax.gitlab.io/"><img src="https://avatars.githubusercontent.com/u/43753131?v=4" width="100px;" loading=lazy /><br /><sub><b>Julian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=julianfairfax" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Kefaku"><img src="https://avatars.githubusercontent.com/u/114934849?v=4" width="100px;" loading=lazy /><br /><sub><b>Kefaku</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Kefaku" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kmgb"><img src="https://avatars.githubusercontent.com/u/25809479?v=4" width="100px;" loading=lazy /><br /><sub><b>Kevin Brennan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kmgb" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.kylespearrin.com/"><img src="https://avatars.githubusercontent.com/u/1190944?v=4" width="100px;" loading=lazy /><br /><sub><b>Kyle Spearrin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kspearrin" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://leonallen22.github.io/"><img src="https://avatars.githubusercontent.com/u/5651701?v=4" width="100px;" loading=lazy /><br /><sub><b>Leon Allen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=leonallen22" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/LisaWilbourn"><img src="https://avatars.githubusercontent.com/u/67932294?v=4" width="100px;" loading=lazy /><br /><sub><b>LisaWilbourn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=LisaWilbourn" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/LordShedy"><img src="https://avatars.githubusercontent.com/u/1622827?v=4" width="100px;" loading=lazy /><br /><sub><b>Lord Shedy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=LordShedy" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/louiswolfers"><img src="https://avatars.githubusercontent.com/u/7440721?v=4" width="100px;" loading=lazy /><br /><sub><b>Louis Wolfers</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=louiswolfers" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/lunush"><img src="https://avatars.githubusercontent.com/u/76045303?v=4" width="100px;" loading=lazy /><br /><sub><b>Lunush</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lunush" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mmrabbani"><img src="https://avatars.githubusercontent.com/u/56675802?v=4" width="100px;" loading=lazy /><br /><sub><b>MMR</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mmrabbani" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/StoppingBuck"><img src="https://avatars.githubusercontent.com/u/8426548?v=4" width="100px;" loading=lazy /><br /><sub><b>Mads Peter Rommedahl</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=StoppingBuck" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mq1"><img src="https://avatars.githubusercontent.com/u/29694921?v=4" width="100px;" loading=lazy /><br /><sub><b>Manuel Quarneti</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mq1" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://twitter.com/ocramleznem"><img src="https://avatars.githubusercontent.com/u/1401770?v=4" width="100px;" loading=lazy /><br /><sub><b>Marco Menzel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ocramleznem" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jxtsai.info"><img src="https://avatars.githubusercontent.com/u/8361268?v=4" width="100px;" loading=lazy /><br /><sub><b>jx tsai</b></sub></a><br /><a href="#translation-jxtsai" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/backstab5983"><img src="https://avatars.githubusercontent.com/u/21013752?v=4" width="100px;" loading=lazy /><br /><sub><b>backstab5983</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=backstab5983" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/antgig"><img src="https://avatars.githubusercontent.com/u/144840521?v=4" width="100px;" loading=lazy /><br /><sub><b>antgig</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=antgig" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://yzahk.in/"><img src="https://avatars.githubusercontent.com/u/604311?v=4" width="100px;" loading=lazy /><br /><sub><b>Ákos Nikházy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=akosnikhazy" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://fmarier.org/"><img src="https://avatars.githubusercontent.com/u/167821?v=4" width="100px;" loading=lazy /><br /><sub><b>Francois Marier</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fmarier" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://filmsbytom.com/"><img src="https://avatars.githubusercontent.com/u/132141431?v=4" width="100px;" loading=lazy /><br /><sub><b>5-tom</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=5-tom" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Ralphie0511"><img src="https://avatars.githubusercontent.com/u/99518791?v=4" width="100px;" loading=lazy /><br /><sub><b>Ralphie0511</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Ralphie0511" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kovalovs.lv/"><img src="https://avatars.githubusercontent.com/u/5563309?v=4" width="100px;" loading=lazy /><br /><sub><b>aleksejs1</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=aleksejs1" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/snwfdhmp"><img src="https://avatars.githubusercontent.com/u/23099246?v=4" width="100px;" loading=lazy /><br /><sub><b>Martin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=snwfdhmp" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/overwatcheddude"><img src="https://avatars.githubusercontent.com/u/37483931?v=4" width="100px;" loading=lazy /><br /><sub><b>Overwatch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=overwatcheddude" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/m00t316"><img src="https://avatars.githubusercontent.com/u/54213179?v=4" width="100px;" loading=lazy /><br /><sub><b>Kieran Colfer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=m00t316" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/I-I-IT"><img src="https://avatars.githubusercontent.com/u/78900789?v=4" width="100px;" loading=lazy /><br /><sub><b>Triple T</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=I-I-IT" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td align="center" size="13px" colspan="5">
|
||||
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
|
||||
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
|
||||
</img>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of **any** kind welcome, including contributions to Privacy Guides outside of this repo, and contributions that aren't content related (like sharing ideas for Privacy Guides, promoting the project, answering questions on the forum, etc.).
|
||||
|
||||
CLI to generate this table:
|
||||
|
||||
```bash
|
||||
npx --package all-contributors-cli -- npx all-contributors generate
|
||||
```
|
||||
|
||||
CLI to add a contributor:
|
||||
|
||||
```bash
|
||||
npx --package all-contributors-cli -- npx all-contributors add <username> <contribution>
|
||||
```
|
||||
|
||||
See [this table](https://allcontributors.org/docs/en/emoji-key) for valid contribution reasons, comma-separated. Do **not** use the `content` code for contributors to the website, use `docs` instead (this way it will automatically link to their commits). Example:
|
||||
|
||||
```bash
|
||||
npx --package all-contributors-cli -- npx all-contributors add jonaharagon docs,research,question
|
||||
```
|
||||
|
@ -1,164 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
extra:
|
||||
context: !ENV [CONTEXT, "production"]
|
||||
deploy: !ENV DEPLOY_ID
|
||||
social:
|
||||
- icon: simple/mastodon
|
||||
link: https://mastodon.neat.computer/@privacyguides
|
||||
name: Mastodon
|
||||
- icon: simple/matrix
|
||||
link: https://matrix.to/#/#privacyguides:matrix.org
|
||||
name: Matrix
|
||||
- icon: simple/discourse
|
||||
link: https://discuss.privacyguides.net/
|
||||
name: Forum
|
||||
- icon: simple/github
|
||||
link: https://github.com/privacyguides
|
||||
name: GitHub
|
||||
- icon: simple/torbrowser
|
||||
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/
|
||||
name: Hidden service
|
||||
alternate:
|
||||
- name: English
|
||||
link: /en/
|
||||
lang: en
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1fa-1f1f8.svg
|
||||
- name: Español
|
||||
link: /es/
|
||||
lang: es
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ea-1f1f8.svg
|
||||
- name: Français
|
||||
link: /fr/
|
||||
lang: fr
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1eb-1f1f7.svg
|
||||
- name: עִברִית
|
||||
link: /he/
|
||||
lang: he
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ee-1f1f1.svg
|
||||
- name: Italian
|
||||
link: /it/
|
||||
lang: it
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ee-1f1f9.svg
|
||||
- name: Nederlands
|
||||
link: /nl/
|
||||
lang: nl
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f3-1f1f1.svg
|
||||
- name: 正體中文
|
||||
link: /zh-hant/
|
||||
lang: zh-Hant
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ed-1f1f0.svg
|
||||
- name: Russian
|
||||
link: /ru/
|
||||
lang: ru
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f7-1f1fa.svg
|
||||
|
||||
repo_url: https://github.com/privacyguides/privacyguides.org
|
||||
repo_name: ""
|
||||
|
||||
theme:
|
||||
name: material
|
||||
custom_dir: ../theme
|
||||
logo: ../../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
favicon: assets/brand/png/favicon/favicon-32x32.png
|
||||
icon:
|
||||
repo: simple/github
|
||||
features:
|
||||
- navigation.tracking
|
||||
- navigation.tabs
|
||||
- navigation.sections
|
||||
- navigation.expand
|
||||
- navigation.path
|
||||
- navigation.indexes
|
||||
- content.tabs.link
|
||||
- content.tooltips
|
||||
- search.highlight
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.15.0
|
||||
extra_javascript:
|
||||
- assets/javascripts/mathjax.js
|
||||
|
||||
watch:
|
||||
- ../theme
|
||||
- ../includes
|
||||
- mkdocs-common.yml
|
||||
|
||||
plugins:
|
||||
tags: {}
|
||||
search: {}
|
||||
macros: {}
|
||||
meta: {}
|
||||
git-committers:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
repository: privacyguides/privacyguides.org
|
||||
branch: main
|
||||
git-revision-date-localized:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
exclude:
|
||||
- index.md
|
||||
fallback_to_build_date: true
|
||||
privacy:
|
||||
assets_exclude:
|
||||
- cdn.jsdelivr.net/npm/mathjax@3/*
|
||||
optimize:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
typeset: {}
|
||||
social:
|
||||
cards: !ENV [CARDS, true]
|
||||
cards_dir: assets/img/social
|
||||
cards_layout_dir: config/layouts
|
||||
cards_layout: page
|
||||
# cards_layout: pride
|
||||
|
||||
markdown_extensions:
|
||||
admonition: {}
|
||||
pymdownx.details: {}
|
||||
pymdownx.superfences:
|
||||
custom_fences:
|
||||
- name: mermaid
|
||||
class: mermaid
|
||||
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||
pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
pymdownx.arithmatex:
|
||||
generic: true
|
||||
pymdownx.critic: {}
|
||||
pymdownx.caret: {}
|
||||
pymdownx.keys: {}
|
||||
pymdownx.mark: {}
|
||||
pymdownx.tilde: {}
|
||||
pymdownx.snippets: {}
|
||||
pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
attr_list: {}
|
||||
def_list: {}
|
||||
md_in_html: {}
|
||||
meta: {}
|
||||
abbr: {}
|
||||
pymdownx.emoji:
|
||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||
tables: {}
|
||||
footnotes: {}
|
||||
toc:
|
||||
permalink: true
|
||||
toc_depth: 4
|
@ -1,164 +0,0 @@
|
||||
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../docs'
|
||||
site_url: "https://www.privacyguides.org/"
|
||||
site_dir: '../site'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is your central privacy and security resource to protect yourself online.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2019 - 2023 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="https://www.privacyguides.org/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
repo_url: ""
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics: false
|
||||
alternate: false
|
||||
offline: true
|
||||
|
||||
theme:
|
||||
language: en
|
||||
# this logo needs to be set separately because the relative path is different
|
||||
logo: ../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Switch to dark mode"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Switch to light mode"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Switch to system theme"
|
||||
features:
|
||||
- navigation.tabs
|
||||
- navigation.sections
|
||||
- navigation.indexes
|
||||
- content.tabs.link
|
||||
- content.tooltips
|
||||
- search.highlight
|
||||
|
||||
plugins:
|
||||
offline:
|
||||
enabled: true
|
||||
social:
|
||||
enabled: false
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.en.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Knowledge Base:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technology Essentials:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Advanced Topics:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Operating Systems:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Recommendations:
|
||||
- 'tools.md'
|
||||
- Internet Browsing:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Operating Systems:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- About:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Changelog: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,149 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../docs'
|
||||
site_url: "https://www.privacyguides.org/en/"
|
||||
site_dir: '../site/en'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is your central privacy and security resource to protect yourself online.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2019 - 2023 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/docs/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
theme:
|
||||
language: en
|
||||
# ENGLISH ONLY: this logo needs to be set separately because the relative path is different
|
||||
logo: ../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Switch to dark mode"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Switch to light mode"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Switch to system theme"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.en.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Knowledge Base:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technology Essentials:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Advanced Topics:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Operating Systems:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Recommendations:
|
||||
- 'tools.md'
|
||||
- Internet Browsing:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Operating Systems:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- About:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Changelog: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,147 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/es'
|
||||
site_url: "https://www.privacyguides.org/es/"
|
||||
site_dir: '../site/es'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides es tu recurso central de privacidad y seguridad para protegerte en línea.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> es un sitio web sin fines lucrativos y de motivación social que ofrece información para proteger la seguridad y privacidad de sus datos.<br>
|
||||
No ganamos dinero por recomendar determinados productos y no utilizamos enlaces de afiliados.<br>
|
||||
© 2019 - 2023 Privacy Guides y colaboradores.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Contenido bajo licencia <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/es/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
theme:
|
||||
language: es
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Cambiar a modo oscuro"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Cambiar a modo claro"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Cambiar al tema del sistema"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.es.txt
|
||||
|
||||
nav:
|
||||
- Inicio: 'index.md'
|
||||
- Base de conocimientos:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- "Aspectos tecnológicos esenciales":
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Temas avanzados:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Sistemas operativos:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Recomendaciones:
|
||||
- 'tools.md'
|
||||
- "Navegación por Internet":
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Proveedores:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Sistemas operativos:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Acerca de:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Comunidad:
|
||||
- 'about/donate.md'
|
||||
- Servicios en línea: 'about/services.md'
|
||||
- "Código de conducta": 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contribuir:
|
||||
- "Guía de redacción":
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- "Guías técnicas":
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- "Registro de cambios": 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Foro: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,147 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/fr'
|
||||
site_url: "https://www.privacyguides.org/fr/"
|
||||
site_dir: '../site/fr'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides est votre ressource centrale en matière de vie privée et de sécurité pour vous protéger en ligne.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> est un site web à but non lucratif et à vocation sociale qui fournit des informations pour protéger la sécurité de vos données et votre vie privée.<br>
|
||||
Nous ne gagnons pas d'argent en recommandant certains produits et nous n'utilisons pas de liens d'affiliation.<br>
|
||||
© 2019 - 2023 Privacy Guides et contributeurs.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Contenu sous licence <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/fr/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
theme:
|
||||
language: fr
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Basculer en mode sombre"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Basculer en mode clair"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Basculer vers le thème du système"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.fr.txt
|
||||
|
||||
nav:
|
||||
- Accueil: 'index.md'
|
||||
- Base de connaissances:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Les essentiels de la technologie:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- "Sujets avancés":
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- "Systèmes d'exploitation":
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Recommandations:
|
||||
- 'tools.md'
|
||||
- Navigation internet:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- "Fournisseurs":
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- "Logiciels":
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- "Systèmes d'exploitation":
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- "À propos":
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- "Communauté":
|
||||
- 'about/donate.md'
|
||||
- "Services en ligne": 'about/services.md'
|
||||
- "Code de conduite": 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- "Contribuer":
|
||||
- "Guide de rédaction":
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- "Guides techniques":
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Journal des modifications: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,151 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/he'
|
||||
site_url: "https://www.privacyguides.org/he/"
|
||||
site_dir: '../site/he'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides (מדריכי פרטיות) הם משאב הפרטיות והאבטחה המרכזי שלכם כדי להגן על עצמכם באופן מקוון.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2019 - 2023 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/he/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.2.0
|
||||
- assets/stylesheets/lang-he.css?v=3.4.0
|
||||
|
||||
theme:
|
||||
language: he
|
||||
font:
|
||||
text: Open Sans
|
||||
code: Cousine
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "עבור למצב כהה"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "עבור למצב בהיר"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "עבור לערכת הנושא של המערכת"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.he.txt
|
||||
|
||||
nav:
|
||||
- "דף הבית": 'index.md'
|
||||
- "ידע בסיסי":
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- "יסודות הטכנולוגיה":
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- "נושאים מתקדמים":
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- "מערכות הפעלה":
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- "המלצות":
|
||||
- 'tools.md'
|
||||
- "גלישה באינטרנט":
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- "ספקים":
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- "תוכנה":
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- "מערכות הפעלה":
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- "על אודות":
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- "יומן שינויים": 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- "פורום": 'https://discuss.privacyguides.net/'
|
||||
- "בלוג": 'https://blog.privacyguides.org/'
|
@ -1,147 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/it'
|
||||
site_url: "https://www.privacyguides.org/it/"
|
||||
site_dir: '../site/it'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides è la risorsa centrale per la privacy e la sicurezza per proteggersi online.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> è un sito web senza fini di lucro e a sfondo sociale che fornisce informazioni per proteggere la sicurezza e la privacy dei dati.<br>
|
||||
Non guadagniamo denaro consigliando determinati prodotti e non utilizziamo link di affiliazione.<br>
|
||||
© 2019 - 2023 Privacy Guides e collaboratori.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Contenuto sotto licenza <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/it/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
theme:
|
||||
language: it
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Passa al tema scuro"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Passa al tema chiaro"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Passa al tema di sistema"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.it.txt
|
||||
|
||||
nav:
|
||||
- Pagina iniziale: 'index.md'
|
||||
- Conoscenze di base:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Elementi essenziali della tecnologia:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Argomenti avanzati:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Sistemi operativi:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Raccomandazioni:
|
||||
- 'tools.md'
|
||||
- Navigazione su Internet:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Fornitori:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Sistemi operativi:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Informazioni:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Comunità:
|
||||
- 'about/donate.md'
|
||||
- Servizi online: 'about/services.md'
|
||||
- Codice di condotta: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contribuisci:
|
||||
- Guida alla scrittura:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- Guide tecniche:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Registro delle modifiche: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,147 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/nl'
|
||||
site_url: "https://www.privacyguides.org/nl/"
|
||||
site_dir: '../site/nl'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is jouw centrale bron voor privacy en beveiliging om jezelf online te beschermen.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is een non-profit, sociaal gemotiveerde website die informatie biedt voor de bescherming van jouw gegevensbeveiliging en privacy.<br>
|
||||
Wij verdienen geen geld met het aanbevelen van bepaalde producten, en wij maken geen gebruik van affiliate links.<br>
|
||||
© 2019 - 2023 Privacy Guides en medewerkers.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Inhoud gelicentieerd onder <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/nl/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
theme:
|
||||
language: nl
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Verander naar donker thema"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Verander naar licht thema"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Verander naar systeem thema"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.nl.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Kennisbank:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technologie essenties:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Gevorderde onderwerpen:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Besturings systemen:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/ios-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/macos-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Recommendaties:
|
||||
- 'tools.md'
|
||||
- Surfen op het internet:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Besturings systemen:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Over ons:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Gemeenschap:
|
||||
- 'about/donate.md'
|
||||
- Online diensten: 'about/services.md'
|
||||
- Gedragscode: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Bijdragen:
|
||||
- Schrijfgids:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 'meta/translations.md'
|
||||
- Technische gids:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Wijzigingslogboek: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
@ -1,148 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/ru'
|
||||
site_url: "https://www.privacyguides.org/ru/"
|
||||
site_dir: '../site/ru'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides - это ваш главный ресурс по конфиденциальности и безопасности для защиты себя в Интернете.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> - некоммерческий сайт, предоставляющий информацию по защите безопасности и конфиденциальности ваших данных.<br>
|
||||
Мы не зарабатываем на рекомендациях определенных продуктов и не используем партнерские ссылки.<br>
|
||||
© 2019 - 2023 Privacy Guides и поддерживающие.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Содержание доступно под лицензией <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/docs/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.2.0
|
||||
- assets/stylesheets/lang-ru.css?v=3.13.0
|
||||
|
||||
theme:
|
||||
language: ru
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Включить тёмную тему"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Включить светлую тему"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Переключиться на тему системы"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.ru.txt
|
||||
|
||||
nav:
|
||||
- Главная: 'index.md'
|
||||
- База знаний:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Технологические аспекты:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Дополнительные темы:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- Операционные системы:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- Рекомендации:
|
||||
- 'tools.md'
|
||||
- Интернет-браузинг:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Провайдеры:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Программное обеспечение:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- Операционные системы:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- О сайте:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Сообщество:
|
||||
- 'about/donate.md'
|
||||
- Онлайн-сервисы: 'about/services.md'
|
||||
- Правила поведения: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Помощь проекту:
|
||||
- Руководство по написанию:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Технические руководства:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Список изменений: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Форум: 'https://discuss.privacyguides.net/'
|
||||
- Блог: 'https://blog.privacyguides.org/'
|
@ -1,148 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs-common.yml
|
||||
docs_dir: '../i18n/zh-Hant'
|
||||
site_url: "https://www.privacyguides.org/zh-Hant/"
|
||||
site_dir: '../site/zh-Hant'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides 是您重要的網路隱私與安全資源。
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> 是一個非營利、社會導向的網站,旨在提供有關資訊以確保您的資料安全和隱私。</br>
|
||||
我們不會通過推薦某些產品來賺錢,我們也不會使用推廣回贈鏈接。
|
||||
© 2019 - 2023 Privacy Guides 和貢獻者。
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
根據CC BY-ND 4.0授權的內容。 <a href="/license"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/zh-Hant/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.2.0
|
||||
- assets/stylesheets/lang-zh-Hant.css?v=3.13.0
|
||||
|
||||
theme:
|
||||
language: zh-Hant
|
||||
font:
|
||||
text: Noto Sans TC
|
||||
code: Noto Sans TC
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "切換至深色模式"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "切換至淺色模式"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "切換到系統主題"
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.zh-Hant.txt
|
||||
|
||||
nav:
|
||||
- 首頁: 'index.md'
|
||||
- 知識庫:
|
||||
- 'basics/why-privacy-matters.md'
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- 技術精華:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- 進階主題:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- 作業系統:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- kb-archive.md
|
||||
- 推薦:
|
||||
- 'tools.md'
|
||||
- 網際網路瀏覽:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- 提供者:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- 軟體:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 作業系統:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- 關於:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- 社群:
|
||||
- 'about/donate.md'
|
||||
- 線上服務: 'about/services.md'
|
||||
- 行為守則: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- 貢獻:
|
||||
- 寫作指南:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- 技術指導:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- 變更記錄: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- 論壇: 'https://discuss.privacyguides.net/'
|
||||
- 部落格: 'https://blog.privacyguides.org/'
|
27
crowdin.yml
@ -18,25 +18,16 @@
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
#checkov:skip=CKV_SECRET_6:obviously a variable name and not a secret
|
||||
api_token_env: CROWDIN_PERSONAL_TOKEN
|
||||
project_id: "509862"
|
||||
"preserve_hierarchy": true
|
||||
files:
|
||||
- source: "/docs/**/*.*"
|
||||
translation: "/i18n/%two_letters_code%/**/%file_name%.%file_extension%"
|
||||
skip_untranslated_files: false
|
||||
- source: "/theme/overrides/*.en.html"
|
||||
translation: "/theme/overrides/%file_name%.%two_letters_code%.html"
|
||||
translation_replace:
|
||||
"en.": ""
|
||||
skip_untranslated_files: false
|
||||
- source: "/includes/*.en.*"
|
||||
translation: "/includes/%file_name%.%two_letters_code%.%file_extension%"
|
||||
translation_replace:
|
||||
"en.": ""
|
||||
skip_untranslated_files: false
|
||||
- source: "/static/i18n/*.en.*"
|
||||
translation: "/static/i18n/%file_name%.%two_letters_code%.%file_extension%"
|
||||
translation_replace:
|
||||
"en.": ""
|
||||
skip_untranslated_files: false
|
||||
- source: "/docs/**/*.*"
|
||||
translation: "/i18n/%two_letters_code%/**/%file_name%.%file_extension%"
|
||||
skip_untranslated_files: false
|
||||
- source: "/includes/*.en.*"
|
||||
translation: "/includes/%file_name%.%two_letters_code%.%file_extension%"
|
||||
translation_replace:
|
||||
"en.": ""
|
||||
skip_untranslated_files: false
|
||||
|
@ -10,44 +10,44 @@
|
||||
|
||||
What we expect from members of our communities:
|
||||
|
||||
1. **Don't spread misinformation**
|
||||
1. **Do not spread misinformation**
|
||||
|
||||
We are creating an evidence-based educational community around information privacy and security, not a home for conspiracy theories. For example, when making a claim that a certain piece of software is malicious or that certain telemetry data is privacy invasive, explain in detail what is collected and how it collected. Claims of this nature must be backed by technical evidence.
|
||||
We are creating an evidence-based educational community around information privacy and security, not an information home for conspiracy theories. For example, when making a claim that a certain piece of software is malicious or that certain telemetry data is privacy invasive, explain in detail what is collected and how it collected. Claims of this nature must be backed by technical evidence.
|
||||
|
||||
1. **Don't abuse our willingness to help**
|
||||
2. **Do not abuse our willingness to help**
|
||||
|
||||
Our community members are not your free tech support. We are happy to help you with specific steps on your privacy journey if you are willing to put in effort on your end. We are not willing to answer endlessly repeated questions about generic computer problems you could have answered yourself with a 30-second internet search. Don't be a [help vampire](https://slash7.com/2006/12/22/vampires/).
|
||||
|
||||
1. **Behave in a positive and constructive manner**
|
||||
Our community members are not free tech support. We are happy to help with specific steps for your privacy journey, if you are willing to put in effort. We are not obligated to answer endless, repetitive questions about general computer problems solvable with a simple internet search. **Do not** become a [help vampire](https://slash7.com/2006/12/22/vampires).
|
||||
|
||||
3. **Behave in a positive and constructive manner**
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our community include:
|
||||
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the overall community
|
||||
- Being respectful of differing opinions, viewpoints, and experiences.
|
||||
- Demonstrating empathy and kindness toward others.
|
||||
- Focusing on what is best not just for us as overseers, but for the overall community.
|
||||
- Giving and gracefully accepting constructive feedback within our community while growing and improving.
|
||||
- Operating with a communal mindset at all times.
|
||||
|
||||
### Unacceptable Behavior
|
||||
## Unacceptable Behavior
|
||||
|
||||
The following behaviors are considered harassment and are unacceptable within our community:
|
||||
|
||||
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
- Any other conduct which would reasonably be considered inappropriate in a professional setting.
|
||||
- Public and/or private harassment of any kind.
|
||||
- Publishing others' private information, such as a physical address and/or an email address, without their explicit permission.
|
||||
- The use of sexualized language or imagery, and sexual attention or advances of any kind.
|
||||
- Trolling, insulting and/or derogatory comments, including personal or political attacks.
|
||||
|
||||
## Scope
|
||||
|
||||
Our Code of Conduct applies within all project spaces, as well as when an individual is representing the Privacy Guides project in other communities.
|
||||
|
||||
We are responsible for clarifying the standards of our community, and have the right to remove or alter the comments of those participating within our community, as necessary and at our discretion.
|
||||
We are responsible for clarifying the standards of our community and have the right to remove or alter the comments of those participating within our community, as necessary and at our discretion.
|
||||
|
||||
### Contact
|
||||
## Contact
|
||||
|
||||
If you observe a problem on a platform like Matrix or Reddit, please contact our moderators on that platform in chat, via DM, or through any designated "Modmail" system.
|
||||
If you observe a problem on a platform like Matrix or Reddit, please contact our moderators on that platform via chat, direct message, or any designated "Modmail" system.
|
||||
|
||||
If you have a problem elsewhere, or a problem our community moderators are unable to resolve, reach out to `jonah@privacyguides.org` and/or `dngray@privacyguides.org`.
|
||||
If you have a problem elsewhere, or a problem that our community moderators are unable to resolve, reach out to `jonah@privacyguides.org` and/or `dngray@privacyguides.org`.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
|
||||
All community leaders are obligated to respect the privacy and security of reporters for all incidents.
|
||||
|
152
docs/about.md
Normal file
@ -0,0 +1,152 @@
|
||||
---
|
||||
title: "About Privacy Guides"
|
||||
description: Privacy Guides is a socially motivated website that provides information for protecting your data security and privacy.
|
||||
schema:
|
||||
"@context": https://schema.org
|
||||
"@type": Organization
|
||||
"@id": https://www.privacyguides.org/
|
||||
name: Privacy Guides
|
||||
url: https://www.privacyguides.org/en/about/
|
||||
logo: https://www.privacyguides.org/en/assets/brand/logos/png/square/pg-yellow.png
|
||||
sameAs:
|
||||
- https://twitter.com/privacy_guides
|
||||
- https://github.com/privacyguides
|
||||
- https://www.wikidata.org/wiki/Q111710163
|
||||
- https://opencollective.com/privacyguides
|
||||
- https://www.youtube.com/@privacyguides
|
||||
- https://mastodon.neat.computer/@privacyguides
|
||||
---
|
||||
{ align=right }
|
||||
|
||||
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. We are a non-profit project with a mission to inform the public about the value of digital privacy, and about global government initiatives which aim to monitor your online activity. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||
|
||||
[:octicons-heart-16:{.pg-red} Make a Donation](about/donate.md){ .md-button .md-button--primary }
|
||||
[:octicons-home-16:](https://www.privacyguides.org){ .card-link title=Homepage }
|
||||
[:octicons-code-16:](https://github.com/privacyguides/privacyguides.org){ .card-link title="Source Code" }
|
||||
|
||||
## Executive Committee
|
||||
<!-- markdownlint-disable MD030 -->
|
||||
|
||||
The project executive committee consists of five volunteers charged with management of the [MAGIC Privacy Guides Fund](https://magicgrants.org/funds/privacy_guides), making most critical project-related decisions.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
<!-- Every team member should have a unique emoji.
|
||||
Team member cards should include ONLY the following links:
|
||||
- Discourse Profile
|
||||
- ONE Link of team member's choice
|
||||
- Email if applicable
|
||||
This is to keep it fair and not spammy, especially as we grow.
|
||||
-->
|
||||
|
||||
- :polar_bear:{ .lg .middle } **Daniel Gray**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/dngray)
|
||||
|
||||
[:simple-github:](<https://github.com/dngray> "GitHub")
|
||||
[:simple-mastodon:](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
|
||||
[:material-email:](mailto:dngray@privacyguides.org "Email")
|
||||
|
||||
- :detective:{ .lg .middle } **Freddy**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/freddy)
|
||||
|
||||
[:simple-github:](https://github.com/freddy-m "GitHub")
|
||||
[:simple-mastodon:](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
|
||||
[:material-email:](mailto:freddy@privacyguides.org "Email")
|
||||
|
||||
- :robot:{ .lg .middle } **Jonah Aragon**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/jonah)
|
||||
|
||||
[:simple-github:](https://github.com/jonaharagon "GitHub")
|
||||
[:simple-mastodon:](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me}
|
||||
[:material-email:](mailto:jonah@privacyguides.org "Email")
|
||||
|
||||
- :cactus:{ .lg .middle } **Niek de Wilde**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/Niek-de-Wilde)
|
||||
|
||||
[:simple-github:](https://github.com/blacklight447 "GitHub")
|
||||
[:simple-mastodon:](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
|
||||
[:material-email:](mailto:niekdewilde@privacyguides.org "Email")
|
||||
|
||||
- :smirk_cat:{ .lg .middle } **Olivia**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/olivia)
|
||||
|
||||
[:simple-github:](https://github.com/hook9 "GitHub")
|
||||
[:simple-mastodon:](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
|
||||
|
||||
</div>
|
||||
|
||||
## Volunteer Team
|
||||
|
||||
A number of other contributors have volunteered their time to review and approve changes to this website, and keep the website up to date. Changes require 2+ approvals from team members before they can be merged. In addition to the executive committee members above, volunteers [trusted](https://github.com/orgs/privacyguides/people) to review pull requests include:
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- [:simple-github: **kimg45**](https://github.com/kimg45)
|
||||
- [:simple-github: **ph00lt0**](https://github.com/ph00lt0)
|
||||
- [:simple-github: **redoomed1**](https://github.com/redoomed1)
|
||||
|
||||
</div>
|
||||
|
||||
We also especially thank our dedicated moderation team on Matrix and our forum: *Austin Huang*, *namazso*, *hik*, *riley*, and *Valynor*.
|
||||
|
||||
Additionally, [many other people](about/contributors.md) have made contributions to the project. You can too! We're open source on GitHub, and accepting translation suggestions on [Crowdin](https://crowdin.com/project/privacyguides).
|
||||
|
||||
Our team members review all changes made to the website and direct the course of the project as a whole. They do not personally profit from any contributions made to this site. Donations to Privacy Guides are generally tax-deductible in the United States.
|
||||
|
||||
## In The Media
|
||||
|
||||
> To find [privacy-focused alternative] apps, check out sites like Good Reports and **Privacy Guides**, which list privacy-focused apps in a variety of categories, notably including email providers (usually on paid plans) that aren’t run by the big tech companies.
|
||||
|
||||
— [New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy)
|
||||
|
||||
> If you're looking for a new VPN, you can go to the discount code of just about any podcast. If you are looking for a **good** VPN, you need professional help. The same goes for email clients, browsers, operating systems and password managers. How do you know which of these is the best, most privacy-friendly option? For that there is **Privacy Guides**, a platform on which a number of volunteers search day in, day out for the best privacy-friendly tools to use on the internet.
|
||||
|
||||
— [Tweakers.net](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html) [Translated from Dutch]
|
||||
|
||||
Also featured on: [Ars Technica](https://arstechnica.com/gadgets/2022/02/is-firefox-ok), [Wirecutter](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-windows-pc) [[2](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-your-mac)], [NPO Radio 1](https://nporadio1.nl/nieuws/binnenland/8eaff3a2-8b29-4f63-9b74-36d2b28b1fe1/ooit-online-eens-wat-doms-geplaatst-ga-jezelf-eens-googlen-en-kijk-dan-wat-je-tegenkomt), and [Wired](https://wired.com/story/firefox-mozilla-2022).
|
||||
|
||||
## History
|
||||
|
||||
Privacy Guides was launched in September 2021 as a continuation of the [defunct](about/privacytools.md) "PrivacyTools" open-source educational project. We recognized the importance of independent, criteria-focused product recommendations and general knowledge in the privacy space, which is why we needed to preserve the work that had been created by so many contributors since 2015 and make sure that information had a stable home on the web indefinitely.
|
||||
|
||||
In 2022, we completed the transition of our main website framework from Jekyll to MkDocs, using the `mkdocs-material` documentation software. This change made open-source contributions to our site significantly easier for outsiders, because instead of needing to know complicated syntax to write posts effectively, contributing is now as easy as writing a standard Markdown document.
|
||||
|
||||
We additionally launched our new discussion forum at [discuss.privacyguides.net](https://discuss.privacyguides.net) as a community platform to share ideas and ask questions about our mission. This augments our existing community on Matrix, and replaced our previous GitHub Discussions platform, decreasing our reliance on proprietary discussion platforms.
|
||||
|
||||
In 2023, we launched international translations of our website in [French](https://www.privacyguides.org/fr/), [Hebrew](https://www.privacyguides.org/he/), [Dutch](https://www.privacyguides.org/nl/), and more languages, made possible by our excellent translation team on [Crowdin](https://crowdin.com/project/privacyguides). We plan to continue carrying forward our mission of outreach and education, and finding ways to more clearly highlight the dangers of a lack of privacy awareness in the modern digital age, and the prevalence and harms of security breaches across the technology industry.
|
||||
|
||||
## Site License
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
|
||||
|
||||
</div>
|
||||
|
||||
:fontawesome-brands-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: Unless otherwise noted, the original content on this website is made available under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). This means that you are free to copy and redistribute the material in any medium or format for any purpose, even commercially; as long as you give appropriate credit to `Privacy Guides (www.privacyguides.org)` and share your work under the same license.
|
||||
|
||||
You may comply with these terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use.
|
20
docs/about/contributors.md
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Contributors
|
||||
hide:
|
||||
- toc
|
||||
---
|
||||
<!-- Do NOT manually edit this file, please add yourself to the .all-contributorsrc file instead. See our GitHub Issues for more details -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of **any** kind are welcome to be added to [this list](https://github.com/privacyguides/privacyguides.org/blob/main/.all-contributorsrc), including contributions to Privacy Guides outside of this repo, and contributions that aren't content related (like sharing ideas for Privacy Guides, promoting the project, answering questions on the forum, etc.).
|
||||
|
||||
| Emoji | Type | Description
|
||||
| --- | --- | ---
|
||||
| 📖 | `doc` | A contributor to the content on [privacyguides.org](https://www.privacyguides.org/en/).
|
||||
| 👀 | `review` | Someone who has taken the time to review [pull requests](https://github.com/privacyguides/privacyguides.org/pulls) to the site.
|
||||
| 📝 | `blog` | Someone who has written a [blog](https://blog.privacyguides.org) post for us.
|
||||
| 💬 | `question` | Someone who has been helpful when answering questions on our [forum](https://discuss.privacyguides.net) or Matrix channels.
|
||||
| 🌍 | `translation` | Someone who has contributed on [Crowdin](https://crowdin.com/project/privacyguides).
|
||||
|
||||
A huge thank you from Privacy Guides to these wonderful people ([full emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||
|
||||
--8<-- "includes/contributors.md"
|
@ -2,27 +2,19 @@
|
||||
title: General Criteria
|
||||
---
|
||||
|
||||
!!! example "Work in Progress"
|
||||
Below are some general priorities we consider for all submissions to Privacy Guides. Each category will have additional requirements for inclusion.
|
||||
|
||||
The following page is a work in progress, and does not reflect the full criteria for our recommendations at this time. Past discussion on this topic: [#24](https://github.com/privacyguides/privacyguides.org/discussions/24)
|
||||
|
||||
Below are some things that must apply to all submissions to Privacy Guides. Each category will have additional requirements for inclusion.
|
||||
- **Security**: Tools should follow security best-practices wherever applicable.
|
||||
- **Source Availability**: Open-source projects are generally preferred over equivalent proprietary alternatives.
|
||||
- **Cross-Platform Availability**: We typically prefer recommendations to be cross-platform, to avoid vendor lock-in.
|
||||
- **Active Development**: The tools that we recommend should be actively developed, unmaintained projects will be removed in most cases.
|
||||
- **Usability**: Tools should be accessible to most computer users, an overly technical background should not be required.
|
||||
- **Documentation**: Tools should have clear and extensive documentation for use.
|
||||
|
||||
## Financial Disclosure
|
||||
|
||||
We do not make money from recommending certain products, we do not use affiliate links, and we do not provide special consideration to project donors.
|
||||
|
||||
## General Guidelines
|
||||
|
||||
We apply these priorities when considering new recommendations:
|
||||
|
||||
- **Secure**: Tools should follow security best-practices wherever applicable.
|
||||
- **Source Availability**: Open source projects are generally preferred over equivalent proprietary alternatives.
|
||||
- **Cross-Platform**: We typically prefer recommendations to be cross-platform, to avoid vendor lock-in.
|
||||
- **Active Development**: The tools that we recommend should be actively developed, unmaintained projects will be removed in most cases.
|
||||
- **Usability**: Tools should be accessible to most computer users, an overly technical background should not be required.
|
||||
- **Documented**: Tools should have clear and extensive documentation for use.
|
||||
|
||||
## Developer Self-Submissions
|
||||
|
||||
We have these requirements in regard to developers which wish to submit their project or software for consideration.
|
||||
|
@ -1,49 +1,51 @@
|
||||
---
|
||||
title: Supporting Us
|
||||
title: Donate
|
||||
---
|
||||
<!-- markdownlint-disable MD036 -->
|
||||
It takes a lot of [people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you like what we do, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org) or [contributing translations](https://crowdin.com/project/privacyguides).
|
||||
Donate to Privacy Guides and support our mission to defend digital rights and spread the word about mass surveillance programs and other daily privacy invasions. You can help Privacy Guides researchers, activists, and maintainers create informative content, host private digital services, and protect privacy rights at a time when the world needs it most.
|
||||
|
||||
If you want to support us financially, the most convenient method for us is contributing via Open Collective, a website operated by our fiscal host. Open Collective accepts payments via credit/debit card, PayPal, and bank transfers.
|
||||
Privacy Guides has been a nonstop effort for over 5 years to stay up to date with the world of cybersecurity and privacy, and to promote the benefits of privacy overall. This is a **non-profit, community-driven** project that would not be possible without the generous support of all our [contributors](contributors.md).
|
||||
|
||||
[Donate on OpenCollective.com](https://opencollective.com/privacyguides/donate){ class="md-button md-button--primary" }
|
||||
## Donate
|
||||
|
||||
Donations made directly to us on Open Collective are generally tax-deductible in the US, because our fiscal host (the Open Collective Foundation) is a registered 501(c)3 organization. You will receive a receipt from the Open Collective Foundation after donating. Privacy Guides does not provide financial advice, and you should contact your tax advisor to find out whether this is applicable to you.
|
||||
Currently, the best way to support our work is to send a monthly or one-time contribution via GitHub Sponsors. We will be able to accept donations via alternate payment platforms very soon.
|
||||
|
||||
If you already make use of GitHub sponsorships, you can also sponsor our organization there.
|
||||
[:material-heart:{ .pg-red } Sponsor us on GitHub](https://github.com/sponsors/privacyguides){ class="md-button md-button--primary" }
|
||||
|
||||
[Sponsor us on GitHub](https://github.com/sponsors/privacyguides){ .md-button }
|
||||
|
||||
Another option to support us is by buying our merchandise from HelloTux. We get roughly $4 for every shirt sold, and you get a quality product to show for it.
|
||||
|
||||
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
|
||||
|
||||
## Backers
|
||||
|
||||
A special thanks to all those who support our mission! :heart:
|
||||
|
||||
*Please note: This section loads a widget directly from Open Collective. This section does not reflect donations made outside of Open Collective, and we have no control over the specific donors featured in this section.*
|
||||
|
||||
<script src="https://opencollective.com/privacyguides/banner.js"></script>
|
||||
A new donation platform we control to make donating easier will be deployed soon. In the meantime, if you'd like to arrange a donation (including with cryptocurrency), please reach out to [info@magicgrants.org](mailto:info@magicgrants.org).
|
||||
|
||||
## How We Use Donations
|
||||
|
||||
Privacy Guides is a **non-profit** organization. We use donations for a variety of purposes, including:
|
||||
|
||||
**Domain Registrations**
|
||||
|
||||
: We have a few domain names like `privacyguides.org` which cost us around $10 yearly to maintain their registration.
|
||||
|
||||
**Web Hosting**
|
||||
|
||||
: Traffic to this website uses hundreds of gigabytes of data per month, we use a variety of service providers to keep up with this traffic.
|
||||
|
||||
**Domain Registrations**
|
||||
|
||||
: We have a few domain names like `privacyguides.org` which cost us around $10 yearly to maintain their registration.
|
||||
|
||||
**Online Services**
|
||||
|
||||
: We host [internet services](https://privacyguides.net) for testing and showcasing different privacy-products we like and [recommend](../tools.md). Some of which are made publicly available for our community's use (SearXNG, Tor, etc.), and some are provided for our team members (email, etc.).
|
||||
: We host [internet services](services.md) for testing and showcasing different privacy-products we like and [recommend](../tools.md). Some of them are made publicly available for our community's use (SearXNG, Tor, etc.), and some are provided for our team members (email, etc.).
|
||||
|
||||
**Product Purchases**
|
||||
|
||||
: We occasionally purchase products and services for the purposes of testing our [recommended tools](../tools.md).
|
||||
|
||||
We are still working with our fiscal host (the Open Collective Foundation) to receive cryptocurrency donations, at the moment the accounting is unfeasible for many smaller transactions, but this should change in the future. In the meantime, if you wish to make a sizable (> $100) cryptocurrency donation, please reach out to [jonah@privacyguides.org](mailto:jonah@privacyguides.org).
|
||||
Your donation will go to a [dedicated fund](https://magicgrants.org/funds/privacy_guides) within [MAGIC Grants](https://magicgrants.org), a 501(c)(3) organization. The funds will only be used for this project specifically. You may qualify for a tax deduction. If you need a donation receipt, please email <info@magicgrants.org>.
|
||||
|
||||
Thank you to all those who support our mission! :material-heart:{ .pg-red }
|
||||
|
||||
We strictly **cannot** use donations to support political campaigns/candidates or attempt to influence legislation. Earnings also will **not** inure to the benefit of any private shareholder or individual.
|
||||
|
||||
## Merchandise
|
||||
|
||||
Another option to support us is by buying our merchandise from HelloTux. We get a small commission for each item sold, and you get a quality product to show for it.
|
||||
|
||||
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
|
||||
|
||||
## Non-Financial Support
|
||||
|
||||
It takes a lot of [people](contributors.md) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spread the word about privacy and mass surveillance. If you're looking for other ways to help out, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org), [joining our forum](https://discuss.privacyguides.net), or [contributing translations](https://crowdin.com/project/privacyguides).
|
||||
|
@ -1,95 +0,0 @@
|
||||
---
|
||||
title: "About Privacy Guides"
|
||||
description: Privacy Guides is a socially motivated website that provides information for protecting your data security and privacy.
|
||||
schema:
|
||||
"@context": https://schema.org
|
||||
"@type": Organization
|
||||
"@id": https://www.privacyguides.org/
|
||||
name: Privacy Guides
|
||||
url: https://www.privacyguides.org/en/about/
|
||||
logo: https://www.privacyguides.org/en/assets/brand/png/square/pg-yellow.png
|
||||
sameAs:
|
||||
- https://twitter.com/privacy_guides
|
||||
- https://github.com/privacyguides
|
||||
- https://www.wikidata.org/wiki/Q111710163
|
||||
- https://opencollective.com/privacyguides
|
||||
- https://www.youtube.com/@privacyguides
|
||||
- https://mastodon.neat.computer/@privacyguides
|
||||
---
|
||||
{ align=right }
|
||||
|
||||
**Privacy Guides** is a socially motivated website that provides [information](/kb) for protecting your data security and privacy. Our mission is to inform the public about the value of digital privacy, and global government initiatives which aim to monitor your online activity. We are a non-profit collective operated entirely by volunteer [team members](https://discuss.privacyguides.net/g/team) and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||
|
||||
[:octicons-home-16:](https://www.privacyguides.org/){ .card-link title=Homepage }
|
||||
[:octicons-code-16:](https://github.com/privacyguides/privacyguides.org){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](donate.md){ .card-link title=Contribute }
|
||||
|
||||
> To find [privacy-focused alternative] apps, check out sites like Good Reports and **Privacy Guides**, which list privacy-focused apps in a variety of categories, notably including email providers (usually on paid plans) that aren’t run by the big tech companies.
|
||||
|
||||
— [New York Times](https://www.nytimes.com/wirecutter/guides/online-security-social-media-privacy/)
|
||||
|
||||
> If you're looking for a new VPN, you can go to the discount code of just about any podcast. If you are looking for a **good** VPN, you need professional help. The same goes for email clients, browsers, operating systems and password managers. How do you know which of these is the best, most privacy-friendly option? For that there is **Privacy Guides**, a platform on which a number of volunteers search day in, day out for the best privacy-friendly tools to use on the internet.
|
||||
|
||||
— [Tweakers.net](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html) [Translated from Dutch]
|
||||
|
||||
Also featured on: [Ars Technica](https://arstechnica.com/gadgets/2022/02/is-firefox-ok/), [Wirecutter](https://www.nytimes.com/wirecutter/guides/practical-guide-to-securing-windows-pc/) [[2](https://www.nytimes.com/wirecutter/guides/practical-guide-to-securing-your-mac/)], [NPO Radio 1](https://www.nporadio1.nl/nieuws/binnenland/8eaff3a2-8b29-4f63-9b74-36d2b28b1fe1/ooit-online-eens-wat-doms-geplaatst-ga-jezelf-eens-googlen-en-kijk-dan-wat-je-tegenkomt), and [Wired](https://www.wired.com/story/firefox-mozilla-2022/).
|
||||
|
||||
## History
|
||||
|
||||
Privacy Guides was launched in September 2021 as a continuation of the [defunct](privacytools.md) "PrivacyTools" open-source educational project. We recognized the importance of independent, criteria-focused product recommendations and general knowledge in the privacy space, which is why we needed to preserve the work that had been created by so many contributors since 2015 and make sure that information had a stable home on the web indefinitely.
|
||||
|
||||
In 2022, we completed the transition of our main website framework from Jekyll to MkDocs, using the `mkdocs-material` documentation software. This change made open-source contributions to our site significantly easier for outsiders, because instead of needing to know complicated syntax to write posts effectively, contributing is now as easy as writing a standard Markdown document.
|
||||
|
||||
We additionally launched our new discussion forum at [discuss.privacyguides.net](https://discuss.privacyguides.net/) as a community platform to share ideas and ask questions about our mission. This augments our existing community on Matrix, and replaced our previous GitHub Discussions platform, decreasing our reliance on proprietary discussion platforms.
|
||||
|
||||
So far in 2023 we've launched international translations of our website in [French](/fr/), [Hebrew](/he/), and [Dutch](/nl/), with more languages on the way, made possible by our excellent translation team on [Crowdin](https://crowdin.com/project/privacyguides). We plan to continue carrying forward our mission of outreach and education, and finding ways to more clearly highlight the dangers of a lack of privacy awareness in the modern digital age, and the prevalence and harms of security breaches across the technology industry.
|
||||
|
||||
## Our Team
|
||||
|
||||
??? person "@jonah"
|
||||
|
||||
- [:simple-discourse: Discourse](https://discuss.privacyguides.net/u/jonah)
|
||||
- [:simple-github: GitHub](https://github.com/jonaharagon "@jonaharagon")
|
||||
- [:simple-mastodon: Mastodon](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me}
|
||||
- [:fontawesome-solid-house: Homepage](https://www.jonaharagon.com)
|
||||
|
||||
??? person "@niek-de-wilde"
|
||||
|
||||
- [:simple-discourse: Discourse](https://discuss.privacyguides.net/u/Niek-de-Wilde)
|
||||
- [:simple-github: GitHub](https://github.com/blacklight447 "@blacklight447")
|
||||
- [:simple-mastodon: Mastodon](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
|
||||
- [:fontawesome-solid-envelope: Email](mailto:niekdewilde@privacyguides.org)
|
||||
|
||||
??? person "@dngray"
|
||||
|
||||
- [:simple-discourse: Discourse](https://discuss.privacyguides.net/u/dngray)
|
||||
- [:simple-github: GitHub](https://github.com/dngray "@dngray")
|
||||
- [:simple-mastodon: Mastodon](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
|
||||
- [:fontawesome-solid-envelope: Email](mailto:dngray@privacyguides.org)
|
||||
|
||||
??? person "@freddy"
|
||||
|
||||
- [:simple-discourse: Discourse](https://discuss.privacyguides.net/u/freddy)
|
||||
- [:simple-github: GitHub](https://github.com/freddy-m "@freddy-m")
|
||||
- [:simple-mastodon: Mastodon](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
|
||||
- [:fontawesome-solid-house: Homepage](https://freddy.lol)
|
||||
|
||||
??? person "@olivia"
|
||||
|
||||
- [:simple-discourse: Discourse](https://discuss.privacyguides.net/u/olivia)
|
||||
- [:simple-github: GitHub](https://github.com/hook9 "@hook9")
|
||||
- [:simple-mastodon: Mastodon](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
|
||||
|
||||
Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) have made contributions to the project. You can too, we're open sourced on GitHub, and accepting translation suggestions on [Crowdin](https://crowdin.com/project/privacyguides).
|
||||
|
||||
Our team members review all changes made to the website and handle administrative duties such as web hosting and financials, however they do not personally profit from any contributions made to this site. Our financials are transparently hosted by the Open Collective Foundation 501(c)(3) at [opencollective.com/privacyguides](https://opencollective.com/privacyguides). Donations to Privacy Guides are generally tax-deductible in the United States.
|
||||
|
||||
## Site License
|
||||
|
||||
!!! danger ""
|
||||
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](/license).
|
||||
|
||||
:fontawesome-brands-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-nd: Unless otherwise noted, the original content on this website is made available under the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). This means that you are free to copy and redistribute the material in any medium or format for any purpose, even commercially; as long as you give appropriate credit to `Privacy Guides (www.privacyguides.org)` and provide a link to the license. You may do so in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. If you remix, transform, or build upon the content of this website, you may not distribute the modified material.
|
||||
|
||||
This license is in place to prevent people from sharing our work without giving proper credit, and to prevent people from modifying our work in a way that could be used to mislead people. If you find the terms of this license too restrictive for the project you're working on, please reach out to us at `jonah@privacyguides.org`. We are happy to provide alternative licensing options for well-intentioned projects in the privacy space!
|
@ -8,28 +8,29 @@ Privacy Guides is not a law firm. As such, the Privacy Guides website and contri
|
||||
|
||||
Running this website, like any human endeavor, involves uncertainty and trade-offs. We hope this website helps, but it may include mistakes and can’t address every situation. If you have any questions about your situation, we encourage you to do your own research, seek out other experts, and engage in discussions with the Privacy Guides community. If you have any legal questions, you should consult with your own legal counsel before moving forward.
|
||||
|
||||
Privacy Guides is an open source project contributed to under licenses that include terms that, for the protection of the website and its contributors, make clear that the Privacy Guides project and website is offered "as-is", without warranty, and disclaiming liability for damages resulting from using the website or any recommendations contained within. Privacy Guides does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the website or otherwise relating to such materials on the website or on any third-party sites linked on this site.
|
||||
Privacy Guides is an open-source project contributed to under licenses that include terms that, for the protection of the website and its contributors, make clear that the Privacy Guides project and website is offered "as-is", without warranty, and disclaiming liability for damages resulting from using the website or any recommendations contained within. Privacy Guides does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the website or otherwise relating to such materials on the website or on any third-party sites linked on this site.
|
||||
|
||||
Privacy Guides additionally does not warrant that this website will be constantly available, or available at all.
|
||||
|
||||
## Licensing Overview
|
||||
|
||||
!!! danger ""
|
||||
<div class="admonition danger" markdown>
|
||||
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](/license).
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
|
||||
|
||||
Unless otherwise noted, all **content** on this website is made available under the terms of the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). The underlying **source code** used to generate this website and display that content is released under the [MIT License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE-CODE).
|
||||
</div>
|
||||
|
||||
This does not include third-party code embedded in this repository, or code where a superseding license is otherwise noted. The following are notable examples, but this list may not be all-inclusive:
|
||||
Unless otherwise noted, all **content** on this website is released under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE). This means that you can use the human-readable content on this website for your own project, as long as you give appropriate credit to [Privacy Guides](https://www.privacyguides.org) including a link where technically possible, and you release your project under the same license. You may not do so in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides brand trademarks in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||
|
||||
* [MathJax](https://github.com/privacyguides/privacyguides.org/blob/main/theme/assets/javascripts/mathjax.js) is licensed under the [Apache License 2.0](https://github.com/privacyguides/privacyguides.org/blob/main/docs/assets/javascripts/LICENSE.mathjax.txt).
|
||||
* The [Bagnard](https://github.com/privacyguides/brand/tree/main/WOFF/bagnard) heading font is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/main/WOFF/bagnard/LICENSE.txt).
|
||||
* The [Public Sans](https://github.com/privacyguides/brand/tree/main/WOFF/public_sans) font used for most text on the site is licensed under the terms detailed [here](https://github.com/privacyguides/brand/blob/main/WOFF/public_sans/LICENSE.txt).
|
||||
* The [DM Mono](https://github.com/privacyguides/brand/tree/main/WOFF/dm_mono) font used for monospaced text on the site is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/main/WOFF/dm_mono/LICENSE.txt).
|
||||
The underlying **source code** used to generate this website and display that content is released under the [MIT License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE-CODE).
|
||||
|
||||
This means that you can use the human-readable content in this repository for your own project, per the terms outlined in the Creative Commons Attribution-NoDerivatives 4.0 International Public License text. You may do so in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides branding in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||
This does not include third-party code embedded in the Privacy Guides code repository, or code where a superseding license is otherwise noted. The following are notable examples, but this list may not be all-inclusive:
|
||||
|
||||
We believe that the logos and other images in `assets` obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://www.copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject matter for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
* The [Bagnard](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard) heading font is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard/LICENSE.txt).
|
||||
* The [Public Sans](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans) font used for most text on the site is licensed under the terms detailed [here](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans/LICENSE.txt).
|
||||
* The [DM Mono](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono) font used for monospaced text on the site is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono/LICENSE.txt).
|
||||
|
||||
We believe that the logos and other images in `assets` obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject matter for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
|
||||
When you contribute to our website you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
|
||||
|
||||
@ -47,4 +48,4 @@ You must not conduct any systematic or automated data collection activities on o
|
||||
|
||||
---
|
||||
|
||||
*Portions of this notice itself were adopted from [opensource.guide](https://github.com/github/opensource.guide/blob/master/notices.md) on GitHub. That resource and this page itself are released under [CC-BY-4.0](https://creativecommons.org/licenses/by-sa/4.0/).*
|
||||
*Portions of this notice itself were adopted from [opensource.guide](https://github.com/github/opensource.guide/blob/master/notices.md) on GitHub. That resource and this page itself are released under [CC-BY-4.0](https://creativecommons.org/licenses/by-sa/4.0).*
|
||||
|
@ -7,13 +7,18 @@ Privacy Guides is a community project operated by a number of active volunteer c
|
||||
|
||||
The privacy of our website visitors is important to us, so we do not track any individual people. As a visitor to our website:
|
||||
|
||||
- No personal information is collected
|
||||
- No information such as cookies are stored in the browser
|
||||
- No personal information is stored
|
||||
- No information is shared with, sent to or sold to third-parties
|
||||
- No information is shared with advertising companies
|
||||
- No information is mined and harvested for personal and behavioral trends
|
||||
- No information is monetized
|
||||
|
||||
You can view the data we collect on our [statistics](statistics.md) page.
|
||||
|
||||
We run a self-hosted installation of [Umami](https://umami.is) to collect some anonymous usage data for statistical purposes. The goal is to track overall trends in our website traffic, it is not to track individual visitors. All the data is in aggregate only, and no personal data is stored.
|
||||
|
||||
The only data which is collected is data sent in a standard web request, which includes referral sources, the page you're visiting, your user agent, your IP address, and your screen resolution. The raw data is immediately discarded after statistics have been generated, for example if we collect your screen resolution as `1125x2436`, the only data we retain is "mobile device" and not your specific resolution.
|
||||
|
||||
## Data We Collect From Account Holders
|
||||
|
||||
If you register for an account on one of our services, we may collect any information you provide us (such as your email, password, profile information, etc.) and use that information to provide you with the service. We never share or sell this data.
|
||||
|
@ -1,8 +1,6 @@
|
||||
---
|
||||
title: "PrivacyTools FAQ"
|
||||
---
|
||||
# Why we moved on from PrivacyTools
|
||||
|
||||
In September 2021, every active contributor unanimously agreed to move from PrivacyTools to work on this site: Privacy Guides. This decision was made because PrivacyTools’ founder and controller of the domain name had disappeared for an extended period of time and could not be contacted.
|
||||
|
||||
Having built a reputable site and set of services on PrivacyTools.io, this caused grave concerns for the future of PrivacyTools, as any future disruption could wipe out the entire organization with no recovery method. This transition was communicated to the PrivacyTools community many months in advance via a variety of channels including its blog, Twitter, Reddit, and Mastodon to ensure the entire process went as smoothly as possible. We did this to ensure nobody was kept in the dark, which has been our modus operandi since our team was created, and to make sure Privacy Guides was recognized as the same reliable organization that PrivacyTools was before the transition.
|
||||
@ -13,13 +11,13 @@ After the organizational move was completed, the founder of PrivacyTools returne
|
||||
|
||||
PrivacyTools was created in 2015 by "BurungHantu," who wanted to make a privacy information resource - helpful tools following the Snowden revelations. The site grew into a flourishing open-source project with [many contributors](https://github.com/privacytools/privacytools.io/graphs/contributors), some eventually given various organizational responsibilities, such as operating online services like Matrix and Mastodon, managing and reviewing changes to the site on GitHub, finding sponsors for the project, writing blog posts and operating social media outreach platforms like Twitter, etc.
|
||||
|
||||
Beginning in 2019, BurungHantu grew more and more distant from the active development of the website and communities, and began delaying payments he was responsible for related to the servers we operated. To avoid having our system administrator pay server costs out of their own pocket, we changed the donation methods listed on the site from BurungHantu's personal PayPal and crypto accounts to a new OpenCollective page on [October 31, 2019](https://web.archive.org/web/20210729184557/https://blog.privacytools.io/privacytools-io-joins-the-open-collective-foundation/). This had the added benefits of making our finances completely transparent, a value we strongly believe in, and tax-deductible in the United States, because they were being held by the Open Collective Foundation 501(c)3. This change was unanimously agreed upon by the team and went uncontested.
|
||||
Beginning in 2019, BurungHantu grew more and more distant from the active development of the website and communities, and began delaying payments he was responsible for related to the servers we operated. To avoid having our system administrator pay server costs out of their own pocket, we changed the donation methods listed on the site from BurungHantu's personal PayPal and crypto accounts to a new OpenCollective page on [October 31, 2019](https://web.archive.org/web/20210729184557/https://blog.privacytools.io/privacytools-io-joins-the-open-collective-foundation). This had the added benefits of making our finances completely transparent, a value we strongly believe in, and tax-deductible in the United States, because they were being held by the Open Collective Foundation 501(c)3. This change was unanimously agreed upon by the team and went uncontested.
|
||||
|
||||
## Why We Moved On
|
||||
|
||||
In 2020, BurungHantu's absence grew much more noticeable. At one point, we required the domain's nameservers to be changed to nameservers controlled by our system administrator to avoid future disruption, and this change was not completed for over a month after the initial request. He would disappear from the public chat and private team chat rooms on Matrix for months at a time, occasionally popping in to give some small feedback or promise to be more active before disappearing once again.
|
||||
|
||||
In October 2020, the PrivacyTools system administrator (Jonah) [left](https://web.archive.org/web/20210729190742/https://blog.privacytools.io/blacklight447-taking-over/) the project because of these difficulties, handing control to another long-time contributor. Jonah had been operating nearly every PrivacyTools service and acting as the *de facto* project lead for website development in BurungHantu's absence, thus his departure was a significant change to the organization. At the time, because of these significant organizational changes, BurungHantu promised the remaining team he would return to take control of the project going forward. ==The PrivacyTools team reached out via several communication methods over the following months, but did not receive any response.==
|
||||
In October 2020, the PrivacyTools system administrator (Jonah) [left](https://web.archive.org/web/20210729190742/https://blog.privacytools.io/blacklight447-taking-over) the project because of these difficulties, handing control to another long-time contributor. Jonah had been operating nearly every PrivacyTools service and acting as the *de facto* project lead for website development in BurungHantu's absence, thus his departure was a significant change to the organization. At the time, because of these significant organizational changes, BurungHantu promised the remaining team he would return to take control of the project going forward. ==The PrivacyTools team reached out via several communication methods over the following months, but did not receive any response.==
|
||||
|
||||
## Domain Name Reliance
|
||||
|
||||
@ -33,27 +31,27 @@ In mid-2021 the PrivacyTools team reached out to Jonah, who agreed to rejoin the
|
||||
|
||||
## Community Call to Action
|
||||
|
||||
At the end of July 2021, we [informed](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools/) the PrivacyTools community of our intention to choose a new name and continue the project on a new domain, to be [chosen](https://web.archive.org/web/20210729190935/https://aragon.cloud/apps/forms/cMPxG9KyopapBbcw) on 2nd August 2022. In the end, "Privacy Guides" was selected, with the `privacyguides.org` domain already owned by Jonah for a side-project from 2020 that went undeveloped.
|
||||
At the end of July 2021, we [informed](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools) the PrivacyTools community of our intention to choose a new name and continue the project on a new domain, to be [chosen](https://web.archive.org/web/20210729190935/https://aragon.cloud/apps/forms/cMPxG9KyopapBbcw) on 2nd August 2022. In the end, "Privacy Guides" was selected, with the `privacyguides.org` domain already owned by Jonah for a side-project from 2020 that went undeveloped.
|
||||
|
||||
## Control of r/privacytoolsIO
|
||||
|
||||
Simultaneously with the ongoing website issues at privacytools.io, the r/privacytoolsIO moderation team was facing challenges with managing the subreddit. The subreddit had always been operated mostly independently of the website's development, but BurungHantu was the primary moderator of the subreddit as well, and he was the only moderator granted "Full Control" privileges. u/trai_dep was the only active moderator at the time, and [posted](https://www.reddit.com/r/redditrequest/comments/o9tllh/requesting_rprivacytoolsio_im_only_active_mod_top/) a request to Reddit's administrators on June 28, 2021, asking to be granted the primary moderator position and full control privileges, in order to make necessary changes to the Subreddit.
|
||||
Simultaneously with the ongoing website issues at privacytools.io, the r/privacytoolsIO moderation team was facing challenges with managing the subreddit. The subreddit had always been operated mostly independently of the website's development, but BurungHantu was the primary moderator of the subreddit as well, and he was the only moderator granted "Full Control" privileges. u/trai_dep was the only active moderator at the time, and [posted](https://reddit.com/comments/o9tllh) a request to Reddit's administrators on June 28, 2021, asking to be granted the primary moderator position and full control privileges, in order to make necessary changes to the Subreddit.
|
||||
|
||||
Reddit requires that subreddits have active moderators. If the primary moderator is inactive for a lengthy period of time (such as a year) the primary moderation position can be re-appointed to the next moderator in line. For this request to have been granted, BurungHantu had to have been completely absent from all Reddit activity for a long period of time, which was consistent with his behaviors on other platforms.
|
||||
|
||||
> If you were removed as moderator from a subreddit through Reddit request it is because your lack of response and lack of activity qualified the subreddit for an r/redditrequest transfer.
|
||||
>
|
||||
> r/redditrequest is Reddit's way of making sure communities have active moderators and is part of the [Moderator Code of Conduct](https://www.redditinc.com/policies/moderator-code-of-conduct).
|
||||
> r/redditrequest is Reddit's way of making sure communities have active moderators and is part of the [Moderator Code of Conduct](https://redditinc.com/policies/moderator-code-of-conduct).
|
||||
|
||||
## Beginning the Transition
|
||||
|
||||
On September 14th, 2021, we [announced](https://www.privacyguides.org/blog/2021/09/14/welcome-to-privacy-guides/) the beginning of our migration to this new domain:
|
||||
On September 14th, 2021, we [announced](https://blog.privacyguides.org/2021/09/14/welcome-to-privacy-guides) the beginning of our migration to this new domain:
|
||||
|
||||
> [...] we found it necessary to make this switch sooner rather than later to ensure people would find out about this transition as soon as possible. This gives us adequate time to transition the domain name, which is currently redirecting to www.privacyguides.org, and it hopefully gives everyone enough time to notice the change, update bookmarks and websites, etc.
|
||||
> [...] we found it necessary to make this switch sooner rather than later to ensure people would find out about this transition as soon as possible. This gives us adequate time to transition the domain name, which is currently redirecting to `www.privacyguides.org`, and it hopefully gives everyone enough time to notice the change, update bookmarks and websites, etc.
|
||||
|
||||
This change [entailed:](https://www.reddit.com/r/PrivacyGuides/comments/pnhn4a/rprivacyguides_privacyguidesorg_what_you_need_to/)
|
||||
This change [entailed:](https://reddit.com/comments/pnhn4a)
|
||||
|
||||
- Redirecting www.privacytools.io to [www.privacyguides.org](https://www.privacyguides.org).
|
||||
- Redirecting `www.privacytools.io` to [www.privacyguides.org](https://www.privacyguides.org).
|
||||
- Archiving the source code on GitHub to preserve our past work and issue tracker, which we continued to use for months of future development of this site.
|
||||
- Posting announcements to our subreddit and various other communities informing people of the official change.
|
||||
- Formally closing privacytools.io services, like Matrix and Mastodon, and encouraging existing users to migrate as soon as possible.
|
||||
@ -62,11 +60,11 @@ Things appeared to be going smoothly, and most of our active community made the
|
||||
|
||||
## Following Events
|
||||
|
||||
Roughly a week following the transition, BurungHantu returned online for the first time in nearly a year, however nobody on our team was willing to return to PrivacyTools because of his historic unreliability. Rather than apologize for his prolonged absence, he immediately went on the offensive and positioned the transition to Privacy Guides as an attack against him and his project. He subsequently [deleted](https://www.reddit.com/r/privacytoolsIO/comments/pp9yie/comment/hd49wbn) many of these posts when it was pointed out by the community that he had been absent and abandoned the project.
|
||||
Roughly a week following the transition, BurungHantu returned online for the first time in nearly a year, however nobody on our team was willing to return to PrivacyTools because of his historic unreliability. Rather than apologize for his prolonged absence, he immediately went on the offensive and positioned the transition to Privacy Guides as an attack against him and his project. He subsequently [deleted](https://reddit.com/comments/pp9yie/comment/hd49wbn) many of these posts when it was pointed out by the community that he had been absent and abandoned the project.
|
||||
|
||||
At this point, BurungHantu claimed he wanted to continue working on privacytools.io on his own and requested that we remove the redirect from www.privacytools.io to [www.privacyguides.org](https://www.privacyguides.org). We obliged and requested that he keep the subdomains for Matrix, Mastodon, and PeerTube active for us to run as a public service to our community for at least a few months, in order to allow users on those platforms to easily migrate to other accounts. Due to the federated nature of the services we provided, they were tied to specific domain names making it very difficult to migrate (and in some cases impossible).
|
||||
At this point, BurungHantu claimed he wanted to continue working on privacytools.io on his own and requested that we remove the redirect from `www.privacytools.io` to [www.privacyguides.org](https://www.privacyguides.org). We obliged and requested that he keep the subdomains for Matrix, Mastodon, and PeerTube active for us to run as a public service to our community for at least a few months, in order to allow users on those platforms to easily migrate to other accounts. Due to the federated nature of the services we provided, they were tied to specific domain names making it very difficult to migrate (and in some cases impossible).
|
||||
|
||||
Unfortunately, because control of the r/privacytoolsIO subreddit was not returned to BurungHantu at his demand (further information below), those subdomains were [cut off](https://www.reddit.com/r/PrivacyGuides/comments/pymthv/comment/hexwrps/) at the beginning of October, ending any migration possibilities to any users still using those services.
|
||||
Unfortunately, because control of the r/privacytoolsIO subreddit was not returned to BurungHantu at his demand (further information below), those subdomains were [cut off](https://reddit.com/comments/pymthv/comment/hexwrps) at the beginning of October, ending any migration possibilities to any users still using those services.
|
||||
|
||||
Following this, BurungHantu made false accusations about Jonah stealing donations from the project. BurungHantu had over a year since the alleged incident occurred, and yet he never made anyone aware of it until after the Privacy Guides migration. BurungHantu has been repeatedly asked for proof and to comment on the reason for his silence by the team [and the community](https://twitter.com/TommyTran732/status/1526153536962281474), and has not done so.
|
||||
|
||||
@ -76,19 +74,19 @@ BurungHantu also made a [twitter post](https://twitter.com/privacytoolsIO/status
|
||||
|
||||
As of September 25th 2022 we are seeing BurungHantu's overall plans come to fruition on privacytools.io, and this is the very reason we decided to create this explainer page today. The website he is operating appears to be a heavily SEO-optimized version of the site which recommends tools in exchange for financial compensation. Very recently, IVPN and Mullvad, two VPN providers near-universally [recommended](../vpn.md) by the privacy community and notable for their stance against affiliate programs were removed from PrivacyTools. In their place? NordVPN, Surfshark, ExpressVPN, and hide.me; Giant VPN corporations with untrustworthy platforms and business practices, notorious for their aggressive marketing and affiliate programs.
|
||||
|
||||
==**PrivacyTools has become exactly the type of site we [warned against](https://web.archive.org/web/20210729205249/https://blog.privacytools.io/the-trouble-with-vpn-and-privacy-reviews/) on the PrivacyTools blog in 2019.**== We've tried to keep our distance from PrivacyTools since the transition, but their continued harassment towards our project and now their absurd abuse of the credibility their brand gained over 6 years of open source contributions is extremely troubling to us. Those of us actually fighting for privacy are not fighting against each other, and are not getting our advice from the highest bidder.
|
||||
==**PrivacyTools has become exactly the type of site we [warned against](https://web.archive.org/web/20210729205249/https://blog.privacytools.io/the-trouble-with-vpn-and-privacy-reviews) on the PrivacyTools blog in 2019.**== We've tried to keep our distance from PrivacyTools since the transition, but their continued harassment towards our project and now their absurd abuse of the credibility their brand gained over 6 years of open-source contributions is extremely troubling to us. Those of us actually fighting for privacy are not fighting against each other, and are not getting our advice from the highest bidder.
|
||||
|
||||
## r/privacytoolsIO Now
|
||||
|
||||
After the launch of [r/PrivacyGuides](https://www.reddit.com/r/privacyguides), it was impractical for u/trai_dep to continue moderating both subreddits, and with the community on-board with the transition, r/privacytoolsIO was [made](https://www.reddit.com/r/privacytoolsIO/comments/qk7qrj/a_new_era_why_rptio_is_now_a_restricted_sub/) a restricted sub in a post on November 1st, 2021:
|
||||
After the launch of [r/PrivacyGuides](https://reddit.com/r/privacyguides), it was impractical for u/trai_dep to continue moderating both subreddits, and with the community on-board with the transition, r/privacytoolsIO was [made](https://reddit.com/comments/qk7qrj) a restricted sub in a post on November 1st, 2021:
|
||||
|
||||
> [...] The growth of this Sub was the result of great effort, across several years, by the PrivacyGuides.org team. And by every one of you.
|
||||
>
|
||||
> A Subreddit is a great deal of work to administer and moderate. Like a garden, it requires patient tending and daily care. It’s not a task for dilettantes or commitment-challenged people. It can’t thrive under a gardener who abandons it for several years, then shows up demanding this year’s harvest as their tribute. It’s unfair to the team formed years ago. It’s unfair to you. [...]
|
||||
> A Subreddit is a great deal of work to administer and moderate. Like a garden, it requires patient tending and daily care. It's not a task for dilettantes or commitment-challenged people. It can’t thrive under a gardener who abandons it for several years, then shows up demanding this year’s harvest as their tribute. It's unfair to the team formed years ago. It’s unfair to you. [...]
|
||||
|
||||
Subreddits do not belong to anybody, and they especially do not belong to brand-holders. They belong to their communities, and the community and its moderators made the decision to support the move to r/PrivacyGuides.
|
||||
|
||||
In the months since, BurungHantu has threatened and begged for returning subreddit control to his account in [violation](https://www.reddit.com/r/redditrequest/wiki/top_mod_removal/) of Reddit rules:
|
||||
In the months since, BurungHantu has threatened and begged for returning subreddit control to his account in [violation](https://reddit.com/r/redditrequest/wiki/top_mod_removal) of Reddit rules:
|
||||
|
||||
> Retaliation from any moderator with regards to removal requests is disallowed.
|
||||
|
||||
@ -100,18 +98,18 @@ Our fundraising platform, OpenCollective, is another source of contention. Our p
|
||||
|
||||
Thus, the funds in OpenCollective belong to Privacy Guides, they were given to our project, and not the owner of a well known domain name. In the announcement made to donors on September 17th, 2021, we offered refunds to any donor who disagrees with the stance we took, but nobody has taken us up on this offer:
|
||||
|
||||
> If any sponsors or backers disagree with or feel misled by these recent events and would like to request a refund given these highly unusual circumstances, please get in touch with our project admin by emailing jonah@triplebit.net.
|
||||
> If any sponsors or backers disagree with or feel misled by these recent events and would like to request a refund given these highly unusual circumstances, please get in touch with our project admin by emailing `jonah@triplebit.net`.
|
||||
|
||||
## Further Reading
|
||||
|
||||
This topic has been discussed extensively within our communities in various locations, and it seems likely that most people reading this page will already be familiar with the events leading up to the move to Privacy Guides. Some of our previous posts on the matter may have extra detail we omitted here for brevity. They have been linked below for the sake of completion.
|
||||
|
||||
- [June 28, 2021 request for control of r/privacytoolsIO](https://www.reddit.com/r/redditrequest/comments/o9tllh/requesting_rprivacytoolsio_im_only_active_mod_top/)
|
||||
- [July 27, 2021 announcement of our intentions to move on the PrivacyTools blog, written by the team](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools/)
|
||||
- [Sept 13, 2021 announcement of the beginning of our transition to Privacy Guides on r/privacytoolsIO](https://www.reddit.com/r/privacytoolsIO/comments/pnql46/rprivacyguides_privacyguidesorg_what_you_need_to/)
|
||||
- [June 28, 2021 request for control of r/privacytoolsIO](https://reddit.com/comments/o9tllh)
|
||||
- [July 27, 2021 announcement of our intentions to move on the PrivacyTools blog, written by the team](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools)
|
||||
- [Sept 13, 2021 announcement of the beginning of our transition to Privacy Guides on r/privacytoolsIO](https://reddit.com/pnql46)
|
||||
- [Sept 17, 2021 announcement on OpenCollective from Jonah](https://opencollective.com/privacyguides/updates/transitioning-to-privacy-guides)
|
||||
- [Sept 30, 2021 Twitter thread detailing most of the events now described on this page](https://twitter.com/privacy_guides/status/1443633412800225280)
|
||||
- [Oct 1, 2021 post by u/dng99 noting subdomain failure](https://www.reddit.com/r/PrivacyGuides/comments/pymthv/comment/hexwrps/)
|
||||
- [Apr 2, 2022 response by u/dng99 to PrivacyTools' accusatory blog post](https://www.reddit.com/comments/tuo7mm/comment/i35kw5a/)
|
||||
- [Oct 1, 2021 post by u/dng99 noting subdomain failure](https://reddit.com/comments/pymthv/comment/hexwrps)
|
||||
- [Apr 2, 2022 response by u/dng99 to PrivacyTools' accusatory blog post](https://reddit.com/comments/tuo7mm/comment/i35kw5a)
|
||||
- [May 16, 2022 response by @TommyTran732 on Twitter](https://twitter.com/TommyTran732/status/1526153497984618496)
|
||||
- [Sep 3, 2022 post on Techlore's forum by @dngray](https://discuss.techlore.tech/t/has-anyone-seen-this-video-wondering-your-thoughts/792/20)
|
||||
|
@ -13,14 +13,14 @@ We run a number of web services to test out features and promote cool decentrali
|
||||
## Gitea
|
||||
|
||||
- Domain: [code.privacyguides.dev](https://code.privacyguides.dev)
|
||||
- Availability: Invite-Only
|
||||
- Availability: Invite-Only
|
||||
Access may be granted upon request to any team working on *Privacy Guides*-related development or content.
|
||||
- Source: [snapcraft.io/gitea](https://snapcraft.io/gitea)
|
||||
|
||||
## Matrix
|
||||
|
||||
- Domain: [matrix.privacyguides.org](https://matrix.privacyguides.org)
|
||||
- Availability: Invite-Only
|
||||
- Availability: Invite-Only
|
||||
Access may be granted upon request to Privacy Guides team members, Matrix moderators, third-party Matrix community administrators, Matrix bot operators, and other individuals in need of a reliable Matrix presence.
|
||||
- Source: [github.com/spantaleev/matrix-docker-ansible-deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy)
|
||||
|
||||
@ -33,6 +33,6 @@ Access may be granted upon request to Privacy Guides team members, Matrix modera
|
||||
## Invidious
|
||||
|
||||
- Domain: [invidious.privacyguides.net](https://invidious.privacyguides.net)
|
||||
- Availability: Semi-Public
|
||||
- Availability: Semi-Public
|
||||
We host Invidious primarily to serve embedded YouTube videos on our website, this instance is not intended for general-purpose use and may be limited at any time.
|
||||
- Source: [github.com/iv-org/invidious](https://github.com/iv-org/invidious)
|
||||
|
15
docs/about/statistics.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Traffic Statistics
|
||||
---
|
||||
<!-- markdownlint-disable MD051 -->
|
||||
We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below.
|
||||
|
||||
[View Statistics](https://stats.privacyguides.net/share/nVWjyd2QfgOPBhMF/www.privacyguides.org){ .md-button .md-button--primary }
|
||||
|
||||
With this process:
|
||||
|
||||
- Your information is never shared with a third-party, it stays on servers we control
|
||||
- Your personal data is never saved, we only collect data in aggregate
|
||||
- No client-side JavaScript is used
|
||||
|
||||
Because of these facts, keep in mind our statistics may be inaccurate. It is a useful tool to compare different dates with each other and analyze overall trends, but the actual numbers may be far off from reality. In other words they're *precise* statistics, but not *accurate* statistics.
|
@ -28,7 +28,7 @@ Some self-hosted messengers allow you to set up your own server. Self-hosting ca
|
||||
- Can include [restricted control or access](https://drewdevault.com/2018/08/08/Signal.html). This can include things like:
|
||||
- Being [forbidden from connecting third-party clients](https://github.com/LibreSignal/LibreSignal/issues/37#issuecomment-217211165) to the centralized network that might provide for greater customization or a better experience. Often defined in Terms and Conditions of usage.
|
||||
- Poor or no documentation for third-party developers.
|
||||
- The [ownership](https://web.archive.org/web/20210729191953/https://blog.privacytools.io/delisting-wire/), privacy policy, and operations of the service can change easily when a single entity controls it, potentially compromising the service later on.
|
||||
- The [ownership](https://web.archive.org/web/20210729191953/https://blog.privacytools.io/delisting-wire), privacy policy, and operations of the service can change easily when a single entity controls it, potentially compromising the service later on.
|
||||
- Self-hosting requires effort and knowledge of how to set up a service.
|
||||
|
||||
## Federated Networks
|
||||
@ -60,7 +60,7 @@ When self-hosted, members of a federated server can discover and communicate wit
|
||||
|
||||
P2P messengers connect to a [distributed network](https://en.wikipedia.org/wiki/Distributed_networking) of nodes to relay a message to the recipient without a third-party server.
|
||||
|
||||
Clients (peers) usually find each other through the use of a [distributed computing](https://en.wikipedia.org/wiki/Distributed_computing) network. Examples of this include [Distributed Hash Tables](https://en.wikipedia.org/wiki/Distributed_hash_table) (DHT), used by [torrents](https://en.wikipedia.org/wiki/BitTorrent_(protocol)) and [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) for example. Another approach is proximity based networks, where a connection is established over WiFi or Bluetooth (for example, Briar or the [Scuttlebutt](https://www.scuttlebutt.nz) social network protocol).
|
||||
Clients (peers) usually find each other through the use of a [distributed computing](https://en.wikipedia.org/wiki/Distributed_computing) network. Examples of this include [Distributed Hash Tables](https://en.wikipedia.org/wiki/Distributed_hash_table) (DHT), used by [torrents](https://en.wikipedia.org/wiki/BitTorrent_(protocol)) and [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) for example. Another approach is proximity based networks, where a connection is established over WiFi or Bluetooth (for example, Briar or the [Scuttlebutt](https://scuttlebutt.nz) social network protocol).
|
||||
|
||||
Once a peer has found a route to its contact via any of these methods, a direct connection between them is made. Although messages are usually encrypted, an observer can still deduce the location and identity of the sender and recipient.
|
||||
|
||||
|
@ -18,7 +18,7 @@ Below, we discuss and provide a tutorial to prove what an outside observer may s
|
||||
|
||||
### Unencrypted DNS
|
||||
|
||||
1. Using [`tshark`](https://www.wireshark.org/docs/man-pages/tshark.html) (part of the [Wireshark](https://en.wikipedia.org/wiki/Wireshark) project) we can monitor and record internet packet flow. This command records packets that meet the rules specified:
|
||||
1. Using [`tshark`](https://wireshark.org/docs/man-pages/tshark.html) (part of the [Wireshark](https://en.wikipedia.org/wiki/Wireshark) project) we can monitor and record internet packet flow. This command records packets that meet the rules specified:
|
||||
|
||||
```bash
|
||||
tshark -w /tmp/dns.pcap udp port 53 and host 1.1.1.1 or host 8.8.8.8
|
||||
@ -39,7 +39,7 @@ Below, we discuss and provide a tutorial to prove what an outside observer may s
|
||||
nslookup privacyguides.org 8.8.8.8
|
||||
```
|
||||
|
||||
3. Next, we want to [analyse](https://www.wireshark.org/docs/wsug_html_chunked/ChapterIntroduction.html#ChIntroWhatIs) the results:
|
||||
3. Next, we want to [analyse](https://wireshark.org/docs/wsug_html_chunked/ChapterIntroduction.html#ChIntroWhatIs) the results:
|
||||
|
||||
=== "Wireshark"
|
||||
|
||||
@ -66,7 +66,7 @@ An observer could modify any of these packets.
|
||||
|
||||
## What is "encrypted DNS"?
|
||||
|
||||
Encrypted DNS can refer to one of a number of protocols, the most common ones being:
|
||||
Encrypted DNS can refer to one of a number of protocols, the most common ones being [DNSCrypt](#dnscrypt), [DNS over TLS](#dns-over-tls-dot), and [DNS over HTTPS](#dns-over-https-doh).
|
||||
|
||||
### DNSCrypt
|
||||
|
||||
@ -74,14 +74,32 @@ Encrypted DNS can refer to one of a number of protocols, the most common ones be
|
||||
|
||||
### DNS over TLS (DoT)
|
||||
|
||||
[**DNS over TLS**](https://en.wikipedia.org/wiki/DNS_over_TLS) is another method for encrypting DNS communication that is defined in [RFC 7858](https://datatracker.ietf.org/doc/html/rfc7858). Support was first implemented in Android 9, iOS 14, and on Linux in [systemd-resolved](https://www.freedesktop.org/software/systemd/man/resolved.conf.html#DNSOverTLS=) in version 237. Preference in the industry has been moving away from DoT to DoH in recent years, as DoT is a [complex protocol](https://dnscrypt.info/faq/) and has varying compliance to the RFC across the implementations that exist. DoT also operates on a dedicated port 853 which can be blocked easily by restrictive firewalls.
|
||||
[**DNS over TLS**](https://en.wikipedia.org/wiki/DNS_over_TLS) is another method for encrypting DNS communication that is defined in [RFC 7858](https://datatracker.ietf.org/doc/html/rfc7858). Support was first implemented in Android 9, iOS 14, and on Linux in [systemd-resolved](https://freedesktop.org/software/systemd/man/resolved.conf.html#DNSOverTLS=) in version 237. Preference in the industry has been moving away from DoT to DoH in recent years, as DoT is a [complex protocol](https://dnscrypt.info/faq) and has varying compliance to the RFC across the implementations that exist. DoT also operates on a dedicated port 853 which can be blocked easily by restrictive firewalls.
|
||||
|
||||
### DNS over HTTPS (DoH)
|
||||
|
||||
[**DNS over HTTPS**](https://en.wikipedia.org/wiki/DNS_over_HTTPS) as defined in [RFC 8484](https://datatracker.ietf.org/doc/html/rfc8484) packages queries in the [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) protocol and provides security with HTTPS. Support was first added in web browsers such as Firefox 60 and Chrome 83.
|
||||
[**DNS over HTTPS**](https://en.wikipedia.org/wiki/DNS_over_HTTPS), as defined in [RFC 8484](https://datatracker.ietf.org/doc/html/rfc8484), packages queries in the [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) protocol and provides security with HTTPS. Support was first added in web browsers such as Firefox 60 and Chrome 83.
|
||||
|
||||
Native implementation of DoH showed up in iOS 14, macOS 11, Microsoft Windows, and Android 13 (however, it won't be enabled [by default](https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1833144)). General Linux desktop support is waiting on the systemd [implementation](https://github.com/systemd/systemd/issues/8639) so [installing third-party software is still required](../dns.md#encrypted-dns-proxies).
|
||||
|
||||
### Native Operating System Support
|
||||
|
||||
#### Android
|
||||
|
||||
Android 9 and above support DNS over TLS. The settings can be found in: **Settings** → **Network & Internet** → **Private DNS**.
|
||||
|
||||
#### Apple Devices
|
||||
|
||||
The latest versions of iOS, iPadOS, tvOS, and macOS, support both DoT and DoH. Both protocols are supported natively via [configuration profiles](https://support.apple.com/guide/security/configuration-profile-enforcement-secf6fb9f053/web) or through the [DNS Settings API](https://developer.apple.com/documentation/networkextension/dns_settings).
|
||||
|
||||
After installation of either a configuration profile or an app that uses the DNS Settings API, the DNS configuration can be selected. If a VPN is active, resolution within the VPN tunnel will use the VPN's DNS settings and not your system-wide settings.
|
||||
|
||||
Apple does not provide a native interface for creating encrypted DNS profiles. [Secure DNS profile creator](https://dns.notjakob.com/tool.html) is an unofficial tool for creating your own encrypted DNS profiles, however they will not be signed. Signed profiles are preferred; signing validates a profile's origin and helps to ensure the integrity of the profiles. A green "Verified" label is given to signed configuration profiles. For more information on code signing, see [About Code Signing](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html).
|
||||
|
||||
#### Linux
|
||||
|
||||
`systemd-resolved`, which many Linux distributions use to do their DNS lookups, doesn't yet [support DoH](https://github.com/systemd/systemd/issues/8639). If you want to use DoH, you'll need to install a proxy like [dnscrypt-proxy](../dns.md#dnscrypt-proxy) and [configure it](https://wiki.archlinux.org/title/Dnscrypt-proxy) to take all the DNS queries from your system resolver and forward them over HTTPS.
|
||||
|
||||
## What can an outside party see?
|
||||
|
||||
In this example we will record what happens when we make a DoH request:
|
||||
@ -106,11 +124,11 @@ In this example we will record what happens when we make a DoH request:
|
||||
wireshark -r /tmp/dns_doh.pcap
|
||||
```
|
||||
|
||||
We can see the [connection establishment](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment) and [TLS handshake](https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/) that occurs with any encrypted connection. When looking at the "application data" packets that follow, none of them contain the domain we requested or the IP address returned.
|
||||
We can see the [connection establishment](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment) and [TLS handshake](https://cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake) that occurs with any encrypted connection. When looking at the "application data" packets that follow, none of them contain the domain we requested or the IP address returned.
|
||||
|
||||
## Why **shouldn't** I use encrypted DNS?
|
||||
|
||||
In locations where there is internet filtering (or censorship), visiting forbidden resources may have its own consequences which you should consider in your [threat model](../basics/threat-modeling.md). We do **not** suggest the use of encrypted DNS for this purpose. Use [Tor](https://torproject.org) or a [VPN](../vpn.md) instead. If you're using a VPN, you should use your VPN's DNS servers. When using a VPN, you are already trusting them with all your network activity.
|
||||
In locations where there is internet filtering (or censorship), visiting forbidden resources may have its own consequences which you should consider in your [threat model](../basics/threat-modeling.md). We do **not** suggest the use of encrypted DNS for this purpose. Use [Tor](../advanced/tor-overview.md) or a [VPN](../vpn.md) instead. If you're using a VPN, you should use your VPN's DNS servers. When using a VPN, you are already trusting them with all your network activity.
|
||||
|
||||
When we do a DNS lookup, it's generally because we want to access a resource. Below, we will discuss some of the methods that may disclose your browsing activities even when using encrypted DNS:
|
||||
|
||||
@ -158,9 +176,9 @@ Server Name Indication is typically used when a IP address hosts many websites.
|
||||
tshark -r /tmp/pg.pcap -Tfields -Y tls.handshake.extensions_server_name -e tls.handshake.extensions_server_name
|
||||
```
|
||||
|
||||
This means even if we are using "Encrypted DNS" servers, the domain will likely be disclosed through SNI. The [TLS v1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) protocol brings with it [Encrypted Client Hello](https://blog.cloudflare.com/encrypted-client-hello/), which prevents this kind of leak.
|
||||
This means even if we are using "Encrypted DNS" servers, the domain will likely be disclosed through SNI. The [TLS v1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) protocol brings with it [Encrypted Client Hello](https://blog.cloudflare.com/encrypted-client-hello), which prevents this kind of leak.
|
||||
|
||||
Governments, in particular [China](https://www.zdnet.com/article/china-is-now-blocking-all-encrypted-https-traffic-using-tls-1-3-and-esni/) and [Russia](https://www.zdnet.com/article/russia-wants-to-ban-the-use-of-secure-protocols-such-as-tls-1-3-doh-dot-esni/), have either already [started blocking](https://en.wikipedia.org/wiki/Server_Name_Indication#Encrypted_Client_Hello) it or expressed a desire to do so. Recently, Russia has [started blocking foreign websites](https://github.com/net4people/bbs/issues/108) that use the [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) standard. This is because the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol that is a part of HTTP/3 requires that `ClientHello` also be encrypted.
|
||||
Governments, in particular [China](https://zdnet.com/article/china-is-now-blocking-all-encrypted-https-traffic-using-tls-1-3-and-esni) and [Russia](https://zdnet.com/article/russia-wants-to-ban-the-use-of-secure-protocols-such-as-tls-1-3-doh-dot-esni), have either already [started blocking](https://en.wikipedia.org/wiki/Server_Name_Indication#Encrypted_Client_Hello) it or expressed a desire to do so. Recently, Russia has [started blocking foreign websites](https://github.com/net4people/bbs/issues/108) that use the [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) standard. This is because the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol that is a part of HTTP/3 requires that `ClientHello` also be encrypted.
|
||||
|
||||
### Online Certificate Status Protocol (OCSP)
|
||||
|
||||
@ -290,7 +308,7 @@ The DNSSEC signing process is similar to someone signing a legal document with a
|
||||
|
||||
DNSSEC implements a hierarchical digital signing policy across all layers of DNS. For example, in the case of a `privacyguides.org` lookup, a root DNS server would sign a key for the `.org` nameserver, and the `.org` nameserver would then sign a key for `privacyguides.org`’s authoritative nameserver.
|
||||
|
||||
<small>Adapted from [DNS Security Extensions (DNSSEC) overview](https://cloud.google.com/dns/docs/dnssec) by Google and [DNSSEC: An Introduction](https://blog.cloudflare.com/dnssec-an-introduction/) by Cloudflare, both licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).</small>
|
||||
<small>Adapted from [DNS Security Extensions (DNSSEC) overview](https://cloud.google.com/dns/docs/dnssec) by Google and [DNSSEC: An Introduction](https://blog.cloudflare.com/dnssec-an-introduction) by Cloudflare, both licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0).</small>
|
||||
|
||||
## What is QNAME minimization?
|
||||
|
||||
@ -319,4 +337,27 @@ The [EDNS Client Subnet](https://en.wikipedia.org/wiki/EDNS_Client_Subnet) is a
|
||||
|
||||
It's intended to "speed up" delivery of data by giving the client an answer that belongs to a server that is close to them such as a [content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network), which are often used in video streaming and serving JavaScript web apps.
|
||||
|
||||
This feature does come at a privacy cost, as it tells the DNS server some information about the client's location.
|
||||
This feature does come at a privacy cost, as it tells the DNS server some information about the client's location, generally your IP network. For example, if your IP address is `198.51.100.32` the DNS provider might share `198.51.100.0/24` with the authoritative server. Some DNS providers anonymize this data by providing another IP address which is approximately near your location.
|
||||
|
||||
If you have `dig` installed you can test whether your DNS provider gives EDNS information out to DNS nameservers with the following command:
|
||||
|
||||
```bash
|
||||
dig +nocmd -t txt o-o.myaddr.l.google.com +nocomments +noall +answer +stats
|
||||
```
|
||||
|
||||
Note that this command will contact Google for the test, and return your IP as well as EDNS client subnet information. If you want to test another DNS resolver you can specify their IP, to test `9.9.9.11` for example:
|
||||
|
||||
```bash
|
||||
dig +nocmd @9.9.9.11 -t txt o-o.myaddr.l.google.com +nocomments +noall +answer +stats
|
||||
```
|
||||
|
||||
If the results include a second edns0-client-subnet TXT record (like shown below), then your DNS server is passing along EDNS information. The IP or network shown after is the precise information which was shared with Google by your DNS provider.
|
||||
|
||||
```text
|
||||
o-o.myaddr.l.google.com. 60 IN TXT "198.51.100.32"
|
||||
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 198.51.100.0/24"
|
||||
;; Query time: 64 msec
|
||||
;; SERVER: 9.9.9.11#53(9.9.9.11)
|
||||
;; WHEN: Wed Mar 13 10:23:08 CDT 2024
|
||||
;; MSG SIZE rcvd: 130
|
||||
```
|
||||
|
@ -8,7 +8,7 @@ There's a reason data about your buying habits is considered the holy grail of a
|
||||
|
||||
For centuries, **cash** has functioned as the primary form of private payment. Cash has excellent privacy properties in most cases, is widely accepted in most countries, and is **fungible**, meaning it is non-unique and completely interchangable.
|
||||
|
||||
Cash payment laws vary by country. In the United States, special disclosure is required for cash payments over $10,000 to the IRS on [Form 8300](https://www.irs.gov/businesses/small-businesses-self-employed/form-8300-and-reporting-cash-payments-of-over-10000). The receiving business is required to ID verify the payee’s name, address, occupation, date of birth, and Social Security Number or other TIN (with some exceptions). Lower limits without ID such as $3,000 or less exist for exchanges and money transmission. Cash also contains serial numbers. These are almost never tracked by merchants, but they can be used by law enforcement in targeted investigations.
|
||||
Cash payment laws vary by country. In the United States, special disclosure is required for cash payments over $10,000 to the IRS on [Form 8300](https://irs.gov/businesses/small-businesses-self-employed/form-8300-and-reporting-cash-payments-of-over-10000). The receiving business is required to ID verify the payee’s name, address, occupation, date of birth, and Social Security Number or other TIN (with some exceptions). Lower limits without ID such as $3,000 or less exist for exchanges and money transmission. Cash also contains serial numbers. These are almost never tracked by merchants, but they can be used by law enforcement in targeted investigations.
|
||||
|
||||
Despite this, it’s typically the best option.
|
||||
|
||||
@ -16,7 +16,7 @@ Despite this, it’s typically the best option.
|
||||
|
||||
It’s relatively simple to purchase gift cards and prepaid cards at most grocery stores and convenience stores with cash. Gift cards usually don’t have a fee, though prepaid cards often do, so pay close attention to these fees and expiry dates. Some stores may ask to see your ID at checkout to reduce fraud.
|
||||
|
||||
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (eg: from Visa or Mastercard) usually have limits of up to $1,000 per card.
|
||||
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (e.g.: from Visa or Mastercard) usually have limits of up to $1,000 per card.
|
||||
|
||||
Gift cards have the downside of being subject to merchant policies, which can have terrible terms and restrictions. For example, some merchants don’t accept payment in gift cards exclusively, or they may cancel the value of the card if they consider you to be a high-risk user. Once you have merchant credit, the merchant has a strong degree of control over this credit.
|
||||
|
||||
@ -44,19 +44,22 @@ These tend to be good options for recurring/subscription payments online, while
|
||||
|
||||
Cryptocurrencies are a digital form of currency designed to work without central authorities such as a government or bank. While *some* cryptocurrency projects can allow you to make private transactions online, many use a public blockchain which does not provide any transaction privacy. Cryptocurrencies also tend to be very volatile assets, meaning their value can change rapidly and significantly at any time. As such, we generally don't recommend using cryptocurrency as a long-term store of value. If you decide to use cryptocurrency online, make sure you have a full understanding of its privacy aspects beforehand, and only invest amounts which would not be disastrous to lose.
|
||||
|
||||
!!! danger
|
||||
<div class="admonition danger" markdown>
|
||||
<p class="admonition-title">Danger</p>
|
||||
|
||||
The vast majority of cryptocurrencies operate on a **public** blockchain, meaning that every transaction is public knowledge. This includes even most well-known cryptocurrencies like Bitcoin and Ethereum. Transactions with these cryptocurrencies should not be considered private and will not protect your anonymity.
|
||||
The vast majority of cryptocurrencies operate on a **public** blockchain, meaning that every transaction is public knowledge. This includes even most well-known cryptocurrencies like Bitcoin and Ethereum. Transactions with these cryptocurrencies should not be considered private and will not protect your anonymity.
|
||||
|
||||
Additionally, many if not most cryptocurrencies are scams. Make transactions carefully with only projects you trust.
|
||||
Additionally, many if not most cryptocurrencies are scams. Make transactions carefully with only projects you trust.
|
||||
|
||||
</div>
|
||||
|
||||
### Privacy Coins
|
||||
|
||||
There are a number of cryptocurrency projects which purport to provide privacy by making transactions anonymous. We recommend using one which provides transaction anonymity **by default** to avoid operational errors.
|
||||
|
||||
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#coins)
|
||||
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#monero)
|
||||
|
||||
Privacy coins have been subject to increasing scrutiny by government agencies. In 2020, [the IRS published a $625,000 bounty](https://www.forbes.com/sites/kellyphillipserb/2020/09/14/irs-will-pay-up-to-625000-if-you-can-crack-monero-other-privacy-coins/?sh=2e9808a085cc) for tools which can break Bitcoin Lightning Network and/or Monero's transaction privacy. They ultimately [paid two companies](https://sam.gov/opp/5ab94eae1a8d422e88945b64181c6018/view) (Chainalysis and Integra Fec) a combined $1.25 million for tools which purport to do so (it is unknown which cryptocurrency network these tools target). Due to the secrecy surrounding tools like these, ==none of these methods of tracing cryptocurrencies have been independently confirmed.== However, it is quite likely that tools which assist targeted investigations into private coin transactions exist, and that privacy coins only succeed in thwarting mass surveillance.
|
||||
Privacy coins have been subject to increasing scrutiny by government agencies. In 2020, [the IRS published a $625,000 bounty](https://forbes.com/sites/kellyphillipserb/2020/09/14/irs-will-pay-up-to-625000-if-you-can-crack-monero-other-privacy-coins/?sh=2e9808a085cc) for tools which can break Bitcoin Lightning Network and/or Monero's transaction privacy. They ultimately [paid two companies](https://sam.gov/opp/5ab94eae1a8d422e88945b64181c6018/view) (Chainalysis and Integra Fec) a combined $1.25 million for tools which purport to do so (it is unknown which cryptocurrency network these tools target). Due to the secrecy surrounding tools like these, ==none of these methods of tracing cryptocurrencies have been independently confirmed.== However, it is quite likely that tools which assist targeted investigations into private coin transactions exist, and that privacy coins only succeed in thwarting mass surveillance.
|
||||
|
||||
### Other Coins (Bitcoin, Ethereum, etc.)
|
||||
|
||||
@ -72,7 +75,7 @@ With cryptocurrency there are two forms of wallets: custodial wallets and noncus
|
||||
|
||||
### Acquisition
|
||||
|
||||
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces like [LocalMonero](https://localmonero.co/), a platform which facilitates trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com/), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
|
||||
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces, platforms which facilitate trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
|
||||
|
||||
If you go this route, make sure to purchase Monero at different times and in different amounts than where you will spend it. If you purchase $5000 of Monero at an exchange and make a $5000 purchase in Monero an hour later, those actions could potentially be correlated by an outside observer regardless of which path the Monero took. Staggering purchases and purchasing larger amounts of Monero in advance to later spend on multiple smaller transactions can avoid this pitfall.
|
||||
|
||||
|
@ -4,13 +4,106 @@ icon: 'simple/torproject'
|
||||
description: Tor is a free to use, decentralized network designed for using the internet with as much privacy as possible.
|
||||
---
|
||||
|
||||
Tor is a free to use, decentralized network designed for using the internet with as much privacy as possible. If used properly, the network enables private and anonymous browsing and communications.
|
||||
{ align=right }
|
||||
|
||||
[**Tor**](../alternative-networks.md#tor) is a free to use, decentralized network designed for using the internet with as much privacy as possible. If used properly, the network enables private and anonymous browsing and communications. Because Tor traffic is difficult to block and trace, Tor is an effective censorship circumvention tool.
|
||||
|
||||
Tor works by routing your internet traffic through volunteer-operated servers, instead of making a direct connection to the site you're trying to visit. This obfuscates where the traffic is coming from, and no server in the connection path is able to see the full path of where the traffic is coming from and going to, meaning even the servers you are using to connect cannot break your anonymity.
|
||||
|
||||
[:octicons-home-16:](https://torproject.org){ .card-link title=Homepage }
|
||||
[:simple-torbrowser:](http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-info-16:](https://tb-manual.torproject.org){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.torproject.org/tpo/core/tor){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://donate.torproject.org){ .card-link title=Contribute }
|
||||
|
||||
## Safely Connecting to Tor
|
||||
|
||||
Before connecting to Tor, you should carefully consider what you're looking to accomplish by using Tor in the first place, and who you're trying to hide your network activity from.
|
||||
|
||||
If you live in a free country, are accessing mundane content via Tor, aren't worried about your ISP or local network administrators having the knowledge that you're using Tor, and want to help [de-stigmatize](https://2019.www.torproject.org/about/torusers.html.en) Tor usage, you can likely connect to Tor directly via standard means like [Tor Browser](../tor.md) without worry.
|
||||
|
||||
If you have the ability to access a trusted VPN provider and **any** of the following are true, you almost certainly should connect to Tor through a VPN:
|
||||
|
||||
- You already use a [trusted VPN provider](../vpn.md)
|
||||
- Your threat model includes an adversary which is capable of extracting information from your ISP
|
||||
- Your threat model includes your ISP itself as an adversary
|
||||
- Your threat model includes local network administrators before your ISP as an adversary
|
||||
|
||||
Because we already [generally recommend](../basics/vpn-overview.md) that the vast majority of people use a trusted VPN provider for a variety of reasons, the following recommendation about connecting to Tor via a VPN likely applies to you. <mark>There is no need to disable your VPN before connecting to Tor</mark>, as some online resources would lead you to believe.
|
||||
|
||||
Connecting directly to Tor will make your connection stand out to any local network administrators or your ISP. Detecting and correlating this traffic [has been done](https://edition.cnn.com/2013/12/17/justice/massachusetts-harvard-hoax) in the past by network administrators to identify and deanonymize specific Tor users on their network. On the other hand, connecting to a VPN is almost always less suspicious, because commercial VPN providers are used by everyday consumers for a variety of mundane tasks like bypassing geo-restrictions, even in countries with heavy internet restrictions.
|
||||
|
||||
Therefore, you should make an effort to hide your IP address **before** connecting to the Tor network. You can do this by simply connecting to a VPN (through a client installed on your computer) and then accessing [Tor](../tor.md) as normal, through Tor Browser for example. This creates a connection chain like:
|
||||
|
||||
- [x] You → VPN → Tor → Internet
|
||||
|
||||
From your ISP's perspective, it looks like you're accessing a VPN normally (with the associated cover that provides you). From your VPN's perspective, they can see that you are connecting to the Tor network, but nothing about what websites you're accessing. From Tor's perspective, you're connecting normally, but in the unlikely event of some sort of Tor network compromise, only your VPN's IP would be exposed, and your VPN would *additionally* have to be compromised to deanonymize you.
|
||||
|
||||
This is **not** censorship circumvention advice, because if Tor is blocked entirely by your ISP, your VPN likely is as well. Rather, this recommendation aims to make your traffic blend in better with commonplace VPN user traffic, and provide you with some level of plausible deniability by obscuring the fact that you're connecting to Tor from your ISP.
|
||||
|
||||
---
|
||||
|
||||
We **very strongly discourage** combining Tor with a VPN in any other manner. Do not configure your connection in a way which resembles any of the following:
|
||||
|
||||
- You → Tor → VPN → Internet
|
||||
- You → VPN → Tor → VPN → Internet
|
||||
- Any other configuration
|
||||
|
||||
Some VPN providers and other publications will occasionally recommend these **bad** configurations to evade Tor bans (exit nodes being blocked by websites) in some places. [Normally](https://support.torproject.org/#about_change-paths), Tor frequently changes your circuit path through the network. When you choose a permanent *destination* VPN (connecting to a VPN server *after* Tor), you're eliminating this advantage and drastically harming your anonymity.
|
||||
|
||||
Setting up bad configurations like these is difficult to do accidentally, because it usually involves either setting up custom proxy settings inside Tor Browser, or setting up custom proxy settings inside your VPN client which routes your VPN traffic through the Tor Browser. As long as you avoid these non-default configurations, you're probably fine.
|
||||
|
||||
---
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">VPN/SSH Fingerprinting</p>
|
||||
|
||||
The Tor Project [notes](https://gitlab.torproject.org/legacy/trac/-/wikis/doc/TorPlusVPN#vpnssh-fingerprinting) that *theoretically* using a VPN to hide Tor activities from your ISP may not be foolproof. VPNs have been found to be vulnerable to website traffic fingerprinting, where an adversary can still guess what website is being visited, because all websites have specific traffic patterns.
|
||||
|
||||
Therefore, it's not unreasonable to believe that encrypted Tor traffic hidden by a VPN could also be detected via similar methods. There are no research papers on this subject, and we still consider the benefits of using a VPN to far outweigh these risks, but it is something to keep in mind.
|
||||
|
||||
If you still believe that pluggable transports (bridges) provide additional protection against website traffic fingerprinting that a VPN does not, you always have the option to use a bridge **and** a VPN in conjunction.
|
||||
|
||||
</div>
|
||||
|
||||
Determining whether you should first use a VPN to connect to the Tor network will require some common sense and knowledge of your own government's and ISP's policies relating to what you're connecting to. However, again in most cases you will be better off being seen as connecting to a commercial VPN network than directly to the Tor network. If VPN providers are censored in your area, then you can also consider using Tor pluggable transports (e.g. Snowflake or meek bridges) as an alternative, but using these bridges may arouse more suspicion than standard WireGuard/OpenVPN tunnels.
|
||||
|
||||
## What Tor is Not
|
||||
|
||||
The Tor network is not the perfect privacy protection tool in all cases, and has a number of drawbacks which should be carefully considered. These things should not discourage you from using Tor if it is appropriate for your needs, but they are still things to think about when deciding which solution is most appropriate for you.
|
||||
|
||||
### Tor is not a free VPN
|
||||
|
||||
The release of the *Orbot* mobile app has lead many people to describe Tor as a "free VPN" for all of your device traffic. However, treating Tor like this poses some dangers compared to a typical VPN.
|
||||
|
||||
Unlike Tor exit nodes, VPN providers are usually not *actively* [malicious](#caveats). Because Tor exit nodes can be created by anybody, they are hotspots for network logging and modification. In 2020, many Tor exit nodes were documented to be downgrading HTTPS traffic to HTTP in order to [hijack cryptocurrency transactions](https://therecord.media/thousands-of-tor-exit-nodes-attacked-cryptocurrency-users-over-the-past-year). Other exit node attacks such as replacing downloads via unencrypted channels with malware have also been observed. HTTPS does mitigate these threats to an extent.
|
||||
|
||||
As we've alluded to already, Tor is also easily identifiable on the network. Unlike an actual VPN provider, using Tor will make you stick out as a person likely attempting to evade authorities. In a perfect world, Tor would be seen by network administrators and authorities as a tool with many uses (like how VPNs are viewed), but in reality the perception of Tor is still far less legitimate than the perception of commercial VPNs, so using a real VPN provides you with plausible deniability, e.g. "I was just using it to watch Netflix," etc.
|
||||
|
||||
### Tor usage is not undetectable
|
||||
|
||||
**Even if you use bridges and pluggable transports,** the Tor Project provides no tools to hide the fact that you are using Tor from your ISP. Even using obfuscated "pluggable transports" or non-public bridges do not hide the fact that you are using a private communications channel. The most popular pluggable transports like obfs4 (which obfuscates your traffic to "look like nothing") and meek (which uses domain fronting to camouflage your traffic) can be [detected](https://hackerfactor.com/blog/index.php?/archives/889-Tor-0day-Burning-Bridges.html) with fairly standard traffic analysis techniques. Snowflake has similar issues, and can be [easily detected](https://hackerfactor.com/blog/index.php?/archives/944-Tor-0day-Snowflake.html) *before* a Tor connection is even established.
|
||||
|
||||
Pluggable transports other than these three do exist, but typically rely on security through obscurity to evade detection. They aren't impossible to detect, they are just used by so few people that it's not worth the effort building detectors for them. They shouldn't be relied upon if you specifically are being monitored.
|
||||
|
||||
It is critical to understand the difference between bypassing censorship and evading detection. It is easier to accomplish the former because of the many real-world limitations on what network censors can realistically do en masse, but these techniques do not hide the fact that you—*specifically* you—are using Tor from an interested party monitoring your network.
|
||||
|
||||
### Tor Browser is not the most *secure* browser
|
||||
|
||||
Anonymity can often be at odds with security: Tor's anonymity requires every user to be identical, which creates a monoculture (the same bugs are present across all Tor Browser users). As a cybersecurity rule of thumb, monocultures are generally regarded as bad: Security through diversity (which Tor lacks) provides natural segmentation by limiting vulnerabilities to smaller groups, and is therefore usually desirable, but this diversity is also less good for anonymity.
|
||||
|
||||
Additionally, Tor Browser is based on Firefox's Extended Support Release builds, which only receives patches for vulnerabilities considered *Critical* and *High* (not *Medium* and *Low*). This means that attackers could (for example):
|
||||
|
||||
1. Look for new Critical/High vulnerabilities in Firefox nightly or beta builds, then check if they are exploitable in Tor Browser (this vulnerability period can last weeks).
|
||||
2. Chain *multiple* Medium/Low vulnerabilities together until they get the level of access they're looking for (this vulnerability period can last months or longer).
|
||||
|
||||
Those at risk of browser vulnerabilities should consider additional protections to defend against Tor Browser exploits, such as using Whonix in [Qubes](../os/qubes-overview.md) to contain your Tor browsing in a secure VM and protect against leaks.
|
||||
|
||||
## Path Building to Clearnet Services
|
||||
|
||||
"Clearnet services" are websites which you can access with any browser, like [privacyguides.org](https://www.privacyguides.org). Tor lets you connect to these websites anonymously by routing your traffic through a network comprised of thousands of volunteer-run servers called nodes (or relays).
|
||||
|
||||
Every time you [connect to Tor](../tor.md), it will choose three nodes to build a path to the internet—this path is called a "circuit."
|
||||
Every time you [connect to Tor](../tor.md), it will choose three nodes to build a path to the internet—this path is called a "circuit."
|
||||
|
||||
<figure markdown>
|
||||

|
||||
@ -26,7 +119,7 @@ The entry node, often called the guard node, is the first node to which your Tor
|
||||
|
||||
Unlike the other nodes, the Tor client will randomly select an entry node and stick with it for two to three months to protect you from certain attacks.[^1]
|
||||
|
||||
[^1]: The first relay in your circuit is called an "entry guard" or "guard". It is a fast and stable relay that remains the first one in your circuit for 2-3 months in order to protect against a known anonymity-breaking attack. The rest of your circuit changes with every new website you visit, and all together these relays provide the full privacy protections of Tor. For more information on how guard relays work, see this [blog post](https://blog.torproject.org/improving-tors-anonymity-changing-guard-parameters) and [paper](https://www-users.cs.umn.edu/~hoppernj/single_guard.pdf) on entry guards. ([https://support.torproject.org/tbb/tbb-2/](https://support.torproject.org/tbb/tbb-2/))
|
||||
[^1]: The first relay in your circuit is called an "entry guard" or "guard". It is a fast and stable relay that remains the first one in your circuit for 2-3 months in order to protect against a known anonymity-breaking attack. The rest of your circuit changes with every new website you visit, and all together these relays provide the full privacy protections of Tor. For more information on how guard relays work, see this [blog post](https://blog.torproject.org/improving-tors-anonymity-changing-guard-parameters) and [paper](https://www-users.cs.umn.edu/~hoppernj/single_guard.pdf) on entry guards. ([https://support.torproject.org/tbb/tbb-2/](https://support.torproject.org/tbb/tbb-2))
|
||||
|
||||
### The Middle Node
|
||||
|
||||
@ -80,13 +173,34 @@ Tor allows us to connect to a server without any single party knowing the entire
|
||||
|
||||
Though Tor does provide strong privacy guarantees, one must be aware that Tor is not perfect:
|
||||
|
||||
- Well-funded adversaries with the capability to passively watch most network traffic over the globe have a chance of deanonymizing Tor users by means of advanced traffic analysis. Nor does Tor protect you from exposing yourself by mistake, such as if you share too much information about your real identity.
|
||||
- Tor exit nodes can also monitor traffic that passes through them. This means traffic which is not encrypted, such as plain HTTP traffic, can be recorded and monitored. If such traffic contains personally identifiable information, then it can deanonymize you to that exit node. Thus, we recommend using HTTPS over Tor where possible.
|
||||
- Tor never protects you from exposing yourself by mistake, such as if you share too much information about your real identity.
|
||||
- Tor exit nodes can **modify** unencrypted traffic which passes through them. This means traffic which is not encrypted, such as plain HTTP traffic, can be changed by a malicious exit node. **Never** download files from an unencrypted `http://` website over Tor, and ensure your browser is set to always upgrade HTTP traffic to HTTPS.
|
||||
- Tor exit nodes can also monitor traffic that passes through them. Unencrypted traffic which contains personally identifiable information can deanonymize you to that exit node. Again, we recommend only using HTTPS over Tor.
|
||||
- Powerful adversaries with the capability to passively watch *all* network traffic around the globe ("Global Passive Adversaries") are **not** something that Tor protects you against (and using Tor [with a VPN](#safely-connecting-to-tor) doesn't change this fact).
|
||||
- Well-funded adversaries with the capability to passively watch *most* network traffic around the globe still have a *chance* of deanonymizing Tor users by means of advanced traffic analysis.
|
||||
|
||||
If you wish to use Tor for browsing the web, we only recommend the **official** Tor Browser—it is designed to prevent fingerprinting.
|
||||
|
||||
- [Tor Browser :material-arrow-right-drop-circle:](../tor.md#tor-browser)
|
||||
|
||||
### Protections provided by bridges
|
||||
|
||||
Tor bridges are commonly touted as an alternative method to hiding Tor usage from an ISP, instead of a VPN (as we suggest using if possible). Something to consider is that while bridges may provide adequate censorship circumvention, this is only a *transient* benefit. They do not adequately protect you from your ISP discovering you connected to Tor in the *past* with historical traffic log analysis.
|
||||
|
||||
To illustrate this point, consider the following scenario: You connect to Tor via a bridge, and your ISP doesn’t detect it because they are not doing sophisticated analysis of your traffic, so things are working as intended. Now, 4 months go by, and the IP of your bridge has been made public. This is a very common occurrence with bridges, they are discovered and blocked relatively frequently, just not immediately.
|
||||
|
||||
Your ISP wants to identify Tor users 4 months ago, and with their limited metadata logging they can see that you connected to an IP address which was later revealed to be a Tor bridge. You have virtually no other excuse to be making such a connection, so the ISP can say with very high confidence that you were a Tor user at that time.
|
||||
|
||||
Contrast this with our recommended scenario, where you connect to Tor via a VPN. Say that 4 months later your ISP again wants to identify anybody who used Tor 4 months ago. Their logs almost certainly can identify your traffic 4 months ago, but all they would likely be able to see is that you connected to a VPN’s IP address. This is because most ISPs only retain metadata over long periods of time, not the full contents of the traffic you request. Storing the entirety of your traffic data would require a massive quantity of storage which nearly all threat actors wouldn't possess.
|
||||
|
||||
Because your ISP almost certainly is not capturing all packet-level data and storing it forever, they have no way of determining what you connected to with that VPN *after* the fact with an advanced technique like deep packet inspection, and therefore you have plausible deniability.
|
||||
|
||||
Therefore, bridges provide the most benefit when circumventing internet censorship *in the moment*, but they are not an adequate substitute for **all** the benefits that using a VPN alongside Tor can provide. Again, this is not advice *against* using Tor bridges, you should just be aware of these limitations while making your decision. In some cases bridges may be the *only* option (if all VPN providers are blocked, for instance), so you can still use them in those circumstances with this limitation in mind.
|
||||
|
||||
If you think that a bridge can aid in defending against fingerprinting or other advanced network analysis more than a VPN's encrypted tunnel already can, you always have the option to use a bridge in conjunction with a VPN as well. That way you are still protected by the pluggable transport's obfuscation techniques even if an adversary gains some level of visibility into your VPN tunnel. If you decide to go this route, we recommend connecting to an obfs4 bridge behind your VPN for optimal fingerprinting protection, rather than meek or Snowflake.
|
||||
|
||||
It is [possible](https://discuss.privacyguides.net/t/clarify-tors-weaknesses-with-respect-to-observability/3676/16) that the [WebTunnel](https://forum.torproject.org/t/tor-relays-announcement-webtunnel-a-new-pluggable-transport-for-bridges-now-available-for-deployment/8180) pluggable transport currently being trialed may mitigate some of these concerns. We will continue to keep an eye on that technology as it develops.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Tor Browser User Manual](https://tb-manual.torproject.org)
|
||||
|
107
docs/alternative-networks.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
title: "Alternative Networks"
|
||||
icon: material/vector-polygon
|
||||
description: These tools allow you to access networks other than the World Wide Web.
|
||||
cover: alternative-networks.webp
|
||||
---
|
||||
|
||||
## Anonymizing Networks
|
||||
|
||||
When it comes to anonymizing networks, we want to specially note that [Tor](advanced/tor-overview.md) is our top choice. It is by far the most utilized, robustly studied, and actively developed anonymous network. Using other networks could be more likely to endanger your anonymity, unless you know what you're doing.
|
||||
|
||||
### Tor
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
The **Tor** network is a group of volunteer-operated servers that allows you to connect for free and improve your privacy and security on the Internet. Individuals and organizations can also share information over the Tor network with ".onion hidden services" without compromising their privacy. Because Tor traffic is difficult to block and trace, Tor is an effective censorship circumvention tool.
|
||||
|
||||
[:octicons-home-16:](https://torproject.org){ .card-link title=Homepage }
|
||||
[:simple-torbrowser:](http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-info-16:](https://tb-manual.torproject.org){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.torproject.org/tpo/core/tor){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://donate.torproject.org){ .card-link title=Contribute }
|
||||
|
||||
</div>
|
||||
|
||||
The recommended way to access the Tor network is via the official Tor Browser, which we have covered in more detail on a dedicated page:
|
||||
|
||||
[Tor Browser Info :material-arrow-right-drop-circle:](tor.md){ .md-button .md-button--primary } [Detailed Tor Overview :material-arrow-right-drop-circle:](advanced/tor-overview.md){ .md-button }
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Try it out!</p>
|
||||
|
||||
You can try connecting to *Privacy Guides* via Tor at [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion).
|
||||
|
||||
</div>
|
||||
|
||||
#### Snowflake
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Snowflake** allows you to donate bandwidth to the Tor Project by operating a "Snowflake proxy" within your browser.
|
||||
|
||||
People who are censored can use Snowflake proxies to connect to the Tor network. Snowflake is a great way to contribute to the network even if you don't have the technical know-how to run a Tor relay or bridge.
|
||||
|
||||
[:octicons-home-16: Homepage](https://snowflake.torproject.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/wikis/Technical%20Overview){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://donate.torproject.org){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
You can enable Snowflake in your browser by opening it in another tab and turning the switch on. You can leave it running in the background while you browse to contribute your connection. We don't recommend installing Snowflake as a browser extension, because adding third-party extensions can increase your attack surface.
|
||||
|
||||
[Run Snowflake in your Browser :material-arrow-right-drop-circle:](https://snowflake.torproject.org/embed.html){ .md-button }
|
||||
|
||||
Snowflake does not increase your privacy in any way, nor is it used to connect to the Tor network within your personal browser. However, if your internet connection is uncensored, you should consider running it to help people in censored networks achieve better privacy themselves. There is no need to worry about which websites people are accessing through your proxy—their visible browsing IP address will match their Tor exit node, not yours.
|
||||
|
||||
Running a Snowflake proxy is low-risk, even more so than running a Tor relay or bridge which are already not particularly risky endeavours. However, it does still proxy traffic through your network which can be impactful in some ways, especially if your network is bandwidth-limited. Make sure you understand [how Snowflake works](https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/wikis/home) before deciding whether to run a proxy.
|
||||
|
||||
### I2P (The Invisible Internet Project)
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**I2P** is an network layer which encrypts your connections and routes them via a network of computers distributed around the world. It is mainly focused on creating an alternative, privacy-protecting network rather than making regular internet connections anonymous.
|
||||
|
||||
[:octicons-home-16: Homepage](https://geti2p.net/en){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://geti2p.net/en/about/software){ .card-link title=Documentation }
|
||||
[:octicons-code-16:](https://github.com/i2p/i2p.i2p){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://geti2p.net/en/get-involved){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=net.i2p.android)
|
||||
- [:simple-android: Android](https://geti2p.net/en/download#android)
|
||||
- [:fontawesome-brands-windows: Windows](https://geti2p.net/en/download#windows)
|
||||
- [:simple-apple: macOS](https://geti2p.net/en/download#mac)
|
||||
- [:simple-linux: Linux](https://geti2p.net/en/download#unix)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Unlike Tor, all I2P traffic is internal to the I2P network, which means regular internet websites are **not** directly accessible from I2P. Instead, you can connect to websites which are hosted anonymously and directly on the I2P network, which are called "eepsites" and have domains which end in `.i2p`.
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Try it out!</p>
|
||||
|
||||
You can try connecting to *Privacy Guides* via I2P at [privacyguides.i2p](http://privacyguides.i2p/?i2paddresshelper=fvbkmooriuqgssrjvbxu7nrwms5zyhf34r3uuppoakwwsm7ysv6q.b32.i2p).
|
||||
|
||||
</div>
|
||||
|
||||
Also, unlike Tor, every I2P node will relay traffic for other users by default, instead of relying on dedicated relay volunteers to run nodes. There are approximately [10,000](https://metrics.torproject.org/networksize.html) relays and bridges on the Tor network compared to ~50,000 on I2P, meaning there is potentially more ways for your traffic to be routed to maximize anonymity. I2P also tends to be more performant than Tor, although this is likely a side-effect of Tor being more focused on regular "clearnet" internet traffic and thus using more bottlenecked exit nodes. Hidden service performance is generally considered to be much better on I2P compared to Tor. While running P2P applications like BitTorrent is challenging on Tor (and can massively impact Tor network performance), it is very easy and performant on I2P.
|
||||
|
||||
There are downsides to I2P's approach, however. Tor relying on dedicated exit nodes means more people in less safe environments can use it, and the relays that do exist on Tor are likely to be more performant and stable, as they generally aren't run on residential connections. Tor is also far more focused on **browser privacy** (i.e. anti-fingerprinting), with a dedicated [Tor Browser](tor.md) to make browsing activity as anonymous as possible. I2P is used via your [regular web browser](desktop-browsers.md), and while you can configure your browser to be more privacy-protecting, you probably still won't have the same browser fingerprint as other I2P users (there's no "crowd" to blend in with in that regard).
|
||||
|
||||
Tor is likely to be more resistant to censorship, due to their robust network of bridges and varying [pluggable transports](https://tb-manual.torproject.org/circumvention). On the other hand, I2P uses directory servers for the initial connection which are varying/untrusted and run by volunteers, compared to the hard-coded/trusted ones Tor uses which are likely easier to block.
|
446
docs/android.md
@ -1,446 +0,0 @@
|
||||
---
|
||||
meta_title: "Android Recommendations: GrapheneOS and DivestOS - Privacy Guides"
|
||||
title: "Android"
|
||||
icon: 'simple/android'
|
||||
description: You can replace the operating system on your Android phone with these secure and privacy-respecting alternatives.
|
||||
cover: android.webp
|
||||
schema:
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
name: Private Android Operating Systems
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: Android
|
||||
image: /assets/img/android/android.svg
|
||||
url: https://source.android.com/
|
||||
sameAs: https://en.wikipedia.org/wiki/Android_(operating_system)
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: GrapheneOS
|
||||
image: /assets/img/android/grapheneos.svg
|
||||
url: https://grapheneos.org/
|
||||
sameAs: https://en.wikipedia.org/wiki/GrapheneOS
|
||||
subjectOf:
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: Divest
|
||||
image: /assets/img/android/divestos.svg
|
||||
url: https://divestos.org/
|
||||
sameAs: https://en.wikipedia.org/wiki/DivestOS
|
||||
subjectOf:
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": Product
|
||||
name: Pixel
|
||||
brand:
|
||||
"@type": Brand
|
||||
name: Google
|
||||
image: /assets/img/android/google-pixel.png
|
||||
sameAs: https://en.wikipedia.org/wiki/Google_Pixel
|
||||
review:
|
||||
"@type": Review
|
||||
author:
|
||||
"@type": Organization
|
||||
name: Privacy Guides
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Shelter
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Auditor
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Secure Camera
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Secure PDF Viewer
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
---
|
||||
|
||||
{ align=right }
|
||||
|
||||
The **Android Open Source Project** is an open-source mobile operating system led by Google which powers the majority of the world's mobile devices. Most phones sold with Android are modified to include invasive integrations and apps such as Google Play Services, so you can significantly improve your privacy on your mobile device by replacing your phone's default installation with a version of Android without these invasive features.
|
||||
|
||||
[:octicons-home-16:](https://source.android.com/){ .card-link title=Homepage }
|
||||
[:octicons-info-16:](https://source.android.com/docs){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://cs.android.com/android/platform/superproject/){ .card-link title="Source Code" }
|
||||
|
||||
These are the Android operating systems, devices, and apps we recommend to maximize your mobile device's security and privacy. To learn more about Android:
|
||||
|
||||
[General Android Overview :material-arrow-right-drop-circle:](os/android-overview.md){ .md-button }
|
||||
|
||||
## AOSP Derivatives
|
||||
|
||||
We recommend installing one of these custom Android operating systems on your device, listed in order of preference, depending on your device's compatibility with these operating systems.
|
||||
|
||||
!!! note
|
||||
|
||||
End-of-life devices (such as GrapheneOS or CalyxOS's "extended support" devices) do not have full security patches (firmware updates) due to the OEM discontinuing support. These devices cannot be considered completely secure regardless of installed software.
|
||||
|
||||
### GrapheneOS
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**GrapheneOS** is the best choice when it comes to privacy and security.
|
||||
|
||||
GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wiki/Hardening_(computing)) and privacy improvements. It has a [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), network and sensor permissions, and various other [security features](https://grapheneos.org/features). GrapheneOS also comes with full firmware updates and signed builds, so verified boot is fully supported.
|
||||
|
||||
[:octicons-home-16: Homepage](https://grapheneos.org/){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://grapheneos.org/faq#privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://grapheneos.org/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://grapheneos.org/source){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
GrapheneOS supports [Sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play), which runs [Google Play Services](https://en.wikipedia.org/wiki/Google_Play_Services) fully sandboxed like any other regular app. This means you can take advantage of most Google Play Services, such as [push notifications](https://firebase.google.com/docs/cloud-messaging/), while giving you full control over their permissions and access, and while containing them to a specific [work profile](os/android-overview.md#work-profile) or [user profile](os/android-overview.md#user-profiles) of your choice.
|
||||
|
||||
Google Pixel phones are the only devices that currently meet GrapheneOS's [hardware security requirements](https://grapheneos.org/faq#device-support).
|
||||
|
||||
[Why we recommend GrapheneOS over CalyxOS :material-arrow-right-drop-circle:](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/){ .md-button }
|
||||
|
||||
### DivestOS
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**DivestOS** is a soft-fork of [LineageOS](https://lineageos.org/).
|
||||
DivestOS inherits many [supported devices](https://divestos.org/index.php?page=devices&base=LineageOS) from LineageOS. It has signed builds, making it possible to have [verified boot](https://source.android.com/security/verifiedboot) on some non-Pixel devices.
|
||||
|
||||
[:octicons-home-16: Homepage](https://divestos.org){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://divestoseb5nncsydt7zzf5hrfg44md4bxqjs5ifcv4t7gt7u6ohjyyd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://divestos.org/index.php?page=privacy_policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://divestos.org/index.php?page=faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/divested-mobile){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://divested.dev/pages/donate){ .card-link title=Contribute }
|
||||
|
||||
DivestOS has automated kernel vulnerability ([CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)) [patching](https://gitlab.com/divested-mobile/cve_checker), fewer proprietary blobs, and a custom [hosts](https://divested.dev/index.php?page=dnsbl) file. Its hardened WebView, [Mulch](https://gitlab.com/divested-mobile/mulch), enables [CFI](https://en.wikipedia.org/wiki/Control-flow_integrity) for all architectures and [network state partitioning](https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning), and receives out-of-band updates.
|
||||
DivestOS also includes kernel patches from GrapheneOS and enables all available kernel security features via [defconfig hardening](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L758). All kernels newer than version 3.4 include full page [sanitization](https://lwn.net/Articles/334747/) and all ~22 Clang-compiled kernels have [`-ftrivial-auto-var-init=zero`](https://reviews.llvm.org/D54604?id=174471) enabled.
|
||||
|
||||
DivestOS implements some system hardening patches originally developed for GrapheneOS. DivestOS 16.0 and higher implements GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) and SENSORS permission toggle, [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), [exec-spawning](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/#additional-hardening), [JNI](https://en.wikipedia.org/wiki/Java_Native_Interface) [constification](https://en.wikipedia.org/wiki/Const_(computer_programming)), and partial [bionic](https://en.wikipedia.org/wiki/Bionic_(software)) hardening patchsets. 17.1 and higher features GrapheneOS's per-network full [MAC randomization](https://en.wikipedia.org/wiki/MAC_address#Randomization) option, [`ptrace_scope`](https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html) control, and automatic reboot/Wi-Fi/Bluetooth [timeout options](https://grapheneos.org/features).
|
||||
|
||||
DivestOS uses F-Droid as its default app store. Normally, we would recommend avoiding F-Droid due to its numerous [security issues](#f-droid). However, doing so on DivestOS isn't viable; the developers update their apps via their own F-Droid repositories ([DivestOS Official](https://divestos.org/fdroid/official/?fingerprint=E4BE8D6ABFA4D9D4FEEF03CDDA7FF62A73FD64B75566F6DD4E5E577550BE8467) and [DivestOS WebView](https://divestos.org/fdroid/webview/?fingerprint=FB426DA1750A53D7724C8A582B4D34174E64A84B38940E5D5A802E1DFF9A40D2)). We recommend disabling the official F-Droid app and using [Neo Store](https://github.com/NeoApplications/Neo-Store/) with the DivestOS repositories enabled to keep those components up to date. For other apps, our recommended methods of obtaining them still apply.
|
||||
|
||||
!!! warning
|
||||
|
||||
DivestOS firmware update [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) and quality control varies across the devices it supports. We still recommend GrapheneOS depending on your device's compatibility. For other devices, DivestOS is a good alternative.
|
||||
|
||||
Not all of the supported devices have verified boot, and some perform it better than others.
|
||||
|
||||
## Android Devices
|
||||
|
||||
When purchasing a device, we recommend getting one as new as possible. The software and firmware of mobile devices are only supported for a limited time, so buying new extends that lifespan as much as possible.
|
||||
|
||||
Avoid buying phones from mobile network operators. These often have a **locked bootloader** and do not support [OEM unlocking](https://source.android.com/devices/bootloader/locking_unlocking). These phone variants will prevent you from installing any kind of alternative Android distribution.
|
||||
|
||||
Be very **careful** about buying second hand phones from online marketplaces. Always check the reputation of the seller. If the device is stolen, there's a possibility of [IMEI blacklisting](https://www.gsma.com/security/resources/imei-blacklisting/). There is also a risk involved with you being associated with the activity of the previous owner.
|
||||
|
||||
A few more tips regarding Android devices and operating system compatibility:
|
||||
|
||||
- Do not buy devices that have reached or are near their end-of-life, additional firmware updates must be provided by the manufacturer.
|
||||
- Do not buy preloaded LineageOS or /e/ OS phones or any Android phones without proper [Verified Boot](https://source.android.com/security/verifiedboot) support and firmware updates. These devices also have no way for you to check whether they've been tampered with.
|
||||
- In short, if a device or Android distribution is not listed here, there is probably a good reason. Check out our [forum](https://discuss.privacyguides.net/) to find details!
|
||||
|
||||
### Google Pixel
|
||||
|
||||
Google Pixel phones are the **only** devices we recommend for purchase. Pixel phones have stronger hardware security than any other Android devices currently on the market, due to proper AVB support for third-party operating systems and Google's custom [Titan](https://security.googleblog.com/2021/10/pixel-6-setting-new-standard-for-mobile.html) security chips acting as the Secure Element.
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Google Pixel** devices are known to have good security and properly support [Verified Boot](https://source.android.com/security/verifiedboot), even when installing custom operating systems.
|
||||
|
||||
Beginning with the **Pixel 6** and **6 Pro**, Pixel devices receive a minimum of 5 years of guaranteed security updates, ensuring a much longer lifespan compared to the 2-4 years competing OEMs typically offer.
|
||||
|
||||
[:material-shopping: Store](https://store.google.com/category/phones){ .md-button .md-button--primary }
|
||||
|
||||
Secure Elements like the Titan M2 are more limited than the processor's Trusted Execution Environment used by most other phones as they are only used for secrets storage, hardware attestation, and rate limiting, not for running "trusted" programs. Phones without a Secure Element have to use the TEE for *all* of those functions, resulting in a larger attack surface.
|
||||
|
||||
Google Pixel phones use a TEE OS called Trusty which is [open-source](https://source.android.com/security/trusty#whyTrusty), unlike many other phones.
|
||||
|
||||
The installation of GrapheneOS on a Pixel phone is easy with their [web installer](https://grapheneos.org/install/web). If you don't feel comfortable doing it yourself and are willing to spend a bit of extra money, check out the [NitroPhone](https://shop.nitrokey.com/shop) as they come preloaded with GrapheneOS from the reputable [Nitrokey](https://www.nitrokey.com/about) company.
|
||||
|
||||
A few more tips for purchasing a Google Pixel:
|
||||
|
||||
- If you're after a bargain on a Pixel device, we suggest buying an "**a**" model, just after the next flagship is released. Discounts are usually available because Google will be trying to clear their stock.
|
||||
- Consider price beating options and specials offered at physical stores.
|
||||
- Look at online community bargain sites in your country. These can alert you to good sales.
|
||||
- Google provides a list showing the [support cycle](https://support.google.com/nexus/answer/4457705) for each one of their devices. The price per day for a device can be calculated as: $\text{Cost} \over \text {EOL Date}-\text{Current Date}$, meaning that the longer use of the device the lower cost per day.
|
||||
|
||||
## General Apps
|
||||
|
||||
We recommend a wide variety of Android apps throughout this site. The apps listed here are Android-exclusive and specifically enhance or replace key system functionality.
|
||||
|
||||
### Shelter
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Shelter** is an app that helps you leverage Android's Work Profile functionality to isolate or duplicate apps on your device.
|
||||
|
||||
Shelter supports blocking contact search cross profiles and sharing files across profiles via the default file manager ([DocumentsUI](https://source.android.com/devices/architecture/modular-system/documentsui)).
|
||||
|
||||
[:octicons-repo-16: Repository](https://gitea.angry.im/PeterCxy/Shelter#shelter){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://gitea.angry.im/PeterCxy/Shelter){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.patreon.com/PeterCxy){ .card-link title=Contribute }
|
||||
|
||||
!!! warning
|
||||
|
||||
Shelter is recommended over [Insular](https://secure-system.gitlab.io/Insular/) and [Island](https://github.com/oasisfeng/island) as it supports [contact search blocking](https://secure-system.gitlab.io/Insular/faq.html).
|
||||
|
||||
When using Shelter, you are placing complete trust in its developer, as Shelter acts as a [Device Admin](https://developer.android.com/guide/topics/admin/device-admin) to create the Work Profile, and it has extensive access to the data stored within the Work Profile.
|
||||
|
||||
### Auditor
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Auditor** is an app which leverages hardware security features to provide device integrity monitoring by actively validating the identity of a device and the integrity of its operating system. Currently, it only works with GrapheneOS or the stock operating system for [supported devices](https://attestation.app/about#device-support).
|
||||
|
||||
[:octicons-home-16: Homepage](https://attestation.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://attestation.app/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://attestation.app/about){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://attestation.app/source){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://attestation.app/donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.attestation.auditor.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/Auditor/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
Auditor performs attestation and intrusion detection by:
|
||||
|
||||
- Using a [Trust On First Use (TOFU)](https://en.wikipedia.org/wiki/Trust_on_first_use) model between an *auditor* and *auditee*, the pair establish a private key in the [hardware-backed keystore](https://source.android.com/security/keystore/) of the *Auditor*.
|
||||
- The *auditor* can either be another instance of the Auditor app or the [Remote Attestation Service](https://attestation.app).
|
||||
- The *auditor* records the current state and configuration of the *auditee*.
|
||||
- Should tampering with the operating system of the *auditee* happen after the pairing is complete, the auditor will be aware of the change in the device state and configurations.
|
||||
- You will be alerted to the change.
|
||||
|
||||
No personally identifiable information is submitted to the attestation service. We recommend that you sign up with an anonymous account and enable remote attestation for continuous monitoring.
|
||||
|
||||
If your [threat model](basics/threat-modeling.md) requires privacy, you could consider using [Orbot](tor.md#orbot) or a VPN to hide your IP address from the attestation service.
|
||||
To make sure that your hardware and operating system is genuine, [perform local attestation](https://grapheneos.org/install/web#verifying-installation) immediately after the device has been installed and prior to any internet connection.
|
||||
|
||||
### Secure Camera
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Secure Camera** is a camera app focused on privacy and security which can capture images, videos and QR codes. CameraX vendor extensions (Portrait, HDR, Night Sight, Face Retouch, and Auto) are also supported on available devices.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/Camera){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://grapheneos.org/usage#camera){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/GrapheneOS/Camera){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.camera.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/Camera/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
Main privacy features include:
|
||||
|
||||
- Auto removal of [Exif](https://en.wikipedia.org/wiki/Exif) metadata (enabled by default)
|
||||
- Use of the new [Media](https://developer.android.com/training/data-storage/shared/media) API, therefore [storage permissions](https://developer.android.com/training/data-storage) are not required
|
||||
- Microphone permission not required unless you want to record sound
|
||||
|
||||
!!! note
|
||||
|
||||
Metadata is not currently deleted from video files but that is planned.
|
||||
|
||||
The image orientation metadata is not deleted. If you enable location (in Secure Camera) that **won't** be deleted either. If you want to delete that later you will need to use an external app such as [ExifEraser](data-redaction.md#exiferaser).
|
||||
|
||||
### Secure PDF Viewer
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Secure PDF Viewer** is a PDF viewer based on [pdf.js](https://en.wikipedia.org/wiki/PDF.js) that doesn't require any permissions. The PDF is fed into a [sandboxed](https://en.wikipedia.org/wiki/Sandbox_(software_development)) [webview](https://developer.android.com/guide/webapps/webview). This means that it doesn't require permission directly to access content or files.
|
||||
|
||||
[Content-Security-Policy](https://en.wikipedia.org/wiki/Content_Security_Policy) is used to enforce that the JavaScript and styling properties within the WebView are entirely static content.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/PdfViewer){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://github.com/GrapheneOS/PdfViewer){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.pdfviewer.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/PdfViewer/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
## Obtaining Applications
|
||||
|
||||
### Obtainium
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Obtainium** is an app manager which allows you to install and update apps directly from the developer's own releases page (i.e. GitHub, GitLab, the developer's website, etc.), rather than a centralized app store/repository. It supports automatic background updates on Android 12 and higher.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/ImranR98/Obtainium#readme){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://github.com/ImranR98/Obtainium){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://github.com/sponsors/ImranR98){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-github: GitHub](https://github.com/ImranR98/Obtainium/releases)
|
||||
|
||||
Obtainium allows you to download APK installer files from a wide variety of sources, and it is up to you to ensure those sources and apps are legitimate. For example, using Obtainium to install Signal from [Signal's APK landing page](https://signal.org/android/apk/) should be fine, but installing from third-party APK repositories like Aptoide or APKPure may pose additional risks.
|
||||
|
||||
Obtainium can also be used to download apps from F-Droid repositories, and may serve as a useful alternative to the official F-Droid clients. However, we generally recommend against apps built by F-Droid or from unofficial F-Droid repositories: Read [our notes on F-Droid](#f-droid) below for more information.
|
||||
|
||||
### GrapheneOS App Store
|
||||
|
||||
GrapheneOS's app store is available on [GitHub](https://github.com/GrapheneOS/Apps/releases). It supports Android 12 and above and is capable of updating itself. The app store has standalone applications built by the GrapheneOS project such as the [Auditor](https://attestation.app/), [Camera](https://github.com/GrapheneOS/Camera), and [PDF Viewer](https://github.com/GrapheneOS/PdfViewer). If you are looking for these applications, we highly recommend that you get them from GrapheneOS's app store instead of the Play Store, as the apps on their store are signed by the GrapheneOS's project own signature that Google does not have access to.
|
||||
|
||||
### Aurora Store
|
||||
|
||||
The Google Play Store requires a Google account to login which is not great for privacy. You can get around this by using an alternative client, such as Aurora Store.
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Aurora Store** is a Google Play Store client which does not require a Google Account, Google Play Services, or microG to download apps.
|
||||
|
||||
[:octicons-home-16: Homepage](https://auroraoss.com/){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://gitlab.com/AuroraOSS/AuroraStore){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-gitlab: GitLab](https://gitlab.com/AuroraOSS/AuroraStore/-/releases)
|
||||
|
||||
Aurora Store does not allow you to download paid apps with their anonymous account feature. You can optionally log in with your Google account with Aurora Store to download apps you have purchased, which does give access to the list of apps you've installed to Google, however you still benefit from not requiring the full Google Play client and Google Play Services or microG on your device.
|
||||
|
||||
### Manually with RSS Notifications
|
||||
|
||||
For apps that are released on platforms like GitHub and GitLab, you may be able to add an RSS feed to your [news aggregator](/news-aggregators) that will help you keep track of new releases.
|
||||
|
||||
   
|
||||
|
||||
#### GitHub
|
||||
|
||||
On GitHub, using [Secure Camera](#secure-camera) as an example, you would navigate to its [releases page](https://github.com/GrapheneOS/Camera/releases) and append `.atom` to the URL:
|
||||
|
||||
`https://github.com/GrapheneOS/Camera/releases.atom`
|
||||
|
||||
#### GitLab
|
||||
|
||||
On GitLab, using [Aurora Store](#aurora-store) as an example, you would navigate to its [project repository](https://gitlab.com/AuroraOSS/AuroraStore) and append `/-/tags?format=atom` to the URL:
|
||||
|
||||
`https://gitlab.com/AuroraOSS/AuroraStore/-/tags?format=atom`
|
||||
|
||||
#### Verifying APK Fingerprints
|
||||
|
||||
If you download APK files to install manually, you can verify their signature with the [`apksigner`](https://developer.android.com/studio/command-line/apksigner) tool, which is a part of Android [build-tools](https://developer.android.com/studio/releases/build-tools).
|
||||
|
||||
1. Install [Java JDK](https://www.oracle.com/java/technologies/downloads/).
|
||||
|
||||
2. Download the [Android Studio command line tools](https://developer.android.com/studio#command-tools).
|
||||
|
||||
3. Extract the downloaded archive:
|
||||
|
||||
```bash
|
||||
unzip commandlinetools-*.zip
|
||||
cd cmdline-tools
|
||||
./bin/sdkmanager --sdk_root=./ "build-tools;29.0.3"
|
||||
```
|
||||
|
||||
4. Run the signature verification command:
|
||||
|
||||
```bash
|
||||
./build-tools/29.0.3/apksigner verify --print-certs ../Camera-37.apk
|
||||
```
|
||||
|
||||
5. The resulting hashes can then be compared with another source. Some developers such as Signal [show the fingerprints](https://signal.org/android/apk/) on their website.
|
||||
|
||||
```bash
|
||||
Signer #1 certificate DN: CN=GrapheneOS
|
||||
Signer #1 certificate SHA-256 digest: 6436b155b917c2f9a9ed1d15c4993a5968ffabc94947c13f2aeee14b7b27ed59
|
||||
Signer #1 certificate SHA-1 digest: 23e108677a2e1b1d6e6b056f3bb951df7ad5570c
|
||||
Signer #1 certificate MD5 digest: dbbcd0cac71bd6fa2102a0297c6e0dd3
|
||||
```
|
||||
|
||||
### F-Droid
|
||||
|
||||
{ align=right width=120px }
|
||||
|
||||
==We do **not** currently recommend F-Droid as a way to obtain apps.== F-Droid is often recommended as an alternative to Google Play, particularly in the privacy community. The option to add third-party repositories and not be confined to Google's walled garden has led to its popularity. F-Droid additionally has [reproducible builds](https://f-droid.org/en/docs/Reproducible_Builds/) for some applications and is dedicated to free and open-source software. However, there are [notable problems](https://privsec.dev/posts/android/f-droid-security-issues/) with the official F-Droid client, their quality control, and how they build, sign, and deliver packages.
|
||||
|
||||
Due to their process of building apps, apps in the official F-Droid repository often fall behind on updates. F-Droid maintainers also reuse package IDs while signing apps with their own keys, which is not ideal as it gives the F-Droid team ultimate trust.
|
||||
|
||||
Other popular third-party repositories such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid/) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from GitHub and is the next best thing to the developers' own repositories. However, it is not something that we can recommend, as apps are typically [removed](https://github.com/vfsfitvnm/ViMusic/issues/240#issuecomment-1225564446) from that respository when they make it to the main F-Droid repository. While that makes sense (since the goal of that particular repository is to host apps before they're accepted into the main F-Droid repository), it can leave you with installed apps which no longer receive updates.
|
||||
|
||||
That said, the [F-Droid](https://f-droid.org/en/packages/) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid/) repositories are home to countless apps, so they can be a useful tool to search for and discover open-source apps that you can then download through Play Store, Aurora Store, or by getting the APK directly from the developer. It is important to keep in mind that some apps in these repositories have not been updated in years and may rely on unsupported libraries, among other things, posing a potential security risk. You should use your best judgement when looking for new apps via this method.
|
||||
|
||||
!!! note
|
||||
|
||||
In some rare cases, the developer of an app will only distribute it through F-Droid ([Gadgetbridge](https://gadgetbridge.org/) is one example of this). If you really need an app like that, we recommend using [Neo Store](https://github.com/NeoApplications/Neo-Store/) instead of the official F-Droid app to obtain it.
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
### Operating Systems
|
||||
|
||||
- Must be open-source software.
|
||||
- Must support bootloader locking with custom AVB key support.
|
||||
- Must receive major Android updates within 0-1 months of release.
|
||||
- Must receive Android feature updates (minor version) within 0-14 days of release.
|
||||
- Must receive regular security patches within 0-5 days of release.
|
||||
- Must **not** be "rooted" out of the box.
|
||||
- Must **not** enable Google Play Services by default.
|
||||
- Must **not** require system modification to support Google Play Services.
|
||||
|
||||
### Devices
|
||||
|
||||
- Must support at least one of our recommended custom operating systems.
|
||||
- Must be currently sold new in stores.
|
||||
- Must receive a minimum of 5 years of security updates.
|
||||
- Must have dedicated secure element hardware.
|
||||
|
||||
### Applications
|
||||
|
||||
- Applications on this page must not be applicable to any other software category on the site.
|
||||
- General applications should extend or replace core system functionality.
|
||||
- Applications should receive regular updates and maintenance.
|
108
docs/android/distributions.md
Normal file
@ -0,0 +1,108 @@
|
||||
---
|
||||
meta_title: "The Best Custom Android OSes (aka Custom ROMs) - Privacy Guides"
|
||||
title: "Alternative Distributions"
|
||||
description: You can replace the operating system on your Android phone with these secure and privacy-respecting alternatives.
|
||||
schema:
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
name: Private Android Operating Systems
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: GrapheneOS
|
||||
image: /assets/img/android/grapheneos.svg
|
||||
url: https://grapheneos.org/
|
||||
sameAs: https://en.wikipedia.org/wiki/GrapheneOS
|
||||
subjectOf:
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: Divest
|
||||
image: /assets/img/android/divestos.svg
|
||||
url: https://divestos.org/
|
||||
sameAs: https://en.wikipedia.org/wiki/DivestOS
|
||||
subjectOf:
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
---
|
||||
A **custom Android-based operating system** (often known as a **custom ROM**) is a popular way to achieve higher levels of privacy and security on your device. This is in contrast to the "stock" version of Android which comes with your phone from the factory, and is often deeply integrated with Google Play Services.
|
||||
|
||||
We recommend installing one of these custom Android operating systems on your device, listed in order of preference, depending on your device's compatibility with these operating systems.
|
||||
|
||||
## AOSP Derivatives
|
||||
|
||||
### GrapheneOS
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**GrapheneOS** is the best choice when it comes to privacy and security.
|
||||
|
||||
GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wiki/Hardening_(computing)) and privacy improvements. It has a [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), network and sensor permissions, and various other [security features](https://grapheneos.org/features). GrapheneOS also comes with full firmware updates and signed builds, so verified boot is fully supported.
|
||||
|
||||
[:octicons-home-16: Homepage](https://grapheneos.org){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://grapheneos.org/faq#privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://grapheneos.org/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://grapheneos.org/source){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
</div>
|
||||
|
||||
GrapheneOS supports [sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play), which runs [Google Play Services](https://en.wikipedia.org/wiki/Google_Play_Services) fully sandboxed like any other regular app. This means you can take advantage of most Google Play Services, such as [push notifications](https://firebase.google.com/docs/cloud-messaging), while giving you full control over their permissions and access, and while containing them to a specific [work profile](../os/android-overview.md#work-profile) or [user profile](../os/android-overview.md#user-profiles) of your choice.
|
||||
|
||||
[Google Pixel phones](../mobile-phones.md#google-pixel) are the only devices that currently meet GrapheneOS's [hardware security requirements](https://grapheneos.org/faq#future-devices).
|
||||
|
||||
### DivestOS
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**DivestOS** is a soft-fork of [LineageOS](https://lineageos.org).
|
||||
DivestOS inherits many [supported devices](https://divestos.org/index.php?page=devices&base=LineageOS) from LineageOS. It has signed builds, making it possible to have [verified boot](https://source.android.com/security/verifiedboot) on some non-Pixel devices.
|
||||
|
||||
[:octicons-home-16: Homepage](https://divestos.org){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://divestoseb5nncsydt7zzf5hrfg44md4bxqjs5ifcv4t7gt7u6ohjyyd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://divestos.org/index.php?page=privacy_policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://divestos.org/index.php?page=faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/divested-mobile){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://divested.dev/pages/donate){ .card-link title=Contribute }
|
||||
|
||||
</div>
|
||||
|
||||
DivestOS has automated kernel vulnerability ([CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)) [patching](https://gitlab.com/divested-mobile/cve_checker), fewer proprietary blobs, and a custom [hosts](https://divested.dev/index.php?page=dnsbl) file. Its hardened WebView, [Mulch](https://gitlab.com/divested-mobile/mulch), enables [CFI](https://en.wikipedia.org/wiki/Control-flow_integrity) for all architectures and [network state partitioning](https://developer.mozilla.org/docs/Web/Privacy/State_Partitioning), and receives out-of-band updates.
|
||||
DivestOS also includes kernel patches from GrapheneOS and enables all available kernel security features via [defconfig hardening](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L758). All kernels newer than version 3.4 include full page [sanitization](https://lwn.net/Articles/334747) and all ~22 Clang-compiled kernels have [`-ftrivial-auto-var-init=zero`](https://reviews.llvm.org/D54604?id=174471) enabled.
|
||||
|
||||
DivestOS implements some system hardening patches originally developed for GrapheneOS. DivestOS 16.0 and higher implements GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) and SENSORS permission toggle, [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), [exec-spawning](https://grapheneos.org/usage#exec-spawning), [JNI](https://en.wikipedia.org/wiki/Java_Native_Interface) [constification](https://en.wikipedia.org/wiki/Const_(computer_programming)), and partial [bionic](https://en.wikipedia.org/wiki/Bionic_(software)) hardening patchsets. 17.1 and higher features GrapheneOS's per-network full [MAC randomization](https://en.wikipedia.org/wiki/MAC_address#Randomization) option, [`ptrace_scope`](https://kernel.org/doc/html/latest/admin-guide/LSM/Yama.html) control, [automatic reboot](https://grapheneos.org/features#auto-reboot), and Wi-Fi/Bluetooth [timeout options](https://grapheneos.org/features#attack-surface-reduction).
|
||||
|
||||
DivestOS uses F-Droid as its default app store. We normally [recommend avoiding F-Droid](obtaining-apps.md#f-droid), but doing so on DivestOS isn't viable; the developers update their apps via their own F-Droid repository, [DivestOS Official](https://divestos.org/fdroid/official). We recommend disabling the official F-Droid app and using [F-Droid Basic](https://f-droid.org/en/packages/org.fdroid.basic) **with the DivestOS repository enabled** to keep those components up to date. For other apps, our recommended [methods of obtaining them](obtaining-apps.md) still apply.
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
DivestOS firmware update [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) and quality control varies across the devices it supports. We still recommend GrapheneOS depending on your device's compatibility. For other devices, DivestOS is a good alternative.
|
||||
|
||||
Not all of the supported devices have verified boot, and some perform it better than others.
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](../about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
- Must be open-source software.
|
||||
- Must support bootloader locking with custom AVB key support.
|
||||
- Must receive major Android updates within 0-1 months of release.
|
||||
- Must receive Android feature updates (minor version) within 0-14 days of release.
|
||||
- Must receive regular security patches within 0-5 days of release.
|
||||
- Must **not** be "rooted" out of the box.
|
||||
- Must **not** enable Google Play Services by default.
|
||||
- Must **not** require system modification to support Google Play Services.
|
127
docs/android/general-apps.md
Normal file
@ -0,0 +1,127 @@
|
||||
---
|
||||
title: "General Apps"
|
||||
schema:
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
name: General Android Apps
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Shelter
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Secure Camera
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": MobileApplication
|
||||
name: Secure PDF Viewer
|
||||
applicationCategory: Utilities
|
||||
operatingSystem: Android
|
||||
---
|
||||
We recommend a wide variety of Android apps throughout this site. The apps listed here are Android-exclusive and specifically enhance or replace key system functionality.
|
||||
|
||||
### Shelter
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Shelter** is an app that helps you leverage Android's Work Profile functionality to isolate or duplicate apps on your device.
|
||||
|
||||
Shelter supports blocking contact search cross profiles and sharing files across profiles via the default file manager ([DocumentsUI](https://source.android.com/devices/architecture/modular-system/documentsui)).
|
||||
|
||||
[:octicons-repo-16: Repository](https://gitea.angry.im/PeterCxy/Shelter#shelter){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://gitea.angry.im/PeterCxy/Shelter){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://patreon.com/PeterCxy){ .card-link title=Contribute }
|
||||
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Shelter is recommended over [Insular](https://secure-system.gitlab.io/Insular) and [Island](https://github.com/oasisfeng/island) as it supports [contact search blocking](https://secure-system.gitlab.io/Insular/faq.html).
|
||||
|
||||
When using Shelter, you are placing complete trust in its developer, as Shelter acts as a [Device Admin](https://developer.android.com/guide/topics/admin/device-admin) to create the Work Profile, and it has extensive access to the data stored within the Work Profile.
|
||||
|
||||
</div>
|
||||
|
||||
### Secure Camera
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Secure Camera** is a camera app focused on privacy and security which can capture images, videos, and QR codes. CameraX vendor extensions (Portrait, HDR, Night Sight, Face Retouch, and Auto) are also supported on available devices.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/Camera){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://grapheneos.org/usage#camera){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/GrapheneOS/Camera){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.camera.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/Camera/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Main privacy features include:
|
||||
|
||||
- Auto removal of [Exif](https://en.wikipedia.org/wiki/Exif) metadata (enabled by default)
|
||||
- Use of the new [Media](https://developer.android.com/training/data-storage/shared/media) API, therefore [storage permissions](https://developer.android.com/training/data-storage) are not required
|
||||
- Microphone permission not required unless you want to record sound
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
Metadata is not currently deleted from video files but that is planned.
|
||||
|
||||
The image orientation metadata is not deleted. If you enable location (in Secure Camera) that **won't** be deleted either. If you want to delete that later you will need to use an external app such as [ExifEraser](../data-redaction.md#exiferaser-android).
|
||||
|
||||
</div>
|
||||
|
||||
### Secure PDF Viewer
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Secure PDF Viewer** is a PDF viewer based on [pdf.js](https://en.wikipedia.org/wiki/PDF.js) that doesn't require any permissions. The PDF is fed into a [sandboxed](https://en.wikipedia.org/wiki/Sandbox_(software_development)) [WebView](https://developer.android.com/guide/webapps/webview). This means that it doesn't require permission directly to access content or files.
|
||||
|
||||
[Content-Security-Policy](https://en.wikipedia.org/wiki/Content_Security_Policy) is used to enforce that the JavaScript and styling properties within the WebView are entirely static content.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/PdfViewer){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://github.com/GrapheneOS/PdfViewer){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.pdfviewer.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/PdfViewer/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](../about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
- Applications on this page must not be applicable to any other software category on the site.
|
||||
- General applications should extend or replace core system functionality.
|
||||
- Applications should receive regular updates and maintenance.
|
36
docs/android/index.md
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "Android"
|
||||
icon: 'simple/android'
|
||||
cover: android.webp
|
||||
schema:
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
name: Android Recommendations
|
||||
url: "./"
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": CreativeWork
|
||||
name: Android
|
||||
image: /assets/img/android/android.svg
|
||||
url: https://source.android.com/
|
||||
sameAs: https://en.wikipedia.org/wiki/Android_(operating_system)
|
||||
---
|
||||
|
||||
{ align=right }
|
||||
|
||||
The **Android Open Source Project** (AOSP) is an open-source mobile operating system led by Google which powers the majority of the world's mobile devices. Most phones sold with Android are modified to include invasive integrations and apps such as Google Play Services, so you can significantly improve your privacy on your mobile device by replacing your phone's default installation with a version of Android without these invasive features.
|
||||
|
||||
[:octicons-home-16:](https://source.android.com){ .card-link title=Homepage }
|
||||
[:octicons-info-16:](https://source.android.com/docs){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://cs.android.com/android/platform/superproject/main){ .card-link title="Source Code" }
|
||||
|
||||
We recommend the following Android-specific tools to maximize your mobile device's security and privacy.
|
||||
|
||||
- [Alternative Distributions](distributions.md)
|
||||
- [General Apps](general-apps.md)
|
||||
- [Obtaining Applications](obtaining-apps.md)
|
||||
|
||||
To learn more about Android:
|
||||
|
||||
[General Android Overview :material-arrow-right-drop-circle:](../os/android-overview.md){ .md-button }
|
125
docs/android/obtaining-apps.md
Normal file
@ -0,0 +1,125 @@
|
||||
---
|
||||
title: "Obtaining Applications"
|
||||
---
|
||||
There are many ways to obtain Android apps privately, even from the Play Store, without interacting with Google Play Services. We recommend the following methods of obtaining applications on Android, listed in order of preference.
|
||||
|
||||
## Obtainium
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Obtainium** is an app manager which allows you to install and update apps directly from the developer's own releases page (i.e. GitHub, GitLab, the developer's website, etc.), rather than a centralized app store/repository. It supports automatic background updates on Android 12 and higher.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/ImranR98/Obtainium#readme){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://github.com/ImranR98/Obtainium/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/ImranR98/Obtainium){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://github.com/sponsors/ImranR98){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-github: GitHub](https://github.com/ImranR98/Obtainium/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Obtainium allows you to download APK installer files from a wide variety of sources, and it is up to you to ensure those sources and apps are legitimate. For example, using Obtainium to install Signal from [Signal's APK landing page](https://signal.org/android/apk) should be fine, but installing from third-party APK repositories like Aptoide or APKPure may pose additional risks. The risk of installing a malicious *update* is lower, because Android itself verifies that all app updates are signed by the same developer as the existing app on your phone before installing them.
|
||||
|
||||
## GrapheneOS App Store
|
||||
|
||||
GrapheneOS's app store is available on [GitHub](https://github.com/GrapheneOS/Apps/releases). It supports Android 12 and above and is capable of updating itself. The app store has standalone applications built by the GrapheneOS project such as the [Auditor](../device-integrity.md#auditor-android), [Camera](general-apps.md#secure-camera), and [PDF Viewer](general-apps.md#secure-pdf-viewer). If you are looking for these applications, we highly recommend that you get them from GrapheneOS's app store instead of the Play Store, as the apps on their store are signed by the GrapheneOS's project own signature that Google does not have access to.
|
||||
|
||||
## Aurora Store
|
||||
|
||||
The Google Play Store requires a Google account to log in, which is not great for privacy. You can get around this by using an alternative client, such as Aurora Store.
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Aurora Store** is a Google Play Store client which does not require a Google account, Google Play Services, or microG to download apps.
|
||||
|
||||
[:octicons-home-16: Homepage](https://auroraoss.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://gitlab.com/AuroraOSS/AuroraStore/-/blob/master/POLICY.md){ .card-link title="Privacy Policy" }
|
||||
[:octicons-code-16:](https://gitlab.com/AuroraOSS/AuroraStore){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-gitlab: GitLab](https://gitlab.com/AuroraOSS/AuroraStore/-/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Aurora Store does not allow you to download paid apps with their anonymous account feature. You can optionally log in with your Google account with Aurora Store to download apps you have purchased, which does give access to the list of apps you've installed to Google. However, you still benefit from not requiring the full Google Play client and Google Play Services or microG on your device.
|
||||
|
||||
## Manually with RSS Notifications
|
||||
|
||||
For apps that are released on platforms like GitHub and GitLab, you may be able to add an RSS feed to your [news aggregator](../news-aggregators.md) that will help you keep track of new releases.
|
||||
|
||||
   
|
||||
|
||||
### GitHub
|
||||
|
||||
On GitHub, using [Secure Camera](general-apps.md#secure-camera) as an example, you would navigate to its [releases page](https://github.com/GrapheneOS/Camera/releases) and append `.atom` to the URL:
|
||||
|
||||
`https://github.com/GrapheneOS/Camera/releases.atom`
|
||||
|
||||
### GitLab
|
||||
|
||||
On GitLab, using [Aurora Store](#aurora-store) as an example, you would navigate to its [project repository](https://gitlab.com/AuroraOSS/AuroraStore) and append `/-/tags?format=atom` to the URL:
|
||||
|
||||
`https://gitlab.com/AuroraOSS/AuroraStore/-/tags?format=atom`
|
||||
|
||||
### Verifying APK Fingerprints
|
||||
|
||||
If you download APK files to install manually, you can verify their signature with the [`apksigner`](https://developer.android.com/studio/command-line/apksigner) tool, which is a part of Android [build-tools](https://developer.android.com/studio/releases/build-tools).
|
||||
|
||||
1. Install [Java JDK](https://oracle.com/java/technologies/downloads).
|
||||
|
||||
2. Download the [Android Studio command line tools](https://developer.android.com/studio#command-tools).
|
||||
|
||||
3. Extract the downloaded archive:
|
||||
|
||||
```bash
|
||||
unzip commandlinetools-*.zip
|
||||
cd cmdline-tools
|
||||
./bin/sdkmanager --sdk_root=./ "build-tools;29.0.3"
|
||||
```
|
||||
|
||||
4. Run the signature verification command:
|
||||
|
||||
```bash
|
||||
./build-tools/29.0.3/apksigner verify --print-certs ../Camera-37.apk
|
||||
```
|
||||
|
||||
5. The resulting hashes can then be compared with another source. Some developers such as Signal [show the fingerprints](https://signal.org/android/apk) on their website.
|
||||
|
||||
```bash
|
||||
Signer #1 certificate DN: CN=GrapheneOS
|
||||
Signer #1 certificate SHA-256 digest: 6436b155b917c2f9a9ed1d15c4993a5968ffabc94947c13f2aeee14b7b27ed59
|
||||
Signer #1 certificate SHA-1 digest: 23e108677a2e1b1d6e6b056f3bb951df7ad5570c
|
||||
Signer #1 certificate MD5 digest: dbbcd0cac71bd6fa2102a0297c6e0dd3
|
||||
```
|
||||
|
||||
## F-Droid
|
||||
|
||||
{ align=right width=120px }
|
||||
|
||||
==We only recommend F-Droid as a way to obtain apps which cannot be obtained via the means above.== F-Droid is often recommended as an alternative to Google Play, particularly within the privacy community. The option to add third-party repositories and not be confined to Google's walled garden has led to its popularity. F-Droid additionally has [reproducible builds](https://f-droid.org/en/docs/Reproducible_Builds) for some applications and is dedicated to free and open-source software. However, there are some security-related downsides to how F-Droid builds, signs, and delivers packages:
|
||||
|
||||
Due to their process of building apps, apps in the *official* F-Droid repository often fall behind on updates. F-Droid maintainers also reuse package IDs while signing apps with their own keys, which is not ideal as it gives the F-Droid team ultimate trust. Additionally, the requirements for an app to be included in the official F-Droid repo are less strict than other app stores like Google Play, meaning that F-Droid tends to host a lot more apps which are older, unmaintained, or otherwise no longer meet [modern security standards](https://developer.android.com/google/play/requirements/target-sdk).
|
||||
|
||||
Other popular third-party repositories for F-Droid such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from GitHub and is the next best thing to the developers' own repositories. However, it is not something that we can fully recommend, as apps are typically [removed](https://github.com/vfsfitvnm/ViMusic/issues/240#issuecomment-1225564446) from that repository if they are later added to the main F-Droid repository. While that makes sense (since the goal of that particular repository is to host apps before they're accepted into the main F-Droid repository), it can leave you with installed apps which no longer receive updates.
|
||||
|
||||
That said, the [F-Droid](https://f-droid.org/en/packages) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid) repositories are home to countless apps, so they can be a useful tool to search for and discover open-source apps that you can then download through other means such as the Play Store, Aurora Store, or by getting the APK directly from the developer. You should use your best judgement when looking for new apps via this method, and keep an eye on how frequently the app is updated. Outdated apps may rely on unsupported libraries, among other things, posing a potential security risk.
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">F-Droid Basic</p>
|
||||
|
||||
In some rare cases, the developer of an app will only distribute it through F-Droid ([Gadgetbridge](https://gadgetbridge.org) is one example of this). If you really need an app like that, we recommend using the newer [F-Droid Basic](https://f-droid.org/en/packages/org.fdroid.basic) client instead of the original F-Droid app to obtain it. F-Droid Basic supports automatic background updates without privileged extension or root, and has a reduced feature set (limiting attack surface).
|
||||
|
||||
</div>
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/img/linux/screenshot_permission.png
Normal file
After Width: | Height: | Size: 54 KiB |
@ -29,9 +29,12 @@ There are usually multiple ways to sign up for an account, each with their own b
|
||||
|
||||
The most common way to create a new account is by an email address and password. When using this method, you should use a password manager and follow [best practices](passwords-overview.md) regarding passwords.
|
||||
|
||||
!!! tip
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
You can use your password manager to organize other authentication methods too! Just add the new entry and fill the appropriate fields, you can add notes for things like security questions or a backup key.
|
||||
You can use your password manager to organize other authentication methods too! Just add the new entry and fill the appropriate fields, you can add notes for things like security questions or a backup key.
|
||||
|
||||
</div>
|
||||
|
||||
You will be responsible for managing your login credentials. For added security, you can set up [MFA](multi-factor-authentication.md) on your accounts.
|
||||
|
||||
@ -43,7 +46,7 @@ If you don't want to give your real email address to a service, you have the opt
|
||||
|
||||
Should a service get hacked, you might start receiving phishing or spam emails to the address you used to sign up. Using unique aliases for each service can assist in identifying exactly what service was hacked.
|
||||
|
||||
[Recommended email aliasing services](../email.md#email-aliasing-services){ .md-button }
|
||||
[Recommended email aliasing services](../email-aliasing.md){ .md-button }
|
||||
|
||||
### "Sign in with..." (OAuth)
|
||||
|
||||
@ -53,17 +56,21 @@ When you sign in with OAuth, it will open a login page with the provider you cho
|
||||
|
||||
The main advantages are:
|
||||
|
||||
- **Security**: no risk of being involved in a [data breach](https://en.wikipedia.org/wiki/Data_breach) because the website does not store your credentials.
|
||||
- **Security**: you don't have to trust the security practices of the service you're logging into when it comes to storing your login credentials, because they are stored with the external OAuth provider, which when it comes to services like Apple and Google typically follow the best security practices, continuously audit their authentication systems, and don't store credentials inappropriately (such as in plain text).
|
||||
- **Ease of use**: multiple accounts are managed by a single login.
|
||||
|
||||
But there are disadvantages:
|
||||
|
||||
- **Privacy**: the OAuth provider you log in with will know the services you use.
|
||||
- **Centralization**: if the account you use for OAuth is compromised or you aren't able to login to it, all other accounts connected to it are affected.
|
||||
- **Centralization**: if the account you use for OAuth is compromised, or you aren't able to log in to it, all other accounts connected to it are affected.
|
||||
|
||||
OAuth authentication can be especially useful in those situations where you could benefit from deeper integration between services. Our recommendation is to limit using OAuth to only where you need it, and always protect the main account with [MFA](multi-factor-authentication.md).
|
||||
OAuth can be especially useful in those situations where you could benefit from deeper integration between services. Our recommendation is to limit using OAuth to only where you need it, and always protect the main account with [MFA](multi-factor-authentication.md).
|
||||
|
||||
All the services that use OAuth will be as secure as your underlying provider's account. For example, if you want to secure an account with a hardware key, but that service doesn't support hardware keys, you can secure the account you use with OAuth with a hardware key instead, and now you essentially have hardware MFA on all your accounts. It is worth noting though that weak authentication on your OAuth provider account means that any account tied to that login will also be weak.
|
||||
All the services that use OAuth will be as secure as your underlying OAuth provider's account. For example, if you want to secure an account with a hardware key, but that service doesn't support hardware keys, you can secure the account you use with OAuth with a hardware key instead, and now you essentially have hardware MFA on all your accounts. It is worth noting though that weak authentication on your OAuth provider account means that any account tied to that login will also be weak.
|
||||
|
||||
There is an additional danger when using *Sign in with Google*, *Facebook*, or another service, which is that typically the OAuth process allows for *bidirectional* data sharing. For example, logging in to a forum with your Twitter account could grant that forum access to do things on your Twitter account such as post, read your messages, or access other personal data. OAuth providers will typically present you with a list of things you are granting the external service access to, and you should always ensure that you read through that list and don't inadvertently grant the external service access to anything it doesn't require.
|
||||
|
||||
Malicious applications, particularly on mobile devices where the application has access to the WebView session used for logging in to the OAuth provider, can also abuse this process by hijacking your session with the OAuth provider and gaining access to your OAuth account through those means. Using the *Sign in with* option with any provider should usually be considered a matter of convenience that you only use with services you trust to not be actively malicious.
|
||||
|
||||
### Phone number
|
||||
|
||||
|
@ -3,26 +3,26 @@ title: "Account Deletion"
|
||||
icon: 'material/account-remove'
|
||||
description: It's easy to accumulate a large number of internet accounts, here are some tips on how to prune your collection.
|
||||
---
|
||||
Over time, it can be easy to accumulate a number of online accounts, many of which you may no longer use. Deleting these unused accounts is an important step in reclaiming your privacy, as dormant accounts are vulnerable to data breaches. A data breach is when a service's security is compromised and protected information is viewed, transmitted, or stolen by unauthorized actors. Data breaches are unfortunately all [too common](https://haveibeenpwned.com/PwnedWebsites) these days, and so practicing good digital hygiene is the best way to minimize the impact they have on your life. The goal of this guide then is to help navigate you through the irksome process of account deletion, often made difficult by [deceptive design](https://www.deceptive.design/), for the betterment of your online presence.
|
||||
Over time, it can be easy to accumulate a number of online accounts, many of which you may no longer use. Deleting these unused accounts is an important step in reclaiming your privacy, as dormant accounts are vulnerable to data breaches. A data breach is when a service's security is compromised and protected information is viewed, transmitted, or stolen by unauthorized actors. Data breaches are unfortunately all [too common](https://haveibeenpwned.com/PwnedWebsites) these days, and so practicing good digital hygiene is the best way to minimize the impact they have on your life. The goal of this guide then is to help navigate you through the irksome process of account deletion, often made difficult by [deceptive design](https://deceptive.design), for the betterment of your online presence.
|
||||
|
||||
## Finding Old Accounts
|
||||
|
||||
### Password Manager
|
||||
|
||||
If you have a password manager that you've used for your entire digital life, this part will be very easy. Oftentimes, they include built-in functionality for detecting if your credentials were exposed in a data breach—such as Bitwarden's [Data Breach Report](https://bitwarden.com/blog/have-you-been-pwned/).
|
||||
If you have a password manager that you've used for your entire digital life, this part will be very easy. Oftentimes, they include built-in functionality for detecting if your credentials were exposed in a data breach—such as Bitwarden's [Data Breach Report](https://bitwarden.com/blog/have-you-been-pwned).
|
||||
|
||||
<figure markdown>
|
||||

|
||||
</figure>
|
||||
|
||||
Even if you haven't explicitly used a password manager before, there's a chance you've used the one in your browser or your phone without even realizing it. For example: [Firefox Password Manager](https://support.mozilla.org/kb/password-manager-remember-delete-edit-logins), [Google Password Manager](https://passwords.google.com/intro)
|
||||
and [Edge Password Manager](https://support.microsoft.com/en-us/microsoft-edge/save-or-forget-passwords-in-microsoft-edge-b4beecb0-f2a8-1ca0-f26f-9ec247a3f336).
|
||||
and [Edge Password Manager](https://support.microsoft.com/microsoft-edge/save-or-forget-passwords-in-microsoft-edge-b4beecb0-f2a8-1ca0-f26f-9ec247a3f336).
|
||||
|
||||
Desktop platforms also often have a password manager which may help you recover passwords you've forgotten about:
|
||||
|
||||
- Windows [Credential Manager](https://support.microsoft.com/en-us/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0)
|
||||
- macOS [Passwords](https://support.apple.com/en-us/HT211145)
|
||||
- iOS [Passwords](https://support.apple.com/en-us/HT211146)
|
||||
- Windows [Credential Manager](https://support.microsoft.com/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0)
|
||||
- macOS [Passwords](https://support.apple.com/HT211145)
|
||||
- iOS [Passwords](https://support.apple.com/HT211146)
|
||||
- Linux, Gnome Keyring, which can be accessed through [Seahorse](https://wiki.gnome.org/Apps/Seahorse) or [KDE Wallet Manager](https://userbase.kde.org/KDE_Wallet_Manager)
|
||||
|
||||
### Email
|
||||
@ -39,13 +39,13 @@ When attempting to regain access, if the site returns an error message saying th
|
||||
|
||||
### GDPR (EEA residents only)
|
||||
|
||||
Residents of the EEA have additional rights regarding data erasure specified in [Article 17](https://www.gdpr.org/regulation/article-17.html) of the GDPR. If it's applicable to you, read the privacy policy for any given service to find information on how to exercise your right to erasure. Reading the privacy policy can prove important, as some services have a "Delete Account" option that only disables your account and for real deletion you have to take additional action. Sometimes actual deletion may involve filling out surveys, emailing the data protection officer of the service or even proving your residence in the EEA. If you plan to go this way, do **not** overwrite account information—your identity as an EEA resident may be required. Note that the location of the service does not matter; GDPR applies to anyone serving European users. If the service does not respect your right to erasure, you can contact your national [Data Protection Authority](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rights-citizens/redress/what-should-i-do-if-i-think-my-personal-data-protection-rights-havent-been-respected_en) and you may be entitled to monetary compensation.
|
||||
Residents of the EEA have additional rights regarding data erasure specified in [Article 17](https://gdpr-info.eu/art-17-gdpr) of the GDPR. If it's applicable to you, read the privacy policy for any given service to find information on how to exercise your right to erasure. Reading the privacy policy can prove important, as some services have a "Delete Account" option that only disables your account and for real deletion you have to take additional action. Sometimes actual deletion may involve filling out surveys, emailing the data protection officer of the service or even proving your residence in the EEA. If you plan to go this way, do **not** overwrite account information—your identity as an EEA resident may be required. Note that the location of the service does not matter; GDPR applies to anyone serving European users. If the service does not respect your right to erasure, you can contact your national [Data Protection Authority](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rights-citizens/redress/what-should-i-do-if-i-think-my-personal-data-protection-rights-havent-been-respected_en) and you may be entitled to monetary compensation.
|
||||
|
||||
### Overwriting Account information
|
||||
|
||||
In some situations where you plan to abandon an account, it may make sense to overwrite the account information with fake data. Once you've made sure you can log in, change all the information in your account to falsified information. The reason for this is that many sites will retain information you previously had even after account deletion. The hope is that they will overwrite the previous information with the newest data you entered. However, there is no guarantee that there won't be backups with the prior information.
|
||||
|
||||
For the account email, either create a new alternate email account via your provider of choice or create an alias using an [email aliasing service](../email.md#email-aliasing-services). You can then delete your alternate email address once you are done. We recommend against using temporary email providers, as oftentimes it is possible to reactivate temporary emails.
|
||||
For the account email, either create a new alternate email account via your provider of choice or create an alias using an [email aliasing service](../email-aliasing.md). You can then delete your alternate email address once you are done. We recommend against using temporary email providers, as oftentimes it is possible to reactivate temporary emails.
|
||||
|
||||
### Delete
|
||||
|
||||
@ -59,4 +59,4 @@ Even when you are able to delete an account, there is no guarantee that all your
|
||||
|
||||
## Avoid New Accounts
|
||||
|
||||
As the old saying goes, "an ounce of prevention is worth a pound of cure." Whenever you feel tempted to sign up for a new account, ask yourself, "Do I really need this? Can I accomplish what I need to without an account?" It can often be much harder to delete an account than to create one. And even after deleting or changing the info on your account, there might be a cached version from a third-party—like the [Internet Archive](https://archive.org/). Avoid the temptation when you're able to—your future self will thank you!
|
||||
As the old saying goes, "an ounce of prevention is worth a pound of cure." Whenever you feel tempted to sign up for a new account, ask yourself, "Do I really need this? Can I accomplish what I need to without an account?" It can often be much harder to delete an account than to create one. And even after deleting or changing the info on your account, there might be a cached version from a third-party—like the [Internet Archive](https://archive.org). Avoid the temptation when you're able to—your future self will thank you!
|
||||
|
@ -3,32 +3,32 @@ title: "Common Misconceptions"
|
||||
icon: 'material/robot-confused'
|
||||
description: Privacy isn't a straightforward topic, and it's easy to get caught up in marketing claims and other disinformation.
|
||||
schema:
|
||||
-
|
||||
-
|
||||
"@context": https://schema.org
|
||||
"@type": FAQPage
|
||||
mainEntity:
|
||||
-
|
||||
-
|
||||
"@type": Question
|
||||
name: Is open source software inherently secure?
|
||||
name: Is open-source software inherently secure?
|
||||
acceptedAnswer:
|
||||
"@type": Answer
|
||||
text: |
|
||||
Whether the source code is available and how software is licensed does not inherently affect its security in any way. Open-source software has the potential to be more secure than proprietary software, but there is absolutely no guarantee this is the case. When you evaluate software, you should look at the reputation and security of each tool on an individual basis.
|
||||
-
|
||||
-
|
||||
"@type": Question
|
||||
name: Can shifting trust to another provider increase privacy?
|
||||
acceptedAnswer:
|
||||
"@type": Answer
|
||||
text: |
|
||||
We talk about "shifting trust" a lot when discussing solutions like VPNs (which shift the trust you place in your ISP to the VPN provider). While this protects your browsing data from your ISP specifically, the VPN provider you choose still has access to your browsing data: Your data isn't completely secured from all parties.
|
||||
-
|
||||
-
|
||||
"@type": Question
|
||||
name: Are privacy-focused solutions inherently trustworthy?
|
||||
acceptedAnswer:
|
||||
"@type": Answer
|
||||
text: |
|
||||
Focusing solely on the privacy policies and marketing of a tool or provider can blind you to its weaknesses. When you're looking for a more private solution, you should determine what the underlying problem is and find technical solutions to that problem. For example, you may want to avoid Google Drive, which gives Google access to all of your data. The underlying problem in this case is lack of E2EE, so you should make sure that the provider you switch to actually implements E2EE, or use a tool (like Cryptomator) which provides E2EE on any cloud provider. Switching to a "privacy-focused" provider (that doesn't implement E2EE) doesn't solve your problem: it just shifts trust from Google to that provider.
|
||||
-
|
||||
-
|
||||
"@type": Question
|
||||
name: How complicated should my threat model be?
|
||||
acceptedAnswer:
|
||||
@ -42,7 +42,7 @@ schema:
|
||||
|
||||
These myths stem from a number of prejudices, but whether the source code is available and how software is licensed does not inherently affect its security in any way. ==Open-source software has the *potential* to be more secure than proprietary software, but there is absolutely no guarantee this is the case.== When you evaluate software, you should look at the reputation and security of each tool on an individual basis.
|
||||
|
||||
Open-source software *can* be audited by third-parties, and is often more transparent about potential vulnerabilities than proprietary counterparts. It also allows you to review the code and disable any suspicious functionality you find yourself. However, *unless you do so*, there is no guarantee that code has ever been evaluated, especially with smaller software projects. The open development process has also sometimes been exploited to introduce new vulnerabilities into even large projects.[^1]
|
||||
Open-source software *can* be audited by third-parties, and is often more transparent about potential vulnerabilities than proprietary counterparts. It also allows you to review the code and disable any suspicious functionality you find yourself. However, *unless you do so*, there is no guarantee that code has ever been evaluated, especially with smaller software projects. The open development process has also sometimes been exploited to introduce new vulnerabilities known as [:material-package-variant-closed-remove: Supply Chain Attacks](common-threats.md#attacks-against-certain-organizations){ .pg-viridian }, which are discussed further in our [Common Threats](common-threats.md) page.[^1]
|
||||
|
||||
On the flip side, proprietary software is less transparent, but that doesn't imply that it's not secure. Major proprietary software projects can be audited internally and by third-party agencies, and independent security researchers can still find vulnerabilities with techniques like reverse engineering.
|
||||
|
||||
@ -79,16 +79,19 @@ One of the clearest threat models is one where people *know who you are* and one
|
||||
|
||||
We don't suggest using a VPN or Tor for any of these things, as your identity is already known through other means.
|
||||
|
||||
!!! tip
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
When shopping online, the use of a [parcel locker](https://en.wikipedia.org/wiki/Parcel_locker) can help keep your physical address private.
|
||||
When shopping online, the use of a [parcel locker](https://en.wikipedia.org/wiki/Parcel_locker) can help keep your physical address private.
|
||||
|
||||
</div>
|
||||
|
||||
2. **Unknown identity** - An unknown identity could be a stable pseudonym that you regularly use. It is not anonymous because it doesn't change. If you're part of an online community, you may wish to retain a persona that others know. This pseudonym isn't anonymous because—if monitored for long enough—details about the owner can reveal further information, such as the way they write, their general knowledge about topics of interest, etc.
|
||||
|
||||
You may wish to use a VPN for this, to mask your IP address. Financial transactions are more difficult to mask: You could consider using anonymous cryptocurrencies, such as [Monero](https://www.getmonero.org/). Employing altcoin shifting may also help to disguise where your currency originated. Typically, exchanges require KYC (know your customer) to be completed before they'll allow you to exchange fiat currency into any kind of cryptocurrency. Local meet-up options may also be a solution; however, those are often more expensive and sometimes also require KYC.
|
||||
You may wish to use a VPN for this, to mask your IP address. Financial transactions are more difficult to mask: You could consider using anonymous cryptocurrencies, such as [Monero](../cryptocurrency.md#monero). Employing altcoin shifting may also help to disguise where your currency originated. Typically, exchanges require KYC (know your customer) to be completed before they'll allow you to exchange fiat currency into any kind of cryptocurrency. Local meet-up options may also be a solution; however, those are often more expensive and sometimes also require KYC.
|
||||
|
||||
3. **Anonymous identity** - Even with experience, anonymous identities are difficult to maintain over long periods of time. They should be short-term and short-lived identities which are rotated regularly.
|
||||
|
||||
Using Tor can help with this. It is also worth noting that greater anonymity is possible through asynchronous communication: Real-time communication is vulnerable to analysis of typing patterns (i.e. more than a paragraph of text, distributed on a forum, via email, etc.)
|
||||
|
||||
[^1]: One notable example of this is the [2021 incident in which University of Minnesota researchers introduced three vulnerabilities into the Linux kernel development project](https://cse.umn.edu/cs/linux-incident).
|
||||
[^1]: A notable supply chain attack occurred in March 2024, when a malicious maintainer added a obfuscated backdoor into `xz`, a popular compression library. The backdoor ([CVE-2024-3094](https://cve.org/CVERecord?id=CVE-2024-3094)) was intended to give an unknown party remote access to most Linux servers via SSH, but it was discovered before it had been widely deployed.
|
||||
|
@ -6,16 +6,43 @@ description: Your threat model is personal to you, but these are some of the thi
|
||||
|
||||
Broadly speaking, we categorize our recommendations into the [threats](threat-modeling.md) or goals that apply to most people. ==You may be concerned with none, one, a few, or all of these possibilities==, and the tools and services you use depend on what your goals are. You may have specific threats outside of these categories as well, which is perfectly fine! The important part is developing an understanding of the benefits and shortcomings of the tools you choose to use, because virtually none of them will protect you from every threat.
|
||||
|
||||
- <span class="pg-purple">:material-incognito: Anonymity</span> - Shielding your online activity from your real identity, protecting you from people who are trying to uncover *your* identity specifically.
|
||||
- <span class="pg-red">:material-target-account: Targeted Attacks</span> - Being protected from hackers or other malicious actors who are trying to gain access to *your* data or devices specifically.
|
||||
- <span class="pg-orange">:material-bug-outline: Passive Attacks</span> - Being protected from things like malware, data breaches, and other attacks that are made against many people at once.
|
||||
- <span class="pg-teal">:material-server-network: Service Providers</span> - Protecting your data from service providers (e.g. with E2EE, which renders your data unreadable to the server).
|
||||
- <span class="pg-blue">:material-eye-outline: Mass Surveillance</span> - Protection from government agencies, organizations, websites, and services which work together to track your activities.
|
||||
- <span class="pg-brown">:material-account-cash: Surveillance Capitalism</span> - Protecting yourself from big advertising networks, like Google and Facebook, as well as a myriad of other third-party data collectors.
|
||||
- <span class="pg-green">:material-account-search: Public Exposure</span> - Limiting the information about you that is accessible online—to search engines or the general public.
|
||||
- <span class="pg-blue-gray">:material-close-outline: Censorship</span> - Avoiding censored access to information or being censored yourself when speaking online.
|
||||
<span class="pg-purple">:material-incognito: **Anonymity**</span>
|
||||
|
||||
Some of these threats may be more important to you than others, depending on your specific concerns. For example, a software developer with access to valuable or critical data may be primarily concerned with <span class="pg-red">:material-target-account: Targeted Attacks</span>, but they probably still want to protect their personal data from being swept up in <span class="pg-blue">:material-eye-outline: Mass Surveillance</span> programs. Similarly, many people may be primarily concerned with <span class="pg-green">:material-account-search: Public Exposure</span> of their personal data, but they should still be wary of security-focused issues, such as <span class="pg-orange">:material-bug-outline: Passive Attacks</span>—like malware affecting their devices.
|
||||
: Shielding your online activity from your real identity, protecting you from people who are trying to uncover *your* identity specifically.
|
||||
|
||||
<span class="pg-red">:material-target-account: **Targeted Attacks**</span>
|
||||
|
||||
: Being protected from hackers or other malicious actors who are trying to gain access to *your* data or devices specifically.
|
||||
|
||||
<span class="pg-viridian">:material-package-variant-closed-remove: **Supply Chain Attacks**</span>
|
||||
|
||||
: Typically a form of <span class="pg-red">:material-target-account: Targeted Attack</span> that centers around a vulnerability or exploit introduced into otherwise good software either directly or through a dependency from a third party.
|
||||
|
||||
<span class="pg-orange">:material-bug-outline: **Passive Attacks**</span>
|
||||
|
||||
: Being protected from things like malware, data breaches, and other attacks that are made against many people at once.
|
||||
|
||||
<span class="pg-teal">:material-server-network: **Service Providers**</span>
|
||||
|
||||
: Protecting your data from service providers (e.g. with E2EE, which renders your data unreadable to the server).
|
||||
|
||||
<span class="pg-blue">:material-eye-outline: **Mass Surveillance**</span>
|
||||
|
||||
: Protection from government agencies, organizations, websites, and services which work together to track your activities.
|
||||
|
||||
<span class="pg-brown">:material-account-cash: **Surveillance Capitalism**</span>
|
||||
|
||||
: Protecting yourself from big advertising networks, like Google and Facebook, as well as a myriad of other third-party data collectors.
|
||||
|
||||
<span class="pg-green">:material-account-search: **Public Exposure**</span>
|
||||
|
||||
: Limiting the information about you that is accessible online—to search engines or the general public.
|
||||
|
||||
<span class="pg-blue-gray">:material-close-outline: **Censorship**</span>
|
||||
|
||||
: Avoiding censored access to information or being censored yourself when speaking online.
|
||||
|
||||
Some of these threats may be more important to you than others, depending on your specific concerns. For example, a software developer with access to valuable or critical data may be primarily concerned with <span class="pg-viridian">:material-package-variant-closed-remove: Supply Chain Attacks</span> and <span class="pg-red">:material-target-account: Targeted Attacks</span>. They will likely still want to protect their personal data from being swept up in <span class="pg-blue">:material-eye-outline: Mass Surveillance</span> programs. Similarly, many people may be primarily concerned with <span class="pg-green">:material-account-search: Public Exposure</span> of their personal data, but they should still be wary of security-focused issues, such as <span class="pg-orange">:material-bug-outline: Passive Attacks</span>—like malware affecting their devices.
|
||||
|
||||
## Anonymity vs. Privacy
|
||||
|
||||
@ -35,23 +62,58 @@ When it comes to application security, we generally don't (and sometimes can't)
|
||||
|
||||
To minimize the damage that a malicious piece of software *could* do, you should employ security by compartmentalization. For example, this could come in the form of using different computers for different jobs, using virtual machines to separate different groups of related applications, or using a secure operating system with a strong focus on application sandboxing and mandatory access control.
|
||||
|
||||
!!! tip
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
Mobile operating systems generally have better application sandboxing than desktop operating systems: Apps can't obtain root access, and require permission for access to system resources.
|
||||
Mobile operating systems generally have better application sandboxing than desktop operating systems: Apps can't obtain root access, and require permission for access to system resources.
|
||||
|
||||
Desktop operating systems generally lag behind on proper sandboxing. ChromeOS has similar sandboxing capabilities to Android, and macOS has full system permission control (and developers can opt-in to sandboxing for applications). However, these operating systems do transmit identifying information to their respective OEMs. Linux tends to not submit information to system vendors, but it has poor protection against exploits and malicious apps. This can be mitigated somewhat with specialized distributions which make significant use of virtual machines or containers, such as [Qubes OS](../../desktop/#qubes-os).
|
||||
Desktop operating systems generally lag behind on proper sandboxing. ChromeOS has similar sandboxing capabilities to Android, and macOS has full system permission control (and developers can opt-in to sandboxing for applications). However, these operating systems do transmit identifying information to their respective OEMs. Linux tends to not submit information to system vendors, but it has poor protection against exploits and malicious apps. This can be mitigated somewhat with specialized distributions which make significant use of virtual machines or containers, such as [Qubes OS](../desktop.md#qubes-os).
|
||||
|
||||
</div>
|
||||
|
||||
## Attacks against Specific Individuals
|
||||
|
||||
<span class="pg-red">:material-target-account: Targeted Attacks</span>
|
||||
|
||||
Targeted attacks against a specific person are more problematic to deal with. Common attacks include sending malicious documents via email, exploiting vulnerabilities (e.g. in browsers and operating systems), and physical attacks. If this is a concern for you, you should employ more advanced threat mitigation strategies.
|
||||
|
||||
!!! tip
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
By design, **web browsers**, **email clients**, and **office applications** typically run untrusted code, sent to you from third parties. Running multiple virtual machines—to separate applications like these from your host system, as well as each other—is one technique you can use to mitigate the chance of an exploit in these applications compromising the rest of your system. For example, technologies like Qubes OS or Microsoft Defender Application Guard on Windows provide convenient methods to do this.
|
||||
By design, **web browsers**, **email clients**, and **office applications** typically run untrusted code, sent to you from third parties. Running multiple virtual machines—to separate applications like these from your host system, as well as each other—is one technique you can use to mitigate the chance of an exploit in these applications compromising the rest of your system. For example, technologies like Qubes OS or Microsoft Defender Application Guard on Windows provide convenient methods to do this.
|
||||
|
||||
If you are concerned about **physical attacks** you should use an operating system with a secure verified boot implementation, such as Android, iOS, macOS, or [Windows (with TPM)](https://docs.microsoft.com/en-us/windows/security/information-protection/secure-the-windows-10-boot-process). You should also make sure that your drive is encrypted, and that the operating system uses a TPM or Secure [Enclave](https://support.apple.com/guide/security/secure-enclave-sec59b0b31ff/1/web/1) or [Element](https://developers.google.com/android/security/android-ready-se) to rate limit attempts to enter the encryption passphrase. You should avoid sharing your computer with people you don't trust, because most desktop operating systems don't encrypt data separately per-user.
|
||||
</div>
|
||||
|
||||
## Privacy From Service Providers
|
||||
If you are concerned about **physical attacks** you should use an operating system with a secure verified boot implementation, such as Android, iOS, macOS, or [Windows (with TPM)](https://learn.microsoft.com/windows/security/information-protection/secure-the-windows-10-boot-process). You should also make sure that your drive is encrypted, and that the operating system uses a TPM or Secure [Enclave](https://support.apple.com/guide/security/secure-enclave-sec59b0b31ff/1/web/1) or [Element](https://developers.google.com/android/security/android-ready-se) to rate limit attempts to enter the encryption passphrase. You should avoid sharing your computer with people you don't trust, because most desktop operating systems don't encrypt data separately per-user.
|
||||
|
||||
## Attacks against Certain Organizations
|
||||
|
||||
<span class="pg-viridian">:material-package-variant-closed-remove: Supply Chain Attacks</span>
|
||||
|
||||
Supply chain attacks are frequently a form of <span class="pg-red">:material-target-account: Targeted Attack</span> towards businesses, governments, and activists, although they can end up compromising the public at large as well.
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Example</p>
|
||||
|
||||
A notable example of this occurred in 2017 when M.E.Doc, a popular accounting software in Ukraine, was infected with the *NotPetya* virus, subsequently infecting people who downloaded that software with ransomware. NotPetya itself was a ransomware attack which impacted 2000+ companies in various countries, and was based on the *EternalBlue* exploit developed by the NSA to attack Windows computers over the network.
|
||||
|
||||
</div>
|
||||
|
||||
There are few ways in which this type of attack might be carried out:
|
||||
|
||||
1. A contributor or employee might first work their way into a position of power within a project or organization, and then abuse that position by adding malicious code.
|
||||
2. A developer may be coerced by an outside party to add malicious code.
|
||||
3. An individual or group might identify a third party software dependency (also known as a library) and work to infiltrate it with the above two methods, knowing that it will be used by "downstream" software developers.
|
||||
|
||||
These sorts of attacks can require a lot of time and preparation to perform and are risky because they can be detected, particularly in open source projects if they are popular and have outside interest. Unfortunately they're also one of the most dangerous as they are very hard to mitigate entirely. We would encourage readers to only use software which has a good reputation and makes an effort to reduce risk by:
|
||||
|
||||
1. Only adopting popular software that has been around for a while. The more interest in a project, the greater likelihood that external parties will notice malicious changes. A malicious actor will also need to spend more time gaining community trust with meaningful contributions.
|
||||
2. Finding software which releases binaries with widely-used, trusted build infrastructure platforms, as opposed to developer workstations or self-hosted servers. Some systems like GitHub Actions let you inspect the build script that runs publicly for extra confidence. This lessens the likelihood that malware on a developer's machine could infect their packages, and gives confidence that the binaries produced are in fact produced correctly.
|
||||
3. Looking for code signing on individual source code commits and releases, which creates an auditable trail of who did what. For example: Was the malicious code in the software repository? Which developer added it? Was it added during the build process?
|
||||
4. Checking whether the source code has meaningful commit messages (such as [conventional commits](https://conventionalcommits.org)) which explain what each change is supposed to accomplish. Clear messages can make it easier for outsiders to the project to verify, audit, and find bugs.
|
||||
5. Noting the number of contributors or maintainers a program has. A lone developer may be more susceptible to being coerced into adding malicious code by an external party, or to negligently enabling undesirable behavior. This may very well mean software developed by "Big Tech" has more scrutiny than a lone developer who doesn't answer to anyone.
|
||||
|
||||
## Privacy from Service Providers
|
||||
|
||||
<span class="pg-teal">:material-server-network: Service Providers</span>
|
||||
|
||||
@ -61,13 +123,16 @@ The obvious problem with this is that the service provider (or a hacker who has
|
||||
|
||||
Thankfully, E2EE can alleviate this issue by encrypting communications between you and your desired recipients before they are even sent to the server. The confidentiality of your messages is guaranteed, assuming the service provider doesn't have access to the private keys of either party.
|
||||
|
||||
!!! note "Note on Web-based Encryption"
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">Note on Web-based Encryption</p>
|
||||
|
||||
In practice, the effectiveness of different E2EE implementations varies. Applications, such as [Signal](../real-time-communication.md#signal), run natively on your device, and every copy of the application is the same across different installations. If the service provider were to introduce a [backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) in their application—in an attempt to steal your private keys—it could later be detected with [reverse engineering](https://en.wikipedia.org/wiki/Reverse_engineering).
|
||||
In practice, the effectiveness of different E2EE implementations varies. Applications, such as [Signal](../real-time-communication.md#signal), run natively on your device, and every copy of the application is the same across different installations. If the service provider were to introduce a [backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) in their application—in an attempt to steal your private keys—it could later be detected with [reverse engineering](https://en.wikipedia.org/wiki/Reverse_engineering).
|
||||
|
||||
On the other hand, web-based E2EE implementations, such as Proton Mail's webmail or Bitwarden's *Web Vault*, rely on the server dynamically serving JavaScript code to the browser to handle cryptography. A malicious server can target you and send you malicious JavaScript code to steal your encryption key (and it would be extremely hard to notice). Because the server can choose to serve different web clients to different people—even if you noticed the attack—it would be incredibly hard to prove the provider's guilt.
|
||||
On the other hand, web-based E2EE implementations, such as Proton Mail's web app or Bitwarden's *Web Vault*, rely on the server dynamically serving JavaScript code to the browser to handle cryptography. A malicious server can target you and send you malicious JavaScript code to steal your encryption key (and it would be extremely hard to notice). Because the server can choose to serve different web clients to different people—even if you noticed the attack—it would be incredibly hard to prove the provider's guilt.
|
||||
|
||||
Therefore, you should use native applications over web clients whenever possible.
|
||||
Therefore, you should use native applications over web clients whenever possible.
|
||||
|
||||
</div>
|
||||
|
||||
Even with E2EE, service providers can still profile you based on **metadata**, which typically isn't protected. While the service provider can't read your messages, they can still observe important things, such as who you're talking to, how often you message them, and when you're typically active. Protection of metadata is fairly uncommon, and—if it's within your [threat model](threat-modeling.md)—you should pay close attention to the technical documentation of the software you're using to see if there's any metadata minimization or protection at all.
|
||||
|
||||
@ -77,21 +142,27 @@ Even with E2EE, service providers can still profile you based on **metadata**, w
|
||||
|
||||
Mass surveillance is the intricate effort to monitor the "behavior, many activities, or information" of an entire (or substantial fraction of a) population.[^1] It often refers to government programs, such as the ones [disclosed by Edward Snowden in 2013](https://en.wikipedia.org/wiki/Global_surveillance_disclosures_(2013%E2%80%93present)). However, it can also be carried out by corporations, either on behalf of government agencies or by their own initiative.
|
||||
|
||||
!!! abstract "Atlas of Surveillance"
|
||||
<div class="admonition abstract" markdown>
|
||||
<p class="admonition-title">Atlas of Surveillance</p>
|
||||
|
||||
If you want to learn more about surveillance methods and how they're implemented in your city you can also take a look at the [Atlas of Surveillance](https://atlasofsurveillance.org/) by the [Electronic Frontier Foundation](https://www.eff.org/).
|
||||
If you want to learn more about surveillance methods and how they're implemented in your city you can also take a look at the [Atlas of Surveillance](https://atlasofsurveillance.org) by the [Electronic Frontier Foundation](https://eff.org).
|
||||
|
||||
In France you can take a look at the [Technolopolice website](https://technopolice.fr/villes/) maintained by the non-profit association La Quadrature du Net.
|
||||
In France you can take a look at the [Technopolice website](https://technopolice.fr/villes) maintained by the non-profit association La Quadrature du Net.
|
||||
|
||||
Governments often justify mass surveillance programs as necessary means to combat terrorism and prevent crime. However, breaching human rights, it's most often used to disproportionately target minority groups and political dissidents, among others.
|
||||
</div>
|
||||
|
||||
!!! quote "ACLU: [*The Privacy Lesson of 9/11: Mass Surveillance is Not the Way Forward*](https://www.aclu.org/news/national-security/the-privacy-lesson-of-9-11-mass-surveillance-is-not-the-way-forward)"
|
||||
Governments often justify mass surveillance programs as necessary means to combat terrorism and prevent crime. However, as breaches of human rights, they're most often used to disproportionately target minority groups and political dissidents, among others.
|
||||
|
||||
In the face of [Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection)], intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every American’s phone calls — who’s calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about people’s lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
|
||||
<div class="admonition quote" markdown>
|
||||
<p class="admonition-title">ACLU: <em><a href="https://aclu.org/news/national-security/the-privacy-lesson-of-9-11-mass-surveillance-is-not-the-way-forward">The Privacy Lesson of 9/11: Mass Surveillance is Not the Way Forward</a></em></p>
|
||||
|
||||
In the face of Edward Snowden's disclosures of government programs such as [PRISM](https://en.wikipedia.org/wiki/PRISM) and [Upstream](https://en.wikipedia.org/wiki/Upstream_collection), intelligence officials also admitted that the NSA had for years been secretly collecting records about virtually every American’s phone calls — who’s calling whom, when those calls are made, and how long they last. This kind of information, when amassed by the NSA day after day, can reveal incredibly sensitive details about people’s lives and associations, such as whether they have called a pastor, an abortion provider, an addiction counselor, or a suicide hotline.
|
||||
|
||||
</div>
|
||||
|
||||
Despite growing mass surveillance in the United States, the government has found that mass surveillance programs like Section 215 have had "little unique value" with respect to stopping actual crimes or terrorist plots, with efforts largely duplicating the FBI's own targeted surveillance programs.[^2]
|
||||
|
||||
Online, you can be tracked via a variety of methods:
|
||||
Online, you can be tracked via a variety of methods, including but not limited to:
|
||||
|
||||
- Your IP address
|
||||
- Browser cookies
|
||||
@ -99,9 +170,9 @@ Online, you can be tracked via a variety of methods:
|
||||
- Your browser or device fingerprint
|
||||
- Payment method correlation
|
||||
|
||||
\[This list isn't exhaustive].
|
||||
If you're concerned about mass surveillance programs, you can use strategies like compartmentalizing your online identities, blending in with other users, or, whenever possible, simply avoiding giving out identifying information.
|
||||
|
||||
If you're concerned about mass surveillance programs, you can use strategues like compartmentalizing your online identities, blending in with other users, or, whenever possible, simply avoiding giving out identifying information.
|
||||
## Surveillance as a Business Model
|
||||
|
||||
<span class="pg-brown">:material-account-cash: Surveillance Capitalism</span>
|
||||
|
||||
@ -129,20 +200,23 @@ If you've already submitted your real information to sites which shouldn't have
|
||||
|
||||
Censorship online can be carried out (to varying degrees) by actors including totalitarian governments, network administrators, and service providers. These efforts to control communication and restrict access to information will always be incompatible with the human right to Freedom of Expression.[^5]
|
||||
|
||||
Censorship on corporate platforms is increasingly common, as platforms like Twitter and Facebook give in to public demand, market pressures, and pressures from government agencies. Government pressures can be covert requests to businesses, such as the White House [requesting the takedown](https://www.nytimes.com/2012/09/17/technology/on-the-web-a-fine-line-on-free-speech-across-globe.html) of a provocative YouTube video, or overt, such as the Chinese government requiring companies to adhere to a strict regime of censorship.
|
||||
Censorship on corporate platforms is increasingly common, as platforms like Twitter and Facebook give in to public demand, market pressures, and pressures from government agencies. Government pressures can be covert requests to businesses, such as the White House [requesting the takedown](https://nytimes.com/2012/09/17/technology/on-the-web-a-fine-line-on-free-speech-across-globe.html) of a provocative YouTube video, or overt, such as the Chinese government requiring companies to adhere to a strict regime of censorship.
|
||||
|
||||
People concerned with the threat of censorship can use technologies like [Tor](../advanced/tor-overview.md) to circumvent it, and support censorship-resistant communication platforms like [Matrix](../real-time-communication.md#element), which doesn't have a centralized account authority that can close accounts arbitrarily.
|
||||
|
||||
!!! tip
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
While evading censorship itself can be easy, hiding the fact that you are doing it can be very problematic.
|
||||
While evading censorship itself can be easy, hiding the fact that you are doing it can be very problematic.
|
||||
|
||||
You should consider which aspects of the network your adversary can observe, and whether you have plausible deniability for your actions. For example, using [encrypted DNS](../advanced/dns-overview.md#what-is-encrypted-dns) can help you bypass rudimentary, DNS-based censorship systems, but it can't truly hide what you are visiting from your ISP. A VPN or Tor can help hide what you are visiting from network administrators, but can't hide that you're using those networks in the first place. Pluggable transports (such as Obfs4proxy, Meek, or Shadowsocks) can help you evade firewalls that block common VPN protocols or Tor, but your circumvention attempts can still be detected by methods like probing or [deep packet inspection](https://en.wikipedia.org/wiki/Deep_packet_inspection).
|
||||
You should consider which aspects of the network your adversary can observe, and whether you have plausible deniability for your actions. For example, using [encrypted DNS](../advanced/dns-overview.md#what-is-encrypted-dns) can help you bypass rudimentary, DNS-based censorship systems, but it can't truly hide what you are visiting from your ISP. A VPN or Tor can help hide what you are visiting from network administrators, but can't hide that you're using those networks in the first place. Pluggable transports (such as Obfs4proxy, Meek, or Shadowsocks) can help you evade firewalls that block common VPN protocols or Tor, but your circumvention attempts can still be detected by methods like probing or [deep packet inspection](https://en.wikipedia.org/wiki/Deep_packet_inspection).
|
||||
|
||||
</div>
|
||||
|
||||
You must always consider the risks of trying to bypass censorship, the potential consequences, and how sophisticated your adversary may be. You should be cautious with your software selection, and have a backup plan in case you are caught.
|
||||
|
||||
[^1]: Wikipedia: [*Mass Surveillance*](https://en.wikipedia.org/wiki/Mass_surveillance) and [*Surveillance*](https://en.wikipedia.org/wiki/Surveillance).
|
||||
[^2]: United States Privacy and Civil Liberties Oversight Board: [*Report on the Telephone Records Program Conducted under Section 215*](https://documents.pclob.gov/prod/Documents/OversightReport/ec542143-1079-424a-84b3-acc354698560/215-Report_on_the_Telephone_Records_Program.pdf)
|
||||
[^3]: Wikipedia: [*Surveillance capitalism*](https://en.wikipedia.org/wiki/Surveillance_capitalism)
|
||||
[^4]: "[Enumerating badness](https://www.ranum.com/security/computer_security/editorials/dumb/)" (or, "listing all the bad things that we know about"), as many adblockers and antivirus programs do, fails to adequately protect you from new and unknown threats because they have not yet been added to the filter list. You should also employ other mitigation techniques.
|
||||
[^5]: United Nations: [*Universal Declaration of Human Rights*](https://www.un.org/en/about-us/universal-declaration-of-human-rights).
|
||||
[^4]: "[Enumerating badness](https://ranum.com/security/computer_security/editorials/dumb)" (or, "listing all the bad things that we know about"), as many content blockers and antivirus programs do, fails to adequately protect you from new and unknown threats because they have not yet been added to the filter list. You should also employ other mitigation techniques.
|
||||
[^5]: United Nations: [*Universal Declaration of Human Rights*](https://un.org/en/about-us/universal-declaration-of-human-rights).
|
||||
|
@ -13,7 +13,7 @@ As a result, email is best used for receiving transactional emails (like notific
|
||||
|
||||
The standard way to add E2EE to emails between different email providers is by using OpenPGP. There are different implementations of the OpenPGP standard, the most common being [GnuPG](https://en.wikipedia.org/wiki/GNU_Privacy_Guard) and [OpenPGP.js](https://openpgpjs.org).
|
||||
|
||||
There is another standard which is popular with business called [S/MIME](https://en.wikipedia.org/wiki/S/MIME), however, it requires a certificate issued from a [Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority) (not all of them issue S/MIME certificates). It has support in [Google Workplace](https://support.google.com/a/topic/9061730?hl=en&ref_topic=9061731) and [Outlook for Web or Exchange Server 2016, 2019](https://support.office.com/en-us/article/encrypt-messages-by-using-s-mime-in-outlook-on-the-web-878c79fc-7088-4b39-966f-14512658f480).
|
||||
There is another standard which is popular with business called [S/MIME](https://en.wikipedia.org/wiki/S/MIME), however, it requires a certificate issued from a [Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority) (not all of them issue S/MIME certificates). It has support in [Google Workplace](https://support.google.com/a/topic/9061730) and [Outlook for Web or Exchange Server 2016, 2019](https://support.office.com/article/encrypt-messages-by-using-s-mime-in-outlook-on-the-web-878c79fc-7088-4b39-966f-14512658f480).
|
||||
|
||||
Even if you use OpenPGP, it does not support [forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy), which means if either your or the recipient's private key is ever stolen, all previous messages encrypted with it will be exposed. This is why we recommend [instant messengers](../real-time-communication.md) which implement forward secrecy over email for person-to-person communications whenever possible.
|
||||
|
||||
@ -23,7 +23,7 @@ The Web Key Directory (WKD) standard allows email clients to discover the OpenPG
|
||||
|
||||
In addition to the [email clients we recommend](../email-clients.md) which support WKD, some webmail providers also support WKD. Whether *your own* key is published to WKD for others to use depends on your domain configuration. If you use an [email provider](../email.md#openpgp-compatible-services) which supports WKD, such as Proton Mail or Mailbox.org, they can publish your OpenPGP key on their domain for you.
|
||||
|
||||
If you use your own custom domain, you will need to configure WKD separately. If you control your domain name, you can set up WKD regardless of your email provider. One easy way to do this is to use the "[WKD as a Service](https://keys.openpgp.org/about/usage#wkd-as-a-service)" feature from keys.openpgp.org, by setting a CNAME record on the `openpgpkey` subdomain of your domain pointed to `wkd.keys.openpgp.org`, then uploading your key to [keys.openpgp.org](https://keys.openpgp.org/). Alternatively, you can [self-host WKD on your own web server](https://wiki.gnupg.org/WKDHosting).
|
||||
If you use your own custom domain, you will need to configure WKD separately. If you control your domain name, you can set up WKD regardless of your email provider. One easy way to do this is to use the "[WKD as a Service](https://keys.openpgp.org/about/usage#wkd-as-a-service)" feature from keys.openpgp.org, by setting a CNAME record on the `openpgpkey` subdomain of your domain pointed to `wkd.keys.openpgp.org`, then uploading your key to [keys.openpgp.org](https://keys.openpgp.org). Alternatively, you can [self-host WKD on your own web server](https://wiki.gnupg.org/WKDHosting).
|
||||
|
||||
If you use a shared domain from a provider which doesn't support WKD, like @gmail.com, you won't be able to share your OpenPGP key with others via this method.
|
||||
|
||||
@ -33,7 +33,7 @@ Email providers which allow you to use standard access protocols like IMAP and S
|
||||
|
||||
### How Do I Protect My Private Keys?
|
||||
|
||||
A smartcard (such as a [YubiKey](https://support.yubico.com/hc/en-us/articles/360013790259-Using-Your-YubiKey-with-OpenPGP) or [Nitrokey](https://www.nitrokey.com)) works by receiving an encrypted email message from a device (phone, tablet, computer, etc.) running an email/webmail client. The message is then decrypted by the smartcard and the decrypted content is sent back to the device.
|
||||
A smartcard (such as a [YubiKey](https://support.yubico.com/hc/articles/360013790259-Using-Your-YubiKey-with-OpenPGP) or [Nitrokey](../security-keys.md#nitrokey)) works by receiving an encrypted email message from a device (phone, tablet, computer, etc.) running an email/webmail client. The message is then decrypted by the smartcard and the decrypted content is sent back to the device.
|
||||
|
||||
It is advantageous for the decryption to occur on the smartcard to avoid possibly exposing your private key to a compromised device.
|
||||
|
||||
|
146
docs/basics/hardware.md
Normal file
@ -0,0 +1,146 @@
|
||||
---
|
||||
title: "Choosing Your Hardware"
|
||||
icon: 'material/chip'
|
||||
description: Software isn't all that matters; learn about the hardware tools you use every day to protect your privacy.
|
||||
---
|
||||
|
||||
When it comes to discussions about privacy, hardware is often not thought about as much as what software we use. Your hardware should be considered the foundation on which you build the rest of your privacy setup.
|
||||
|
||||
## Picking a Computer
|
||||
|
||||
The internals of your devices process and store all of your digital data. It is important that all devices are supported by the manufacturer and developers by continuing to receive security updates.
|
||||
|
||||
### Hardware Security Programs
|
||||
|
||||
Some devices will have a "hardware security program", which is a collaboration between vendors on best practices and recommendations when designing hardware, for example:
|
||||
|
||||
- [Windows Secured-core PCs](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-highly-secure-11) meet a higher security criteria specified by Microsoft. These protections aren't only applicable to Windows users; Users of other operating systems can still take advantage of features like [DMA protection](https://learn.microsoft.com/en-us/windows/security/information-protection/kernel-dma-protection-for-thunderbolt) and the ability to completely distrust Microsoft certificates.
|
||||
- [Android Ready SE](https://developers.google.com/android/security/android-ready-se) is a collaboration between vendors to ensure their devices follow [best practices](https://source.android.com/docs/security/best-practices/hardware) and include tamper resistant hardware backed storage for things like encryption keys.
|
||||
- macOS running on an Apple SoC takes advantage of [hardware security](../os/macos-overview.md#hardware-security) which may not be available with third party operating systems.
|
||||
- [ChromeOS security](https://chromium.org/chromium-os/developer-library/reference/security/security-whitepaper) is at its best when running on a Chromebook as it is able to make use of available hardware features such as the [hardware root-of-trust](https://chromium.org/chromium-os/developer-library/reference/security/security-whitepaper/#hardware-root-of-trust-and-verified-boot).
|
||||
|
||||
Even if you don't use these operating systems, participation in these programs may indicate that the manufacturer is following best practices when it comes to hardware security and updates.
|
||||
|
||||
### Preinstalled OS
|
||||
|
||||
New computers nearly always come with Windows preinstalled, unless you buy a Mac or a specialty Linux machine. It's usually a good idea to wipe the drive and install a fresh copy of your operating system of choice, even if that means just reinstalling Windows from scratch. Due to agreements between hardware vendors and shady software vendors, the default Windows install often comes preloaded with bloatware, [adware](https://bleepingcomputer.com/news/technology/lenovo-gets-a-slap-on-the-wrist-for-superfish-adware-scandal), or even [malware](https://zdnet.com/article/dell-poweredge-motherboards-ship-with-malware).
|
||||
|
||||
### Firmware Updates
|
||||
|
||||
Hardware often has security issues that are discovered and patched through firmware updates for your hardware.
|
||||
|
||||
Almost every component of your computer requires firmware to operate, from your motherboard to your storage devices. It is ideal for all the components of your device to be fully supported. Apple devices, Chromebooks, most Android phones, and Microsoft Surface devices will handle firmware updates for you as long as the device is supported.
|
||||
|
||||
If you build your own PC, you may need to manually update your motherboard's firmware by downloading it from your OEM's website. If you use Linux, consider using the built-in [`fwupd`](https://fwupd.org) tool that will let you check for and apply any firmware updates available for your motherboard.
|
||||
|
||||
### TPM/Secure Cryptoprocessor
|
||||
|
||||
Most computers and phones come equipped with a TPM (or a similar secure cryptoprocessor) which safely stores your encryption keys and handles other security-related functions. If you're currently using a machine that doesn't have one of these, you might benefit from purchasing a newer computer that has this feature. Some desktop and server motherboards have a "TPM header" which can accept a small accessory board containing the TPM.
|
||||
|
||||
<div class="admonition Note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
Virtual TPMs are susceptible to side-channel attacks and external TPMs, as a result of being separate from the CPU on the motherboard, are vulnerable to [sniffing](https://pulsesecurity.co.nz/articles/TPM-sniffing) when an attacker has access to the hardware. The solution to this problem is to include the secure processor inside the CPU itself, which is the case for Apple's chips and Microsoft's [Pluton](https://microsoft.com/en-us/security/blog/2020/11/17/meet-the-microsoft-pluton-processor-the-security-chip-designed-for-the-future-of-windows-pcs).
|
||||
|
||||
</div>
|
||||
|
||||
### Biometrics
|
||||
|
||||
Many devices come equipped with a fingerprint reader or face recognition capabilities. These can be very convenient, but they aren't perfect and sometimes fail. Most devices will fall back to a PIN or password when this happens, meaning that the security of your devices is still only as good as your password.
|
||||
|
||||
Biometrics can prevent someone from watching you type in your password, so if shoulder-surfing is part of your threat model then biometrics are a good option.
|
||||
|
||||
Most implementations of face authentication require you to be looking at your phone and also only work from a relatively close distance, so you don't need to worry too much about someone pointing your phone at your face to unlock it without your consent. You can still disable biometrics when your phone is locked if you want. On iOS, you can hold the side button and a volume button for 3 seconds to disable Face ID on models that support it. On Android, hold the power button and press Lockdown on the menu.
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Some devices do not have the proper hardware for secure face authentication. There's two main types of face authentication: 2D and 3D. 3D face authentication makes use of a dot projector that lets the device create a 3D depth map of your face. Make sure that your device has this capability.
|
||||
|
||||
</div>
|
||||
|
||||
Android defines three [security classes](https://source.android.com/docs/security/features/biometric/measure#biometric-classes) for biometrics; you should check that your device is Class 3 before enabling biometrics.
|
||||
|
||||
### Device Encryption
|
||||
|
||||
If your device is [encrypted](../encryption.md), your data is most secure when your device is completely powered off (as opposed to merely asleep), i.e. before you've entered your encryption key or lock screen password for the first time. On phones, this state of higher security is referred to as "Before First Unlock" (BFU), and "After First Unlock" (AFU) once you enter the correct password after a reboot/power-on. AFU is considerably less secure against digital forensics toolkits and other exploits, compared to BFU. Therefore, if you are concerned about an attacker with physical access to your device, you should turn it off fully whenever you aren't using it.
|
||||
|
||||
This may be impractical, so consider whether it's worth it, but in either case even AFU mode is effective against most threats, given you are using a strong encryption key.
|
||||
|
||||
## External Hardware
|
||||
|
||||
Some threats can't be protected against by your internal components alone. Many of these options are highly situational; please evaluate if they are really necessary for your threat model.
|
||||
|
||||
### Hardware Security Keys
|
||||
|
||||
Hardware keys are devices that use strong cryptography to authenticate you to a device or account. The idea is that because they can not be copied, you can use them to secure accounts in such a way that they can only be accessed with physical possession of the key, eliminating many remote attacks.
|
||||
|
||||
[Recommended Hardware Keys :material-arrow-right-drop-circle:](../security-keys.md){ .md-button .md-button--primary } [Learn More about Hardware Keys :material-arrow-right-drop-circle:](multi-factor-authentication.md#hardware-security-keys){ .md-button }
|
||||
|
||||
### Camera/Microphone
|
||||
|
||||
If you don't want to trust your OS's permission controls to prevent the camera from activating in the first place, you can buy camera blockers that physically prevent light from reaching the camera. You could also buy a device that doesn't have a built-in camera and use an external camera that you can unplug whenever you're done using it. Some devices come with built-in camera blockers or hardware switches that physically disconnect the camera from power.
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
You should only buy covers that fit your laptop and won't cause damage when you close the lid. Covering the camera will interfere with automatic brightness and face authentication features.
|
||||
|
||||
</div>
|
||||
|
||||
For microphone access, in most cases you will need to trust your OS's built-in permission controls. Alternatively, buy a device that doesn't have a built-in microphone and use an external microphone that you can unplug when you're done using it. Some devices, like a [MacBook or an iPad](https://support.apple.com/guide/security/hardware-microphone-disconnect-secbbd20b00b/web), feature a hardware disconnect for the microphone when you close the lid.
|
||||
|
||||
Many computers have a BIOS option to disable the camera and microphone. When disabled there, the hardware won't even appear as a device on a booted system.
|
||||
|
||||
### Privacy Screens
|
||||
|
||||
Privacy screens are a film you can put over your normal screen so that the screen is only visible from a certain angle. These are good if your threat model includes others peeking at your screen, but it is not foolproof as anyone could just move to a different viewing angle and see what's on your screen.
|
||||
|
||||
### Dead Man's Switches
|
||||
|
||||
A dead man's switch stops a piece of machinery from operating without the presence of a human operator. These were originally designed as a safety measure, but the same concept can be applied to an electronic device to lock it when you're not present.
|
||||
|
||||
Some laptops are able to [detect](https://support.microsoft.com/en-us/windows/managing-presence-sensing-settings-in-windows-11-82285c93-440c-4e15-9081-c9e38c1290bb) when you're present and can lock automatically when you aren't sitting in front of the screen. You should check the settings in your OS to see if your computer supports this feature.
|
||||
|
||||
You can also get cables, like [Buskill](https://buskill.in), that will lock or wipe your computer when the cable is disconnected.
|
||||
|
||||
### Anti-Interdiction/Evil Maid Attack
|
||||
|
||||
The best way to prevent a targeted attack against you before a device is in your possession is to purchase a device in a physical store, rather than ordering it to your address.
|
||||
|
||||
Make sure your device supports secure boot/verified boot, and you have it enabled. Try to avoid leaving your device unattended whenever possible.
|
||||
|
||||
## Secure your Network
|
||||
|
||||
### Compartmentalization
|
||||
|
||||
Many solutions exist that allow you to separate what you're doing on a computer, such as virtual machines and sandboxing. However, the best compartmentalization is physical separation. This is useful especially for situations where certain software requires you to bypass security features in your OS, such as with anti-cheat software bundled with many games.
|
||||
|
||||
For gaming, it may be useful to designate one machine as your "gaming" machine and only use it for that one task. Keep it on a separate VLAN. This may require the use of a managed switch and a router that supports segregated networks.
|
||||
|
||||
Most consumer routers allow you to do this by enabling a separate "guest" network that can't talk to your main network. All untrusted devices can go here, including IoT devices like your smart fridge, thermostat, TV, etc.
|
||||
|
||||
### Minimalism
|
||||
|
||||
As the saying goes, "less is more". The fewer devices you have connected to your network, the less potential attack surface you'll have and the less work it will be to make sure they all stay up-to-date.
|
||||
|
||||
You may find it useful to go around your home and make a list of every connected device you have to help you keep track.
|
||||
|
||||
### Routers
|
||||
|
||||
Your router handles all your network traffic and acts as your first line of defense between you and the open internet.
|
||||
|
||||
<div class="admonition Note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
A lot of routers come with storage to put your files on so you can access them from any computer on your network. We recommend you don't use networking devices for things other than networking. In the event your router was compromised, your files would also be compromised.
|
||||
|
||||
</div>
|
||||
|
||||
The most important thing to think about with routers is keeping them up-to-date. Many modern routers will automatically install updates, but many others won't. You should check on your router's settings page for this option. That page can usually be accessed by typing `192.168.1.1` or `192.168.0.1` into the URL bar of any browser assuming you're on the same network. You can also check in the network settings of your OS for "router" or "gateway".
|
||||
|
||||
If your router does not support automatic updates, you will need to go to the manufacturer's site to download the updates and apply them manually.
|
||||
|
||||
Many consumer-grade routers aren't supported for very long. If your router isn't supported by the manufacturer anymore, you can check if it's supported by [FOSS firmware](../router.md). You can also buy routers that come with FOSS firmware installed by default; these tend to be supported longer than most routers.
|
||||
|
||||
Some ISPs provide a combined router/modem. It can be beneficial for security to purchase a separate router and set your ISP router/modem into modem-only mode. This way, even when your ISP-provided router is no longer getting updates, you can still get security updates and patches. It also means any problems that affect your modem won't affect your router and vice versa.
|
@ -29,13 +29,13 @@ TOTP is one of the most common forms of MFA available. When you set up TOTP, you
|
||||
|
||||
The time-limited code is then derived from the shared secret and the current time. As the code is only valid for a short time, without access to the shared secret, an adversary cannot generate new codes.
|
||||
|
||||
If you have a hardware security key with TOTP support (such as a YubiKey with [Yubico Authenticator](https://www.yubico.com/products/yubico-authenticator/)), we recommend that you store your "shared secrets" on the hardware. Hardware such as the YubiKey was developed with the intention of making the "shared secret" difficult to extract and copy. A YubiKey is also not connected to the Internet, unlike a phone with a TOTP app.
|
||||
If you have a hardware security key with TOTP support (such as a YubiKey with [Yubico Authenticator](https://yubico.com/products/yubico-authenticator)), we recommend that you store your "shared secrets" on the hardware. Hardware such as the YubiKey was developed with the intention of making the "shared secret" difficult to extract and copy. A YubiKey is also not connected to the Internet, unlike a phone with a TOTP app.
|
||||
|
||||
Unlike [WebAuthn](#fido-fast-identity-online), TOTP offers no protection against [phishing](https://en.wikipedia.org/wiki/Phishing) or reuse attacks. If an adversary obtains a valid code from you, they may use it as many times as they like until it expires (generally 60 seconds).
|
||||
|
||||
An adversary could set up a website to imitate an official service in an attempt to trick you into giving out your username, password and current TOTP code. If the adversary then uses those recorded credentials they may be able to log into the real service and hijack the account.
|
||||
|
||||
Although not perfect, TOTP is secure enough for most people, and when [hardware security keys](../multi-factor-authentication.md#hardware-security-keys) are not supported [authenticator apps](../multi-factor-authentication.md#authenticator-apps) are still a good option.
|
||||
Although not perfect, TOTP is secure enough for most people, and when [hardware security keys](../security-keys.md) are not supported [authenticator apps](../multi-factor-authentication.md) are still a good option.
|
||||
|
||||
### Hardware security keys
|
||||
|
||||
@ -75,11 +75,9 @@ WebAuthn is the most secure and private form of second factor authentication. Wh
|
||||
|
||||
When you create an account, the public key is sent to the service, then when you log in, the service will require you to "sign" some data with your private key. The benefit of this is that no password data is ever stored by the service, so there is nothing for an adversary to steal.
|
||||
|
||||
This presentation discusses the history of password authentication, the pitfalls (such as password reuse), and discussion of FIDO2 and [WebAuthn](https://webauthn.guide) standards.
|
||||
This presentation discusses the history of password authentication, the pitfalls (such as password reuse), and the standards for FIDO2 and [WebAuthn](https://webauthn.guide):
|
||||
|
||||
<div class="yt-embed">
|
||||
<iframe width="560" height="315" src="https://invidious.privacyguides.net/embed/aMo4ZlWznao?local=true" title="How FIDO2 and WebAuthn Stop Account Takeovers" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</div>
|
||||
- [How FIDO2 and WebAuthn Stop Account Takeovers](https://youtu.be/aMo4ZlWznao) <small>(YouTube)</small>
|
||||
|
||||
FIDO2 and WebAuthn have superior security and privacy properties when compared to any MFA methods.
|
||||
|
||||
@ -101,7 +99,7 @@ When configuring your MFA method, keep in mind that it is only as secure as your
|
||||
|
||||
You should always have backups for your MFA method. Hardware security keys can get lost, stolen or simply stop working over time. It is recommended that you have a pair of hardware security keys with the same access to your accounts instead of just one.
|
||||
|
||||
When using TOTP with an authenticator app, be sure to back up your recovery keys or the app itself, or copy the "shared secrets" to another instance of the app on a different phone or to an encrypted container (e.g. [VeraCrypt](../encryption.md#veracrypt)).
|
||||
When using TOTP with an authenticator app, be sure to back up your recovery keys or the app itself, or copy the "shared secrets" to another instance of the app on a different phone or to an encrypted container (e.g. [VeraCrypt](../encryption.md#veracrypt-disk)).
|
||||
|
||||
### Initial Set Up
|
||||
|
||||
@ -119,15 +117,11 @@ If you use SMS MFA, use a carrier who will not switch your phone number to a new
|
||||
|
||||
Beyond just securing your website logins, multi-factor authentication can be used to secure your local logins, SSH keys or even password databases as well.
|
||||
|
||||
### Windows
|
||||
|
||||
Yubico has a dedicated [Credential Provider](https://docs.microsoft.com/en-us/windows/win32/secauthn/credential-providers-in-windows) that adds Challenge-Response authentication for the username + password login flow for local Windows accounts. If you have a YubiKey with Challenge-Response authentication support, take a look at the [Yubico Login for Windows Configuration Guide](https://support.yubico.com/hc/en-us/articles/360013708460-Yubico-Login-for-Windows-Configuration-Guide), which will allow you to set up MFA on your Windows computer.
|
||||
|
||||
### macOS
|
||||
|
||||
macOS has [native support](https://support.apple.com/guide/deployment/intro-to-smart-card-integration-depd0b888248/web) for authentication with smart cards (PIV). If you have a smartcard or a hardware security key that supports the PIV interface such as the YubiKey, we recommend that you follow your smartcard/hardware security vendor's documentation and set up second factor authentication for your macOS computer.
|
||||
|
||||
Yubico have a guide [Using Your YubiKey as a Smart Card in macOS](https://support.yubico.com/hc/en-us/articles/360016649059) which can help you set up your YubiKey on macOS.
|
||||
Yubico have a guide [Using Your YubiKey as a Smart Card in macOS](https://support.yubico.com/hc/articles/360016649059) which can help you set up your YubiKey on macOS.
|
||||
|
||||
After your smartcard/security key is set up, we recommend running this command in the Terminal:
|
||||
|
||||
@ -139,26 +133,29 @@ The command will prevent an adversary from bypassing MFA when the computer boots
|
||||
|
||||
### Linux
|
||||
|
||||
!!! warning
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
If the hostname of your system changes (such as due to DHCP), you would be unable to login. It is vital that you set up a proper hostname for your computer before following this guide.
|
||||
If the hostname of your system changes (such as due to DHCP), you would be unable to login. It is vital that you set up a proper hostname for your computer before following this guide.
|
||||
|
||||
The `pam_u2f` module on Linux can provide two-factor authentication for logging in on most popular Linux distributions. If you have a hardware security key that supports U2F, you can set up MFA authentication for your login. Yubico has a guide [Ubuntu Linux Login Guide - U2F](https://support.yubico.com/hc/en-us/articles/360016649099-Ubuntu-Linux-Login-Guide-U2F) which should work on any distribution. The package manager commands—such as `apt-get`—and package names may however differ. This guide does **not** apply to Qubes OS.
|
||||
</div>
|
||||
|
||||
The `pam_u2f` module on Linux can provide two-factor authentication for logging in on most popular Linux distributions. If you have a hardware security key that supports U2F, you can set up MFA authentication for your login. Yubico has a guide [Ubuntu Linux Login Guide - U2F](https://support.yubico.com/hc/articles/360016649099-Ubuntu-Linux-Login-Guide-U2F) which should work on any distribution. The package manager commands—such as `apt-get`—and package names may however differ. This guide does **not** apply to Qubes OS.
|
||||
|
||||
### Qubes OS
|
||||
|
||||
Qubes OS has support for Challenge-Response authentication with YubiKeys. If you have a YubiKey with Challenge-Response authentication support, take a look at the Qubes OS [YubiKey documentation](https://www.qubes-os.org/doc/yubikey/) if you want to set up MFA on Qubes OS.
|
||||
Qubes OS has support for Challenge-Response authentication with YubiKeys. If you have a YubiKey with Challenge-Response authentication support, take a look at the Qubes OS [YubiKey documentation](https://qubes-os.org/doc/yubikey) if you want to set up MFA on Qubes OS.
|
||||
|
||||
### SSH
|
||||
|
||||
#### Hardware Security Keys
|
||||
|
||||
SSH MFA could be set up using multiple different authentication methods that are popular with hardware security keys. We recommend that you check out Yubico's [documentation](https://developers.yubico.com/SSH/) on how to set this up.
|
||||
SSH MFA could be set up using multiple different authentication methods that are popular with hardware security keys. We recommend that you check out Yubico's [documentation](https://developers.yubico.com/SSH) on how to set this up.
|
||||
|
||||
#### Time-based One-time Password (TOTP)
|
||||
#### TOTP
|
||||
|
||||
SSH MFA can also be set up using TOTP. DigitalOcean has provided a tutorial [How To Set Up Multi-Factor Authentication for SSH on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-20-04). Most things should be the same regardless of distribution, however the package manager commands—such as `apt-get`—and package names may differ.
|
||||
SSH MFA can also be set up using TOTP. DigitalOcean has provided a tutorial [How To Set Up Multi-Factor Authentication for SSH on Ubuntu 20.04](https://digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-20-04). Most things should be the same regardless of distribution, however the package manager commands—such as `apt-get`—and package names may differ.
|
||||
|
||||
### KeePass (and KeePassXC)
|
||||
|
||||
KeePass and KeePassXC databases can be secured using Challenge-Response or HOTP as a second-factor authentication. Yubico has provided a document for KeePass [Using Your YubiKey with KeePass](https://support.yubico.com/hc/en-us/articles/360013779759-Using-Your-YubiKey-with-KeePass) and there is also one on the [KeePassXC](https://keepassxc.org/docs/#faq-yubikey-2fa) website.
|
||||
KeePass and KeePassXC databases can be secured using Challenge-Response or HOTP as a second-factor authentication. Yubico has provided a document for KeePass [Using Your YubiKey with KeePass](https://support.yubico.com/hc/articles/360013779759-Using-Your-YubiKey-with-KeePass) and there is also one on the [KeePassXC](https://keepassxc.org/docs/#faq-yubikey-2fa) website.
|
||||
|
@ -26,9 +26,12 @@ You should avoid changing passwords that you have to remember (such as your pass
|
||||
|
||||
When it comes to passwords that you don't have to remember (such as passwords stored inside your password manager), if your [threat model](threat-modeling.md) calls for it, we recommend going through important accounts (especially accounts that don't use multi-factor authentication) and changing their password every couple of months, in case they have been compromised in a data breach that hasn't become public yet. Most password managers allow you to set an expiry date for your password to make this easier to manage.
|
||||
|
||||
!!! tip "Checking for data breaches"
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Checking for data breaches</p>
|
||||
|
||||
If your password manager lets you check for compromised passwords, make sure to do so and promptly change any password that may have been exposed in a data breach. Alternatively, you could follow [Have I Been Pwned's Latest Breaches feed](https://feeds.feedburner.com/HaveIBeenPwnedLatestBreaches) with the help of a [news aggregator](../news-aggregators.md).
|
||||
If your password manager lets you check for compromised passwords, make sure to do so and promptly change any password that may have been exposed in a data breach. Alternatively, you could follow [Have I Been Pwned's Latest Breaches feed](https://feeds.feedburner.com/HaveIBeenPwnedLatestBreaches) with the help of a [news aggregator](../news-aggregators.md).
|
||||
|
||||
</div>
|
||||
|
||||
## Creating strong passwords
|
||||
|
||||
@ -48,43 +51,103 @@ An example of a diceware passphrase is `viewable fastness reluctant squishy seve
|
||||
|
||||
To generate a diceware passphrase using real dice, follow these steps:
|
||||
|
||||
!!! note
|
||||
<div class="admonition Note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
These instructions assume that you are using [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) to generate the passphrase, which requires five dice rolls per word. Other wordlists may require more or less rolls per word, and may require a different amount of words to achieve the same entropy.
|
||||
These instructions assume that you are using [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) to generate the passphrase, which requires five dice rolls per word. Other wordlists may require more or less rolls per word, and may require a different amount of words to achieve the same entropy.
|
||||
|
||||
</div>
|
||||
|
||||
1. Roll a six-sided die five times, noting down the number after each roll.
|
||||
|
||||
2. As an example, let's say you rolled `2-5-2-6-6`. Look through the [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) for the word that corresponds to `25266`.
|
||||
2. As an example, let's say you rolled `2-5-2-6-6`. Look through the [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) for the word that corresponds to `25266`.
|
||||
|
||||
3. You will find the word `encrypt`. Write that word down.
|
||||
|
||||
4. Repeat this process until your passphrase has as many words as you need, which you should separate with a space.
|
||||
|
||||
!!! warning "Important"
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Important</p>
|
||||
|
||||
You should **not** re-roll words until you get a combination of words that appeal to you. The process should be completely random.
|
||||
You should **not** re-roll words until you get a combination of words that appeal to you. The process should be completely random.
|
||||
|
||||
</div>
|
||||
|
||||
If you don't have access to or would prefer to not use real dice, you can use your password manager's built-in password generator, as most of them have the option to generate diceware passphrases in addition to regular passwords.
|
||||
|
||||
We recommend using [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) to generate your diceware passphrases, as it offers the exact same security as the original list, while containing words that are easier to memorize. There are also [other wordlists in different languages](https://theworld.com/~reinhold/diceware.html#Diceware%20in%20Other%20Languages|outline), if you do not want your passphrase to be in English.
|
||||
We recommend using [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) to generate your diceware passphrases, as it offers the exact same security as the original list, while containing words that are easier to memorize. There are also [other wordlists in different languages](https://theworld.com/~reinhold/diceware.html#Diceware%20in%20Other%20Languages|outline), if you do not want your passphrase to be in English.
|
||||
|
||||
??? note "Explanation of entropy and strength of diceware passphrases"
|
||||
<details class="note" markdown>
|
||||
<summary>Explanation of entropy and strength of diceware passphrases</summary>
|
||||
|
||||
To demonstrate how strong diceware passphrases are, we'll use the aforementioned seven word passphrase (`viewable fastness reluctant squishy seventeen shown pencil`) and [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) as an example.
|
||||
To demonstrate how strong diceware passphrases are, we'll use the aforementioned seven word passphrase (`viewable fastness reluctant squishy seventeen shown pencil`) and [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) as an example.
|
||||
|
||||
One metric to determine the strength of a diceware passphrase is how much entropy it has. The entropy per word in a diceware passphrase is calculated as $\text{log}_2(\text{WordsInList})$ and the overall entropy of the passphrase is calculated as $\text{log}_2(\text{WordsInList}^\text{WordsInPhrase})$.
|
||||
One metric to determine the strength of a diceware passphrase is how much entropy it has. The entropy per word in a diceware passphrase is calculated as <math>
|
||||
<mrow>
|
||||
<msub>
|
||||
<mtext>log</mtext>
|
||||
<mn>2</mn>
|
||||
</msub>
|
||||
<mo form="prefix" stretchy="false">(</mo>
|
||||
<mtext>WordsInList</mtext>
|
||||
<mo form="postfix" stretchy="false">)</mo>
|
||||
</mrow>
|
||||
</math> and the overall entropy of the passphrase is calculated as: <math>
|
||||
<mrow>
|
||||
<msub>
|
||||
<mtext>log</mtext>
|
||||
<mn>2</mn>
|
||||
</msub>
|
||||
<mo form="prefix" stretchy="false">(</mo>
|
||||
<msup>
|
||||
<mtext>WordsInList</mtext>
|
||||
<mtext>WordsInPhrase</mtext>
|
||||
</msup>
|
||||
<mo form="postfix" stretchy="false">)</mo>
|
||||
</mrow>
|
||||
</math>
|
||||
|
||||
Therefore, each word in the aforementioned list results in ~12.9 bits of entropy ($\text{log}_2(7776)$), and a seven word passphrase derived from it has ~90.47 bits of entropy ($\text{log}_2(7776^7)$).
|
||||
Therefore, each word in the aforementioned list results in ~12.9 bits of entropy (<math>
|
||||
<mrow>
|
||||
<msub>
|
||||
<mtext>log</mtext>
|
||||
<mn>2</mn>
|
||||
</msub>
|
||||
<mo form="prefix" stretchy="false">(</mo>
|
||||
<mn>7776</mn>
|
||||
<mo form="postfix" stretchy="false">)</mo>
|
||||
</mrow>
|
||||
</math>), and a seven word passphrase derived from it has ~90.47 bits of entropy (<math>
|
||||
<mrow>
|
||||
<msub>
|
||||
<mtext>log</mtext>
|
||||
<mn>2</mn>
|
||||
</msub>
|
||||
<mo form="prefix" stretchy="false">(</mo>
|
||||
<msup>
|
||||
<mn>7776</mn>
|
||||
<mn>7</mn>
|
||||
</msup>
|
||||
<mo form="postfix" stretchy="false">)</mo>
|
||||
</mrow>
|
||||
</math>).
|
||||
|
||||
The [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) contains 7776 unique words. To calculate the amount of possible passphrases, all we have to do is $\text{WordsInList}^\text{WordsInPhrase}$, or in our case, $7776^7$.
|
||||
The [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) contains 7776 unique words. To calculate the amount of possible passphrases, all we have to do is <math>
|
||||
<msup>
|
||||
<mtext>WordsInList</mtext>
|
||||
<mtext>WordsInPhrase</mtext>
|
||||
</msup>
|
||||
</math>, or in our case, <math><msup><mn>7776</mn><mn>7</mn></msup></math>.
|
||||
|
||||
Let's put all of this in perspective: A seven word passphrase using [EFF's large wordlist](https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt) is one of ~1,719,070,799,748,422,500,000,000,000 possible passphrases.
|
||||
Let's put all of this in perspective: A seven word passphrase using [EFF's large wordlist](https://eff.org/files/2016/07/18/eff_large_wordlist.txt) is one of ~1,719,070,799,748,422,500,000,000,000 possible passphrases.
|
||||
|
||||
On average, it takes trying 50% of all the possible combinations to guess your phrase. With that in mind, even if your adversary is capable of ~1,000,000,000,000 guesses per second, it would still take them ~27,255,689 years to guess your passphrase. That is the case even if the following things are true:
|
||||
On average, it takes trying 50% of all the possible combinations to guess your phrase. With that in mind, even if your adversary is capable of ~1,000,000,000,000 guesses per second, it would still take them ~27,255,689 years to guess your passphrase. That is the case even if the following things are true:
|
||||
|
||||
- Your adversary knows that you used the diceware method.
|
||||
- Your adversary knows the specific wordlist that you used.
|
||||
- Your adversary knows how many words your passphrase contains.
|
||||
- Your adversary knows that you used the diceware method.
|
||||
- Your adversary knows the specific wordlist that you used.
|
||||
- Your adversary knows how many words your passphrase contains.
|
||||
|
||||
</details>
|
||||
|
||||
To sum it up, diceware passphrases are your best option when you need something that is both easy to remember *and* exceptionally strong.
|
||||
|
||||
@ -98,13 +161,16 @@ There are many good options to choose from, both cloud-based and local. Choose o
|
||||
|
||||
[List of recommended password managers](../passwords.md){ .md-button }
|
||||
|
||||
!!! warning "Don't place your passwords and TOTP tokens inside the same password manager"
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Don't place your passwords and TOTP tokens inside the same password manager</p>
|
||||
|
||||
When using TOTP codes as [multi-factor authentication](../multi-factor-authentication.md), the best security practice is to keep your TOTP codes in a [separate app](../multi-factor-authentication.md#authenticator-apps).
|
||||
When using [TOTP codes as multi-factor authentication](multi-factor-authentication.md#time-based-one-time-password-totp), the best security practice is to keep your TOTP codes in a [separate app](../multi-factor-authentication.md).
|
||||
|
||||
Storing your TOTP tokens in the same place as your passwords, while convenient, reduces the accounts to a single factor in the event that an adversary gains access to your password manager.
|
||||
Storing your TOTP tokens in the same place as your passwords, while convenient, reduces the accounts to a single factor in the event that an adversary gains access to your password manager.
|
||||
|
||||
Furthermore, we do not recommend storing single-use recovery codes in your password manager. Those should be stored separately such as in an encrypted container on an offline storage device.
|
||||
Furthermore, we do not recommend storing single-use recovery codes in your password manager. Those should be stored separately such as in an encrypted container on an offline storage device.
|
||||
|
||||
</div>
|
||||
|
||||
### Backups
|
||||
|
||||
|
@ -37,7 +37,7 @@ To answer this question, it's important to identify who might want to target you
|
||||
|
||||
*Make a list of your adversaries or those who might want to get ahold of your assets. Your list may include individuals, a government agency, or corporations.*
|
||||
|
||||
Depending on who your adversaries are, under some circumstances, this list might be something you want to destroy after you're done security planning.
|
||||
Depending on who your adversaries are, this list might be something you want to destroy after you've finished developing your threat model.
|
||||
|
||||
### How likely is it that I will need to protect it?
|
||||
|
||||
@ -97,7 +97,7 @@ Making a security plan will help you to understand the threats that are unique t
|
||||
|
||||
## Further Reading
|
||||
|
||||
For people looking to increase their privacy and security online, we've compiled a list of common threats our visitors face or goals our visitors have, to give you some inspiration and demonstrate the basis of our recommendations.
|
||||
For people looking to increase their privacy and security online, we've compiled a list of common threats our visitors face or goals our visitors have, to give you some inspiration and demonstrate the basis of our recommendations.
|
||||
|
||||
- [Common Goals and Threats :material-arrow-right-drop-circle:](common-threats.md)
|
||||
|
||||
|
@ -5,74 +5,114 @@ icon: material/vpn
|
||||
description: Virtual Private Networks shift risk away from your ISP to a third-party you trust. You should keep these things in mind.
|
||||
---
|
||||
|
||||
Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world. An ISP can see the flow of internet traffic entering and exiting your network termination device (i.e. modem).
|
||||
Virtual Private Networks are a way of extending the end of your network to exit somewhere else in the world.
|
||||
|
||||
Encryption protocols such as HTTPS are commonly used on the internet, so they may not be able to see exactly what you're posting or reading, but they can get an idea of the [domains you request](../advanced/dns-overview.md#why-shouldnt-i-use-encrypted-dns).
|
||||
Normally, an ISP can see the flow of internet traffic entering and exiting your network termination device (i.e. modem). Encryption protocols such as HTTPS are commonly used on the internet, so they may not be able to see exactly what you're posting or reading, but they can get an idea of the [domains you request](../advanced/dns-overview.md#why-shouldnt-i-use-encrypted-dns).
|
||||
|
||||
A VPN can help as it can shift trust to a server somewhere else in the world. As a result, the ISP then only sees that you are connected to a VPN and nothing about the activity that you're passing into it.
|
||||
Using a VPN hides even this information from your ISP, by shifting the trust you place in your network to a server somewhere else in the world. As a result, the ISP then only sees that you are connected to a VPN and nothing about the activity that you're passing through it.
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
When we refer to "Virtual Private Networks" on this website, we are usually referring to **commercial** [VPN providers](../vpn.md), who you pay a monthly fee to in exchange for routing your internet traffic securely through their public servers. There are many other forms of VPN, such as ones you host yourself or ones operated by workplaces which allow you to securely connect to internal/employee network resources, however, these VPNs are usually designed for accessing remote networks securely, rather than protecting the privacy of your internet connection.
|
||||
|
||||
</div>
|
||||
|
||||
## How does a VPN work?
|
||||
|
||||
VPNs encrypt your traffic between your device and a server owned by your VPN provider. From the perspective of anyone between you and the VPN server, it looks like you're connecting to the VPN server. From the perspective of anyone between the VPN server and your destination site, all they can see is the VPN server connecting to the website.
|
||||
|
||||
``` mermaid
|
||||
flowchart LR
|
||||
763931["Your Device<div>(with VPN Client)</div>"] ===|"VPN Encryption"| 404512{"VPN Server"}
|
||||
404512 -.-|"No VPN Encryption"| 593753((("The Internet\n(Your Destination)")))
|
||||
subgraph 763931["Your Device<div>(with VPN Client)</div>"]
|
||||
end
|
||||
```
|
||||
|
||||
Note that a VPN does not add any security or encryption to your traffic between the VPN server and your destination on the internet. To access a website securely you **must** still ensure HTTPS is in use regardless of whether you use a VPN.
|
||||
|
||||
## Should I use a VPN?
|
||||
|
||||
**Yes**, unless you are already using Tor. A VPN does two things: shifting the risks from your Internet Service Provider to itself and hiding your IP from a third-party service.
|
||||
|
||||
VPNs cannot encrypt data outside of the connection between your device and the VPN server. VPN providers can see and modify your traffic the same way your ISP could. And there is no way to verify a VPN provider's "no logging" policies in any way.
|
||||
|
||||
However, they do hide your actual IP from a third-party service, provided that there are no IP leaks. They help you blend in with others and mitigate IP based tracking.
|
||||
|
||||
## When shouldn't I use a VPN?
|
||||
|
||||
Using a VPN in cases where you're using your [known identity](common-misconceptions.md#complicated-is-better) is unlikely be useful.
|
||||
|
||||
Doing so may trigger spam and fraud detection systems, such as if you were to log into your bank's website.
|
||||
|
||||
## What about encryption?
|
||||
|
||||
Encryption offered by VPN providers are between your devices and their servers. It guarantees that this specific link is secure. This is a step up from using unencrypted proxies where an adversary on the network can intercept the communications between your devices and said proxies and modify them. However, encryption between your apps or browsers with the service providers are not handled by this encryption.
|
||||
|
||||
In order to keep what you actually do on the websites you visit private and secure, you must use HTTPS. This will keep your passwords, session tokens, and queries safe from the VPN provider. Consider enabling "HTTPS everywhere" in your browser to mitigate downgrade attacks like [SSL Strip](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
|
||||
|
||||
## Should I use encrypted DNS with a VPN?
|
||||
|
||||
Unless your VPN provider hosts the encrypted DNS servers, **no**. Using DOH/DOT (or any other form of encrypted DNS) with third-party servers will simply add more entities to trust and does **absolutely nothing** to improve your privacy/security. Your VPN provider can still see which websites you visit based on the IP addresses and other methods. Instead of just trusting your VPN provider, you are now trusting both the VPN provider and the DNS provider.
|
||||
|
||||
A common reason to recommend encrypted DNS is that it helps against DNS spoofing. However, your browser should already be checking for [TLS certificates](https://en.wikipedia.org/wiki/Transport_Layer_Security#Digital_certificates) with **HTTPS** and warn you about it. If you are not using **HTTPS**, then an adversary can still just modify anything other than your DNS queries and the end result will be little different.
|
||||
|
||||
Needless to say, **you shouldn't use encrypted DNS with Tor**. This would direct all of your DNS requests through a single circuit and would allow the encrypted DNS provider to deanonymize you.
|
||||
|
||||
## Should I use Tor *and* a VPN?
|
||||
|
||||
By using a VPN with Tor, you're creating essentially a permanent entry node, often with a money trail attached. This provides zero additional benefits to you, while increasing the attack surface of your connection dramatically. If you wish to hide your Tor usage from your ISP or your government, Tor has a built-in solution for that: Tor bridges. [Read more about Tor bridges and why using a VPN is not necessary](../advanced/tor-overview.md).
|
||||
|
||||
## What if I need anonymity?
|
||||
|
||||
VPNs cannot provide anonymity. Your VPN provider will still see your real IP address, and often has a money trail that can be linked directly back to you. You cannot rely on "no logging" policies to protect your data. Use [Tor](https://www.torproject.org/) instead.
|
||||
|
||||
## What about VPN providers that provide Tor nodes?
|
||||
|
||||
Do not use that feature. The point of using Tor is that you do not trust your VPN provider. Currently Tor only supports the [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) protocol. [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol) (used in [WebRTC](https://en.wikipedia.org/wiki/WebRTC) for voice and video sharing, the new [HTTP3/QUIC](https://en.wikipedia.org/wiki/HTTP/3) protocol, etc.), [ICMP](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol) and other packets will be dropped. To compensate for this, VPN providers typically will route all non-TCP packets through their VPN server (your first hop). This is the case with [ProtonVPN](https://protonvpn.com/support/tor-vpn/). Additionally, when using this Tor over VPN setup, you do not have control over other important Tor features such as [Isolated Destination Address](https://www.whonix.org/wiki/Stream_Isolation) (using a different Tor circuit for every domain you visit).
|
||||
|
||||
The feature should be viewed as a convenient way to access the Tor Network, not to stay anonymous. For proper anonymity, use the Tor Browser, TorSocks, or a Tor gateway.
|
||||
|
||||
## When are VPNs useful?
|
||||
|
||||
A VPN may still be useful to you in a variety of scenarios, such as:
|
||||
**Yes**, almost certainly. A VPN has many advantages, including:
|
||||
|
||||
1. Hiding your traffic from **only** your Internet Service Provider.
|
||||
1. Hiding your downloads (such as torrents) from your ISP and anti-piracy organizations.
|
||||
1. Hiding your IP from third-party websites and services, preventing IP based tracking.
|
||||
1. Hiding your IP from third-party websites and services, helping you blend in and preventing IP based tracking.
|
||||
1. Allowing you to bypass geo-restrictions on certain content.
|
||||
|
||||
For situations like these, or if you have another compelling reason, the VPN providers we listed above are who we think are the most trustworthy. However, using a VPN provider still means you're *trusting* the provider. In pretty much any other scenario you should be using a secure**-by-design** tool such as Tor.
|
||||
VPNs can provide *some* of the same benefits Tor provides, such as hiding your IP from the websites you visit and geographically shifting your network traffic, and good VPN providers will not cooperate with e.g. legal authorities from oppressive regimes, especially if you choose a VPN provider outside your own jurisdiction.
|
||||
|
||||
## Sources and Further Reading
|
||||
VPNs cannot encrypt data outside the connection between your device and the VPN server. VPN providers can also see and modify your traffic the same way your ISP could, so there is still a level of trust you are placing in them. And there is no way to verify a VPN provider's "no logging" policies in any way.
|
||||
|
||||
1. [VPN - a Very Precarious Narrative](https://schub.io/blog/2019/04/08/very-precarious-narrative.html) by Dennis Schubert
|
||||
1. [Tor Network Overview](../advanced/tor-overview.md)
|
||||
1. [IVPN Privacy Guides](https://www.ivpn.net/privacy-guides)
|
||||
1. ["Do I need a VPN?"](https://www.doineedavpn.com), a tool developed by IVPN to challenge aggressive VPN marketing by helping individuals decide if a VPN is right for them.
|
||||
## When isn't a VPN suitable?
|
||||
|
||||
Using a VPN in cases where you're using your [real-life or well-known identity](common-misconceptions.md#complicated-is-better) online is unlikely to be useful. Doing so may trigger spam and fraud detection systems, such as if you were to log into your bank's website.
|
||||
|
||||
It's important to remember that a VPN will not provide you with absolute anonymity, because the VPN provider itself will still see your real IP address, destination website information, and often has a money trail that can be linked directly back to you. You can't rely on "no logging" policies to protect your data from anyone who is able to protect. If you need complete safety from the network itself, consider using [Tor](../advanced/tor-overview.md) in addition to or instead of a VPN.
|
||||
|
||||
You also should not trust a VPN to secure your connection to an unencrypted, HTTP destination. In order to keep what you actually do on the websites you visit private and secure, you must use HTTPS. This will keep your passwords, session tokens, and queries safe from the VPN provider and other potential adversaries in between the VPN server and your destination. You should enable HTTPS-only mode in your browser (if it's supported) to mitigate attacks which try to downgrade your connection from HTTPS to HTTP.
|
||||
|
||||
## Should I use encrypted DNS with a VPN?
|
||||
|
||||
Unless your VPN provider hosts the encrypted DNS servers themselves, **probably not**. Using DOH/DOT (or any other form of encrypted DNS) with third-party servers will simply add more entities to trust. Your VPN provider can still see which websites you visit based on the IP addresses and other methods. All this being said, there may be some advantages to enabling encrypted DNS in order to enable other security features in your browser, such as ECH. Browser technologies which are reliant on in-browser encrypted DNS are relatively new and not yet widespread, so whether they are relevant to you in particular is an exercise we will leave to you to research independently.
|
||||
|
||||
Another common reason encrypted DNS is recommended is that it prevents DNS spoofing. However, your browser should already be checking for [TLS certificates](https://en.wikipedia.org/wiki/Transport_Layer_Security#Digital_certificates) with **HTTPS** and warn you about it. If you are not using **HTTPS**, then an adversary can still just modify anything other than your DNS queries and the end result will be little different.
|
||||
|
||||
## Should I use Tor *and* a VPN?
|
||||
|
||||
Maybe, Tor is not necessarily suitable for everybody in the first place. Consider your [threat model](threat-modeling.md), because if your adversary is not capable of extracting information from your VPN provider, using a VPN alone may provide enough protection.
|
||||
|
||||
If you do use Tor then you are *probably* best off connecting to the Tor network via a commercial VPN provider. However, this is a complex subject which we've written more about on our [Tor overview](../advanced/tor-overview.md) page.
|
||||
|
||||
## Should I access Tor through VPN providers that provide "Tor nodes"?
|
||||
|
||||
You should not use that feature: The primary advantage of using Tor is that you do not trust your VPN provider, which is negated when you use Tor nodes hosted by your VPN instead of connecting directly to Tor from your computer.
|
||||
|
||||
Currently, Tor only supports the TCP protocol. UDP (used by [WebRTC](https://en.wikipedia.org/wiki/WebRTC), [HTTP3/QUIC](https://en.wikipedia.org/wiki/HTTP/3), and other protocols), [ICMP](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol), and other packets will be dropped. To compensate for this, VPN providers typically will route all non-TCP packets through their VPN server (your first hop). This is the case with [ProtonVPN](https://protonvpn.com/support/tor-vpn). Additionally, when using this Tor over VPN setup, you do not have control over other important Tor features such as [Isolated Destination Address](https://whonix.org/wiki/Stream_Isolation) (using a different Tor circuit for every domain you visit).
|
||||
|
||||
The feature should be viewed as a *convenient* way to access hidden services on Tor, not to stay anonymous. For proper anonymity, use the actual [Tor Browser](../tor.md).
|
||||
|
||||
## Commercial VPN Ownership
|
||||
|
||||
Most VPN services are owned by the same [few companies](https://vpnpro.com/blog/hidden-vpn-owners-unveiled-97-vpns-23-companies). These shady companies run lots of smaller VPN services to create the illusion that you have more choice than you actually do and to maximize profit. Typically, these providers that feed into their shell company have terrible privacy policies and shouldn't be trusted with your internet traffic. You should be very strict about which provider you decide to use.
|
||||
|
||||
You should also be wary that many VPN review sites are merely advertising vehicles open to the highest bidder. ==Privacy Guides does not make money from recommending external products, and never uses affiliate programs.==
|
||||
|
||||
[Our VPN Recommendations](../vpn.md){ .md-button }
|
||||
|
||||
## Modern VPN Alternatives
|
||||
|
||||
Recently, some attempts have been made by various organizations to address some issues which centralized VPNs have. These technologies are relatively new, but worth keeping an eye on as the field develops.
|
||||
|
||||
### Multi-Party Relays
|
||||
|
||||
Multi-Party Relays (MPRs) use multiple nodes owned by different parties, such that no individual party knows both who you are and what you're connecting to. This is the basic idea behind Tor, but now there are some paid services that try to emulate this model.
|
||||
|
||||
MPRs seek to solve a problem inherent to VPNs: the fact that you must trust them completely. They accomplish this goal by segmenting the responsibilities between two or more different companies. For example, Apple's iCloud+ Private Relay routes your traffic through two servers:
|
||||
|
||||
1. Firstly, a server operated by Apple.
|
||||
|
||||
This server is able to see your device's IP when you connect to it, and has knowledge of your payment information and Apple ID tied to your iCloud subscription. However, it is unable to see what website you are connecting to.
|
||||
|
||||
2. Secondly, a server operated by a partner CDN, such as Cloudflare or Fastly.
|
||||
|
||||
This server actually makes the connection to your destination website, but has no knowledge of your device. The only IP address it knows about is Apple's server's.
|
||||
|
||||
Other MPRs run by different companies like Google or INVISV operate in a very similar manner. This protection by segmentation only exists if you trust the two companies to not collude with each other to deanonymize you.
|
||||
|
||||
### Decentralized VPNs
|
||||
|
||||
Another attempt at solving the issues with centralized VPN services are dVPNs. These are based on blockchain technology and claim to eliminate trust in a single party by distributing the nodes across lots of different people. However, many times a dVPN will default to a single node, meaning you need to trust that node completely, just like a traditional VPN. Unlike a traditional VPN, this one node that can see all your traffic is a random person instead of your VPN provider that can be audited and has legal responsibilities to uphold their privacy policy. Multi-hop is needed to solve this, but that comes with a stability and performance cost.
|
||||
|
||||
Another consideration is legal liability. The exit node will need to deal with legal problems from misuse of the network, an issue that the Tor network has contended with for its entire existence. This discourages regular people from running nodes and makes it more attractive for a malicious actor with lots of resources to host one. This is a big problem if the service is single-node, as the potentially malicious exit node can see who you are and what you're connecting to.
|
||||
|
||||
Many dVPNs are used to push a cryptocurrency rather than to make the best service. They also tend to be smaller networks with fewer nodes, making them more vulnerable to [Sybil attacks](https://en.wikipedia.org/wiki/Sybil_attack).
|
||||
|
||||
## Related VPN Information
|
||||
|
||||
- [The Trouble with VPN and Privacy Review Sites](https://blog.privacyguides.org/2019/11/20/the-trouble-with-vpn-and-privacy-review-sites/)
|
||||
- [Free VPN App Investigation](https://www.top10vpn.com/free-vpn-app-investigation/)
|
||||
- [Hidden VPN owners unveiled: 101 VPN products run by just 23 companies](https://vpnpro.com/blog/hidden-vpn-owners-unveiled-97-vpns-23-companies/)
|
||||
- [This Chinese company is secretly behind 24 popular apps seeking dangerous permissions](https://vpnpro.com/blog/chinese-company-secretly-behind-popular-apps-seeking-dangerous-permissions/)
|
||||
- [The Trouble with VPN and Privacy Review Sites](https://blog.privacyguides.org/2019/11/20/the-trouble-with-vpn-and-privacy-review-sites)
|
||||
- [Free VPN App Investigation](https://top10vpn.com/research/free-vpn-investigations/ownership)
|
||||
- [Hidden VPN owners unveiled: 101 VPN products run by just 23 companies](https://vpnpro.com/blog/hidden-vpn-owners-unveiled-97-vpns-23-companies)
|
||||
- [This Chinese company is secretly behind 24 popular apps seeking dangerous permissions](https://vpnpro.com/blog/chinese-company-secretly-behind-popular-apps-seeking-dangerous-permissions)
|
||||
- [VPN - a Very Precarious Narrative](https://overengineer.dev/blog/2019/04/08/very-precarious-narrative.html) by Dennis Schubert
|
||||
|
@ -10,16 +10,19 @@ Privacy is ultimately about human information, and this is important because we
|
||||
|
||||
Many people get the concepts of **privacy**, **security**, and **anonymity** confused. You'll see people criticize various products as "not private" when really they mean it doesn't provide anonymity, for example. On this website, we cover all three of these topics, but it is important you understand the difference between them, and when each one comes into play.
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
**Privacy**
|
||||
|
||||
: ==Privacy is the assurance that your data is only seen by the parties you intend to view it.== In the context of an instant messenger, for example, end-to-end encryption provides privacy by keeping your message visible only to yourself and the recipient.
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
**Security**
|
||||
|
||||
: Security is the ability to trust the applications you use—that the parties involved are who they say they are—and keep those applications safe. In the context of browsing the web, for example, security can be provided by HTTPS certificates.
|
||||
|
||||
: Certificates prove you are talking directly to the website you're visiting, and keep attackers on your network from reading or modifying the data sent to or from the website.
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
**Anonymity**
|
||||
|
||||
: Anonymity is the ability to act without a persistent identifier. You might achieve this online with [Tor](../tor.md), which allows you to browse the internet with a random IP address and network connection instead of your own.
|
||||
@ -48,6 +51,6 @@ Privacy is something we need to have baked into the [software and services](../t
|
||||
|
||||
## Sources
|
||||
|
||||
- [Why Privacy Matters](https://www.amazon.com/Why-Privacy-Matters-Neil-Richards/dp/0190939044) (2021) by Neil Richards
|
||||
- [The New Oil: Why Privacy & Security Matter](https://thenewoil.org/en/guides/prologue/why/)
|
||||
- [@Thorin-Oakenpants on GitHub](https://github.com/privacytools/privacytools.io/issues/1760#issuecomment-597497298)
|
||||
- [Why Privacy Matters](https://amazon.com/dp/0190939044) (2021) by Neil Richards
|
||||
- [The New Oil: Why Privacy & Security Matter](https://thenewoil.org/en/guides/prologue/why)
|
||||
- [@Thorin-Oakenpants on Anonymity vs Privacy vs Security](https://code.privacyguides.dev/privacyguides/privacytools.io/issues/1760#issuecomment-10452)
|
||||
|
115
docs/browser-extensions.md
Normal file
@ -0,0 +1,115 @@
|
||||
---
|
||||
title: Browser Extensions
|
||||
icon: material/puzzle-outline
|
||||
description: These browser extensions can enhance your browsing experience and protect your privacy.
|
||||
cover: browser-extensions.webp
|
||||
---
|
||||
|
||||
In general, we recommend keeping your browser extensions to a minimum to decrease your attack surface. They have privileged access within your browser, require you to trust the developer, can make you [stand out](https://en.wikipedia.org/wiki/Device_fingerprint#Browser_fingerprint), and [weaken](https://groups.google.com/a/chromium.org/g/chromium-extensions/c/0ei-UCHNm34/m/lDaXwQhzBAAJ) site isolation.
|
||||
|
||||
However, some provide functionality which can outweigh these downsides in certain situations, particularly when it comes to [content blocking](basics/common-threats.md#mass-surveillance-programs).
|
||||
|
||||
Don't install extensions which you don't immediately have a need for, or ones that duplicate the functionality of your browser. For example, [Brave](desktop-browsers.md#brave) users don't need to install uBlock Origin, because Brave Shields already provides the same functionality.
|
||||
|
||||
## Content Blockers
|
||||
|
||||
### uBlock Origin
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**uBlock Origin** is a popular content blocker that could help you block ads, trackers, and fingerprinting scripts.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/gorhill/uBlock#readme){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://github.com/gorhill/uBlock/wiki/Privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/gorhill/uBlock/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/gorhill/uBlock){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/ublock-origin)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm)
|
||||
- [:fontawesome-brands-edge: Edge](https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
We suggest following the [developer's documentation](https://github.com/gorhill/uBlock/wiki/Blocking-mode) and picking one of the "modes". Additional filter lists can impact performance and [may increase attack surface](https://portswigger.net/research/ublock-i-exfiltrate-exploiting-ad-blockers-with-css).
|
||||
|
||||
These are some other [filter lists](https://github.com/gorhill/uBlock/wiki/Dashboard:-Filter-lists) that you may want to consider adding:
|
||||
|
||||
- [x] Check **Privacy** > **AdGuard URL Tracking Protection**
|
||||
- Add [Actually Legitimate URL Shortener Tool](https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt)
|
||||
|
||||
### uBlock Origin Lite
|
||||
|
||||
uBlock Origin also has a "Lite" version of their extension, which offers a very limited feature-set compared to the original extension. However, it has a few distinct advantages over its full-fledged sibling, so you may want to consider it if...
|
||||
|
||||
- ...you don't want to grant full "read/modify website data" permissions to any extensions (even a trusted one like uBlock Origin)
|
||||
- ...you want a more resource (memory/CPU) efficient content blocker[^1]
|
||||
- ...your browser only supports Manifest V3 extensions
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**uBlock Origin Lite** is a Manifest V3 compatible content blocker. Compared to the original *uBlock Origin*, this extension does not require broad "read/modify data" permissions to function.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/uBlockOrigin/uBOL-home#readme){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://github.com/uBlockOrigin/uBOL-home/wiki/Privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/uBlockOrigin/uBOL-home/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/gorhill/uBlock/tree/master/platform/mv3){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/addon/ublock-origin-lite)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/ublock-origin-lite/ddkjiahejlhfcafbddmgiahcphecmpfh)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
We only recommend this version of uBlock Origin if you never want to make any changes to your filter lists, because it only supports a few pre-selected lists and offers no additional customization options, including the ability to select elements to block manually. These restrictions are due to limitations in Manifest V3's design.
|
||||
|
||||
This version offers three levels of blocking: "Basic" works without requiring any special privileges to view and modify site content, while the "Optimal" and "Complete" levels do require that broad permission, but offer a better filtering experience with additional cosmetic rules and scriptlet injections.
|
||||
|
||||
If you set the default filtering mode to "Optimal" or "Complete" the extension will request read/modify access to **all** websites you visit. However, you also have the option to change the setting to "Optimal" or "Complete" on a **per-site** basis by adjusting the slider in the extension's pop-up panel on any given site. When you do so, the extension will request read/modify access to that site only. Therefore, if you want to take advantage of uBlock Origin Lite's "permission-less" configuration, you should probably leave the default setting as "Basic" and only adjust it higher on sites where that level is not adequate.
|
||||
|
||||
uBlock Origin Lite only receives block list updates whenever the extension is updated from your browser's extension marketplace, as opposed to on demand. This means that you may miss out on new threats being blocked for weeks until a full extension release is published.
|
||||
|
||||
### AdGuard
|
||||
|
||||
We recommend [Safari](mobile-browsers.md#safari) for iOS users, which unfortunately is not supported by uBlock Origin. Luckily, Adguard provides an adequate alternative:
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**AdGuard for iOS** is a free and open-source content-blocking extension for Safari that uses the native [Content Blocker API](https://developer.apple.com/documentation/safariservices/creating_a_content_blocker).
|
||||
|
||||
[:octicons-home-16: Homepage](https://adguard.com/en/adguard-ios/overview.html){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://adguard.com/privacy/ios.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://kb.adguard.com/ios){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/AdguardTeam/AdguardForiOS){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1047223162)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Additional filter lists do slow things down and may increase your attack surface, so only apply what you need. AdGuard for iOS has some premium features; however, standard Safari content blocking is free of charge.
|
||||
|
||||
## Criteria
|
||||
|
||||
- Must not replicate built-in browser or OS functionality.
|
||||
- Must directly impact user privacy, i.e. must not simply provide information.
|
||||
|
||||
[^1]: uBlock Origin Lite *itself* will consume no resources, because it uses newer APIs which make the browser process the filter lists natively, instead of running JavaScript code within the extension to handle the filtering. However, this resource advantage is only [theoretical](https://github.com/uBlockOrigin/uBOL-home/wiki/Frequently-asked-questions-(FAQ)#is-ubol-more-efficient-cpu--and-memory-wise-than-ubo), because it's possible that standard uBlock Origin's filtering code is more efficient than your browser's native filtering code. This has not yet been benchmarked.
|
@ -4,61 +4,70 @@ icon: material/calendar
|
||||
description: Calendars contain some of your most sensitive data; use products that implement encryption at rest.
|
||||
cover: calendar.webp
|
||||
---
|
||||
Calendars contain some of your most sensitive data; use products that implement E2EE at rest to prevent a provider from reading them.
|
||||
**Calendars** contain some of your most sensitive data; use products that implement E2EE at rest to prevent a provider from reading them.
|
||||
|
||||
## Tutanota
|
||||
## Tuta
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Tutanota** offers a free and encrypted calendar across their supported platforms. Features include: automatic E2EE of all data, sharing features, import/export functionality, multi-factor authentication, and [more](https://tutanota.com/calendar-app-comparison/).
|
||||
**Tuta** offers a free and encrypted calendar across their supported platforms. Features include: automatic E2EE of all data, sharing features, import/export functionality, multi-factor authentication, and [more](https://tuta.com/calendar-app-comparison).
|
||||
|
||||
Multiple calendars and extended sharing functionality is limited to paid subscribers.
|
||||
Multiple calendars and extended sharing functionality is limited to paid subscribers.
|
||||
|
||||
[:octicons-home-16: Homepage](https://tutanota.com/calendar){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://tutanota.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://tutanota.com/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/tutao/tutanota){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://tutanota.com/community/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://tuta.com/calendar){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://tuta.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://tuta.com/support){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/tutao/tutanota){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://tuta.com/community){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=de.tutao.tutanota)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/us/app/tutanota/id922429609)
|
||||
- [:simple-windows11: Windows](https://tutanota.com/blog/posts/desktop-clients/)
|
||||
- [:simple-apple: macOS](https://tutanota.com/blog/posts/desktop-clients/)
|
||||
- [:simple-linux: Linux](https://tutanota.com/blog/posts/desktop-clients/)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/com.tutanota.Tutanota)
|
||||
- [:octicons-browser-16: Web](https://mail.tutanota.com/)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=de.tutao.tutanota)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id922429609)
|
||||
- [:fontawesome-brands-windows: Windows](https://tuta.com/blog/desktop-clients)
|
||||
- [:simple-apple: macOS](https://tuta.com/blog/desktop-clients)
|
||||
- [:simple-linux: Linux](https://tuta.com/blog/desktop-clients)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/com.tutanota.Tutanota)
|
||||
- [:octicons-browser-16: Web](https://app.tuta.com)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Proton Calendar
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Proton Calendar** is an encrypted calendar service available to Proton members via web or mobile clients. Features include: automatic E2EE of all data, sharing features, import/export functionality, and [more](https://proton.me/support/proton-calendar-guide). Those on the free tier get access to 3 calendars, whereas paid subscribers can create up to 25 calendars. Extended sharing functionality is also limited to paid subscribers.
|
||||
**Proton Calendar** is an encrypted calendar service available to Proton members via web or mobile clients. Features include: automatic E2EE of all data, sharing features, import/export functionality, and [more](https://proton.me/support/proton-calendar-guide). Those on the free tier gain access to 3 calendars, whereas paid subscribers can create up to 25 calendars. Extended sharing functionality is also limited to paid subscribers.
|
||||
|
||||
[:octicons-home-16: Homepage](https://proton.me/calendar){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://proton.me/support/proton-calendar-guide){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/ProtonMail/WebClients){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://proton.me/calendar){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://proton.me/support/calendar){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/ProtonMail/WebClients){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=me.proton.android.calendar)
|
||||
- [:octicons-browser-16: Web](https://calendar.proton.me)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=me.proton.android.calendar)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1514709943)
|
||||
- [:octicons-browser-16: Web](https://calendar.proton.me)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Unfortunately, as of May 2024 Proton has [still](https://discuss.privacyguides.net/t/proton-calendar-is-not-open-source-mobile/14656/8) not released the source code for their mobile Calendar app on Android or iOS, and only the former has been [audited](https://proton.me/blog/security-audit-all-proton-apps). Proton Calendar's web client is open source, however, and has been [audited](https://proton.me/community/open-source).
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
### Minimum Qualifications
|
||||
|
||||
- Must sync and store information with E2EE to ensure data is not visible to the service provider.
|
||||
|
120
docs/cloud.md
@ -5,95 +5,135 @@ icon: material/file-cloud
|
||||
description: Many cloud storage providers require your trust that they will not look at your files. These are private alternatives!
|
||||
cover: cloud.webp
|
||||
---
|
||||
Many cloud storage providers require your full trust that they will not look at your files. The alternatives listed below eliminate the need for trust by implementing secure E2EE.
|
||||
Many **cloud storage providers** require your full trust that they will not look at your files. The alternatives listed below eliminate the need for trust by implementing secure E2EE.
|
||||
|
||||
If these alternatives do not fit your needs, we suggest you look into using encryption software like [Cryptomator](encryption.md#cryptomator-cloud) with another cloud provider. Using Cryptomator in conjunction with **any** cloud provider (including these) may be a good idea to reduce the risk of encryption flaws in a provider's native clients.
|
||||
|
||||
??? question "Looking for Nextcloud?"
|
||||
<details class="admonition info" markdown>
|
||||
<summary>Looking for Nextcloud?</summary>
|
||||
|
||||
Nextcloud is [still a recommended tool](productivity.md) for self-hosting a file management suite, however we do not recommend third-party Nextcloud storage providers at the moment, because we do [not recommend](https://discuss.privacyguides.net/t/dont-recommend-nextcloud-e2ee/10352/29) Nextcloud's built-in E2EE functionality for home users.
|
||||
Nextcloud is [still a recommended tool](document-collaboration.md#nextcloud) for self-hosting a file management suite, however we do not recommend third-party Nextcloud storage providers at the moment, because we do [not recommend](https://discuss.privacyguides.net/t/dont-recommend-nextcloud-e2ee/10352/29) Nextcloud's built-in E2EE functionality for home users.
|
||||
|
||||
</details>
|
||||
|
||||
## Proton Drive
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Proton Drive** is a Swiss encrypted cloud storage provider from the popular encrypted email provider [Proton Mail](email.md#proton-mail).
|
||||
**Proton Drive** is an encrypted cloud storage provider from the popular encrypted email provider [Proton Mail](email.md#proton-mail). The initial free storage is limited to 2GB, but with the completion of certain steps, additional storage can be obtained up to 5GB.
|
||||
|
||||
[:octicons-home-16: Homepage](https://proton.me/drive){ class="md-button md-button--primary" }
|
||||
[:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://proton.me/support/drive){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/ProtonMail/WebClients){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://proton.me/drive){ class="md-button md-button--primary" }
|
||||
[:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://proton.me/support/drive){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/ProtonMail/WebClients){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=me.proton.android.drive)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1509667851)
|
||||
- [:simple-windows11: Windows](https://proton.me/drive/download)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=me.proton.android.drive)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1509667851)
|
||||
- [:fontawesome-brands-windows: Windows](https://proton.me/drive/download)
|
||||
- [:simple-apple: macOS](https://proton.me/drive/download)
|
||||
|
||||
The Proton Drive web application has been independently audited by Securitum in [2021](https://proton.me/blog/security-audit-all-proton-apps), full details were not made available, but Securitum's letter of attestation states:
|
||||
</details>
|
||||
|
||||
> Auditors identified two low-severity vulnerabilities. Additionally, five general recommendations were reported. At the same time, we confirm that no important security issues were identified during the pentest.
|
||||
</div>
|
||||
|
||||
Proton Drive's brand new mobile clients have not yet been publicly audited by a third-party.
|
||||
The Proton Drive web application has been independently audited by Securitum in [2021](https://proton.me/community/open-source).
|
||||
|
||||
Proton Drive's brand new mobile clients have not yet been publicly audited by a third party.
|
||||
|
||||
## Tresorit
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Tresorit** is a Swiss-Hungarian encrypted cloud storage provider founded in 2011. Tresorit is owned by the Swiss Post, the national postal service of Switzerland.
|
||||
**Tresorit** is a Swiss-Hungarian encrypted cloud storage provider founded in 2011. Tresorit is owned by the Swiss Post, the national postal service of Switzerland.
|
||||
|
||||
[:octicons-home-16: Homepage](https://tresorit.com/){ class="md-button md-button--primary" }
|
||||
[:octicons-eye-16:](https://tresorit.com/legal/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.tresorit.com/hc/en-us){ .card-link title=Documentation}
|
||||
[:octicons-home-16: Homepage](https://tresorit.com){ class="md-button md-button--primary" }
|
||||
[:octicons-eye-16:](https://tresorit.com/legal/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.tresorit.com){ .card-link title=Documentation}
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.tresorit.mobile)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/apple-store/id722163232)
|
||||
- [:simple-windows11: Windows](https://tresorit.com/download)
|
||||
- [:simple-apple: macOS](https://tresorit.com/download)
|
||||
- [:simple-linux: Linux](https://tresorit.com/download)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.tresorit.mobile)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id722163232)
|
||||
- [:fontawesome-brands-windows: Windows](https://tresorit.com/download)
|
||||
- [:simple-apple: macOS](https://tresorit.com/download)
|
||||
- [:simple-linux: Linux](https://tresorit.com/download)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Tresorit has received a number of independent security audits:
|
||||
|
||||
- [2022](https://tresorit.com/blog/tresorit-receives-iso-27001-certification/): ISO/IEC 27001:2013[^1] Compliance [Certification](https://www.certipedia.com/quality_marks/9108644476) by TÜV Rheinland InterCert Kft
|
||||
- [2021](https://tresorit.com/blog/fresh-penetration-testing-confirms-tresorit-security/): Penetration Testing by Computest
|
||||
- [2022](https://tresorit.com/blog/tresorit-receives-iso-27001-certification): ISO/IEC 27001:2013[^1] Compliance [Certification](https://certipedia.com/quality_marks/9108644476) by TÜV Rheinland InterCert Kft
|
||||
- [2021](https://tresorit.com/blog/fresh-penetration-testing-confirms-tresorit-security): Penetration Testing by Computest
|
||||
- This review assessed the security of the Tresorit web client, Android app, Windows app, and associated infrastructure.
|
||||
- Computest discovered two vulnerabilities which have been resolved.
|
||||
- [2019](https://tresorit.com/blog/ernst-young-review-verifies-tresorits-security-architecture/): Penetration Testing by Ernst & Young.
|
||||
- [2019](https://tresorit.com/blog/ernst-young-review-verifies-tresorits-security-architecture): Penetration Testing by Ernst & Young.
|
||||
- This review analyzed the full source code of Tresorit and validated that the implementation matches the concepts described in Tresorit's [white paper](https://prodfrontendcdn.azureedge.net/202208011608/tresorit-encryption-whitepaper.pdf).
|
||||
- Ernst & Young additionally tested the web, mobile, and desktop clients: "Test results found no deviation from Tresorit’s data confidentiality claims."
|
||||
|
||||
[^1]: [ISO/IEC 27001](https://en.wikipedia.org/wiki/ISO/IEC_27001):2013 compliance relates to the company's [information security management system](https://en.wikipedia.org/wiki/Information_security_management) and covers the sales, development, maintenance and support of their cloud services.
|
||||
|
||||
They have also received the Digital Trust Label, a certification from the [Swiss Digital Initiative](https://www.swiss-digital-initiative.org/digital-trust-label/) which requires passing [35 criteria](https://digitaltrust-label.swiss/criteria/) related to security, privacy, and reliability.
|
||||
They have also received the Digital Trust Label, a certification from the [Swiss Digital Initiative](https://efd.admin.ch/en/swiss-digital-initiative-en) which requires passing [35 criteria](https://swiss-digital-initiative.org/criteria) related to security, privacy, and reliability.
|
||||
|
||||
## Peergos
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Peergos** is a decentralized protocol and open-source platform for storage, social media, and applications. It provides a secure and private space where users can store, share, and view their photos, videos, documents, etc. Peergos secures your files with quantum-resistant end-to-end encryption and ensures all data about your files remains private. It is built on top of [IPFS (InterPlanetary File System)](https://ipfs.tech).
|
||||
|
||||
[:octicons-home-16: Homepage](https://peergos.org){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://peergos.net/privacy.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://book.peergos.org){ .card-link title="Documentation" }
|
||||
[:octicons-code-16:](https://github.com/Peergos/Peergos){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:octicons-globe-16: Web](https://peergos.net)
|
||||
- [:fontawesome-brands-windows: Windows](https://github.com/Peergos/web-ui/releases)
|
||||
- [:simple-apple: macOS](https://github.com/Peergos/web-ui/releases)
|
||||
- [:simple-linux: Linux](https://github.com/Peergos/web-ui/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Peergos is primarily a web app, but you can self-host the server either as a local cache for your remote Peergos account, or as a standalone storage server which negates the need to register for a remote account and subscription. The Peergos server is a `.jar` file, which means the Java 17+ Runtime Environment ([OpenJDK download](https://azul.com/downloads)) should be installed on your machine to get it working.
|
||||
|
||||
Running a local version of Peergos alongside a registered account on their paid, hosted service allows you to access your Peergos storage without any reliance on DNS or TLS certificate authorities, and keep a copy of your data backed up to their cloud. The user experience should be the same whether you run their desktop server or just use their hosted web interface.
|
||||
|
||||
Peergos was [audited](https://cure53.de/pentest-report_peergos.pdf) by Cure53 in September 2019, and all found issues were subsequently fixed.
|
||||
|
||||
Also, the Android app is not available but it is [in the works](https://discuss.privacyguides.net/t/peergos-private-storage-sharing-social-media-and-application-platform/11825/25). The current workaround is to use the mobile [PWA](https://peergos.net) instead.
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
### Minimum Requirements
|
||||
|
||||
- Must enforce end-to-end encryption.
|
||||
- Must offer a free plan or trial period for testing.
|
||||
- Must support TOTP or FIDO2 multi-factor authentication, or Passkey logins.
|
||||
- Must support TOTP or FIDO2 multi-factor authentication, or passkey logins.
|
||||
- Must offer a web interface which supports basic file management functionality.
|
||||
- Must allow for easy exports of all files/documents.
|
||||
- Must use standard, audited encryption.
|
||||
|
||||
### Best-Case
|
||||
|
||||
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
|
||||
|
||||
- Clients should be open-source.
|
||||
- Clients should be open source.
|
||||
- Clients should be audited in their entirety by an independent third-party.
|
||||
- Should offer native clients for Linux, Android, Windows, macOS, and iOS.
|
||||
- These clients should integrate with native OS tools for cloud storage providers, such as Files app integration on iOS, or DocumentsProvider functionality on Android.
|
||||
|
@ -9,38 +9,45 @@ Making payments online is one of the biggest challenges to privacy. These crypto
|
||||
|
||||
[Making Private Payments :material-arrow-right-drop-circle:](advanced/payments.md){ .md-button }
|
||||
|
||||
!!! danger
|
||||
<div class="admonition danger" markdown>
|
||||
<p class="admonition-title">Danger</p>
|
||||
|
||||
Many if not most cryptocurrency projects are scams. Make transactions carefully with only projects you trust.
|
||||
Many if not most cryptocurrency projects are scams. Make transactions carefully with only projects you trust.
|
||||
|
||||
</div>
|
||||
|
||||
## Monero
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Monero** uses a blockchain with privacy-enhancing technologies that obfuscate transactions to achieve anonymity. Every Monero transaction hides the transaction amount, sending and receiving addresses, and source of funds without any hoops to jump through, making it an ideal choice for cryptocurrency novices.
|
||||
**Monero** uses a blockchain with privacy-enhancing technologies that obfuscate transactions to achieve anonymity. Every Monero transaction hides the transaction amount, sending and receiving addresses, and source of funds without any hoops to jump through, making it an ideal choice for cryptocurrency novices.
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.getmonero.org/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://www.getmonero.org/resources/user-guides/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/monero-project/monero){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.getmonero.org/get-started/contributing/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://getmonero.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://getmonero.org/resources/user-guides){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/monero-project/monero){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://getmonero.org/get-started/contributing){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
With Monero, outside observers cannot decipher addresses trading Monero, transaction amounts, address balances, or transaction histories.
|
||||
|
||||
For optimal privacy, make sure to use a noncustodial wallet where the view key stays on the device. This means that only you will have the ability to spend your funds and see incoming and outgoing transactions. If you use a custodial wallet, the provider can see **everything** you do; if you use a “lightweight” wallet where the provider retains your private view key, the provider can see almost everything you do. Some noncustodial wallets include:
|
||||
|
||||
- [Official Monero client](https://getmonero.org/downloads) (Desktop)
|
||||
- [Cake Wallet](https://cakewallet.com/) (iOS, Android)
|
||||
- Cake Wallet supports multiple cryptocurrencies. A Monero-only version of Cake Wallet is available at [Monero.com](https://monero.com/).
|
||||
- [Feather Wallet](https://featherwallet.org/) (Desktop)
|
||||
- [Monerujo](https://www.monerujo.io/) (Android)
|
||||
- [Cake Wallet](https://cakewallet.com) (iOS, Android, macOS)
|
||||
- Cake Wallet supports multiple cryptocurrencies. A Monero-only version of Cake Wallet for iOS and Android is available at [Monero.com](https://monero.com).
|
||||
- [Feather Wallet](https://featherwallet.org) (Desktop)
|
||||
- [Monerujo](https://monerujo.io) (Android)
|
||||
|
||||
For maximum privacy (even with a noncustodial wallet), you should run your own Monero node. Using another person’s node will expose some information to them, such as the IP address that you connect to it from, the timestamps that you sync your wallet, and the transactions that you send from your wallet (though no other details about those transactions). Alternatively, you can connect to someone else’s Monero node over Tor or i2p.
|
||||
For maximum privacy (even with a noncustodial wallet), you should run your own Monero node. Using another person’s node will expose some information to them, such as the IP address that you connect to it from, the timestamps that you sync your wallet, and the transactions that you send from your wallet (though no other details about those transactions). Alternatively, you can connect to someone else’s Monero node over Tor or [I2P](alternative-networks.md#i2p-the-invisible-internet-project).
|
||||
|
||||
In August 2021, CipherTrace [announced](https://ciphertrace.com/enhanced-monero-tracing/) enhanced Monero tracing capabilities for government agencies. Public postings show that the US Department of the Treasury's Financial Crimes Enforcement Network [licensed](https://sam.gov/opp/d12cbe9afbb94ca68006d0f006d355ac/view) CipherTrace's "Monero Module" in late 2022.
|
||||
In August 2021, CipherTrace [announced](https://web.archive.org/web/20240223224846/https://ciphertrace.com/enhanced-monero-tracing) enhanced Monero tracing capabilities for government agencies. Public postings show that the US Department of the Treasury's Financial Crimes Enforcement Network [licensed](https://sam.gov/opp/d12cbe9afbb94ca68006d0f006d355ac/view) CipherTrace's "Monero Module" in late 2022.
|
||||
|
||||
Monero transaction graph privacy is limited by its relatively small ring signatures, especially against targeted attacks. Monero's privacy features have also been [called into question](https://web.archive.org/web/20180331203053/https://www.wired.com/story/monero-privacy/) by some security researchers, and a number of severe vulnerabilities have been found and patched in the past, so the claims made by organizations like CipherTrace are not out of the question. While it's unlikely that Monero mass surveillance tools exist like they do for Bitcoin and others, it's certain that tracing tools assist with targeted investigations.
|
||||
Monero transaction graph privacy is limited by its relatively small ring signatures, especially against targeted attacks. Monero's privacy features have also been [called into question](https://web.archive.org/web/20180331203053/https://wired.com/story/monero-privacy) by some security researchers, and a number of severe vulnerabilities have been found and patched in the past, so the claims made by organizations like CipherTrace are not out of the question. While it's unlikely that Monero mass surveillance tools exist like they do for Bitcoin and others, it's certain that tracing tools assist with targeted investigations.
|
||||
|
||||
Ultimately, Monero is the strongest contender for a privacy-friendly cryptocurrency, but its privacy claims have **not** been definitively proven one way or the other. More time and research is needed to assess whether Monero is resilient enough to attacks to always provide adequate privacy.
|
||||
|
||||
@ -48,8 +55,4 @@ Ultimately, Monero is the strongest contender for a privacy-friendly cryptocurre
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
- Cryptocurrency must provide private/untraceable transactions by default.
|
||||
|
@ -11,136 +11,163 @@ When sharing files, be sure to remove associated metadata. Image files commonly
|
||||
|
||||
### MAT2
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**MAT2** is free software, which allows the metadata to be removed from image, audio, torrent, and document file types. It provides both a command line tool and a graphical user interface via an [extension for Nautilus](https://0xacab.org/jvoisin/mat2/-/tree/master/nautilus), the default file manager of [GNOME](https://www.gnome.org), and [Dolphin](https://0xacab.org/jvoisin/mat2/-/tree/master/dolphin), the default file manager of [KDE](https://kde.org).
|
||||
**MAT2** is free software, which allows the metadata to be removed from image, audio, torrent, and document file types. It provides both a command line tool and a graphical user interface via an extension for [Dolphin](https://0xacab.org/jvoisin/mat2/-/tree/master/dolphin), the default file manager of [KDE](https://kde.org).
|
||||
|
||||
On Linux, a third-party graphical tool [Metadata Cleaner](https://gitlab.com/rmnvgr/metadata-cleaner) powered by MAT2 exists and is [available on Flathub](https://flathub.org/apps/details/fr.romainvigier.MetadataCleaner).
|
||||
On Linux, a third-party graphical tool [Metadata Cleaner](https://gitlab.com/rmnvgr/metadata-cleaner) powered by MAT2 exists and is [available on Flathub](https://flathub.org/apps/details/fr.romainvigier.MetadataCleaner).
|
||||
|
||||
[:octicons-repo-16: Repository](https://0xacab.org/jvoisin/mat2){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://0xacab.org/jvoisin/mat2/-/blob/master/README.md){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://0xacab.org/jvoisin/mat2){ .card-link title="Source Code" }
|
||||
[:octicons-repo-16: Repository](https://0xacab.org/jvoisin/mat2){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://0xacab.org/jvoisin/mat2/-/blob/master/README.md){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://0xacab.org/jvoisin/mat2){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-windows11: Windows](https://pypi.org/project/mat2)
|
||||
- [:simple-apple: macOS](https://0xacab.org/jvoisin/mat2#requirements-setup-on-macos-os-x-using-homebrew)
|
||||
- [:simple-linux: Linux](https://pypi.org/project/mat2)
|
||||
- [:octicons-globe-16: Web](https://0xacab.org/jvoisin/mat2#web-interface)
|
||||
- [:fontawesome-brands-windows: Windows](https://pypi.org/project/mat2)
|
||||
- [:simple-apple: macOS](https://0xacab.org/jvoisin/mat2#requirements-setup-on-macos-os-x-using-homebrew)
|
||||
- [:simple-linux: Linux](https://pypi.org/project/mat2)
|
||||
- [:octicons-globe-16: Web](https://0xacab.org/jvoisin/mat2#web-interface)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Mobile
|
||||
|
||||
### ExifEraser (Android)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**ExifEraser** is a modern, permissionless image metadata erasing application for Android.
|
||||
**ExifEraser** is a modern, permissionless image metadata erasing application for Android.
|
||||
|
||||
It currently supports JPEG, PNG and WebP files.
|
||||
It currently supports JPEG, PNG and WebP files.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/Tommy-Geenexus/exif-eraser){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://github.com/Tommy-Geenexus/exif-eraser#readme){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/Tommy-Geenexus/exif-eraser){ .card-link title="Source Code" }
|
||||
[:octicons-repo-16: Repository](https://github.com/Tommy-Geenexus/exif-eraser){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://github.com/Tommy-Geenexus/exif-eraser#readme){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/Tommy-Geenexus/exif-eraser){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.none.tom.exiferaser)
|
||||
- [:octicons-moon-16: Accrescent](https://accrescent.app/app/com.none.tom.exiferaser)
|
||||
- [:simple-github: GitHub](https://github.com/Tommy-Geenexus/exif-eraser/releases)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.none.tom.exiferaser)
|
||||
- [:octicons-moon-16: Accrescent](https://accrescent.app/app/com.none.tom.exiferaser)
|
||||
- [:simple-github: GitHub](https://github.com/Tommy-Geenexus/exif-eraser/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
The metadata that is erased depends on the image's file type:
|
||||
|
||||
* **JPEG**: ICC Profile, Exif, Photoshop Image Resources and XMP/ExtendedXMP metadata will be erased if it exists.
|
||||
* **PNG**: ICC Profile, Exif and XMP metadata will be erased if it exists.
|
||||
* **WebP**: ICC Profile, Exif and XMP metadata will be erased if it exists.
|
||||
- **JPEG**: ICC Profile, Exif, Photoshop Image Resources and XMP/ExtendedXMP metadata will be erased if it exists.
|
||||
- **PNG**: ICC Profile, Exif and XMP metadata will be erased if it exists.
|
||||
- **WebP**: ICC Profile, Exif and XMP metadata will be erased if it exists.
|
||||
|
||||
After processing the images, ExifEraser provides you with a full report about what exactly was removed from each image.
|
||||
|
||||
The app offers multiple ways to erase metadata from images. Namely:
|
||||
|
||||
* You can share an image from another application with ExifEraser.
|
||||
* Through the app itself, you can select a single image, multiple images at once, or even an entire directory.
|
||||
* It features a "Camera" option, which uses your operating system's camera app to take a photo, and then it removes the metadata from it.
|
||||
* It allows you to drag photos from another app into ExifEraser when they are both open in split-screen mode.
|
||||
* Lastly, it allows you to paste an image from your clipboard.
|
||||
- You can share an image from another application with ExifEraser.
|
||||
- Through the app itself, you can select a single image, multiple images at once, or even an entire directory.
|
||||
- It features a "Camera" option, which uses your operating system's camera app to take a photo, and then it removes the metadata from it.
|
||||
- It allows you to drag photos from another app into ExifEraser when they are both open in split-screen mode.
|
||||
- Lastly, it allows you to paste an image from your clipboard.
|
||||
|
||||
### Metapho (iOS)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Metapho** is a simple and clean viewer for photo metadata such as date, file name, size, camera model, shutter speed, and location.
|
||||
**Metapho** is a simple and clean viewer for photo metadata such as date, file name, size, camera model, shutter speed, and location.
|
||||
|
||||
[:octicons-home-16: Homepage](https://zininworks.com/metapho){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://zininworks.com/privacy/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-home-16: Homepage](https://zininworks.com/metapho){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://zininworks.com/privacy){ .card-link title="Privacy Policy" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/us/app/metapho/id914457352)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id914457352)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### PrivacyBlur
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**PrivacyBlur** is a free app which can blur sensitive portions of pictures before sharing them online.
|
||||
**PrivacyBlur** is a free app which can blur sensitive portions of pictures before sharing them online.
|
||||
|
||||
[:octicons-home-16: Homepage](https://privacyblur.app/){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://privacyblur.app/privacy.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/MATHEMA-GmbH/privacyblur#readme){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/MATHEMA-GmbH/privacyblur){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://privacyblur.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://privacyblur.app/privacy.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/MATHEMA-GmbH/privacyblur#readme){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/MATHEMA-GmbH/privacyblur){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=de.mathema.privacyblur)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/us/app/privacyblur/id1536274106)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=de.mathema.privacyblur)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1536274106)
|
||||
|
||||
!!! warning
|
||||
</details>
|
||||
|
||||
You should **never** use blur to redact [text in images](https://bishopfox.com/blog/unredacter-tool-never-pixelation). If you want to redact text in an image, draw a box over the text. For this, we suggest apps like [Pocket Paint](https://github.com/Catrobat/Paintroid).
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
You should **never** use blur to redact [text in images](https://bishopfox.com/blog/unredacter-tool-never-pixelation). If you want to redact text in an image, draw a box over the text. For this, we suggest apps like [Pocket Paint](https://github.com/Catrobat/Paintroid).
|
||||
|
||||
</div>
|
||||
|
||||
## Command-line
|
||||
|
||||
### ExifTool
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**ExifTool** is the original perl library and command-line application for reading, writing, and editing meta information (Exif, IPTC, XMP, and more) in a wide variety of file formats (JPEG, TIFF, PNG, PDF, RAW, and more).
|
||||
**ExifTool** is the original perl library and command-line application for reading, writing, and editing meta information (Exif, IPTC, XMP, and more) in a wide variety of file formats (JPEG, TIFF, PNG, PDF, RAW, and more).
|
||||
|
||||
It's often a component of other Exif removal applications and is in most Linux distribution repositories.
|
||||
It's often a component of other Exif removal applications and is in most Linux distribution repositories.
|
||||
|
||||
[:octicons-home-16: Homepage](https://exiftool.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://exiftool.org/faq.html){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/exiftool/exiftool){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://exiftool.org/#donate){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://exiftool.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://exiftool.org/faq.html){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/exiftool/exiftool){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://exiftool.org/#donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-windows11: Windows](https://exiftool.org)
|
||||
- [:simple-apple: macOS](https://exiftool.org)
|
||||
- [:simple-linux: Linux](https://exiftool.org)
|
||||
- [:fontawesome-brands-windows: Windows](https://exiftool.org)
|
||||
- [:simple-apple: macOS](https://exiftool.org)
|
||||
- [:simple-linux: Linux](https://exiftool.org)
|
||||
|
||||
!!! example "Deleting data from a directory of files"
|
||||
</details>
|
||||
|
||||
```bash
|
||||
exiftool -all= *.file_extension
|
||||
```
|
||||
</div>
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Deleting data from a directory of files</p>
|
||||
|
||||
```bash
|
||||
exiftool -all= *.file_extension
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
- Apps developed for open-source operating systems must be open-source.
|
||||
- Apps developed for open-source operating systems must be open source.
|
||||
- Apps must be free and should not include ads or other limitations.
|
||||
|
@ -2,16 +2,16 @@
|
||||
meta_title: "Privacy Respecting Web Browsers for PC and Mac - Privacy Guides"
|
||||
title: "Desktop Browsers"
|
||||
icon: material/laptop
|
||||
description: These web browsers provide stronger privacy protections than Google Chrome.
|
||||
description: These privacy-protecting browsers are what we currently recommend for standard/non-anonymous internet browsing on desktop systems.
|
||||
cover: desktop-browsers.webp
|
||||
schema:
|
||||
-
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": WebPage
|
||||
name: Private Desktop Browser Recommendations
|
||||
url: "./"
|
||||
relatedLink: "../mobile-browsers/"
|
||||
-
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": SoftwareApplication
|
||||
name: Mullvad Browser
|
||||
@ -25,7 +25,7 @@ schema:
|
||||
subjectOf:
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
-
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": SoftwareApplication
|
||||
name: Firefox
|
||||
@ -40,7 +40,7 @@ schema:
|
||||
subjectOf:
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
-
|
||||
-
|
||||
"@context": http://schema.org
|
||||
"@type": SoftwareApplication
|
||||
name: Brave
|
||||
@ -56,30 +56,35 @@ schema:
|
||||
"@type": WebPage
|
||||
url: "./"
|
||||
---
|
||||
These are our currently recommended desktop web browsers and configurations for standard/non-anonymous browsing. We recommend [Mullvad Browser](#mullvad-browser) if you are focused on strong privacy protections and anti-fingerprinting out of the box, [Firefox](#firefox) for casual internet browsers looking for a good alternative to Google Chrome, and [Brave](#brave) if you need Chromium browser compatibility.
|
||||
These are our currently recommended **desktop web browsers** and configurations for standard/non-anonymous browsing. We recommend [Mullvad Browser](#mullvad-browser) if you are focused on strong privacy protections and anti-fingerprinting out of the box, [Firefox](#firefox) for casual internet browsers looking for a good alternative to Google Chrome, and [Brave](#brave) if you need Chromium browser compatibility.
|
||||
|
||||
If you need to browse the internet anonymously, you should use [Tor](tor.md) instead. We make some configuration recommendations on this page, but all browsers other than Tor Browser will be traceable by *somebody* in some manner or another.
|
||||
|
||||
## Mullvad Browser
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Mullvad Browser** is a version of [Tor Browser](tor.md#tor-browser) with Tor network integrations removed, aimed at providing Tor Browser's anti-fingerprinting browser technologies to VPN users. It is developed by the Tor Project and distributed by [Mullvad](vpn.md#mullvad), and does **not** require the use of Mullvad's VPN.
|
||||
**Mullvad Browser** is a version of [Tor Browser](tor.md#tor-browser) with Tor network integrations removed, aimed at providing Tor Browser's anti-fingerprinting browser technologies to VPN users. It is developed by the Tor Project and distributed by [Mullvad](vpn.md#mullvad), and does **not** require the use of Mullvad's VPN.
|
||||
|
||||
[:octicons-home-16: Homepage](https://mullvad.net/en/browser){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://mullvad.net/en/help/privacy-policy/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://mullvad.net/en/help/tag/mullvad-browser/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.torproject.org/tpo/applications/mullvad-browser){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://mullvad.net/en/browser){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://mullvad.net/en/help/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://mullvad.net/en/help/tag/mullvad-browser){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.torproject.org/tpo/applications/mullvad-browser){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-windows11: Windows](https://mullvad.net/en/download/browser/windows)
|
||||
- [:simple-apple: macOS](https://mullvad.net/en/download/browser/macos)
|
||||
- [:simple-linux: Linux](https://mullvad.net/en/download/browser/linux)
|
||||
- [:fontawesome-brands-windows: Windows](https://mullvad.net/en/download/browser/windows)
|
||||
- [:simple-apple: macOS](https://mullvad.net/en/download/browser/macos)
|
||||
- [:simple-linux: Linux](https://mullvad.net/en/download/browser/linux)
|
||||
|
||||
Like [Tor Browser](tor.md), Mullvad Browser is designed to prevent fingerprinting by making your browser fingerprint identical to all other Mullvad Browser users, and it includes default settings and extensions that are automatically configured by the default security levels: *Standard*, *Safer* and *Safest*. Therefore, it is imperative that you do not modify the browser at all outside adjusting the default [security levels](https://tb-manual.torproject.org/security-settings/). Other modifications would make your fingerprint unique, defeating the purpose of using this browser. If you want to configure your browser more heavily and fingerprinting is not a concern for you, we recommend [Firefox](#firefox) instead.
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Like [Tor Browser](tor.md), Mullvad Browser is designed to prevent fingerprinting by making your browser fingerprint identical to all other Mullvad Browser users, and it includes default settings and extensions that are automatically configured by the default security levels: *Standard*, *Safer* and *Safest*. Therefore, it is imperative that you do not modify the browser at all outside adjusting the default [security levels](https://tb-manual.torproject.org/security-settings). Other modifications would make your fingerprint unique, defeating the purpose of using this browser. If you want to configure your browser more heavily and fingerprinting is not a concern for you, we recommend [Firefox](#firefox) instead.
|
||||
|
||||
### Anti-Fingerprinting
|
||||
|
||||
@ -89,7 +94,7 @@ Like [Tor Browser](tor.md), Mullvad Browser is designed to prevent fingerprintin
|
||||
|
||||
Note that while you can use Mullvad Browser with any VPN provider, other people on that VPN must also be using Mullvad Browser for this "crowd" to exist, something which is more likely on Mullvad VPN compared to other providers, particularly this close to the launch of Mullvad Browser. Mullvad Browser does not have built-in VPN connectivity, nor does it check whether you are using a VPN before browsing; your VPN connection has to be configured and managed separately.
|
||||
|
||||
Mullvad Browser comes with the *uBlock Origin* and *NoScript* browser extensions pre-installed. While we typically [don't recommend](#extensions) adding *additional* browser extensions, these extensions that come pre-installed with the browser should **not** be removed or configured outside their default values, because doing so would noticeably make your browser fingerprint distinct from other Mullvad Browser users. It also comes pre-installed with the Mullvad Browser Extension, which *can* be safely removed without impacting your browser fingerprint if you would like, but is also safe to keep even if you don't use Mullvad VPN.
|
||||
Mullvad Browser comes with the *uBlock Origin* and *NoScript* browser extensions pre-installed. While we typically discourage adding *additional* [browser extensions](browser-extensions.md), these extensions that come pre-installed with the browser should **not** be removed or configured outside their default values, because doing so would noticeably make your browser fingerprint distinct from other Mullvad Browser users. It also comes pre-installed with the Mullvad Browser Extension, which *can* be safely removed without impacting your browser fingerprint if you would like, but is also safe to keep even if you don't use Mullvad VPN.
|
||||
|
||||
### Private Browsing Mode
|
||||
|
||||
@ -99,44 +104,60 @@ This is required to prevent advanced forms of tracking, but does come at the cos
|
||||
|
||||
### Mullvad Leta
|
||||
|
||||
Mullvad Browser comes with DuckDuckGo set as the default [search engine](search-engines.md), but it also comes preinstalled with **Mullvad Leta**, a search engine which requires an active Mullvad VPN subscription to access. Mullvad Leta queries Google's paid search API directly (which is why it is limited to paying subscribers), however because of this limitation it is possible for Mullvad to correlate search queries and Mullvad VPN accounts. For this reason we discourage the use of Mullvad Leta, even though Mullvad collects very little information about their VPN subscribers.
|
||||
Mullvad Browser comes with DuckDuckGo set as the default [search engine](search-engines.md), but it also comes preinstalled with **Mullvad Leta**, a search engine which requires an active Mullvad VPN subscription to access. Mullvad Leta queries Google's paid search API directly, which is why it is limited to paying subscribers. However, it is possible for Mullvad to correlate search queries and Mullvad VPN accounts because of this limitation. For this reason we discourage the use of Mullvad Leta, even though Mullvad collects very little information about their VPN subscribers.
|
||||
|
||||
## Firefox
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Firefox** provides strong privacy settings such as [Enhanced Tracking Protection](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop), which can help block various [types of tracking](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop#w_what-enhanced-tracking-protection-blocks).
|
||||
**Firefox** provides strong privacy settings such as [Enhanced Tracking Protection](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop), which can help block various [types of tracking](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop#w_what-enhanced-tracking-protection-blocks).
|
||||
|
||||
[:octicons-home-16: Homepage](https://firefox.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://www.mozilla.org/privacy/firefox/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://firefox-source-docs.mozilla.org/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://hg.mozilla.org/mozilla-central){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://donate.mozilla.org/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://firefox.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://mozilla.org/privacy/firefox){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.mozilla.org/products/firefox){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://hg.mozilla.org/mozilla-central){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://donate.mozilla.org){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-windows11: Windows](https://www.mozilla.org/firefox/windows)
|
||||
- [:simple-apple: macOS](https://www.mozilla.org/firefox/mac)
|
||||
- [:simple-linux: Linux](https://www.mozilla.org/firefox/linux)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.mozilla.firefox)
|
||||
- [:fontawesome-brands-windows: Windows](https://mozilla.org/firefox/windows)
|
||||
- [:simple-apple: macOS](https://mozilla.org/firefox/mac)
|
||||
- [:simple-linux: Linux](https://mozilla.org/firefox/linux)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.mozilla.firefox)
|
||||
|
||||
!!! warning
|
||||
Firefox includes a unique [download token](https://bugzilla.mozilla.org/show_bug.cgi?id=1677497#c0) in downloads from Mozilla's website and uses telemetry in Firefox to send the token. The token is **not** included in releases from the [Mozilla FTP](https://ftp.mozilla.org/pub/firefox/releases/).
|
||||
</details>
|
||||
|
||||
### Recommended Configuration
|
||||
</div>
|
||||
|
||||
These options can be found in :material-menu: → **Settings**
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Firefox includes a unique [download token](https://bugzilla.mozilla.org/show_bug.cgi?id=1677497#c0) in downloads from Mozilla's website and uses telemetry in Firefox to send the token. The token is **not** included in releases from the [Mozilla FTP](https://ftp.mozilla.org/pub/firefox/releases/).
|
||||
|
||||
</div>
|
||||
|
||||
### Recommended Firefox Configuration
|
||||
|
||||
These options can be found in :material-menu: → **Settings**.
|
||||
|
||||
#### Search
|
||||
|
||||
- [ ] Uncheck **Provide search suggestions**
|
||||
- [ ] Uncheck **Show search suggestions**
|
||||
|
||||
Search suggestion features may not be available in your region.
|
||||
|
||||
Search suggestions send everything you type in the address bar to the default search engine, regardless of whether you submit an actual search. Disabling search suggestions allows you to more precisely control what data you send to your search engine provider.
|
||||
|
||||
##### Firefox Suggest (US only)
|
||||
|
||||
[Firefox Suggest](https://support.mozilla.org/kb/firefox-suggest) is a feature similar to search suggestions which is only available in the US. We recommend disabling it for the same reason we recommend disabling search suggestions. If you don't see these options under the **Address Bar** header, you do not have the new experience and can ignore these changes.
|
||||
|
||||
- [ ] Uncheck **Suggestions from Firefox**
|
||||
- [ ] Uncheck **Suggestions from sponsors**
|
||||
|
||||
#### Privacy & Security
|
||||
|
||||
##### Enhanced Tracking Protection
|
||||
@ -145,13 +166,6 @@ Search suggestions send everything you type in the address bar to the default se
|
||||
|
||||
This protects you by blocking social media trackers, fingerprinting scripts (note that this does not protect you from *all* fingerprinting), cryptominers, cross-site tracking cookies, and some other tracking content. ETP protects against many common threats, but it does not block all tracking avenues because it is designed to have minimal to no impact on site usability.
|
||||
|
||||
##### Firefox Suggest (US only)
|
||||
|
||||
[Firefox Suggest](https://support.mozilla.org/en-US/kb/firefox-suggest) is a feature similar to search suggestions which is only available in the US. We recommend disabling it for the same reason we recommend disabling search suggestions. If you don't see these options under the **Address Bar** header, you do not have the new experience and can ignore these changes.
|
||||
|
||||
- [ ] Uncheck **Suggestions from the web**
|
||||
- [ ] Uncheck **Suggestions from sponsors**
|
||||
|
||||
##### Sanitize on Close
|
||||
|
||||
If you want to stay logged in to particular sites, you can allow exceptions in **Cookies and Site Data** → **Manage Exceptions...**
|
||||
@ -168,124 +182,165 @@ This protects you from persistent cookies, but does not protect you against cook
|
||||
|
||||
> Firefox sends data about your Firefox version and language; device operating system and hardware configuration; memory, basic information about crashes and errors; outcome of automated processes like updates, safebrowsing, and activation to us. When Firefox sends data to us, your IP address is temporarily collected as part of our server logs.
|
||||
|
||||
Additionally, the Firefox Accounts service collects [some technical data](https://www.mozilla.org/en-US/privacy/firefox/#firefox-accounts). If you use a Firefox Account you can opt-out:
|
||||
Additionally, the Mozilla Accounts service collects [some technical data](https://mozilla.org/privacy/mozilla-accounts). If you use a Mozilla Account you can opt-out:
|
||||
|
||||
1. Open your [profile settings on accounts.firefox.com](https://accounts.firefox.com/settings#data-collection)
|
||||
2. Uncheck **Data Collection and Use** > **Help improve Firefox Accounts**
|
||||
|
||||
##### Website Advertising Preferences
|
||||
|
||||
- [ ] Uncheck **Allow websites to perform privacy-preserving ad measurement**
|
||||
|
||||
With the release of Firefox 128, a new setting for [privacy-preserving attribution](https://support.mozilla.org/kb/privacy-preserving-attribution) (PPA) has been added and [enabled by default](https://blog.privacyguides.org/2024/07/14/mozilla-disappoints-us-yet-again-2). PPA allows advertisers to use your web browser to measure the effectiveness of web campaigns, instead of using traditional JavaScript-based tracking. We consider this behavior to be outside the scope of a user agent's responsibilities, and the fact that it is disabled by default in Arkenfox is an additional indicator for disabling this feature.
|
||||
|
||||
##### HTTPS-Only Mode
|
||||
|
||||
- [x] Select **Enable HTTPS-Only Mode in all windows**
|
||||
|
||||
This prevents you from unintentionally connecting to a website in plain-text HTTP. Sites without HTTPS are uncommon nowadays, so this should have little to no impact on your day to day browsing.
|
||||
|
||||
##### DNS over HTTPS
|
||||
|
||||
If you use a [DNS over HTTPS provider](dns.md):
|
||||
|
||||
- [x] Select **Max Protection** and choose a suitable provider
|
||||
|
||||
Max Protection enforces the use of DNS over HTTPS, and a security warning will show if Firefox can’t connect to your secure DNS resolver, or if your secure DNS resolver says that records for the domain you are trying to access do not exist. This stops the network you're connected to from secretly downgrading your DNS security.
|
||||
|
||||
#### Sync
|
||||
|
||||
[Firefox Sync](https://hacks.mozilla.org/2018/11/firefox-sync-privacy/) allows your browsing data (history, bookmarks, etc.) to be accessible on all your devices and protects it with E2EE.
|
||||
[Firefox Sync](https://hacks.mozilla.org/2018/11/firefox-sync-privacy) allows your browsing data (history, bookmarks, etc.) to be accessible on all your devices and protects it with E2EE.
|
||||
|
||||
### Arkenfox (advanced)
|
||||
|
||||
!!! tip "Use Mullvad Browser for advanced anti-fingerprinting"
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Use Mullvad Browser for advanced anti-fingerprinting</p>
|
||||
|
||||
[Mullvad Browser](#mullvad-browser) provides the same anti-fingerprinting protections as Arkenfox out of the box, and does not require the use of Mullvad's VPN to benefit from these protections. Coupled with a VPN, Mullvad Browser can thwart more advanced tracking scripts which Arkenfox cannot. Arkenfox still has the advantage of being much more flexible, and allowing per-site exceptions for websites which you need to stay logged in to.
|
||||
[Mullvad Browser](#mullvad-browser) provides the same anti-fingerprinting protections as Arkenfox out of the box, and does not require the use of Mullvad's VPN to benefit from these protections. Coupled with a VPN, Mullvad Browser can thwart more advanced tracking scripts which Arkenfox cannot. Arkenfox still has the advantage of being much more flexible, and allowing per-site exceptions for websites which you need to stay logged in to.
|
||||
|
||||
The [Arkenfox project](https://github.com/arkenfox/user.js) provides a set of carefully considered options for Firefox. If you [decide](https://github.com/arkenfox/user.js/wiki/1.1-To-Arkenfox-or-Not) to use Arkenfox, a [few options](https://github.com/arkenfox/user.js/wiki/3.2-Overrides-[Common]) are subjectively strict and/or may cause some websites to not work properly - [which you can easily change](https://github.com/arkenfox/user.js/wiki/3.1-Overrides) to suit your needs. We **strongly recommend** reading through their full [wiki](https://github.com/arkenfox/user.js/wiki). Arkenfox also enables [container](https://support.mozilla.org/en-US/kb/containers#w_for-advanced-users) support.
|
||||
</div>
|
||||
|
||||
The [Arkenfox project](https://github.com/arkenfox/user.js) provides a set of carefully considered options for Firefox. If you [decide](https://github.com/arkenfox/user.js/wiki/1.1-To-Arkenfox-or-Not) to use Arkenfox, a [few options](https://github.com/arkenfox/user.js/wiki/3.2-Overrides-[Common]) are subjectively strict and/or may cause some websites to not work properly—which you can [easily change](https://github.com/arkenfox/user.js/wiki/3.1-Overrides) to suit your needs. We **strongly recommend** reading through their full [wiki](https://github.com/arkenfox/user.js/wiki). Arkenfox also enables [container](https://support.mozilla.org/kb/containers#w_for-advanced-users) support.
|
||||
|
||||
Arkenfox only aims to thwart basic or naive tracking scripts through canvas randomization and Firefox's built-in fingerprint resistance configuration settings. It does not aim to make your browser blend in with a large crowd of other Arkenfox users in the same way Mullvad Browser or Tor Browser do, which is the only way to thwart advanced fingerprint tracking scripts. Remember you can always use multiple browsers, for example, you could consider using Firefox+Arkenfox for a few sites that you want to stay logged in on or otherwise trust, and Mullvad Browser for general browsing.
|
||||
|
||||
## Brave
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation annotate" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Brave Browser** includes a built-in content blocker and [privacy features](https://brave.com/privacy-features/), many of which are enabled by default.
|
||||
**Brave Browser** includes a built-in content blocker and [privacy features](https://brave.com/privacy-features), many of which are enabled by default.
|
||||
|
||||
Brave is built upon the Chromium web browser project, so it should feel familiar and have minimal website compatibility issues.
|
||||
Brave is built upon the Chromium web browser project, so it should feel familiar and have minimal website compatibility issues.
|
||||
|
||||
[:octicons-home-16: Homepage](https://brave.com/){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](https://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://brave.com/privacy/browser/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.brave.com/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/brave/brave-browser){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://brave.com){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](https://brave4u7jddbv7cyviptqjc7jusxh72uik7zt6adtckl5f4nwy2v72qd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://brave.com/privacy/browser){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.brave.com){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/brave/brave-browser){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads annotate
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-github: GitHub](https://github.com/brave/brave-browser/releases)
|
||||
- [:simple-windows11: Windows](https://brave.com/download/)
|
||||
- [:simple-apple: macOS](https://brave.com/download/)
|
||||
- [:simple-linux: Linux](https://brave.com/linux/) (1)
|
||||
- [:simple-github: GitHub](https://github.com/brave/brave-browser/releases)
|
||||
- [:fontawesome-brands-windows: Windows](https://brave.com/download)
|
||||
- [:simple-apple: macOS](https://brave.com/download)
|
||||
- [:simple-linux: Linux](https://brave.com/linux)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/com.brave.Browser)
|
||||
|
||||
1. We advise against using the Flatpak version of Brave, as it replaces Chromium's sandbox with Flatpak's, which is less effective. Additionally, the package is not maintained by Brave Software, Inc.
|
||||
</details>
|
||||
|
||||
### Recommended Configuration
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Brave adds a "[referral code](https://github.com/brave/brave-browser/wiki/Brave%E2%80%99s-Use-of-Referral-Codes)" to the file name in downloads from the Brave website, which is used to track which source the browser was downloaded from, for example `BRV002` in a download named `Brave-Browser-BRV002.pkg`. The installer will then ping Brave's server with the referral code at the end of the installation process. If you're concerned about this, you can rename the installer file before opening it.
|
||||
|
||||
</div>
|
||||
|
||||
### Recommended Brave Configuration
|
||||
|
||||
These options can be found in :material-menu: → **Settings**.
|
||||
|
||||
#### Settings
|
||||
#### Shields
|
||||
|
||||
##### Shields
|
||||
|
||||
Brave includes some anti-fingerprinting measures in its [Shields](https://support.brave.com/hc/en-us/articles/360022973471-What-is-Shields-) feature. We suggest configuring these options [globally](https://support.brave.com/hc/en-us/articles/360023646212-How-do-I-configure-global-and-site-specific-Shields-settings-) across all pages that you visit.
|
||||
Brave includes some anti-fingerprinting measures in its [Shields](https://support.brave.com/hc/articles/360022973471-What-is-Shields) feature. We suggest configuring these options [globally](https://support.brave.com/hc/articles/360023646212-How-do-I-configure-global-and-site-specific-Shields-settings) across all pages that you visit.
|
||||
|
||||
Shields' options can be downgraded on a per-site basis as needed, but by default we recommend setting the following:
|
||||
|
||||
<div class="annotate" markdown>
|
||||
|
||||
- [x] Select **Prevent sites from fingerprinting me based on my language preferences**
|
||||
- [x] Select **Aggressive** under Trackers & ads blocking
|
||||
- [x] Select **Aggressive** under *Trackers & ads blocking*
|
||||
|
||||
??? warning "Use default filter lists"
|
||||
Brave allows you to select additional content filters within the internal `brave://adblock` page. We advise against using this feature; instead, keep the default filter lists. Using extra lists will make you stand out from other Brave users and may also increase attack surface if there is an exploit in Brave and a malicious rule is added to one of the lists you use.
|
||||
<details class="warning" markdown>
|
||||
<summary>Use default filter lists</summary>
|
||||
|
||||
- [x] Select **Strict** under **Upgrade connections to HTTPS**
|
||||
Brave allows you to select additional content filters within the internal `brave://adblock` page. We advise against using this feature; instead, keep the default filter lists. Using extra lists will make you stand out from other Brave users and may also increase attack surface if there is an exploit in Brave and a malicious rule is added to one of the lists you use.
|
||||
|
||||
</details>
|
||||
|
||||
- [x] Select **Strict** under *Upgrade connections to HTTPS*
|
||||
- [x] (Optional) Select **Block Scripts** (1)
|
||||
- [x] Select **Strict, may break sites** under Block fingerprinting
|
||||
- [x] Check **Block fingerprinting**
|
||||
- [x] Select **Block third-party cookies**
|
||||
- [x] Check **Forget me when I close this site** (2)
|
||||
- [ ] Uncheck all social media components
|
||||
|
||||
</div>
|
||||
|
||||
1. This option provides functionality similar to uBlock Origin's advanced [blocking modes](https://github.com/gorhill/uBlock/wiki/Blocking-mode) or the [NoScript](https://noscript.net/) extension.
|
||||
1. This option provides functionality similar to uBlock Origin's advanced [blocking modes](https://github.com/gorhill/uBlock/wiki/Blocking-mode).
|
||||
2. If you wish to stay logged in to a particular site you visit often, you can set exceptions on a per-site basis by clicking on the Shield icon in the address bar.
|
||||
|
||||
##### Social media blocking
|
||||
|
||||
- [ ] Uncheck all social media components
|
||||
|
||||
##### Privacy and security
|
||||
#### Privacy and security
|
||||
|
||||
<div class="annotate" markdown>
|
||||
|
||||
- [x] Select **Disable non-proxied UDP** under [WebRTC IP Handling Policy](https://support.brave.com/hc/en-us/articles/360017989132-How-do-I-change-my-Privacy-Settings-#webrtc)
|
||||
- [x] Select **Don't allow sites to use the V8 optimizer** under *Security* → *Manage V8 security* (1)
|
||||
- [x] Select **Automatically remove permissions from unused sites** under *Sites and Shields Settings*
|
||||
- [x] Select **Disable non-proxied UDP** under [WebRTC IP Handling Policy](https://support.brave.com/hc/articles/360017989132-How-do-I-change-my-Privacy-Settings#webrtc)
|
||||
- [ ] Uncheck **Use Google services for push messaging**
|
||||
- [ ] Uncheck **Allow privacy-preserving product analytics (P3A)**
|
||||
- [ ] Uncheck **Automatically send daily usage ping to Brave**
|
||||
- [ ] Uncheck **Automatically send diagnostic reports**
|
||||
- [ ] Uncheck **Private window with Tor** (1)
|
||||
|
||||
!!! tip "Sanitizing on Close"
|
||||
|
||||
- [x] Select **Clear cookies and site data when you close all windows** in the *Cookies and other site data* menu
|
||||
|
||||
If you wish to stay logged in to a particular site you visit often, you can set exceptions on a per-site basis under the *Customized behaviors* section.
|
||||
- [x] Select **Auto-redirect AMP pages**
|
||||
- [x] Select **Auto-redirect tracking URLs**
|
||||
- [x] Select **Prevent sites from fingerprinting me based on my language preferences**
|
||||
|
||||
</div>
|
||||
|
||||
1. Brave is **not** as resistant to fingerprinting as the Tor Browser and far fewer people use Brave with Tor, so you will stand out. Where [strong anonymity is required](https://support.brave.com/hc/en-us/articles/360018121491-What-is-a-Private-Window-with-Tor-Connectivity-) use the [Tor Browser](tor.md#tor-browser).
|
||||
1. Disabling the V8 optimizer reduces your attack surface by disabling [*some*](https://grapheneos.social/@GrapheneOS/112708049232710156) parts of JavaScript Just-In-Time (JIT) compilation.
|
||||
|
||||
##### Extensions
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Sanitizing on close</p>
|
||||
|
||||
Disable built-in extensions you do not use in **Extensions**
|
||||
- [x] Select **Delete data sites have saved to your device when you close all windows** under *Sites and Shields Settings* → *Content* → *Additional content settings* → *On-device site data*.
|
||||
|
||||
- [ ] Uncheck **Hangouts**
|
||||
- [ ] Uncheck **WebTorrent**
|
||||
If you wish to stay logged in to a particular site you visit often, you can set exceptions on a per-site basis under the *Customized behaviors* section.
|
||||
|
||||
##### Web3
|
||||
</div>
|
||||
|
||||
Brave's Web3 features can potentially add to your browser fingerprint and attack surface. Unless you use any of features, they should be disabled.
|
||||
##### Tor windows
|
||||
|
||||
- Select **Extensions (no fallback)** under Default Ethereum wallet and Default Solana wallet
|
||||
- Set **Method to resolve IPFS resources** to **Disabled**
|
||||
[**Private Window with Tor**](https://support.brave.com/hc/articles/360018121491-What-is-a-Private-Window-with-Tor-Connectivity) allows you to route your traffic through the Tor network in Private Windows and access .onion services, which may be useful in some cases. However, Brave is **not** as resistant to fingerprinting as the Tor Browser and far fewer people use Brave with Tor, so you will stand out. If your threat model requires strong anonymity, use the [Tor Browser](tor.md#tor-browser).
|
||||
|
||||
##### System
|
||||
##### Data Collection
|
||||
|
||||
- [ ] Uncheck **Allow privacy-preserving product analytics (P3A)**
|
||||
- [ ] Uncheck **Automatically send daily usage ping to Brave**
|
||||
- [ ] Uncheck **Automatically send diagnostic reports**
|
||||
|
||||
#### Web3
|
||||
|
||||
Brave's Web3 features can potentially add to your browser fingerprint and attack surface. Unless you use any of these features, they should be disabled.
|
||||
|
||||
- Select **Extensions (no fallback)** under *Default Ethereum wallet*
|
||||
- Select **Extensions (no fallback)** under *Default Solana wallet*
|
||||
- Set *Method to resolve IPFS resources* to **Disabled**
|
||||
|
||||
#### Extensions
|
||||
|
||||
- [ ] Uncheck all built-in extensions you don't use
|
||||
|
||||
#### System
|
||||
|
||||
<div class="annotate" markdown>
|
||||
|
||||
@ -295,82 +350,43 @@ Brave's Web3 features can potentially add to your browser fingerprint and attack
|
||||
|
||||
1. This option is not present on all platforms.
|
||||
|
||||
#### Sync
|
||||
#### Brave Sync
|
||||
|
||||
[Brave Sync](https://support.brave.com/hc/en-us/articles/360059793111-Understanding-Brave-Sync) allows your browsing data (history, bookmarks, etc.) to be accessible on all your devices without requiring an account and protects it with E2EE.
|
||||
[Brave Sync](https://support.brave.com/hc/articles/360059793111-Understanding-Brave-Sync) allows your browsing data (history, bookmarks, etc.) to be accessible on all your devices without requiring an account and protects it with E2EE.
|
||||
|
||||
#### Brave Rewards and Wallet
|
||||
|
||||
**Brave Rewards** lets you recieve Basic Attention Token (BAT) cryptocurrency for performing certain actions within Brave. It relies on a custodial account and KYC from a select number of providers. We do not recommend BAT as a [private cryptocurrency](cryptocurrency.md), nor do we recommend using a [custodial wallet](advanced/payments.md#other-coins-bitcoin-ethereum-etc), so we would discourage using this feature.
|
||||
**Brave Rewards** lets you receive Basic Attention Token (BAT) cryptocurrency for performing certain actions within Brave. It relies on a custodial account and KYC from a select number of providers. We do not recommend BAT as a [private cryptocurrency](cryptocurrency.md), nor do we recommend using a [custodial wallet](advanced/payments.md#wallet-custody), so we would discourage using this feature.
|
||||
|
||||
**Brave Wallet** operates locally on your computer, but does not support any private cryptocurrencies, so we would discourage using this feature as well.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
In general, we recommend keeping your browser extensions to a minimum to decrease your attack surface; they have privileged access within your browser, require you to trust the developer, can make you [stand out](https://en.wikipedia.org/wiki/Device_fingerprint#Browser_fingerprint), and [weaken](https://groups.google.com/a/chromium.org/g/chromium-extensions/c/0ei-UCHNm34/m/lDaXwQhzBAAJ) site isolation. However, uBlock Origin may prove useful if you value content blocking functionality.
|
||||
|
||||
### uBlock Origin
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**uBlock Origin** is a popular content blocker that could help you block ads, trackers, and fingerprinting scripts.
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/gorhill/uBlock#readme){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://github.com/gorhill/uBlock/wiki/Privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/gorhill/uBlock/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/gorhill/uBlock){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/ublock-origin/)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm)
|
||||
- [:simple-microsoftedge: Edge](https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak)
|
||||
|
||||
We suggest following the [developer's documentation](https://github.com/gorhill/uBlock/wiki/Blocking-mode) and picking one of the "modes". Additional filter lists can impact performance and [may increase attack surface](https://portswigger.net/research/ublock-i-exfiltrate-exploiting-ad-blockers-with-css).
|
||||
|
||||
##### Other lists
|
||||
|
||||
These are some other [filter lists](https://github.com/gorhill/uBlock/wiki/Dashboard:-Filter-lists) that you may want to consider adding:
|
||||
|
||||
- [x] Check **Privacy** > **AdGuard URL Tracking Protection**
|
||||
- Add [Actually Legitimate URL Shortener Tool](https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt)
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
### Minimum Requirements
|
||||
|
||||
- Must be open-source software.
|
||||
- Supports automatic updates.
|
||||
- Receives engine updates in 0-1 days from upstream release.
|
||||
- Available on Linux, macOS, and Windows.
|
||||
- Any changes required to make the browser more privacy-respecting should not negatively impact user experience.
|
||||
- Blocks third-party cookies by default.
|
||||
- Supports [state partitioning](https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning) to mitigate cross-site tracking.[^1]
|
||||
|
||||
[^1]: Brave's implementation is detailed at [Brave Privacy Updates: Partitioning network-state for privacy](https://brave.com/privacy-updates/14-partitioning-network-state/).
|
||||
- Must support automatic updates.
|
||||
- Must receive engine updates in 0-1 days from upstream release.
|
||||
- Must be available on Linux, macOS, and Windows.
|
||||
- Any changes required to make the browser more privacy-respecting must not negatively impact user experience.
|
||||
- Must block third-party cookies by default.
|
||||
- Must support [state partitioning](https://developer.mozilla.org/docs/Web/Privacy/State_Partitioning) to mitigate cross-site tracking.[^1]
|
||||
|
||||
### Best-Case
|
||||
|
||||
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
|
||||
|
||||
- Includes built-in content blocking functionality.
|
||||
- Supports cookie compartmentalization (à la [Multi-Account Containers](https://support.mozilla.org/en-US/kb/containers)).
|
||||
- Supports Progressive Web Apps.
|
||||
PWAs enable you to install certain websites as if they were native apps on your computer. This can have advantages over installing Electron-based apps, because you benefit from your browser's regular security updates.
|
||||
- Does not include add-on functionality (bloatware) that does not impact user privacy.
|
||||
- Does not collect telemetry by default.
|
||||
- Provides open-source sync server implementation.
|
||||
- Defaults to a [private search engine](search-engines.md).
|
||||
- Should include built-in content blocking functionality.
|
||||
- Should support cookie compartmentalization (à la [Multi-Account Containers](https://support.mozilla.org/kb/containers)).
|
||||
- Should support Progressive Web Apps.
|
||||
PWAs enable you to install certain websites as if they were native apps on your computer. This can have advantages over installing Electron-based apps, because PWAs benefit from your browser's regular security updates.
|
||||
- Should not include add-on functionality (bloatware) that does not impact user privacy.
|
||||
- Should not collect telemetry by default.
|
||||
- Should provide an open-source sync server implementation.
|
||||
- Should default to a [private search engine](search-engines.md).
|
||||
|
||||
### Extension Criteria
|
||||
|
||||
- Must not replicate built-in browser or OS functionality.
|
||||
- Must directly impact user privacy, i.e. must not simply provide information.
|
||||
[^1]: Brave's implementation is detailed at [Brave Privacy Updates: Partitioning network-state for privacy](https://brave.com/privacy-updates/14-partitioning-network-state).
|
||||
|
209
docs/desktop.md
@ -12,45 +12,57 @@ Linux distributions are commonly recommended for privacy protection and software
|
||||
|
||||
### Fedora Workstation
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Fedora Workstation** is our recommended distribution for people new to Linux. Fedora generally adopts newer technologies before other distributions e.g., [Wayland](https://wayland.freedesktop.org/), [PipeWire](https://pipewire.org). These new technologies often come with improvements in security, privacy, and usability in general.
|
||||
**Fedora Workstation** is our recommended distribution for people new to Linux. Fedora generally adopts newer technologies (e.g., [Wayland](https://wayland.freedesktop.org) and [PipeWire](https://pipewire.org)) before other distributions. These new technologies often come with improvements in security, privacy, and usability in general.
|
||||
|
||||
[:octicons-home-16: Homepage](https://fedoraproject.org/workstation/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://docs.fedoraproject.org/en-US/docs/){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://whatcanidoforfedora.org/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://fedoraproject.org/workstation){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://docs.fedoraproject.org/en-US/docs){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://whatcanidoforfedora.org){ .card-link title=Contribute }
|
||||
|
||||
Fedora has a semi-rolling release cycle. While some packages like [GNOME](https://www.gnome.org) are frozen until the next Fedora release, most packages (including the kernel) are updated frequently throughout the lifespan of the release. Each Fedora release is supported for one year, with a new version released every 6 months.
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Fedora has a semi-rolling release cycle. While some packages like [GNOME](https://gnome.org) are frozen until the next Fedora release, most packages (including the kernel) are updated frequently throughout the lifespan of the release. Each Fedora release is supported for one year, with a new version released every 6 months.
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**openSUSE Tumbleweed** is a stable rolling release distribution.
|
||||
**openSUSE Tumbleweed** is a stable rolling release distribution.
|
||||
|
||||
openSUSE Tumbleweed has a [transactional update](https://kubic.opensuse.org/blog/2018-04-04-transactionalupdates/) system that uses [Btrfs](https://en.wikipedia.org/wiki/Btrfs) and [Snapper](https://en.opensuse.org/openSUSE:Snapper_Tutorial) to ensure that snapshots can be rolled back should there be a problem.
|
||||
openSUSE Tumbleweed uses [Btrfs](https://en.wikipedia.org/wiki/Btrfs) and [Snapper](https://en.opensuse.org/openSUSE:Snapper_Tutorial) to ensure that snapshots can be rolled back should there be a problem.
|
||||
|
||||
[:octicons-home-16: Homepage](https://get.opensuse.org/tumbleweed/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://doc.opensuse.org/){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://shop.opensuse.org/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://get.opensuse.org/tumbleweed){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://doc.opensuse.org){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://shop.opensuse.org){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Tumbleweed follows a rolling release model where each update is released as a snapshot of the distribution. When you upgrade your system, a new snapshot is downloaded. Each snapshot is run through a series of automated tests by [openQA](https://openqa.opensuse.org) to ensure its quality.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Arch Linux** is a lightweight, do-it-yourself (DIY) distribution meaning that you only get what you install. For more information see their [FAQ](https://wiki.archlinux.org/title/Frequently_asked_questions).
|
||||
**Arch Linux** is a lightweight, do-it-yourself (DIY) distribution, meaning that you only get what you install. For more information see their [FAQ](https://wiki.archlinux.org/title/Frequently_asked_questions).
|
||||
|
||||
[:octicons-home-16: Homepage](https://archlinux.org/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://wiki.archlinux.org/){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://archlinux.org/donate/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://archlinux.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://wiki.archlinux.org){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://archlinux.org/donate){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Arch Linux has a rolling release cycle. There is no fixed release schedule and packages are updated very frequently.
|
||||
|
||||
@ -58,107 +70,136 @@ Being a DIY distribution, you are [expected to set up and maintain](os/linux-ove
|
||||
|
||||
A large portion of [Arch Linux’s packages](https://reproducible.archlinux.org) are [reproducible](https://reproducible-builds.org).
|
||||
|
||||
## Immutable Distributions
|
||||
## Atomic Distributions
|
||||
|
||||
### Fedora Silverblue
|
||||
**Atomic distributions** (sometimes also referred to as **immutable distributions**) are operating systems which handle package installation and updates by layering changes atop your core system image, rather than by directly modifying the system. Advantages of atomic distros include increased stability and the ability to easily roll back updates. See [*Traditional vs. Atomic Updates*](os/linux-overview.md#traditional-vs-atomic-updates) for more info.
|
||||
|
||||
!!! recommendation
|
||||
### Fedora Atomic Desktops
|
||||
|
||||
{ align=right }
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
**Fedora Silverblue** and **Fedora Kinoite** are immutable variants of Fedora with a strong focus on container workflows. Silverblue comes with the [GNOME](https://www.gnome.org/) desktop environment while Kinoite comes with [KDE](https://kde.org/). Silverblue and Kinoite follow the same release schedule as Fedora Workstation, benefiting from the same fast updates and staying very close to upstream.
|
||||
{ align=right }
|
||||
|
||||
[:octicons-home-16: Homepage](https://fedoraproject.org/silverblue/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://docs.fedoraproject.org/en-US/fedora-silverblue/){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://whatcanidoforfedora.org/){ .card-link title=Contribute }
|
||||
**Fedora Atomic Desktops** are variants of Fedora which use the `rpm-ostree` package manager and have a strong focus on containerized workflows and Flatpak for desktop applications. All of these variants follow the same release schedule as Fedora Workstation, benefiting from the same fast updates and staying very close to upstream.
|
||||
|
||||
Silverblue (and Kinoite) differ from Fedora Workstation as they replace the [DNF](https://docs.fedoraproject.org/en-US/quick-docs/dnf/) package manager with a much more advanced alternative called [`rpm-ostree`](https://docs.fedoraproject.org/en-US/fedora/latest/system-administrators-guide/package-management/rpm-ostree/). The `rpm-ostree` package manager works by downloading a base image for the system, then overlaying packages over it in a [git](https://en.wikipedia.org/wiki/Git)-like commit tree. When the system is updated, a new base image is downloaded and the overlays will be applied to that new image.
|
||||
[:octicons-home-16: Homepage](https://fedoraproject.org/atomic-desktops){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://docs.fedoraproject.org/en-US/emerging){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://whatcanidoforfedora.org){ .card-link title=Contribute }
|
||||
|
||||
After the update is complete you will reboot the system into the new deployment. `rpm-ostree` keeps two deployments of the system so that you can easily rollback if something breaks in the new deployment. There is also the option to pin more deployments as needed.
|
||||
</details>
|
||||
|
||||
[Flatpak](https://www.flatpak.org) is the primary package installation method on these distributions, as `rpm-ostree` is only meant to overlay packages that cannot stay inside of a container on top of the base image.
|
||||
</div>
|
||||
|
||||
As an alternative to Flatpaks, there is the option of [Toolbox](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/) to create [Podman](https://podman.io) containers with a shared home directory with the host operating system and mimic a traditional Fedora environment, which is a [useful feature](https://containertoolbx.org) for the discerning developer.
|
||||
[Fedora Atomic Desktops](https://fedoramagazine.org/introducing-fedora-atomic-desktops) come in a variety of flavors depending on the desktop environment you prefer. As with the recommendation to avoid X11 in our [criteria](#criteria) for Linux distributions, we recommend avoiding flavors that support only the legacy X11 window system.
|
||||
|
||||
These operating systems differ from Fedora Workstation as they replace the [DNF](https://docs.fedoraproject.org/en-US/quick-docs/dnf) package manager with a much more advanced alternative called [`rpm-ostree`](https://docs.fedoraproject.org/en-US/fedora/latest/system-administrators-guide/package-management/rpm-ostree). The `rpm-ostree` package manager works by downloading a base image for the system, then overlaying packages over it in a [git](https://en.wikipedia.org/wiki/Git)-like commit tree. When the system is updated, a new base image is downloaded and the overlays will be applied to that new image.
|
||||
|
||||
After the update is complete, you will reboot the system into the new deployment. `rpm-ostree` keeps two deployments of the system so that you can easily roll back if something breaks in the new deployment. There is also the option to pin more deployments as needed.
|
||||
|
||||
[Flatpak](https://flatpak.org) is the primary package installation method on these distributions, as `rpm-ostree` is only meant to overlay packages that cannot stay inside of a container on top of the base image.
|
||||
|
||||
As an alternative to Flatpaks, there is the option of [Toolbx](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox) to create [Podman](https://podman.io) containers which mimic a traditional Fedora environment, a [useful feature](https://containertoolbx.org) for the discerning developer. These containers share a home directory with the host operating system.
|
||||
|
||||
### NixOS
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
NixOS is an independent distribution based on the Nix package manager with a focus on reproducibility and reliability.
|
||||
NixOS is an independent distribution based on the Nix package manager with a focus on reproducibility and reliability.
|
||||
|
||||
[:octicons-home-16: Homepage](https://nixos.org/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://nixos.org/learn.html){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://nixos.org/donate.html){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://nixos.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://nixos.org/learn.html){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://nixos.org/donate.html){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
NixOS’s package manager keeps every version of every package in a different folder in the **Nix store**. Due to this you can have different versions of the same package installed on your system. After the package contents have been written to the folder, the folder is made read-only.
|
||||
|
||||
NixOS also provides atomic updates; first it downloads (or builds) the packages and files for the new system generation and then switches to it. There are different ways to switch to a new generation; you can tell NixOS to activate it after reboot or you can switch to it at runtime. You can also *test* the new generation by switching to it at runtime, but not setting it as the current system generation. If something in the update process breaks, you can just reboot and automatically and return to a working version of your system.
|
||||
NixOS also provides atomic updates. It first downloads (or builds) the packages and files for the new system generation and then switches to it. There are different ways to switch to a new generation: you can tell NixOS to activate it after reboot or you can switch to it at runtime. You can also *test* the new generation by switching to it at runtime, but not setting it as the current system generation. If something in the update process breaks, you can just reboot and automatically and return to a working version of your system.
|
||||
|
||||
Nix the package manager uses a purely functional language - which is also called Nix - to define packages.
|
||||
The Nix package manager uses a purely functional language—which is also called Nix—to define packages.
|
||||
|
||||
[Nixpkgs](https://github.com/nixos/nixpkgs) (the main source of packages) are contained in a single GitHub repository. You can also define your own packages in the same language and then easily include them in your config.
|
||||
|
||||
Nix is a source-based package manager; if there’s no pre-built available in the binary cache, Nix will just build the package from source using its definition. It builds each package in a sandboxed *pure* environment, which is as independent of the host system as possible, thus making binaries reproducible.
|
||||
Nix is a source-based package manager; if there’s no pre-built available in the binary cache, Nix will just build the package from source using its definition. It builds each package in a sandboxed *pure* environment, which is as independent of the host system as possible. Binaries built with this method are reproducible, which can be useful as a safeguard against [:material-package-variant-closed-remove: Supply Chain Attacks](basics/common-threats.md#attacks-against-certain-organizations){ .pg-viridian }.
|
||||
|
||||
## Anonymity-Focused Distributions
|
||||
|
||||
### Whonix
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Whonix** is based on [Kicksecure](#kicksecure), a security-focused fork of Debian. It aims to provide privacy, security, and anonymity on the internet. Whonix is best used in conjunction with [Qubes OS](#qubes-os).
|
||||
**Whonix** is based on [Kicksecure](#kicksecure), a security-focused fork of Debian. It aims to provide privacy, security, and anonymity on the internet. Whonix is best used in conjunction with [Qubes OS](#qubes-os).
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.whonix.org/){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-info-16:](https://www.whonix.org/wiki/Documentation){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://www.whonix.org/wiki/Donate){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://whonix.org){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-info-16:](https://whonix.org/wiki/Documentation){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://whonix.org/wiki/Donate){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Whonix is meant to run as two virtual machines: a “Workstation” and a Tor “Gateway.” All communications from the Workstation must go through the Tor gateway. This means that even if the Workstation is compromised by malware of some kind, the true IP address remains hidden.
|
||||
|
||||
Some of its features include Tor Stream Isolation, [keystroke anonymization](https://www.whonix.org/wiki/Keystroke_Deanonymization#Kloak), [encrypted swap](https://github.com/Whonix/swap-file-creator), and a hardened memory allocator.
|
||||
Some of its features include Tor Stream Isolation, [keystroke anonymization](https://whonix.org/wiki/Keystroke_Deanonymization#Kloak), [encrypted swap](https://github.com/Whonix/swap-file-creator), and a hardened memory allocator. Future versions of Whonix will likely include [full system AppArmor policies](https://github.com/roddhjav/apparmor.d) and a [sandboxed app launcher](https://whonix.org/wiki/Sandbox-app-launcher) to fully confine all processes on the system.
|
||||
|
||||
Future versions of Whonix will likely include [full system AppArmor policies](https://github.com/Whonix/apparmor-profile-everything) and a [sandbox app launcher](https://www.whonix.org/wiki/Sandbox-app-launcher) to fully confine all processes on the system.
|
||||
|
||||
Whonix is best used [in conjunction with Qubes](https://www.whonix.org/wiki/Qubes/Why_use_Qubes_over_other_Virtualizers), Qubes-Whonix has various [disadvantages](https://forums.whonix.org/t/qubes-whonix-security-disadvantages-help-wanted/8581) when compared to other hypervisors.
|
||||
Whonix is best used [in conjunction with Qubes](https://whonix.org/wiki/Qubes/Why_use_Qubes_over_other_Virtualizers). We have a [recommended guide](os/qubes-overview.md#connecting-to-tor-via-a-vpn) on configuring Whonix in conjunction with a VPN ProxyVM in Qubes to hide your Tor activities from your ISP.
|
||||
|
||||
### Tails
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Tails** is a live operating system based on Debian that routes all communications through Tor, which can boot on on almost any computer from a DVD, USB stick, or SD card installation. It uses [Tor](tor.md) to preserve privacy and anonymity while circumventing censorship, and it leaves no trace of itself on the computer it is used on after it is powered off.
|
||||
**Tails** is a live operating system based on Debian that routes all communications through Tor, which can boot on on almost any computer from a DVD, USB stick, or SD card installation. It uses [Tor](tor.md) to preserve privacy and anonymity while circumventing censorship, and it leaves no trace of itself on the computer it is used on after it is powered off.
|
||||
|
||||
[:octicons-home-16: Homepage](https://tails.boum.org/){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://tails.boum.org/doc/index.en.html){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://tails.boum.org/donate/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://tails.net){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://tails.net/doc/index.en.html){ .card-link title=Documentation}
|
||||
[:octicons-heart-16:](https://tails.net/donate){ .card-link title=Contribute }
|
||||
|
||||
Tails is great for counter forensics due to amnesia (meaning nothing is written to the disk); however, it is not a hardened distribution like Whonix. It lacks many anonymity and security features that Whonix has and gets updated much less often (only once every six weeks). A Tails system that is compromised by malware may potentially bypass the transparent proxy allowing for the user to be deanonymized.
|
||||
</details>
|
||||
|
||||
Tails includes [uBlock Origin](desktop-browsers.md#ublock-origin) in Tor Browser by default, which may potentially make it easier for adversaries to fingerprint Tails users. [Whonix](desktop.md#whonix) virtual machines may be more leak-proof, however they are not amnesic, meaning data may be recovered from your storage device.
|
||||
</div>
|
||||
|
||||
By design, Tails is meant to completely reset itself after each reboot. Encrypted [persistent storage](https://tails.boum.org/doc/persistent_storage/index.en.html) can be configured to store some data between reboots.
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Tails [doesn't erase](https://gitlab.tails.boum.org/tails/tails/-/issues/5356) the [video memory](https://en.wikipedia.org/wiki/Dual-ported_video_RAM) when shutting down. When you restart your computer after using Tails, it might briefly display the last screen that was displayed in Tails. If you shut down your computer instead of restarting it, the video memory will erase itself automatically after being unpowered for some time.
|
||||
|
||||
</div>
|
||||
|
||||
Tails is great for counter forensics due to amnesia (meaning nothing is written to the disk); however, it is not a hardened distribution like Whonix. It lacks many anonymity and security features that Whonix has and gets updated much less often (only once every six weeks). A Tails system that is compromised by malware may potentially bypass the transparent proxy, allowing for the user to be deanonymized.
|
||||
|
||||
Tails includes [uBlock Origin](browser-extensions.md#ublock-origin) in Tor Browser by default, which may potentially make it easier for adversaries to fingerprint Tails users. [Whonix](desktop.md#whonix) virtual machines may be more leak-proof, however they are not amnesic, meaning data may be recovered from your storage device.
|
||||
|
||||
By design, Tails is meant to completely reset itself after each reboot. Encrypted [persistent storage](https://tails.net/doc/persistent_storage/index.en.html) can be configured to store some data between reboots.
|
||||
|
||||
## Security-focused Distributions
|
||||
|
||||
### Qubes OS
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Qubes OS** is an open-source operating system designed to provide strong security for desktop computing through secure virtual machines (or "qubes"). Qubes is based on Xen, the X Window System, and Linux. It can run most Linux applications and use most of the Linux drivers.
|
||||
**Qubes OS** is an open-source operating system designed to provide strong security for desktop computing through secure virtual machines (or "qubes"). Qubes is based on Xen, the X Window System, and Linux. It can run most Linux applications and use most of the Linux drivers.
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.qubes-os.org/){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://www.qubes-os.org/privacy/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://www.qubes-os.org/doc/){ .card-link title=Documentation }
|
||||
[:octicons-code-16:](https://github.com/QubesOS/){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.qubes-os.org/donate/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://qubes-os.org){ .md-button .md-button--primary }
|
||||
[:simple-torbrowser:](http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion){ .card-link title="Onion Service" }
|
||||
[:octicons-eye-16:](https://qubes-os.org/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://qubes-os.org/doc){ .card-link title=Documentation }
|
||||
[:octicons-code-16:](https://github.com/QubesOS){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://qubes-os.org/donate){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Qubes OS secures the computer by isolating subsystems (e.g., networking, USB, etc.) and applications in separate *qubes*. Should one part of the system be compromised, the extra isolation is likely to protect the rest of the *qubes* and the core system.
|
||||
|
||||
@ -166,28 +207,32 @@ For further information about how Qubes works, read our full [Qubes OS overview]
|
||||
|
||||
### Kicksecure
|
||||
|
||||
While we [recommend against](os/linux-overview.md#release-cycle) "perpetually outdated" distributions like Debian for Desktop use in most cases, Kicksecure is a Debian-based operating system which has been hardened to be much more than a typical Linux install.
|
||||
While we [recommend against](os/linux-overview.md#release-cycle) "perpetually outdated" distributions like Debian for desktop use in most cases, Kicksecure is a Debian-based operating system which has been hardened to be much more than a typical Linux install.
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Kicksecure**—in oversimplified terms—is a set of scripts, configurations, and packages that substantially reduce the attack surface of Debian. It covers a lot of privacy and hardening recommendations by default. It also serves as the base OS for [Whonix](#whonix).
|
||||
**Kicksecure**—in oversimplified terms—is a set of scripts, configurations, and packages that substantially reduce the attack surface of Debian. It covers a lot of privacy and hardening recommendations by default. It also serves as the base OS for [Whonix](#whonix).
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.kicksecure.com/){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://www.kicksecure.com/wiki/Privacy_Policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://www.kicksecure.com/wiki/Documentation){ .card-link title=Documentation }
|
||||
[:octicons-code-16:](https://github.com/Kicksecure){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.kicksecure.com/wiki/Donate){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://kicksecure.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://kicksecure.com/wiki/Privacy_Policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://kicksecure.com/wiki/Documentation){ .card-link title=Documentation }
|
||||
[:octicons-code-16:](https://github.com/Kicksecure){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://kicksecure.com/wiki/Donate){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
Choosing a Linux distro that is right for you will come down to a huge variety of personal preferences, and this page is **not** meant to be an exhaustive list of every viable distribution. Our Linux overview page has some advice on [choosing a distro](os/linux-overview.md#choosing-your-distribution) in more detail. The distros on *this* page do all generally follow the guidelines we covered there, and all meet these standards:
|
||||
|
||||
- Free and open-source.
|
||||
- Free and open source.
|
||||
- Receives regular software and kernel updates.
|
||||
- [Avoids X11](os/linux-overview.md#wayland).
|
||||
- The notable exception here is Qubes, but the isolation issues which X11 typically has are avoided by virtualization. This isolation only applies to apps *running in different qubes* (virtual machines), apps running in the *same* qube are not protected from each other.
|
||||
- Avoids X11, as its last major release was [more than a decade](https://x.org/wiki/Releases) ago.
|
||||
- The notable exception here is Qubes, but the [isolation issues](https://blog.invisiblethings.org/2011/04/23/linux-security-circus-on-gui-isolation) which X11 typically has are avoided by virtualization. This isolation only applies to apps *running in different qubes* (virtual machines); apps running in the *same* qube are not protected from each other.
|
||||
- Supports full-disk encryption during installation.
|
||||
- Doesn't freeze regular releases for more than 1 year.
|
||||
- We [recommend against](os/linux-overview.md#release-cycle) "Long Term Support" or "stable" distro releases for desktop usage.
|
||||
|
244
docs/device-integrity.md
Normal file
@ -0,0 +1,244 @@
|
||||
---
|
||||
title: "Device Integrity"
|
||||
icon: material/security
|
||||
description: These tools can be used to check your devices for compromise.
|
||||
cover: device-integrity.webp
|
||||
---
|
||||
|
||||
These tools can be used to validate the integrity of your mobile devices and check them for indicators of compromise by spyware and malware such as Pegasus, Predator, or KingsPawn. This page focuses on **mobile security**, because mobile devices typically have read-only systems with well-known configurations, so detecting malicious modifications is easier than on traditional desktop systems. We may expand the focus of this page in the future.
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">This is an advanced topic</p>
|
||||
|
||||
These tools may provide utility for certain individuals. They provide functionality which most people do not need to worry about, and often require more in-depth technical knowledge to use effectively.
|
||||
|
||||
</div>
|
||||
|
||||
It is **critical** to understand that scanning your device for public indicators of compromise is **not sufficient** to determine that a device is "clean", and not targeted with a particular spyware tool. Reliance on these publicly-available scanning tools can miss recent security developments and give you a false sense of security.
|
||||
|
||||
## General Advice
|
||||
|
||||
The majority of system-level exploits on modern mobile devices—especially zero-click compromises—are non-persistent, meaning they will not remain or run automatically after a reboot. For this reason, we highly recommend rebooting your device regularly. We recommend everybody reboot their devices once a week at minimum, but if non-persistent malware is of particular concern for you, we and many security experts recommend a daily reboot schedule.
|
||||
|
||||
This means an attacker would have to regularly re-infect your device to retain access, although we'll note this is not impossible. Rebooting your device also will not protect you against *persistent* malware, but this is less common on mobile devices due to modern security features like secure/verified boot.
|
||||
|
||||
## Post-Compromise Information & Disclaimer
|
||||
|
||||
If any of the following tools indicate a potential compromise by spyware such as Pegasus, Predator, or KingsPawn, we advise that you contact:
|
||||
|
||||
- If you are a human rights defender, journalist, or from a civil society organization: [Amnesty International's Security Lab](https://securitylab.amnesty.org/contact-us)
|
||||
- If a business or government device is compromised: the appropriate security liason at your enterprise, department, or agency
|
||||
- Local law enforcement
|
||||
|
||||
**We are unable to help you directly beyond this.** We are happy to discuss your specific situation or circumstances and review your results in our [community](https://discuss.privacyguides.net) spaces, but it is unlikely we can assist you beyond what is written on this page.
|
||||
|
||||
The tools on this page are only capable of detecting indicators of compromise, not removing them. If you are concerned about having been compromised, we advise that you:
|
||||
|
||||
- Consider replacing the device completely
|
||||
- Consider changing your SIM/eSIM number
|
||||
- Not restore from a backup, because that backup may be compromised
|
||||
|
||||
These tools provide analysis based on the information they have the ability to access from your device, and publicly-accessible indicators of compromise. It is important to keep in mind two things:
|
||||
|
||||
1. Indicators of compromise are just that: *indicators*. They are not a definitive finding, and may occasionally be **false positives**. If an indicator of compromise is detected, it means you should do additional research into the *potential* threat.
|
||||
2. The indicators of compromise these tools look for are published by threat research organizations, but not all indicators are made available to the public! This means that these tools can present a **false negative**, if your device is infected with spyware which is not detected by any of the public indicators. Reliable and comprehensive digital forensic support and triage require access to non-public indicators, research, and threat intelligence.
|
||||
|
||||
## External Verification Tools
|
||||
|
||||
External verification tools run on your computer and scan your mobile device for forensic traces, which are helpful to identify potential compromise.
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
<p class="admonition-title">Danger</p>
|
||||
|
||||
Public indicators of compromise are insufficient to determine that a device is "clean", and not targeted with a particular spyware tool. Reliance on public indicators alone can miss recent forensic traces and give a false sense of security.
|
||||
|
||||
Reliable and comprehensive digital forensic support and triage require access to non-public indicators, research, and threat intelligence.
|
||||
|
||||
Such support is available to civil society through [Amnesty International's Security Lab](https://amnesty.org/en/tech) or [Access Now’s Digital Security Helpline](https://accessnow.org/help).
|
||||
|
||||
</div>
|
||||
|
||||
These tools can trigger false-positives. If any of these tools finds indicators of compromise, you need to dig deeper to determine your actual risk. Some reports may be false positives based on websites you've visited in the past, and findings which are many years old are likely either false-positives or indicate previous (and no longer active) compromise.
|
||||
|
||||
### Mobile Verification Toolkit
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Mobile Verification Toolkit** (**MVT**) is a collection of utilities which simplifies and automates the process of scanning mobile devices for potential traces of targeting or infection by known spyware campaigns. MVT was developed by Amnesty International and released in 2021 in the context of the [Pegasus Project](https://forbiddenstories.org/about-the-pegasus-project).
|
||||
|
||||
[:octicons-home-16: Homepage](https://mvt.re){ .md-button .md-button--primary }
|
||||
[:octicons-code-16:](https://github.com/mvt-project/mvt){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-apple: macOS](https://docs.mvt.re/en/latest/install)
|
||||
- [:simple-linux: Linux](https://docs.mvt.re/en/latest/install)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Using MVT is insufficient to determine that a device is "clean", and not targeted with a particular spyware tool.
|
||||
|
||||
</div>
|
||||
|
||||
MVT is *most* useful for scanning iOS devices. Android stores very little diagnostic information useful to triage potential compromises, and because of this, `mvt-android` capabilities are limited as well. On the other hand, encrypted iOS iTunes backups provide a large enough subset of files stored on the device to detect suspicious artifacts in many cases. This being said, MVT does still provide fairly useful tools for both iOS and Android analysis.
|
||||
|
||||
If you use iOS and are at high-risk, we have three additional suggestions for you:
|
||||
|
||||
1. Create and keep regular (monthly) iTunes backups. This allows you to find and diagnose past infections later with MVT, if new threats are discovered in the future.
|
||||
2. Trigger *sysdiagnose* logs often and back them up externally. These logs can provide invaluable data to future forensic investigators if need be.
|
||||
|
||||
The process to do so varies by model, but you can trigger it on newer phones by holding down *Power* + *Volume Up* + *Volume Down* until you feel a brief vibration. After a few minutes, the timestamped *sysdiagnose* log will appear in **Settings** > **Privacy & Security** > **Analytics & Improvements** > **Analytics Data**.
|
||||
|
||||
3. Enable [Lockdown Mode](https://blog.privacyguides.org/2022/10/27/macos-ventura-privacy-security-updates/#lockdown-mode).
|
||||
|
||||
MVT allows you to perform deeper scans/analysis if your device is jailbroken. Unless you know what you are doing, **do not jailbreak or root your device.** Jailbreaking your device exposes it to considerable security risks.
|
||||
|
||||
### iMazing (iOS)
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**iMazing** provides a free spyware analyzer tool for iOS devices which acts as a GUI-wrapper for [MVT](#mobile-verification-toolkit). This can be much easier to run compared to MVT itself, which is a command-line tool designed for technologists and forensic investigators.
|
||||
|
||||
[:octicons-home-16: Homepage](https://imazing.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://imazing.com/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://imazing.com/spyware-analyzer){ .card-link title=Documentation}
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:fontawesome-brands-windows: Windows](https://imazing.com/download)
|
||||
- [:simple-apple: macOS](https://imazing.com/download)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
iMazing automates and interactively guides you through the process of using [MVT](#mobile-verification-toolkit) to scan your device for publicly-accessible indicators of compromise published by various threat researchers. All of the information and warnings which apply to MVT apply to this tool as well, so we suggest you also familiarize yourself with the notes on MVT in the sections above.
|
||||
|
||||
## On-Device Verification
|
||||
|
||||
These are apps you can install which check your device and operating system for signs of tampering, and validate the identity of your device.
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Using these apps is insufficient to determine that a device is "clean", and not targeted with a particular spyware tool.
|
||||
|
||||
</div>
|
||||
|
||||
### Auditor (Android)
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Auditor** is an app which leverages hardware security features to provide device integrity monitoring by actively validating the identity of a device and the integrity of its operating system. Currently, it only works with GrapheneOS or the stock operating system for [supported devices](https://attestation.app/about#device-support).
|
||||
|
||||
[:octicons-home-16: Homepage](https://attestation.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://attestation.app/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://attestation.app/about){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://attestation.app/source){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://attestation.app/donate){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.attestation.auditor.play)
|
||||
- [:simple-github: GitHub](https://github.com/GrapheneOS/Auditor/releases)
|
||||
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Auditor is not a scanning/analysis tool like some other tools on this page. Rather, it uses your device's hardware-backed keystore to allow you to verify the identity of your device and gain assurance that the operating system itself hasn't been tampered with or downgraded via verified boot. This provides a very robust integrity check of your device itself, but doesn't necessarily check whether the user-level apps running on your device are malicious.
|
||||
|
||||
Auditor performs attestation and intrusion detection with **two** devices, an *auditee* (the device being verified) and an *auditor* (the device performing the verification). The auditor can be any Android 10+ device (or a remote web service operated by [GrapheneOS](android/distributions.md#grapheneos)), while the auditee must be a specifically [supported device](https://attestation.app/about#device-support). Auditor works by:
|
||||
|
||||
- Using a [Trust On First Use (TOFU)](https://en.wikipedia.org/wiki/Trust_on_first_use) model between an *auditor* and *auditee*, the pair establish a private key in the [hardware-backed keystore](https://source.android.com/security/keystore) of the *Auditor*.
|
||||
- The *auditor* can either be another instance of the Auditor app or the [Remote Attestation Service](https://attestation.app).
|
||||
- The *auditor* records the current state and configuration of the *auditee*.
|
||||
- Should tampering with the operating system of the *auditee* happen after the pairing is complete, the auditor will be aware of the change in the device state and configurations.
|
||||
- You will be alerted to the change.
|
||||
|
||||
It is important to note that Auditor can only effectively detect changes **after** the initial pairing, not necessarily during or before due to its TOFU model. To make sure that your hardware and operating system is genuine, [perform local attestation](https://grapheneos.org/install/web#verifying-installation) immediately after the device has been installed and prior to any internet connection.
|
||||
|
||||
No personally identifiable information is submitted to the attestation service. We recommend that you sign up with an anonymous account and enable remote attestation for continuous monitoring.
|
||||
|
||||
If your [threat model](basics/threat-modeling.md) requires privacy, you could consider using [Orbot](tor.md#orbot) or a VPN to hide your IP address from the attestation service.
|
||||
|
||||
## On-Device Scanners
|
||||
|
||||
These are apps you can install on your device which scan your device for signs of compromise.
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Using these apps is insufficient to determine that a device is "clean", and not targeted with a particular spyware tool.
|
||||
|
||||
</div>
|
||||
|
||||
### Hypatia (Android)
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Hypatia** is an open source real-time malware scanner for Android, from the developer of [DivestOS](android/distributions.md#divestos). It accesses the internet to download signature database updates, but does not upload your files or any metadata to the cloud (scans are performed entirely locally).
|
||||
|
||||
[:octicons-home-16: Homepage](https://divestos.org/pages/our_apps#hypatia){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://divestos.org/pages/privacy_policy#hypatia){ .card-link title="Privacy Policy" }
|
||||
[:octicons-code-16:](https://github.com/divested-mobile/hypatia){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://divested.dev/pages/donate){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-fdroid: F-Droid](https://f-droid.org/packages/us.spotco.malwarescanner)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Hypatia is particularly good at detecting common stalkerware: If you suspect you are a victim of stalkerware, you should [visit this page](https://stopstalkerware.org/information-for-survivors) for advice.
|
||||
|
||||
### iVerify Basic (iOS)
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**iVerify Basic** is an iOS app which can scan your device to check configuration settings, patch level, and other areas of security. It also checks your device for indicators of compromise by jailbreak tools or spyware such as Pegasus.
|
||||
|
||||
[:octicons-home-16: Homepage](https://iverify.io/products/basic){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://iverify.io/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://iverify.io/frequently-asked-questions#iVerify-General){ .card-link title=Documentation}
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1466120520)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Previously, iVerify would scan your device for threats automatically in the background and notify you if one is found, but this is [no longer the case](https://discuss.privacyguides.net/t/iverify-basic-is-now-available-on-android/18458/11) following their rebrand of the consumer app to *iVerify Basic* in May 2024. You can still run manual scans within the app. Automatic background scanning is now only available in iVerify's enterprise product which is unavailable to consumers.
|
||||
|
||||
Like all iOS apps, iVerify Basic is restricted to what it can observe about your device from within the iOS App Sandbox. It will not provide nearly as robust analysis as a full-system analysis tool like [MVT](#mobile-verification-toolkit). Its primary function is to detect whether your device is jailbroken, which it is effective at, however a hypothetical threat which is *specifically* designed to bypass iVerify's checks would likely succeed at doing so.
|
||||
|
||||
iVerify Basic is **not** an "antivirus" tool, and will not detect non-system-level malware such as malicious custom keyboards or malicious Wi-Fi Sync configurations, for example.
|
||||
|
||||
In addition to device scanning, iVerify Basic also includes a number of additional security utilities which you may find useful, including device [reboot reminders](os/ios-overview.md#before-first-unlock), iOS update notifications (which are often faster than Apple's staggered update notification rollout), and some basic privacy and security guides.
|
303
docs/dns.md
@ -3,6 +3,8 @@ title: "DNS Resolvers"
|
||||
icon: material/dns
|
||||
description: These are some encrypted DNS providers we recommend switching to, to replace your ISP's default configuration.
|
||||
cover: dns.webp
|
||||
global:
|
||||
- [randomize-element, "table tbody"]
|
||||
---
|
||||
|
||||
Encrypted DNS with third-party servers should only be used to get around basic [DNS blocking](https://en.wikipedia.org/wiki/DNS_blocking) when you can be sure there won't be any consequences. Encrypted DNS will not help you hide any of your browsing activity.
|
||||
@ -11,130 +13,203 @@ Encrypted DNS with third-party servers should only be used to get around basic [
|
||||
|
||||
## Recommended Providers
|
||||
|
||||
| DNS Provider | Privacy Policy | Protocols | Logging | ECS | Filtering |
|
||||
| ------------ | -------------- | --------- | ------- | --- | --------- |
|
||||
| [**AdGuard**](https://adguard.com/en/adguard-dns/overview.html) | [:octicons-link-external-24:](https://adguard.com/en/privacy/dns.html) | Cleartext <br> DoH/3 <br> DoT <br> DNSCrypt | Some[^1] | No | Based on personal configuration. Filter list being used can be found here. [:octicons-link-external-24:](https://github.com/AdguardTeam/AdGuardDNS)
|
||||
| [**Cloudflare**](https://developers.cloudflare.com/1.1.1.1/setting-up-1.1.1.1/) | [:octicons-link-external-24:](https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/) | Cleartext <br> DoH/3 <br> DoT | Some[^2] | No | Based on personal configuration.|
|
||||
| [**Control D**](https://controld.com/free-dns) | [:octicons-link-external-24:](https://controld.com/privacy) | Cleartext <br> DoH/3 <br> DoT <br> DoQ| Optional[^3] | No | Based on personal configuration. |
|
||||
| [**Mullvad**](https://mullvad.net/en/help/dns-over-https-and-dns-over-tls) | [:octicons-link-external-24:](https://mullvad.net/en/help/no-logging-data-policy/) | DoH <br> DoT | No[^4] | No | Based on personal configuration. Filter list being used can be found here. [:octicons-link-external-24:](https://github.com/mullvad/dns-adblock)
|
||||
| [**NextDNS**](https://www.nextdns.io) | [:octicons-link-external-24:](https://www.nextdns.io/privacy) | Cleartext <br> DoH/3 <br> DoT <br> DoQ | Optional[^5] | Optional | Based on personal configuration. |
|
||||
| [**Quad9**](https://quad9.net) | [:octicons-link-external-24:](https://quad9.net/privacy/policy/) | Cleartext <br> DoH <br> DoT <br> DNSCrypt | Some[^6] | Optional | Based on personal configuration, Malware blocking by default. |
|
||||
These are our favorite public DNS resolvers based on their privacy and security characteristics, and their worldwide performance. Some of these services offer basic DNS-level blocking of malware or trackers depending on the server you choose, but if you want to be able to see and customize what is blocked you should use a dedicated DNS filtering product instead.
|
||||
|
||||
| DNS Provider | Protocols | Logging / Privacy Policy | [ECS](advanced/dns-overview.md#what-is-edns-client-subnet-ecs) | Filtering | Signed Apple Profile |
|
||||
|---|---|---|---|---|---|
|
||||
| [**AdGuard Public DNS**](https://adguard-dns.io/en/public-dns.html) | Cleartext DoH/3 DoT DoQ DNSCrypt | Anonymized[^1] | Anonymized | Based on server choice. Filter list being used can be found here. [:octicons-link-external-24:](https://github.com/AdguardTeam/AdGuardDNS) | Yes [:octicons-link-external-24:](https://adguard.com/en/blog/encrypted-dns-ios-14.html) |
|
||||
| [**Cloudflare**](https://developers.cloudflare.com/1.1.1.1/setup) | Cleartext DoH/3 DoT | Anonymized[^2] | No | Based on server choice. | No [:octicons-link-external-24:](https://community.cloudflare.com/t/requesting-1-1-1-1-signed-profiles-for-apple/571846) |
|
||||
| [**Control D Free DNS**](https://controld.com/free-dns) | Cleartext DoH/3 DoT DoQ | No[^3] | No | Based on server choice. | Yes [:octicons-link-external-24:](https://docs.controld.com/docs/macos-platform) |
|
||||
| [**dns0.eu**](https://dns0.eu) | Cleartext DoH/3 DoH DoT DoQ | Anonymized[^4] | Anonymized | Based on server choice. | Yes [:octicons-link-external-24:](https://dns0.eu/zero.dns0.eu.mobileconfig) |
|
||||
| [**Mullvad**](https://mullvad.net/en/help/dns-over-https-and-dns-over-tls) | DoH DoT | No[^5] | No | Based on server choice. Filter list being used can be found here. [:octicons-link-external-24:](https://github.com/mullvad/dns-adblock) | Yes [:octicons-link-external-24:](https://mullvad.net/en/blog/profiles-to-configure-our-encrypted-dns-on-apple-devices) |
|
||||
| [**Quad9**](https://quad9.net) | Cleartext DoH DoT DNSCrypt | Anonymized[^6] | Optional | Based on server choice, malware blocking by default. | Yes [:octicons-link-external-24:](https://quad9.net/news/blog/ios-mobile-provisioning-profiles) |
|
||||
|
||||
[^1]: AdGuard stores aggregated performance metrics of their DNS servers, namely the number of complete requests to a particular server, the number of blocked requests, and the speed of processing requests. They also keep and store the database of domains requested in within last 24 hours. "We need this information to identify and block new trackers and threats." "We also log how many times this or that tracker has been blocked. We need this information to remove outdated rules from our filters." [https://adguard.com/en/privacy/dns.html](https://adguard.com/en/privacy/dns.html)
|
||||
[^2]: Cloudflare collects and stores only the limited DNS query data that is sent to the 1.1.1.1 resolver. The 1.1.1.1 resolver service does not log personal data, and the bulk of the limited non-personally identifiable query data is stored only for 25 hours. [https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/](https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/)
|
||||
[^2]: Cloudflare collects and stores only the limited DNS query data that is sent to the 1.1.1.1 resolver. The 1.1.1.1 resolver service does not log personal data, and the bulk of the limited non-personally identifiable query data is stored only for 25 hours. [https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/](https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver)
|
||||
[^3]: Control D only logs for Premium resolvers with custom DNS profiles. Free resolvers do not log data. [https://controld.com/privacy](https://controld.com/privacy)
|
||||
[^4]: Mullvad's DNS service is available to both subscribers and non-subscribers of Mullvad VPN. Their privacy policy explicitly claims they do not log DNS requests in any way. [https://mullvad.net/en/help/no-logging-data-policy/](https://mullvad.net/en/help/no-logging-data-policy/)
|
||||
[^5]: NextDNS can provide insights and logging features on an opt-in basis. You can choose retention times and log storage locations for any logs you choose to keep. If it's not specifically requested, no data is logged. [https://nextdns.io/privacy](https://nextdns.io/privacy)
|
||||
[^6]: Quad9 collects some data for the purposes of threat monitoring and response. That data may then be remixed and shared, such as for the purpose of security research. Quad9 does not collect or record IP addresses or other data they deem personally identifiable. [https://www.quad9.net/privacy/policy/](https://www.quad9.net/privacy/policy/)
|
||||
[^4]: dns0.eu collects some data for their threat intelligence feeds, to monitor for newly registered/observed/active domains and other bulk data. That data is shared with some [partners](https://docs.dns0.eu/data-feeds/introduction) for e.g. security research. They do not collect any Personally Identifiable Information. [https://dns0.eu/privacy](https://dns0.eu/privacy)
|
||||
[^5]: Mullvad's DNS service is available to both subscribers and non-subscribers of Mullvad VPN. Their privacy policy explicitly claims they do not log DNS requests in any way. [https://mullvad.net/en/help/no-logging-data-policy/](https://mullvad.net/en/help/no-logging-data-policy)
|
||||
[^6]: Quad9 collects some data for the purposes of threat monitoring and response. That data may then be remixed and shared, such as for the purpose of security research. Quad9 does not collect or record IP addresses or other data they deem personally identifiable. [https://quad9.net/privacy/policy](https://quad9.net/privacy/policy)
|
||||
|
||||
### Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
- Must support [DNSSEC](advanced/dns-overview.md#what-is-dnssec).
|
||||
- [QNAME Minimization](advanced/dns-overview.md#what-is-qname-minimization).
|
||||
- Allow for [ECS](advanced/dns-overview.md#what-is-edns-client-subnet-ecs) to be disabled.
|
||||
- Prefer [anycast](https://en.wikipedia.org/wiki/Anycast#Addressing_methods) support or geo-steering support.
|
||||
|
||||
## Native Operating System Support
|
||||
|
||||
### Android
|
||||
|
||||
Android 9 and above support DNS over TLS. The settings can be found in: **Settings** → **Network & Internet** → **Private DNS**.
|
||||
|
||||
### Apple Devices
|
||||
|
||||
The latest versions of iOS, iPadOS, tvOS, and macOS, support both DoT and DoH. Both protocols are supported natively via [configuration profiles](https://support.apple.com/guide/security/configuration-profile-enforcement-secf6fb9f053/web) or through the [DNS Settings API](https://developer.apple.com/documentation/networkextension/dns_settings).
|
||||
|
||||
After installation of either a configuration profile or an app that uses the DNS Settings API, the DNS configuration can be selected. If a VPN is active, resolution within the VPN tunnel will use the VPN's DNS settings and not your system-wide settings.
|
||||
|
||||
#### Signed Profiles
|
||||
|
||||
Apple does not provide a native interface for creating encrypted DNS profiles. [Secure DNS profile creator](https://dns.notjakob.com/tool.html) is an unofficial tool for creating your own encrypted DNS profiles, however they will not be signed. Signed profiles are preferred; signing validates a profile's origin and helps to ensure the integrity of the profiles. A green "Verified" label is given to signed configuration profiles. For more information on code signing, see [About Code Signing](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html). **Signed profiles** are offered by [AdGuard](https://adguard.com/en/blog/encrypted-dns-ios-14.html), [NextDNS](https://apple.nextdns.io), and [Quad9](https://www.quad9.net/news/blog/ios-mobile-provisioning-profiles/).
|
||||
|
||||
!!! info
|
||||
|
||||
`systemd-resolved`, which many Linux distributions use to do their DNS lookups, doesn't yet [support DoH](https://github.com/systemd/systemd/issues/8639). If you want to use DoH, you'll need to install a proxy like [dnscrypt-proxy](https://github.com/DNSCrypt/dnscrypt-proxy) and [configure it](https://wiki.archlinux.org/title/Dnscrypt-proxy) to take all the DNS queries from your system resolver and forward them over HTTPS.
|
||||
|
||||
## Encrypted DNS Proxies
|
||||
|
||||
Encrypted DNS proxy software provides a local proxy for the [unencrypted DNS](advanced/dns-overview.md#unencrypted-dns) resolver to forward to. Typically it is used on platforms that don't natively support [encrypted DNS](advanced/dns-overview.md#what-is-encrypted-dns).
|
||||
|
||||
### RethinkDNS
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**RethinkDNS** is an open-source Android client supporting [DNS-over-HTTPS](advanced/dns-overview.md#dns-over-https-doh), [DNS-over-TLS](advanced/dns-overview.md#dns-over-tls-dot), [DNSCrypt](advanced/dns-overview.md#dnscrypt) and DNS Proxy along with caching DNS responses, locally logging DNS queries and can be used as a firewall too.
|
||||
|
||||
[:octicons-home-16: Homepage](https://rethinkdns.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://rethinkdns.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.rethinkdns.com/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/celzero/rethink-app){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.celzero.bravedns)
|
||||
- [:simple-github: GitHub](https://github.com/celzero/rethink-app/releases)
|
||||
|
||||
### dnscrypt-proxy
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**dnscrypt-proxy** is a DNS proxy with support for [DNSCrypt](advanced/dns-overview.md#dnscrypt), [DNS-over-HTTPS](advanced/dns-overview.md#dns-over-https-doh), and [Anonymized DNS](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Anonymized-DNS).
|
||||
|
||||
!!! warning "The anonymized DNS feature does [**not**](advanced/dns-overview.md#why-shouldnt-i-use-encrypted-dns) anonymize other network traffic."
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/DNSCrypt/dnscrypt-proxy){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://github.com/DNSCrypt/dnscrypt-proxy/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/DNSCrypt/dnscrypt-proxy){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://opencollective.com/dnscrypt/contribute){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
|
||||
- [:simple-windows11: Windows](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-Windows)
|
||||
- [:simple-apple: macOS](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-macOS)
|
||||
- [:simple-linux: Linux](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-linux)
|
||||
|
||||
## Self-hosted Solutions
|
||||
## Self-Hosted DNS Filtering
|
||||
|
||||
A self-hosted DNS solution is useful for providing filtering on controlled platforms, such as Smart TVs and other IoT devices, as no client-side software is needed.
|
||||
|
||||
### AdGuard Home
|
||||
|
||||
!!! recommendation
|
||||
|
||||
{ align=right }
|
||||
|
||||
**AdGuard Home** is an open-source [DNS-sinkhole](https://wikipedia.org/wiki/DNS_sinkhole) which uses [DNS filtering](https://www.cloudflare.com/learning/access-management/what-is-dns-filtering/) to block unwanted web content, such as advertisements.
|
||||
|
||||
AdGuard Home features a polished web interface to view insights and manage blocked content.
|
||||
|
||||
[:octicons-home-16: Homepage](https://adguard.com/adguard-home/overview.html){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://adguard.com/privacy/home.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/AdguardTeam/AdGuardHome/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/AdguardTeam/AdGuardHome){ .card-link title="Source Code" }
|
||||
|
||||
### Pi-hole
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Pi-hole** is an open-source [DNS-sinkhole](https://wikipedia.org/wiki/DNS_sinkhole) which uses [DNS filtering](https://www.cloudflare.com/learning/access-management/what-is-dns-filtering/) to block unwanted web content, such as advertisements.
|
||||
**Pi-hole** is an open-source [DNS-sinkhole](https://en.wikipedia.org/wiki/DNS_sinkhole) which uses [DNS filtering](https://cloudflare.com/learning/access-management/what-is-dns-filtering) to block unwanted web content, such as advertisements.
|
||||
|
||||
Pi-hole is designed to be hosted on a Raspberry Pi, but it is not limited to such hardware. The software features a friendly web interface to view insights and manage blocked content.
|
||||
Pi-hole is designed to be hosted on a Raspberry Pi, but it is not limited to such hardware. The software features a friendly web interface to view insights and manage blocked content.
|
||||
|
||||
[:octicons-home-16: Homepage](https://pi-hole.net/){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://pi-hole.net/privacy/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.pi-hole.net/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/pi-hole/pi-hole){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://pi-hole.net/donate){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://pi-hole.net){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://pi-hole.net/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.pi-hole.net){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/pi-hole/pi-hole){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://pi-hole.net/donate){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### AdGuard Home
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**AdGuard Home** is an open-source [DNS-sinkhole](https://en.wikipedia.org/wiki/DNS_sinkhole) which uses [DNS filtering](https://cloudflare.com/learning/access-management/what-is-dns-filtering) to block unwanted web content, such as advertisements.
|
||||
|
||||
AdGuard Home features a polished web interface to view insights and manage blocked content.
|
||||
|
||||
[:octicons-home-16: Homepage](https://adguard.com/adguard-home/overview.html){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://adguard.com/privacy/home.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/AdguardTeam/AdGuardHome/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/AdguardTeam/AdGuardHome){ .card-link title="Source Code" }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Cloud-Based DNS Filtering
|
||||
|
||||
These DNS filtering solutions offer a web dashboard where you can customize the blocklists to your exact needs, similarly to a Pi-hole. These services are usually easier to set up and configure than self-hosted services like the ones above, and can be used more easily across multiple networks (self-hosted solutions are typically restricted to your home/local network unless you set up a more advanced configuration).
|
||||
|
||||
### Control D
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Control D** is a customizable DNS service which lets you block security threats, unwanted content, and advertisements on a DNS level. In addition to their paid plans, they offer a number of preconfigured DNS resolvers you can use for free.
|
||||
|
||||
[:octicons-home-16: Homepage](https://controld.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://controld.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.controld.com/docs/getting-started){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/Control-D-Inc/ctrld){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:fontawesome-brands-windows: Windows](https://docs.controld.com/docs/gui-setup-utility)
|
||||
- [:simple-apple: macOS](https://docs.controld.com/docs/gui-setup-utility)
|
||||
- [:simple-linux: Linux](https://docs.controld.com/docs/ctrld)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.controld.setuputility)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/1518799460)
|
||||
- [:simple-github: GitHub](https://github.com/Control-D-Inc/ctrld/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### NextDNS
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**NextDNS** is a customizable DNS service which lets you block security threats, unwanted content, and advertisements on a DNS level. They offer a fully functional free plan for limited use.
|
||||
|
||||
[:octicons-home-16: Homepage](https://nextdns.io){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://nextdns.io/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://help.nextdns.io){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/nextdns/nextdns){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:fontawesome-brands-windows: Windows](https://github.com/nextdns/nextdns/wiki/Windows)
|
||||
- [:simple-apple: macOS](https://apps.apple.com/us/app/nextdns/id1464122853)
|
||||
- [:simple-linux: Linux](https://github.com/nextdns/nextdns/wiki)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/nextdns/id1463342498)
|
||||
- [:simple-github: GitHub](https://github.com/nextdns/nextdns/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
When used with an account, NextDNS will enable insights and logging features by default (as some features require it). You can choose retention time and log storage location for any logs you choose to keep, or disable logs altogether.
|
||||
|
||||
NextDNS's free plan is fully functional, but should not be relied upon for security or other critical filtering applications, because after 300,000 DNS queries in a month all filtering, logging, and other account-based functionality is disabled. It can still be used as a regular DNS provider after that point, so your devices will continue to function and make secure queries via DNS-over-HTTPS, just without your filter lists.
|
||||
|
||||
NextDNS also offers public DNS-over-HTTPS service at `https://dns.nextdns.io` and DNS-over-TLS/QUIC at `dns.nextdns.io`, which are available by default in Firefox and Chromium, and subject to their default no-logging [privacy policy](https://nextdns.io/privacy).
|
||||
|
||||
## Encrypted DNS Proxies
|
||||
|
||||
Encrypted DNS proxy software provides a local proxy for the [unencrypted DNS](advanced/dns-overview.md#unencrypted-dns) resolver to forward to. Typically, it is used on platforms that don't natively support [encrypted DNS](advanced/dns-overview.md#what-is-encrypted-dns).
|
||||
|
||||
### RethinkDNS
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**RethinkDNS** is an open-source Android client that supports [DNS-over-HTTPS](advanced/dns-overview.md#dns-over-https-doh), [DNS-over-TLS](advanced/dns-overview.md#dns-over-tls-dot), [DNSCrypt](advanced/dns-overview.md#dnscrypt) and DNS Proxy. It also provides additional functionality such as caching DNS responses, locally logging DNS queries, and using the app as a firewall.
|
||||
|
||||
[:octicons-home-16: Homepage](https://rethinkdns.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://rethinkdns.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.rethinkdns.com){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/celzero/rethink-app){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.celzero.bravedns)
|
||||
- [:simple-github: GitHub](https://github.com/celzero/rethink-app/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
While RethinkDNS takes up the Android VPN slot, you can still use a VPN or Orbot with the app by [adding a Wireguard configuration](https://docs.rethinkdns.com/proxy/wireguard) or [manually configuring Orbot as a Proxy server](https://docs.rethinkdns.com/firewall/orbot), respectively.
|
||||
|
||||
### dnscrypt-proxy
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**dnscrypt-proxy** is a DNS proxy with support for [DNSCrypt](advanced/dns-overview.md#dnscrypt), [DNS-over-HTTPS](advanced/dns-overview.md#dns-over-https-doh), and [Anonymized DNS](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Anonymized-DNS).
|
||||
|
||||
[:octicons-repo-16: Repository](https://github.com/DNSCrypt/dnscrypt-proxy){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://github.com/DNSCrypt/dnscrypt-proxy/wiki){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/DNSCrypt/dnscrypt-proxy){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://opencollective.com/dnscrypt/contribute){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:fontawesome-brands-windows: Windows](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-Windows)
|
||||
- [:simple-apple: macOS](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-macOS)
|
||||
- [:simple-linux: Linux](https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-linux)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
The anonymized DNS feature does [not](advanced/dns-overview.md#why-shouldnt-i-use-encrypted-dns) anonymize other network traffic.
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
All DNS products must support:
|
||||
|
||||
- [DNSSEC](advanced/dns-overview.md#what-is-dnssec).
|
||||
- [QNAME Minimization](advanced/dns-overview.md#what-is-qname-minimization).
|
||||
- Anonymize [ECS](advanced/dns-overview.md#what-is-edns-client-subnet-ecs) or disable it by default.
|
||||
|
||||
Additionally, all public providers:
|
||||
|
||||
- Prefer [anycast](https://en.wikipedia.org/wiki/Anycast#Addressing_methods) support or geo-steering support.
|
||||
- Must not log any personal data to disk
|
||||
- As noted in our footnotes, some providers collect query information for example, for purposes like security research, but in that case that data must not be associated with any PII such as IP address, etc.
|
||||
|
85
docs/document-collaboration.md
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
title: "Document Collaboration"
|
||||
icon: material/account-group
|
||||
description: Most online office suites do not support E2EE, meaning the cloud provider has access to everything you do.
|
||||
cover: document-collaboration.webp
|
||||
---
|
||||
<!-- markdownlint-disable MD024 -->
|
||||
Most online office suites do not support E2EE, meaning the cloud provider has access to everything you do. The provider's privacy policy may legally protect your rights, but it does not provide technical access constraints.
|
||||
|
||||
## Collaboration Platforms
|
||||
|
||||
### Nextcloud
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**Nextcloud** is a suite of free and open-source client-server software for creating your own file hosting services on a private server you control.
|
||||
|
||||
[:octicons-home-16: Homepage](https://nextcloud.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://nextcloud.com/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://nextcloud.com/support){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/nextcloud){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://nextcloud.com/contribute){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.nextcloud.client)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1125420102)
|
||||
- [:simple-github: GitHub](https://github.com/nextcloud/android/releases)
|
||||
- [:fontawesome-brands-windows: Windows](https://nextcloud.com/install/#install-clients)
|
||||
- [:simple-apple: macOS](https://nextcloud.com/install/#install-clients)
|
||||
- [:simple-linux: Linux](https://nextcloud.com/install/#install-clients)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
<p class="admonition-title">Danger</p>
|
||||
|
||||
We don't recommend using the [E2EE App](https://apps.nextcloud.com/apps/end_to_end_encryption) for Nextcloud as it may lead to data loss; it is highly experimental and not production quality. For this reason, we don't recommend third-party Nextcloud providers.
|
||||
|
||||
</div>
|
||||
|
||||
### CryptPad
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**CryptPad** is a private-by-design alternative to popular office tools. All content on this web service is end-to-end encrypted and can be shared with other users easily.
|
||||
|
||||
[:octicons-home-16: Homepage](https://cryptpad.fr){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://cryptpad.fr/pad/#/2/pad/view/GcNjAWmK6YDB3EO2IipRZ0fUe89j43Ryqeb4fjkjehE){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.cryptpad.fr){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/xwiki-labs/cryptpad){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://opencollective.com/cryptpad){ .card-link title=Contribute }
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
#### Minimum Requirements
|
||||
|
||||
In general, we define collaboration platforms as full-fledged suites which could reasonably act as a replacement to Google Drive.
|
||||
|
||||
- Must be open source.
|
||||
- Must make files accessible via WebDAV unless it is impossible due to E2EE.
|
||||
- Must have sync clients for Linux, macOS, and Windows.
|
||||
- Must support document and spreadsheet editing.
|
||||
- Must support real-time document collaboration.
|
||||
- Must support exporting documents to standard document formats (e.g. ODF).
|
||||
|
||||
#### Best-Case
|
||||
|
||||
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
|
||||
|
||||
- Should store files in a conventional filesystem.
|
||||
- Should support TOTP or FIDO2 multi-factor authentication support, or passkey logins.
|
112
docs/email-aliasing.md
Normal file
@ -0,0 +1,112 @@
|
||||
---
|
||||
title: "Email Aliasing"
|
||||
icon: material/email-lock
|
||||
description: An email aliasing service allows you to easily generate a new email address for every website you register for.
|
||||
cover: email-aliasing.webp
|
||||
---
|
||||
An **email aliasing service** allows you to easily generate a new email address for every website you register for. The email aliases you generate are then forwarded to an email address of your choosing, hiding both your "main" email address and the identity of your [email provider](email.md). True email aliasing is better than plus addressing commonly used and supported by many providers, which allows you to create aliases like `yourname+[anythinghere]@example.com`, because websites, advertisers, and tracking networks can trivially remove anything after the `+` sign. Organizations like the [IAB](https://en.wikipedia.org/wiki/Interactive_Advertising_Bureau) require that advertisers [normalize email addresses](https://shkspr.mobi/blog/2023/01/the-iab-loves-tracking-users-but-it-hates-users-tracking-them) so that they can be correlated and tracked, regardless of users' privacy wishes.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- { .twemoji } [addy.io](email-aliasing.md#addyio)
|
||||
- { .twemoji } [SimpleLogin](email-aliasing.md#simplelogin)
|
||||
|
||||
</div>
|
||||
|
||||
Email aliasing can also act as a safeguard in case your email provider ever ceases operation. In that scenario, you can easily re-route your aliases to a new email address. In turn, however, you are placing trust in the aliasing service to continue functioning.
|
||||
|
||||
Using a dedicated email aliasing service also has a number of benefits over a catch-all alias on a custom domain:
|
||||
|
||||
- Aliases can be turned on and off individually when you need them, preventing websites from emailing you randomly.
|
||||
- Replies are sent from the alias address, shielding your real email address.
|
||||
|
||||
They also have a number of benefits over "temporary email" services:
|
||||
|
||||
- Aliases are permanent and can be turned on again if you need to receive something like a password reset.
|
||||
- Emails are sent to your trusted mailbox rather than stored by the alias provider.
|
||||
- Temporary email services typically have public mailboxes which can be accessed by anyone who knows the address, while aliases are private to you.
|
||||
|
||||
Our email aliasing recommendations are providers that allow you to create aliases on domains they control, as well as your own custom domain(s) for a modest yearly fee. They can also be self-hosted if you want maximum control. However, using a custom domain can have privacy-related drawbacks: If you are the only person using your custom domain, your actions can be easily tracked across websites simply by looking at the domain name in the email address and ignoring everything before the at (@) sign.
|
||||
|
||||
Using an aliasing service requires trusting both your email provider and your aliasing provider with your unencrypted messages. Some providers mitigate this slightly with Automatic PGP Encryption, which reduces the number of parties you need to trust from two to one by encrypting incoming emails before they are delivered to your final mailbox provider.
|
||||
|
||||
### addy.io
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**addy.io** lets you create 10 domain aliases on a shared domain for free, or unlimited "standard" aliases which are less anonymous.
|
||||
|
||||
[:octicons-home-16: Homepage](https://addy.io){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://addy.io/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://addy.io/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/anonaddy){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://addy.io/donate){ .card-link title=Contribute }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-android: Android](https://addy.io/faq/#is-there-an-android-app)
|
||||
- [:material-apple-ios: iOS](https://addy.io/faq/#is-there-an-ios-app)
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/addy_io)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/addyio-anonymous-email-fo/iadbdpnoknmbdeolbapdackdcogdmjpe)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
The number of shared aliases (which end in a shared domain like @addy.io) that you can create is limited to 10 on addy.io's free plan, 50 on their $1/month plan and unlimited on the $4/month plan (billed $3 for a year). You can create unlimited standard aliases which end in a domain like @[username].addy.io or a custom domain on paid plans. However, as previously mentioned, this can be detrimental to privacy because people can trivially tie your standard aliases together based on the domain name alone. They are useful where a shared domain might be blocked by a service. Securitum [audited](https://addy.io/blog/addy-io-passes-independent-security-audit) addy.io in September 2023 and no significant vulnerabilities [were identified](https://addy.io/addy-io-security-audit.pdf).
|
||||
|
||||
Notable free features:
|
||||
|
||||
- [x] 10 Shared Aliases
|
||||
- [x] Unlimited Standard Aliases
|
||||
- [ ] No Outgoing Replies
|
||||
- [x] 1 Recipient Mailbox
|
||||
- [x] Automatic PGP Encryption
|
||||
|
||||
### SimpleLogin
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**SimpleLogin** is a free service which provides email aliases on a variety of shared domain names, and optionally provides paid features like unlimited aliases and custom domains.
|
||||
|
||||
[:octicons-home-16: Homepage](https://simplelogin.io){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://simplelogin.io/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://simplelogin.io/docs){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/simple-login){ .card-link title="Source Code" }
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=io.simplelogin.android)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1494359858)
|
||||
- [:simple-github: GitHub](https://github.com/simple-login/Simple-Login-Android/releases)
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/simplelogin)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/dphilobhebphkdjbpfohgikllaljmgbn)
|
||||
- [:fontawesome-brands-edge: Edge](https://microsoftedge.microsoft.com/addons/detail/simpleloginreceive-sen/diacfpipniklenphgljfkmhinphjlfff)
|
||||
- [:simple-safari: Safari](https://apps.apple.com/app/id6475835429)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
SimpleLogin was [acquired by Proton AG](https://proton.me/news/proton-and-simplelogin-join-forces) as of April 8, 2022. If you use Proton Mail for your primary mailbox, SimpleLogin is a great choice. As both products are now owned by the same company you now only have to trust a single entity. We also expect that SimpleLogin will be more tightly integrated with Proton's offerings in the future. SimpleLogin continues to support forwarding to any email provider of your choosing. Securitum [audited](https://simplelogin.io/blog/security-audit) SimpleLogin in early 2022 and all issues [were addressed](https://simplelogin.io/audit2022/web.pdf).
|
||||
|
||||
You can link your SimpleLogin account in the settings with your Proton account. If you have the Proton Unlimited, Business, or Visionary Plan, you will have SimpleLogin Premium for free.
|
||||
|
||||
Notable free features:
|
||||
|
||||
- [x] 10 Shared Aliases
|
||||
- [x] Unlimited Replies
|
||||
- [x] 1 Recipient Mailbox
|
||||
- [ ] Automatic PGP Encryption is only available on paid plans
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the providers we recommend.** In addition to [our standard criteria](about/criteria.md), we evaluate email aliasing providers to the same standard as our regular [email provider criteria](email.md#criteria) where applicable. We suggest you familiarize yourself with this list before choosing an email service, and conduct your own research to ensure the provider you choose is the right choice for you.
|
||||
|
||||
*[Automatic PGP Encryption]: Allows you to encrypt non-encrypted incoming emails before they are forwarded to your mailbox, making sure your primary mailbox provider never sees unencrypted email content.
|
@ -4,37 +4,45 @@ icon: material/email-open
|
||||
description: These email clients are privacy-respecting and support OpenPGP email encryption.
|
||||
cover: email-clients.webp
|
||||
---
|
||||
Our recommendation list contains email clients that support both [OpenPGP](encryption.md#openpgp) and strong authentication such as [Open Authorization (OAuth)](https://en.wikipedia.org/wiki/OAuth). OAuth allows you to use [Multi-Factor Authentication](basics/multi-factor-authentication.md) and prevent account theft.
|
||||
The **email clients** we recommend support both [OpenPGP](encryption.md#openpgp) and strong authentication such as [Open Authorization (OAuth)](https://en.wikipedia.org/wiki/OAuth). OAuth allows you to use [Multi-Factor Authentication](basics/multi-factor-authentication.md) and prevent account theft.
|
||||
|
||||
??? warning "Email does not provide forward secrecy"
|
||||
<details class="warning" markdown>
|
||||
<summary>Email does not provide forward secrecy</summary>
|
||||
|
||||
When using end-to-end encryption (E2EE) technology like OpenPGP, email will still have [some metadata](email.md#email-metadata-overview) that is not encrypted in the header of the email.
|
||||
When using end-to-end encryption (E2EE) technology like OpenPGP, email will still have [some metadata](basics/email-security.md#email-metadata-overview) that is not encrypted in the header of the email.
|
||||
|
||||
OpenPGP also does not support [forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy), which means if either your or the recipient's private key is ever stolen, all previous messages encrypted with it will be exposed: [How do I protect my private keys?](basics/email-security.md) Consider using a medium that provides forward secrecy:
|
||||
OpenPGP also does not support [forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy), which means if either your or the recipient's private key is ever stolen, all previous messages encrypted with it will be exposed: [How do I protect my private keys?](basics/email-security.md) Consider using a medium that provides forward secrecy:
|
||||
|
||||
[Real-time Communication](real-time-communication.md){ .md-button }
|
||||
[Real-time Communication](real-time-communication.md){ .md-button }
|
||||
|
||||
</details>
|
||||
|
||||
## Cross-Platform
|
||||
|
||||
### Thunderbird
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Thunderbird** is a free, open-source, cross-platform email, newsgroup, news feed, and chat (XMPP, IRC, Twitter) client developed by the Thunderbird community, and previously by the Mozilla Foundation.
|
||||
**Thunderbird** is a free, open-source, cross-platform email, newsgroup, news feed, and chat (XMPP, IRC, Matrix) client developed by the Thunderbird community, and previously by the Mozilla Foundation.
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.thunderbird.net){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://www.mozilla.org/privacy/thunderbird){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.mozilla.org/products/thunderbird){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://hg.mozilla.org/comm-central){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://thunderbird.net){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://mozilla.org/privacy/thunderbird){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.mozilla.org/products/thunderbird){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://hg.mozilla.org/comm-central){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-windows11: Windows](https://www.thunderbird.net)
|
||||
- [:simple-apple: macOS](https://www.thunderbird.net)
|
||||
- [:simple-linux: Linux](https://www.thunderbird.net)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.mozilla.Thunderbird)
|
||||
- [:fontawesome-brands-windows: Windows](https://thunderbird.net)
|
||||
- [:simple-apple: macOS](https://thunderbird.net)
|
||||
- [:simple-linux: Linux](https://thunderbird.net)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.mozilla.Thunderbird)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
#### Recommended Configuration
|
||||
|
||||
@ -53,179 +61,220 @@ These options can be found in :material-menu: → **Settings** → **Privacy & S
|
||||
|
||||
#### Thunderbird-user.js (advanced)
|
||||
|
||||
[`thunderbird-user.js`](https://github.com/HorlogeSkynet/thunderbird-user.js), is a set of configurations options that aims to disable as many of the web-browsing features within Thunderbird as possible in order to reduce surface area and maintain privacy. Some of the changes are backported from the [Arkenfox project](https://github.com/arkenfox/user.js).
|
||||
[`thunderbird-user.js`](https://github.com/HorlogeSkynet/thunderbird-user.js) is a set of configurations options that aims to disable as many of the web-browsing features within Thunderbird as possible in order to reduce attack surface and maintain privacy. Some of the changes are backported from the [Arkenfox project](https://github.com/arkenfox/user.js).
|
||||
|
||||
## Platform Specific
|
||||
|
||||
### Apple Mail (macOS)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Apple Mail** is included in macOS and can be extended to have OpenPGP support with [GPG Suite](encryption.md#gpg-suite), which adds the ability to send PGP-encrypted email.
|
||||
**Apple Mail** is included in macOS and can be extended to have OpenPGP support with [GPG Suite](encryption.md#gpg-suite), which adds the ability to send PGP-encrypted email.
|
||||
|
||||
[:octicons-home-16: Homepage](https://support.apple.com/guide/mail/welcome/mac){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://www.apple.com/legal/privacy/en-ww/){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.apple.com/mail){ .card-link title=Documentation}
|
||||
[:octicons-home-16: Homepage](https://support.apple.com/guide/mail/welcome/mac){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://apple.com/legal/privacy/en-ww){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://support.apple.com/mail){ .card-link title=Documentation}
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
Apple Mail has the ability to load remote content in the background or block it entirely and hide your IP address from senders on [macOS](https://support.apple.com/guide/mail/mlhl03be2866/mac) and [iOS](https://support.apple.com/guide/iphone/iphf084865c7/ios).
|
||||
|
||||
### Canary Mail (iOS)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Canary Mail** is a paid email client designed to make end-to-end encryption seamless with security features such as a biometric app lock.
|
||||
**Canary Mail** is a paid email client designed to make end-to-end encryption seamless with security features such as a biometric app lock.
|
||||
|
||||
[:octicons-home-16: Homepage](https://canarymail.io){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://canarymail.io/privacy.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://canarymail.zendesk.com/){ .card-link title=Documentation}
|
||||
[:octicons-home-16: Homepage](https://canarymail.io){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://canarymail.io/privacy.html){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://canarymail.io/help){ .card-link title=Documentation}
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=io.canarymail.android)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1236045954)
|
||||
- [:simple-windows11: Windows](https://canarymail.io/downloads.html)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=io.canarymail.android)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id1236045954)
|
||||
- [:fontawesome-brands-windows: Windows](https://canarymail.io/downloads.html)
|
||||
|
||||
!!! warning
|
||||
</details>
|
||||
|
||||
Canary Mail only recently released a Windows and Android client, though we don't believe they are as stable as their iOS and Mac counterparts.
|
||||
</div>
|
||||
|
||||
<details class="warning" markdown>
|
||||
<summary>Warning</summary>
|
||||
|
||||
Canary Mail only recently released a Windows and Android client, though we don't believe they are as stable as their iOS and Mac counterparts.
|
||||
|
||||
</details>
|
||||
|
||||
Canary Mail is closed-source. We recommend it due to the few choices there are for email clients on iOS that support PGP E2EE.
|
||||
|
||||
### FairEmail (Android)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**FairEmail** is a minimal, open-source email app, using open standards (IMAP, SMTP, OpenPGP) with a low data and battery usage.
|
||||
**FairEmail** is a minimal, open-source email app, using open standards (IMAP, SMTP, OpenPGP) with a low data and battery usage.
|
||||
|
||||
[:octicons-home-16: Homepage](https://email.faircode.eu){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://github.com/M66B/FairEmail/blob/master/PRIVACY.md){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/M66B/FairEmail/blob/master/FAQ.md){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/M66B/FairEmail){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://email.faircode.eu/donate/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://email.faircode.eu){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://github.com/M66B/FairEmail/blob/master/PRIVACY.md){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://github.com/M66B/FairEmail/blob/master/FAQ.md){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/M66B/FairEmail){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://email.faircode.eu/donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=eu.faircode.email)
|
||||
- [:simple-github: GitHub](https://github.com/M66B/FairEmail/releases)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=eu.faircode.email)
|
||||
- [:simple-github: GitHub](https://github.com/M66B/FairEmail/releases)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### GNOME Evolution (GNOME)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Evolution** is a personal information management application that provides integrated mail, calendaring and address book functionality. Evolution has extensive [documentation](https://help.gnome.org/users/evolution/stable/) to help you get started.
|
||||
**Evolution** is a personal information management application that provides integrated mail, calendaring and address book functionality. Evolution has extensive [documentation](https://help.gnome.org/users/evolution/stable) to help you get started.
|
||||
|
||||
[:octicons-home-16: Homepage](https://wiki.gnome.org/Apps/Evolution){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://wiki.gnome.org/Apps/Evolution/PrivacyPolicy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://help.gnome.org/users/evolution/stable/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.gnome.org/GNOME/evolution/){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.gnome.org/donate/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://wiki.gnome.org/Apps/Evolution){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://wiki.gnome.org/Apps/Evolution/PrivacyPolicy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://help.gnome.org/users/evolution/stable){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://gitlab.gnome.org/GNOME/evolution){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://gnome.org/donate){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.gnome.Evolution)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.gnome.Evolution)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### K-9 Mail (Android)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**K-9 Mail** is an independent mail application that supports both POP3 and IMAP mailboxes, but only supports push mail for IMAP.
|
||||
**K-9 Mail** is an independent mail application that supports both POP3 and IMAP mailboxes, but only supports push mail for IMAP.
|
||||
|
||||
In the future, K-9 Mail will be the [officially branded](https://k9mail.app/2022/06/13/K-9-Mail-and-Thunderbird.html) Thunderbird client for Android.
|
||||
In the future, K-9 Mail will be the [officially branded](https://k9mail.app/2022/06/13/K-9-Mail-and-Thunderbird.html) Thunderbird client for Android.
|
||||
|
||||
[:octicons-home-16: Homepage](https://k9mail.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://k9mail.app/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.k9mail.app/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/k9mail/k-9){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://k9mail.app/contribute){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://k9mail.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://k9mail.app/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://docs.k9mail.app){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/thundernest/k-9){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://k9mail.app/contribute){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.fsck.k9)
|
||||
- [:simple-github: GitHub](https://github.com/k9mail/k-9/releases)
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.fsck.k9)
|
||||
- [:simple-github: GitHub](https://github.com/thundernest/k-9/releases)
|
||||
|
||||
!!! warning
|
||||
</details>
|
||||
|
||||
When replying to someone on a mailing list the "reply" option may also include the mailing list. For more information see [thundernest/k-9 #3738](https://github.com/thundernest/k-9/issues/3738).
|
||||
</div>
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
When replying to someone on a mailing list the "reply" option may also include the mailing list. For more information see [thundernest/k-9 #3738](https://github.com/thundernest/k-9/issues/3738).
|
||||
|
||||
</div>
|
||||
|
||||
### Kontact (KDE)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Kontact** is a personal information manager (PIM) application from the [KDE](https://kde.org) project. It provides a mail client, address book, organizer and RSS client.
|
||||
**Kontact** is a personal information manager (PIM) application from the [KDE](https://kde.org) project. It provides a mail client, address book, organizer and RSS client.
|
||||
|
||||
[:octicons-home-16: Homepage](https://kontact.kde.org){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://kde.org/privacypolicy-apps){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://kontact.kde.org/users/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://invent.kde.org/pim/kmail){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://kde.org/community/donations/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://kontact.kde.org){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://kde.org/privacypolicy-apps){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://kontact.kde.org/users){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://invent.kde.org/pim/kmail){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://kde.org/community/donations){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-linux: Linux](https://kontact.kde.org/download)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.kde.kontact)
|
||||
- [:simple-linux: Linux](https://kontact.kde.org/download)
|
||||
- [:simple-flathub: Flathub](https://flathub.org/apps/details/org.kde.kontact)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### Mailvelope (Browser)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**Mailvelope** is a browser extension that enables the exchange of encrypted emails following the OpenPGP encryption standard.
|
||||
**Mailvelope** is a browser extension that enables the exchange of encrypted emails following the OpenPGP encryption standard.
|
||||
|
||||
[:octicons-home-16: Homepage](https://www.mailvelope.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://www.mailvelope.com/en/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://mailvelope.com/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/mailvelope/mailvelope){ .card-link title="Source Code" }
|
||||
[:octicons-home-16: Homepage](https://mailvelope.com){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://mailvelope.com/privacy-policy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://mailvelope.com/faq){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/mailvelope/mailvelope){ .card-link title="Source Code" }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/mailvelope)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke)
|
||||
- [:simple-microsoftedge: Edge](https://microsoftedge.microsoft.com/addons/detail/mailvelope/dgcbddhdhjppfdfjpciagmmibadmoapc)
|
||||
- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/firefox/addon/mailvelope)
|
||||
- [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke)
|
||||
- [:fontawesome-brands-edge: Edge](https://microsoftedge.microsoft.com/addons/detail/mailvelope/dgcbddhdhjppfdfjpciagmmibadmoapc)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
### NeoMutt (CLI)
|
||||
|
||||
!!! recommendation
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
{ align=right }
|
||||
|
||||
**NeoMutt** is an open-source command line mail reader (or MUA) for Linux and BSD. It's a fork of [Mutt](https://en.wikipedia.org/wiki/Mutt_(email_client)) with added features.
|
||||
**NeoMutt** is an open-source command line mail reader (or MUA) for Linux and BSD. It's a fork of [Mutt](https://en.wikipedia.org/wiki/Mutt_(email_client)) with added features.
|
||||
|
||||
NeoMutt is a text-based client that has a steep learning curve. It is however, very customizable.
|
||||
NeoMutt is a text-based client that has a steep learning curve. It is however, very customizable.
|
||||
|
||||
[:octicons-home-16: Homepage](https://neomutt.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://neomutt.org/guide/){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/neomutt/neomutt){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://www.paypal.com/paypalme/russon/){ .card-link title=Contribute }
|
||||
[:octicons-home-16: Homepage](https://neomutt.org){ .md-button .md-button--primary }
|
||||
[:octicons-info-16:](https://neomutt.org/guide){ .card-link title=Documentation}
|
||||
[:octicons-code-16:](https://github.com/neomutt/neomutt){ .card-link title="Source Code" }
|
||||
[:octicons-heart-16:](https://paypal.com/paypalme/russon){ .card-link title=Contribute }
|
||||
|
||||
??? downloads
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-apple: macOS](https://neomutt.org/distro)
|
||||
- [:simple-linux: Linux](https://neomutt.org/distro)
|
||||
- [:simple-apple: macOS](https://neomutt.org/distro)
|
||||
- [:simple-linux: Linux](https://neomutt.org/distro)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Criteria
|
||||
|
||||
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
|
||||
|
||||
!!! example "This section is new"
|
||||
|
||||
We are working on establishing defined criteria for every section of our site, and this may be subject to change. If you have any questions about our criteria, please [ask on our forum](https://discuss.privacyguides.net/latest) and don't assume we didn't consider something when making our recommendations if it is not listed here. There are many factors considered and discussed when we recommend a project, and documenting every single one is a work-in-progress.
|
||||
|
||||
### Minimum Qualifications
|
||||
|
||||
- Apps developed for open-source operating systems must be open-source.
|
||||
- Apps developed for open-source operating systems must be open source.
|
||||
- Must not collect telemetry, or have an easy way to disable all telemetry.
|
||||
- Must support OpenPGP message encryption.
|
||||
|
||||
@ -233,7 +282,7 @@ Canary Mail is closed-source. We recommend it due to the few choices there are f
|
||||
|
||||
Our best-case criteria represents what we would like to see from the perfect project in this category. Our recommendations may not include any or all of this functionality, but those which do may rank higher than others on this page.
|
||||
|
||||
- Should be open-source.
|
||||
- Should be open source.
|
||||
- Should be cross-platform.
|
||||
- Should not collect any telemetry by default.
|
||||
- Should support OpenPGP natively, i.e. without extensions.
|
||||
|