diff --git a/.all-contributorsrc b/.all-contributorsrc index 56d88864..671ca01e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2859,6 +2859,15 @@ "contributions": [ "doc" ] + }, + { + "login": "IDON-TEXIST", + "name": "IDON-TEXIST", + "avatar_url": "https://avatars.githubusercontent.com/u/73442356?v=4", + "profile": "https://github.com/IDON-TEXIST", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 5, diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a33266aa..c2529d26 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,15 +1,51 @@ # High-traffic pages +/blog/index.md @jonaharagon @freddy-m /docs/index.md @jonaharagon @dngray -/theme/overrides/ @jonaharagon +/theme/home.html @jonaharagon @dngray +/theme/main.html @jonaharagon +/theme/blog-post.html @jonaharagon +/theme/partials/ @jonaharagon +/theme/layouts/ @jonaharagon + +# Blog authors +/blog/.authors.yml @jonaharagon @dngray @freddy-m +/blog/author/dngray.md @dngray +/blog/author/freddy.md @freddy-m +/blog/author/jonah.md @jonaharagon +/blog/author/niek-de-wilde.md @blacklight447 + +# Blog posts +/blog/posts/firefox-privacy-2021-update.md @dngray +/blog/posts/firefox-privacy.md @jonaharagon +/blog/posts/hide-nothing.md @freddy-m +/blog/posts/macos-ventura-privacy-security-updates.md @jonaharagon +/blog/posts/move-fast-and-break-things.md @freddy-m +/blog/posts/mozilla-disappoints-us-yet-again-2.md @jonaharagon +/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md @jonaharagon +/blog/posts/proton-wallet-review.md @jonaharagon +/blog/posts/restrict-act.md @jonaharagon +/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon +/blog/posts/virtual-insanity.md @freddy-m +/blog/posts/welcome-to-privacy-guides.md @jonaharagon # Org /docs/about/ @jonaharagon CODE_OF_CONDUCT.md @jonaharagon -CITATION.cff -LICENSE @jonaharagon +CITATION.cff @jonaharagon +LICENSE @jonaharagon @dngray +LICENSE-CODE @jonaharagon README.md @jonaharagon @dngray +# Config +/mkdocs.yml @jonaharagon +/mkdocs.blog.yml @jonaharagon +/crowdin.yml @jonaharagon +/includes/ @jonaharagon + # Ops +Dockerfile @jonaharagon /Pipfile @jonaharagon /Pipfile.lock @jonaharagon /.github/ @jonaharagon +/run.sh @jonaharagon +/modules/ @jonaharagon diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 27427119..fc13e665 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,29 +1,14 @@ -Changes proposed in this PR: +List of changes proposed in this PR: - - - - - - -- [ ] I agree to the terms listed below: -
Contribution terms (click to expand) - 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. -
- - diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 8a1ee6c8..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2021-2023 Jonah Aragon - -# 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. - -version: 2 - -registries: - github-privacyguides: - type: git - url: https://github.com - username: x-access-token - password: ${{secrets.REPO_PAT}} - -updates: - # Maintain dependencies for GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "monthly" - assignees: - - "jonaharagon" - reviewers: - - "jonaharagon" - labels: - - "fix:github_actions" - - # Maintain submodules - - package-ecosystem: "gitsubmodule" - directory: "/" - registries: - - github-privacyguides - schedule: - 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 -# - package-ecosystem: "pip" -# directory: "/" -# insecure-external-code-execution: allow -# registries: -# - github-privacyguides -# schedule: -# interval: "daily" -# assignees: -# - "jonaharagon" -# reviewers: -# - "jonaharagon" -# labels: -# - "fix:python" diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml index d7b87dc5..ebc1db61 100644 --- a/.github/workflows/build-container.yml +++ b/.github/workflows/build-container.yml @@ -79,7 +79,7 @@ jobs: # 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 + uses: docker/build-push-action@v6.9.0 with: context: . push: true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e8e2a4df..26edc9ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,6 +27,9 @@ on: strict: type: boolean default: false + cache: + type: boolean + default: true permissions: contents: read @@ -57,6 +60,12 @@ jobs: echo "BUILD_INSIDERS=true" >> "$GITHUB_ENV" echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --insiders"" >> "$GITHUB_ENV" + - name: Set Metadata for International Builds + if: inputs.lang != 'en' + run: | + echo "GITREVISIONDATE=false" >> "$GITHUB_ENV" + echo "GITAUTHORS=false" >> "$GITHUB_ENV" + - name: Set Metadata for Offline Mode if: inputs.config == 'offline' run: | @@ -113,6 +122,7 @@ jobs: - name: Restore Privacy Plugin Cache uses: actions/cache/restore@v4.0.2 id: privacy_cache_restore + if: inputs.cache with: key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }} path: | @@ -125,6 +135,7 @@ jobs: - name: Restore Social Plugin Cache uses: actions/cache/restore@v4.0.2 id: social_cache_restore + if: inputs.cache with: key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} path: | @@ -137,6 +148,7 @@ jobs: - name: Restore Optimize Plugin Cache uses: actions/cache/restore@v4.0.2 id: optimize_cache_restore + if: inputs.cache with: key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} path: | @@ -170,7 +182,7 @@ jobs: - name: Find Privacy Plugin Cache uses: actions/cache/restore@v4.0.2 - if: steps.privacy_cache_restore.outputs.cache-hit != 'true' + if: steps.privacy_cache_restore.outputs.cache-hit != 'true' && inputs.cache id: privacy_cache_test with: key: privacy-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/privacy/**') }} @@ -180,7 +192,7 @@ jobs: - name: Find Social Plugin Cache uses: actions/cache/restore@v4.0.2 - if: steps.social_cache_restore.outputs.cache-hit != 'true' + if: steps.social_cache_restore.outputs.cache-hit != 'true' && inputs.cache id: social_cache_test with: key: social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} @@ -191,7 +203,7 @@ jobs: - name: Find Optimize Plugin Cache uses: actions/cache/restore@v4.0.2 - if: steps.optimize_cache_restore.outputs.cache-hit != 'true' + if: steps.optimize_cache_restore.outputs.cache-hit != 'true' && inputs.cache id: optimize_cache_test with: key: optimize-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} @@ -201,14 +213,14 @@ jobs: - name: Save Privacy Plugin Cache uses: actions/cache/save@v4.0.2 - if: steps.privacy_cache_test.outputs.cache-hit != 'true' + if: steps.privacy_cache_test.outputs.cache-hit != 'true' && inputs.cache 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' + if: steps.social_cache_test.outputs.cache-hit != 'true' && inputs.cache with: key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} path: | @@ -217,7 +229,7 @@ jobs: - name: Save Optimize Plugin Cache uses: actions/cache/save@v4.0.2 - if: steps.optimize_cache_test.outputs.cache-hit != 'true' + if: steps.optimize_cache_test.outputs.cache-hit != 'true' && inputs.cache with: key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} path: .cache/plugin/optimize diff --git a/.github/workflows/publish-mirror.yml b/.github/workflows/publish-mirror.yml index 116ae80c..b5216fa1 100644 --- a/.github/workflows/publish-mirror.yml +++ b/.github/workflows/publish-mirror.yml @@ -51,14 +51,3 @@ jobs: with: source-repo: "git@github.com:privacyguides/privacyguides.org.git" destination-repo: "git@codeberg.org:privacyguides/privacyguides.org.git" - - sourcehut: - runs-on: ubuntu-latest - steps: - - name: Mirror to SourceHut - uses: wearerequired/git-mirror-action@v1 - env: - SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }} - with: - source-repo: "git@github.com:privacyguides/privacyguides.org.git" - destination-repo: "git@git.sr.ht:~jonaharagon/privacyguides.org" diff --git a/.github/workflows/publish-pr.yml b/.github/workflows/publish-pr.yml index 65f1a8ff..0853eab4 100644 --- a/.github/workflows/publish-pr.yml +++ b/.github/workflows/publish-pr.yml @@ -87,7 +87,7 @@ jobs: echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT" echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT" - deploy: + deploy_netlify: needs: metadata permissions: contents: read @@ -99,13 +99,27 @@ jobs: secrets: NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }} + deploy_garage: + needs: metadata + permissions: + contents: read + + uses: privacyguides/webserver/.github/workflows/deploy-garage-preview.yml@main + with: + alias: ${{ needs.metadata.outputs.pr_number }} + bucket: ${{ vars.PREVIEW_GARAGE_BUCKET }} + hostname: ${{ vars.PREVIEW_GARAGE_HOSTNAME }} + secrets: + PREVIEW_GARAGE_KEY_ID: ${{ secrets.PREVIEW_GARAGE_KEY_ID }} + PREVIEW_GARAGE_SECRET_KEY: ${{ secrets.PREVIEW_GARAGE_SECRET_KEY }} + comment: permissions: pull-requests: write - needs: [deploy, metadata] + needs: [deploy_garage, metadata] runs-on: ubuntu-latest env: - address: ${{ needs.deploy.outputs.address }} + address: ${{ needs.deploy_garage.outputs.address }} steps: - uses: thollander/actions-comment-pull-request@v2.5.0 with: diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index d5c25113..c04d40c0 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -62,6 +62,17 @@ jobs: lang: ${{ matrix.lang }} context: production continue-on-error: false + cache: false + + build_blog: + needs: submodule + permissions: + contents: read + uses: ./.github/workflows/build-blog.yml + with: + repo: ${{ github.repository }} + ref: ${{ github.ref }} + continue-on-error: false release: name: Create release notes @@ -84,12 +95,14 @@ jobs: makeLatest: true deploy: - needs: build + needs: [build, build_blog] 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 }} + PROD_GARAGE_KEY_ID: ${{ secrets.PROD_GARAGE_KEY_ID }} + PROD_GARAGE_SECRET_KEY: ${{ secrets.PROD_GARAGE_SECRET_KEY }} CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} CLUSTER_USERNAME: ${{ secrets.CLUSTER_USERNAME }} @@ -99,5 +112,5 @@ jobs: cleanup: if: ${{ always() }} - needs: build + needs: [build, build_blog] uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.github/workflows/test-lint.yml b/.github/workflows/test-lint.yml index affe2c37..07f57375 100644 --- a/.github/workflows/test-lint.yml +++ b/.github/workflows/test-lint.yml @@ -103,7 +103,7 @@ jobs: - 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 + uses: oxsecurity/megalinter/flavors/documentation@v8.0.0 env: # All available variables are described in documentation # https://megalinter.io/configuration/ diff --git a/.github/workflows/upload-crowdin.yml b/.github/workflows/upload-crowdin.yml index ed775054..49504a31 100644 --- a/.github/workflows/upload-crowdin.yml +++ b/.github/workflows/upload-crowdin.yml @@ -41,7 +41,7 @@ jobs: uses: actions/checkout@v4 - name: crowdin action - uses: crowdin/github-action@v2.1.1 + uses: crowdin/github-action@v2.2.0 with: upload_sources: true upload_sources_args: "--auto-update --delete-obsolete" diff --git a/Dockerfile b/Dockerfile index 39c666ba..d05c98d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12-alpine as base +FROM python:3.13-alpine as base LABEL org.opencontainers.image.source="https://github.com/privacyguides/privacyguides.org" diff --git a/Pipfile b/Pipfile index 6e209f05..bd8c8b1b 100644 --- a/Pipfile +++ b/Pipfile @@ -30,6 +30,7 @@ mkdocs-git-authors-plugin = "~=0.8" mkdocs-macros-plugin = "~=1.0" jieba = "~=0.42" mkdocs-rss-plugin = "*" +mkdocs-glightbox = "*" [dev-packages] scour = "~=0.38" diff --git a/Pipfile.lock b/Pipfile.lock index fa24a9c9..91b0a3b9 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "0d44b05fce332feadac5f751987ba261ffa2aa8c851364ef94fc1bd91c6feb77" + "sha256": "4707be3ca5e170a9f90dc4dc36c99880bdc9d78df9387779096f23246a63ee0a" }, "pipfile-spec": 6, "requires": { @@ -18,11 +18,11 @@ "default": { "babel": { "hashes": [ - "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb", - "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413" + "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", + "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316" ], "markers": "python_version >= '3.8'", - "version": "==2.15.0" + "version": "==2.16.0" }, "cachecontrol": { "extras": [ @@ -52,180 +52,195 @@ }, "certifi": { "hashes": [ - "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", - "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" + "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9" ], "markers": "python_version >= '3.6'", - "version": "==2024.7.4" + "version": "==2024.8.30" }, "cffi": { "hashes": [ - "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f", - "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab", - "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499", - "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058", - "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693", - "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb", - "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377", - "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885", - "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2", - "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401", - "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4", - "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b", - "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59", - "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f", - "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c", - "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555", - "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa", - "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424", - "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb", - "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2", - "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8", - "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e", - "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9", - "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82", - "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828", - "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759", - "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc", - "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118", - "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf", - "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932", - "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a", - "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29", - "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206", - "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2", - "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c", - "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c", - "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0", - "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a", - "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195", - "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6", - "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9", - "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc", - "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb", - "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0", - "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7", - "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb", - "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a", - "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492", - "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720", - "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42", - "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7", - "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d", - "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d", - "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb", - "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4", - "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2", - "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b", - "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8", - "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e", - "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204", - "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3", - "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150", - "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4", - "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76", - "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e", - "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb", - "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91" + "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", + "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", + "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", + "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", + "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", + "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", + "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", + "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", + "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", + "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", + "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", + "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", + "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", + "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", + "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", + "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", + "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", + "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", + "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", + "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", + "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", + "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", + "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", + "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", + "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", + "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", + "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", + "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", + "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", + "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", + "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", + "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", + "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", + "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", + "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", + "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", + "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", + "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", + "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", + "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", + "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", + "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", + "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", + "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", + "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", + "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", + "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", + "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", + "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", + "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", + "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", + "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", + "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", + "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", + "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", + "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", + "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", + "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", + "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", + "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", + "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" ], "markers": "python_version >= '3.8'", - "version": "==1.17.0" + "version": "==1.17.1" }, "charset-normalizer": { "hashes": [ - "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", - "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", - "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", - "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", - "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", - "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", - "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", - "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", - "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", - "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", - "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", - "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", - "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", - "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", - "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", - "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", - "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", - "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", - "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", - "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", - "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", - "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", - "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", - "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", - "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", - "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", - "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", - "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", - "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", - "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", - "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", - "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", - "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", - "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", - "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", - "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", - "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", - "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", - "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", - "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", - "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", - "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", - "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", - "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", - "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", - "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", - "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", - "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", - "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", - "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", - "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", - "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", - "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", - "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", - "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", - "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", - "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", - "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", - "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", - "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", - "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", - "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", - "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", - "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", - "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", - "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", - "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", - "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", - "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", - "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", - "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", - "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", - "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", - "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", - "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", - "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", - "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", - "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", - "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", - "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", - "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", - "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", - "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", - "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", - "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", - "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", - "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", - "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", - "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", - "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621", + "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", + "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", + "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", + "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", + "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", + "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d", + "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", + "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", + "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", + "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", + "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab", + "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be", + "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", + "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0", + "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2", + "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62", + "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62", + "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", + "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", + "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", + "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455", + "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858", + "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", + "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", + "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", + "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", + "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea", + "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", + "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", + "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", + "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", + "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd", + "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", + "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242", + "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee", + "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", + "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51", + "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8", + "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", + "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613", + "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742", + "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", + "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", + "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", + "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", + "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", + "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", + "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", + "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417", + "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", + "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", + "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca", + "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa", + "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", + "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149", + "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41", + "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574", + "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0", + "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f", + "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", + "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654", + "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3", + "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19", + "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", + "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578", + "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", + "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", + "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51", + "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", + "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a", + "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade", + "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", + "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6", + "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6", + "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2", + "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12", + "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf", + "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", + "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7", + "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", + "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", + "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b", + "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", + "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", + "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4", + "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", + "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a", + "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748", + "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", + "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.3.2" + "version": "==3.4.0" }, "click": { "hashes": [ @@ -261,10 +276,10 @@ }, "filelock": { "hashes": [ - "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb", - "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7" + "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", + "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435" ], - "version": "==3.15.4" + "version": "==3.16.1" }, "ghp-import": { "hashes": [ @@ -289,13 +304,20 @@ "markers": "python_version >= '3.7'", "version": "==3.1.43" }, + "hjson": { + "hashes": [ + "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", + "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89" + ], + "version": "==3.1.0" + }, "idna": { "hashes": [ - "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", - "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" + "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" ], - "markers": "python_version >= '3.5'", - "version": "==3.7" + "markers": "python_version >= '3.6'", + "version": "==3.10" }, "jieba": { "hashes": [ @@ -314,77 +336,78 @@ }, "markdown": { "hashes": [ - "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f", - "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224" + "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", + "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803" ], "markers": "python_version >= '3.8'", - "version": "==3.6" + "version": "==3.7" }, "markupsafe": { "hashes": [ - "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", - "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", - "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", - "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", - "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", - "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", - "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", - "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df", - "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", - "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", - "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", - "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", - "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", - "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371", - "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2", - "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", - "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52", - "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", - "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", - "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", - "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", - "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", - "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", - "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", - "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", - "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", - "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", - "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", - "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", - "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9", - "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", - "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", - "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", - "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", - "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", - "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", - "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a", - "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", - "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", - "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", - "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", - "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", - "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", - "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", - "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", - "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f", - "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50", - "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", - "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", - "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", - "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", - "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", - "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", - "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", - "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf", - "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", - "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", - "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", - "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", - "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68" + "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", + "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", + "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", + "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", + "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", + "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", + "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", + "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", + "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", + "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", + "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", + "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", + "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", + "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", + "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", + "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", + "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", + "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", + "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", + "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", + "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", + "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", + "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", + "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", + "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", + "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", + "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", + "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", + "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", + "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", + "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", + "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", + "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", + "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", + "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", + "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", + "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", + "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", + "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", + "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", + "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", + "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", + "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", + "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", + "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", + "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", + "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", + "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", + "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", + "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", + "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", + "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", + "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", + "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", + "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", + "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", + "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", + "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", + "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", + "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", + "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50" ], - "markers": "python_version >= '3.7'", - "version": "==2.1.5" + "markers": "python_version >= '3.9'", + "version": "==3.0.2" }, "mergedeep": { "hashes": [ @@ -396,11 +419,11 @@ }, "mkdocs": { "hashes": [ - "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7", - "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512" + "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", + "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e" ], "markers": "python_version >= '3.8'", - "version": "==1.6.0" + "version": "==1.6.1" }, "mkdocs-get-deps": { "hashes": [ @@ -412,30 +435,38 @@ }, "mkdocs-git-authors-plugin": { "hashes": [ - "sha256:380730a05eeb947a7e84be05fdb1c5ae2a7bc70fd9f6eda941f187c87ae37052", - "sha256:6161f63b87064481a48d9ad01c23e43c3e758930c3a9cc167fe482909ceb9eac" + "sha256:60b291603479c765c3ca49fc4bda88a58989d9703c5e396fa1e81ae7de8a2836", + "sha256:b719fdab2199dc1633c4f69296ac66ec4adb6365ddd998409aefc87b1d2790ac" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==0.9.0" + "markers": "python_version >= '3.8'", + "version": "==0.9.1" }, "mkdocs-git-revision-date-localized-plugin": { "hashes": [ - "sha256:e432942ce4ee8aa9b9f4493e993dee9d2cc08b3ea2b40a3d6b03ca0f2a4bcaa2", - "sha256:f015cb0f3894a39b33447b18e270ae391c4e25275cac5a626e80b243784e2692" + "sha256:439e2f14582204050a664c258861c325064d97cdc848c541e48bb034a6c4d0cb", + "sha256:c99377ee119372d57a9e47cff4e68f04cce634a74831c06bc89b33e456e840a1" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.2.6" + "version": "==1.3.0" + }, + "mkdocs-glightbox": { + "hashes": [ + "sha256:392b34207bf95991071a16d5f8916d1d2f2cd5d5bb59ae2997485ccd778c70d9", + "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf" + ], + "index": "pypi", + "version": "==0.4.0" }, "mkdocs-macros-plugin": { "hashes": [ - "sha256:f60e26f711f5a830ddf1e7980865bf5c0f1180db56109803cdd280073c1a050a", - "sha256:fe348d75f01c911f362b6d998c57b3d85b505876dde69db924f2c512c395c328" + "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59", + "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.0.5" + "version": "==1.3.7" }, "mkdocs-material": { "extras": [ @@ -454,74 +485,82 @@ }, "mkdocs-rss-plugin": { "hashes": [ - "sha256:7308ac13f0976c0479db5a62cb7ef9b10fdd74b6521e459bb66a13e2cfe69d4b", - "sha256:92995ed6c77b2ae1f5f2913e62282c27e50c35d618c4291b5b939e50badd7504" + "sha256:be66b11300f1e951d3393ce8da60ca6d730108f731434cc256670b3b8e0cffb3", + "sha256:f0e275c933be69a77ee7af92256d88e2969e10c36c5ee1ecdb663a4ea4aa08ea" ], "index": "pypi", - "markers": "python_version >= '3.8' and python_version < '4'", - "version": "==1.15.0" + "markers": "python_version >= '3.9' and python_version < '4'", + "version": "==1.16.0" }, "msgpack": { "hashes": [ - "sha256:00e073efcba9ea99db5acef3959efa45b52bc67b61b00823d2a1a6944bf45982", - "sha256:0726c282d188e204281ebd8de31724b7d749adebc086873a59efb8cf7ae27df3", - "sha256:0ceea77719d45c839fd73abcb190b8390412a890df2f83fb8cf49b2a4b5c2f40", - "sha256:114be227f5213ef8b215c22dde19532f5da9652e56e8ce969bf0a26d7c419fee", - "sha256:13577ec9e247f8741c84d06b9ece5f654920d8365a4b636ce0e44f15e07ec693", - "sha256:1876b0b653a808fcd50123b953af170c535027bf1d053b59790eebb0aeb38950", - "sha256:1ab0bbcd4d1f7b6991ee7c753655b481c50084294218de69365f8f1970d4c151", - "sha256:1cce488457370ffd1f953846f82323cb6b2ad2190987cd4d70b2713e17268d24", - "sha256:26ee97a8261e6e35885c2ecd2fd4a6d38252246f94a2aec23665a4e66d066305", - "sha256:3528807cbbb7f315bb81959d5961855e7ba52aa60a3097151cb21956fbc7502b", - "sha256:374a8e88ddab84b9ada695d255679fb99c53513c0a51778796fcf0944d6c789c", - "sha256:376081f471a2ef24828b83a641a02c575d6103a3ad7fd7dade5486cad10ea659", - "sha256:3923a1778f7e5ef31865893fdca12a8d7dc03a44b33e2a5f3295416314c09f5d", - "sha256:4916727e31c28be8beaf11cf117d6f6f188dcc36daae4e851fee88646f5b6b18", - "sha256:493c5c5e44b06d6c9268ce21b302c9ca055c1fd3484c25ba41d34476c76ee746", - "sha256:505fe3d03856ac7d215dbe005414bc28505d26f0c128906037e66d98c4e95868", - "sha256:5845fdf5e5d5b78a49b826fcdc0eb2e2aa7191980e3d2cfd2a30303a74f212e2", - "sha256:5c330eace3dd100bdb54b5653b966de7f51c26ec4a7d4e87132d9b4f738220ba", - "sha256:5dbf059fb4b7c240c873c1245ee112505be27497e90f7c6591261c7d3c3a8228", - "sha256:5e390971d082dba073c05dbd56322427d3280b7cc8b53484c9377adfbae67dc2", - "sha256:5fbb160554e319f7b22ecf530a80a3ff496d38e8e07ae763b9e82fadfe96f273", - "sha256:64d0fcd436c5683fdd7c907eeae5e2cbb5eb872fafbc03a43609d7941840995c", - "sha256:69284049d07fce531c17404fcba2bb1df472bc2dcdac642ae71a2d079d950653", - "sha256:6a0e76621f6e1f908ae52860bdcb58e1ca85231a9b0545e64509c931dd34275a", - "sha256:73ee792784d48aa338bba28063e19a27e8d989344f34aad14ea6e1b9bd83f596", - "sha256:74398a4cf19de42e1498368c36eed45d9528f5fd0155241e82c4082b7e16cffd", - "sha256:7938111ed1358f536daf311be244f34df7bf3cdedb3ed883787aca97778b28d8", - "sha256:82d92c773fbc6942a7a8b520d22c11cfc8fd83bba86116bfcf962c2f5c2ecdaa", - "sha256:83b5c044f3eff2a6534768ccfd50425939e7a8b5cf9a7261c385de1e20dcfc85", - "sha256:8db8e423192303ed77cff4dce3a4b88dbfaf43979d280181558af5e2c3c71afc", - "sha256:9517004e21664f2b5a5fd6333b0731b9cf0817403a941b393d89a2f1dc2bd836", - "sha256:95c02b0e27e706e48d0e5426d1710ca78e0f0628d6e89d5b5a5b91a5f12274f3", - "sha256:99881222f4a8c2f641f25703963a5cefb076adffd959e0558dc9f803a52d6a58", - "sha256:9ee32dcb8e531adae1f1ca568822e9b3a738369b3b686d1477cbc643c4a9c128", - "sha256:a22e47578b30a3e199ab067a4d43d790249b3c0587d9a771921f86250c8435db", - "sha256:b5505774ea2a73a86ea176e8a9a4a7c8bf5d521050f0f6f8426afe798689243f", - "sha256:bd739c9251d01e0279ce729e37b39d49a08c0420d3fee7f2a4968c0576678f77", - "sha256:d16a786905034e7e34098634b184a7d81f91d4c3d246edc6bd7aefb2fd8ea6ad", - "sha256:d3420522057ebab1728b21ad473aa950026d07cb09da41103f8e597dfbfaeb13", - "sha256:d56fd9f1f1cdc8227d7b7918f55091349741904d9520c65f0139a9755952c9e8", - "sha256:d661dc4785affa9d0edfdd1e59ec056a58b3dbb9f196fa43587f3ddac654ac7b", - "sha256:dfe1f0f0ed5785c187144c46a292b8c34c1295c01da12e10ccddfc16def4448a", - "sha256:e1dd7839443592d00e96db831eddb4111a2a81a46b028f0facd60a09ebbdd543", - "sha256:e2872993e209f7ed04d963e4b4fbae72d034844ec66bc4ca403329db2074377b", - "sha256:e2f879ab92ce502a1e65fce390eab619774dda6a6ff719718069ac94084098ce", - "sha256:e3aa7e51d738e0ec0afbed661261513b38b3014754c9459508399baf14ae0c9d", - "sha256:e532dbd6ddfe13946de050d7474e3f5fb6ec774fbb1a188aaf469b08cf04189a", - "sha256:e6b7842518a63a9f17107eb176320960ec095a8ee3b4420b5f688e24bf50c53c", - "sha256:e75753aeda0ddc4c28dce4c32ba2f6ec30b1b02f6c0b14e547841ba5b24f753f", - "sha256:eadb9f826c138e6cf3c49d6f8de88225a3c0ab181a9b4ba792e006e5292d150e", - "sha256:ed59dd52075f8fc91da6053b12e8c89e37aa043f8986efd89e61fae69dc1b011", - "sha256:ef254a06bcea461e65ff0373d8a0dd1ed3aa004af48839f002a0c994a6f72d04", - "sha256:f3709997b228685fe53e8c433e2df9f0cdb5f4542bd5114ed17ac3c0129b0480", - "sha256:f51bab98d52739c50c56658cc303f190785f9a2cd97b823357e7aeae54c8f68a", - "sha256:f9904e24646570539a8950400602d66d2b2c492b9010ea7e965025cb71d0c86d", - "sha256:f9af38a89b6a5c04b7d18c492c8ccf2aee7048aff1ce8437c4683bb5a1df893d" + "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", + "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", + "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", + "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", + "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", + "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f", + "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", + "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", + "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b", + "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", + "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", + "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", + "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", + "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", + "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", + "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", + "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468", + "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7", + "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", + "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", + "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325", + "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1", + "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846", + "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", + "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", + "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", + "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", + "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", + "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb", + "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", + "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", + "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", + "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", + "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", + "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", + "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", + "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", + "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", + "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", + "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48", + "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb", + "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74", + "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b", + "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346", + "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", + "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", + "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", + "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", + "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", + "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", + "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", + "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", + "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec", + "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8", + "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", + "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", + "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", + "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", + "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870", + "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", + "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96", + "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c", + "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd", + "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788" ], "markers": "python_version >= '3.8'", - "version": "==1.0.8" + "version": "==1.1.0" }, "packaging": { "hashes": [ @@ -533,9 +572,10 @@ }, "paginate": { "hashes": [ - "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d" + "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", + "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591" ], - "version": "==0.5.6" + "version": "==0.5.7" }, "pathspec": { "hashes": [ @@ -632,11 +672,11 @@ }, "platformdirs": { "hashes": [ - "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", - "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" + "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", + "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb" ], "markers": "python_version >= '3.8'", - "version": "==4.2.2" + "version": "==4.3.6" }, "pycparser": { "hashes": [ @@ -656,11 +696,11 @@ }, "pymdown-extensions": { "hashes": [ - "sha256:6ff740bcd99ec4172a938970d42b96128bdc9d4b9bcad72494f29921dc69b753", - "sha256:d323f7e90d83c86113ee78f3fe62fc9dee5f56b54d912660703ea1816fed5626" + "sha256:41cdde0a77290e480cf53892f5c5e50921a7ee3e5cd60ba91bf19837b33badcf", + "sha256:bc8847ecc9e784a098efd35e20cba772bc5a1b529dfcef9dc1972db9021a1049" ], "markers": "python_version >= '3.8'", - "version": "==10.9" + "version": "==10.11.2" }, "python-dateutil": { "hashes": [ @@ -672,11 +712,11 @@ }, "pytz": { "hashes": [ - "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812", - "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319" + "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", + "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725" ], "markers": "python_version < '3.9'", - "version": "==2024.1" + "version": "==2024.2" }, "pyyaml": { "hashes": [ @@ -747,88 +787,103 @@ }, "regex": { "hashes": [ - "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c", - "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535", - "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24", - "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce", - "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc", - "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5", - "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce", - "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53", - "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d", - "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c", - "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908", - "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8", - "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024", - "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281", - "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a", - "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169", - "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364", - "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa", - "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be", - "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53", - "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759", - "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e", - "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b", - "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52", - "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610", - "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05", - "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2", - "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca", - "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0", - "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293", - "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289", - "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e", - "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f", - "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c", - "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94", - "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad", - "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46", - "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9", - "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9", - "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee", - "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9", - "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1", - "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9", - "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799", - "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1", - "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b", - "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf", - "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5", - "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2", - "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e", - "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51", - "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506", - "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73", - "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7", - "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5", - "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57", - "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4", - "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd", - "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b", - "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41", - "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe", - "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59", - "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8", - "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f", - "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e", - "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750", - "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1", - "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96", - "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc", - "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440", - "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe", - "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38", - "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950", - "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2", - "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd", - "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce", - "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66", - "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3", - "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86" + "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623", + "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199", + "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664", + "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f", + "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca", + "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066", + "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca", + "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39", + "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d", + "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6", + "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35", + "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408", + "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5", + "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a", + "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9", + "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92", + "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766", + "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168", + "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca", + "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508", + "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df", + "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf", + "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b", + "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4", + "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268", + "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6", + "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c", + "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62", + "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231", + "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36", + "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba", + "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4", + "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e", + "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822", + "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4", + "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d", + "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71", + "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50", + "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d", + "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad", + "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8", + "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8", + "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8", + "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd", + "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16", + "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664", + "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a", + "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f", + "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd", + "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a", + "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9", + "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199", + "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d", + "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963", + "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009", + "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a", + "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679", + "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96", + "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42", + "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8", + "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e", + "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7", + "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8", + "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802", + "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366", + "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137", + "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784", + "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29", + "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3", + "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771", + "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60", + "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a", + "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4", + "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0", + "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84", + "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd", + "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1", + "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776", + "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142", + "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89", + "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c", + "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8", + "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35", + "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a", + "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86", + "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9", + "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64", + "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554", + "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85", + "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb", + "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0", + "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8", + "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb", + "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919" ], "markers": "python_version >= '3.8'", - "version": "==2024.7.24" + "version": "==2024.9.11" }, "requests": { "hashes": [ @@ -854,67 +909,73 @@ "markers": "python_version >= '3.7'", "version": "==5.0.1" }, - "termcolor": { + "super-collections": { "hashes": [ - "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63", - "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a" + "sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff", + "sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46" ], "markers": "python_version >= '3.8'", - "version": "==2.4.0" + "version": "==0.5.3" + }, + "termcolor": { + "hashes": [ + "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", + "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f" + ], + "markers": "python_version >= '3.9'", + "version": "==2.5.0" }, "tinycss2": { "hashes": [ - "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d", - "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7" + "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", + "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289" ], "markers": "python_version >= '3.8'", - "version": "==1.3.0" + "version": "==1.4.0" }, "urllib3": { "hashes": [ - "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", - "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168" + "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" ], "markers": "python_version >= '3.8'", - "version": "==2.2.2" + "version": "==2.2.3" }, "watchdog": { "hashes": [ - "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7", - "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767", - "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175", - "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459", - "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5", - "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429", - "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6", - "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d", - "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7", - "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28", - "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235", - "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57", - "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a", - "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5", - "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709", - "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee", - "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84", - "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd", - "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba", - "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db", - "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682", - "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35", - "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d", - "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645", - "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253", - "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193", - "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b", - "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44", - "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b", - "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625", - "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e", - "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5" + "sha256:0f9332243355643d567697c3e3fa07330a1d1abf981611654a1f2bf2175612b7", + "sha256:1021223c08ba8d2d38d71ec1704496471ffd7be42cfb26b87cd5059323a389a1", + "sha256:108f42a7f0345042a854d4d0ad0834b741d421330d5f575b81cb27b883500176", + "sha256:1e9679245e3ea6498494b3028b90c7b25dbb2abe65c7d07423ecfc2d6218ff7c", + "sha256:223160bb359281bb8e31c8f1068bf71a6b16a8ad3d9524ca6f523ac666bb6a1e", + "sha256:26dd201857d702bdf9d78c273cafcab5871dd29343748524695cecffa44a8d97", + "sha256:294b7a598974b8e2c6123d19ef15de9abcd282b0fbbdbc4d23dfa812959a9e05", + "sha256:349c9488e1d85d0a58e8cb14222d2c51cbc801ce11ac3936ab4c3af986536926", + "sha256:49f4d36cb315c25ea0d946e018c01bb028048023b9e103d3d3943f58e109dd45", + "sha256:53a3f10b62c2d569e260f96e8d966463dec1a50fa4f1b22aec69e3f91025060e", + "sha256:53adf73dcdc0ef04f7735066b4a57a4cd3e49ef135daae41d77395f0b5b692cb", + "sha256:560135542c91eaa74247a2e8430cf83c4342b29e8ad4f520ae14f0c8a19cfb5b", + "sha256:720ef9d3a4f9ca575a780af283c8fd3a0674b307651c1976714745090da5a9e8", + "sha256:752fb40efc7cc8d88ebc332b8f4bcbe2b5cc7e881bccfeb8e25054c00c994ee3", + "sha256:78864cc8f23dbee55be34cc1494632a7ba30263951b5b2e8fc8286b95845f82c", + "sha256:85527b882f3facda0579bce9d743ff7f10c3e1e0db0a0d0e28170a7d0e5ce2ea", + "sha256:90a67d7857adb1d985aca232cc9905dd5bc4803ed85cfcdcfcf707e52049eda7", + "sha256:91b522adc25614cdeaf91f7897800b82c13b4b8ac68a42ca959f992f6990c490", + "sha256:9413384f26b5d050b6978e6fcd0c1e7f0539be7a4f1a885061473c5deaa57221", + "sha256:94d11b07c64f63f49876e0ab8042ae034674c8653bfcdaa8c4b32e71cfff87e8", + "sha256:950f531ec6e03696a2414b6308f5c6ff9dab7821a768c9d5788b1314e9a46ca7", + "sha256:a2e8f3f955d68471fa37b0e3add18500790d129cc7efe89971b8a4cc6fdeb0b2", + "sha256:ae6deb336cba5d71476caa029ceb6e88047fc1dc74b62b7c4012639c0b563906", + "sha256:b8ca4d854adcf480bdfd80f46fdd6fb49f91dd020ae11c89b3a79e19454ec627", + "sha256:c66f80ee5b602a9c7ab66e3c9f36026590a0902db3aea414d59a2f55188c1f49", + "sha256:d52db5beb5e476e6853da2e2d24dbbbed6797b449c8bf7ea118a4ee0d2c9040e", + "sha256:dd021efa85970bd4824acacbb922066159d0f9e546389a4743d56919b6758b91", + "sha256:e25adddab85f674acac303cf1f5835951345a56c5f7f582987d266679979c75b", + "sha256:f00b4cf737f568be9665563347a910f8bdc76f88c2970121c86243c8cfdf90e9", + "sha256:f01f4a3565a387080dc49bdd1fefe4ecc77f894991b88ef927edbfa45eb10818" ], - "markers": "python_version >= '3.8'", - "version": "==4.0.1" + "markers": "python_version >= '3.9'", + "version": "==5.0.3" }, "webencodings": { "hashes": [ diff --git a/README.md b/README.md index 1ab7c4d4..216635dc 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ - - + + @@ -44,7 +44,7 @@ The current list of team members can be found [here](https://www.privacyguides.org/en/about/#executive-committee). 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://nytimes.com/wirecutter/guides/online-security-social-media-privacy), and [Wired](https://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), [Wired](https://wired.com/story/firefox-mozilla-2022), and [Fast Company](https://www.fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again).* ## Contributing @@ -593,6 +593,9 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
Kieran Colfer

📖
Triple T

📖 + +
IDON-TEXIST

📖 + diff --git a/blog/.authors.yml b/blog/.authors.yml index 3b371a98..03582ed4 100644 --- a/blog/.authors.yml +++ b/blog/.authors.yml @@ -12,6 +12,9 @@ authors: name: Niek de Wilde description: Team Member avatar: https://github.com/blacklight447.png + mastodon: + username: blacklight447 + instance: mastodon.social dngray: name: Daniel Gray description: Team Member @@ -22,8 +25,12 @@ authors: avatar: https://github.com/freddy-m.png jonah: name: Jonah Aragon - description: Team Member + description: Project Director avatar: https://github.com/jonaharagon.png + mastodon: + username: jonah + instance: neat.computer + twitter: jonaharagon kaitebay: name: Kai Tebay description: Former Team Member diff --git a/blog/assets/images/onion-browser-review/21A92967-2E47-4317-AB2E-C0F732673C3E_1_102_o.jpeg b/blog/assets/images/onion-browser-review/21A92967-2E47-4317-AB2E-C0F732673C3E_1_102_o.jpeg new file mode 100644 index 00000000..69e8d5e0 Binary files /dev/null and b/blog/assets/images/onion-browser-review/21A92967-2E47-4317-AB2E-C0F732673C3E_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/2774018C-C4DD-419C-9D77-9BE8E5A51A19_1_102_o.jpeg b/blog/assets/images/onion-browser-review/2774018C-C4DD-419C-9D77-9BE8E5A51A19_1_102_o.jpeg new file mode 100644 index 00000000..accd4e92 Binary files /dev/null and b/blog/assets/images/onion-browser-review/2774018C-C4DD-419C-9D77-9BE8E5A51A19_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/51B33FA1-D9B4-4EF4-82C6-259568C845EC_1_102_o.jpeg b/blog/assets/images/onion-browser-review/51B33FA1-D9B4-4EF4-82C6-259568C845EC_1_102_o.jpeg new file mode 100644 index 00000000..7b38fb3e Binary files /dev/null and b/blog/assets/images/onion-browser-review/51B33FA1-D9B4-4EF4-82C6-259568C845EC_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/757A93D0-CCCB-4743-8AF2-17B001EC774A_1_102_o.jpeg b/blog/assets/images/onion-browser-review/757A93D0-CCCB-4743-8AF2-17B001EC774A_1_102_o.jpeg new file mode 100644 index 00000000..cdfa89e5 Binary files /dev/null and b/blog/assets/images/onion-browser-review/757A93D0-CCCB-4743-8AF2-17B001EC774A_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/87651D0E-EFE0-4C0F-98E7-9898EBA74334_1_102_o.jpeg b/blog/assets/images/onion-browser-review/87651D0E-EFE0-4C0F-98E7-9898EBA74334_1_102_o.jpeg new file mode 100644 index 00000000..664885e1 Binary files /dev/null and b/blog/assets/images/onion-browser-review/87651D0E-EFE0-4C0F-98E7-9898EBA74334_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/8A3E82E7-128E-4B3B-B8BB-276063226D41_1_102_o.jpeg b/blog/assets/images/onion-browser-review/8A3E82E7-128E-4B3B-B8BB-276063226D41_1_102_o.jpeg new file mode 100644 index 00000000..12faf910 Binary files /dev/null and b/blog/assets/images/onion-browser-review/8A3E82E7-128E-4B3B-B8BB-276063226D41_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/C3252F74-C6C1-4616-B3CD-17EA1183BE0C_1_102_o.jpeg b/blog/assets/images/onion-browser-review/C3252F74-C6C1-4616-B3CD-17EA1183BE0C_1_102_o.jpeg new file mode 100644 index 00000000..4aa896d2 Binary files /dev/null and b/blog/assets/images/onion-browser-review/C3252F74-C6C1-4616-B3CD-17EA1183BE0C_1_102_o.jpeg differ diff --git a/blog/assets/images/onion-browser-review/D0A2D20B-5550-4C1F-8FC6-F6D84AEBDF13_1_102_o.jpeg b/blog/assets/images/onion-browser-review/D0A2D20B-5550-4C1F-8FC6-F6D84AEBDF13_1_102_o.jpeg new file mode 100644 index 00000000..5c43c6aa Binary files /dev/null and b/blog/assets/images/onion-browser-review/D0A2D20B-5550-4C1F-8FC6-F6D84AEBDF13_1_102_o.jpeg differ diff --git a/blog/assets/images/proton-wallet-review/1.png b/blog/assets/images/proton-wallet-review/1.png new file mode 100644 index 00000000..c2e24563 Binary files /dev/null and b/blog/assets/images/proton-wallet-review/1.png differ diff --git a/blog/assets/images/proton-wallet-review/2.png b/blog/assets/images/proton-wallet-review/2.png new file mode 100644 index 00000000..0016a354 Binary files /dev/null and b/blog/assets/images/proton-wallet-review/2.png differ diff --git a/blog/assets/images/proton-wallet-review/3.png b/blog/assets/images/proton-wallet-review/3.png new file mode 100644 index 00000000..980f05ea Binary files /dev/null and b/blog/assets/images/proton-wallet-review/3.png differ diff --git a/blog/assets/images/proton-wallet-review/4.png b/blog/assets/images/proton-wallet-review/4.png new file mode 100644 index 00000000..238e3f76 Binary files /dev/null and b/blog/assets/images/proton-wallet-review/4.png differ diff --git a/blog/author/dngray.md b/blog/author/dngray.md new file mode 100644 index 00000000..88504813 --- /dev/null +++ b/blog/author/dngray.md @@ -0,0 +1 @@ +# Daniel Gray diff --git a/blog/author/jonah.md b/blog/author/jonah.md index 259d64ff..19eea7f3 100644 --- a/blog/author/jonah.md +++ b/blog/author/jonah.md @@ -1,3 +1,30 @@ +--- +description: Jonah Aragon is the Project Director and staff writer at Privacy Guides. His role includes researching and writing for this website, system administration, creating Privacy Guides Online Learning course content, reviewing the products recommended here, and most other day-to-day tasks. +schema: + - + "@context": https://schema.org + "@type": ProfilePage + dateCreated: "2019-10-31T00:00:00Z" + dateModified: "2024-09-09T00:00:00Z" + mainEntity: + - + "@context": https://schema.org + "@type": Person + name: Jonah Aragon + jobTitle: Project Director + description: Jonah Aragon is the Project Director and staff writer at Privacy Guides. + url: https://www.privacyguides.org/articles/author/jonah/ + image: https://www.privacyguides.org/articles/assets/external/github.com/jonaharagon.png.jpg + sameAs: + - https://www.jonaharagon.com + - https://discuss.privacyguides.net/u/jonah + - https://shop.jonaharagon.com + - https://jonaharagon.me + - https://mastodon.neat.computer/@jonah + - https://www.youtube.com/@jonaharagon + - https://www.wikidata.org/wiki/Q117304062 +--- + # Jonah Aragon ![Profile picture](https://github.com/jonaharagon.png){ align=right } diff --git a/blog/category/announcements.md b/blog/category/announcements.md new file mode 100644 index 00000000..ca25553b --- /dev/null +++ b/blog/category/announcements.md @@ -0,0 +1,7 @@ +--- +description: The latest announcements and updates from the Privacy Guides team. +--- + +# Announcements + +Follow this page for the latest updates & announcements from the Privacy Guides team, and join the [announcements category](https://discuss.privacyguides.net/c/announcements/5) on our forum to discuss anything you read here! diff --git a/blog/category/news.md b/blog/category/news.md new file mode 100644 index 00000000..2275c4f4 --- /dev/null +++ b/blog/category/news.md @@ -0,0 +1,7 @@ +--- +description: Privacy Guides News presents the latest tech news about the world's best (and occasionally worst) software, hardware, and services in the privacy world. +--- + +# News + +The latest tech news about the world's best (and occasionally worst) software, hardware, and services in the privacy world. *Privacy Guides News* has you covered for any important information you might need on your privacy journey. diff --git a/blog/category/reviews.md b/blog/category/reviews.md new file mode 100644 index 00000000..6125ff23 --- /dev/null +++ b/blog/category/reviews.md @@ -0,0 +1,7 @@ +--- +description: Read the latest privacy product reviews and stories from Privacy Guides contributing writers. +--- + +# Reviews + +Looking for alternatives to privacy-invasive apps you use everyday? Do you just want to know all the details behind your favorite privacy tools? *Privacy Guides Reviews* is the place to find all that and more. This is your one stop to find the latest advice and recommendations on things we use every day directly from Privacy Guides contributors. diff --git a/blog/editorial.md b/blog/editorial.md new file mode 100644 index 00000000..10a5a39a --- /dev/null +++ b/blog/editorial.md @@ -0,0 +1,107 @@ +--- +title: Editorial Policy +--- + +This page provides transparent information about Privacy Guides, its editorial process, and how Privacy Guides creates trustworthy news, articles, and reviews. + +Moreover, it is a part of Privacy Guides' commitment to [**The Trust Project**](https://thetrustproject.org/), "an international consortium of news organizations implementing transparency standards and working with technology platforms to affirm and amplify journalism’s commitment to transparency, accuracy, inclusion and fairness so that the public can make informed news choices." Privacy Guides is not currently a news partner of the program, but wholeheartedly supports its mission and values. + +## Coverage Priorities + +First and foremost, Privacy Guides is committed to publishing content related to the personal privacy and cybersecurity industry and communities. We firmly believe that privacy is a human right, which should not be intruded upon by any corporation, government, or other entity. + +To further our beliefs, Privacy Guides strives to create coverage that promotes the ideals of personal privacy and security in online spaces, encourages companies to engage in privacy-friendly behavior, and holds privacy and security invasive entities accountable for their actions. + +## Our Philosophy + +Privacy Guides strongly believes in independent information published by independent people with varying points of view. As an organization, we are firm proponents of freedom of speech, expression, and the press. Privacy Guides contributors are free to share their own opinions, even when they are controversial. Every opinion article is clearly labeled as such at the beginning of the news content. + +## Ethics Policy + +Privacy Guides' ethical code is based in our willingness to be accurate, fair, and complete, and for all of our writers to act with honesty, transparency, and independence. + +### Truth and Accuracy + +Privacy Guides contributors are expected to be as accurate as possible. Getting facts from reliable sources is the defining principle of journalism. Privacy Guides always strives to provide all the relevant facts available, ensure those facts have been verified, and generally hold ourselves to the highest standards of accuracy and truth. When we are unable to corroborate certain information, Privacy Guides always makes that clear to readers. + +### Independence + +Privacy Guides contributors must always be independent voices in the privacy community. Privacy Guides does not act on behalf of special interests, whether corporate, political, or cultural, and whether formally or informally. Independent fact-checking is always involved in the publication process. + +### Fairness and Impartiality + +Many stories have at least two sides. While we are not obligated to present every viewpoint in every article we publish, our stories are balanced and add context. Our impertial reporting is a significant part of why our community has trust and confidence in our work. + +### Humanity + +Privacy Guides contributors do no harm. We are aware of the impact of our words on the lives of others. Private persons have privacy rights that must be balanced against the public interest in reporting information about them. Our pursuit of the news is not a license for arrogance, and we will always treat the subject of any story with respect. + +### Accountability + +As professional and responsible journalists, we will always hold ourselves accountable for our work. Corrections are published when errors are discovered, and we always listen to the concerns of our audience. + +## Corrections Policy + +Privacy Guides believes in transparency and honesty. Therefore, we will correct mistakes promptly and ensure our readers are notified. In the online world of journalism, completeness and freshness of content are huge values, and we believe accuracy is equally essential. We will ensure expediency when making corrections as needed. + +When an error is detected in an article, Privacy Guides will immediately work to find the correct information, clearly display the correction within the affected article, and include the following: + +- The correct information. +- What was originally published that was incorrect. +- The severity of the error. +- The date when the change took place. + +When errors cannot be amended within the body of an article's content, corrections are displayed in the last paragraph of the content. Rather than remove completely the content containing a mistake, we provide clarification and admittance of our mistakes to preserve transparency. + +## Verification & Fact-Checking + +Privacy Guides prides itself on the validity of its content, and therefore does whatever it can to ensure that the information presented by its contributors is accurate. As a well-known global publication, Privacy Guides understands the importance of approaching claims with skepticism, thinking critically, and upholding accuracy in whatever way possible. + +Privacy Guides encourages its writers to keep the following considerations in mind before publishing content: + +- Always credit, acknowledge, and verify the source(s) of your information. +- Consider whether you know enough about the information to qualify as a trustable source yourself. +- Think critically when addressing claims. +- Never make assumptions. + +We trust the integrity of our contributors and the accuracy of content published on this website. In the case that a mistake is made, we understand the importance of admitting to them and working diligently to provide the correct information. We always encourage our readers, sources, and other contributors to provide us with feedback on any of our content. + +## Unnamed Sources Policy + +Privacy Guides will only used unnamed sources in our news reporting if: + +1. The material is informative, not opinion or speculation. +2. The material is vital to the news report. +3. The source is reliable, and in a position to have accurate information. +4. The information provided is not available except under conditions of anonymity imposed by the source. + +Privacy Guides will always identify sources whenever possible. Our readership is entitled to as much information as possible in order to judge the reliability of our sources themselves. + +: Privacy Guides' credibility is our most important asset. If our readers don't have faith that the stories they are reading here are accurate and fair, or if they suspect content within the stories we publish is fabricated, then we would lose that credibility. For our contributors to protect their own credibility, they must use every available avenue to confirm and attribute information before relying on unnamed sources. If the only way to publish a story is to use unnamed sources, our contributors owe it to our readership to identify the sources as clearly as possible without exposing the identity of the individual granted anonymity. + +Our contributors should always question the motives behind a source requesting anonymity. + +: Always keep your promises, but clarify conditions attached to any promise made in exchange for information beforehand. You must not take information from an anonymous support without the approval of our editorial team. We only use unnamed sources to tell important stories that would otherwise go unreported. + +The decision to use an unnamed source is not a decision made solely by the writer. To use an unnamed source, a contributor must have the written consent of a member of our editorial team: [Daniel](author/dngray.md), [Freddy](author/freddy.md), [Jonah](author/jonah.md), or [Niek](author/niek-de-wilde.md). + +Our editorial team will grant consent to the use of unnamed sources if the source is considered to be accurate and reliable, and if there is substantial justification for using the source's information without attribution. Privacy Guides should never be in the position of having to verify any factors within this policy after a story has been published. + +## Actionable Feedback + +Privacy Guides is committed to engaging with our readers and taking action based on their suggestions, complaints, and other feedback. + +Readers may help us develop an individual story or line of coverage, answer questions that a story may raise, identify related or under-covered issues, and teach us about new and diverse sources, experts, and perspectives. We believe that news organizations have a responsibility to engage with the public on the values, issues, and ideas of the times, and that news organizations have much to gain in return. In fact, actionable feedback may: + +- Further develop an individual story or line of coverage. +- Help answer questions that a story may raise. +- Help identify related questions or issues that the audience, including demographic segments of that audience, is discussing or are concerned about. +- Yield new and diverse sources and experts. + +**We strongly encourage our readers to participate in our community forum: ** + +Our staff contributors are also [listed](https://www.privacyguides.org/en/about/) alongside verified email links and other contact information, where you can ask them questions or report a complaint. Each article within our news section also clearly lists the author's byline, including contact and social media information when available. + +When necessary, we will make updates to our articles based on our readership's comments and feedback. + +We are proud of keeping this openness a top priority, in line with the nature of our community. diff --git a/blog/index.md b/blog/index.md index 8dc20c0f..3441e732 100644 --- a/blog/index.md +++ b/blog/index.md @@ -1,5 +1,11 @@ --- -title: Latest Articles +description: Privacy-related news stories, product reviews, opinion pieces, and other important articles from Privacy Guides contributors. hide: - footer --- + +# Latest Articles + +This is our home for privacy-related news stories, product reviews, opinion pieces, and other important articles. + +Unlike the rest of our website, these articles don't represent a consensus viewpoint of our community. Instead, they present the opinions of trusted authors within our community as-is. You may even find multiple articles on the same topic with competing viewpoints, intended to further [privacy discussion](https://discuss.privacyguides.net/). diff --git a/blog/posts/.meta.yml b/blog/posts/.meta.yml index f9defc8a..40956123 100644 --- a/blog/posts/.meta.yml +++ b/blog/posts/.meta.yml @@ -1 +1,3 @@ comments: true +social: + cards_layout: blog diff --git a/blog/posts/bad-faith-arguments.md b/blog/posts/bad-faith-arguments.md new file mode 100644 index 00000000..9033bde3 --- /dev/null +++ b/blog/posts/bad-faith-arguments.md @@ -0,0 +1,48 @@ +--- +date: + created: 2024-09-09 +categories: + - Announcements +authors: + - jonah +tags: + - Privacy Guides +license: BY-SA +--- +# Bad-Faith Arguments in the Privacy Community + +The Privacy Guides community is one of the best privacy-related communities on the internet, and I think we have generally done a good job at promoting a positive and respectful environment where people can learn and grow. + +Unfortunately, as a public forum we are not immune to the small minority of individuals who feel empowered to spread anger, hostility, and divisiveness by their anonymity and general lack of consequences on the internet. + +From now on, we are going to be strict about requiring all posts in our communities to be made in good faith. + +We will consider the following questions when reviewing posts: + +1. Is the poster presenting their criticism as informed or factual, when it's actually a matter of personal opinion, or worse, misinformation or false? +2. Has the poster failed to provide reasoning for their criticism, and demonstrated an unwillingness to learn or discuss the topic? +3. Is the poster writing something as if it is true and informed, when they're actually just speculating? +4. Is the poster simply spreading negativity instead of actually trying to improve something? +5. Is the poster engaging in ad hominem attacks against us or our community? + +If these answer to any of these questions is yes, the post will be removed and the poster will be asked to revise their statement. We will suspend posters who repeatedly engage in bad faith arguments. + +For almost everyone here, you won't see any negative impacts of this new policy. It is simply designed to allow us to remove the small number of people who occasionally join to spread unproductive negativity in the privacy space, at the expense of legitimate projects making the world a better place. Hopefully you will notice improvements in discussion quality overall. + +--- + +To give an example, there are two specific behaviors we want to discourage with this new policy. + +1. The constant use of words like "shilling," "fanboys," etc. to describe people who have a difference in opinion to your own is not acceptable. + + To "[shill](https://en.wikipedia.org/wiki/Shill)" something is to promote something you have an employer relationship or some other actual conflict of interest with. To accuse someone in our community of being a planted shill without any evidence, simply because they like something that you dislike, is both a serious accusation and a bad-faith argument. + + Even the use of terms like these informally to describe people who like a certain product more than others is disrespectful, and sows uncertainty and distrust within our community, so it will no longer be tolerated. + +2. A very small portion of GrapheneOS community members continually attempt to derail any conversations mentioning GrapheneOS with irrelevant details and confrontational attitudes. + + This is not a reflection on the GrapheneOS project itself, but unfortunately this has become a repeated situation with certain community members of this specific project more than anyone else, so we have to call it out. + + Making unfounded accusations against Privacy Guides community members of harassment towards GrapheneOS simply because they presented their criticism of the project is not a good faith argument. Similarly, presenting unverified statements from the GrapheneOS community as factual has led to misinformation being spread in the past. It is critical to always differentiate between opinions/beliefs and factual information. + + **Privacy Guides community spaces are not GrapheneOS discussion forums, and the drama from their community is not automatically on-topic in ours.** Please do not make new topics in our forum that simply link to drama posts from the GrapheneOS community. A good rule of thumb is that unless a post from GrapheneOS is specifically talking about GrapheneOS-specific, privacy-related functionality and not about other projects/software/etc., it is probably off-topic here. diff --git a/blog/posts/choosing-the-right-messenger.md b/blog/posts/choosing-the-right-messenger.md index 3c5575c0..48dd4066 100644 --- a/blog/posts/choosing-the-right-messenger.md +++ b/blog/posts/choosing-the-right-messenger.md @@ -11,6 +11,8 @@ links: tags: - Instant Messengers license: BY-SA +description: Choosing an instant messenger is a challenge. How can you be sure you’re using the most secure, privacy respecting platform? +schema_type: AnalysisNewsArticle --- # Choosing the Right Messenger diff --git a/blog/posts/delisting-startpage.md b/blog/posts/delisting-startpage.md index 36d5e332..8ced8ceb 100644 --- a/blog/posts/delisting-startpage.md +++ b/blog/posts/delisting-startpage.md @@ -10,6 +10,8 @@ links: - Search Engines: https://www.privacyguides.org/en/search-engines/ tags: - Search Engines +description: Startpage has been removed from Privacy Guides' recommendations following their acquisition by System1. +schema_type: NewsArticle --- # Delisting Startpage From Privacy Guides diff --git a/blog/posts/delisting-wire.md b/blog/posts/delisting-wire.md index a9ee6bb4..4347e80f 100644 --- a/blog/posts/delisting-wire.md +++ b/blog/posts/delisting-wire.md @@ -10,6 +10,8 @@ links: - Types of Communication Networks: https://www.privacyguides.org/en/advanced/communication-network-types/ tags: - Instant Messengers +description: Wire has been removed from Privacy Guides' recommendations following their acquisition by a US holding company and VC investments. +schema_type: NewsArticle --- # Delisting Wire From Privacy Guides diff --git a/blog/posts/firefox-privacy-2021-update.md b/blog/posts/firefox-privacy-2021-update.md index f6ecf600..cac405c7 100644 --- a/blog/posts/firefox-privacy-2021-update.md +++ b/blog/posts/firefox-privacy-2021-update.md @@ -11,6 +11,7 @@ tags: - Browsers - Firefox license: CC0 +schema_type: AnalysisNewsArticle --- # Firefox Privacy: 2021 Update diff --git a/blog/posts/firefox-privacy.md b/blog/posts/firefox-privacy.md index 6fae02e9..ed9919ed 100644 --- a/blog/posts/firefox-privacy.md +++ b/blog/posts/firefox-privacy.md @@ -11,6 +11,7 @@ tags: - Browsers - Firefox license: BY-SA +schema_type: AnalysisNewsArticle --- # Firefox Privacy: Tips and Tricks for Better Browsing diff --git a/blog/posts/grapheneos-or-calyxos.md b/blog/posts/grapheneos-or-calyxos.md index d91d45bd..4dcf7654 100644 --- a/blog/posts/grapheneos-or-calyxos.md +++ b/blog/posts/grapheneos-or-calyxos.md @@ -13,6 +13,7 @@ links: - Android Recommendations: https://www.privacyguides.org/android/ license: BY-SA robots: nofollow, max-snippet:-1, max-image-preview:large +schema_type: OpinionNewsArticle --- # Should You Use GrapheneOS or CalyxOS? diff --git a/blog/posts/hide-nothing.md b/blog/posts/hide-nothing.md index c804772f..d59f8a41 100644 --- a/blog/posts/hide-nothing.md +++ b/blog/posts/hide-nothing.md @@ -11,6 +11,8 @@ links: tags: - Government license: BY-SA +description: In the wake of the September 11, 2001, attack on the United States, the US government enacted laws that weakened citizen privacy in the name of national emergency. +schema_type: OpinionNewsArticle --- # Hide Nothing diff --git a/blog/posts/i18n-announcement.md b/blog/posts/i18n-announcement.md index 76e1f4a8..d44c5c84 100644 --- a/blog/posts/i18n-announcement.md +++ b/blog/posts/i18n-announcement.md @@ -10,6 +10,8 @@ authors: tags: - Privacy Guides license: BY-SA +description: It's finally here. After countless requests, Privacy Guides now has translations. +schema_type: NewsArticle --- # Privacy Guides Is Now Multilingual diff --git a/blog/posts/integrating-metadata-removal.md b/blog/posts/integrating-metadata-removal.md index 9619c25c..4cd96340 100644 --- a/blog/posts/integrating-metadata-removal.md +++ b/blog/posts/integrating-metadata-removal.md @@ -12,6 +12,8 @@ tags: - iOS - Windows license: BY-SA +description: When sharing files, it's important to remove associated metadata. Image files commonly include Exif data, and sometimes photos even include GPS coordinates within its metadata. +schema_type: AnalysisNewsArticle --- # Removing Metadata From Your Photos, Videos, and Other Files diff --git a/blog/posts/ios-configuration-guide.md b/blog/posts/ios-configuration-guide.md index 5b60930a..7cb30518 100644 --- a/blog/posts/ios-configuration-guide.md +++ b/blog/posts/ios-configuration-guide.md @@ -10,6 +10,8 @@ authors: tags: - iOS license: BY-SA +description: There are a number of privacy and security-related settings you should consider changing in the Settings app on iOS 16. +schema_type: AnalysisNewsArticle --- # iOS 16 Privacy Configuration Guide diff --git a/blog/posts/job-openings.md b/blog/posts/job-openings.md new file mode 100644 index 00000000..c50ea029 --- /dev/null +++ b/blog/posts/job-openings.md @@ -0,0 +1,43 @@ +--- +date: + created: 2024-10-28 +categories: + - Announcements +authors: + - niek-de-wilde +links: + - Job Openings: https://www.privacyguides.org/en/about/jobs/ +tags: + - Privacy Guides +description: Privacy Guides is now hiring for a video content creation position and a journalist position, as well as a 6-month internship. +schema_type: NewsArticle +--- +# Privacy Guides is Hiring + +We are thrilled to announce the opening of three new job positions aimed at enhancing our mission of promoting personal privacy and informed digital choices. As a non-profit organization dedicated to empowering individuals with the knowledge and tools they need to navigate the internet in a private manner, we are excited to expand our team with talented individuals who share our vision. They will play a key role in helping us reach new audiences to spread our message in multiple formats, and make sure we are the authoritative source for trustworthy and unbiased consumer privacy resources on the internet. + +## Content Creator + +We're seeking a passionate multimedia content creator to spearhead our video production efforts on YouTube and other platforms. This role will involve creating engaging and informative video content that for example simplifies several privacy concepts and offers practical tips for protecting personal information. The ideal candidate will have experience in video production (but this is not strictly required) and a commitment to making complex topics accessible to a wide audience. + +This is your chance to enter the tech & educational content creation space, without worrying about sponsors and advertisers diluting your message. We have no commercial interests to interfere with your content, and no agenda beyond simply providing the best privacy information out there. If you're excited about using the power of video to educate and inspire, we want to hear from you! + +[Learn more and apply here :material-arrow-right-drop-circle:](https://privacyguides.org/en/about/jobs/content-creator/) + +## Journalist + +We are also looking for a skilled journalist to join our team. This role will focus on producing in-depth articles for our blog that explore the latest trends in privacy and security, as well as the implications of emerging technologies. The ideal candidate will have a background in investigative journalism and a deep understanding of privacy issues. Your work will help inform our community and foster critical discussions about digital rights and responsibilities. + +Other tasks will be to research new subjects to cover, perform interviews, and conduct product and service reviews for our recommendations. + +[Learn more and apply here :material-arrow-right-drop-circle:](https://privacyguides.org/en/about/jobs/journalist/) + +## News Curation Internship + +Finally, we are offering a paid internship position that will focus on staying up-to-date with the latest privacy and security news, interacting with our community, and providing overall support to our volunteers. This role will involve curating relevant articles, reports, and insights to keep our team informed and engaged with current events. This is an excellent opportunity for someone passionate about privacy issues and looking to gain hands-on experience in a non-profit environment. Ideal candidates will have strong research skills and a keen interest in digital rights. + +[Learn more and apply here :material-arrow-right-drop-circle:](https://privacyguides.org/en/about/jobs/intern-news/) + +## Join us in making a difference + +At Privacy Guides, we believe that everyone deserves the right to privacy and security in the digital world. By joining our team, you will play a vital role in educating the public and advocating for stronger privacy protections. If you’re ready to make a difference and are excited about one of these roles, we encourage you to apply! diff --git a/blog/posts/linux-application-sandboxing.md b/blog/posts/linux-application-sandboxing.md index 355ff4b8..fac20139 100644 --- a/blog/posts/linux-application-sandboxing.md +++ b/blog/posts/linux-application-sandboxing.md @@ -9,6 +9,8 @@ tags: - Linux - Security license: BY-SA +description: We outline a few projects which aim to solve the poor sandboxing situation in Linux relative to operating systems like macOS and ChromeOS. +schema_type: AnalysisNewsArticle --- # Sandboxing Applications on Desktop Linux diff --git a/blog/posts/linux-system-hardening.md b/blog/posts/linux-system-hardening.md index c3100085..caa63672 100644 --- a/blog/posts/linux-system-hardening.md +++ b/blog/posts/linux-system-hardening.md @@ -10,6 +10,8 @@ tags: - Security license: BY-SA robots: nofollow, max-snippet:-1, max-image-preview:large +description: There are a number of procedures you can follow to make your Linux desktop system more secure, some more advanced than others. We cover some general techniques here. +schema_type: AnalysisNewsArticle --- # Hardening Your Desktop Linux System's Security diff --git a/blog/posts/macos-ventura-privacy-security-updates.md b/blog/posts/macos-ventura-privacy-security-updates.md index daecf2b0..51e91a40 100644 --- a/blog/posts/macos-ventura-privacy-security-updates.md +++ b/blog/posts/macos-ventura-privacy-security-updates.md @@ -11,6 +11,8 @@ tags: links: - posts/ios-configuration-guide.md license: BY-SA +description: We cover the improvements macOS Ventura will bring to Apple users when it comes to personal privacy and security. +schema_type: NewsArticle --- # New Privacy and Security Features in macOS 13 Ventura diff --git a/blog/posts/merch-announcement.md b/blog/posts/merch-announcement.md index fb813f6f..c01d9939 100644 --- a/blog/posts/merch-announcement.md +++ b/blog/posts/merch-announcement.md @@ -9,6 +9,8 @@ authors: tags: - Privacy Guides license: BY-SA +description: Privacy Guides has partnered with HELLOTUX to create what we think are the finest garments in the land. +schema_type: BackgroundNewsArticle --- # Privacy Guides Now Has Merchandise diff --git a/blog/posts/move-fast-and-break-things.md b/blog/posts/move-fast-and-break-things.md index 706730b1..41f2759d 100644 --- a/blog/posts/move-fast-and-break-things.md +++ b/blog/posts/move-fast-and-break-things.md @@ -10,6 +10,8 @@ links: tags: - Facebook license: BY-SA +description: If someone has to tell you that they care about your privacy, they probably don’t. +schema_type: OpinionNewsArticle --- # Move Fast and Break Things diff --git a/blog/posts/mozilla-disappoints-us-yet-again-2.md b/blog/posts/mozilla-disappoints-us-yet-again-2.md index 489f4c76..c230a5d7 100644 --- a/blog/posts/mozilla-disappoints-us-yet-again-2.md +++ b/blog/posts/mozilla-disappoints-us-yet-again-2.md @@ -2,12 +2,14 @@ date: created: 2024-07-14 categories: - - Opinion + - News authors: - jonah tags: - Firefox - Mozilla +description: "'No shady privacy policies or back doors for advertisers' proclaims the Firefox homepage, but that's no longer true in Firefox 128." +schema_type: AnalysisNewsArticle --- # "Privacy-Preserving" Attribution: Mozilla Disappoints Us Yet Again diff --git a/blog/posts/onion-browser-review.md b/blog/posts/onion-browser-review.md new file mode 100644 index 00000000..cf235265 --- /dev/null +++ b/blog/posts/onion-browser-review.md @@ -0,0 +1,174 @@ +--- +title: "Onion Browser Review: Tor on iOS" +description: "Onion Browser is our recommended way of connecting to Tor on iOS, but it does have a number of drawbacks compared to the traditional Tor Browser on other platforms you should be aware of." +date: + created: 2024-09-18 +categories: + - Reviews +authors: + - jonah +links: + - Tor Recommendations: https://www.privacyguides.org/en/tor/ + - Tor Overview: https://www.privacyguides.org/en/advanced/tor-overview/ +tags: + - Tor + - iOS +license: BY-SA +preview: + logo: theme/assets/img/self-contained-networks/onion_browser.svg +review: + type: MobileApplication + category: BrowserApplication + subcategory: Tor Network Browser + name: Onion Browser + price: 0 + website: https://onionbrowser.com/ + rating: 3.5 + pros: + - Officially endorsed way to access Tor on iOS. + cons: + - Some inconsistent and confusing settings. + - Doesn't provide the same protections as Tor Browser. +--- +![Onion Browser logo](../assets/img/self-contained-networks/onion_browser.svg){ align=right } + +Search the App Store for "Tor Browser" and you'll be flooded with a variety of ways to connect to the Tor network from your iPhone. However, there's only one solution officially [endorsed](https://support.torproject.org/tormobile/tormobile-3/) by the Tor Project themselves: **Onion Browser**. + +[:octicons-home-16: Homepage](https://onionbrowser.com){ .md-button } +[:octicons-eye-16:](https://onionbrowser.com/privacy-policy){ .card-link title="Privacy Policy" } +[:octicons-info-16:](https://onionbrowser.com/faqs){ .card-link title=Documentation} +[:octicons-code-16:](https://github.com/OnionBrowser/OnionBrowser){ .card-link title="Source Code" } +[:octicons-heart-16:](https://onionbrowser.com/donate){ .card-link title=Contribute } + +Onion Browser is an open-source app created by Mike Tigas, who has worked closely with Tor Project in the past and was previously an investigative journalist at ProPublica (he is currently an advisor at the FTC). His company still maintains the app, although lately it is primarily [developed](https://github.com/OnionBrowser/OnionBrowser/graphs/contributors) by other maintainers. + +!!! info inline end "Side info" + + - [:simple-appstore: App Store download](https://apps.apple.com/app/id519296448) + +We already recommend Onion Browser for any iOS users out there, with the important caveat that it doesn't have all the privacy features that Tor Browser on *other* operating systems would provide. + +## Usage + +Of course installing Onion Browser is as easy as any other app on iOS, Apple ID unfortunately required. Onion Browser can be set as your default browser in system settings too, which is nice. + +When you open Onion Browser for the first time you're given the option to connect to Tor via [Orbot](https://www.privacyguides.org/en/tor/#orbot), or with a built-in Tor network proxy. Using the built-in option is the easiest, it connects very quickly and doesn't require a separate app. It also allows you to [use Tor alongside another VPN app](https://www.privacyguides.org/en/advanced/tor-overview/#safely-connecting-to-tor), which may be helpful in certain circumstances. The Orbot app acts as its own "VPN connection" in iOS preventing the possibility of combining it with another VPN, but it is more flexible and it extends Tor network protections to every app on your device. + +
+ ![A screenshot asking whether you want to use Orbot or built-in Tor to connect, noting the built-in Tor has security problems.](../assets/images/onion-browser-review/757A93D0-CCCB-4743-8AF2-17B001EC774A_1_102_o.jpeg){ width="200" } +
You're presented with a choice at startup
+
+ +Using the dedicated Orbot app also provides more robust protections against IP address leaks. Onion Browser warns in its comparison that using the built-in option could leak your IP or network information to malicious JavaScript code. + +I confirmed the built-in option works perfectly fine, in fact I occasionally had trouble connecting Orbot to Onion Browser, where it would re-prompt me to start Orbot even though it was already running until I restarted the Onion Browser app. The built-in proxy generally worked seamlessly. However, for most people using Onion Browser alongside Orbot probably still makes more sense. It's the official recommendation from Tor Project and the browser's developer themselves, so that's what I'll be sticking with for the rest of this review. + +
+ ![A screenshot of check.torproject.org that says congratulations, this browser is configured to use Tor. It shows the IP address of the exit node, then states: however, it does not appear to be Tor Browser.](../assets/images/onion-browser-review/2774018C-C4DD-419C-9D77-9BE8E5A51A19_1_102_o.jpeg){ width="200" } +
You can check your connection at check.torproject.org, but you'll be warned you're not using Tor Browser
+
+ +Onion Browser comes with 6 `.onion` bookmarks preinstalled: DuckDuckGo, the New York Times, the BBC, ProPublica, Freedom of the Press Foundation, and Deutsche Welle, which provides you with a good entry point into Tor network resources. + +
+ ![A screenshot of the default new tab page, purple, with 6 bookmarks pre-installed](../assets/images/onion-browser-review/D0A2D20B-5550-4C1F-8FC6-F6D84AEBDF13_1_102_o.jpeg){ width="200" } +
You can get started right away with built-in resources
+
+ +DuckDuckGo via its `.onion` address is also the default search engine. Unlike Safari, search engines in Onion Browser are completely configurable. Included by default are a few different DuckDuckGo configurations, Google, and Startpage, but you can add your own [search engine](https://www.privacyguides.org/en/search-engines/) easily if you prefer another option. + +I ran into trouble with DuckDuckGo not being able to display results, however. Switching to the **DuckDuckGo HTML** search engine in settings helped, and I prefer that more lightweight version myself anyway. I'm curious whether this is a common issue or a momentary glitch with DuckDuckGo, but neither switching circuits nor reducing security levels fixed it. Speaking of... + +
+
+ ![A screenshot of DuckDuckGo saying sorry, we ran into an issue displaying these results, and asking to try again](../assets/images/onion-browser-review/8A3E82E7-128E-4B3B-B8BB-276063226D41_1_102_o.jpeg){ width="200" } + ![A screenshot of DuckDuckGo results loading normally when using the HTML version of the search engine](../assets/images/onion-browser-review/C3252F74-C6C1-4616-B3CD-17EA1183BE0C_1_102_o.jpeg){ width="200" } +
+
DuckDuckGo wouldn't work until I used their HTML-only version
+
+ +### Security Levels + +There are three configurable security levels in Onion Browser: Bronze, Silver (the default), and Gold. These levels roughly correlate to the *Safe, Safer, Safest* [security levels](https://tb-manual.torproject.org/security-settings/) in regular Tor Browser. + +
+ ![A screenshot showing the security level for this site settings and three options, Gold, Silver, and Bronze](../assets/images/onion-browser-review/51B33FA1-D9B4-4EF4-82C6-259568C845EC_1_102_o.jpeg){ width="200" } +
You can toggle security levels on a per-site basis with two taps
+
+ +I had no issues browsing the web in the standard Silver level, which felt similar to just using Safari. Even websites which rely a bit more on JavaScript like our own [forum](https://discuss.privacyguides.net/) were unaffected, so this seems to be a sane default for most people. + +The security level toggle next to the address bar is a bit dangerous, in my opinion. It changes the security level on a per-site basis, which can lead to inconsistent settings. I ran into this when I set the security level to Gold on privacyguides.**org**, then I navigated to our forum (hosted on privacyguides.**net**) and found the security level reset itself to Silver. Changing the security level for all sites requires going into the app's settings and changing the default security, which is something to keep in mind if you don't trust the sites you're visiting. + +That being said, I also found that even the default security level setting didn't apply itself consistently after changing it. When I set the default security to Gold and opened DuckDuckGo, it opened at the lower Silver security level. I believe this is because I had manually set DuckDuckGo to Silver using the per-site toggle earlier, but changing the default setting *really* should reset those preferences. + +The Gold browsing experience definitely broke more websites. Our forum didn't load at all, despite theoretically having a non-JavaScript version available. Other pages had broken elements: I loaded the Freedom of the Press Foundation's homepage fine, but I wasn't able to open the mobile navigation menu with the button in their header without switching back to Silver. + +Something to note is that even the Gold level protections don't go nearly as far as Safest protections in Tor Browser. For example, the Safest setting on desktop Tor Browser will block resources like external fonts, which are not blocked on any level by Onion Browser. Onion Browser is meant to be a censorship circumvention tool, but it is not ready to defend your anonymity against any more dedicated adversaries. + +### Other Settings + +Onion Browser comes with reasonable defaults and a fairly sparse number of customization options, but there's some you'll probably want to change if you're using this every day. + +The **Tab Security** setting defaults to *Forget in Background*, which I found closes your tabs even if you simply check your notifications. It's certainly good that it errs on the side of caution and closes your tabs when you do literally *anything* outside the app, but I think most people will probably prefer this set to *Forget at Shutdown* where the data is only wiped when the app is actually closed. If you're really not concerned about local data storage, you can have the browser remember tabs until you close them for a more standard browser-like experience. + +In the **Default Security** settings you can choose a different user agent, or leave it blank to send the default, in which case it sends Safari's default user agent for your device. You may find this useful to change how websites present themselves, but impersonating the user agent of another browser does **not** make you blend in with that browser from a fingerprinting perspective. There are many ways a website could determine what browser you are using outside your user agent, so don't rely on this setting to make you blend in with everyone else using Tor Browser on other devices. + +Besides leaving it blank for the default, it comes with three built-in user agent strings you can choose from, or you can enter your own. You might find it useful to use Tor Browser for Android's, but if you have no idea what any of this means it's probably best to leave the user agent settings alone. + +=== "Default (on my device)" + + ``` + Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/605.1.15 + ``` + +=== "Safari Desktop" + + ``` + Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15 + ``` + +=== "Tor Browser Desktop" + + ``` + Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0 + ``` + +=== "Tor Browser Android" + + ``` + Mozilla/5.0 (Android 9; Mobile; rv:78.0) Gecko/20100101 Firefox/78.0 + ``` + +The other settings in the app are fairly self-explanatory, but I don't expect many people will need to change them. + +## Drawbacks + +A large part of Onion Browser's problems come down to how iOS works. Most notably the iOS requirement for third-party browsers to use the WebKit framework built in to iOS. + +This requirement means that Onion Browser has completely separate development from Tor Browser on desktop and Android, so it can't easily make use of all the advanced privacy-protecting features the Tor Project team is constantly adding to their browser. Technically it does also mean Onion Browser has historically been immune to [Firefox-related vulnerabilities](https://blog.mozilla.org/security/2016/11/30/fixing-an-svg-animation-vulnerability/), but Safari is not known for its perfect security record either, and the number of eyes on Tor-related *WebKit* vulnerabilities is certainly far smaller than on *Firefox/Gecko*-related ones. + +The Tor Project [notes](https://blog.torproject.org/tor-heart-onion-browser-and-more-ios-tor/) another drawback to Onion Browser's use of WebKit as well: The WebKit APIs simply don't give browser developers the level of control they're used to over the rendering and execution of web pages. This relates to what we saw earlier with the "Gold" protection levels not quite matching what you'd see in Tor Browser on other platforms. + +The EU recently required Apple to let third-party browser developers use their own engines instead of WebKit. It's possible that—likely many years from now—a version of Onion Browser or Tor Browser could come to iOS alongside Tor's stricter protections found in their standard browsers. Even still, the mobile version of Tor Browser on Android which *does* use Firefox's mobile engine is leagues behind desktop Tor Browser in terms of privacy and security. It's safe to say that desktop Tor Browser is going to be the best way to access Tor for quite some time. + +## Lockdown Mode + +There is one more way to improve Onion Browser security, but we have to look outside the browser to find it. [Lockdown Mode](macos-ventura-privacy-security-updates.md#lockdown-mode) is a feature introduced in iOS 16 that reduces the attack surface of your device by disabling a myriad of features, including web browsing features that could potentially impact security. + +Because Onion Browser is built on Apple's WebKit, these security improvements extend to Onion Browser as well. Most notably, external web fonts *are* blocked in Onion Browser with Lockdown Mode enabled, just as they are in Safari. These are disabled in desktop Tor Browser's Safest mode due to both privacy concerns, and security concerns related to the font rendering engine on your device, so having the option to disable them here on iOS is very useful for those looking to maximize their security. + +
+ ![A screenshot of the Privacy Guides homepage with external fonts disabled](../assets/images/onion-browser-review/87651D0E-EFE0-4C0F-98E7-9898EBA74334_1_102_o.jpeg){ width="200" } +
External fonts and JavaScript disabled with Gold + Lockdown Mode
+
+ +However, enabling Lockdown Mode *is* detectable by websites, meaning it could potentially be used to fingerprint you. Onion Browser in any form does not really provide the same fingerprinting protections that desktop Tor Browser is able to, so this probably shouldn't stop you from using Lockdown Mode, but it is something to keep in mind. + +## Conclusion + +The decision to use Onion Browser will ultimately come down to your specific requirements. If you simply need a web browser that connects to [Tor hidden services](https://www.privacyguides.org/en/advanced/tor-overview/#path-building-to-onion-services), and you're not concerned with being tracked down, this is a perfectly reasonable choice on iOS. + +It's also a good way to promote and normalize the use of Tor in general. My browsing experience using Onion Browser, while still a bit slower than regular browsing, was perfectly acceptable for reading the news, searching the web, and other everyday browsing tasks most of us do on our phone. The more people that use Tor for their everyday traffic, the safer the overall network becomes for people who really need it. + +Just don't expect the same level of protection that desktop Tor Browser can provide. If you're concerned about serious adversaries targeting you, the safest way to use Tor is still to use it via [Whonix+Qubes](https://www.privacyguides.org/en/desktop/#whonix). diff --git a/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md b/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md index bcf58ef6..a374f6db 100644 --- a/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md +++ b/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md @@ -5,6 +5,8 @@ categories: - Announcements authors: - jonah +description: We're excited to announce a partnership with MAGIC Grants, a Public 501(c)(3) charity with the mission of supporting privacy projects like ours and providing undergraduate scholarships for students interested in cryptocurrencies and privacy. +schema_type: BackgroundNewsArticle --- # Privacy Guides Partners With MAGIC Grants 501(c)(3) diff --git a/blog/posts/proton-wallet-review.md b/blog/posts/proton-wallet-review.md new file mode 100644 index 00000000..d84eae21 --- /dev/null +++ b/blog/posts/proton-wallet-review.md @@ -0,0 +1,131 @@ +--- +title: "Proton Wallet Review: Is Proton Losing Touch?" +template: review-article.html +schema_type: ReviewNewsArticle +description: "It may well be that Proton Wallet is the easiest way to start using Bitcoin, but is a Bitcoin wallet the solution people need to improve their financial privacy?" +date: + created: 2024-09-08 +categories: + - Reviews +authors: + - jonah +links: + - Cryptocurrency: https://www.privacyguides.org/en/cryptocurrency/ +tags: + - Cryptocurrency +license: BY-SA +preview: + logo: theme/assets/img/cryptocurrency/proton-wallet.svg +review: + type: SoftwareApplication + category: FinanceApplication + subcategory: Cryptocurrency Wallet + name: Proton Wallet + price: 0 + website: https://proton.me/wallet + rating: 2 + pros: + - Secure, non-custodial option for Proton users. + cons: + - Only supports Bitcoin, a non-private cryptocurrency. + - No support for Lightning or CoinJoin. + - iOS app still in beta. +--- +![Proton Wallet logo](../assets/img/cryptocurrency/proton-wallet.svg){ align=right itemprop="image" } + +Proton, the Swiss creators of privacy-focused products like [Proton Mail](https://www.privacyguides.org/en/email/#proton-mail) and [Proton VPN](https://www.privacyguides.org/en/vpn/#proton-vpn), recently released the latest product in their ever-growing lineup: **Proton Wallet**. [Announced](https://discuss.privacyguides.net/t/introducing-proton-wallet-a-safer-way-to-hold-bitcoin/19636) at the end of July 2024, it promotes itself as "an easy-to-use, self-custodial" Bitcoin wallet that will ostensibly make financial freedom more attainable for everyone. + +!!! info inline "Side info" + + - Proton Wallet's [Privacy Policy](https://proton.me/wallet/privacy-policy) + - This review was conducted with the reviewer's personal Proton Visionary account. Proton was not contacted prior to this publication. + +It may well be that Proton Wallet is the easiest way to start using Bitcoin, but is a Bitcoin wallet the solution people need to improve their financial privacy? + +## A cryptocurrency primer + +Contrary to popular belief, [cryptocurrency](https://www.privacyguides.org/en/cryptocurrency/) is not an inherently private transactional system. + +The vast majority of cryptocurrency, including Bitcoin, uses a transparent and public blockchain as the ledger for all transactions. This means that anyone you've transacted with or who knows your wallet's public address can trivially trace all of your past transactions, and monitor all of your future transactions at any time. + +This is a huge problem for Proton Wallet, because Bitcoin is the **only** cryptocurrency it supports. Furthermore, Proton Wallet doesn't support the few privacy-enhancing additions to Bitcoin that do exist, like CoinJoin or even the Lightning Network. While these technologies still don't bring Bitcoin close to the levels of privacy attainable with some alternatives like Monero, to see them lacking in a product from a privacy-centric company like Proton is extremely disappointing. + +Proton has claimed in a few interviews that they chose Bitcoin because of its mass appeal, and it's certainly true that Bitcoin has the mind share and market share to beat out any other cryptocurrency, but the *most popular* option isn't always the *best* option. + +Had Proton Wallet added support for Monero or a similarly private cryptocurrency, they could have single-handedly boosted a financial system that is *actually* private by default by a significant degree. In my eyes, failing to do so in favor of the market leader is an unfortunate step back from their "privacy by default" mantra. + +## Using the app + +Proton Wallet *is* in beta, like many of Proton's products are when newly released, and available via the web, an Android app, and an iOS [TestFlight](https://testflight.apple.com/join/6OIcXtQN). + +![Proton wallet registration page](../assets/images/proton-wallet-review/1.png) + +Creating your wallet is a simple process, after registering you'll be asked to choose a name for your wallet and a default currency. You can also optionally set a passphrase to secure your account. Note that this isn't merely a passphrase securing your account on Proton's servers beyond your usual account credentials, it's a [BIP39 extension word](https://en.bitcoin.it/wiki/Seed_phrase#Two-factor_seed_phrases), meaning that if you lose it your wallet will be completely unrecoverable, **even if** you back up your 12 word seed phrase. + +![Proton wallet setup page](../assets/images/proton-wallet-review/2.png) + +The default currency here isn't the currency being *stored* in Proton Wallet. It is just used to show you the current conversion rate between Bitcoin and your local currency. + +Once you're in, Proton Wallet is fairly straightforward. In fact, there's not much to explore beyond finding your wallet address and buying Bitcoin. Clicking the **Recieve** button brings up a panel which shows your address and allows you to generate a new one on the fly. When you generate a new address, all of your previous addresses will continue to work, but are no longer displayed anywhere. + +![Proton wallet address QR code and text displayed in sidebar](../assets/images/proton-wallet-review/3.png) + +Buying Bitcoin is simple as well. Proton is working with two providers, Banxa and Ramp, and if you're in the United States like I am both are available, so you can choose the one with the best exchange rate to go with. Before you purchase, Proton Wallet asks you for your current country, so that will determine which providers it's possible to use. + +There's no private payment methods though, you're stuck with credit card, Google Pay, or Apple Pay. The purchase experience isn't quite seamless either, as it redirects you to either banxa.com or ramp.network to perform the actual transaction. Everything is pre-filled with your Proton Wallet information however, so it isn't a huge problem. + +## "Bitcoin via Email" + +The flagship feature of Proton Wallet is something they call **Bitcoin via Email**, which integrates with Proton Mail to allow you to send Bitcoin to any email address. Opening your wallet settings lets you enable Proton's *Receive Bitcoin via Email* feature, which allows other Proton Wallet users to send Bitcoin to your account with just your Proton Mail address. + +![Proton wallet receive Bitcoin via email settings page](../assets/images/proton-wallet-review/4.png) + +If you have multiple addresses on your Proton account, such as aliases or addresses on a custom domain, only one address can be linked to your wallet. This can be a bit annoying for people who have given out different Proton addresses to others in the past, like if you gave out your @protonmail.com address to some people, before later migrating to @proton.me when that domain became available. + +On the other hand, if you have aliases for different projects, this is a great way to keep Bitcoin payments to each address separate. If you have your personal email and a business alias for example, you can link your personal email to your primary wallet and create a second wallet to link your business alias to, thus keeping your personal and business transactions separate. + +Proton says that you can "create as many wallets as your Proton Wallet plan allows," but the exact limits are not very clear at the moment. This may become clearer as Proton Wallet exits its beta status. + +Sending Bitcoin to an email address is as simple as it is in mainstream payment apps like Venmo or CashApp, which is great. You can even include a memo with your transaction, and the transaction appears on the recipient's side very quickly. However, it can take a few hours or more for a transaction to actually complete and be usable by the recipient, so all they'll be able to do is monitor its progress in the meantime. This can be sped up by choosing a higher "network fee" when sending the payment, which costs more Bitcoin as the name would suggest. + +I'm not convinced this is particularly revolutionary though. Many Bitcoin wallets have streamlined the process of exchanging address information with other people with methods like QR codes, which are likely going to be more widely used than email in today's mobile-first world. Being able to replace Bitcoin addresses with emails fairly seamlessly *is* nice, but is it nice enough to warrant the entire Proton Wallet product? I'm not so sure. + +## What else sets it apart? + +There isn't much separating Proton Wallet from the existing options on the market. It is a *non-custodial* wallet, meaning that you control the private keys rather than Proton. This is a huge step-up in security compared to keeping your Bitcoin in an online exchange like Coinbase, but it isn't a big differentiator from other software wallets where non-custodial key storage is typically the norm. + +Besides that, and Bitcoin via Email, if you visit Proton's website to see how else they differentiate themselves the best third reason they could muster up is: + +> Our business is privacy: Proton isn't a crypto company — we're a privacy company that wants to empower everyone to use Bitcoin securely and privately. + +Unfortunately for Proton, this doesn't quite ring true when it comes to Proton Wallet. When it launched in 2014, Proton Mail was revolutionary in the email space. Encrypted email providers already existed, but Proton offered something different: Proton brought a good user experience to an interoperable encryption standard, PGP. While everyone else in the email space was rolling their own password-protected web portals to secure messages or simply delivering emails in plaintext, Proton built a user-friendly platform that actually improved the email ecosystem at large in the process. + +Proton's leadership thinks they can do for cryptocurrency what they once did for email, but there's a clear difference between then and now. Proton Mail had privacy and security ready to go from the beginning, but Proton Wallet simply meets the status quo. + +## Why does this exist? + +Proton Wallet is in a strange position. I've spoken to a few sources who suggest that privacy features like CoinJoin, which can mix Bitcoin in order to better anonymize transactions, were intended to be included at launch. The [crackdown](https://bitcoinmagazine.com/legal/samourai-wallet-breaking-down-dangerous-precedents) on the ill-fated Samouri Wallet project by U.S. authorities last April certainly put a damper on privacy in the Bitcoin space, and likely made Proton wary of introducing such features to the public. + +Proton suggests this themselves, stating on their [website](https://proton.me/wallet/bitcoin-guide-for-newcomers): + +> Coinjoin is considered the best solution for improving blockchain privacy. It works by mixing your BTC with other users’ BTC in a collaborative self-custodial transaction where you get back the same amount of BTC that you put in but on a different address that cannot be easily linked to your previous address. However, in 2024, in what many consider to be a regulatory overreach and attack on privacy, some of these Coinjoin services have been declared illegal in the US and EU. The future of financial privacy may therefore be decided by ongoing litigation in the next decade and privacy advocates should support these efforts. + +This situation likely soured Proton on other privacy-friendly cryptocurrencies like Monero as well. I get it, financial privacy is an extremely challenging task for any company to take on. We can't expect Proton to take on the risk of offering a completely anonymous payment service in the current legal climate, but it begs the question: why enter the financial space at all? + +Proton Wallet seems like a product that doesn't know its own place in the world. Is it meant to save us from the tyranny of payment processors like PayPal who can freeze your funds at a whim? Proton certainly thinks so, having faced that exact problem themselves during their original 2014 crowdfunding campaign. But in that case, is Bitcoin the actual solution to this problem, or is it just a stopgap fix that Proton happened to latch on to way back in 2014 when Bitcoin was more *in vogue* and there were few competitors? + +Today, there are many alternatives to Bitcoin which are safer to store your money in while remaining protected from intrusive fintech companies like PayPal. Stablecoins like USDC can be traded on multiple cryptocurrency networks without the need for middlemen payment processors, and can be exchanged at a variety of exchanges with the huge benefit of having *significantly* less risk than Bitcoin, theoretically no risk at all. Support for USDC or a similar technology would go a long way towards enabling *usable* cryptocurrency transactions for everyday users, even though USDC doesn't have any additional privacy protections either. + +Or, was Bitcoin chosen to give us independence from fiat currency, including stablecoins, entirely? Maybe so, but is that something we actually want? Prepping for a worldwide market collapse is perhaps a bit of a fool's errand. If the US Dollar and other economies failed overnight, I think we would all have a lot more problems than Bitcoin is going to solve for us. Bitcoin is a poor store of value to serve as an alternative to traditional currency anyway. Any asset which can gain or lose half its purchasing power on any given day of the week simply can't function as a viable medium of exchange, meaning it's virtually useless for day-to-day transactions. + +However, if Proton Wallet wasn't meant for all that, if it was simply meant to bring privacy to Bitcoin, then it's certainly a failure. Proton hasn't taken any risks with this product, meaning it's really only good for satisfying a singular belief: That Bitcoin is just inherently good, and anything to promote Bitcoin is inherently good as well. I don't share these fanatical beliefs of *Bitcoin maximalists*, however, when Bitcoin is demonstrably lacking in a wide variety of ways. + +## Conclusion + +Personally, I'm a bit of a cryptocurrency pessimist in general, but I can see some appeal for the technology in very specific areas. Unfortunately, Proton Wallet doesn't seem to fit in to a useful niche in any meaningful way. The functionality it does support is extremely basic, even by Bitcoin standards, and it simply doesn't provide enough value over the existing marketplace. + +If you're an existing Proton user simply looking for a place to store some Bitcoin *you already have* sitting around, Proton Wallet might be perfectly adequate. For everyone else, I don't see this product being too useful. Bitcoin is still far too volatile to be a solid investment or used as a safe store of value if you crave financial independence and sovereignty, and Proton Wallet simply isn't adequate for [paying for things privately online](https://www.privacyguides.org/en/advanced/payments/). + +There is some potential with Proton Wallet. Personally, I would like to see [support for Monero](https://protonmail.uservoice.com/forums/960668-proton-wallet/suggestions/48672359-support-monero), a cryptocurrency that has privacy features built-in by default. There is also the possibility of Proton expanding into the *traditional* finance space with features like a digital wallet for credit/debit cards, card aliasing à la [privacy.com](https://www.privacyguides.org/en/financial-services/#privacycom-us), and tap to pay within their mobile apps. A third-party alternative to Apple Pay and Google Wallet, and for the first time ever such a product could actually be viable: It's always been possible on Android, but just last month Apple announced the possibility for [iOS developers to use NFC](https://www.apple.com/newsroom/2024/08/developers-can-soon-offer-in-app-nfc-transactions-using-the-secure-element/) to facilitate payments outside of Apple Wallet. This presents a golden opportunity for Proton Wallet to be the first cross-platform digital wallet, if they can deliver. + +Alas, none of this is available in Proton Wallet today, and that's all that really counts. diff --git a/blog/posts/relisting-startpage.md b/blog/posts/relisting-startpage.md index 6926ab4f..453761ed 100644 --- a/blog/posts/relisting-startpage.md +++ b/blog/posts/relisting-startpage.md @@ -9,6 +9,8 @@ links: - Search Engines: https://www.privacyguides.org/en/search-engines/ tags: - Search Engines +description: Startpage has been relisted in our search engine recommendations following their open communications with the Privacy Guides community. +schema_type: NewsArticle --- # Relisting Startpage.com diff --git a/blog/posts/restrict-act.md b/blog/posts/restrict-act.md index 5a850987..28783a56 100644 --- a/blog/posts/restrict-act.md +++ b/blog/posts/restrict-act.md @@ -12,6 +12,8 @@ tags: links: - posts/hide-nothing.md canonical: https://www.jonaharagon.com/posts/restrict-act/ +description: The RESTRICT Act would grant the government broad powers to restrict access to any site or service they claim could pose a threat to national security, akin to China's Great Firewall. +schema_type: OpinionNewsArticle --- # Worried About TikTok? The RESTRICT Act Is Not the Answer Americans Are Looking For diff --git a/blog/posts/secure-data-erasure.md b/blog/posts/secure-data-erasure.md index d58ba719..f10730a1 100644 --- a/blog/posts/secure-data-erasure.md +++ b/blog/posts/secure-data-erasure.md @@ -11,6 +11,8 @@ links: tags: - Linux license: BY-SA +description: Erasing data from your computer may seem like a simple task, but if you want to make sure the data is truly unrecoverable, there are some things you should consider. +schema_type: AnalysisNewsArticle --- # Erasing Data Securely From Your SSD or HDD diff --git a/blog/posts/security-privacy-anonymity.md b/blog/posts/security-privacy-anonymity.md index e8b350af..0d293cbb 100644 --- a/blog/posts/security-privacy-anonymity.md +++ b/blog/posts/security-privacy-anonymity.md @@ -11,6 +11,8 @@ links: tags: - Security license: BY +description: Privacy, security, and anonymity often complement each other, but they are not always dependent on each other, and they are definitely not the same thing. +schema_type: OpinionNewsArticle --- # Security, Privacy, and Anonymity diff --git a/blog/posts/signal-configuration-and-hardening.md b/blog/posts/signal-configuration-and-hardening.md index fc55db34..da6eb638 100644 --- a/blog/posts/signal-configuration-and-hardening.md +++ b/blog/posts/signal-configuration-and-hardening.md @@ -1,7 +1,7 @@ --- date: created: 2022-07-07 - updated: 2023-05-06 + updated: 2024-08-23 authors: - contributors - matchboxbananasynergy @@ -13,6 +13,8 @@ tags: - Molly - Instant Messengers license: BY-SA +description: This guide details actions you can take to configure and harden Signal in accordance with your threat model. +schema_type: AnalysisNewsArticle --- # Signal Configuration and Hardening Guide @@ -199,46 +201,13 @@ If you use iCloud and you don’t want to share call history on Signal, confirm While it may be tempting to link your Signal account to your desktop device for convenience, keep in mind that this extends your trust to an additional and potentially less secure operating system. -If your threat model calls for it, avoid linking your Signal account to a desktop device to reduce your attack surface. - -### Endpoint Security - -Signal takes security very seriously, however there is only so much an app can do to protect you. - -It is very important to take device security on both ends into account to ensure that your conversations are kept private. - -We recommend an up-to-date [GrapheneOS](https://www.privacyguides.org/en/android/distributions#grapheneos) or iOS device. +Avoid linking your Signal account to a desktop device to reduce your attack surface, if your threat model calls for protecting against [:material-bug-outline: Passive Attacks](https://www.privacyguides.org/en/basics/common-threats/#security-and-privacy){ .pg-orange }. ### Molly (Android) -On Android you can consider using **Molly**, a fork of the Signal mobile client which aims to provide extensive hardening and anti-forensic features. +If you use [Molly](https://www.privacyguides.org/en/real-time-communication/#molly-android) on Android to access the Signal network, there are a number of privacy- and security-enhancing features that you may want to explore. -!!! recommendation - - ![Molly logo](../assets/images/signal-configuration/molly.svg){ align=right } - - **Molly** is an independent Signal fork which offers additional security features, including locking the app at rest, securely shredding unused RAM data, routing via Tor, and more. - - [:octicons-home-16: Homepage](https://molly.im/){ .md-button .md-button--primary } - [:octicons-eye-16:](https://signal.org/legal/#privacy-policy){ .card-link title="Privacy Policy" } - [:octicons-info-16:](https://github.com/mollyim/mollyim-android/wiki){ .card-link title=Documentation} - [:octicons-code-16:](https://github.com/mollyim/mollyim-android){ .card-link title="Source Code" } - [:octicons-heart-16:](https://opencollective.com/mollyim){ .card-link title=Contribute } - - ??? downloads - - - [:octicons-moon-16: Accrescent](https://accrescent.app/app/im.molly.app) - - [:simple-github: GitHub](https://github.com/mollyim/mollyim-android/releases) - -Molly offers two variants of the app: **Molly** and **Molly-FOSS**. - -The former is identical to Signal with the addition of Molly's improvements and security features. The latter, Molly-FOSS, removes Google's proprietary code, which is used for some key features (e.g., [FCM](https://en.wikipedia.org/wiki/Firebase_Cloud_Messaging) and Google Maps integration), in an effort to make it fully open-source. - -A comparison of the two versions is available in the [project's repository](https://github.com/mollyim/mollyim-android#readme). - -Both versions of Molly support [reproducible builds](https://github.com/mollyim/mollyim-android/tree/main/reproducible-builds), meaning it's possible to confirm that the compiled APKs match the source code. - -#### Features +#### Privacy and Security Features Molly has implemented database encryption at rest, which means that you can encrypt the app's database with a passphrase to ensure that none of its data is accessible without it. @@ -251,7 +220,7 @@ Once enabled, a configurable lock timer can be set, after which point Molly will For the database encryption feature to be useful, two conditions must be met: 1. Molly has to be locked at the time an attacker gains access to the device. This can include a physical attack in which the attacker seizes your device and manages to unlock the device itself, or a remote attack, in which the device is compromised and manages to elevate privileges to root. -1. If you become aware that your device has been compromised, you should not unlock Molly's database. +2. If you become aware that your device has been compromised, you should not unlock Molly's database. If both of the above conditions are met, the data within Molly is safe as long as the passphrase is not accessible to the attacker. @@ -266,9 +235,3 @@ Signal adds everyone who you have communicated with to its database. Molly allow To supplement the feature above, as well as for additional security and to fight spam, Molly offers the ability to block unknown contacts that you've never been in contact with or those that are not in your contact list without you having to manually block them. You can find a full list of Molly's [features](https://github.com/mollyim/mollyim-android#features) on the project's repository. - -#### Caveats - -- Molly removes Signal's MobileCoin integration. -- Molly is updated every two weeks to include the latest features and bug fixes from Signal. The exception is security issues, which are patched as soon as possible. That said, you should be aware that there might be a slight delay compared to upstream. -- By using Molly, you are extending your trust to another party, as you now need to trust the Signal team, as well as the Molly team. diff --git a/blog/posts/signal-number-registration-update.md b/blog/posts/signal-number-registration-update.md index 094c9264..49ccd63b 100644 --- a/blog/posts/signal-number-registration-update.md +++ b/blog/posts/signal-number-registration-update.md @@ -13,6 +13,8 @@ links: - posts/signal-configuration-and-hardening.md - Real-Time Communication: https://www.privacyguides.org/real-time-communication/ license: BY-SA +description: Signal has changed how it handles registration. This primarily affects people who are using a number for Signal that they don't have exclusive access to. +schema_type: ReportageNewsArticle --- # Important Changes to Signal Registration and Registration Lock diff --git a/blog/posts/staff-announcement.md b/blog/posts/staff-announcement.md index a5851acf..8701efec 100644 --- a/blog/posts/staff-announcement.md +++ b/blog/posts/staff-announcement.md @@ -8,6 +8,8 @@ authors: tags: - Privacy Guides license: BY-SA +description: Privacy Guides has reached a significant milestone with today's hire of our first employee, Project Director Jonah Aragon. +schema_type: NewsArticle --- # Jonah Aragon Hired as Project Director diff --git a/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md b/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md index 10fb839f..6f41ea68 100644 --- a/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md +++ b/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @@ -2,7 +2,7 @@ date: created: 2019-11-20 categories: - - Opinion + - News authors: - jonah links: @@ -12,6 +12,8 @@ links: tags: - VPN license: BY-SA +description: There’s a massive problem in the privacy world. Many shady companies are disguising advertisements as genuine reviews, to the detriment of real news sources like Privacy Guides and to potential buyers of these services. +schema_type: AnalysisNewsArticle --- # The Trouble With VPN and Privacy Review Sites diff --git a/blog/posts/threads-launch-twitter.md b/blog/posts/threads-launch-twitter.md index a557e826..e4d13ec8 100644 --- a/blog/posts/threads-launch-twitter.md +++ b/blog/posts/threads-launch-twitter.md @@ -12,6 +12,8 @@ tags: - Twitter - Facebook license: BY-SA +description: The man behind Facebook has somehow managed to make the Twitter experience worse. +schema_type: OpinionNewsArticle --- # Threads Is the Perfect Twitter Alternative, Just Not for You diff --git a/blog/posts/virtual-insanity.md b/blog/posts/virtual-insanity.md index 4d41edbd..c2481b43 100644 --- a/blog/posts/virtual-insanity.md +++ b/blog/posts/virtual-insanity.md @@ -11,6 +11,8 @@ links: tags: - Facebook license: BY-SA +description: On Mark Zuckerberg, Facebook, and the Metaverse. +schema_type: OpinionNewsArticle --- # Virtual Insanity diff --git a/blog/posts/warning-about-signal-proxies.md b/blog/posts/warning-about-signal-proxies.md index b6b5c914..26f8b580 100644 --- a/blog/posts/warning-about-signal-proxies.md +++ b/blog/posts/warning-about-signal-proxies.md @@ -13,6 +13,8 @@ links: - Signal Configuration Guide: https://www.privacyguides.org/real-time-communication/signal-configuration-hardening/ - Real-Time Communication: https://www.privacyguides.org/real-time-communication/ license: BY-SA +description: You should be aware of a number of issues with Signal’s current proxy implementation. +schema_type: NewsArticle --- # A Warning About Signal Proxies in Iran and Other Oppressive Countries diff --git a/blog/posts/welcome-to-privacy-guides.md b/blog/posts/welcome-to-privacy-guides.md index e521215a..66b60a59 100644 --- a/blog/posts/welcome-to-privacy-guides.md +++ b/blog/posts/welcome-to-privacy-guides.md @@ -13,6 +13,8 @@ links: tags: - Privacy Guides license: CC0 +description: Today, Privacy Guides has officially launched by our long-standing volunteer team to carry on the legacy of the now-defunct PrivacyTools project. +schema_type: NewsArticle --- # Welcome to Privacy Guides diff --git a/blog/posts/weve-joined-the-open-collective-foundation.md b/blog/posts/weve-joined-the-open-collective-foundation.md index 946bdd0e..ab74e490 100644 --- a/blog/posts/weve-joined-the-open-collective-foundation.md +++ b/blog/posts/weve-joined-the-open-collective-foundation.md @@ -10,6 +10,7 @@ links: tags: - Privacy Guides license: CC0 +schema_type: NewsArticle --- # We've Joined the Open Collective Foundation 501(c)(3) diff --git a/blog/posts/why-i-run-a-tor-relay.md b/blog/posts/why-i-run-a-tor-relay.md index 7a90a54d..4a07abf8 100644 --- a/blog/posts/why-i-run-a-tor-relay.md +++ b/blog/posts/why-i-run-a-tor-relay.md @@ -11,6 +11,8 @@ tags: - Tor - Self-Hosting license: BY-SA +description: Each Tor relay is the direct result of an individual deciding to sacrifice money, time and effort for the cause of fighting for a freer Internet. +schema_type: OpinionNewsArticle --- # Why I Decided to Run a Tor Relay diff --git a/docs/about.md b/docs/about.md index e0e57045..1157f044 100644 --- a/docs/about.md +++ b/docs/about.md @@ -12,7 +12,6 @@ schema: - 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 --- @@ -24,27 +23,11 @@ schema: [: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" } -## Staff +Privacy Guides is built by volunteers and staff members around the world. All changes to our recommendations and resources are reviewed by at least two [trusted](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all) individuals, and we work diligently to ensure our content is updated as quickly as possible to adapt to the ever changing cybersecurity threat landscape. -[**Jonah Aragon**](https://www.jonaharagon.com) is the Project Director and staff writer at *Privacy Guides*. His role includes researching and writing for this website, system administration, creating *Privacy Guides Online Learning* course content, reviewing the products recommended here, and most other day-to-day tasks. +In addition to our core team, [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). -
- -[:simple-discourse: Discourse (preferred): @jonah](https://discuss.privacyguides.net/u/jonah) - -[:material-email: Email: jonah@privacyguides.org](mailto:jonah@privacyguides.org) - -[:simple-mastodon: Mastodon: @jonah@neat.computer](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me} - -[:simple-signal: Signal: @jonah.01](https://signal.me/#eu/dDtlmTPv09utyEJPwCHq8UYs-AVOPlys8weinr7alfdylK5G-LNIX7GasDNJdV6y) - -
- -*The Project Director is a part-time position which reports directly to the executive committee.* - ---- - -[Open Positions :material-arrow-right-drop-circle:](about/jobs.md) +[Job Openings :material-arrow-right-drop-circle:](about/jobs.md) ## Executive Committee @@ -61,8 +44,8 @@ The project executive committee consists of five volunteers charged with managem [:material-account: Profile](https://discuss.privacyguides.net/u/dngray) - [:simple-github:]( "GitHub") - [:simple-mastodon:](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me} + [:material-github:]( "GitHub") + [:material-mastodon:](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me} [:material-email:](mailto:dngray@privacyguides.org "Email") - :detective:{ .lg .middle } **Freddy** @@ -73,8 +56,8 @@ The project executive committee consists of five volunteers charged with managem [: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-github:](https://github.com/freddy-m "GitHub") + [:material-mastodon:](https://social.lol/@freddy "@freddy@social.lol"){rel=me} [:material-email:](mailto:freddy@privacyguides.org "Email") - :robot:{ .lg .middle } **Jonah Aragon** @@ -85,8 +68,9 @@ The project executive committee consists of five volunteers charged with managem [: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-home:](https://www.jonaharagon.com "Homepage") + [:material-github:](https://github.com/jonaharagon "GitHub") + [:material-mastodon:](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me} [:material-email:](mailto:jonah@privacyguides.org "Email") - :cactus:{ .lg .middle } **Niek de Wilde** @@ -97,8 +81,8 @@ The project executive committee consists of five volunteers charged with managem [: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-github:](https://github.com/blacklight447 "GitHub") + [:material-mastodon:](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me} [:material-email:](mailto:niekdewilde@privacyguides.org "Email") - :smirk_cat:{ .lg .middle } **Olivia** @@ -109,29 +93,11 @@ The project executive committee consists of five volunteers charged with managem [: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} + [:material-github:](https://github.com/hook9 "GitHub") + [:material-mastodon:](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me} -## 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: - -
- -- [:simple-github: **kimg45**](https://github.com/kimg45) -- [:simple-github: **ph00lt0**](https://github.com/ph00lt0) -- [:simple-github: **redoomed1**](https://github.com/redoomed1) - -
- -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. @@ -142,7 +108,7 @@ Our team members review all changes made to the website and direct the course of — [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), [Wired](https://wired.com/story/firefox-mozilla-2022) and [Fast Company](https://fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again). +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), [Wired](https://wired.com/story/firefox-mozilla-2022), [Fast Company](https://fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again) and [404 Media](https://404media.co/privacy-service-optery-faces-backlash-after-plan-to-send-openai-user-data). ## History @@ -152,7 +118,7 @@ In 2022, we completed the transition of our main website framework from Jekyll t 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. +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 diff --git a/docs/about/contributors.md b/docs/about/contributors.md index 58995f63..cafa44bc 100644 --- a/docs/about/contributors.md +++ b/docs/about/contributors.md @@ -2,6 +2,7 @@ title: Contributors hide: - toc +description: A complete list of contributors who have collectively made an enormous impact on the Privacy Guides project. --- @@ -9,12 +10,12 @@ This project follows the [all-contributors](https://github.com/all-contributors/ | Emoji | Type | Description | --- | --- | --- -| 📖 | `doc` | A contributor to the content on [privacyguides.org](https://www.privacyguides.org/en/). +| 📖 | `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)): +A huge thank you from Privacy Guides to the following wonderful people ([full emoji key](https://allcontributors.org/docs/en/emoji-key)). We also especially thank our dedicated community moderation team on Matrix and our forum: *Austin Huang*, *namazso*, *hik*, *riley*, and *Valynor*. --8<-- "includes/contributors.md" diff --git a/docs/about/criteria.md b/docs/about/criteria.md index d7a6af77..dd2e228d 100644 --- a/docs/about/criteria.md +++ b/docs/about/criteria.md @@ -1,14 +1,15 @@ --- title: General Criteria +description: A list of general priorities we consider for all submissions to Privacy Guides. --- Below are some general priorities we consider for all submissions to Privacy Guides. Each category will have additional requirements for inclusion. -- **Security**: Tools should follow security best-practices wherever applicable. +- **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. +- **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 @@ -19,14 +20,16 @@ We do not make money from recommending certain products, we do not use affiliate We have these requirements in regard to developers which wish to submit their project or software for consideration. +- Must undergo our [self-submission process](https://discuss.privacyguides.net/t/about-the-project-showcase-category/114) as a way to engage with our community, address any potential concerns, and elicit any feedback that can help improve your project. + - Must disclose affiliation, i.e. your position within the project being submitted. -- Must have a security whitepaper if it is a project that involves handling of sensitive information like a messenger, password manager, encrypted cloud storage, etc. - - Third party audit status. We want to know if you have one, or have one planned. If possible please mention who will be conducting the audit. +- Must have a security whitepaper if it is a project that involves the handling of sensitive information like a messenger, password manager, encrypted cloud storage, etc. + - Regarding third party audit status, we want to know if you have undergone one, or have requested one. If possible please mention who will be conducting the audit. - Must explain what the project brings to the table in regard to privacy. - - Does it solve any new problem? + - What new problem(s), if any, does it solve? - Why should anyone use it over the alternatives? - Must state what the exact threat model is with their project. - - It should be clear to potential users what the project can provide, and what it cannot. + - It should be clear to potential users what the project can provide, and what it cannot. Ideally, a developer should be able to identify what [common threat(s)](../basics/common-threats.md) their project protects against. diff --git a/docs/about/donate.md b/docs/about/donate.md index 17e49f80..4f168a5f 100644 --- a/docs/about/donate.md +++ b/docs/about/donate.md @@ -1,5 +1,6 @@ --- title: Donate +description: The charitable mission of Privacy Guides relies on contributions from visitors like yourself. Anything you can do to support the project is hugely appreciated. --- 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. diff --git a/docs/about/executive-policy.md b/docs/about/executive-policy.md new file mode 100644 index 00000000..8d4a8118 --- /dev/null +++ b/docs/about/executive-policy.md @@ -0,0 +1,26 @@ +--- +title: Executive Policy +description: These are policies formally adopted by our executive committee, and take precedence over all other statements expressed on this website. +--- + +These are policies formally adopted by Privacy Guides' executive committee, and take precedence over all other statements expressed on this website. + +The key words **must**, **must not**, **required**, **shall**, **shall not**, **should**, **should not**, **recommended**, **may**, and **optional** are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). + +## EP1: Freely-Provided Product Samples + +*Our policy on accepting product samples for review was adopted September 7, 2024.* + +=== "Current Version (1)" + + - Privacy Guides **shall not** proactively reach out to vendors asking for product samples or review accounts. + - Privacy Guides **shall not** accept test/review accounts for subscription cloud services. + - Privacy Guides **may** accept freely-provided product samples for one-time purchase software applications which run locally, given they don't require a subscription for continued operation. + - Privacy Guides **may** accept freely-provided samples of hardware products. + - Privacy Guides **may** accept a freely-provided subscription service associated with a hardware product, if such a subscription/license is necessary to use the product. + - Privacy Guides **must not** enter into an agreement pertaining to our editorial opinion with the vendor in order to receive a sample or publish a review. All freely-provided items must be strictly "no strings attached." + - We **may** agree to return the product to the vendor following the review if requested. + - We **may** agree to a reasonable NDA, provided it has a clear embargo date that is lifted no more than 6 months in the future where the NDA completely no longer applies. + - We **should not** enter into any other agreement with the vendor not described here. Potential agreements not described here **must** be approved by the executive committee beforehand. + + In all cases, whether we paid for the product independently or received a free sample from a vendor, how we obtained the product **must** be clearly documented in the background section of every article associated with the product. diff --git a/docs/about/jobs.md b/docs/about/jobs.md index a8e8dc1f..b907c917 100644 --- a/docs/about/jobs.md +++ b/docs/about/jobs.md @@ -1,11 +1,40 @@ --- title: Job Openings +description: Privacy Guides has a small, remote team of privacy researchers and advocates. Any open positions we may have in the future will be posted here. --- -Privacy Guides has a small, remote team of privacy researchers and advocates working to further our mission of protecting free expression and promoting privacy-respecting technology. As a non-profit, we are expanding very slowly to ensure the project is sustainable in the long term. All of our staff members are listed [here](../about.md#staff). Please consider [donating](donate.md) to support our cause. +Privacy Guides has a small, remote team of privacy researchers and advocates working to further our mission of protecting free expression and promoting privacy-respecting technology. As a non-profit, we are expanding very slowly to ensure the project is sustainable in the long term. All of our team members are listed [here](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all). Please consider [donating](donate.md) to support our cause. We are occasionally looking for strong journalistic writers, product reviewers, and privacy experts to help us out, and any open positions will be posted below. --- -*We do not have any job openings at the moment.* +## Open Positions + +
+ +- :material-video-box:{ .lg .middle } **Content Creator** + + --- + + Full-Time | Remote | \$20-$25/hour + + [View posting :material-arrow-right-drop-circle:](jobs/content-creator.md) + +- :material-file-document-edit:{ .lg .middle } **Journalist** + + --- + + Full-Time | Remote | \$20-$25/hour + + [View posting :material-arrow-right-drop-circle:](jobs/journalist.md) + +- :material-comment-account-outline:{ .lg .middle } **Intern - Community/News** + + --- + + Internship | Remote | \$15/hour + + [View posting :material-arrow-right-drop-circle:](jobs/intern-news.md) + +
diff --git a/docs/about/jobs/content-creator.md b/docs/about/jobs/content-creator.md new file mode 100644 index 00000000..c1b2ea9e --- /dev/null +++ b/docs/about/jobs/content-creator.md @@ -0,0 +1,60 @@ +--- +title: Content Creator +description: Privacy Guides is looking for a video producer and host for informative privacy-related content on YouTube and other platforms. +--- + +[:material-arrow-left-drop-circle: Job Openings](../jobs.md) + +Are you passionate about privacy and cybersecurity? + +Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity. + +Privacy Guides is looking for a focused and motivated individual to be responsible for our social media presence from end to end, with a particular emphasis on video content. You must be comfortable being on camera to succeed in this role. + +This is a unique opportunity. Your primary goal will be to create and share privacy-based educational materials, without any motive to sell a product. If you truly value being able to create the best content that you can, and if you are passionate about privacy, then this position is for you! + +Your responsibilities will include, but aren’t limited to: + +- Scripting and hosting educational video content to be posted across various social media platforms. +- Video editing, production, and other backend work required to make successful content. +- Researching new topics to cover. +- Regular, daily posting to text-based social media platforms like Mastodon. +- Regular posting of highly educational video content to social media platforms. +- Compiling news sources for and hosting a weekly news recap (livestreamed) podcast on our YouTube channel. +- Regularly communicating with the Privacy Guides committee and other team members. + +This is a highly individualized role, and we are extremely interested in hearing your ideas on how you’ll find success and make this role your own. You will be responsible for handling virtually every aspect of this role without regular supervision, so being highly self-motivated is a must. + +As a guideline, we expect your video output to be roughly 1 video and 1 *This Week In Privacy* livestream per week, since we think most videos which meet our quality standards will be a multi-day process to research and script, in addition to a day for recording and editing. We realize some videos can be completed more quickly, while others may take multiple weeks or longer before publishing. You will be empowered to use your best judgement and prioritize your work accordingly. + +Job requirements: + +- Excellent organization and communication skills. +- Flexibility to set and respond to varying priorities and deadlines. +- Proactive, results-driven mindset with a strong sense of initiative. +- Comfortable being on camera, and working with video production equipment. +- Personal interest in consumer privacy, cybersecurity, and technology. +- Skeptical nature and drive to investigate difficult, often niche, technologies. You will need to evaluate the truthfulness of claims. + +The following qualifications will be an asset to your application. However, we are looking for the best candidate (which isn’t always apparent on paper!), so please apply even if you don’t meet any/many of these qualifications. + +- Previous YouTube or other video creation experience. +- Previous social media management experience. +- Education in English, journalism, media production, or any other related fields. +- Fluency in Spanish, French, Portuguese, or other languages. +- Familiarity with Privacy Guides' communities, culture, and mission. +- A solid understanding of the latest trends/culture on YouTube & TikTok. +- Located between UTC-08:00 and UTC-04:00 time zones. +- At least basic familiarity with GitHub, including pull requests, branches, reviews, and issues. + +The ideal candidate can commit to this role on a full-time basis (40 hours / week), but we are open to discussing a schedule you suggest. + +For this position, our hiring pay range falls between \$20-$25 / hour USD. The base pay may vary depending on job related qualifications such as knowledge, skills, and experience. Our compensation structure is rooted in a performance and merit based approach that acknowledges performance of both the individual and the project as a whole. + +--- + +**To apply, please send a video cover letter (no more than 5 minutes) and resume to , and include the name of this position in the subject line. Feel free to include any other information or examples of your work that you think we may find relevant if you'd like.** + +Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic. + +We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties. diff --git a/docs/about/jobs/intern-news.md b/docs/about/jobs/intern-news.md new file mode 100644 index 00000000..c4e83ad2 --- /dev/null +++ b/docs/about/jobs/intern-news.md @@ -0,0 +1,42 @@ +--- +title: Intern (Community & News) +description: Privacy Guides is looking for an intern to discover and promote relevant news content on our platform, and to moderate and engage with our online communities. +--- + +[:material-arrow-left-drop-circle: Job Openings](../jobs.md) + +Are you passionate about privacy and cybersecurity? + +Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity. + +This role is focused on interacting with our community members and answering their questions, keeping our online communities safe and constructive, and sharing thoughtful and informative news stories from around the internet for community discussion. + +Responsibilities will include: + +- Regularly interacting with our forum and other communities. +- Responding to moderation complaints/flags within our communities. +- Reading news stories from a variety of publications and generally staying up to date with the latest news in the privacy and cybersecurity space. +- Regularly posting interesting news stories and other topics you discover in our communities for discussion. +- Assisting our other staff and volunteers with research, writing, video production, and editing. +- Assisting with Privacy Guides' advocacy efforts. +- Remaining polite and fact-focused. + +No prior experience is necessary. We are looking for people passionate about privacy, cybersecurity, journalism, and community management regardless of your GPA or background. + +The following will be assets to your application, but please submit an application even if they don't apply to you: + +- Familiarity with Privacy Guides' communities, culture, and mission. +- Previous experience with social media management and/or journalism. +- Located between UTC-08:00 and UTC-04:00 time zones. + +This is a part-time, 10-20 hour per week role depending on your availability. We can work around your schedule and other obligations. + +This is a 6-month contract paying $15 / hour USD, with the optional opportunity for renewal or a longer-term role depending on your personal goals and the project's outcome. The specific starting and ending dates are flexible. + +--- + +**To apply, please send a cover letter and resume to , and include the name of this position in the subject line. Feel free to include any other information or examples of your work that you think we may find relevant if you'd like.** + +Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic. + +We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties. diff --git a/docs/about/jobs/journalist.md b/docs/about/jobs/journalist.md new file mode 100644 index 00000000..10fb32bd --- /dev/null +++ b/docs/about/jobs/journalist.md @@ -0,0 +1,61 @@ +--- +title: Journalist +description: Privacy Guides is looking for a determined and focused journalist to research and write stories from the privacy and cybersecurity space on a regular basis. +--- + +[:material-arrow-left-drop-circle: Job Openings](../jobs.md) + +Are you passionate about privacy and cybersecurity? + +Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity. + +We are looking for a determined and focused journalist to join our team. As a reporter for our organization, you will conduct research, interview sources, and write engaging stories in the field of consumer privacy and cybersecurity. + +Our ideal candidate is committed to combating misinformation and clearly communicating stories on a timely basis, and dedicated to producing top-tier, unbiased journalism. + +Privacy Guides is a small, largely volunteer-driven nonprofit media organization, and we do not currently have a dedicated writing and editing team. As such, you will be expected to take charge of the entire writing process from beginning to publication. You will have the freedom to choose which topics to cover and set a schedule to release articles on our main website. + +==Our primary mission is to publish the highest quality content surrounding consumer privacy and cybersecurity on the internet==, not the highest quantity of stories. You will be empowered to dive deep into the topics you are writing about, and expected to meet our high quality and editorial standards. + +Your responsibilities will include, but aren’t limited to: + +- Creating high-quality articles for our [knowledge base](../../basics/why-privacy-matters.md). +- Performing product reviews for our [reviews](https://www.privacyguides.org/articles/category/reviews) section and [tool recommendations](../../tools.md). +- Researching new topics to cover. +- Interviewing and fact-checking all relevant sources. +- Regular posting of high-quality, unbiased journalistic content across our platforms. + +As a guideline, we expect roughly 3-5 articles a week that meet our quality standards, since we believe a well-researched article will take at least 8 hours to research and write on average. We realize some articles can be completed quickly, while others may take weeks or longer before publishing. You will be empowered to use your best judgement and prioritize your work accordingly. + +We are much more interested in articles that deeply cover a subject area than articles that cover the news of the day. + +Job requirements: + +- Excellent organization and communication skills. +- Expertise in English and writing. +- Flexibility to set and respond to varying priorities and deadlines. +- Proactive, results-driven mindset with a strong sense of initiative. +- Personal interest in consumer privacy, cybersecurity, and technology. +- Regular communication with the Privacy Guides committee and other team members. +- Skeptical nature and drive to investigate difficult, often niche, technologies. You will need to evaluate the truthfulness of claims. + +The following qualifications will be an asset to your application. However, we are looking for the best candidate (which isn’t always apparent on paper!), so please apply even if you don’t meet any/many of these qualifications. + +- Previous writing or journalism experience. +- Previous product review experience. +- Education in English, journalism, media production, or any other related fields. +- Familiarity with Privacy Guides' communities, culture, and mission. +- Located between UTC-08:00 and UTC-04:00 time zones. +- At least basic familiarity with GitHub, including pull requests, branches, reviews, and issues. + +The ideal candidate can commit to this role on a full-time basis (40 hours / week), but we are open to discussing a schedule you suggest. + +For this position, our hiring pay range falls between \$20-$25 / hour USD. The base pay may vary depending on job related qualifications such as knowledge, skills, and experience. Our compensation structure is rooted in a performance and merit based approach that acknowledges performance of both the individual and the project as a whole. + +--- + +**To apply, please send a cover letter and resume to , and include the name of this position in the subject line. Feel free to include any other information or examples of your work that you think we may find relevant if you'd like.** + +Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic. + +We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties. diff --git a/docs/about/notices.md b/docs/about/notices.md index 6fd3d785..bc7fc182 100644 --- a/docs/about/notices.md +++ b/docs/about/notices.md @@ -1,5 +1,6 @@ --- title: "Notices and Disclaimers" +description: Information about our website license, acceptable use policy, and other important details. --- ## Legal Disclaimer diff --git a/docs/about/privacy-policy.md b/docs/about/privacy-policy.md index 47677953..4cdaedcd 100644 --- a/docs/about/privacy-policy.md +++ b/docs/about/privacy-policy.md @@ -1,7 +1,8 @@ --- title: "Privacy Policy" +description: We do not sell or share your data with any third-parties. --- -Privacy Guides is a community project operated by a number of active volunteer contributors. The public list of team members [can be found on GitHub](https://github.com/orgs/privacyguides/people). +Privacy Guides is a community project operated by a number of active contributors. The public list of team members [can be found on our forum](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all). ## Data We Collect From Visitors diff --git a/docs/about/privacytools.md b/docs/about/privacytools.md index 6189b82e..e906af56 100644 --- a/docs/about/privacytools.md +++ b/docs/about/privacytools.md @@ -1,5 +1,6 @@ --- title: "PrivacyTools FAQ" +description: The real story behind the team transition from privacytools.io to privacyguides.org --- 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. diff --git a/docs/about/services.md b/docs/about/services.md index 94629fd4..389746b9 100644 --- a/docs/about/services.md +++ b/docs/about/services.md @@ -1,3 +1,7 @@ +--- +description: We run a number of web services to test out features and promote cool decentralized, federated, and/or open-source projects. +--- + # Privacy Guides Services We run a number of web services to test out features and promote cool decentralized, federated, and/or open-source projects. Many of these services are available to the public and are detailed below. diff --git a/docs/about/statistics.md b/docs/about/statistics.md index 1dc31186..061bf5b9 100644 --- a/docs/about/statistics.md +++ b/docs/about/statistics.md @@ -1,5 +1,6 @@ --- title: Traffic Statistics +description: We self-host Umami to create a nice visualization of our traffic statistics, which are made public here. --- We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below. diff --git a/docs/advanced/dns-overview.md b/docs/advanced/dns-overview.md index 8b90154c..e7ef36d2 100644 --- a/docs/advanced/dns-overview.md +++ b/docs/advanced/dns-overview.md @@ -12,7 +12,7 @@ When you visit a website, a numerical address is returned. For example, when you DNS has existed since the [early days](https://en.wikipedia.org/wiki/Domain_Name_System#History) of the Internet. DNS requests made to and from DNS servers are **not** generally encrypted. In a residential setting, a customer is given servers by the ISP via [DHCP](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol). -Unencrypted DNS requests are able to be easily **surveilled** and **modified** in transit. In some parts of the world, ISPs are ordered to do primitive [DNS filtering](https://en.wikipedia.org/wiki/DNS_blocking). When you request the IP address of a domain that is blocked, the server may not respond or may respond with a different IP address. As the DNS protocol is not encrypted, the ISP (or any network operator) can use [DPI](https://en.wikipedia.org/wiki/Deep_packet_inspection) to monitor requests. ISPs can also block requests based on common characteristics, regardless of which DNS server is used. Unencrypted DNS always uses [port](https://en.wikipedia.org/wiki/Port_(computer_networking)) 53 and always uses UDP. +Unencrypted DNS requests are able to be easily **surveilled** and **modified** in transit. In some parts of the world, ISPs are ordered to do primitive [DNS filtering](https://en.wikipedia.org/wiki/DNS_blocking). When you request the IP address of a domain that is blocked, the server may not respond or may respond with a different IP address. As the DNS protocol is not encrypted, the ISP (or any network operator) can use [DPI](https://en.wikipedia.org/wiki/Deep_packet_inspection) to monitor requests. ISPs can also block requests based on common characteristics, regardless of which DNS server is used. Below, we discuss and provide a tutorial to prove what an outside observer may see using regular unencrypted DNS and [encrypted DNS](#what-is-encrypted-dns). diff --git a/docs/advanced/payments.md b/docs/advanced/payments.md index 75df2e5c..66cabba1 100644 --- a/docs/advanced/payments.md +++ b/docs/advanced/payments.md @@ -1,6 +1,7 @@ --- title: Private Payments icon: material/hand-coin +description: Your buying habits are the holy grail of ad targeting, but you still have plenty of options when it comes to making payments privately. --- There's a reason data about your buying habits is considered the holy grail of ad targeting: your purchases can leak a veritable treasure trove of data about you. Unfortunately, the current financial system is anti-privacy by design, enabling banks, other companies, and governments to easily trace transactions. Nevertheless, you have plenty of options when it comes to making payments privately. diff --git a/docs/advanced/tor-overview.md b/docs/advanced/tor-overview.md index 2004520b..9fca7e00 100644 --- a/docs/advanced/tor-overview.md +++ b/docs/advanced/tor-overview.md @@ -204,5 +204,5 @@ It is [possible](https://discuss.privacyguides.net/t/clarify-tors-weaknesses-wit ## Additional Resources - [Tor Browser User Manual](https://tb-manual.torproject.org) -- [How Tor Works - Computerphile](https://invidious.privacyguides.net/embed/QRYzre4bf7I?local=true) (YouTube) -- [Tor Onion Services - Computerphile](https://invidious.privacyguides.net/embed/lVcbq_a5N9I?local=true) (YouTube) +- [How Tor Works - Computerphile](https://youtube.com/watch?v=QRYzre4bf7I) (YouTube) +- [Tor Onion Services - Computerphile](https://youtube.com/watch?v=lVcbq_a5N9I) (YouTube) diff --git a/docs/android/distributions.md b/docs/android/distributions.md index 9d0707d3..af5bfe76 100644 --- a/docs/android/distributions.md +++ b/docs/android/distributions.md @@ -62,43 +62,45 @@ GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wik -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. +GrapheneOS supports [sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play), which runs 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, 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). +By default, Android makes many network connections to Google to perform DNS connectivity checks, to sync with current network time, to check your network connectivity, and for many other background tasks. GrapheneOS replaces these with connections to servers operated by GrapheneOS and subject to their privacy policy. This hides information like your IP address [from Google](../basics/common-threats.md#privacy-from-service-providers), but means it is trivial for an admin on your network or ISP to see you are making connections to `grapheneos.network`, `grapheneos.org`, etc. and deduce what operating system you are using. + +If you want to hide information like this from an adversary on your network or ISP, you **must** use a [trusted VPN](../vpn.md) in addition to changing the connectivity check setting to **Standard (Google)**. It can be found in :gear: **Settings** → **Network & internet** → **Internet connectivity checks**. This option allows you to connect to Google's servers for connectivity checks, which, alongside the usage of a VPN, helps you blend in with a larger pool of Android devices. + ### DivestOS +If GrapheneOS isn't compatible with your phone, DivestOS is a good alternative. It supports a wide variety of phones with *varying* levels of security protections and quality control. +
![DivestOS logo](../assets/img/android/divestos.svg){ 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. +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](../os/android-overview.md#verified-boot) on some non-Pixel devices. Not all supported devices support verified boot or other security features. [: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-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 } +[: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/docs/Web/Privacy/State_Partitioning), and receives out-of-band updates. +The [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) of firmware updates in particular will vary significantly depending on your phone model. While standard AOSP bugs and vulnerabilities can be fixed with standard software updates like those provided by DivestOS, some vulnerabilities cannot be patched without support from the device manufacturer, making end-of-life devices less safe even with an up-to-date alternative ROM like DivestOS. + +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 [control-flow integrity](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 implements some system hardening patches originally developed for GrapheneOS. DivestOS 16.0 and higher implements GrapheneOS's `INTERNET` and `SENSORS` permission toggle, [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), [exec-spawning](https://grapheneos.org/usage#exec-spawning), 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 per-network full MAC address randomization, [`ptrace_scope`](https://kernel.org/doc/html/latest/admin-guide/LSM/Yama.html) control, automatic 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. +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). For these apps you should continue to use F-Droid **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. -
-

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. - -
+DivestOS replaces many of Android's background network connections to Google services with alternative services, such as using OpenEUICC for eSIM activation, NTP.org for network time, and Quad9 for DNS. These connections can be modified, but their deviation from a standard Android phone's network connections could mean it is easier for an adversary on your network to deduce what operating system you have installed on your phone. If this is a concern to you, consider using a [trusted VPN](../vpn.md) and enabling the native VPN [kill switch](../os/android-overview.md#vpn-killswitch) to hide this network traffic from your local network and ISP. ## Criteria diff --git a/docs/android/general-apps.md b/docs/android/general-apps.md index fc2ff593..dc1ec989 100644 --- a/docs/android/general-apps.md +++ b/docs/android/general-apps.md @@ -1,5 +1,6 @@ --- title: "General Apps" +description: The apps listed here are Android-exclusive and specifically enhance or replace key system functionality. schema: - "@context": http://schema.org @@ -26,10 +27,16 @@ schema: operatingSystem: Android robots: nofollow, max-snippet:-1, max-image-preview:large --- +Protects against the following threat(s): + +- [:material-bug-outline: Passive Attacks](../basics/common-threats.md#security-and-privacy){ .pg-orange } + 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 +If your device is on Android 15 or greater, we recommend using the native [Private Space](../os/android-overview.md#private-space) feature instead, which provides nearly the same functionality without needing to place trust in and grant powerful permissions to a third-party app. +
![Shelter logo](../assets/img/android/shelter.svg){ align=right } @@ -47,14 +54,18 @@ Shelter supports blocking contact search cross profiles and sharing files across

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.
+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). + ### Secure Camera +Protects against the following threat(s): + +- [:material-account-search: Public Exposure](../basics/common-threats.md#limiting-public-information){ .pg-green } +
![Secure camera logo](../assets/img/android/secure_camera.svg#only-light){ align=right } @@ -98,7 +109,6 @@ The image orientation metadata is not deleted. If you enable location (in Secure Protects against the following threat(s): - [:material-target-account: Targeted Attacks](../basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } -- [:material-bug-outline: Passive Attacks](../basics/common-threats.md#security-and-privacy){ .pg-orange }
diff --git a/docs/android/index.md b/docs/android/index.md index 9cfab672..63ac6364 100644 --- a/docs/android/index.md +++ b/docs/android/index.md @@ -1,5 +1,6 @@ --- title: "Android" +description: Our advice for replacing privacy-invasive default Android features with private and secure alternatives. icon: 'simple/android' cover: android.webp schema: @@ -21,16 +22,48 @@ schema: 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" } +[General Android Overview :material-arrow-right-drop-circle:](../os/android-overview.md){ .md-button .md-button--primary } -We recommend the following Android-specific tools to maximize your mobile device's security and privacy. +## Our Advice -- [Alternative Distributions](distributions.md) -- [General Apps](general-apps.md) -- [Obtaining Applications](obtaining-apps.md) +### Replace Google Services -To learn more about Android: +There are many methods of obtaining apps on Android while avoiding Google Play. Whenever possible, try using one of these methods before getting your apps from non-private sources: -[General Android Overview :material-arrow-right-drop-circle:](../os/android-overview.md){ .md-button } +[Obtaining Applications :material-arrow-right-drop-circle:](obtaining-apps.md){ .md-button } + +There are also many private alternatives to the apps that come pre-installed on your phone, such as the camera app. Besides the Android apps we recommend throughout this site in general, we've created a list of system utilities specific to Android which you might find useful. + +[General App Recommendations :material-arrow-right-drop-circle:](general-apps.md){ .md-button } + +### Install a Custom Distribution + +When you buy an Android phone, the default operating system comes bundled with apps and functionality that are not part of the Android Open Source Project. Many of these apps—even apps like the dialer which provide basic system functionality—require invasive integrations with Google Play Services, which in turn asks for privileges to access your files, contacts storage, call logs, SMS messages, location, camera, microphone, and numerous other things on your device in order for those basic system apps and many other apps to function in the first place. Frameworks like Google Play Services increase the attack surface of your device and are the source of various privacy concerns with Android. + +This problem could be solved by using an alternative Android distribution, commonly known as a *custom ROM*, that does not come with such invasive integration. Unfortunately, many custom Android distributions often violate the Android security model by not supporting critical security features such as AVB, rollback protection, firmware updates, and so on. Some distributions also ship [`userdebug`](https://source.android.com/setup/build/building#choose-a-target) builds which expose root via [ADB](https://developer.android.com/studio/command-line/adb) and require [more permissive](https://github.com/LineageOS/android_system_sepolicy/search?q=userdebug&type=code) SELinux policies to accommodate debugging features, resulting in a further increased attack surface and weakened security model. + +Ideally, when choosing a custom Android distribution, you should make sure that it upholds the Android security model. At the very least, the distribution should have production builds, support for AVB, rollback protection, timely firmware and operating system updates, and SELinux in [enforcing mode](https://source.android.com/security/selinux/concepts#enforcement_levels). All of our recommended Android distributions satisfy these criteria: + +[Recommended Distributions :material-arrow-right-drop-circle:](distributions.md){ .md-button } + +### Avoid Root + +[Rooting](https://en.wikipedia.org/wiki/Rooting_(Android)) Android phones can decrease security significantly as it weakens the complete [Android security model](https://en.wikipedia.org/wiki/Android_(operating_system)#Security_and_privacy). This can decrease privacy should there be an exploit that is assisted by the decreased security. Common rooting methods involve directly tampering with the boot partition, making it impossible to perform successful Verified Boot. Apps that require root will also modify the system partition, meaning that Verified Boot would have to remain disabled. Having root exposed directly in the user interface also increases the attack surface of your device and may assist in [privilege escalation](https://en.wikipedia.org/wiki/Privilege_escalation) vulnerabilities and SELinux policy bypasses. + +Content blockers which modify the [hosts file](https://en.wikipedia.org/wiki/Hosts_(file)) (AdAway) and firewalls (AFWall+) which require root access persistently are dangerous and should not be used. They are also not the correct way to solve their intended purposes. For content blocking, we suggest encrypted [DNS](../dns.md) or content blocking functionality provided by a VPN instead. TrackerControl and AdAway in non-root mode will take up the VPN slot (by using a local loopback VPN), preventing you from using privacy enhancing services such as [Orbot](../tor.md#orbot) or a [real VPN provider](../vpn.md). + +AFWall+ works based on the [packet filtering](https://en.wikipedia.org/wiki/Firewall_(computing)#Packet_filter) approach and may be bypassable in some situations. + +We do not believe that the security sacrifices made by rooting a phone are worth the questionable privacy benefits of those apps. + +### Install Updates Regularly + +It's important to not use an [end-of-life](https://endoflife.date/android) version of Android. Newer versions of Android receive not only security updates for the operating system but also important privacy enhancing updates too. + +For example, [prior to Android 10](https://developer.android.com/about/versions/10/privacy/changes) any apps with the [`READ_PHONE_STATE`](https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE) permission could access sensitive and unique serial numbers of your phone such as [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity), [MEID](https://en.wikipedia.org/wiki/Mobile_equipment_identifier), or your SIM card's [IMSI](https://en.wikipedia.org/wiki/International_mobile_subscriber_identity); whereas now they must be system apps to do so. System apps are only provided by the OEM or Android distribution. + +### Use Built-in Sharing Features + +You can avoid giving many apps permission to access your media with Android's built-in sharing features. Many applications allow you to "share" a file with them for media upload. + +For example, if you want to post a picture to Discord you can open your file manager or gallery and share that picture with the Discord app, instead of granting Discord full access to your media and photos. diff --git a/docs/android/obtaining-apps.md b/docs/android/obtaining-apps.md index c27f0ef5..7f60cd49 100644 --- a/docs/android/obtaining-apps.md +++ b/docs/android/obtaining-apps.md @@ -1,5 +1,6 @@ --- title: "Obtaining Applications" +description: We recommend these methods for obtaining applications on Android without interacting with Google Play Services. --- 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. diff --git a/docs/assets/img/ios/contact-permissions-dark.png b/docs/assets/img/ios/contact-permissions-dark.png new file mode 100644 index 00000000..f7279408 Binary files /dev/null and b/docs/assets/img/ios/contact-permissions-dark.png differ diff --git a/docs/assets/img/ios/contact-permissions-light.png b/docs/assets/img/ios/contact-permissions-light.png new file mode 100644 index 00000000..c49046ad Binary files /dev/null and b/docs/assets/img/ios/contact-permissions-light.png differ diff --git a/docs/assets/img/ios/photo-permissions-dark.png b/docs/assets/img/ios/photo-permissions-dark.png new file mode 100644 index 00000000..a5e11c54 Binary files /dev/null and b/docs/assets/img/ios/photo-permissions-dark.png differ diff --git a/docs/assets/img/ios/photo-permissions-light.png b/docs/assets/img/ios/photo-permissions-light.png new file mode 100644 index 00000000..80e46c45 Binary files /dev/null and b/docs/assets/img/ios/photo-permissions-light.png differ diff --git a/docs/assets/img/ios/private-access-dark.png b/docs/assets/img/ios/private-access-dark.png new file mode 100644 index 00000000..b7126d32 Binary files /dev/null and b/docs/assets/img/ios/private-access-dark.png differ diff --git a/docs/assets/img/ios/private-access-light.png b/docs/assets/img/ios/private-access-light.png new file mode 100644 index 00000000..9ba36f06 Binary files /dev/null and b/docs/assets/img/ios/private-access-light.png differ diff --git a/docs/basics/account-creation.md b/docs/basics/account-creation.md index 22b11db6..44b4f4eb 100644 --- a/docs/basics/account-creation.md +++ b/docs/basics/account-creation.md @@ -74,7 +74,7 @@ Malicious applications, particularly on mobile devices where the application has ### Phone number -We recommend avoiding services that require a phone number for sign up. A phone number can identity you across multiple services and depending on data sharing agreements this will make your usage easier to track, particularly if one of those services is breached as the phone number is often **not** encrypted. +We recommend avoiding services that require a phone number for sign up. A phone number can identify you across multiple services and depending on data sharing agreements this will make your usage easier to track, particularly if one of those services is breached as the phone number is often **not** encrypted. You should avoid giving out your real phone number if you can. Some services will allow the use of VOIP numbers, however these often trigger fraud detection systems, causing an account to be locked down, so we don't recommend that for important accounts. diff --git a/docs/basics/why-privacy-matters.md b/docs/basics/why-privacy-matters.md index ea4f0537..b07bb7f3 100644 --- a/docs/basics/why-privacy-matters.md +++ b/docs/basics/why-privacy-matters.md @@ -1,6 +1,7 @@ --- title: "Why Privacy Matters" icon: 'material/shield-account' +description: In the modern age of digital data exploitation, your privacy has never been more critical, and yet many believe it is already a lost cause. It is not. --- In the modern age of digital data exploitation, your privacy has never been more critical, and yet many believe it is already a lost cause. It is not. ==Your privacy is up for grabs==, and you need to care about it. Privacy is about power, and it is so important that this power ends up in the right hands. diff --git a/docs/browser-extensions.md b/docs/browser-extensions.md index 5cda2b5d..0364e0f5 100644 --- a/docs/browser-extensions.md +++ b/docs/browser-extensions.md @@ -69,7 +69,6 @@ uBlock Origin also has a "Lite" version of their extension, which offers a very
Downloads -- [:simple-firefoxbrowser: Firefox](https://addons.mozilla.org/addon/ublock-origin-lite) - [:simple-googlechrome: Chrome](https://chrome.google.com/webstore/detail/ublock-origin-lite/ddkjiahejlhfcafbddmgiahcphecmpfh)
diff --git a/docs/calendar.md b/docs/calendar.md index 62e414b9..fc3e3113 100644 --- a/docs/calendar.md +++ b/docs/calendar.md @@ -24,9 +24,9 @@ Multiple calendars and extended sharing functionality is limited to paid subscri [: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-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 } +[:octicons-heart-16:](https://tuta.com/community){ .card-link title="Contribute" }
Downloads @@ -52,8 +52,8 @@ Multiple calendars and extended sharing functionality is limited to paid subscri **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/calendar){ .card-link title=Documentation} +[:octicons-eye-16:](https://proton.me/calendar/privacy-policy){ .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" }
@@ -67,7 +67,7 @@ Multiple calendars and extended sharing functionality is limited to paid subscri
-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). +Unfortunately, as of August 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 diff --git a/docs/cloud.md b/docs/cloud.md index 91a4d568..bf5cb4f6 100644 --- a/docs/cloud.md +++ b/docs/cloud.md @@ -29,9 +29,9 @@ Nextcloud is [still a recommended tool](document-collaboration.md#nextcloud) for **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-home-16: Homepage](https://proton.me/drive){ .md-button .md-button--primary } +[:octicons-eye-16:](https://proton.me/drive/privacy-policy){ .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" }
@@ -58,9 +58,9 @@ Proton Drive's brand new mobile clients have not yet been publicly audited by a **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-home-16: Homepage](https://tresorit.com){ .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} +[:octicons-info-16:](https://support.tresorit.com){ .card-link title="Documentation" }
Downloads @@ -118,9 +118,9 @@ Peergos is primarily a web app, but you can self-host the server either as a loc 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. +Peergos was [audited](https://cure53.de/pentest-report_peergos.pdf) by Cure53 in June 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. +An 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 diff --git a/docs/cryptocurrency.md b/docs/cryptocurrency.md index 7ac7523b..6b954f4f 100644 --- a/docs/cryptocurrency.md +++ b/docs/cryptocurrency.md @@ -1,5 +1,6 @@ --- meta_title: "Private Cryptocurrency Blockchains - Privacy Guides" +description: Unlike most cryptocurrencies, these ones provide transaction privacy by default. Monero is our top choice for obfuscating transaction information. title: Cryptocurrency icon: material/bank-circle cover: cryptocurrency.webp diff --git a/docs/data-broker-removals.md b/docs/data-broker-removals.md index 78959728..131920f3 100644 --- a/docs/data-broker-removals.md +++ b/docs/data-broker-removals.md @@ -25,18 +25,36 @@ Use your favorite [search engine](search-engines.md) to see if your data is triv The quickest, most effective, and most private way to remove yourself from people search sites is to submit opt-out requests manually to each site. This can *seem* like a daunting task, because there are hundreds of people search sites, but the reality is that the vast majority of these sites are operated by a small handful of companies. -You should search for your information on these 8 sites first, and submit an opt-out request if your information is found. Removing your data from these providers typically removes your data from many smaller sites at the same time. +You should search for your information on these sites first, and submit an opt-out request if your information is found. Removing your data from these providers typically removes your data from many smaller sites at the same time. -- Acxiom -- BeenVerified -- InfoTracer -- Intelius -- Radaris -- Spokeo -- TruePeopleSearch -- Whitepages +- Advanced Background Checks ([Search](https://advancedbackgroundchecks.com), [Opt-Out](https://advancedbackgroundchecks.com/removal)) +- BeenVerified ([Search](https://beenverified.com/app/optout/search), [Opt-Out](https://beenverified.com/app/optout/address-search)) +- CheckPeople ([Search](https://checkpeople.com/do-not-sell-info), select *Remove Record* to opt-out) +- ClustrMaps ([Search](https://clustrmaps.com), [Opt-Out](https://clustrmaps.com/bl/opt-out)) +- Dataveria ([Search](https://dataveria.com), [Opt-Out](https://dataveria.com/ng/control/privacy)) +- Glad I Know ([Search](https://gladiknow.com), [Opt-Out](https://gladiknow.com/opt-out)) +- InfoTracer ([Search](https://infotracer.com), [Opt-Out](https://infotracer.com/optout)) +- Intelius ([Search](https://intelius.com), [Opt-Out](https://suppression.peopleconnect.us/login)) +- PeekYou ([Search](https://peekyou.com), [Opt-Out](https://peekyou.com/about/contact/optout)) +- PublicDataUSA ([Search](https://publicdatausa.com), [Opt-Out](https://publicdatausa.com/remove.php)) +- Radaris ([Search](https://radaris.com), [Opt-Out](https://radaris.com/page/how-to-remove)) +- Spokeo ([Search](https://spokeo.com/search), [Opt-Out](https://spokeo.com/optout)) +- That's Them ([Search](https://thatsthem.com), [Opt-Out](https://thatsthem.com/optout)) +- USPhonebook ([Search and Opt-Out](https://usphonebook.com/opt-out)) +- Whitepages ([Search](https://whitepages.com), [Opt-Out](https://whitepages.com/suppression_requests)) -Once you have done this, it's best to wait a week or two for the requests to propagate to all their sites. Then, you can start to search and opt-out of any remaining sites you find. It can be a good idea to use tools like [Optery](#optery-free-paid)'s free reports or [Google's *Results about you*](#google-results-about-you-free) tool to help find any data that remains on the internet. +
+

A tip on opt-out strategy

+ +Be sure to avoid burning out or becoming overwhelmed with this process. Unless you're in immediate danger, you can take breaks and avoid doing them all at once.[^1] + +One strategy could be to look at a single website from the list above every week, starting from the top. Next week you move on to the following website on the list, and so on. When you reach the end of the list, you can start again from the beginning. + +This sets you up on a nice schedule to re-review each website approximately every 3-4 months, and breaks down the process into simple 5 minute tasks you can easily add to your weekly routine. + +
+ +Once you have opted-out of all of these sites for the first time, it's best to wait a week or two for the requests to propagate to all their sites. Then, you can start to search and opt-out of any remaining sites you find. It can be a good idea to use a web crawler like [Google's *Results about you*](#google-results-about-you-free) tool to help find any data that remains on the internet. Otherwise, privacy journalist Yael Grauer has compiled an excellent list of data broker sites with direct links to their search tools and opt-out pages. You can take some time to go though each site to determine whether they have your information, and remove it: @@ -61,28 +79,28 @@ Some websites supported by EasyOptOuts are publicly searchable. In those cases E Our testing indicates that EasyOptOuts provides the best value out of any data removal service we've tested, with a very affordable price and high effectiveness. We will publish a detailed review of EasyOptOuts on our blog in the near future and update this page when it is published. [Independent findings from Consumer Reports](https://discuss.privacyguides.net/t/consumer-reports-evaluating-people-search-site-removal-services/19948) also indicate that EasyOptOuts is one of the top performing data removal services. -## Optery Free & Paid +
+

High priority sites not supported by EasyOptOuts

-
+EasyOptOuts does not cover the following sites we consider to be "high priority," so you should still manually opt-out of: -![Optery logo](assets/img/data-broker-removals/optery.svg){ align=right } - -**Optery** is a free scanning tool which will discover which people search sites have your personal information, provide you with a report of those sites, and link you directly to the self-service removal process to do manually. If you keep your account, the report will be updated quarterly. Optery also has paid plans available where they will submit opt-out requests automatically on your behalf. - -[:octicons-home-16: Homepage](https://optery.com){ .md-button .md-button--primary } -[:octicons-eye-16:](https://optery.com/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://help.optery.com){ .card-link title=Documentation} +- Intelius ([Search](https://intelius.com), [Opt-Out](https://suppression.peopleconnect.us/login)) +- PeekYou ([Search](https://peekyou.com), [Opt-Out](https://peekyou.com/about/contact/optout)) +- PublicDataUSA ([Search](https://publicdatausa.com), [Opt-Out](https://publicdatausa.com/remove.php))
-Optery's free scanning tool is an effective way to discover which data brokers have your information already, and their self-service dashboard allows you to easily submit opt-out requests manually. - -We have not finished testing Optery's premium, *automatic* opt-out plans, although initial results appear to be positive. [Independent findings from Consumer Reports](https://discuss.privacyguides.net/t/consumer-reports-evaluating-people-search-site-removal-services/19948) also indicate that Optery is one of the top performing data removal services. It necessarily takes at least a few months for us to evaluate a new data removal service, so check back here soon for our own test results. We will also publish a detailed review of Optery's full service on our blog when we have completed testing, and we will update this page accordingly. - ## Google *Results About You* Free +
+

Google is a data collector themselves

+ This method will require you to submit your personal information to Google for them to periodically monitor their search results for. Google claims to not use the information provided to this tool to "personalize your experiences" across other Google products. +While Google is not a data broker themselves *per se*, as they don't sell or share your data with outside parties, some may find this relationship unacceptable. You should always decide whether the benefits of this tool outweigh the drawbacks for your individual situation. + +
+
![Google logo](assets/img/data-broker-removals/google.svg){ align=right } @@ -101,3 +119,15 @@ You can add up to 3 addresses, 3 phone numbers, and 3 email addresses to your Go When results are found, they will be available for review in this web tool. You can also optionally receive an email notification delivered to the account's Gmail address that lets you know when new results are found. You will then be able to click **Request to remove** on each discovered listing, and Google will review the request. In our testing, this tool worked to reliably remove people search sites from Google search results, but was not effective against websites that showed *corporate* filing information, even if you used your personal address to register a company, nor was it effective against social media profiles. + +## 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 a data removal service, and conduct your own research to ensure it's the right choice for you. + +Our picks for removal services are primarily based on independent professional testing from third-parties as noted in the sections above, our own internal testing, and aggregated reviews from our community. + +- Must not be a whitelabeled service or reseller of another provider. +- Must not be affiliated with the data broker industry or purchase advertising on people search sites. +- Must only use your personal data for the purposes of opting you out of data broker databases and people search sites. + +[^1]: If you *are* immediately threatened by stalkers or other threats, you should strongly consider an automated tool like [EasyOptOuts](#easyoptouts-paid), at least for the initial "purge." When things are more manageable in the future you can come back to the manual process. Of course, in a dangerous situation your first priority should always be to seek professional help from police or others before tackling it on your own. diff --git a/docs/data-redaction.md b/docs/data-redaction.md index bcef3d72..3b7bc050 100644 --- a/docs/data-redaction.md +++ b/docs/data-redaction.md @@ -5,8 +5,19 @@ icon: material/tag-remove description: Use these tools to remove metadata like GPS location and other identifying information from photos and files you share. cover: data-redaction.webp --- +Protects against the following threat(s): + +- [:material-account-search: Public Exposure](basics/common-threats.md#limiting-public-information){ .pg-green } + When sharing files, be sure to remove associated metadata. Image files commonly include [Exif](https://en.wikipedia.org/wiki/Exif) data. Photos sometimes even include GPS coordinates in the file metadata. +
+

Warning

+ +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, you should draw a box over the text. + +
+ ## Desktop ### MAT2 @@ -98,36 +109,6 @@ The app offers multiple ways to erase metadata from images. Namely:
-### PrivacyBlur - -
- -![PrivacyBlur logo](assets/img/data-redaction/privacyblur.svg){ align=right } - -**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" } - -
-Downloads - -- [: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

- -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). - -
- ## Command-line ### ExifTool diff --git a/docs/desktop-browsers.md b/docs/desktop-browsers.md index 74b84145..100a7a02 100644 --- a/docs/desktop-browsers.md +++ b/docs/desktop-browsers.md @@ -74,7 +74,7 @@ If you need to browse the internet anonymously, you should use [Tor](tor.md) ins [: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-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" }
@@ -120,9 +120,9 @@ Mullvad Browser comes with DuckDuckGo set as the default [search engine](search- [: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-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 } +[:octicons-heart-16:](https://donate.mozilla.org){ .card-link title="Contribute" }
Downloads @@ -184,6 +184,8 @@ This protects you from persistent cookies, but does not protect you against cook - [ ] Uncheck **Allow Firefox to install and run studies** - [ ] Uncheck **Allow Firefox to send backlogged crash reports on your behalf** +According to Mozilla's privacy policy for Firefox, + > 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 Mozilla Accounts service collects [some technical data](https://mozilla.org/privacy/mozilla-accounts). If you use a Mozilla Account you can opt-out: @@ -226,7 +228,7 @@ Max Protection enforces the use of DNS over HTTPS, and a security warning will s 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. +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 that 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 @@ -241,7 +243,7 @@ Brave is built upon the Chromium web browser project, so it should feel familiar [: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-info-16:](https://support.brave.com){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/brave/brave-browser){ .card-link title="Source Code" }
@@ -294,8 +296,8 @@ Brave allows you to select additional content filters within the internal `brave
-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. +1. This option disables JavaScript, which will break a lot of sites. To unbreak them, you can set exceptions on a per-site basis by clicking on the Shield icon in the address bar and unchecking this setting under *Advanced controls*. +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 and unchecking this setting under *Advanced controls*. #### Privacy and security @@ -303,7 +305,7 @@ Brave allows you to select additional content filters within the internal `brave - [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) +- [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** - [x] Select **Auto-redirect AMP pages** - [x] Select **Auto-redirect tracking URLs** @@ -324,7 +326,7 @@ If you wish to stay logged in to a particular site you visit often, you can set ##### Tor windows -[**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). +[**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 is, 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). ##### Data Collection @@ -338,12 +340,17 @@ Brave's Web3 features can potentially add to your browser fingerprint and attack - 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 +#### Search engine + +We recommend disabling search suggestions in Brave for the same reason we recommend disabling this feature in [Firefox](#search). + +- [ ] Uncheck **Show search suggestions** + #### System
@@ -364,8 +371,6 @@ Brave's Web3 features can potentially add to your browser fingerprint and attack **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 - ## 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. @@ -386,8 +391,7 @@ Our best-case criteria represents what we would like to see from the perfect pro - 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 support Progressive Web Apps (PWAs). 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. diff --git a/docs/desktop.md b/docs/desktop.md index 583f1759..74f56a74 100644 --- a/docs/desktop.md +++ b/docs/desktop.md @@ -4,6 +4,10 @@ icon: simple/linux description: Linux distributions are commonly recommended for privacy protection and software freedom. cover: desktop.webp --- +Protects against the following threat(s): + +- [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } + Linux distributions are commonly recommended for privacy protection and software freedom. If you don't already use Linux, below are some distributions we suggest trying out, as well as some general privacy and security improvement tips that are applicable to many Linux distributions. - [General Linux Overview :material-arrow-right-drop-circle:](os/linux-overview.md) @@ -68,7 +72,7 @@ Arch Linux has a rolling release cycle. There is no fixed release schedule and p Being a DIY distribution, you are [expected to set up and maintain](os/linux-overview.md#arch-based-distributions) your system on your own. Arch has an [official installer](https://wiki.archlinux.org/title/Archinstall) to make the installation process a little easier. -A large portion of [Arch Linux’s packages](https://reproducible.archlinux.org) are [reproducible](https://reproducible-builds.org). +A large portion of [Arch Linux’s packages](https://reproducible.archlinux.org) are [reproducible](https://reproducible-builds.org)[^1]. ## Atomic Distributions @@ -124,7 +128,7 @@ The Nix package manager uses a purely functional language—which is also called [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. 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 }. +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[^1]. ## Anonymity-Focused Distributions @@ -134,7 +138,7 @@ Nix is a source-based package manager; if there’s no pre-built available in th ![Whonix logo](assets/img/linux-desktop/whonix.svg){ 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 [:material-incognito: Anonymity](basics/common-threats.md#anonymity-vs-privacy){ .pg-purple } on the internet. Whonix is best used in conjunction with [Qubes OS](#qubes-os). [:octicons-home-16: Homepage](https://whonix.org){ .md-button .md-button--primary } [:simple-torbrowser:](http://dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion){ .card-link title="Onion Service" } @@ -157,7 +161,7 @@ Whonix is best used [in conjunction with Qubes](https://whonix.org/wiki/Qubes/Wh ![Tails logo](assets/img/linux-desktop/tails.svg){ 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 [:material-incognito: Anonymity](basics/common-threats.md#anonymity-vs-privacy){ .pg-purple } 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.net){ .md-button .md-button--primary } [:octicons-info-16:](https://tails.net/doc/index.en.html){ .card-link title=Documentation} @@ -182,6 +186,10 @@ By design, Tails is meant to completely reset itself after each reboot. Encrypte ## Security-focused Distributions +Protects against the following threat(s): + +- [:material-bug-outline: Passive Attacks](basics/common-threats.md#security-and-privacy){ .pg-orange } + ### Qubes OS
@@ -201,7 +209,7 @@ By design, Tails is meant to completely reset itself after each reboot. Encrypte
-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. +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 via an exploit in a [:material-target-account: Targeted Attack](basics/common-threats.md#attacks-against-specific-individuals){ .pg-red }, the extra isolation is likely to protect the rest of the *qubes* and the core system. For further information about how Qubes works, read our full [Qubes OS overview](os/qubes-overview.md) page. @@ -241,3 +249,5 @@ Choosing a Linux distro that is right for you will come down to a huge variety o - Maintaining an operating system is a major challenge, and smaller projects have a tendency to make more avoidable mistakes, or delay critical updates (or worse, disappear entirely). We lean towards projects which will likely be around 10 years from now (whether that's due to corporate backing or very significant community support), and away from projects which are hand-built or have a small number of maintainers. In addition, [our standard criteria](about/criteria.md) for recommended projects still applies. **Please note we are not affiliated with any of the projects we recommend.** + +[^1]: Reproducibility entails the ability to verify that packages and binaries made available to the end user match the source code, which can be useful against potential [:material-package-variant-closed-remove: Supply Chain Attacks](basics/common-threats.md#attacks-against-certain-organizations){ .pg-viridian }. diff --git a/docs/device-integrity.md b/docs/device-integrity.md index 761a11da..9c7b5fd6 100644 --- a/docs/device-integrity.md +++ b/docs/device-integrity.md @@ -227,32 +227,3 @@ Using these apps is insufficient to determine that a device is "clean", and not
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) - -
- -![iVerify logo](assets/img/device-integrity/iverify.webp){ 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 of [:material-target-account: Targeted Attacks](basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } such as [Pegasus](https://en.wikipedia.org/wiki/Pegasus_(spyware)). - -[: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} - -
-Downloads - -- [:simple-appstore: App Store](https://apps.apple.com/app/id1466120520) - -
- -
- -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. diff --git a/docs/dns.md b/docs/dns.md index aad010ef..e7f06d31 100644 --- a/docs/dns.md +++ b/docs/dns.md @@ -20,14 +20,14 @@ These are our favorite public DNS resolvers based on their privacy and security | 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) | +| [**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-dns.io/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) +[^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-dns.io/en/privacy.html](https://adguard-dns.io/en/privacy.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) [^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]: 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) diff --git a/docs/email-aliasing.md b/docs/email-aliasing.md index f2e75e24..08bc24db 100644 --- a/docs/email-aliasing.md +++ b/docs/email-aliasing.md @@ -31,9 +31,9 @@ They also have a number of benefits over "temporary email" services: - 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. +Our email aliasing recommendations are providers that allow you to create aliases on domains they control, as well as on 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. +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[^1], 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 @@ -41,7 +41,7 @@ Using an aliasing service requires trusting both your email provider and your al ![addy.io logo](assets/img/email-aliasing/addy.svg){ align=right } -**addy.io** lets you create 10 domain aliases on a shared domain for free, or unlimited "standard" aliases which are less anonymous. +**addy.io** lets you create 10 domain aliases on a shared domain for free, or unlimited "standard" aliases. [:octicons-home-16: Homepage](https://addy.io){ .md-button .md-button--primary } [:octicons-eye-16:](https://addy.io/privacy){ .card-link title="Privacy Policy" } @@ -69,7 +69,9 @@ Notable free features: - [x] Unlimited Standard Aliases - [ ] No Outgoing Replies - [x] 1 Recipient Mailbox -- [x] Automatic PGP Encryption +- [x] Automatic PGP Encryption[^1] + +If you cancel your subscription, you will still enjoy the features of your paid plan until the billing cycle ends. After the end of your current billing cycle, most paid features (including any custom domains) will be [deactivated](https://addy.io/faq/#what-happens-if-i-have-a-subscription-but-then-cancel-it), paid account settings will be reverted to their defaults, and catch-all will be enabled if it was previously disabled. ### SimpleLogin @@ -101,17 +103,19 @@ Notable free features: 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. +You can link your SimpleLogin account in the settings with your Proton account. If you have the Proton Unlimited plan or any multi-user Proton 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 +- [ ] Automatic PGP Encryption[^1] is only available on paid plans + +When your subscription ends, all aliases you created will still be able to receive and send emails. However, you cannot create any new aliases that would exceed the free plan limit, nor can you add a new domain, directory, or mailbox. ## 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. +[^1]: 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. diff --git a/docs/email-clients.md b/docs/email-clients.md index 4deb063c..90db2b0b 100644 --- a/docs/email-clients.md +++ b/docs/email-clients.md @@ -4,7 +4,12 @@ icon: material/email-open description: These email clients are privacy-respecting and support OpenPGP email encryption. cover: email-clients.webp --- -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. +Protects against the following threat(s): + +- [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } +- [:material-target-account: Targeted Attacks](basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } + +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) to prevent account theft.
Email does not provide forward secrecy @@ -29,12 +34,14 @@ OpenPGP also does not support [forward secrecy](https://en.wikipedia.org/wiki/Fo [: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-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 +- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=net.thunderbird.android) +- [:simple-github: GitHub](https://github.com/thunderbird/thunderbird-android/releases) - [:fontawesome-brands-windows: Windows](https://thunderbird.net) - [:simple-apple: macOS](https://thunderbird.net) - [:simple-linux: Linux](https://thunderbird.net) @@ -44,16 +51,29 @@ OpenPGP also does not support [forward secrecy](https://en.wikipedia.org/wiki/Fo
+
+

Warning

+ +When replying to someone on a mailing list in Thunderbird Mobile, the "reply" option may also include the mailing list. For more information see [thunderbird/thunderbird-android #3738](https://github.com/thunderbird/thunderbird-android/issues/3738). + +
+ #### Recommended Configuration -We recommend changing some of these settings to make Thunderbird a little more private. +
+ +We recommend changing some of these settings to make Thunderbird Desktop a little more private. These options can be found in :material-menu: → **Settings** → **Privacy & Security**. ##### Web Content - [ ] Uncheck **Remember websites and links I've visited** -- [ ] Uncheck **Accept cookies from sites** +- [ ] Uncheck **Accept cookies from sites** (1) + +
+ +1. You may need to keep this setting checked when you're logging in to some providers such as Gmail, or via an institution’s SSO. You should uncheck it once you log in successfully. ##### Telemetry @@ -61,7 +81,7 @@ 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 attack surface 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 configuration options that aims to disable as many of the web-browsing features within Thunderbird Desktop as possible in order to reduce attack surface and maintain privacy. Some of the changes are backported from the [Arkenfox project](desktop-browsers.md#arkenfox-advanced). ## Platform Specific @@ -81,6 +101,13 @@ These options can be found in :material-menu: → **Settings** → **Privacy & S
+
+

For those using macOS Sonoma

+ +Currently, GPG Suite does [not yet](https://gpgtools.com/sonoma) have a stable release for macOS Sonoma. + +
+ 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) @@ -93,7 +120,7 @@ Apple Mail has the ability to load remote content in the background or block it [: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} +[:octicons-info-16:](https://canarymail.io/help){ .card-link title="Documentation" }
Downloads @@ -122,13 +149,13 @@ Canary Mail is closed-source. We recommend it due to the few choices there are f ![FairEmail logo](assets/img/email-clients/fairemail.svg){ 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 which uses open standards (IMAP, SMTP, OpenPGP) and minimizes 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-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-heart-16:](https://email.faircode.eu/donate){ .card-link title="Contribute" }
Downloads @@ -150,9 +177,9 @@ Canary Mail is closed-source. We recommend it due to the few choices there are f [: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-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 } +[:octicons-heart-16:](https://gnome.org/donate){ .card-link title="Contribute" }
Downloads @@ -163,52 +190,19 @@ Canary Mail is closed-source. We recommend it due to the few choices there are f -### K-9 Mail (Android) - -
- -![K-9 Mail logo](assets/img/email-clients/k9mail.svg){ align=right } - -**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. - -[: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 - -- [: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

- -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). - -
- ### Kontact (KDE)
![Kontact logo](assets/img/email-clients/kontact.svg){ 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, RSS client, and an organizer. [: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-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-heart-16:](https://kde.org/community/donations){ .card-link title="Contribute" }
Downloads @@ -230,7 +224,7 @@ When replying to someone on a mailing list the "reply" option may also include t [: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-info-16:](https://mailvelope.com/faq){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/mailvelope/mailvelope){ .card-link title="Source Code" }
@@ -250,9 +244,9 @@ When replying to someone on a mailing list the "reply" option may also include t ![NeoMutt logo](assets/img/email-clients/mutt.svg){ 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 email reader 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} diff --git a/docs/email.md b/docs/email.md index c9a982cd..590e30fe 100644 --- a/docs/email.md +++ b/docs/email.md @@ -7,6 +7,10 @@ cover: email.webp global: - [randomize-element, "table tbody"] --- +Protects against the following threat(s): + +- [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } + Email is practically a necessity for using any online service, however we do not recommend it for person-to-person conversations. Rather than using email to contact other people, consider using an instant messaging medium that supports forward secrecy. [Recommended Instant Messengers](real-time-communication.md){ .md-button } @@ -55,8 +59,8 @@ OpenPGP also does not support Forward secrecy, which means if either your or the [:octicons-home-16: Homepage](https://proton.me/mail){ .md-button .md-button--primary } [:simple-torbrowser:](https://protonmailrmez3lotccipshtkleegetolb73fuirgj7r4o4vfu7ozyd.onion){ .card-link title="Onion Service" } -[:octicons-eye-16:](https://proton.me/legal/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://proton.me/support/mail){ .card-link title=Documentation} +[:octicons-eye-16:](https://proton.me/mail/privacy-policy){ .card-link title="Privacy Policy" } +[:octicons-info-16:](https://proton.me/support/mail){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/ProtonMail){ .card-link title="Source Code" }
@@ -76,7 +80,7 @@ OpenPGP also does not support Forward secrecy, which means if either your or the Free accounts have some limitations, such as not being able to search body text and not having access to [Proton Mail Bridge](https://proton.me/mail/bridge), which is required to use a [recommended desktop email client](email-clients.md) (e.g. Thunderbird). Paid accounts include features like Proton Mail Bridge, additional storage, and custom domain support. A [letter of attestation](https://proton.me/blog/security-audit-all-proton-apps) was provided for Proton Mail's apps on 9th November 2021 by [Securitum](https://research.securitum.com). -If you have the Proton Unlimited, Business, Family, or Visionary plan, you also get [SimpleLogin](email-aliasing.md#simplelogin) Premium for free. +If you have the Proton Unlimited plan or any multi-user Proton plan, you also get [SimpleLogin](email-aliasing.md#simplelogin) Premium for free. Proton Mail has internal crash reports that are **not** shared with third parties. This can be disabled in the web app: :gear: → **All Settings** → **Account** → **Security and privacy** → **Privacy and data collection**. @@ -124,7 +128,7 @@ Proton Mail doesn't offer a digital legacy feature. [:octicons-home-16: Homepage](https://mailbox.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://mailbox.org/en/data-protection-privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://kb.mailbox.org/en/private){ .card-link title=Documentation} +[:octicons-info-16:](https://kb.mailbox.org/en/private){ .card-link title="Documentation" }
Downloads @@ -192,9 +196,9 @@ These providers store your emails with zero-knowledge encryption, making them gr [:octicons-home-16: Homepage](https://tuta.com){ .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-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 } +[:octicons-heart-16:](https://tuta.com/community){ .card-link title="Contribute" }
Downloads @@ -256,9 +260,9 @@ Advanced system administrators may consider setting up their own email server. M **Mailcow** is a more advanced mail server perfect for those with a bit more Linux experience. It has everything you need in a Docker container: a mail server with DKIM support, antivirus and spam monitoring, webmail and ActiveSync with SOGo, and web-based administration with 2FA support. [:octicons-home-16: Homepage](https://mailcow.email){ .md-button .md-button--primary } -[:octicons-info-16:](https://docs.mailcow.email){ .card-link title=Documentation} +[:octicons-info-16:](https://docs.mailcow.email){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/mailcow/mailcow-dockerized){ .card-link title="Source Code" } -[:octicons-heart-16:](https://servercow.de/mailcow?lang=en#sal){ .card-link title=Contribute } +[:octicons-heart-16:](https://servercow.de/mailcow?lang=en#sal){ .card-link title="Contribute" }
@@ -269,7 +273,7 @@ Advanced system administrators may consider setting up their own email server. M **Mail-in-a-Box** is an automated setup script for deploying a mail server on Ubuntu. Its goal is to make it easier for people to set up their own mail server. [:octicons-home-16: Homepage](https://mailinabox.email){ .md-button .md-button--primary } -[:octicons-info-16:](https://mailinabox.email/guide.html){ .card-link title=Documentation} +[:octicons-info-16:](https://mailinabox.email/guide.html){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/mail-in-a-box/mailinabox){ .card-link title="Source Code" } diff --git a/docs/encryption.md b/docs/encryption.md index 8ccae76f..0da24c55 100644 --- a/docs/encryption.md +++ b/docs/encryption.md @@ -9,7 +9,7 @@ cover: encryption.webp ## Multi-platform -The options listed here are multi-platform and great for creating encrypted backups of your data. +The options listed here are available on multiple platforms and great for creating encrypted backups of your data. ### Cryptomator (Cloud) @@ -25,9 +25,9 @@ The options listed here are multi-platform and great for creating encrypted back [:octicons-home-16: Homepage](https://cryptomator.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://cryptomator.org/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://docs.cryptomator.org){ .card-link title=Documentation} +[:octicons-info-16:](https://docs.cryptomator.org){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/cryptomator){ .card-link title="Source Code" } -[:octicons-heart-16:](https://cryptomator.org/donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://cryptomator.org/donate){ .card-link title="Contribute" }
Downloads @@ -64,7 +64,7 @@ Cryptomator's documentation details its intended [security target](https://docs. [:octicons-repo-16: Repository](https://github.com/Picocrypt/Picocrypt){ .md-button .md-button--primary } [:octicons-code-16:](https://github.com/Picocrypt/Picocrypt){ .card-link title="Source Code" } -[:octicons-heart-16:](https://opencollective.com/picocrypt){ .card-link title=Contribute } +[:octicons-heart-16:](https://opencollective.com/picocrypt){ .card-link title="Contribute" }
Downloads @@ -77,6 +77,8 @@ Cryptomator's documentation details its intended [security target](https://docs. +Picocrypt has been [audited](https://github.com/Picocrypt/storage/blob/main/Picocrypt.Audit.Report.pdf) by Radically Open Security in August 2024, and [most](https://github.com/Picocrypt/Picocrypt/issues/32#issuecomment-2329722740) of the issues found in the audit were subsequently fixed. + ### VeraCrypt (Disk) Protects against the following threat(s): @@ -91,9 +93,9 @@ Cryptomator's documentation details its intended [security target](https://docs. **VeraCrypt** is a source-available freeware utility used for on-the-fly encryption. It can create a virtual encrypted disk within a file, encrypt a partition, or encrypt the entire storage device with pre-boot authentication. [:octicons-home-16: Homepage](https://veracrypt.fr){ .md-button .md-button--primary } -[:octicons-info-16:](https://veracrypt.fr/en/Documentation.html){ .card-link title=Documentation} +[:octicons-info-16:](https://veracrypt.fr/en/Documentation.html){ .card-link title="Documentation" } [:octicons-code-16:](https://veracrypt.fr/code){ .card-link title="Source Code" } -[:octicons-heart-16:](https://veracrypt.fr/en/Donation.html){ .card-link title=Contribute } +[:octicons-heart-16:](https://veracrypt.fr/en/Donation.html){ .card-link title="Contribute" }
Downloads @@ -112,13 +114,13 @@ When encrypting with VeraCrypt, you have the option to select from different [ha Truecrypt has been [audited a number of times](https://en.wikipedia.org/wiki/TrueCrypt#Security_audits), and VeraCrypt has also been [audited separately](https://en.wikipedia.org/wiki/VeraCrypt#VeraCrypt_audit). -## OS Full Disk Encryption +## Operating System Encryption Protects against the following threat(s): - [:material-target-account: Targeted Attacks](basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } -For encrypting the drive your operating system boots from, we generally recommend enabling the encryption software that comes with your operating system rather than using a third-party tool. This is because your operating system's native encryption tools often make use of OS and hardware-specific features like the [secure cryptoprocessor](https://en.wikipedia.org/wiki/Secure_cryptoprocessor) in your device to protect your computer against more advanced physical attacks. For secondary drives and external drives which you *don't* boot from, we still recommend using open-source tools like [VeraCrypt](#veracrypt-disk) over the tools below, because they offer additional flexibility and let you avoid vendor lock-in. +Built-in OS encryption solutions generally leverage hardware security features such as a [secure cryptoprocessor](basics/hardware.md#tpmsecure-cryptoprocessor). Therefore, we recommend using the built-in encryption solutions for your operating system. For cross-platform encryption, we still recommend [cross-platform tools](#multi-platform) for additional flexibility and to avoid vendor lock-in. ### BitLocker @@ -126,15 +128,15 @@ For encrypting the drive your operating system boots from, we generally recommen ![BitLocker logo](assets/img/encryption-software/bitlocker.png){ align=right } -**BitLocker** is the full volume encryption solution bundled with Microsoft Windows. The main reason we recommend it for encrypting your boot drive is because of its [use of TPM](https://learn.microsoft.com/windows/security/information-protection/tpm/how-windows-uses-the-tpm). ElcomSoft, a forensics company, has written about this feature in [Understanding BitLocker TPM Protection](https://blog.elcomsoft.com/2021/01/understanding-BitLocker-tpm-protection). +**BitLocker** is the full volume encryption solution bundled with Microsoft Windows that uses the Trusted Platform Module ([TPM](https://learn.microsoft.com/windows/security/information-protection/tpm/how-windows-uses-the-tpm)) for hardware-based security. -[:octicons-info-16:](https://learn.microsoft.com/windows/security/information-protection/BitLocker/BitLocker-overview){ .card-link title=Documentation} +[:octicons-info-16:](https://learn.microsoft.com/windows/security/information-protection/BitLocker/BitLocker-overview){ .card-link title="Documentation" }
-BitLocker is [only supported](https://support.microsoft.com/windows/turn-on-device-encryption-0c453637-bc88-5f74-5105-741561aae838) on Pro, Enterprise and Education editions of Windows. It can be enabled on Home editions provided that they meet the prerequisites. +BitLocker is [officially supported](https://support.microsoft.com/windows/turn-on-device-encryption-0c453637-bc88-5f74-5105-741561aae838) on the Pro, Enterprise, and Education editions of Windows. It can be enabled on Home editions provided that they meet the following prerequisites.
Enabling BitLocker on Windows Home @@ -184,15 +186,15 @@ Backup `BitLocker-Recovery-Key.txt` on your Desktop to a separate storage device ![FileVault logo](assets/img/encryption-software/filevault.png){ align=right } -**FileVault** is the on-the-fly volume encryption solution built into macOS. FileVault is recommended because it [leverages](https://support.apple.com/guide/security/volume-encryption-with-filevault-sec4c6dc1b6e/web) hardware security capabilities present on an Apple silicon SoC or T2 Security Chip. +**FileVault** is the on-the-fly volume encryption solution built into macOS. FileVault takes advantage of the [hardware security capabilities](os/macos-overview.md#hardware-security) present on an Apple silicon SoC or T2 Security Chip. -[:octicons-info-16:](https://support.apple.com/guide/mac-help/encrypt-mac-data-with-filevault-mh11785/mac){ .card-link title=Documentation} +[:octicons-info-16:](https://support.apple.com/guide/mac-help/encrypt-mac-data-with-filevault-mh11785/mac){ .card-link title="Documentation" }
-We recommend storing a local recovery key in a secure place as opposed to using your iCloud account for recovery. +We advise against using your iCloud account for recovery; instead, you should securely store a local recovery key on a separate storage device. ### Linux Unified Key Setup @@ -203,7 +205,7 @@ We recommend storing a local recovery key in a secure place as opposed to using **LUKS** is the default FDE method for Linux. It can be used to encrypt full volumes, partitions, or create encrypted containers. [:octicons-home-16: Homepage](https://gitlab.com/cryptsetup/cryptsetup/-/blob/main/README.md){ .md-button .md-button--primary } -[:octicons-info-16:](https://gitlab.com/cryptsetup/cryptsetup/-/wikis/home){ .card-link title=Documentation} +[:octicons-info-16:](https://gitlab.com/cryptsetup/cryptsetup/-/wikis/home){ .card-link title="Documentation" } [:octicons-code-16:](https://gitlab.com/cryptsetup/cryptsetup){ .card-link title="Source Code" }
@@ -258,9 +260,9 @@ Tools with command-line interfaces are useful for integrating [shell scripts](ht [:octicons-home-16: Homepage](https://kryptor.co.uk){ .md-button .md-button--primary } [:octicons-eye-16:](https://kryptor.co.uk/features#privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://kryptor.co.uk/tutorial){ .card-link title=Documentation} +[:octicons-info-16:](https://kryptor.co.uk/tutorial){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/samuel-lucas6/Kryptor){ .card-link title="Source Code" } -[:octicons-heart-16:](https://kryptor.co.uk/#donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://kryptor.co.uk/#donate){ .card-link title="Contribute" }
Downloads @@ -282,9 +284,9 @@ Tools with command-line interfaces are useful for integrating [shell scripts](ht **Tomb** is a command-line shell wrapper for LUKS. It supports steganography via [third-party tools](https://dyne.org/software/tomb/#advanced-usage). [:octicons-home-16: Homepage](https://dyne.org/software/tomb){ .md-button .md-button--primary } -[:octicons-info-16:](https://github.com/dyne/Tomb/wiki){ .card-link title=Documentation} +[:octicons-info-16:](https://github.com/dyne/Tomb/wiki){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/dyne/Tomb){ .card-link title="Source Code" } -[:octicons-heart-16:](https://dyne.org/donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://dyne.org/donate){ .card-link title="Contribute" }
@@ -323,7 +325,7 @@ gpg --quick-gen-key alice@example.com future-default [:octicons-home-16: Homepage](https://gnupg.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://gnupg.org/privacy-policy.html){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://gnupg.org/documentation/index.html){ .card-link title=Documentation} +[:octicons-info-16:](https://gnupg.org/documentation/index.html){ .card-link title="Documentation" } [:octicons-code-16:](https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git){ .card-link title="Source Code" }
@@ -348,9 +350,9 @@ gpg --quick-gen-key alice@example.com future-default [:octicons-home-16: Homepage](https://gpg4win.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://gpg4win.org/privacy-policy.html){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://gpg4win.org/documentation.html){ .card-link title=Documentation} +[:octicons-info-16:](https://gpg4win.org/documentation.html){ .card-link title="Documentation" } [:octicons-code-16:](https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpg4win.git;a=summary){ .card-link title="Source Code" } -[:octicons-heart-16:](https://gpg4win.org/donate.html){ .card-link title=Contribute } +[:octicons-heart-16:](https://gpg4win.org/donate.html){ .card-link title="Contribute" }
Downloads @@ -374,13 +376,13 @@ We suggest [Canary Mail](email-clients.md#canary-mail-ios) for using PGP with em ![GPG Suite logo](assets/img/encryption-software/gpgsuite.png){ align=right } -**GPG Suite** provides OpenPGP support for [Apple Mail](email-clients.md#apple-mail-macos) and macOS. +**GPG Suite** provides OpenPGP support for [Apple Mail](email-clients.md#apple-mail-macos) and other email clients on macOS. -We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com/kb/how-to/first-steps-where-do-i-start-where-do-i-begin-setup-gpgtools-create-a-new-key-your-first-encrypted-email) and [Knowledge base](https://gpgtools.tenderapp.com/kb) for support. +We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com/kb/how-to/first-steps-where-do-i-start-where-do-i-begin-setup-gpgtools-create-a-new-key-your-first-encrypted-email) and [Knowledge Base](https://gpgtools.tenderapp.com/kb) for support. [:octicons-home-16: Homepage](https://gpgtools.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://gpgtools.org/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://gpgtools.tenderapp.com/kb){ .card-link title=Documentation} +[:octicons-info-16:](https://gpgtools.tenderapp.com/kb){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/GPGTools){ .card-link title="Source Code" }
@@ -392,17 +394,19 @@ We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com +Currently, GPG Suite does [not yet](https://gpgtools.com/sequoia) have a stable release for macOS Sonoma and later. + ### OpenKeychain
![OpenKeychain logo](assets/img/encryption-software/openkeychain.svg){ align=right } -**OpenKeychain** is an Android implementation of GnuPG. It's commonly required by mail clients such as [K-9 Mail](email-clients.md#k-9-mail-android) and [FairEmail](email-clients.md#fairemail-android) and other Android apps to provide encryption support. Cure53 completed a [security audit](https://openkeychain.org/openkeychain-3-6) of OpenKeychain 3.6 in October 2015. Technical details about the audit and OpenKeychain's solutions can be found [here](https://github.com/open-keychain/open-keychain/wiki/cure53-Security-Audit-2015). +**OpenKeychain** is an implementation of GnuPG for Android. It's commonly required by mail clients such as [Thunderbird](email-clients.md#thunderbird), [FairEmail](email-clients.md#fairemail-android), and other Android apps to provide encryption support. [:octicons-home-16: Homepage](https://openkeychain.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://openkeychain.org/help/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://openkeychain.org/faq){ .card-link title=Documentation} +[:octicons-info-16:](https://openkeychain.org/faq){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/open-keychain/open-keychain){ .card-link title="Source Code" }
@@ -414,6 +418,8 @@ We recommend taking a look at their [First steps](https://gpgtools.tenderapp.com
+Cure53 completed a [security audit](https://openkeychain.org/openkeychain-3-6) of OpenKeychain 3.6 in October 2015. The published audit and OpenKeychain's solutions to the issues raised in the audit can be found [here](https://github.com/open-keychain/open-keychain/wiki/cure53-Security-Audit-2015). + ## 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. diff --git a/docs/file-sharing.md b/docs/file-sharing.md index 60b3127d..d8d123d7 100644 --- a/docs/file-sharing.md +++ b/docs/file-sharing.md @@ -12,6 +12,8 @@ Discover how to privately share your files between your devices, with your frien ## File Sharing +If you have already use [Proton Drive](cloud.md#proton-drive)[^1] or have a [Bitwarden](passwords.md#bitwarden) Premium[^2] subscription, consider using the file sharing capabilities that they each offer, both of which use end-to-end encryption. Otherwise, the standalone options listed here ensure that the files you share are not read by a remote server. + ### Send
@@ -140,7 +142,6 @@ We don't recommend using the [E2EE App](https://apps.nextcloud.com/apps/end_to_e
Downloads -- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid) - [:fontawesome-brands-windows: Windows](https://syncthing.net/downloads) - [:simple-apple: macOS](https://syncthing.net/downloads) - [:simple-linux: Linux](https://syncthing.net/downloads) @@ -150,7 +151,6 @@ We don't recommend using the [E2EE App](https://apps.nextcloud.com/apps/end_to_e
- ### 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. @@ -165,5 +165,8 @@ We don't recommend using the [E2EE App](https://apps.nextcloud.com/apps/end_to_e 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. -- Has mobile clients for iOS and Android, which at least support document previews. -- Supports photo backup from iOS and Android, and optionally supports file/folder sync on Android. +- Should have mobile clients for iOS and Android which at least support document previews. +- Should support photo backups from iOS and Android, and optionally support file/folder sync on Android. + +[^1]: Proton Drive allows you to [share files or folders](https://proton.me/support/drive-shareable-link) by generating a shareable public link or sending a unique link to a designated email address. Public links can be protected with a password, set to expire, and completely revoked, while links shared via email can have custom permissions and be similarly revoked. Per Proton Drive's [privacy policy](https://proton.me/drive/privacy-policy), file contents, file and folder names, and thumbnail previews are end-to-end encrypted. +[^2]: With a [premium](https://bitwarden.com/help/about-bitwarden-plans/#compare-personal-plans) subscription, [Bitwarden Send](https://bitwarden.com/products/send) allows you to share files and text securely with [end-to-end encryption](https://bitwarden.com/help/send-encryption). A [password](https://bitwarden.com/help/send-privacy/#send-passwords) can be required along with the Send link. Bitwarden Send also features [automatic deletion](https://bitwarden.com/help/send-lifespan). diff --git a/docs/financial-services.md b/docs/financial-services.md index 878abbc2..b0fc6e02 100644 --- a/docs/financial-services.md +++ b/docs/financial-services.md @@ -2,7 +2,11 @@ title: Financial Services icon: material/bank cover: financial-services.webp +description: These services can assist you in protecting your privacy from merchants and other trackers, which is one of the biggest challenges to privacy today. --- +Protects against the following threat(s): + +- [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } Making payments online is one of the biggest challenges to privacy. These services can assist you in protecting your privacy from merchants and other trackers, provided you have a strong understanding of how to make private payments effectively. We strongly encourage you first read our payments overview article before making any purchases: @@ -10,6 +14,10 @@ Making payments online is one of the biggest challenges to privacy. These servic ## Payment Masking Services +Protects against the following threat(s): + +- [:material-account-search: Public Exposure](basics/common-threats.md#limiting-public-information){ .pg-green } + There are a number of services which provide "virtual debit cards" which you can use with online merchants without revealing your actual banking or billing information in most cases. It's important to note that these financial services are **not** anonymous and are subject to "Know Your Customer" (KYC) laws and may require your ID or other identifying information. These services are primarily useful for protecting you from merchant data breaches, less sophisticated tracking or purchase correlation by marketing agencies, and online data theft; and **not** for making a purchase completely anonymously.
@@ -66,6 +74,10 @@ MySudo's virtual cards are currently only available via their iOS app. ## Gift Card Marketplaces +Protects against the following threat(s): + +- [:material-eye-outline: Mass Surveillance](basics/common-threats.md#mass-surveillance-programs){ .pg-blue } + These services allow you to purchase gift cards for a variety of merchants online with [cryptocurrency](cryptocurrency.md). Some of these services offer ID verification options for higher limits, but they also allow accounts with just an email address. Basic limits typically start at $5,000-10,000 a day for basic accounts, with significantly higher limits for ID verified accounts (if offered). ### Coincards @@ -84,7 +96,6 @@ These services allow you to purchase gift cards for a variety of merchants onlin
- ### 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. diff --git a/docs/frontends.md b/docs/frontends.md index bf66519f..dba9abe9 100644 --- a/docs/frontends.md +++ b/docs/frontends.md @@ -4,12 +4,15 @@ icon: material/flip-to-front description: These open-source frontends for various internet services allow you to access content without JavaScript or other annoyances. cover: frontends.webp --- +Protects against the following threat(s): -Sometimes services will try to force you to sign up for an account by blocking access to content with annoying popups. They might also break without JavaScript enabled. These frontends can allow you to get around these restrictions. +- [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } + +Sometimes services will try to force you to sign up for an account by blocking access to content with annoying popups. They might also break without JavaScript enabled. These frontends can allow you to circumvent these restrictions. If you choose to self-host these frontends, it is important that you have other people using your instance as well in order for you to blend in. You should be careful with where and how you are hosting, as other peoples' usage will be linked to your hosting. -When you are using an instance run by someone else, make sure to read the privacy policy of that specific instance. They can be modified by their owners and therefore may not reflect the default policy. Some instances have [Tor](tor.md) .onion addresses which may grant some privacy as long as your search queries don't contain PII. +When you are using an instance run by someone else, make sure to read the privacy policy of that specific instance (if available). They can be modified by their owners and therefore may not reflect the default policy. Some instances have [Tor](tor.md) .onion addresses, which may grant some privacy as long as your search queries don't contain personally identifiable information. ## Reddit @@ -19,13 +22,11 @@ When you are using an instance run by someone else, make sure to read the privac ![Redlib logo](assets/img/frontends/redlib.svg){ align=right } -**Redlib** is an open-source frontend to the [Reddit](https://reddit.com) website that is also self-hostable. - -There are a number of public instances, with some instances having [Tor](tor.md) onion services support. +**Redlib** is an open-source frontend to the [Reddit](https://reddit.com) website that is also self-hostable. You can access Redlib through a number of public instances. [:octicons-repo-16: Repository](https://github.com/redlib-org/redlib){ .md-button .md-button--primary } -[:octicons-server-16:](https://github.com/redlib-org/redlib-instances/blob/main/instances.md){ .card-link title="Public Instances"} -[:octicons-info-16:](https://github.com/redlib-org/redlib?tab=readme-ov-file#table-of-contents){ .card-link title=Documentation} +[:octicons-server-16:](https://github.com/redlib-org/redlib-instances/blob/main/instances.md){ .card-link title="Public Instances" } +[:octicons-info-16:](https://github.com/redlib-org/redlib?tab=readme-ov-file#table-of-contents){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/redlib-org/redlib){ .card-link title="Source Code" } @@ -41,6 +42,7 @@ The [Old Reddit](https://old.reddit.com) website doesn't require as much JavaScr

Tip

Redlib is useful if you want to disable JavaScript in your browser, such as [Tor Browser](tor.md#tor-browser) on the Safest security level. + ## TikTok @@ -53,11 +55,11 @@ Redlib is useful if you want to disable JavaScript in your browser, such as [Tor **ProxiTok** is an open-source frontend to the [TikTok](https://tiktok.com) website that is also self-hostable. -There are a number of public instances, with some instances having [Tor](tor.md) onion services support. +There are a number of public instances, with some that offer a [Tor](tor.md) onion service or an [I2P](alternative-networks.md#i2p-the-invisible-internet-project) eepsite. [:octicons-repo-16: Repository](https://github.com/pablouser1/ProxiTok){ .md-button .md-button--primary } -[:octicons-server-16:](https://github.com/pablouser1/ProxiTok/wiki/Public-instances){ .card-link title="Public Instances"} -[:octicons-info-16:](https://github.com/pablouser1/ProxiTok/wiki){ .card-link title=Documentation} +[:octicons-server-16:](https://github.com/pablouser1/ProxiTok/wiki/Public-instances){ .card-link title="Public Instances" } +[:octicons-info-16:](https://github.com/pablouser1/ProxiTok/wiki){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/pablouser1/ProxiTok){ .card-link title="Source Code" }
@@ -73,21 +75,85 @@ ProxiTok is useful if you want to disable JavaScript in your browser, such as [T ## YouTube +**Note:** YouTube has gradually rolled out changes to its video player and API that have thwarted some of the methods used by third-party frontends for extracting YouTube data. If you experience reliability issues with one YouTube frontend, consider trying out another that uses a different extraction method. + +### Invidious + +
+ +![Invidious logo](assets/img/frontends/invidious.svg#only-light){ align=right } +![Invidious logo](assets/img/frontends/invidious-dark.svg#only-dark){ align=right } + +**Invidious** is a free and open-source frontend for [YouTube](https://youtube.com) that is also self-hostable. + +There are a number of public instances, with some that offer a [Tor](tor.md) onion service or an [I2P](alternative-networks.md#i2p-the-invisible-internet-project) eepsite. + +[:octicons-home-16: Homepage](https://invidious.io){ .md-button .md-button--primary } +[:octicons-server-16:](https://instances.invidious.io){ .card-link title="Public Instances" } +[:octicons-info-16:](https://docs.invidious.io){ .card-link title="Documentation" } +[:octicons-code-16:](https://github.com/iv-org/invidious){ .card-link title="Source Code" } +[:octicons-heart-16:](https://invidious.io/donate){ .card-link title="Contribute" } + +
+ + + +
+

Warning

+ +Invidious does not proxy video streams by default. Videos watched through Invidious will still make direct connections to Google's servers (e.g. `googlevideo.com`); however, some instances support video proxying—simply enable *Proxy videos* within the instances' settings or add `&local=true` to the URL. + +
+ +
+

Tip

+ +Invidious is useful if you want to disable JavaScript in your browser, such as [Tor Browser](tor.md#tor-browser) on the Safest security level. It does not provide privacy by itself, and we don’t recommend logging into any accounts. + +
+ +### Piped + +
+ +![Piped logo](assets/img/frontends/piped.svg){ align=right } + +**Piped** is a free and open-source frontend for [YouTube](https://youtube.com) that is also self-hostable. + +Piped requires JavaScript in order to function and there are a number of public instances. + +[:octicons-repo-16: Repository](https://github.com/TeamPiped/Piped){ .md-button .md-button--primary } +[:octicons-server-16:](https://github.com/TeamPiped/Piped/wiki/Instances){ .card-link title="Public Instances" } +[:octicons-info-16:](https://docs.piped.video/docs){ .card-link title="Documentation" } +[:octicons-code-16:](https://github.com/TeamPiped/Piped){ .card-link title="Source Code" } +[:octicons-heart-16:](https://github.com/TeamPiped/Piped#donations){ .card-link title="Contribute" } + +
+ + + +
+

Tip

+ +Piped is useful if you want to use [SponsorBlock](https://sponsor.ajay.app) without installing an extension. It does not provide privacy by itself, and we don’t recommend logging into any accounts. + +
+ ### FreeTube
![FreeTube logo](assets/img/frontends/freetube.svg){ align=right } -**FreeTube** is a free and open-source desktop application for [YouTube](https://youtube.com). When using FreeTube, your subscription list and playlists are saved locally on your device. +**FreeTube** is a free and open-source desktop application for [YouTube](https://youtube.com). FreeTube extracts data from YouTube using its built-in API based on [YouTube.js](https://github.com/LuanRT/YouTube.js) or the [Invidious](#invidious) API. You can configure either as the default, with the other serving as a fallback. -By default, FreeTube blocks all YouTube advertisements. In addition, FreeTube optionally integrates with [SponsorBlock](https://sponsor.ajay.app) to help you skip sponsored video segments. +When using FreeTube, your subscription list and playlists are saved locally on your device. [:octicons-home-16: Homepage](https://freetubeapp.io){ .md-button .md-button--primary } [:octicons-eye-16:](https://freetubeapp.io/privacy.php){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://docs.freetubeapp.io){ .card-link title=Documentation} +[:octicons-info-16:](https://docs.freetubeapp.io){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/FreeTubeApp/FreeTube){ .card-link title="Source Code" } -[:octicons-heart-16:](https://liberapay.com/FreeTube){ .card-link title=Contribute } +[:octicons-heart-16:](https://liberapay.com/FreeTube){ .card-link title="Contribute" }
Downloads @@ -108,21 +174,23 @@ When using FreeTube, your IP address may still be known to YouTube, [Invidious](
+By default, FreeTube blocks all YouTube advertisements. In addition, FreeTube optionally integrates with [SponsorBlock](https://sponsor.ajay.app) to help you skip sponsored video segments. + ### Yattee
![Yattee logo](assets/img/frontends/yattee.svg){ align=right } -**Yattee** is a free and open-source privacy oriented video player for iOS, tvOS, and macOS for [YouTube](https://youtube.com). When using Yattee, your subscription list is saved locally on your device. +**Yattee** is a free and open-source privacy oriented video player for iOS, tvOS, and macOS for [YouTube](https://youtube.com). Due to App Store restrictions, you will need to take a few [extra steps](https://web.archive.org/web/20230330122839/https://gonzoknows.com/posts/Yattee) before you can use Yattee to watch YouTube. Yattee allows you to connect to instances of [Invidious](#invidious) or [Piped](#piped). -You will need to take a few [extra steps](https://web.archive.org/web/20230330122839/https://gonzoknows.com/posts/Yattee) before you can use Yattee to watch YouTube, due to App Store restrictions. +When using Yattee, your subscription list is saved locally on your device. [:octicons-home-16: Homepage](https://github.com/yattee/yattee){ .md-button .md-button--primary } [:octicons-eye-16:](https://r.yattee.stream/docs/privacy.html){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://github.com/yattee/yattee/wiki){ .card-link title=Documentation} +[:octicons-info-16:](https://github.com/yattee/yattee/wiki){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/yattee/yattee){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/yattee/yattee/wiki/Donations){ .card-link title=Contribute } +[:octicons-heart-16:](https://github.com/yattee/yattee/wiki/Donations){ .card-link title="Contribute" }
Downloads @@ -152,13 +220,13 @@ By default, Yattee blocks all YouTube advertisements. In addition, Yattee option **LibreTube** is a free and open-source Android application for [YouTube](https://youtube.com) which uses the [Piped](#piped) API. -LibreTube allows you to store your subscription list and playlists locally on your Android device, or to an account on your Piped instance of choice, which allows you to access them seamlessly on other devices as well. +Your subscription list and playlists are saved locally on your Android device. [:octicons-home-16: Homepage](https://libretube.dev){ .md-button .md-button--primary } [:octicons-eye-16:](https://github.com/libre-tube/LibreTube/blob/master/PRIVACY_POLICY.md){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://libretube.dev/#faq){ .card-link title=Documentation} +[:octicons-info-16:](https://libretube.dev/#faq){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/libre-tube/LibreTube){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/libre-tube/LibreTube#donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://github.com/libre-tube/LibreTube#donate){ .card-link title="Contribute" }
Downloads @@ -172,7 +240,7 @@ LibreTube allows you to store your subscription list and playlists locally on yo

Warning

-When using LibreTube, your IP address will be visible to the [Piped](https://github.com/TeamPiped/Piped/wiki/Instances) instance you choose and/or [SponsorBlock](https://sponsor.ajay.app) depending on your configuration. Consider using a [VPN](vpn.md) or [Tor](tor.md) if your [threat model](basics/threat-modeling.md) requires hiding your IP address. +When using LibreTube, your IP address will be visible to YouTube, [Piped](https://github.com/TeamPiped/Piped/wiki/Instances), or [SponsorBlock](https://sponsor.ajay.app) depending on your configuration. Consider using a [VPN](vpn.md) or [Tor](tor.md) if your [threat model](basics/threat-modeling.md) requires hiding your IP address.
@@ -190,9 +258,9 @@ Your subscription list and playlists are saved locally on your Android device. [:octicons-home-16: Homepage](https://newpipe.net){ .md-button .md-button--primary } [:octicons-eye-16:](https://newpipe.net/legal/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://newpipe.net/FAQ){ .card-link title=Documentation} +[:octicons-info-16:](https://newpipe.net/FAQ){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/TeamNewPipe/NewPipe){ .card-link title="Source Code" } -[:octicons-heart-16:](https://newpipe.net/donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://newpipe.net/donate){ .card-link title="Contribute" }
Downloads @@ -203,7 +271,7 @@ Your subscription list and playlists are saved locally on your Android device.
-1. The default instance is [FramaTube](https://framatube.org), however more can be added via **Settings** → **Content** → **PeerTube instances** +1. The default instance is [FramaTube](https://framatube.org), however more can be added via **Settings** → **Content** → **PeerTube instances**.

Warning

@@ -259,80 +327,18 @@ GrayJay contains telemetry. On each start, it will send your OS version, device -Menu : Enable Privacy mode. You can always bookmark videos you find interesting. -### Invidious - -
- -![Invidious logo](assets/img/frontends/invidious.svg#only-light){ align=right } -![Invidious logo](assets/img/frontends/invidious-dark.svg#only-dark){ align=right } - -**Invidious** is a free and open-source frontend for [YouTube](https://youtube.com) that is also self-hostable. - -There are a number of public instances, with some instances having [Tor](tor.md) onion services support. - -[:octicons-home-16: Homepage](https://invidious.io){ .md-button .md-button--primary } -[:octicons-server-16:](https://instances.invidious.io){ .card-link title="Public Instances"} -[:octicons-info-16:](https://docs.invidious.io){ .card-link title=Documentation} -[:octicons-code-16:](https://github.com/iv-org/invidious){ .card-link title="Source Code" } -[:octicons-heart-16:](https://invidious.io/donate){ .card-link title=Contribute } - -
- - - -
-

Warning

- -Invidious does not proxy video streams by default. Videos watched through Invidious will still make direct connections to Google's servers (e.g. `googlevideo.com`); however, some instances support video proxying—simply enable *Proxy videos* within the instances' settings or add `&local=true` to the URL. - -
- -
-

Tip

- -Invidious is useful if you want to disable JavaScript in your browser, such as [Tor Browser](tor.md#tor-browser) on the Safest security level. It does not provide privacy by itself, and we don’t recommend logging into any accounts. - -
- -### Piped - -
- -![Piped logo](assets/img/frontends/piped.svg){ align=right } - -**Piped** is a free and open-source frontend for [YouTube](https://youtube.com) that is also self-hostable. - -Piped requires JavaScript in order to function and there are a number of public instances. - -[:octicons-repo-16: Repository](https://github.com/TeamPiped/Piped){ .md-button .md-button--primary } -[:octicons-server-16:](https://github.com/TeamPiped/Piped/wiki/Instances){ .card-link title="Public Instances"} -[:octicons-info-16:](https://docs.piped.video/docs){ .card-link title=Documentation} -[:octicons-code-16:](https://github.com/TeamPiped/Piped){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/TeamPiped/Piped#donations){ .card-link title=Contribute } - -
- - - -
-

Tip

- -Piped is useful if you want to use [SponsorBlock](https://sponsor.ajay.app) without installing an extension or to access age-restricted content without an account. It does not provide privacy by itself, and we don’t recommend logging into any accounts. - -
- ## 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. -Recommended frontends... - -- Must be open-source software. -- Must be self-hostable. -- Must provide all basic website functionality available to anonymous users. - We only consider frontends if one of the following is true for a platform: - Normally only accessible with JavaScript enabled. - Normally only accessible with an account. - Blocks access from commercial [VPNs](vpn.md). + +Recommended frontends... + +- Must be open-source software. +- Must be self-hostable. +- Must provide all basic website functionality available to anonymous users. diff --git a/docs/index.md b/docs/index.md index d8f7b490..43d208fa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- -meta_title: "Privacy Guides: Your Independent Privacy and Security Resource" -description: "The most popular & trustworthy non-profit website to find privacy tools and learn about protecting your digital life. Ad & affiliate free, high quality reviews." +meta_title: "Privacy Guides: Independent Privacy & Security Resources" +description: "Established in 2021, Privacy Guides is the most popular & trustworthy non-profit resource to find privacy tools and learn about protecting your digital life." template: home.html social: cards_layout: home @@ -14,13 +14,12 @@ schema: "@type": Organization "@id": https://www.privacyguides.org/ name: Privacy Guides - url: https://www.privacyguides.org/en/about/ + url: https://www.privacyguides.org/ 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 - @@ -87,7 +86,7 @@ Trying to protect all your data from everyone all the time is impractical, expen
-- ![Proton Mail logo](assets/img/email/protonmail.svg){ .lg .middle .twemoji } **Proton Mail** +- ![Proton Mail logo](assets/img/email/protonmail.svg){ .lg .middle .twemoji loading=lazy } **Proton Mail** --- @@ -95,7 +94,7 @@ Trying to protect all your data from everyone all the time is impractical, expen [:octicons-arrow-right-24: Read Full Review](email.md#proton-mail) -- ![Mailbox.org logo](assets/img/email/mailboxorg.svg){ .lg .middle .twemoji } **Mailbox.org** +- ![Mailbox.org logo](assets/img/email/mailboxorg.svg){ .lg .middle .twemoji loading=lazy } **Mailbox.org** --- @@ -103,7 +102,7 @@ Trying to protect all your data from everyone all the time is impractical, expen [:octicons-arrow-right-24: Read Full Review](email.md#mailboxorg) -- ![Tuta logo](assets/img/email/tuta.svg#only-light){ .lg .middle .twemoji }![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ .lg .middle .twemoji } **Tuta** +- ![Tuta logo](assets/img/email/tuta.svg#only-light){ .lg .middle .twemoji loading=lazy }![Tuta logo](assets/img/email/tuta-dark.svg#only-dark){ .lg .middle .twemoji loading=lazy } **Tuta** --- @@ -163,7 +162,7 @@ Trying to protect all your data from everyone all the time is impractical, expen ## About Privacy Guides -![Privacy Guides logo](assets/brand/logos/png/square/pg-yellow.png){ align=right } +![Privacy Guides logo](assets/brand/logos/png/square/pg-yellow.png){ align=right loading=lazy } Established in 2021 due to the difficulty of finding unbiased reviewers in the VPN and privacy space, **Privacy Guides** is the most popular, trustworthy, non-profit website that provides information about protecting your *personal* data security and privacy. Our crowdsourced recommendations and reviews of **privacy tools** and our community dedicated to helping others set us apart from other blogs and content creators. The team behind this project has been researching privacy and security in the open-source space for over 5 years, originally with a now-defunct web resource that eventually became the *Privacy Guides* millions of readers trust. diff --git a/docs/language-tools.md b/docs/language-tools.md index 28b4e222..13450410 100644 --- a/docs/language-tools.md +++ b/docs/language-tools.md @@ -7,11 +7,9 @@ cover: language-tools.webp Protects against the following threat(s): - [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } -- [:material-eye-outline: Mass Surveillance](basics/common-threats.md#mass-surveillance-programs){ .pg-blue } - [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } -- [:material-close-outline: Censorship](basics/common-threats.md#avoiding-censorship){ .pg-blue-gray } -Text inputted to grammar, spelling, and style checkers, as well as translation services, can contain sensitive information which may be stored on their servers for an indefinite amount of time. The language tools listed on this page do not send your submitted text to a server, and can be self-hosted and used offline for maximum control of your data. +Text inputted to grammar, spelling, and style checkers, as well as translation services, can contain sensitive information which may be stored on their servers for an indefinite amount of time and sold to third parties. The language tools listed on this page do not send your submitted text to a server, and can be self-hosted and used offline for maximum control of your data. ## LanguageTool diff --git a/docs/meta/admonitions.md b/docs/meta/admonitions.md index a3039243..af1ab973 100644 --- a/docs/meta/admonitions.md +++ b/docs/meta/admonitions.md @@ -1,5 +1,6 @@ --- title: Admonitions +description: A guide for website contributors on creating admonitions. --- **Admonitions** (or "call-outs") are a choice writers can use to include side content in an article without interrupting the document flow. diff --git a/docs/meta/brand.md b/docs/meta/brand.md index 349d9a51..8e3d9954 100644 --- a/docs/meta/brand.md +++ b/docs/meta/brand.md @@ -1,5 +1,6 @@ --- title: Branding Guidelines +description: A guide for journalists and website contributors on proper branding of the Privacy Guides wordmark and logo. --- The name of the website is **Privacy Guides** and should **not** be changed to: diff --git a/docs/meta/commit-messages.md b/docs/meta/commit-messages.md index 0b2f484d..be6fd9d6 100644 --- a/docs/meta/commit-messages.md +++ b/docs/meta/commit-messages.md @@ -1,5 +1,6 @@ --- title: Commit Messages +description: A guide for website contributors on using useful Git commit messages when making website change requests. --- For our commit messages we follow the style provided by [Conventional Commits](https://conventionalcommits.org). Not all of those suggestions are appropriate for Privacy Guides, so the main ones we use are: diff --git a/docs/meta/git-recommendations.md b/docs/meta/git-recommendations.md index 110617ec..d3638781 100644 --- a/docs/meta/git-recommendations.md +++ b/docs/meta/git-recommendations.md @@ -1,5 +1,6 @@ --- title: Git Recommendations +description: A guide for website contributors on using Git effectively. --- If you make changes to this website on GitHub.com's web editor directly, you shouldn't have to worry about this. If you are developing locally and/or are a long-term website editor (who should probably be developing locally!), consider these recommendations. diff --git a/docs/meta/translations.md b/docs/meta/translations.md index 5fddd290..ff5406c7 100644 --- a/docs/meta/translations.md +++ b/docs/meta/translations.md @@ -1,5 +1,6 @@ --- title: Translations +description: A guide for website contributors on adding translations to our website. --- Crowdin has good documentation, and we suggest looking at their [Getting Started](https://support.crowdin.com/crowdin-intro) guide. Our site is largely written in [Markdown](https://en.wikipedia.org/wiki/Markdown), so it should be easy to contribute. This page contains some helpful pointers for translating some specific syntax you may encounter on our site. diff --git a/docs/meta/uploading-images.md b/docs/meta/uploading-images.md index fdd3c568..bce3dd07 100644 --- a/docs/meta/uploading-images.md +++ b/docs/meta/uploading-images.md @@ -1,5 +1,6 @@ --- title: Uploading Images +description: A guide for website contributors on uploading images in the proper format and location. --- If you make changes to this website that involve adding new images or replacing existing ones, here are a couple of general recommendations: diff --git a/docs/meta/writing-style.md b/docs/meta/writing-style.md index 64294699..5e86213a 100644 --- a/docs/meta/writing-style.md +++ b/docs/meta/writing-style.md @@ -1,5 +1,6 @@ --- title: Writing Style +description: Our official writing style handbook for website contributors. --- Privacy Guides is written in American English, and you should refer to [APA Style guidelines](https://apastyle.apa.org/style-grammar-guidelines/grammar) when in doubt. diff --git a/docs/mobile-browsers.md b/docs/mobile-browsers.md index cd6171d2..acd276d8 100644 --- a/docs/mobile-browsers.md +++ b/docs/mobile-browsers.md @@ -1,5 +1,5 @@ --- -meta_title: "Privacy Respecting Mobile Web Browsers for Android and iOS - Privacy Guides" +meta_title: "Privacy Respecting Web Browsers for Android and iOS - Privacy Guides" title: "Mobile Browsers" icon: material/cellphone-information description: These browsers are what we currently recommend for standard/non-anonymous internet browsing on your phone. @@ -20,6 +20,7 @@ schema: applicationCategory: Web Browser operatingSystem: - Android + - iOS subjectOf: "@type": WebPage url: "./" @@ -42,9 +43,7 @@ schema: These are our currently recommended **mobile web browsers** and configurations for standard/non-anonymous internet browsing. If you need to browse the internet anonymously, you should use [Tor](tor.md) instead. -## Android - -### Brave +## Brave
@@ -57,93 +56,140 @@ Brave is built upon the Chromium web browser project, so it should feel familiar [: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-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 - [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.brave.browser) +- [:simple-appstore: App Store](https://apps.apple.com/app/id1052879175) - [:simple-github: GitHub](https://github.com/brave/brave-browser/releases)
-#### Recommended Brave Configuration +### Recommended Brave Configuration Tor Browser is the only way to truly browse the internet anonymously. When you use Brave, we recommend changing the following settings to protect your privacy from certain parties, but all browsers other than the [Tor Browser](tor.md#tor-browser) will be traceable by *somebody* in some regard or another. -These options can be found in :material-menu: → **Settings** → **Brave Shields & privacy** +=== "Android" -##### Shields + These options can be found in :material-menu: → **Settings** → **Brave Shields & privacy**. + +=== "iOS" + + These options can be found in :fontawesome-solid-ellipsis: → **Settings** → **Shields & Privacy**. + +#### Brave shields global defaults 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. -##### Brave shields global defaults - Shields' options can be downgraded on a per-site basis as needed, but by default we recommend setting the following: -
+=== "Android" -- [x] Select **Aggressive** under **Block trackers & ads** +
-
-Use default filter lists + - [x] Select **Aggressive** under *Block trackers & ads* + - [x] Select **Auto-redirect AMP pages** + - [x] Select **Auto-redirect tracking URLs** + - [x] Select **Require all connections to use HTTPS (strict)** under *Upgrade connections to HTTPS* + - [x] (Optional) Select **Block Scripts** (1) + - [x] Select **Block third-party cookies** under *Block Cookies* + - [x] Select **Block Fingerprinting** + - [x] Select **Prevent fingerprinting via language settings** -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. +
+ Use default filter lists -
+ Brave allows you to select additional content filters within the **Content Filtering** menu or 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. -- [x] Select **Auto-redirect AMP pages** -- [x] Select **Auto-redirect tracking URLs** -- [x] Select **strict** under **Upgrade connections to HTTPS** -- [x] (Optional) Select **Block Scripts** (1) -- [x] Select **Block third-party cookies** under **Block Cookies** -- [x] Select **Block fingerprinting** -- [x] Select **Prevent fingerprinting via language settings** +
-
+ - [x] Select **Forget me when I close this site** -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. +
-##### Clear browsing data + 1. This option disables JavaScript, which will break a lot of sites. To unbreak them, you can set exceptions on a per-site basis by tapping on the Shield icon in the address bar and unchecking this setting under *Advanced controls*. + +=== "iOS" + +
+ + - [x] Select **Aggressive** under *Trackers & Ads Blocking* + - [x] Select **Strict** under *Upgrade Connections to HTTPS* + - [x] Select **Auto-Redirect AMP pages** + - [x] Select **Auto-Redirect Tracking URLs** + - [x] (Optional) Select **Block Scripts** (1) + - [x] Select **Block Fingerprinting** + +
+ Use default filter lists + + Brave allows you to select additional content filters within the **Content Filtering** menu. 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. + +
+ +
+ + 1. This option disables JavaScript, which will break a lot of sites. To unbreak them, you can set exceptions on a per-site basis by tapping on the Shield icon in the address bar and unchecking this setting under *Advanced controls*. + +##### Clear browsing data (Android only) - [x] Select **Clear data on exit** -##### Social Media Blocking +##### Social Media Blocking (Android only) - [ ] Uncheck all social media components -##### Other privacy settings +#### Other privacy settings + +=== "Android" + +
+ + - [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) + - [x] (Optional) Select **No protection** under *Safe Browsing* (1) + - [ ] Uncheck **Allow sites to check if you have payment methods saved** + - [x] Select **Close tabs on exit** + - [ ] Uncheck **Allow privacy-preserving product analytics (P3A)** + - [ ] Uncheck **Automatically send diagnostic reports** + - [ ] Uncheck **Automatically send daily usage ping to Brave** + +
+ + 1. Brave's [implementation of Safe Browsing](https://support.brave.com/hc/en-us/articles/15222663599629-Safe-Browsing-in-Brave) on Android **does not** proxy [Safe Browsing network requests](https://developers.google.com/safe-browsing/v4/update-api#checking-urls) like its desktop counterpart. This means that your IP address may be seen (and logged) by Google. Note that Safe Browsing is not available for Android devices without Google Play Services. + +=== "iOS" + + - [ ] Uncheck **Allow Privacy-Preserving Product Analytics (P3A)** + - [ ] Uncheck **Automatically send daily usage ping to Brave** + +### Leo + +These options can be found in :material-menu: → **Settings** → **Leo**.
-- [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) -- [x] (Optional) Select **No protection** under **Safe Browsing** (1) -- [ ] Uncheck **Allow sites to check if you have payment methods saved** -- [ ] Uncheck **IPFS Gateway** (2) -- [x] Select **Close tabs on exit** -- [ ] Uncheck **Allow privacy-preserving product analytics (P3A)** -- [ ] Uncheck **Automatically send diagnostic reports** -- [ ] Uncheck **Automatically send daily usage ping to Brave** +- [ ] Uncheck **Show autocomplete suggestions in address bar** (1)
-1. Brave's [implementation of Safe Browsing](https://support.brave.com/hc/en-us/articles/15222663599629-Safe-Browsing-in-Brave) on Android **does not** proxy [Safe Browsing network requests](https://developers.google.com/safe-browsing/v4/update-api#checking-urls) like its desktop counterpart. This means that your IP address may be seen (and logged) by Google. Note that Safe Browsing is not available for Android devices without Google Play Services. -2. InterPlanetary File System (IPFS) is a decentralized, peer-to-peer network for storing and sharing data in a distributed filesystem. Unless you use the feature, disable it. +1. This option is not present in Brave's iOS app. -#### Leo +### Search engines -These options can be found in :material-menu: → **Settings** → **Leo** +These options can be found in :material-menu:/:fontawesome-solid-ellipsis: → **Settings** → **Search engines**. -- [ ] Uncheck **Show autocomplete suggestions in address bar** +- [ ] Uncheck **Show search suggestions** -#### Brave Sync +### Brave Sync [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. -### Mull +## Mull (Android)
@@ -153,7 +199,7 @@ These options can be found in :material-menu: → **Settings** → **Leo** [:octicons-home-16: Homepage](https://divestos.org/pages/our_apps#mull){ .md-button .md-button--primary } [:octicons-eye-16:](https://divestos.org/pages/privacy_policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://divestos.org/pages/browsers#tuningFenix){ .card-link title=Documentation } +[:octicons-info-16:](https://divestos.org/pages/browsers#tuningFenix){ .card-link title="Documentation" } [:octicons-code-16:](https://codeberg.org/divested-mobile/mull-fenix){ .card-link title="Source Code" }
@@ -179,7 +225,7 @@ Enable DivestOS's [F-Droid repository](https://divestos.org/fdroid/official) to Mull enables many features upstreamed by the [Tor uplift project](https://wiki.mozilla.org/Security/Tor_Uplift) using preferences from [Arkenfox](desktop-browsers.md#arkenfox-advanced). Proprietary blobs are removed from Mozilla's code using the scripts developed for Fennec F-Droid. -#### Recommended Mull Configuration +### Recommended Mull Configuration We would suggest installing [uBlock Origin](browser-extensions.md#ublock-origin) as a content blocker if you want to block trackers within Mull. @@ -187,58 +233,97 @@ Mull comes with privacy protecting settings configured by default. You might con Because Mull has more advanced and strict privacy protections enabled by default compared to most browsers, some websites may not load or work properly unless you adjust those settings. You can consult this [list of known issues and workarounds](https://divestos.org/pages/broken#mull) for advice on a potential fix if you do encounter a broken site. Adjusting a setting in order to fix a website could impact your privacy/security, so make sure you fully understand any instructions you follow. -## iOS +## Safari (iOS) -On iOS, any app that can browse the web is [restricted](https://developer.apple.com/app-store/review/guidelines) to using an Apple-provided [WebKit framework](https://developer.apple.com/documentation/webkit), so there is little reason to use a third-party web browser. - -### Safari +On iOS, any app that can browse the web is [restricted](https://developer.apple.com/app-store/review/guidelines) to using an Apple-provided [WebKit framework](https://developer.apple.com/documentation/webkit), so a browser like [Brave](#brave) does not use the Chromium engine like its counterparts on other operating systems.
![Safari logo](assets/img/browsers/safari.svg){ align=right } -**Safari** is the default browser in iOS. It includes [privacy features](https://support.apple.com/guide/iphone/browse-the-web-privately-iphb01fc3c85/ios) such as [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention), Privacy Report, isolated and ephemeral Private Browsing tabs, fingerprinting protection (by presenting a simplified version of the system configuration to websites so more devices look identical), and Private Relay for those with a paid iCloud+ subscription. It also allows you to separate your browsing with different profiles and lock private tabs with your biometrics/PIN. +**Safari** is the default browser in iOS. It includes [privacy features](https://support.apple.com/guide/iphone/browse-the-web-privately-iphb01fc3c85/ios) such as [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention), isolated and ephemeral Private Browsing tabs, fingerprinting protection (by presenting a simplified version of the system configuration to websites so more devices look identical), and fingerprint randomization, as well as Private Relay for those with a paid iCloud+ subscription. [:octicons-home-16: Homepage](https://apple.com/safari){ .md-button .md-button--primary } [:octicons-eye-16:](https://apple.com/legal/privacy/data/en/safari){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://support.apple.com/guide/iphone/browse-the-web-iph1fbef4daa/ios){ .card-link title=Documentation} +[:octicons-info-16:](https://support.apple.com/guide/iphone/browse-the-web-iph1fbef4daa/ios){ .card-link title="Documentation" }
-#### Recommended Safari Configuration +### Recommended Safari Configuration -We would suggest installing [AdGuard](browser-extensions.md#adguard) as a content blocker if you want to block trackers within Safari. +We would suggest installing [AdGuard](browser-extensions.md#adguard) if you want a content blocker in Safari. -The following privacy/security-related options can be found in the :gear: **Settings** app → **Safari** +The following privacy/security-related options can be found in :gear: **Settings** → **Apps** → **Safari**. -##### Profiles +#### Allow Safari to Access -All of your cookies, history, and website data will be separate for each profile. You should use different profiles for different purposes e.g. Shopping, Work, or School. +Under **Siri**: -##### Privacy & Security +- [ ] Disable **Learn from this App** +- [ ] Disable **Show in App** +- [ ] Disable **Show on Home Screen** +- [ ] Disable **Suggest App** + +This prevents Siri from using content from Safari for Siri suggestions. + +#### Search + +- [ ] Disable **Search Engine Suggestions** + +This setting sends whatever you type in the address bar to the search engine set in Safari. Disabling search suggestions allows you to more precisely control what data you send to your search engine provider. + +#### Profiles + +Safari allows you to separate your browsing with different profiles. All of your cookies, history, and website data are separate for each profile. You should use different profiles for different purposes e.g. Shopping, Work, or School. + +#### Privacy & Security - [x] Enable **Prevent Cross-Site Tracking** - This enables WebKit's [Intelligent Tracking Protection](https://webkit.org/tracking-prevention/#intelligent-tracking-prevention-itp). The feature helps protect against unwanted tracking by using on-device machine learning to stop trackers. ITP protects against many common threats, but it does not block all tracking avenues because it is designed to not interfere with website usability. +This enables WebKit's [Intelligent Tracking Protection](https://webkit.org/tracking-prevention/#intelligent-tracking-prevention-itp). The feature helps protect against unwanted tracking by using on-device machine learning to stop trackers. ITP protects against many common threats, but does not block all tracking avenues because it is designed to not interfere with website usability. -- [x] Enable **Require Face ID to Unlock Private Browsing** +- [x] Enable **Require Face ID/Touch ID to Unlock Private Browsing** - This setting allows you to lock your private tabs behind biometrics/PIN when not in use. +This setting allows you to lock your private tabs behind biometrics/PIN when not in use. -##### Advanced → Privacy +- [ ] Disable **Fraudulent Website Warning** + +This setting uses Google Safe Browsing (or Tencent Safe Browsing for users in mainland China or Hong Kong) to protect you while you browse. As such, your IP address may be logged by your Safe Browsing provider. Disabling this setting will disable this logging, but you might be more vulnerable to known phishing sites. + +- [ ] Disable **Highlights** + +Apple's privacy policy for Safari states: + +> When visiting a webpage, Safari may send information calculated from the webpage address to Apple over OHTTP to determine if relevant highlights are available. + +#### Settings for Websites + +Under **Camera** + +- [x] Select **Ask** + +Under **Microphone** + +- [x] Select **Ask** + +Under **Location** + +- [x] Select **Ask** + +These settings ensure that websites can only access your camera, microphone, or location after you explicitly grant them access. + +#### Other Privacy Settings + +These options can be found in :gear: **Settings** → **Apps** → **Safari** → **Advanced**. + +##### Fingerprinting Mitigations The **Advanced Tracking and Fingerprinting Protection** setting will randomize certain values so that it's more difficult to fingerprint you: - [x] Select **All Browsing** or **Private Browsing** -##### Privacy Report - -Privacy Report provides a snapshot of cross-site trackers currently prevented from profiling you on the website you're visiting. It can also display a weekly report to show which trackers have been blocked over time. - -Privacy Report is accessible via the Page Settings menu. - ##### Privacy Preserving Ad Measurement - [ ] Disable **Privacy Preserving Ad Measurement** @@ -247,25 +332,25 @@ Ad click measurement has traditionally used tracking technology that infringes o The feature has little privacy concerns on its own, so while you can choose to leave it on, we consider the fact that it's automatically disabled in Private Browsing to be an indicator for disabling the feature. -##### Always-on Private Browsing +#### Always-on Private Browsing -Open Safari and tap the Tabs button, located in the bottom right. Then, expand the Tab Groups list. +Open Safari and tap the Tabs button, located in the bottom right. Then, expand the :material-format-list-bulleted: Tab Groups list. - [x] Select **Private** Safari's Private Browsing mode offers additional privacy protections. Private Browsing uses a new [ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) session for each tab, meaning tabs are isolated from one another. There are also other smaller privacy benefits with Private Browsing, such as not sending a webpage’s address to Apple when using Safari's translation feature. -Do note that Private Browsing does not save cookies and website data, so it won't be possible to remain signed into sites. This may be an inconvenience. +Do note that Private Browsing does not save cookies and website data, so it won't be possible to remain signed in to sites. This may be an inconvenience. -##### iCloud Sync +#### iCloud Sync Synchronization of Safari History, Tab Groups, iCloud Tabs and saved passwords are E2EE. However, by default, bookmarks are [not](https://support.apple.com/HT202303). Apple can decrypt and access them in accordance with their [privacy policy](https://apple.com/legal/privacy/en-ww). -You can enable E2EE for your Safari bookmarks and downloads by enabling [Advanced Data Protection](https://support.apple.com/HT212520). Go to your **Apple ID name → iCloud → Advanced Data Protection**. +You can enable E2EE for your Safari bookmarks and downloads by enabling [Advanced Data Protection](https://support.apple.com/HT212520). Go to :gear: **Settings** → **iCloud** → **Advanced Data Protection**. -- [x] Turn On **Advanced Data Protection** +- [x] Turn on **Advanced Data Protection** -If you use iCloud with Advanced Data Protection disabled, we also recommend checking to ensure Safari's default download location is set to locally on your device. This option can be found in :gear: **Settings** → **Safari** → **General** → **Downloads**. +If you use iCloud with Advanced Data Protection disabled, we also recommend setting Safari's default download location to a local folder on your device. This option can be found in :gear: **Settings** → **Apps** → **Safari** → **General** → **Downloads**. ## Criteria diff --git a/docs/mobile-phones.md b/docs/mobile-phones.md index b0e9e251..3052cbbb 100644 --- a/docs/mobile-phones.md +++ b/docs/mobile-phones.md @@ -1,7 +1,7 @@ --- title: "Mobile Phones" icon: material/cellphone-check -description: These mobile devices have proper Android Verified Boot support for custom operating systems. +description: These mobile devices provide the best hardware security support for custom Android operating systems. cover: android.webp schema: - diff --git a/docs/news-aggregators.md b/docs/news-aggregators.md index 1da82042..280b282e 100644 --- a/docs/news-aggregators.md +++ b/docs/news-aggregators.md @@ -4,6 +4,9 @@ icon: material/rss description: These news aggregator clients let you keep up with your favorite blogs and news sites using internet standards like RSS. cover: news-aggregators.webp --- +Protects against the following threat(s): + +- [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } A **news aggregator** is software which aggregates digital content from online newspapers, blogs, podcasts, and other resources to one location for easy viewing. Using one can be a great way to keep up with your favorite content. @@ -15,13 +18,13 @@ A **news aggregator** is software which aggregates digital content from online n ![Akregator logo](assets/img/news-aggregators/akregator.svg){ align=right } -**Akregator** is a news feed reader that is a part of the [KDE](https://kde.org) project. It comes with a fast search, advanced archiving functionality and an internal browser for easy news reading. +**Akregator** is a news feed reader that is a part of the [KDE](https://kde.org) project. It comes with a fast search, advanced archiving functionality, and an internal browser for easy news reading. [:octicons-home-16: Homepage](https://apps.kde.org/akregator){ .md-button .md-button--primary } [:octicons-eye-16:](https://kde.org/privacypolicy-apps){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://docs.kde.org/?application=akregator){ .card-link title=Documentation} +[:octicons-info-16:](https://docs.kde.org/?application=akregator){ .card-link title="Documentation" } [:octicons-code-16:](https://invent.kde.org/pim/akregator){ .card-link title="Source Code" } -[:octicons-heart-16:](https://kde.org/community/donations){ .card-link title=Contribute } +[:octicons-heart-16:](https://kde.org/community/donations){ .card-link title="Contribute" }
Downloads @@ -38,7 +41,7 @@ A **news aggregator** is software which aggregates digital content from online n ![NewsFlash logo](assets/img/news-aggregators/newsflash.png){ align=right } -**NewsFlash** is an open-source, modern, simple and easy to use GTK4 news feed reader for Linux. It can be used offline or used with services like [NextCloud News](https://apps.nextcloud.com/apps/news) or [Inoreader](https://inoreader.com). It has a search feature and even a pre-defined list of sources like [TechCrunch](https://techcrunch.com) that you can add directly. It is only available as a Flatpak (on the Flathub repository). +**NewsFlash** is an open-source, modern, and easy-to-use news feed reader for Linux. It can be used offline or used with services like [Nextcloud News](https://apps.nextcloud.com/apps/news) or [Inoreader](https://inoreader.com). It has a search feature and a pre-defined list of sources that you can add directly. [:octicons-repo-16: Repository](https://gitlab.com/news-flash/news_flash_gtk){ .md-button .md-button--primary } [:octicons-code-16:](https://gitlab.com/news-flash/news_flash_gtk){ .card-link title="Source Code" } @@ -58,11 +61,11 @@ A **news aggregator** is software which aggregates digital content from online n ![Feeder logo](assets/img/news-aggregators/feeder.png){ align=right } -**Feeder** is a modern RSS client for Android that has many [features](https://github.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed). +**Feeder** is a modern RSS client for Android that has many [features](https://github.com/spacecowboy/Feeder#features) and works well with folders of RSS feeds. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML), and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed). [:octicons-repo-16: Repository](https://github.com/spacecowboy/Feeder){ .md-button .md-button--primary } [:octicons-code-16:](https://github.com/spacecowboy/Feeder){ .card-link title="Source Code" } -[:octicons-heart-16:](https://ko-fi.com/spacecowboy){ .card-link title=Contribute } +[:octicons-heart-16:](https://ko-fi.com/spacecowboy){ .card-link title="Contribute" }
Downloads @@ -74,30 +77,6 @@ A **news aggregator** is software which aggregates digital content from online n
-### Fluent Reader - -
- -![Fluent Reader logo](assets/img/news-aggregators/fluent-reader.svg){ align=right } - -**Fluent Reader** is a secure cross-platform news aggregator that has useful privacy features such as deletion of cookies on exit, strict [content security policies (CSP)](https://en.wikipedia.org/wiki/Content_Security_Policy) and proxy support, meaning you can use it over [Tor](tor.md). - -[:octicons-home-16: Homepage](https://hyliu.me/fluent-reader){ .md-button .md-button--primary } -[:octicons-eye-16:](https://github.com/yang991178/fluent-reader/wiki/Privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://github.com/yang991178/fluent-reader/wiki){ .card-link title=Documentation} -[:octicons-code-16:](https://github.com/yang991178/fluent-reader){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/sponsors/yang991178){ .card-link title=Contribute } - -
-Downloads - -- [:fontawesome-brands-windows: Windows](https://hyliu.me/fluent-reader) -- [:simple-appstore: App Store](https://apps.apple.com/app/id1520907427) - -
- -
- ### Miniflux
@@ -105,12 +84,12 @@ A **news aggregator** is software which aggregates digital content from online n ![Miniflux logo](assets/img/news-aggregators/miniflux.svg#only-light){ align=right } ![Miniflux logo](assets/img/news-aggregators/miniflux-dark.svg#only-dark){ align=right } -**Miniflux** is a web-based news aggregator that you can self-host. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML) and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed). +**Miniflux** is a web-based news aggregator that you can self-host. It supports [RSS](https://en.wikipedia.org/wiki/RSS), [Atom](https://en.wikipedia.org/wiki/Atom_(Web_standard)), [RDF](https://en.wikipedia.org/wiki/RDF%2FXML), and [JSON Feed](https://en.wikipedia.org/wiki/JSON_Feed). [:octicons-home-16: Homepage](https://miniflux.app){ .md-button .md-button--primary } -[:octicons-info-16:](https://miniflux.app/docs/index.html){ .card-link title=Documentation} +[:octicons-info-16:](https://miniflux.app/docs/index){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/miniflux/v2){ .card-link title="Source Code" } -[:octicons-heart-16:](https://miniflux.app/#donations){ .card-link title=Contribute } +[:octicons-heart-16:](https://miniflux.app/#donations){ .card-link title="Contribute" }
@@ -123,8 +102,8 @@ A **news aggregator** is software which aggregates digital content from online n **NetNewsWire** is a free and open-source feed reader for macOS and iOS with a focus on a native design and feature set. It supports the typical feed formats alongside built-in support for Reddit feeds. [:octicons-home-16: Homepage](https://netnewswire.com){ .md-button .md-button--primary } -[:octicons-eye-16:](https://netnewswire.com/privacypolicy.html){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://netnewswire.com/help){ .card-link title=Documentation} +[:octicons-eye-16:](https://netnewswire.com/privacypolicy){ .card-link title="Privacy Policy" } +[:octicons-info-16:](https://netnewswire.com/help){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/Ranchero-Software/NetNewsWire){ .card-link title="Source Code" }
@@ -143,10 +122,10 @@ A **news aggregator** is software which aggregates digital content from online n ![Newsboat logo](assets/img/news-aggregators/newsboat.svg){ align=right } -**Newsboat** is an RSS/Atom feed reader for the text console. It's an actively maintained fork of [Newsbeuter](https://en.wikipedia.org/wiki/Newsbeuter). It is very lightweight, and ideal for use over [Secure Shell](https://en.wikipedia.org/wiki/Secure_Shell). +**Newsboat** is an RSS/Atom feed reader for the text console. It's an actively maintained fork of [Newsbeuter](https://en.wikipedia.org/wiki/Newsbeuter). It is very lightweight and ideal for use over [Secure Shell](https://en.wikipedia.org/wiki/Secure_Shell). [:octicons-home-16: Homepage](https://newsboat.org){ .md-button .md-button--primary } -[:octicons-info-16:](https://newsboat.org/releases/2.27/docs/newsboat.html){ .card-link title=Documentation} +[:octicons-info-16:](https://newsboat.org/releases/2.37/docs/newsboat.html){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/newsboat/newsboat){ .card-link title="Source Code" } @@ -179,12 +158,12 @@ https://reddit.com/r/[SUBREDDIT]/new/.rss ### YouTube -You can subscribe YouTube channels without logging in and associating usage information with your Google account. +You can subscribe to YouTube channels without logging in and associating usage information with your Google account.

Example

-To subscribe to a YouTube channel with an RSS client, first look for its [channel code](https://support.google.com/youtube/answer/6180214). The channel code can be found on the about page of the YouTube channel you wish to subscribe to, under: **About** > **Share** > **Copy channel ID**. Replace `[CHANNEL ID]` below: +To subscribe to a YouTube channel with an RSS client, first look for its [channel code](https://support.google.com/youtube/answer/6180214). The channel code can be found on the about page of the YouTube channel you wish to subscribe to, under: **About** → **Share** → **Copy channel ID**. Replace `[CHANNEL ID]` below: ```text https://youtube.com/feeds/videos.xml?channel_id=[CHANNEL ID] diff --git a/docs/office-suites.md b/docs/office-suites.md index f4198721..4d769922 100644 --- a/docs/office-suites.md +++ b/docs/office-suites.md @@ -4,6 +4,10 @@ icon: material/file-edit-outline description: These office suites offer their full functionality without an account and can be used offline. cover: office-suites.webp --- +Protects against the following threat(s): + +- [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } + Choose an **office suite** that does not require logging in to an account to access its full functionality. The tools listed here can be used offline and could reasonably act as a replacement for Microsoft Office for most needs. ## LibreOffice diff --git a/docs/os/android-overview.md b/docs/os/android-overview.md index d815418f..199775e0 100644 --- a/docs/os/android-overview.md +++ b/docs/os/android-overview.md @@ -8,39 +8,11 @@ robots: nofollow, max-snippet:-1, max-image-preview:large The **Android Open Source Project** is a secure mobile operating system featuring strong [app sandboxing](https://source.android.com/security/app-sandbox), [Verified Boot](https://source.android.com/security/verifiedboot) (AVB), and a robust [permission](https://developer.android.com/guide/topics/permissions/overview) control system. -## Our Advice +[: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" } -### Choosing an Android Distribution - -When you buy an Android phone, the default operating system comes bundled with apps and functionality that are not part of the Android Open Source Project. Many of these apps—even apps like the dialer which provide basic system functionality—require invasive integrations with Google Play Services, which in turn asks for privileges to access your files, contacts storage, call logs, SMS messages, location, camera, microphone, and numerous other things on your device in order for those basic system apps and many other apps to function in the first place. Frameworks like Google Play Services increase the attack surface of your device and are the source of various privacy concerns with Android. - -This problem could be solved by using a custom Android distribution that does not come with such invasive integration. Unfortunately, many custom Android distributions often violate the Android security model by not supporting critical security features such as AVB, rollback protection, firmware updates, and so on. Some distributions also ship [`userdebug`](https://source.android.com/setup/build/building#choose-a-target) builds which expose root via [ADB](https://developer.android.com/studio/command-line/adb) and require [more permissive](https://github.com/LineageOS/android_system_sepolicy/search?q=userdebug&type=code) SELinux policies to accommodate debugging features, resulting in a further increased attack surface and weakened security model. - -Ideally, when choosing a custom Android distribution, you should make sure that it upholds the Android security model. At the very least, the distribution should have production builds, support for AVB, rollback protection, timely firmware and operating system updates, and SELinux in [enforcing mode](https://source.android.com/security/selinux/concepts#enforcement_levels). All of our recommended Android distributions satisfy these criteria. - -[Our Android System Recommendations :material-arrow-right-drop-circle:](../android/distributions.md){ .md-button } - -### Avoid Rooting - -[Rooting](https://en.wikipedia.org/wiki/Rooting_(Android)) Android phones can decrease security significantly as it weakens the complete [Android security model](https://en.wikipedia.org/wiki/Android_(operating_system)#Security_and_privacy). This can decrease privacy should there be an exploit that is assisted by the decreased security. Common rooting methods involve directly tampering with the boot partition, making it impossible to perform successful Verified Boot. Apps that require root will also modify the system partition, meaning that Verified Boot would have to remain disabled. Having root exposed directly in the user interface also increases the [attack surface](https://en.wikipedia.org/wiki/Attack_surface) of your device and may assist in [privilege escalation](https://en.wikipedia.org/wiki/Privilege_escalation) vulnerabilities and SELinux policy bypasses. - -Content blockers which modify the [hosts file](https://en.wikipedia.org/wiki/Hosts_(file)) (AdAway) and firewalls (AFWall+) which require root access persistently are dangerous and should not be used. They are also not the correct way to solve their intended purposes. For content blocking, we suggest encrypted [DNS](../dns.md) or content blocking functionality provided by a VPN instead. TrackerControl and AdAway in non-root mode will take up the VPN slot (by using a local loopback VPN), preventing you from using privacy enhancing services such as [Orbot](../tor.md#orbot) or a [real VPN provider](../vpn.md). - -AFWall+ works based on the [packet filtering](https://en.wikipedia.org/wiki/Firewall_(computing)#Packet_filter) approach and may be bypassable in some situations. - -We do not believe that the security sacrifices made by rooting a phone are worth the questionable privacy benefits of those apps. - -### Install Updates - -It's important to not use an [end-of-life](https://endoflife.date/android) version of Android. Newer versions of Android receive not only security updates for the operating system but also important privacy enhancing updates too. - -For example, [prior to Android 10](https://developer.android.com/about/versions/10/privacy/changes) any apps with the [`READ_PHONE_STATE`](https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE) permission could access sensitive and unique serial numbers of your phone such as [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity), [MEID](https://en.wikipedia.org/wiki/Mobile_equipment_identifier), or your SIM card's [IMSI](https://en.wikipedia.org/wiki/International_mobile_subscriber_identity); whereas now they must be system apps to do so. System apps are only provided by the OEM or Android distribution. - -### Sharing Media - -You can avoid giving many apps permission to access your media with Android's built-in sharing features. Many applications allow you to "share" a file with them for media upload. - -For example, if you want to post a picture to Discord you can open your file manager or gallery and share that picture with the Discord app, instead of granting Discord full access to your media and photos. +[Our Android Advice :material-arrow-right-drop-circle:](../android/index.md){ .md-button .md-button--primary } ## Security Protections @@ -62,7 +34,7 @@ Many OEMs also have broken implementation of Verified Boot that you have to be a **Firmware updates** are critical for maintaining security and without them your device cannot be secure. OEMs have support agreements with their partners to provide the closed-source components for a limited support period. These are detailed in the monthly [Android Security Bulletins](https://source.android.com/security/bulletin). -As the components of the phone, such as the processor and radio technologies rely on closed-source components, the updates must be provided by the respective manufacturers. Therefore, it is important that you purchase a device within an active support cycle. [Qualcomm](https://www.qualcomm.com/news/releases/2020/12/qualcomm-and-google-announce-collaboration-extend-android-os-support-and) and [Samsung](https://news.samsung.com/us/samsung-galaxy-security-extending-updates-knox) support their devices for 4 years, while cheaper products often have shorter support cycles. With the introduction of the [Pixel 6](https://support.google.com/pixelphone/answer/4457705), Google now makes their own SoC, and they will provide a minimum of 5 years of support. With the introduction of the Pixel 8 series, Google increased that support window to 7 years. +As the components of the phone, such as the processor and radio technologies rely on closed-source components, the updates must be provided by the respective manufacturers. Therefore, it is important that you purchase a device within an active support cycle. [Qualcomm](https://qualcomm.com/news/releases/2020/12/qualcomm-and-google-announce-collaboration-extend-android-os-support-and) and [Samsung](https://news.samsung.com/us/samsung-galaxy-security-extending-updates-knox) support their devices for 4 years, while cheaper products often have shorter support cycles. With the introduction of the [Pixel 6](https://support.google.com/pixelphone/answer/4457705), Google now makes their own SoC, and they will provide a minimum of 5 years of support. With the introduction of the Pixel 8 series, Google increased that support window to 7 years. EOL devices which are no longer supported by the SoC manufacturer cannot receive firmware updates from OEM vendors or after market Android distributors. This means that security issues with those devices will remain unfixed. @@ -119,19 +91,27 @@ Privacy-friendly apps such as [Bitwarden](https://reports.exodus-privacy.eu.org/ ### User Profiles -Multiple user profiles can be found in **Settings** → **System** → **Multiple users** and are the simplest way to isolate in Android. +Multiple **user profiles** can be found in :gear: **Settings** → **System** → **Users** and are the simplest way to isolate in Android. -With user profiles, you can impose restrictions on a specific profile, such as: making calls, using SMS, or installing apps on the device. Each profile is encrypted using its own encryption key and cannot access the data of any other profiles. Even the device owner cannot view the data of other profiles without knowing their password. Multiple user profiles are a more secure method of isolation. +With user profiles, you can impose restrictions on a specific profile, such as: making calls, using SMS, or installing apps. Each profile is encrypted using its own encryption key and cannot access the data of any other profiles. Even the device owner cannot view the data of other profiles without knowing their password. Multiple user profiles are a more secure method of isolation. ### Work Profile -[Work Profiles](https://support.google.com/work/android/answer/6191949) are another way to isolate individual apps and may be more convenient than separate user profiles. +[**Work Profiles**](https://support.google.com/work/android/answer/6191949) are another way to isolate individual apps and may be more convenient than separate user profiles. A **device controller** app such as [Shelter](../android/general-apps.md#shelter) is required to create a Work Profile without an enterprise MDM, unless you're using a custom Android OS which includes one. The work profile is dependent on a device controller to function. Features such as *File Shuttle* and *contact search blocking* or any kind of isolation features must be implemented by the controller. You must also fully trust the device controller app, as it has full access to your data inside the work profile. -This method is generally less secure than a secondary user profile; however, it does allow you the convenience of running apps in both the work and personal profiles simultaneously. +This method is generally less secure than a secondary user profile; however, it does allow you the convenience of running apps in both the owner profile and work profile simultaneously. + +### Private Space + +**Private Space** is a feature introduced in Android 15 that adds another way of isolating individual apps. You can set up a private space in the owner profile by navigating to :gear: **Settings** → **Security & privacy** → **Private space**. Once set up, your private space resides at the bottom of the app drawer. + +Like user profiles, a private space is encrypted using its own encryption key, and you have the option to set up a different unlock method. Like work profiles, you can use apps from both the owner profile and private space simultaneously. Apps launched from a private space are distinguished by an icon depicting a key within a shield. + +Unlike work profiles, Private Space is a feature native to Android that does not require a third-party app to manage it. For this reason, we generally recommend using a private space over a work profile, though you can use a work profile alongside a private space. ### VPN Killswitch diff --git a/docs/os/index.md b/docs/os/index.md index fdcdea6c..9bf23b11 100644 --- a/docs/os/index.md +++ b/docs/os/index.md @@ -1,5 +1,6 @@ --- title: Operating Systems +description: An overview of our operating system-related recommendations for all major computing hardware. --- We publish configuration guides for the major operating systems, because you can generally improve the amount of data that is collected about you on any option, especially if you use privacy tools like our [recommended web browsers](../desktop-browsers.md) in place of native tools where appropriate. However, some operating systems will be more privacy-respecting inherently, and it will be much harder to achieve an equivalent level of privacy on other choices. diff --git a/docs/os/ios-overview.md b/docs/os/ios-overview.md index 14fe987a..00a88128 100644 --- a/docs/os/ios-overview.md +++ b/docs/os/ios-overview.md @@ -9,7 +9,7 @@ description: iOS is a mobile operating system developed by Apple for the iPhone. iOS devices are frequently praised by security experts for their robust data protection and adherence to modern best practices. However, the restrictiveness of Apple's ecosystem—particularly with their mobile devices—does still hamper privacy in a number of ways. -We generally consider iOS to provide better than average privacy and security protections for most people, compared to stock Android devices from any manufacturer. However, you can achieve even higher standards of privacy with a [custom Android operating system](../android/distributions.md#aosp-derivatives) like GrapheneOS, if you want or need to be completely independent of Apple or Google's cloud services. +We generally consider iOS to provide better than average privacy and security protections for most people, compared to stock Android devices from any manufacturer. However, you can achieve even higher standards of privacy with a [custom Android operating system](../android/distributions.md) like GrapheneOS, if you want or need to be completely independent of Apple or Google's cloud services. ### Activation Lock @@ -17,7 +17,7 @@ All iOS devices must be checked against Apple's Activation Lock servers when the ### Mandatory App Store -The only source for apps on iOS is Apple's App Store, which requires an Apple ID to access. This means that Apple has a record of every app you install on your device, and can likely tie that information to your actual identity if you provide the App Store with a payment method. +The only source for apps on iOS is Apple's App Store, which requires an Apple Account to access. This means that Apple has a record of every app you install on your device, and can likely tie that information to your actual identity if you provide the App Store with a payment method. ### Invasive Telemetry @@ -27,6 +27,8 @@ More recently, Apple has been found to [transmit analytics even when analytics s ## Recommended Configuration +**Note:** This guide assumes that you're running the latest version of iOS. + ### iCloud The majority of privacy and security concerns with Apple products are related to their cloud services, not their hardware or software. When you use Apple services like iCloud, most of your information is stored on their servers and secured with keys which Apple has access to by default. You can check [Apple's documentation](https://support.apple.com/HT202303) for information on which services are end-to-end encrypted. Anything listed as "in transit" or "on server" means it's possible for Apple to access that data without your permission. This level of access has occasionally been abused by law enforcement to get around the fact that your data is otherwise securely encrypted on your device, and of course Apple is vulnerable to data breaches like any other company. @@ -47,7 +49,7 @@ A paid **iCloud+** subscription (with any iCloud storage plan) comes with some p #### Media & Purchases -At the top of the **Settings** app, you'll see your name and profile picture if you are signed in to an Apple ID. Select that, then select **Media & Purchases** > **View Account**. +At the top of the **Settings** app, you'll see your name and profile picture if you are signed in to an Apple Account. Select that, then select **Media & Purchases** → **View Account**. - [ ] Turn off **Personalized Recommendations** @@ -60,7 +62,7 @@ At the top of the **Settings** app, you'll see your name and profile picture if Your location data is not E2EE when your device is online and you use Find My iPhone remotely to locate your device. You will have to make the decision whether these trade-offs are worth the anti-theft benefits of Activation Lock. -At the top of the **Settings** app, you'll see your name and profile picture if you are signed in to an Apple ID. Select that, then select **Find My**. Here you can choose whether to enable or disable Find My location features. +At the top of the **Settings** app, you'll see your name and profile picture if you are signed in to an Apple Account. Select that, then select **Find My**. Here you can choose whether to enable or disable Find My location features. ### Settings @@ -72,9 +74,9 @@ Enabling **Airplane Mode** stops your phone from contacting cell towers. You wil #### Wi-Fi -You can enable hardware address randomization to protect you from tracking across Wi-Fi networks. On the network you are currently connected to, press the :material-information: button: +You can enable [hardware address randomization](https://support.apple.com/en-us/102509#triswitch) to protect you from tracking across Wi-Fi networks, and on the same network over time. On the network you are currently connected to, tap the :material-information: button: -- [x] Turn on **Private Wi-Fi Address** +- [x] Set **Private Wi-Fi Address** to **Fixed** or **Rotating** You also have the option to **Limit IP Address Tracking**. This is similar to iCloud Private Relay but only affects connections to "known trackers." Because it only affects connections to potentially malicious servers, this setting is probably fine to leave enabled, but if you don't want *any* traffic to be routed through Apple's servers, you should turn it off. @@ -84,11 +86,13 @@ You also have the option to **Limit IP Address Tracking**. This is similar to iC - [ ] Turn off **Bluetooth** +Note that Bluetooth is automatically turned on after every system update. + #### General -Your iPhone's device name will by default contain your first name, and this will be visible to anyone on networks you connect to. You should change this to something more generic, like "iPhone." Select **About** > **Name** and enter the device name you prefer. +Your iPhone's device name will by default contain your first name, and this will be visible to anyone on networks you connect to. You should change this to something more generic, like "iPhone." Select **About** → **Name** and enter the device name you prefer. -It is important to install **Software Updates** frequently to get the latest security fixes. You can enable **Automatic Updates** to keep your phone up-to-date without needing to constantly check for updates. Select **Software Update** > **Automatic Updates**: +It is important to install **Software Updates** frequently to get the latest security fixes. You can enable **Automatic Updates** to keep your phone up-to-date without needing to constantly check for updates. Select **Software Update** → **Automatic Updates**: - [x] Turn on **Download iOS Updates** - [x] Turn on **Install iOS Updates** @@ -96,13 +100,13 @@ It is important to install **Software Updates** frequently to get the latest sec **AirDrop** allows you to easily transfer files, but it can allow strangers to send you files you do not want. -- [x] Select **AirDrop** > **Receiving Off** +- [x] Select **AirDrop** → **Receiving Off** -**AirPlay** lets you seamlessly stream content from your iPhone to a TV; however, you might not always want this. Select **AirPlay & Handoff** > **Automatically AirPlay to TVs**: +**AirPlay** lets you seamlessly stream content from your iPhone to a TV; however, you might not always want this. Select **AirPlay & Continuity** → **Automatically AirPlay**: - [x] Select **Never** or **Ask** -**Background App Refresh** allows your apps to refresh their content while you're not using them. This may cause them to make unwanted connections. Turning this off can also save battery life, but it may affect an app's ability to receive updated information, particularly weather and messaging apps. +**Background App Refresh** allows your apps to refresh their content while you're not using them. This may cause them to make unwanted connections. Turning this off can also save battery life, but may affect an app's ability to receive updated information, particularly weather and messaging apps. Select **Background App Refresh** and switch off any apps you don't want to continue refreshing in the background. If you don't want any apps to refresh in the background, you can select **Background App Refresh** again and turn it **Off**. @@ -116,19 +120,19 @@ If you don't want anyone to be able to control your phone with Siri when it is l Setting a strong password on your phone is the most important step you can take for physical device security. You'll have to make tradeoffs here between security and convenience: A longer password will be annoying to type in every time, but a shorter password or PIN will be easier to guess. Setting up Face ID or Touch ID along with a strong password can be a good compromise between usability and security. -Select **Turn Passcode On** or **Change Passcode** > **Passcode Options** > **Custom Alphanumeric Code**. Make sure that you create a [secure password](../basics/passwords-overview.md). +Select **Turn Passcode On** or **Change Passcode** → **Passcode Options** → **Custom Alphanumeric Code**. Make sure that you create a [secure password](../basics/passwords-overview.md). If you wish to use Face ID or Touch ID, you can go ahead and set it up now. Your phone will use the password you set up earlier as a fallback in case your biometric verification fails. Biometric unlock methods are primarily a convenience, although they do stop surveillance cameras or people over your shoulder from watching you input your passcode. If you use biometrics, you should know how to turn them off quickly in an emergency. Holding down the side or power button and *either* volume button until you see the Slide to Power Off slider will disable biometrics, requiring your passcode to unlock. Your passcode will also be required after device restarts. -On some older devices, you may have to press the power button five times to disable biometrics instead, or for devices with Touch ID you may just have to hold down the power button and nothing else. Make sure you try this in advance so you know which method works for your device. +On some older devices, you may have to press the power button five times to disable biometrics instead, or for devices with Touch ID, you may just have to hold down the power button and nothing else. Make sure you try this in advance so you know which method works for your device. -**Stolen Device Protection** is a new feature in iOS 17.3 which adds additional security intended to protect your personal data if your device is stolen while unlocked. If you use biometrics and the Find My Device feature in your Apple ID settings, we recommend enabling this new protection: +**Stolen Device Protection** adds additional security intended to protect your personal data if your device is stolen while unlocked. If you use biometrics and the Find My Device feature in your Apple Account settings, we recommend enabling this new protection: - [x] Select **Turn On Protection** -After enabling Stolen Device Protection, [certain actions](https://support.apple.com/HT212510) will require biometric authentication without a password fallback (in the event that a shoulder surfer has obtained your PIN), such as using password autofill, accessing payment information, and disabling Lost Mode. It also adds a security delay to certain actions performed away from your home or another "familiar location," such as requiring a 1-hour timer to reset your Apple ID password or sign out of your Apple ID. This delay is intended to give you time to enable Lost Mode and secure your account before a thief can reset your device. +After enabling Stolen Device Protection, [certain actions](https://support.apple.com/HT212510) will require biometric authentication without a password fallback (in the event that a shoulder surfer has obtained your PIN), such as using password autofill, accessing payment information, and disabling Lost Mode. It also adds a security delay to certain actions performed away from your home or another "familiar location," such as requiring a 1-hour timer to reset your Apple Account password or sign out of your Apple Account. This delay is intended to give you time to enable Lost Mode and secure your account before a thief can reset your device. **Allow Access When Locked** gives you options for what you can allow when your phone is locked. The more of these options you disable, the less someone without your password can do, but the less convenient it will be for you. Pick and choose which of these you don't want someone to have access to if they get their hands on your phone. @@ -185,6 +189,8 @@ You should disable analytics if you don't wish to send Apple usage data. Select - [ ] Turn off **Improve Fitness+** - [ ] Turn off **Improve Safety** - [ ] Turn off **Improve Siri & Dictation** +- [ ] Turn off **Improve Assistive Voice Features** +- [ ] Turn off **Improve AR Location Accuracy** Disable **Personalized Ads** if you don't want targeted ads. Select **Apple Advertising**: @@ -202,22 +208,57 @@ Disable **Personalized Ads** if you don't want targeted ads. Select **Apple Adve ### E2EE Calls -Normal phone calls made with the Phone app through your carrier are not E2EE. Both FaceTime Video and FaceTime Audio calls are E2EE, or you can use [another app](../real-time-communication.md) like Signal. +Normal phone calls made with the Phone app through your carrier are not E2EE. Both FaceTime Video and FaceTime Audio calls are E2EE. Alternatively, you can use [another app](../real-time-communication.md) like Signal for E2EE calls. + +### Encrypted iMessage + +The [color of the message bubble](https://support.apple.com/en-us/104972) in the Messages app indicates whether your messages are E2EE or not. A blue bubble indicates that you're using iMessage with E2EE, while a green bubble indicates the other party is using either the outdated SMS and MMS protocols or RCS. RCS on iOS is **not** E2EE. Currently, the only way to have E2EE in Messages is for both parties to be using iMessage on Apple devices. + +If either you or your messaging partner have iCloud Backup enabled without Advanced Data Protection, the encryption key will be stored on Apple's servers, meaning they can access your messages. Additionally, iMessage's key exchange is not as secure as alternative implementations like Signal's (which allows you to view the recipients key and verify by QR code), so it shouldn't be relied on for particularly sensitive communications. + +### Photo Permissions + +When an app prompts you for access to your device's photo library, iOS provides you with options to limit what an app can access. + +Rather than allow an app to access all the photos on your device, you can allow it to only access whichever photos you choose by tapping the "Select Photos..." option in the permission dialog. You can change photo access permissions at any time by navigating to **Settings** → **Privacy & Security** → **Photos**. + +![Photo Permissions](../assets/img/ios/photo-permissions-light.png#only-light) ![Photo Permissions](../assets/img/ios/photo-permissions-dark.png#only-dark) + +**Add Photos Only** is a permission that only gives an app the ability to download photos to the photo library. Not all apps which request photo library access provide this option. + +![Private Access](../assets/img/ios/private-access-light.png#only-light) ![Private Access](../assets/img/ios/private-access-dark.png#only-dark) + +Some apps also support **Private Access**, which functions similarly to the **Limited Access** permission. However, photos shared to apps using Private Access include their location by default. We recommend unchecking this setting if you do not [remove photo metadata](../data-redaction.md) beforehand. + +### Contact Permissions + +Similarly, rather than allow an app to access all the contacts saved on your device, you can allow it to only access whichever contacts you choose. You can change contact access permissions at any time by navigating to **Settings** → **Privacy & Security** → **Contacts**. + +![Contact Permissions](../assets/img/ios/contact-permissions-light.png#only-light) ![Contact Permissions](../assets/img/ios/contact-permissions-dark.png#only-dark) + +### Require Biometrics and Hide Apps + +iOS offers the ability to lock most apps behind Touch ID/Face ID or your passcode, which can be useful for protecting sensitive content in apps which do not provide the option themselves. You can lock an app by long-pressing on it and selecting **Require Face ID/Touch ID**. Any app locked in this way requires biometric authentication whenever opening it or accessing its contents in other apps. Also, notification previews for locked apps will not be shown. + +In addition to locking apps behind biometrics, you can also hide apps so that they don't appear on the Home Screen, App Library, the app list in **Settings**, etc. While hiding apps may be useful in situations where you have to hand your unlocked phone to someone else, the concealment provided by the feature is not absolute, as a hidden app is still visible in some places such as the battery usage list. Moreover, one notable tradeoff of hiding an app is that you will not receive any of its notifications. + +You can hide an app by long-pressing on it and selecting **Require Face ID/Touch ID** → **Hide and Require Face ID/Touch ID**. Note that pre-installed Apple apps, as well as the default web browser and email app, cannot be hidden. Hidden apps reside in a **Hidden** folder at the bottom of the App Library, which can be unlocked using biometrics. This folder appears in the App Library whether you hid any apps or not, which provides you a degree of plausible deniability. + +### Blacking Out Faces/Information + +If you need to hide information in a photo, you can use Apple's built-in editing tools to do so. + +- Open the **Photos** app and tap the photo you have selected for redaction +- Tap the :material-tune: (at the bottom of the screen) → markup symbol (top right) → plus icon at the bottom right +- Select **Add Shape** and choose the square or circle +- On the toolbar, tap the circle (left-most option) and choose black as the color for filling in the shape. You can also move the shape and increase its size as you see fit. + +**Don't** use the highlighter to obfuscate information, as its opacity is not quite 100%. ### Avoid Jailbreaking Jailbreaking an iPhone undermines its security and makes you vulnerable. Running untrusted, third-party software could cause your device to be infected with malware. -### Encrypted iMessage - -The color of the message bubble in the Messages app indicates whether your messages are E2EE or not. A blue bubble indicates that you're using iMessage with E2EE, while a green bubble indicates the other party is using the outdated SMS and MMS protocols. Currently, the only way to get E2EE in Messages is for both parties to be using iMessage on Apple devices. - -If either you or your messaging partner have iCloud Backup enabled without Advanced Data Protection, the encryption key will be stored on Apple's servers, meaning they can access your messages. Additionally, iMessage's key exchange is not as secure as alternative implementations, like Signal (which allows you to view the recipients key and verify by QR code), so it shouldn't be relied on for particularly sensitive communications. - -### Blacking Out Faces/Information - -If you need to hide information in a photo, you can use Apple's built-in tools to do so. Open the photo you want to edit, press edit in the top right corner of the screen, then press the markup symbol at the top right. Press the plus at the bottom right of the screen, then press the rectangle icon. Now, you can place a rectangle anywhere on the image. Make sure to press the shape icon at the bottom left and select the filled-in rectangle. **Don't** use the highlighter to obfuscate information, because its opacity is not quite 100%. - ### iOS Betas Apple always makes beta versions of iOS available early for those that wish to help find and report bugs. We don't recommend installing beta software on your phone. Beta releases are potentially unstable and could have undiscovered security vulnerabilities. @@ -226,4 +267,4 @@ Apple always makes beta versions of iOS available early for those that wish to h ### Before First Unlock -If your threat model includes forensic tools, and you want to minimize the chance of exploits being used to access your phone, you should restart your device frequently. The state *after* a reboot but *before* unlocking your device is referred to as "Before First Unlock" (BFU), and when your device is in that state it makes it [significantly more difficult](https://belkasoft.com/checkm8_glossary) for forensic tools to exploit vulnerabilities to access your data. This BFU state allows you to receive notifications for calls, texts, and alarms, but most of the data on your device is still encrypted and inaccessible. This can be impractical, so consider whether these trade-offs make sense for your situation. +If your threat model includes [:material-target-account: Targeted Attacks](../basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } that involve forensic tools, and you want to minimize the chance of exploits being used to access your phone, you should restart your device frequently. The state *after* a reboot but *before* unlocking your device is referred to as "Before First Unlock" (BFU), and when your device is in that state it makes it [significantly more difficult](https://belkasoft.com/checkm8_glossary) for forensic tools to exploit vulnerabilities to access your data. This BFU state allows you to receive notifications for calls, texts, and alarms, but most of the data on your device is still encrypted and inaccessible. This can be impractical, so consider whether these trade-offs make sense for your situation. diff --git a/docs/os/macos-overview.md b/docs/os/macos-overview.md index 8c651052..67e87e37 100644 --- a/docs/os/macos-overview.md +++ b/docs/os/macos-overview.md @@ -19,7 +19,7 @@ Brand new Apple silicon devices can be set up without an internet connection. Ho macOS performs online checks when you open an app to verify whether an app contains known malware, and whether the developer’s signing certificate is revoked. -Previously, these checks were performed via an unencrypted OCSP protocol which could leak information about the apps you ran to your network. Apple upgraded their OCSP service to use HTTPS encryption in 2021, and [posted information](https://support.apple.com/HT202491) about their logging policy for this service. They additionally promised to add a mechanism for people to opt-out of this online check, but this has not been added to macOS as of July 2023. +Apple's OCSP service uses HTTPS encryption, so only they are able to see which apps you open. They've [posted information](https://support.apple.com/HT202491) about their logging policy for this service. They additionally [promised](http://lapcatsoftware.com/articles/2024/8/3.html) to add a mechanism for people to opt-out of this online check, but this has not been added to macOS. While you [can](https://eclecticlight.co/2021/02/23/how-to-run-apps-in-private) manually opt out of this check relatively easily, we recommend against doing so unless you would be badly compromised by the revocation checks performed by macOS, because they serve an important role in ensuring compromised apps are blocked from running. @@ -31,14 +31,14 @@ However, exploits in protective utilities like `sudo` have been [discovered in t If you do use a second account, it is not strictly required to ever log in to your original Administrator account from the macOS login screen. When you are doing something as a Standard user which requires Administrator permissions, the system should prompt you for authentication, where you can enter your Administrator credentials as your Standard user on a one-time basis. Apple provides [guidance](https://support.apple.com/HT203998) on hiding your Administrator account if you prefer to only see a single account on your login screen. -Alternatively, you can use a utility like [macOS Enterprise Privileges](https://github.com/SAP/macOS-enterprise-privileges) to escalate to Administrator rights on-demand, but this may be vulnerable to some undiscovered exploit, like all software-based protections. - ### iCloud -The majority of privacy and security concerns with Apple products are related to their *cloud services*, not their hardware or software. When you use Apple services like iCloud, most of your information is stored on their servers and secured with keys *which Apple has access to* by default. This level of access has occasionally been abused by law enforcement to get around the fact that your data is otherwise securely encrypted on your device, and of course Apple is vulnerable to data breaches like any other company. +When you use Apple services like iCloud, most of your information is stored on their servers and secured with keys *which Apple has access to* by default. This is called [Standard Data Protection](https://support.apple.com/en-us/102651) by Apple. Therefore, if you use iCloud you should [enable **Advanced Data Protection**](https://support.apple.com/HT212520). This encrypts nearly all of your iCloud data with keys stored on your devices (end-to-end encryption), rather than Apple's servers, so that your iCloud data is secured in the event of a data breach, and otherwise hidden from Apple. +If you want to be able to install apps from the App Store but don't want to enable iCloud, you can sign in to your Apple Account from the App Store instead of **System Settings**. + ### System Settings There are a number of built-in settings you should confirm or change to harden your system. Open the **Settings** app: @@ -53,6 +53,8 @@ Depending on if you are using **Wi-Fi** or **Ethernet** (denoted by a green dot Click on the "Details" button by your network name: +- [x] Select **Rotating** under **Private Wi-Fi address** + - [x] Check **Limit IP address tracking** ##### Firewall @@ -119,7 +121,7 @@ Decide whether you want personalized ads based on your usage. ##### FileVault -On modern devices with a Secure Enclave (Apple T2 Security Chip, Apple silicon), your data is always encrypted, but is decrypted automatically by a hardware key if your device doesn't detect it's been tampered with. Enabling FileVault additionally requires your password to decrypt your data, greatly improving security, especially when powered off or before the first login after powering on. +On modern devices with a Secure Enclave (Apple T2 Security Chip, Apple silicon), your data is always encrypted, but is decrypted automatically by a hardware key if your device doesn't detect it's been tampered with. Enabling [FileVault](../encryption.md#filevault) additionally requires your password to decrypt your data, greatly improving security, especially when powered off or before the first login after powering on. On older Intel-based Mac computers, FileVault is the only form of disk encryption available by default, and should always be enabled. @@ -133,21 +135,13 @@ On older Intel-based Mac computers, FileVault is the only form of disk encryptio ### MAC Address Randomization -macOS uses a randomized MAC address when performing Wi-Fi scans while disconnected from a network. However, when you connect to a preferred Wi-Fi network, the MAC address used is never randomized. Full MAC address randomization is an advanced topic, and most people don't need to worry about performing the following steps. +macOS uses a randomized MAC address when performing Wi-Fi scans while disconnected from a network. -Unlike iOS, macOS doesn't give you an option to randomize your MAC address in the settings, so if you wish to change this identifier, you'll need to do it with a command or a script. To set a random MAC address, first disconnect from the network if you're already connected, then open **Terminal** and enter this command to randomize your MAC address: +You can set your MAC address to be randomized per network and rotate occasionally to prevent tracking between networks and on the same network over time. -``` zsh -openssl rand -hex 6 | sed 's/^\(.\{1\}\)./\12/; s/\(..\)/\1:/g; s/.$//' | xargs sudo ifconfig en0 ether -``` +Go to **System Settings** → **Network** → **Wi-Fi** → **Details** and set **Private Wi-Fi address** to either **Fixed** if you want a fixed but unique address for the network you're connected to, or **Rotating** if you want it to change over time. -`en0` is the name of the interface you're changing the MAC address for. This might not be the right one on every Mac, so to check you can hold the option key and click the Wi-Fi symbol at the top right of your screen. "Interface name" should be displayed at the top of the dropdown menu. - -This command sets your MAC address to a randomized, "locally administered" address, matching the behavior of iOS, Windows, and Android's MAC address randomization features. This means that every character in the MAC address is fully randomized except the second character, which denotes the MAC address as *locally administered* and not in conflict with any actual hardware. This method is most compatible with modern networks. An alternative method is to set the first six characters of the MAC address to one of Apple's existing *Organizational Unique Identifiers*, which we'll leave as an exercise to the reader. That method is more likely to conflict with some networks, but may be less noticeable. Given the prevalence of randomized, locally administered MAC addresses in other modern operating systems, we don't think either method has significant privacy advantages over the other. - -When you connect to the network again, you'll connect with a random MAC address. This will be reset on reboot. - -Your MAC address is not the only unique information about your device which is broadcast on the network, your hostname is another piece of information which could uniquely identify you. You may wish to set your hostname to something generic like "MacBook Air", "Laptop", "John's MacBook Pro", or "iPhone" in **System Settings** > **General** > **Sharing**. Some [privacy scripts](https://github.com/sunknudsen/privacy-guides/tree/master/how-to-spoof-mac-address-and-hostname-automatically-at-boot-on-macos#guide) allow you to easily generate hostnames with random names. +Consider changing your hostname as well, which is another device identifier that's broadcast on the network you're connected to. You may wish to set your hostname to something generic like "MacBook Air", "Laptop", "John's MacBook Pro", or "iPhone" in **System Settings** → **General** → **Sharing**. Some [privacy scripts](https://github.com/sunknudsen/privacy-guides/tree/master/how-to-spoof-mac-address-and-hostname-automatically-at-boot-on-macos#guide) allow you to easily generate hostnames with random names. ## Security Protections @@ -178,27 +172,68 @@ System Integrity Protection makes critical file locations read-only to protect a ##### App Sandbox -macOS apps submitted to the App Store after June 1, 2012 are required to be sandboxed using the [App Sandbox](https://developer.apple.com/documentation/security/app_sandbox). +On macOS, whether an app is sandboxed is determined by the developer when they sign it. The App Sandbox protects against vulnerabilities in the apps you run by limiting what a malicious actor can access in the event that the app is exploited. The App Sandbox *alone* can't protect against [:material-package-variant-closed-remove: Supply Chain Attacks](../basics/common-threats.md#attacks-against-certain-organizations){ .pg-viridian } by malicious developers. For that, sandboxing needs to be enforced by someone other than the developer themselves, as it is on the App Store.

Warning

-Software downloaded from outside the official App Store is not required to be sandboxed. You should avoid non-App Store software as much as possible. +Software downloaded from outside the official App Store is not required to be sandboxed. If your threat model prioritizes defending against [:material-bug-outline: Passive Attacks](../basics/common-threats.md#security-and-privacy){ .pg-orange }, then you may want to check if the software you download outside the App Store is sandboxed, which is up to the developer to *opt in*.
+You can check if an app uses the App Sandbox in a few ways: + +You can check if apps that are already running are sandboxed using the [Activity Monitor](https://developer.apple.com/documentation/security/protecting-user-data-with-app-sandbox#Verify-that-your-app-uses-App-Sandbox). + +
+

Warning

+ +Just because one of an app's processes is sandboxed doesn't mean they all are. + +
+ +Alternatively, you can check apps before you run them by running this command in the terminal: + +``` zsh +% codesign -dvvv --entitlements - +``` + +If an app is sandboxed, you should see the following output: + +``` zsh + [Key] com.apple.security.app-sandbox + [Value] + [Bool] true +``` + +If you find that the app you want to run is not sandboxed, then you may employ methods of [compartmentalization](../basics/common-threats.md#security-and-privacy) such as virtual machines or separate devices, use a similar app that is sandboxed, or choose to not use the unsandboxed app altogether. + +##### Hardened Runtime + +The [Hardened Runtime](https://developer.apple.com/documentation/security/hardened_runtime) is an extra form of protection for apps that prevents certain classes of exploits. It improves the security of apps against exploitation by disabling certain features like JIT. + +You can check if an app uses the Hardened Runtime using this command: + +``` zsh +codesign --display --verbose /path/to/bundle.app +``` + +If Hardened Runtime is enabled, you will see `flags=0x10000(runtime)`. The `runtime` output means Hardened Runtime is enabled. There might be other flags, but the runtime flag is what we're looking for here. + +You can enable a column in Activity Monitor called "Restricted" which is a flag that prevents programs from injecting code via macOS's [dynamic linker](https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html). Ideally, this should say "Yes". + ##### Antivirus macOS comes with two forms of malware defense: -1. Protection against launching malware in the first place is provided by the App Store's review process for App Store applications, or *Notarization* (part of *Gatekeeper*), a process where third-party apps are scanned for known malware by Apple before they are allowed to run. +1. Protection against launching malware in the first place is provided by the App Store's review process for App Store applications, or *Notarization* (part of *Gatekeeper*), a process where third-party apps are scanned for known malware by Apple before they are allowed to run. Apps are required to be signed by the developers using a key given to them by Apple. This ensures that you are running software from the real developers. Notarization also requires that developers enable the Hardened Runtime for their apps, which limits methods of exploitation. 2. Protection against other malware and remediation from existing malware on your system is provided by *XProtect*, a more traditional antivirus software built-in to macOS. We recommend against installing third-party antivirus software as they typically do not have the system-level access required to properly function anyways, because of Apple's limitations on third-party apps, and because granting the high levels of access they do ask for often poses an even greater security and privacy risk to your computer. ##### Backups -macOS comes with automatic backup software called [Time Machine](https://support.apple.com/HT201250), so you can create encrypted backups to an external or network drive in the event of corrupted/deleted files. +macOS comes with automatic backup software called [Time Machine](https://support.apple.com/HT201250), so you can create encrypted backups to an external drive or a network drive in the event of corrupted/deleted files. ### Hardware Security diff --git a/docs/os/windows/group-policies.md b/docs/os/windows/group-policies.md index 0e508b85..9fd5ccee 100644 --- a/docs/os/windows/group-policies.md +++ b/docs/os/windows/group-policies.md @@ -1,5 +1,6 @@ --- title: Group Policy Settings +description: A quick guide to configuring Group Policy to make Windows a bit more privacy respecting. --- Outside of modifying the registry itself, the **Local Group Policy Editor** is the most powerful way to change many aspects of your system without installing third-party tools. Changing these settings requires [Pro Edition](index.md#windows-editions) or better. diff --git a/docs/os/windows/index.md b/docs/os/windows/index.md index fb729faf..b20996ce 100644 --- a/docs/os/windows/index.md +++ b/docs/os/windows/index.md @@ -1,6 +1,7 @@ --- title: Windows Overview icon: material/microsoft-windows +description: Microsoft Windows is a common operating system which is extremely non-private out of the box. Our guide covers making some improvements to your computer without replacing your OS. --- **Microsoft Windows** is a common OS shipped with many PCs by default. The following guides aim to provide some ways to improve privacy and reduce the default telemetry and data stored by disabling some unnecessary features. Over time, Microsoft adds features to the OS which can sometimes rely on cloud-based services. These features will often require certain types of [optional data](https://privacy.microsoft.com/data-collection-windows) that is sometimes sent to remote servers for processing. diff --git a/docs/passwords.md b/docs/passwords.md index 6ee15ebf..ac03013c 100644 --- a/docs/passwords.md +++ b/docs/passwords.md @@ -144,7 +144,7 @@ schema:

Info

-Built-in password managers in software like browsers and operating systems are sometimes not as good as dedicated password manager software. The advantage of a built-in password manager is good integration with the software, but it can often be very simple and lack privacy and security features standalone offerings have. +Built-in password managers in software like browsers and operating systems are sometimes not as good as dedicated password manager software. The advantage of a built-in password manager is good integration with the software, but it can often be very simple and lack privacy and security features that standalone offerings have. For example, the password manager in Microsoft Edge doesn't offer E2EE at all. Google's password manager has [optional](https://support.google.com/accounts/answer/11350823) E2EE, and [Apple's](https://support.apple.com/HT202303) offers E2EE by default. @@ -164,7 +164,7 @@ These password managers sync your passwords to a cloud server for easy accessibi [:octicons-home-16: Homepage](https://bitwarden.com){ .md-button .md-button--primary } [:octicons-eye-16:](https://bitwarden.com/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://bitwarden.com/help){ .card-link title=Documentation} +[:octicons-info-16:](https://bitwarden.com/help){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/bitwarden){ .card-link title="Source Code" }
@@ -172,7 +172,7 @@ These password managers sync your passwords to a cloud server for easy accessibi - [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=com.x8bit.bitwarden) - [:simple-appstore: App Store](https://apps.apple.com/app/id1137397744) -- [:simple-github: GitHub](https://github.com/bitwarden/mobile/releases) +- [:simple-github: GitHub](https://github.com/bitwarden/android/releases) - [:fontawesome-brands-windows: Windows](https://bitwarden.com/download) - [:simple-linux: Linux](https://bitwarden.com/download) - [:simple-flathub: Flathub](https://flathub.org/apps/details/com.bitwarden.desktop) @@ -189,18 +189,14 @@ Bitwarden uses [PBKDF2](https://bitwarden.com/help/kdf-algorithms/#pbkdf2) as it - [x] Select **Settings > Security > Keys > KDF algorithm > Argon2id** -Bitwarden also features [Bitwarden Send](https://bitwarden.com/products/send), which allows you to share text and files securely with [end-to-end encryption](https://bitwarden.com/help/send-encryption). A [password](https://bitwarden.com/help/send-privacy/#send-passwords) can be required along with the send link. Bitwarden Send also features [automatic deletion](https://bitwarden.com/help/send-lifespan). - -You need the [Premium Plan](https://bitwarden.com/help/about-bitwarden-plans/#compare-personal-plans) to be able to share files. The free plan only allows text sharing. - Bitwarden's server-side code is [open source](https://github.com/bitwarden/server), so if you don't want to use the Bitwarden cloud, you can easily host your own Bitwarden sync server. **Vaultwarden** is an alternative implementation of Bitwarden's sync server written in Rust and compatible with official Bitwarden clients, perfect for self-hosted deployment where running the resource-heavy official service might not be ideal. If you are looking to self-host Bitwarden on your own server, you almost certainly want to use Vaultwarden over Bitwarden's official server code. [:octicons-repo-16: Vaultwarden Repository](https://github.com/dani-garcia/vaultwarden){ .md-button } -[:octicons-info-16:](https://github.com/dani-garcia/vaultwarden/wiki){ .card-link title=Documentation} +[:octicons-info-16:](https://github.com/dani-garcia/vaultwarden/wiki){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/dani-garcia/vaultwarden){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/sponsors/dani-garcia){ .card-link title=Contribute } +[:octicons-heart-16:](https://github.com/sponsors/dani-garcia){ .card-link title="Contribute" } ### Proton Pass @@ -212,7 +208,7 @@ Bitwarden's server-side code is [open source](https://github.com/bitwarden/serve [:octicons-home-16: Homepage](https://proton.me/pass){ .md-button .md-button--primary } [:octicons-eye-16:](https://proton.me/pass/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://proton.me/support/pass){ .card-link title="Documentation"} +[:octicons-info-16:](https://proton.me/support/pass){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/protonpass){ .card-link title="Source Code" }
@@ -246,11 +242,11 @@ All issues were addressed and fixed shortly after the [report](https://res.cloud ![1Password logo](assets/img/password-management/1password.svg){ align=right } -**1Password** is a password manager with a strong focus on security and ease-of-use, which allows you to store passwords, passkeys, credit cards, software licenses, and any other sensitive information in a secure digital vault. Your vault is hosted on 1Password's servers for a [monthly fee](https://1password.com/sign-up). 1Password is [audited](https://support.1password.com/security-assessments) on a regular basis and provides exceptional customer support. 1Password is closed source; however, the security of the product is thoroughly documented in their [security white paper](https://1passwordstatic.com/files/security/1password-white-paper.pdf). +**1Password** is a password manager with a strong focus on security and ease-of-use that allows you to store passwords, passkeys, credit cards, software licenses, and any other sensitive information in a secure digital vault. Your vault is hosted on 1Password's servers for a [monthly fee](https://1password.com/sign-up). 1Password is [audited](https://support.1password.com/security-assessments) on a regular basis and provides exceptional customer support. 1Password is closed source; however, the security of the product is thoroughly documented in their [security white paper](https://1passwordstatic.com/files/security/1password-white-paper.pdf). [:octicons-home-16: Homepage](https://1password.com){ .md-button .md-button--primary } [:octicons-eye-16:](https://1password.com/legal/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://support.1password.com){ .card-link title=Documentation} +[:octicons-info-16:](https://support.1password.com){ .card-link title="Documentation" }
Downloads @@ -270,7 +266,7 @@ All issues were addressed and fixed shortly after the [report](https://res.cloud
-Traditionally, 1Password has offered the best password manager user experience for people using macOS and iOS; however, it has now achieved feature-parity across all platforms. 1Password's clients boast many features geared towards families and less technical people, such as an intuitive UI for ease of use and navigation, as well as advanced functionality. Notably, nearly every feature of 1Password is available within its native mobile or desktop clients. +Traditionally, 1Password has offered the best password manager user experience for people using macOS and iOS; however, it has now achieved feature parity across all platforms. 1Password's clients boast many features geared towards families and less technical people, such as an intuitive UI for ease of use and navigation, as well as advanced functionality. Notably, nearly every feature of 1Password is available within its native mobile or desktop clients. Your 1Password vault is secured with both your master password and a randomized 34-character security key to encrypt your data on their servers. This security key adds a layer of protection to your data because your data is secured with high entropy regardless of your master password. Many other password manager solutions are entirely reliant on the strength of your master password to secure your data. @@ -284,7 +280,7 @@ Your 1Password vault is secured with both your master password and a randomized [:octicons-home-16: Homepage](https://psono.com){ .md-button .md-button--primary } [:octicons-eye-16:](https://psono.com/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://doc.psono.com){ .card-link title=Documentation} +[:octicons-info-16:](https://doc.psono.com){ .card-link title="Documentation" } [:octicons-code-16:](https://gitlab.com/psono){ .card-link title="Source Code" }
@@ -312,7 +308,7 @@ In April 2024, Psono added [support for passkeys](https://psono.com/blog/psono-i - Must utilize strong, standards-based/modern E2EE. - Must have thoroughly documented encryption and security practices. -- Must have a published audit from a reputable, independent third-party. +- Must have a published audit from a reputable, independent third party. - All non-essential telemetry must be optional. - Must not collect more PII than is necessary for billing purposes. @@ -337,9 +333,9 @@ These options allow you to manage an encrypted password database locally. [:octicons-home-16: Homepage](https://keepassxc.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://keepassxc.org/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://keepassxc.org/docs){ .card-link title=Documentation} +[:octicons-info-16:](https://keepassxc.org/docs){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/keepassxreboot/keepassxc){ .card-link title="Source Code" } -[:octicons-heart-16:](https://keepassxc.org/donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://keepassxc.org/donate){ .card-link title="Contribute" }
Downloads @@ -355,7 +351,7 @@ These options allow you to manage an encrypted password database locally.
-KeePassXC stores its export data as [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) files. This may mean data loss if you import this file into another password manager. We advise you check each record manually. +KeePassXC stores its export data as [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) files. You may encounter data loss if you import this file into another password manager. We advise you check each record manually. ### KeePassDX (Android) @@ -366,9 +362,9 @@ KeePassXC stores its export data as [CSV](https://en.wikipedia.org/wiki/Comma-se **KeePassDX** is a lightweight password manager for Android; it allows for editing encrypted data in a single file in KeePass format and can fill in forms in a secure way. The [pro version](https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro) of the app allows you to unlock cosmetic content and non-standard protocol features, but more importantly, it helps and encourages development. [:octicons-home-16: Homepage](https://keepassdx.com){ .md-button .md-button--primary } -[:octicons-info-16:](https://github.com/Kunzisoft/KeePassDX/wiki){ .card-link title=Documentation} +[:octicons-info-16:](https://github.com/Kunzisoft/KeePassDX/wiki){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/Kunzisoft/KeePassDX){ .card-link title="Source Code" } -[:octicons-heart-16:](https://keepassdx.com/#donation){ .card-link title=Contribute } +[:octicons-heart-16:](https://keepassdx.com/#donation){ .card-link title="Contribute" }
Downloads @@ -390,9 +386,9 @@ KeePassXC stores its export data as [CSV](https://en.wikipedia.org/wiki/Comma-se [:octicons-home-16: Homepage](https://strongboxsafe.com){ .md-button .md-button--primary } [:octicons-eye-16:](https://strongboxsafe.com/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://strongboxsafe.com/getting-started){ .card-link title=Documentation} +[:octicons-info-16:](https://strongboxsafe.com/getting-started){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/strongbox-password-safe/Strongbox){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/strongbox-password-safe/Strongbox#supporting-development){ .card-link title=Contribute } +[:octicons-heart-16:](https://github.com/strongbox-password-safe/Strongbox#supporting-development){ .card-link title="Contribute" }
Downloads @@ -403,7 +399,7 @@ KeePassXC stores its export data as [CSV](https://en.wikipedia.org/wiki/Comma-se -Additionally, there is an offline-only version offered: [Strongbox Zero](https://apps.apple.com/app/id1581589638). This version is stripped down in an attempt to reduce attack surface. +Additionally, Strongbox offers an offline-only version: [Strongbox Zero](https://apps.apple.com/app/id1581589638). This version is stripped down in an attempt to reduce attack surface. ### gopass (CLI) @@ -411,12 +407,12 @@ Additionally, there is an offline-only version offered: [Strongbox Zero](https:/ ![gopass logo](assets/img/password-management/gopass.svg){ align=right } -**gopass** is a minimal password manager for the command line written in Go. It can be used within scripting applications and works on all major desktop and server operating systems (Linux, macOS, BSD, Windows). +**gopass** is a minimal password manager for the command line written in Go. It can be used within scripting applications and works on all major desktop and server operating systems. [:octicons-home-16: Homepage](https://gopass.pw){ .md-button .md-button--primary } -[:octicons-info-16:](https://github.com/gopasspw/gopass/tree/master/docs){ .card-link title=Documentation} +[:octicons-info-16:](https://github.com/gopasspw/gopass/tree/master/docs){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/gopasspw/gopass){ .card-link title="Source Code" } -[:octicons-heart-16:](https://github.com/sponsors/dominikschulz){ .card-link title=Contribute } +[:octicons-heart-16:](https://github.com/sponsors/dominikschulz){ .card-link title="Contribute" }
Downloads @@ -430,7 +426,6 @@ Additionally, there is an offline-only version offered: [Strongbox Zero](https:/ - ### 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. diff --git a/docs/pastebins.md b/docs/pastebins.md index 05ce1f57..90a59e7e 100644 --- a/docs/pastebins.md +++ b/docs/pastebins.md @@ -4,6 +4,10 @@ icon: material/content-paste description: These tools allow you to have full control of any pasted data you share to other parties. cover: pastebins.webp --- +Protects against the following threat(s): + +- [:material-server-network: Service Providers](basics/common-threats.md#privacy-from-service-providers){ .pg-teal } + [**Pastebins**](https://en.wikipedia.org/wiki/Pastebin) are online services most commonly used to share large blocks of code in a convenient and efficient manner. The pastebins listed here employ client-side encryption and password protection for pasted content; both of these features prevent the website or server operator from reading or accessing the contents of any paste. ## PrivateBin diff --git a/docs/real-time-communication.md b/docs/real-time-communication.md index 998a8a25..becd3be3 100644 --- a/docs/real-time-communication.md +++ b/docs/real-time-communication.md @@ -2,7 +2,7 @@ meta_title: "The Best Private Instant Messengers - Privacy Guides" title: "Real-Time Communication" icon: material/chat-processing -description: Other instant messengers make all of your private conversations available to the company that runs them. +description: Encrypted messengers like Signal and SimpleX keep your sensitive communications secure from prying eyes. cover: real-time-communication.webp --- Protects against the following threat(s): @@ -30,9 +30,9 @@ These messengers are great for securing your sensitive communications. [:octicons-home-16: Homepage](https://signal.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://signal.org/legal/#privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://support.signal.org){ .card-link title=Documentation} +[:octicons-info-16:](https://support.signal.org){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/signalapp){ .card-link title="Source Code" } -[:octicons-heart-16:](https://signal.org/donate){ .card-link title=Contribute } +[:octicons-heart-16:](https://signal.org/donate){ .card-link title="Contribute" }
Downloads @@ -67,17 +67,56 @@ We have some additional tips on configuring and hardening your Signal installati [Signal Configuration and Hardening :material-arrow-right-drop-circle:](https://blog.privacyguides.org/2022/07/07/signal-configuration-and-hardening) +#### Molly (Android) + +If you use Android and your threat model requires protecting against [:material-target-account: Targeted Attacks](basics/common-threats.md#attacks-against-specific-individuals){ .pg-red } you may consider using this alternative app, which features a number of security and usability improvements, to access the Signal network. + +
+ +![Molly logo](assets/img/messengers/molly.svg){ align=right } + +**Molly** is an alternative Signal client for Android which allows you to encrypt the local database with a passphrase at rest, to have unused RAM data securely shredded, to route your connection via Tor, and [more](https://blog.privacyguides.org/2022/07/07/signal-configuration-and-hardening#privacy-and-security-features). It also has usability improvements including scheduled backups, automatic locking, and the ability to use your Android phone as a linked device instead of the primary device for a Signal account. + +[:octicons-home-16: Homepage](https://molly.im){ .md-button .md-button--primary } +[:octicons-eye-16:](https://signal.org/legal/#privacy-policy){ .card-link title="Privacy Policy" } +[:octicons-info-16:](https://github.com/mollyim/mollyim-android/wiki){ .card-link title="Documentation" } +[:octicons-code-16:](https://github.com/mollyim/mollyim-android){ .card-link title="Source Code" } +[:octicons-heart-16:](https://opencollective.com/mollyim){ .card-link title="Contribute" } + +
+Downloads + +- [:simple-fdroid: F-Droid](https://molly.im/fdroid) +- [:octicons-moon-16: Accrescent](https://accrescent.app/app/im.molly.app) +- [:simple-github: GitHub](https://github.com/mollyim/mollyim-android/releases) + +
+ +
+ +Molly is updated every two weeks to include the latest features and bug fixes from Signal. The exception is security issues, which are patched as soon as possible. That said, you should be aware that there might be a slight delay compared to upstream, which may affect actions such as [migrating from Signal to Molly](https://github.com/mollyim/mollyim-android/wiki/Migrating-From-Signal#migrating-from-signal). + +Note that you are trusting multiple parties by using Molly, as you now need to trust the Signal team *and* the Molly team to deliver safe and timely updates. + +There is a version of Molly called **Molly-FOSS** which removes proprietary code like the Google services used by both Signal and Molly, at the expense of some features like battery-saving push notifications via Google Play Services. + +There is also a version called [**Molly-UP**](https://github.com/mollyim/mollyim-android#unifiedpush) which is based on Molly-FOSS and adds support for push notifications with [UnifiedPush](https://unifiedpush.org), an open source alternative to the push notifications provided by Google Play Services, but it requires running a separate program called [Mollysocket](https://github.com/mollyim/mollysocket) to function. Mollysocket can either be self-hosted on a separate computer or server (VPS), or alternatively a public Mollysocket instance can be used ([step-by-step tutorial, in German](https://kuketz-blog.de/messenger-wechsel-von-signal-zu-molly-unifiedpush-mollysocket-ntfy)). + +All three versions of Molly provide the same security improvements. + +Molly and Molly-FOSS support [reproducible builds](https://github.com/mollyim/mollyim-android/tree/main/reproducible-builds), meaning it's possible to confirm that the compiled APKs match the source code. + ### SimpleX Chat
![Simplex logo](assets/img/messengers/simplex.svg){ align=right } -**SimpleX** Chat is an instant messenger that doesn't depend on any unique identifiers such as phone numbers or usernames. Its decentralized network makes SimpleX Chat an effective tool against [:material-close-outline: Censorship](basics/common-threats.md#avoiding-censorship){ .pg-blue-gray }. Users of SimpleX Chat can scan a QR code or click an invite link to participate in group conversations. +**SimpleX Chat** is an instant messenger that doesn't depend on any unique identifiers such as phone numbers or usernames. Its decentralized network makes SimpleX Chat an effective tool against [:material-close-outline: Censorship](basics/common-threats.md#avoiding-censorship){ .pg-blue-gray }. [:octicons-home-16: Homepage](https://simplex.chat){ .md-button .md-button--primary } -[:octicons-eye-16:](https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://github.com/simplex-chat/simplex-chat/tree/stable/docs){ .card-link title=Documentation} +[:octicons-eye-16:](https://simplex.chat/privacy){ .card-link title="Privacy Policy" } +[:octicons-info-16:](https://simplex.chat/docs/simplex.html){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/simplex-chat){ .card-link title="Source Code" }
@@ -94,9 +133,13 @@ We have some additional tips on configuring and hardening your Signal installati
-SimpleX Chat [was audited](https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html) by Trail of Bits in October 2022. +SimpleX provides direct messaging, group chats, and E2EE calls secured with the [SimpleX Messaging Protocol](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md), which uses double ratchet encryption with quantum resistance. Additionally, SimpleX Chat provides metadata protection by using unidirectional ["simplex queues"](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md#simplex-queue) to deliver messages. -SimpleX Chat supports basic group chatting functionality, direct messaging, and editing of messages and markdown. E2EE Audio and Video calls are also supported. Your data can be exported and imported onto another device, as there are no central servers where this is backed up. +To participate in conversations on SimpleX Chat, you must scan a QR code or click an invite link. This allows you to verify a contact out-of-band, which protects against man-in-the-middle attacks by network providers. Your data can be exported and imported onto another device, as there are no central servers where this is backed up. + +You can find a full list of the privacy and security [features](https://github.com/simplex-chat/simplex-chat#privacy-and-security-technical-details-and-limitations) implemented in SimpleX Chat on the app's repository. + +SimpleX Chat was independently audited in [July 2024](https://simplex.chat/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.html#simplex-cryptographic-design-review-by-trail-of-bits) and in [October 2022](https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website). ### Briar @@ -108,7 +151,7 @@ SimpleX Chat supports basic group chatting functionality, direct messaging, and [:octicons-home-16: Homepage](https://briarproject.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://briarproject.org/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://code.briarproject.org/briar/briar/-/wikis/home){ .card-link title=Documentation} +[:octicons-info-16:](https://code.briarproject.org/briar/briar/-/wikis/home){ .card-link title="Documentation" } [:octicons-code-16:](https://code.briarproject.org/briar/briar){ .card-link title="Source Code" } [:octicons-heart-16:](https://briarproject.org){ .card-link title="Donation options are listed on the bottom of the homepage" } @@ -153,7 +196,7 @@ Messages and files shared in private rooms (those which require an invite) are b [:octicons-home-16: Homepage](https://element.io){ .md-button .md-button--primary } [:octicons-eye-16:](https://element.io/privacy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://element.io/help){ .card-link title=Documentation} +[:octicons-info-16:](https://element.io/help){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/element-hq){ .card-link title="Source Code" }
@@ -173,7 +216,7 @@ Messages and files shared in private rooms (those which require an invite) are b Profile pictures, reactions, and nicknames are not encrypted. -Group voice and video calls are [not](https://github.com/vector-im/element-web/issues/12878) E2EE and use Jitsi, but this is expected to change with [Native Group VoIP Signalling](https://github.com/matrix-org/matrix-doc/pull/3401). Group calls have [no authentication](https://github.com/vector-im/element-web/issues/13074) currently, meaning that non-room participants can also join the calls. We recommend that you do not use this feature for private meetings. +With the integration of [Element Call](https://element.io/blog/we-have-lift-off-element-x-call-and-server-suite-are-ready) into Element's web app, desktop apps, and its [rewritten mobile apps](https://element.io/blog/element-x-experience-the-future-of-element), group VoIP and video calls are E2EE by default. The Matrix protocol itself [theoretically supports forward secrecy](https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md#partial-forward-secrecy)[^1], however this is [not currently supported in Element](https://github.com/vector-im/element-web/issues/7101) due to it breaking some aspects of the user experience such as key backups and shared message history. @@ -191,7 +234,7 @@ Session uses the decentralized [Oxen Service Node Network](https://oxen.io) to s [:octicons-home-16: Homepage](https://getsession.org){ .md-button .md-button--primary } [:octicons-eye-16:](https://getsession.org/privacy-policy){ .card-link title="Privacy Policy" } -[:octicons-info-16:](https://getsession.org/faq){ .card-link title=Documentation} +[:octicons-info-16:](https://getsession.org/faq){ .card-link title="Documentation" } [:octicons-code-16:](https://github.com/oxen-io){ .card-link title="Source Code" }
@@ -208,7 +251,7 @@ Session uses the decentralized [Oxen Service Node Network](https://oxen.io) to s -Session allows for E2EE in one-on-one chats or closed groups which allow for up to 100 members. Open groups have no restriction on the number of members, but are open by design. +Session allows for E2EE in one-on-one chats or closed groups which allow for up to 100 members. It is also possible to [set up](https://docs.oxen.io/oxen-docs/products-built-on-oxen/session/guides/open-group-setup) or join open groups which can host thousands of members, but messages in these open groups are **not** end-to-end encrypted between participants. Session was previously based on Signal Protocol before replacing it with their own in December 2020. Session Protocol does [not](https://getsession.org/blog/session-protocol-technical-information) support forward secrecy.[^1] @@ -234,12 +277,12 @@ Session has a [whitepaper](https://arxiv.org/pdf/2002.04609.pdf) describing the 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. -- Supports Forward Secrecy[^1] +- Supports forward secrecy[^1] - Supports Future Secrecy (Post-Compromise Security)[^2] - Has open-source servers. - Decentralized, i.e. [federated or P2P](advanced/communication-network-types.md). - Uses E2EE for all messages by default. - Supports Linux, macOS, Windows, Android, and iOS. -[^1]: [Forward Secrecy](https://en.wikipedia.org/wiki/Forward_secrecy) is where keys are rotated very frequently, so that if the current encryption key is compromised, it does not expose **past** messages as well. +[^1]: [Forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy) is where keys are rotated very frequently, so that if the current encryption key is compromised, it does not expose **past** messages as well. [^2]: Future Secrecy (or Post-Compromise Security) is a feature where an attacker is prevented from decrypting **future** messages after compromising a private key, unless they compromise more session keys in the future as well. This effectively forces the attacker to intercept all communication between parties, since they lose access as soon as a key exchange occurs that is not intercepted. diff --git a/docs/router.md b/docs/router.md index b780d7d4..65827acb 100644 --- a/docs/router.md +++ b/docs/router.md @@ -1,10 +1,15 @@ --- title: "Router Firmware" icon: material/router-wireless -description: These alternative operating systems can be used to secure your router or Wi-Fi access point. +description: Alternative operating systems for securing your router or Wi-Fi access point. cover: router.webp --- -Below are a few alternative operating systems, that can be used on routers, Wi-Fi access points, etc. +Protects against the following threat(s): + +- [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } +- [:material-bug-outline: Passive Attacks](basics/common-threats.md#security-and-privacy){ .pg-orange } + +Below are a few alternative operating systems that can be used on routers, Wi-Fi access points, etc. ## OpenWrt diff --git a/docs/search-engines.md b/docs/search-engines.md index f1e75511..9e48a9ac 100644 --- a/docs/search-engines.md +++ b/docs/search-engines.md @@ -2,11 +2,15 @@ meta_title: "Recommended Search Engines: Anonymous Google Alternatives - Privacy Guides" title: "Search Engines" icon: material/search-web -description: These privacy-respecting search engines don't build an advertising profile based on your searches. +description: Privacy-respecting search engines which don't build an advertising profile based on your searches. cover: search-engines.webp global: - [randomize-element, "table tbody"] --- +Protects against the following threat(s): + +- [:material-account-cash: Surveillance Capitalism](basics/common-threats.md#surveillance-as-a-business-model){ .pg-brown } + Use a **search engine** that doesn't build an advertising profile based on your searches. ## Recommended Providers diff --git a/docs/security-keys.md b/docs/security-keys.md index 9a55bb25..ad8f9490 100644 --- a/docs/security-keys.md +++ b/docs/security-keys.md @@ -1,7 +1,7 @@ --- title: "Security Keys" icon: 'material/key-chain' -description: These tools assist you with securing your internet accounts with Multi-Factor Authentication without sending your secrets to a third-party. +description: Secure your internet accounts with Multi-Factor Authentication without sending your secrets to a third-party. cover: multi-factor-authentication.webp --- Protects against the following threat(s): diff --git a/docs/tools.md b/docs/tools.md index 3b1d8b1e..30d738c3 100644 --- a/docs/tools.md +++ b/docs/tools.md @@ -1,10 +1,10 @@ --- -meta_title: "The Best Privacy Tools, Services, and Ad-Free Recommendations - Privacy Guides" +meta_title: "Ad-Free Privacy Tool/Service Recommendations - Privacy Guides" title: "Privacy Tools" icon: material/tools hide: - toc -description: Privacy Guides is the most transparent and reliable website for finding software, apps, and services that protect your personal data from mass surveillance programs and other internet threats. +description: A complete list of the privacy tools, services, software, and hardware recommended by the Privacy Guides community. --- If you're looking for a specific solution to something, these are the hardware and software tools we recommend in a variety of categories. Our recommended privacy tools are primarily chosen based on security features, with additional emphasis on decentralized and open-source tools. They are applicable to a variety of threat models ranging from protection against global mass surveillance programs and avoiding big tech companies to mitigating attacks, but only you can determine what will work best for your needs. @@ -37,15 +37,6 @@ For more details about each project, why they were chosen, and additional tips o -
-

Threat Model Labels

- -You may find any of the following icons on some of the recommendation pages: :material-incognito: :material-target-account: :material-package-variant-closed-remove: :material-bug-outline: :material-server-network: :material-eye-outline: :material-account-cash: :material-account-search: :material-close-outline: - -We are testing a new feature that allows readers to better identify and understand the kinds of threats that privacy tools best defend against. Let us know what you think about this feature by replying to this dedicated forum [thread](https://discuss.privacyguides.net/t/implement-threat-model-labels/18659)! - -
- ## Private Web Browsers
@@ -97,9 +88,9 @@ We are testing a new feature that allows readers to better identify and understa --- - We recommend **Safari** alongside a tracker-blocker like [AdGuard](browser-extensions.md#adguard) on iOS, because all iOS browsers are forced to be based on Safari anyways. This reduces the number of parties you're required to trust. + We recommend **Safari** due to its [anti-fingerprinting](https://webkit.org/blog/15697/private-browsing-2-0) features and default tracker blocking. It also separates your cookies in private browsing mode to prevent tracking between tabs. - - [Read Full Review :material-arrow-right-drop-circle:](mobile-browsers.md#safari) + - [Read Full Review :material-arrow-right-drop-circle:](mobile-browsers.md#safari-ios)
@@ -252,7 +243,6 @@ If you're looking for added **security**, you should always ensure you're connec - ![Canary Mail logo](assets/img/email-clients/canarymail.svg){ .twemoji loading=lazy } [Canary Mail (iOS)](email-clients.md#canary-mail-ios) - ![FairEmail logo](assets/img/email-clients/fairemail.svg){ .twemoji loading=lazy } [FairEmail (Android)](email-clients.md#fairemail-android) - ![GNOME Evolution logo](assets/img/email-clients/evolution.svg){ .twemoji loading=lazy } [GNOME Evolution (Linux)](email-clients.md#gnome-evolution-gnome) -- ![K-9 Mail logo](assets/img/email-clients/k9mail.svg){ .twemoji loading=lazy } [K-9 Mail (Android)](email-clients.md#k-9-mail-android) - ![Kontact logo](assets/img/email-clients/kontact.svg){ .twemoji loading=lazy } [Kontact (Linux)](email-clients.md#kontact-kde) - ![Mailvelope logo](assets/img/email-clients/mailvelope.svg){ .twemoji loading=lazy } [Mailvelope (PGP in standard webmail)](email-clients.md#mailvelope-browser) - ![NeoMutt logo](assets/img/email-clients/mutt.svg){ .twemoji loading=lazy } [NeoMutt (CLI)](email-clients.md#neomutt-cli) @@ -280,7 +270,6 @@ If you're looking for added **security**, you should always ensure you're connec
- ![EasyOptOuts logo](assets/img/data-broker-removals/easyoptouts.svg){ .twemoji loading=lazy } [EasyOptOuts](data-broker-removals.md#easyoptouts-paid) -- ![Optery logo](assets/img/data-broker-removals/optery.svg){ .twemoji loading=lazy } [Optery](data-broker-removals.md#optery-free-paid) - ![Google logo](assets/img/data-broker-removals/google.svg){ .twemoji loading=lazy } [Google *Results about you*](data-broker-removals.md#google-results-about-you-free)
@@ -395,7 +384,6 @@ We [recommend](dns.md#recommended-providers) a number of encrypted DNS servers b - ![MAT2 logo](assets/img/data-redaction/mat2.svg){ .twemoji loading=lazy } [MAT2](data-redaction.md#mat2) - ![ExifEraser logo](assets/img/data-redaction/exiferaser.svg){ .twemoji loading=lazy } [ExifEraser (Android)](data-redaction.md#exiferaser-android) - ![Metapho logo](assets/img/data-redaction/metapho.jpg){ .twemoji loading=lazy } [Metapho (iOS)](data-redaction.md#metapho-ios) -- ![PrivacyBlur logo](assets/img/data-redaction/privacyblur.svg){ .twemoji loading=lazy } [PrivacyBlur](data-redaction.md#privacyblur) - ![ExifTool logo](assets/img/data-redaction/exiftool.png){ .twemoji loading=lazy } [ExifTool (CLI)](data-redaction.md#exiftool) @@ -416,14 +404,16 @@ We [recommend](dns.md#recommended-providers) a number of encrypted DNS servers b ### Encryption Software
-Operating System Disk Encryption +Operating System Encryption -For encrypting your operating system drive, we typically recommend using whichever encryption tool your operating system provides, whether that is **BitLocker** on Windows, **FileVault** on macOS, or **LUKS** on Linux. These tools are included with the operating system and typically use hardware encryption elements such as a TPM that other full-disk encryption software like VeraCrypt do not. VeraCrypt is still suitable for non-operating system disks such as external drives, especially drives that may be accessed from multiple operating systems. +For encrypting your OS drive, we typically recommend using the encryption tool your operating system provides, whether that is **BitLocker** on Windows, **FileVault** on macOS, or **LUKS** on Linux. These tools are included with the operating system and take advantage of hardware encryption elements such as a [secure cryptoprocessor](basics/hardware.md/#tpmsecure-cryptoprocessor). -[Learn more :material-arrow-right-drop-circle:](encryption.md#os-full-disk-encryption) +[Learn more :material-arrow-right-drop-circle:](encryption.md#operating-system-encryption)
+#### Cross-platform Tools +
- ![Cryptomator logo](assets/img/encryption-software/cryptomator.svg){ .twemoji loading=lazy } [Cryptomator](encryption.md#cryptomator-cloud) @@ -511,7 +501,6 @@ For encrypting your operating system drive, we typically recommend using whichev - ![Akregator logo](assets/img/news-aggregators/akregator.svg){ .twemoji loading=lazy } [Akregator](news-aggregators.md#akregator) - ![NewsFlash logo](assets/img/news-aggregators/newsflash.png){ .twemoji loading=lazy } [NewsFlash](news-aggregators.md#newsflash) - ![Feeder logo](assets/img/news-aggregators/feeder.png){ .twemoji} [Feeder (Android)](news-aggregators.md#feeder) -- ![Fluent Reader logo](assets/img/news-aggregators/fluent-reader.svg){ .twemoji loading=lazy } [Fluent Reader](news-aggregators.md#fluent-reader) - ![Miniflux logo](assets/img/news-aggregators/miniflux.svg#only-light){ .twemoji loading=lazy }![Miniflux logo](assets/img/news-aggregators/miniflux-dark.svg#only-dark){ .twemoji loading=lazy } [Miniflux](news-aggregators.md#miniflux) - ![NetNewsWire logo](assets/img/news-aggregators/netnewswire.png){ .twemoji loading=lazy } [NetNewsWire](news-aggregators.md#netnewswire) - ![Newsboat logo](assets/img/news-aggregators/newsboat.svg){ .twemoji loading=lazy } [Newsboat](news-aggregators.md#newsboat) @@ -701,7 +690,6 @@ These tools may provide utility for certain individuals. They provide functional - ![iMazing logo](assets/img/device-integrity/imazing.png){ .twemoji loading=lazy } [iMazing (iOS)](device-integrity.md#imazing-ios) - ![Auditor logo](assets/img/device-integrity/auditor.svg#only-light){ .twemoji loading=lazy }![Auditor logo](assets/img/device-integrity/auditor-dark.svg#only-dark){ .twemoji loading=lazy } [Auditor (Android)](device-integrity.md#auditor-android) - ![Hypatia logo](assets/img/device-integrity/hypatia.svg#only-light){ .twemoji loading=lazy }![Hypatia logo](assets/img/device-integrity/hypatia-dark.svg#only-dark){ .twemoji loading=lazy } [Hypatia (Android)](device-integrity.md#hypatia-android) -- ![iVerify logo](assets/img/device-integrity/iverify.webp){ .twemoji loading=lazy } [iVerify Basic (iOS)](device-integrity.md#iverify-basic-ios)
diff --git a/docs/tor.md b/docs/tor.md index 81f7f0c5..624721fa 100644 --- a/docs/tor.md +++ b/docs/tor.md @@ -121,13 +121,13 @@ All versions are signed using the same signature so they should be compatible wi -## Onion Browser +## Onion Browser (iOS)
![Onion Browser logo](assets/img/self-contained-networks/onion_browser.svg){ align=right } -**Onion Browser** is an open-source browser that lets you browse the web anonymously over the Tor network on iOS devices and is endorsed by the [Tor Project](https://support.torproject.org/glossary/onion-browser). +**Onion Browser** is an open-source browser that lets you browse the web anonymously over the Tor network on iOS devices and is endorsed by the [Tor Project](https://support.torproject.org/glossary/onion-browser). [:material-star-box: Read our latest Onion Browser review.](/articles/2024/09/18/onion-browser-review) [:octicons-home-16: Homepage](https://onionbrowser.com){ .md-button .md-button--primary } [:octicons-eye-16:](https://onionbrowser.com/privacy-policy){ .card-link title="Privacy Policy" } @@ -144,4 +144,6 @@ All versions are signed using the same signature so they should be compatible wi
+Onion Browser does not provide the same levels of privacy protections as Tor Browser does on desktop platforms. For casual use it is a perfectly fine way to access hidden services, but if you're concerned about being traced or monitored by advanced adversaries you should not rely on this as an anonymity tool. + [^1]: The `IsolateDestAddr` setting is discussed on the [Tor mailing list](https://lists.torproject.org/pipermail/tor-talk/2012-May/024403.html) and [Whonix's Stream Isolation documentation](https://whonix.org/wiki/Stream_Isolation), where both projects suggest that it is usually not a good approach for most people. diff --git a/docs/vpn.md b/docs/vpn.md index d86959c2..fe978ca0 100644 --- a/docs/vpn.md +++ b/docs/vpn.md @@ -2,7 +2,7 @@ meta_title: "Private VPN Service Recommendations and Comparison, No Sponsors or Ads - Privacy Guides" title: "VPN Services" icon: material/vpn -description: These are the best VPN services for protecting your privacy and security online. Find a provider here that isn’t out to spy on you. +description: The best VPN services for protecting your privacy and security online. Find a provider here that isn’t out to spy on you. cover: vpn.webp global: - [randomize-element, "table tbody"] @@ -32,7 +32,7 @@ Our recommended providers use encryption, support WireGuard & OpenVPN, and have | Provider | Countries | WireGuard | Port Forwarding | IPv6 | Anonymous Payments |---|---|---|---|---|--- -| [Proton](#proton-vpn) | 112+ | :material-check:{ .pg-green } | :material-information-outline:{ .pg-blue } Partial Support | :material-alert-outline:{ .pg-orange } | Cash +| [Proton](#proton-vpn) | 112+ | :material-check:{ .pg-green } | :material-alert-outline:{ .pg-orange } Partial Support | :material-information-outline:{ .pg-blue } Limited Support | Cash | [IVPN](#ivpn) | 37+ | :material-check:{ .pg-green } | :material-alert-outline:{ .pg-orange } | :material-information-outline:{ .pg-blue } Outgoing Only | Monero, Cash | [Mullvad](#mullvad) | 45+ | :material-check:{ .pg-green } | :material-alert-outline:{ .pg-orange } | :material-check:{ .pg-green } | Monero, Cash @@ -56,6 +56,7 @@ Our recommended providers use encryption, support WireGuard & OpenVPN, and have - [:simple-appstore: App Store](https://apps.apple.com/app/id1437005085) - [:simple-github: GitHub](https://github.com/ProtonVPN/android-app/releases) - [:fontawesome-brands-windows: Windows](https://protonvpn.com/download-windows) +- [:simple-apple: macOS](https://protonvpn.com/download-macos) - [:simple-linux: Linux](https://protonvpn.com/support/linux-vpn-setup)
@@ -89,9 +90,9 @@ Proton VPN mostly supports the WireGuard® protocol. [WireGuard](https://wiregua Proton VPN [recommends](https://protonvpn.com/blog/wireguard) the use of WireGuard with their service. On Proton VPN's Windows, macOS, iOS, Android, ChromeOS, and Android TV apps, WireGuard is the default protocol; however, [support](https://protonvpn.com/support/how-to-change-vpn-protocols) for the protocol is not present in their Linux app. -#### :material-alert-outline:{ .pg-orange } No IPv6 Support +#### :material-alert-outline:{ .pg-orange } Limited IPv6 Support -Proton VPN's servers are only compatible with IPv4. The Proton VPN applications will block all outgoing IPv6 traffic, so you don't have to worry about your IPv6 address being leaked, but you will not be able to connect to any IPv6-only sites, and you will not be able to connect to Proton VPN from an IPv6-only network. +Proton [now supports IPv6](https://protonvpn.com/support/prevent-ipv6-vpn-leaks) in their browser extension but only 80% of their servers are IPv6-compatible. On other platforms, the Proton VPN client will block all outgoing IPv6 traffic, so you don't have to worry about your IPv6 address being leaked, but you will not be able to connect to any IPv6-only sites, nor will you be able to connect to Proton VPN from an IPv6-only network. #### :material-information-outline:{ .pg-info } Remote Port Forwarding @@ -179,7 +180,7 @@ IVPN previously supported port forwarding, but removed the option in [June 2023] #### :material-check:{ .pg-green } Anti-Censorship -IVPN has obfuscation modes using the [v2ray](https://v2ray.com/en/index.html) project which helps in situations where VPN protocols like OpenVPN or Wireguard are blocked. Currently this feature is only available on Desktop and [iOS](https://ivpn.net/knowledgebase/ios/v2ray). It has two modes where it can use [VMess](https://guide.v2fly.org/en_US/basics/vmess.html) over QUIC or TCP connections. QUIC is a modern protocol with better congestion control and therefore may be faster with reduced latency. The TCP mode makes your data appear as regular HTTP traffic. +IVPN has obfuscation modes using [v2ray](https://v2ray.com/en/index.html) which helps in situations where VPN protocols like OpenVPN or Wireguard are blocked. Currently this feature is only available on Desktop and [iOS](https://ivpn.net/knowledgebase/ios/v2ray). It has two modes where it can use [VMess](https://guide.v2fly.org/en_US/basics/vmess.html) over QUIC or TCP connections. QUIC is a modern protocol with better congestion control and therefore may be faster with reduced latency. The TCP mode makes your data appear as regular HTTP traffic. #### :material-check:{ .pg-green } Mobile Clients @@ -195,7 +196,7 @@ IVPN clients support two factor authentication. IVPN also provides "[AntiTracker ![Mullvad logo](assets/img/vpn/mullvad.svg){ align=right } -**Mullvad** is a fast and inexpensive VPN with a serious focus on transparency and security. They have been in operation since 2009. Mullvad is based in Sweden and does not offer a free trial. +**Mullvad** is a fast and inexpensive VPN with a serious focus on transparency and security. They have been in operation since 2009. Mullvad is based in Sweden and offers a 30-day money-back guarantee for payment methods that allow it. [:octicons-home-16: Homepage](https://mullvad.net){ .md-button .md-button--primary } [:simple-torbrowser:](http://o54hon2e2vj6c7m3aqqu6uyece65by3vgoxxhlqlsvkmacw6a7m7kiad.onion){ .card-link title="Onion Service" } @@ -244,7 +245,7 @@ Mullvad provides the source code for their desktop and mobile clients in their [ #### :material-check:{ .pg-green } Accepts Cash and Monero -Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. Prepaid cards with redeem codes are also available. Mullvad also accepts Swish and bank wire transfers. +Mullvad, in addition to accepting credit/debit cards and PayPal, accepts Bitcoin, Bitcoin Cash, **Monero** and **cash/local currency** as anonymous forms of payment. Prepaid cards with redeem codes are also available. Mullvad also accepts Swish and bank wire transfers, as well as a few European payment systems. #### :material-check:{ .pg-green } WireGuard Support @@ -262,7 +263,12 @@ Mullvad previously supported port forwarding, but removed the option in [May 202 #### :material-check:{ .pg-green } Anti-Censorship -Mullvad has obfuscation an mode using [Shadowsocks with v2ray](https://mullvad.net/en/help/shadowsocks-with-v2ray) which may be useful in situations where VPN protocols like OpenVPN or Wireguard are blocked. +Mullvad offers several features to help bypass censorship and access the internet freely: + +- **Obfuscation modes**: Mullvad has two built-in obfuscation modes: "UDP-over-TCP" and ["Wireguard over Shadowsocks"](https://mullvad.net/en/blog/introducing-shadowsocks-obfuscation-for-wireguard). These modes disguise your VPN traffic as regular web traffic, making it harder for censors to detect and block. Supposedly, China has to use a [new method to disrupt Shadowsocks-routed traffic](https://gfw.report/publications/usenixsecurity23/en). +- **Advanced obfuscation with Shadowsocks and v2ray**: For more advanced users, Mullvad provides a guide on how to use the [Shadowsocks with v2ray](https://mullvad.net/en/help/shadowsocks-with-v2ray) plugin with Mullvad clients. This setup provides an additional layer of obfuscation and encryption. +- **Custom server IPs**: To counter IP-blocking, you can request custom server IPs from Mullvad's support team. Once you receive the custom IPs, you can input the text file in the "Server IP override" settings, which will override the chosen server IP addresses with ones that aren't known to the censor. +- **Bridges and proxies**: Mullvad also allows you to use bridges or proxies to reach their API (needed for authentication), which can help bypass censorship attempts that block access to the API itself. #### :material-check:{ .pg-green } Mobile Clients @@ -270,7 +276,7 @@ Mullvad has published [App Store](https://apps.apple.com/app/id1488466513) and [ #### :material-information-outline:{ .pg-blue } Additional Notes -Mullvad is very transparent about which nodes they [own or rent](https://mullvad.net/en/servers). They use [ShadowSocks](https://shadowsocks.org) in their ShadowSocks + OpenVPN configuration, making them more resistant against firewalls with [Deep Packet Inspection](https://en.wikipedia.org/wiki/Deep_packet_inspection) trying to block VPNs. Supposedly, [China has to use a different method to block ShadowSocks servers](https://github.com/net4people/bbs/issues/22). +Mullvad is very transparent about which nodes they [own or rent](https://mullvad.net/en/servers). They also provide the option to enable Defense Against AI-guided Traffic Analysis ([DAITA](https://mullvad.net/en/blog/daita-defense-against-ai-guided-traffic-analysis)) in their apps. DAITA protects against the threat of advanced traffic analysis which can be used to connect patterns in VPN traffic with specific websites. ## Criteria @@ -293,14 +299,15 @@ We require all our recommended VPN providers to provide OpenVPN configuration fi - Killswitch built in to clients. - Multihop support. Multihopping is important to keep data private in case of a single node compromise. - If VPN clients are provided, they should be [open source](https://en.wikipedia.org/wiki/Open_source), like the VPN software they generally have built into them. We believe that [source code](https://en.wikipedia.org/wiki/Source_code) availability provides greater transparency about what your device is actually doing. +- Censorship resistance features designed to bypass firewalls without DPI. **Best Case:** - Killswitch with highly configurable options (enable/disable on certain networks, on boot, etc.) - Easy-to-use VPN clients -- Supports [IPv6](https://en.wikipedia.org/wiki/IPv6). We expect that servers will allow incoming connections via IPv6 and allow you to access services hosted on IPv6 addresses. +- [IPv6](https://en.wikipedia.org/wiki/IPv6) support. We expect that servers will allow incoming connections via IPv6 and allow you to access services hosted on IPv6 addresses. - Capability of [remote port forwarding](https://en.wikipedia.org/wiki/Port_forwarding#Remote_port_forwarding) assists in creating connections when using P2P ([Peer-to-Peer](https://en.wikipedia.org/wiki/Peer-to-peer)) file sharing software or hosting a server (e.g., Mumble). -- Obfuscation technology which pads data packets with random data to circumvent internet censorship. +- Obfuscation technology which camouflages the true nature of internet traffic, designed to circumvent advanced internet censorship methods like DPI. ### Privacy @@ -325,13 +332,16 @@ A VPN is pointless if it can't even provide adequate security. We require all ou - Strong Encryption Schemes: OpenVPN with SHA-256 authentication; RSA-2048 or better handshake; AES-256-GCM or AES-256-CBC data encryption. - Forward Secrecy. - Published security audits from a reputable third-party firm. +- VPN servers that use full-disk encryption or are RAM-only. **Best Case:** - Strongest Encryption: RSA-4096. +- Optional quantum-resistant encryption. - Forward Secrecy. - Comprehensive published security audits from a reputable third-party firm. - Bug-bounty programs and/or a coordinated vulnerability-disclosure process. +- RAM-only VPN servers. ### Trust @@ -340,6 +350,7 @@ You wouldn't trust your finances to someone with a fake identity, so why trust t **Minimum to Qualify:** - Public-facing leadership or ownership. +- Company based in a jurisdiction where it cannot be forced to do secret logging. **Best Case:** @@ -371,4 +382,4 @@ Responsible marketing that is both educational and useful to the consumer could ### Additional Functionality -While not strictly requirements, there are some factors we looked into when determining which providers to recommend. These include content blocking functionality, warrant canaries, multihop connections, excellent customer support, the number of allowed simultaneous connections, etc. +While not strictly requirements, there are some factors we looked into when determining which providers to recommend. These include content blocking functionality, warrant canaries, excellent customer support, the number of allowed simultaneous connections, etc. diff --git a/includes/abbreviations.en.txt b/includes/abbreviations.en.txt index 93195bd3..03c478c7 100644 --- a/includes/abbreviations.en.txt +++ b/includes/abbreviations.en.txt @@ -16,6 +16,7 @@ *[DoQ]: DNS over QUIC *[DoH3]: DNS over HTTP/3 *[DoT]: DNS over TLS +*[DPI]: Deep Packet Inspection identifies and blocks packet with specific payloads *[E2EE]: End-to-End Encryption/Encrypted *[ECS]: EDNS Client Subnet *[EEA]: European Economic Area @@ -71,6 +72,7 @@ *[PGP]: Pretty Good Privacy (see OpenPGP) *[PII]: Personally Identifiable Information *[QNAME]: Qualified Name +*[QUIC]: A network protocol based on UDP, but aiming to combine the speed of UDP with the reliability of TCP. *[rolling release]: Updates which are released frequently rather than set intervals *[RSS]: Really Simple Syndication *[SELinux]: Security-Enhanced Linux diff --git a/includes/contributors.md b/includes/contributors.md index ba447b0c..b1983c82 100644 --- a/includes/contributors.md +++ b/includes/contributors.md @@ -432,6 +432,9 @@
Kieran Colfer

📖
Triple T

📖 + +
IDON-TEXIST

📖 + diff --git a/includes/strings.en.env b/includes/strings.en.env index 2f715d81..758f9d2c 100644 --- a/includes/strings.en.env +++ b/includes/strings.en.env @@ -11,10 +11,8 @@ HOMEPAGE_CTA_DESCRIPTION="It's important for a website like Privacy Guides to al HOMEPAGE_DESCRIPTION="A socially motivated website which provides information about protecting your online data privacy and security." HOMEPAGE_RSS_CHANGELOG_LINK="https://discuss.privacyguides.net/c/site-development/changelog/9.rss" HOMEPAGE_RSS_CHANGELOG_TITLE="Privacy Guides release changelog" -HOMEPAGE_RSS_BLOG_LINK="https://blog.privacyguides.org/feed_rss_created.xml" +HOMEPAGE_RSS_BLOG_LINK="https://www.privacyguides.org/articles/feed_rss_created.xml" HOMEPAGE_RSS_BLOG_TITLE="Privacy Guides blog feed" -HOMEPAGE_RSS_STORIES_LINK="https://share.privacyguides.org/web-stories/feed/" -HOMEPAGE_RSS_STORIES_TITLE="Privacy Guides web stories feed" HOMEPAGE_RSS_FORUM_LINK="https://discuss.privacyguides.net/latest.rss" HOMEPAGE_RSS_FORUM_TITLE="Latest Privacy Guides forum topics" HOMEPAGE_HEADER="The collaborative privacy advocacy community." @@ -24,6 +22,7 @@ HOMEPAGE_BUTTON_GET_STARTED_TITLE="The first step of your privacy journey" HOMEPAGE_BUTTON_TOOLS_NAME="Recommended Tools" HOMEPAGE_BUTTON_TOOLS_TITLE="Recommended privacy tools, services, and knowledge" NAV_ABOUT="About" +NAV_ABOUT_TEAM_MEMBERS="Team Members" NAV_ADVANCED="Advanced" NAV_ADVANCED_TOPICS="Advanced Topics" NAV_BLOG="Articles" diff --git a/mkdocs.blog.yml b/mkdocs.blog.yml index 6c14cc9b..e1d6e9b6 100644 --- a/mkdocs.blog.yml +++ b/mkdocs.blog.yml @@ -23,7 +23,7 @@ site_url: "https://www.privacyguides.org/articles/" site_dir: "site/articles" site_name: Privacy Guides -site_description: "Privacy Guides is your central privacy and security resource to protect yourself online." +site_description: "Privacy Guides is the most popular & trustworthy non-profit privacy resource to find privacy tools and learn about protecting your digital life." edit_uri_template: blob/main/blog/{path}?plain=1 extra: @@ -117,7 +117,7 @@ theme: - search.highlight extra_css: - - assets/stylesheets/extra.css?v=20240802 + - assets/stylesheets/extra.css?v=20240829 watch: - theme @@ -128,6 +128,8 @@ plugins: blog_dir: . blog_toc: true post_url_format: "{date}/{file}" + post_excerpt: required + post_excerpt_max_authors: 0 authors_profiles: true authors_profiles_toc: true categories_allowed: @@ -145,6 +147,7 @@ plugins: categories: - categories - tags + glightbox: {} tags: {} search: {} privacy: @@ -198,7 +201,6 @@ markdown_extensions: tables: {} footnotes: {} toc: - permalink: true toc_depth: 4 nav: @@ -208,6 +210,7 @@ nav: - !ENV [NAV_BLOG, "Articles"]: - index.md - tags.md + - editorial.md - !ENV [NAV_ABOUT, "About"]: /en/about/ - "Donate": /en/about/donate/ - !ENV [NAV_CHANGELOG, "Changelog"]: diff --git a/mkdocs.yml b/mkdocs.yml index b3feff26..bcab6a69 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -143,14 +143,7 @@ extra: link: !ENV [ HOMEPAGE_RSS_BLOG_LINK, - "https://blog.privacyguides.org/feed_rss_created.xml", - ] - - title: - !ENV [HOMEPAGE_RSS_STORIES_TITLE, "Privacy Guides Web Stories feed"] - link: - !ENV [ - HOMEPAGE_RSS_STORIES_LINK, - "https://share.privacyguides.org/web-stories/feed/", + "https://www.privacyguides.org/articles/feed_rss_created.xml", ] - title: !ENV [ @@ -284,8 +277,10 @@ theme: extra_css: - assets/stylesheets/extra.css?v=20240802 extra_javascript: - - assets/javascripts/randomize-element.js?v=20240801 - - assets/javascripts/feedback.js?v=20240801 + - path: assets/javascripts/randomize-element.js?v=20240801 + defer: true + - path: assets/javascripts/feedback.js?v=20240801 + defer: true watch: - theme @@ -358,7 +353,6 @@ markdown_extensions: tables: {} footnotes: {} toc: - permalink: true toc_depth: 4 nav: @@ -443,8 +437,11 @@ nav: - !ENV [NAV_ABOUT, "About"]: - "about.md" - "about/donate.md" + - !ENV [NAV_ABOUT_TEAM_MEMBERS, "Team Members"]: + https://discuss.privacyguides.net/u?group=team&order=solutions&period=all - "about/contributors.md" - "about/criteria.md" + - "about/executive-policy.md" - "about/notices.md" - "about/privacy-policy.md" - "about/jobs.md" @@ -452,7 +449,6 @@ nav: - !ENV [NAV_ONLINE_SERVICES, "Online Services"]: "about/services.md" - !ENV [NAV_CODE_OF_CONDUCT, "Code of Conduct"]: "CODE_OF_CONDUCT.md" - "about/statistics.md" - - "about/privacytools.md" - !ENV [NAV_CONTRIBUTING, "Contributing"]: - !ENV [NAV_WRITING_GUIDE, "Writing Guide"]: - "meta/writing-style.md" @@ -471,3 +467,5 @@ nav: validation: nav: not_found: info + omitted_files: ignore + absolute_links: ignore diff --git a/modules/mkdocs-material b/modules/mkdocs-material index edd5029d..1a9cde68 160000 --- a/modules/mkdocs-material +++ b/modules/mkdocs-material @@ -1 +1 @@ -Subproject commit edd5029dd86077d595a3591faed6b21a73062bc8 +Subproject commit 1a9cde6887f6ceeefd21bfb21598993d8a3589ab diff --git a/theme/assets/img/cryptocurrency/proton-wallet.svg b/theme/assets/img/cryptocurrency/proton-wallet.svg new file mode 100644 index 00000000..c1180d59 --- /dev/null +++ b/theme/assets/img/cryptocurrency/proton-wallet.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/theme/assets/img/data-broker-removals/optery.svg b/theme/assets/img/data-broker-removals/optery.svg deleted file mode 100644 index 64100d13..00000000 --- a/theme/assets/img/data-broker-removals/optery.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/theme/assets/img/data-redaction/privacyblur.svg b/theme/assets/img/data-redaction/privacyblur.svg deleted file mode 100644 index a1b2e2e9..00000000 --- a/theme/assets/img/data-redaction/privacyblur.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/theme/assets/img/device-integrity/iverify.webp b/theme/assets/img/device-integrity/iverify.webp deleted file mode 100644 index aa3e15af..00000000 Binary files a/theme/assets/img/device-integrity/iverify.webp and /dev/null differ diff --git a/theme/assets/img/email-clients/k9mail.svg b/theme/assets/img/email-clients/k9mail.svg deleted file mode 100644 index 4af99058..00000000 --- a/theme/assets/img/email-clients/k9mail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/theme/assets/img/email-clients/thunderbird.svg b/theme/assets/img/email-clients/thunderbird.svg index ea153881..63a86b83 100644 --- a/theme/assets/img/email-clients/thunderbird.svg +++ b/theme/assets/img/email-clients/thunderbird.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/blog/assets/images/signal-configuration/molly.svg b/theme/assets/img/messengers/molly.svg similarity index 100% rename from blog/assets/images/signal-configuration/molly.svg rename to theme/assets/img/messengers/molly.svg diff --git a/theme/assets/img/news-aggregators/fluent-reader.svg b/theme/assets/img/news-aggregators/fluent-reader.svg deleted file mode 100644 index 2ab38b3a..00000000 --- a/theme/assets/img/news-aggregators/fluent-reader.svg +++ /dev/null @@ -1 +0,0 @@ -F \ No newline at end of file diff --git a/theme/assets/javascripts/discourse-topics.js b/theme/assets/javascripts/discourse-topics.js index 1a070aef..325aaf4f 100644 --- a/theme/assets/javascripts/discourse-topics.js +++ b/theme/assets/javascripts/discourse-topics.js @@ -79,6 +79,9 @@ async function main() { avatar.width = 20; avatar.height = 20; avatar.className = "middle"; + avatar.loading = "lazy"; + avatar.ariaHidden = "true"; + avatar.alt = ""; author.appendChild(avatar); var namespan = document.createElement('span'); namespan.innerText = " Posted by " + author_data['username']; diff --git a/theme/assets/stylesheets/extra.css b/theme/assets/stylesheets/extra.css index 68b294dc..0bfef2cc 100644 --- a/theme/assets/stylesheets/extra.css +++ b/theme/assets/stylesheets/extra.css @@ -522,3 +522,8 @@ path[d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l- width: 100%; padding: 1em !important; } + +.pg-proconlist { + list-style-type: disc; + padding-inline-start: 1em; +} diff --git a/theme/blog-post.html b/theme/blog-post.html new file mode 100644 index 00000000..8d604667 --- /dev/null +++ b/theme/blog-post.html @@ -0,0 +1,250 @@ + + +{% extends "main.html" %} + +{% import "partials/nav-item.html" as item with context %} + + +{% block container %} +
+ + + + {% if config.theme.language == "en" %} + + {% endif %} + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + {% if "toc.integrate" in features %} + {% include "partials/toc.html" %} + {% endif %} +
+
+
+ + +
+ {% block content %} + {% include "partials/content.html" %} + {% endblock %} +
+
+{% endblock %} diff --git a/theme/home.html b/theme/home.html index 018d9345..49315419 100644 --- a/theme/home.html +++ b/theme/home.html @@ -121,6 +121,6 @@ {% endif %} {% endblock %} {% block scripts %} - + {{ super() }} {% endblock %} diff --git a/theme/layouts/blog.yml b/theme/layouts/blog.yml new file mode 100644 index 00000000..a0c64b59 --- /dev/null +++ b/theme/layouts/blog.yml @@ -0,0 +1,128 @@ +definitions: + - &site_name >- + {{ config.site_name }} + + - &page_title >- + {{ page.meta.get("title", page.title) }} + + - &page_description >- + {{ page.meta.get("description", config.site_description) or "" }} + + - &page_logo >- + {% if page.meta.preview and page.meta.preview.logo %} + {{- page.meta.preview.logo -}} + {% endif %} + + - &page_icon >- + {%- if not page.meta.preview or not page.meta.preview.logo -%} + material/book-open-page-variant + {%- endif -%} + + - &logo >- + theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg + + - &updated_time >- + {% if page.config.date.updated %} + {{- page.config.date.updated.strftime('%Y-%m-%d') -}} + {% else %} + {{- page.config.date.created.strftime('%Y-%m-%d') -}} + {% endif %} + + - &author_mastodon >- + {%- if page.authors[0].mastodon -%} + @{{- page.authors[0].mastodon.username -}}@{{- page.authors[0].mastodon.instance -}} + {%- else -%} + {{- "@privacyguides@neat.computer" -}} + {%- endif -%} + + - &author_twitter >- + {%- if page.authors[0].twitter -%} + @{{- page.authors[0].twitter -}} + {%- else -%} + {{- "@privacy_guides" -}} + {%- endif -%} + +# Meta tags +tags: + # Open Graph + og:type: article + og:title: *page_title + og:description: *page_description + og:image: "{{ image.url }}" + og:image:type: "{{ image.type }}" + og:image:width: "{{ image.width }}" + og:image:height: "{{ image.height }}" + og:url: "{{ page.canonical_url }}" + + # Blog + article:published_time: "{{ page.config.date.created.strftime('%Y-%m-%d') }}" + article:modified_time: *updated_time + article:section: "{{ page.categories[0].title }}" + article:author: "https://www.privacyguides.org/articles/{{ page.authors[0].url }}" + + # Mastodon + fediverse:creator: *author_mastodon + + # Twitter + twitter:site: "@privacy_guides" + twitter:creator: *author_twitter + twitter:card: summary_large_image + twitter:title: *page_title + twitter:description: *page_description + twitter:image: "{{ image.url }}" + +# ----------------------------------------------------------------------------- +# Specification +# ----------------------------------------------------------------------------- + +# Card size and layers +size: { width: 1200, height: 630 } +layers: + # Background + - background: + color: "#FFD06F" + + - size: { width: 512, height: 512 } + offset: { x: 600, y: 59 } + background: + image: *page_logo + + - background: + color: "#FFD06F99" + + # Page icon + - size: { width: 630, height: 630 } + offset: { x: 570, y: 0 } + icon: + value: *page_icon + color: "#00000033" + + # Logo + - size: { width: 64, height: 64 } + offset: { x: 64, y: 64 } + background: + image: *logo + + # Site name + - size: { width: 768, height: 42 } + offset: { x: 160, y: 78 } + typography: + content: *site_name + color: "#2d2d2d" + font: + family: Bagnard + style: Bold + + # Page title + - size: { width: 864, height: 256 } + offset: { x: 62, y: 192 } + typography: + content: *page_title + align: start + color: "#2d2d2d" + line: + amount: 3 + height: 1.5 + font: + family: Bagnard + style: Bold diff --git a/theme/layouts/home.yml b/theme/layouts/home.yml index d0e29bf9..ab2223fa 100644 --- a/theme/layouts/home.yml +++ b/theme/layouts/home.yml @@ -44,9 +44,12 @@ tags: og:image:height: "{{ image.height }}" og:url: "{{ page.canonical_url }}" + # Mastodon + fediverse:creator: "@privacyguides@neat.computer" + # Twitter twitter:card: summary_large_image - twitter.title: *page_title_with_site_name + twitter:title: *page_title_with_site_name twitter:description: *page_description twitter:image: "{{ image.url }}" diff --git a/theme/layouts/page.yml b/theme/layouts/page.yml index 627bb3c5..a59198bf 100644 --- a/theme/layouts/page.yml +++ b/theme/layouts/page.yml @@ -79,9 +79,13 @@ tags: og:image:height: "{{ image.height }}" og:url: "{{ page.canonical_url }}" + # Mastodon + fediverse:creator: "@privacyguides@neat.computer" + # Twitter + twitter:site: "@privacy_guides" twitter:card: summary_large_image - twitter.title: *page_title_with_site_name + twitter:title: *page_title_with_site_name twitter:description: *page_description twitter:image: "{{ image.url }}" diff --git a/theme/layouts/pride.yml b/theme/layouts/pride.yml index abe8e3b7..461c0140 100644 --- a/theme/layouts/pride.yml +++ b/theme/layouts/pride.yml @@ -66,7 +66,7 @@ tags: # Twitter twitter:card: summary_large_image - twitter.title: *page_title_with_site_name + twitter:title: *page_title_with_site_name twitter:description: *page_description twitter:image: "{{ image.url }}" diff --git a/theme/main.html b/theme/main.html index 82455d73..443f389f 100644 --- a/theme/main.html +++ b/theme/main.html @@ -26,11 +26,11 @@ {% if page.meta and page.meta.description %} - {% elif config.site_description %} - {% endif %} {% if page.meta and page.meta.author %} + {% elif page.authors %} + {% elif config.site_author %} {% endif %} @@ -83,12 +83,8 @@ {% endif %} - - {% if config.extra.context == "production" %} - - {% elif config.extra.deploy %} - + {% endif %} {% if page and page.meta and page.meta.schema %}