diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml deleted file mode 100644 index e31d81c..0000000 --- a/.github/workflows/jekyll-gh-pages.yml +++ /dev/null @@ -1,51 +0,0 @@ -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll with GitHub Pages dependencies preinstalled - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - # Build job - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Pages - uses: actions/configure-pages@v5 - - name: Build with Jekyll - uses: actions/jekyll-build-pages@v1 - with: - source: ./ - destination: ./_site - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0e0fcb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea +themes +public +resources diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..affee54 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/hugo-whisper-theme"] + path = themes/hugo-whisper-theme + url = https://github.com/zerostaticthemes/hugo-whisper-theme.git diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/archetypes/docs.md b/archetypes/docs.md new file mode 100644 index 0000000..68a01b5 --- /dev/null +++ b/archetypes/docs.md @@ -0,0 +1,10 @@ +--- +title: "{{ replace .TranslationBaseName "-" " " | title }}" +date: {{ .Date }} +draft: false +weight: 100 +--- + +Lorem markdownum aequalis strigis. Saetigeri iubeas, vultu huic alvum nondum +de obside ut laniavit arbor palmis, cum quin. Rupes vetat videndo, armigerae +crimen habet Priamum nec. diff --git a/assets/scss/_bootstrap-variables.scss b/assets/scss/_bootstrap-variables.scss new file mode 100755 index 0000000..3b2439f --- /dev/null +++ b/assets/scss/_bootstrap-variables.scss @@ -0,0 +1,65 @@ +$grid-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1300px, +); + +$container-max-widths: ( + sm: 540px, + md: 720px, + lg: 960px, + xl: 1140px, +); + +$grid-gutter-width: 20px; + +$primary: #1de9b6 !default; +$secondary: #ffca28 !default; +$black: #212529 !default; + +// Links +$link-color: $primary; +$link-decoration: none; +$link-hover-color: lighten($primary, 20%); +$link-hover-decoration: underline; + +// Fonts +$font-size-base: 1rem; // Assumes the browser default, typically `16px` +$font-family-base: 'Roboto', Arial, sans-serif, -apple-system; +$font-family-serif: 'Lora', Arial, sans-serif, -apple-system; +$font-family-mono: 'Roboto Mono', monospace; +$line-height-base: 1.4; + +// Headings & Paragraph +$paragraph-color: #333; + +$spacer: 1rem; +$spacers: (); +$spacers: map-merge( + ( + 0: 0, + 1: 10px, + 2: 20px, + 3: 30px, + 4: 40px, + 5: 50px, + 6: 60px, + 7: 70px, + 8: 80px, + 9: 90px, + 10: 100px, + 11: 110px, + 12: 120px, + 13: 130px, + 14: 140px, + 15: 150px, + 16: 160px, + 17: 170px, + 18: 180px, + 19: 190px, + 20: 200px, + ), + $spacers +); diff --git a/assets/scss/pages/_home.scss b/assets/scss/pages/_home.scss new file mode 100644 index 0000000..7c45f9f --- /dev/null +++ b/assets/scss/pages/_home.scss @@ -0,0 +1,19 @@ +.page-home { + text-align: left; + .title { + font-weight: lighter; + font-family: $font-family-base; + } + p { + margin: 0 auto; + font-size: 1.2rem; + font-weight: lighter; + margin-bottom: 40px; + @include media-breakpoint-up(md) { + width: 80%; + } + @include media-breakpoint-up(lg) { + width: 100%; + } + } +} diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..1231090 --- /dev/null +++ b/config.toml @@ -0,0 +1,52 @@ +baseURL = "/" +theme = "hugo-whisper-theme" +languageCode = "en-us" +title = "Privacy-Enhancing Technologies (PETS)" + +pygmentsCodeFences = true +pygmentsCodefencesGuessSyntax = true +pygmentsUseClasses = true + +[module] + [module.hugoVersion] + extended = true + min = "0.55.0" + +# Controls how many words are printed in the content summary on the docs homepage. +# See https://gohugo.io/content-management/summaries/ +summaryLength = 30 + +[[menu.main]] + name = "Home" + url = "/" + weight = 1 + +[[menu.main]] + name = "Material" + url = "/material/" + weight = 2 + +[params] + google_analytics_id="" + homepage_button_link = '/material' + homepage_button_text = 'Material' + homepage_intro = 'Privacy-Enhancing Techologies lecture material.' + homepage_image = '' + + ## You can enable to add anchor links to header elements + # enable_anchor_link = true + + [params.homepage_meta_tags] + meta_description = "Lecture material for Privacy-Enhancing Technologies (PETS)." + meta_og_title = "Privacy-Enhancing Technologies (PETS)" + meta_og_type = "website" + meta_og_image = "https://avatars.githubusercontent.com/u/182622536?" + meta_og_description = "Lecture notes and challenges for Privacy-Enhancing Technologies." + meta_twitter_card = "summary" + + [params.logo] + mobile = "/images/logo-mobile.svg" + standard = "/images/logo.svg" + + [params.footer] + copyright_text = 'Created with Hugo.' diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..488f16c --- /dev/null +++ b/content/_index.md @@ -0,0 +1,15 @@ +--- +title: 'Privacy-Enhancing Technologies' +date: 2024-09-24 +--- + + +Privacy-Enhancing Technologies (`PETS`) was a lecture by [Markus Donko-Huber](), [Martin Schmiedecker](), [Wilfried Mayer]() at [TU Wien](https://tiss.tuwien.ac.at/course/courseDetails.xhtml?dswid=4760&dsrid=60&courseNr=194144) from `2014 - 2023`. +In this lecture, students explored the fundamental concepts and practical applications of privacy-enhancing technologies. The course was designed to achieve the following learning goals. + +1. Name **basic privacy-enhancing technologies:** Students became familiar with essential tools and methods used to protect privacy in digital environments. +2. **Apply theoretical knowledge to practical assignments:** Through hands-on exercises, students implemented privacy-enhancing technologies in real-world scenarios. +3. Understand the **pros and cons of different privacy-enhancing methods:** The lecture covered various techniques, highlighting their advantages and limitations to help students make informed decisions. +4. Analyze current internet services regarding privacy and suggest **effective technical protection measures:** Students critically evaluated existing online services and proposed robust privacy solutions. + +All material is licensed under: ... diff --git a/content/material/_index.md b/content/material/_index.md new file mode 100644 index 0000000..55e3e19 --- /dev/null +++ b/content/material/_index.md @@ -0,0 +1,8 @@ +--- +title: 'Lecture Material' +date: 2018-11-28T15:14:39+10:00 +weight: 1 +--- + + + diff --git a/content/material/challenges/index.md b/content/material/challenges/index.md new file mode 100644 index 0000000..9a54938 --- /dev/null +++ b/content/material/challenges/index.md @@ -0,0 +1,8 @@ +--- +title: 'PETS Challenges' +date: 2024-09-24 +weight: 3 +--- + +## Challenge Source +TBA \ No newline at end of file diff --git a/content/material/slides/index.md b/content/material/slides/index.md new file mode 100644 index 0000000..7f897c9 --- /dev/null +++ b/content/material/slides/index.md @@ -0,0 +1,28 @@ +--- +title: 'PETS Slides' +date: 2024-09-24 +weight: 2 +--- + +## Slides +#### [01_Introduction.pdf](/slides/01_Introduction.pdf) +Introduction and motivation for PET + +#### [02_Anonymity.pdf](/slides/02_Anonymity.pdf) +Systems for online anonymity (remailer, dining cryptographers, mix networks) + +#### [03_Censorship.pdf](/slides/03_Censorship.pdf) +Internet censorship (technologies, measurements, circumvention, Great Firewall of China) + +#### [04_Messaging.pdf](/slides/04_Messaging.pdf) +Secure Messaging (PGP, OTR, ZRTP, mobile messaging, Signal) + +#### [05_TLS.pdf](/slides/05_TLS.pdf) +Transport Layer Security (TLS, PKI, Implementations, Crypto, HTTPS, attacks, incidents, HSTS, CT, DNS over TLS/HTTPS) + +#### [06_Tor.pdf](/slides/06_Tor.pdf) +Tor (onion routing, functionality, onion services, attacks, usage) + +#### [07_WebPrivacy.pdf](/slides/07_WebPrivacy.pdf) +Web Privacy (web tracking, fingerprinting, anti tracking) + diff --git a/data/social.json b/data/social.json new file mode 100644 index 0000000..5235c07 --- /dev/null +++ b/data/social.json @@ -0,0 +1,7 @@ +[ + { + "name": "Github", + "link": "https://github.com/pets-lecture", + "image": "images/social/github.svg" + } +] diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..b8d4c59 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,13 @@ +{{ define "header_css" }}{{ end }} +{{ define "body_classes" }}{{ end }} +{{ define "header_classes" }}{{ end }} + +{{ define "main" }} +
+
+
+

404 Page Not Found

+
+
+
+{{ end }} \ No newline at end of file diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..474acbe --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,73 @@ + + + + + + + {{ block "title" . }}{{ .Title }} - {{ .Site.Title }}{{ end }} + + {{ block "meta_tags" . }}{{end}} + + + {{ if hugo.IsServer }} + {{ $style := resources.Get "scss/style.scss" | toCSS (dict "targetPath" "css/style.css" "enableSourceMap" true) }} + + {{ else }} + {{ $style := resources.Get "scss/style.scss" | toCSS (dict "targetPath" "css/style.css" "enableSourceMap" false) }} + + {{ end }} + + {{ block "header_css" . }}{{ end }} + + + + + {{ partial "main-menu-mobile.html" . }} +
+ {{ partial "header.html" . }} + + {{ $displaySidebar := false }} + {{ range .Site.Params.mainSections }} + {{ if eq $.Section . }} + {{ $displaySidebar = true }} + {{ end }} + {{ end }} + + {{ if $displaySidebar }} +
+
+
+ +
+
+ {{ block "main" . }} + {{ end }} +
+
+
+ {{ else }} + {{ block "main" . }} + {{ end }} + {{ end}} +
+ + {{ partial "sub-footer.html" . }} + + {{ $scripts := resources.Get "js/scripts.js" }} + + {{ block "footer_js" . }} + {{ end }} + + {{ if hugo.IsServer }} + + {{ else }} + + {{ end }} + + {{ partial "google-analytics.html" . }} + + + + diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..180e5ad --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,17 @@ +{{ define "header_css" }}{{ end }} +{{ define "body_classes" }}page-default-list{{ end }} +{{ define "header_classes" }}{{ end }} + +{{ define "main" }} + +Overview +

{{ .Title }}

+
+ {{ .Content }} +
+ +{{ range.Pages }} +{{ .Render "summary" }} +{{ end }} + +{{ end }} \ No newline at end of file diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..67d1129 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,11 @@ +{{ define "header_css" }}{{ end }} +{{ define "body_classes" }}page-default-single{{ end }} +{{ define "header_classes" }}{{ end }} + +{{ define "main" }} +

{{.Title}}

+
+ {{.Content}} +
+ +{{ end }} \ No newline at end of file diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html new file mode 100644 index 0000000..1231103 --- /dev/null +++ b/layouts/_default/summary.html @@ -0,0 +1,7 @@ +
+ {{ if .Params.image }} + {{ .Title }} + {{ end}} +

{{ .Title }}

+

{{ .Summary }}

+
diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..fd18df5 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,53 @@ +{{ define "title" }}{{ .Site.Title }}{{ end}} +{{ define "header_css" }}{{ end }} +{{ define "body_classes" }}page-home{{ end }} +{{ define "header_classes" }}{{ end }} + +{{ define "meta_tags" }} + + + + + + + + + +{{ end }} + +{{ define "main" }} +
+
+
+
+

{{ .Title | default .Site.Title }}

+
+ {{ if .Content }} + {{ .Content }} + {{ else }} +

{{ .Site.Params.homepage_intro }}

+ {{ end }} +
+ + {{ .Site.Params.homepage_button_text }} + +
+
+
+
+ +{{ if .Site.Params.homepage_image }} +
+
+
+
+
+
+
+
+{{ end }} + +{{ end }} + +{{ define "footer_js" }} +{{ end }} diff --git a/layouts/partials/google-analytics.html b/layouts/partials/google-analytics.html new file mode 100644 index 0000000..f4d7d73 --- /dev/null +++ b/layouts/partials/google-analytics.html @@ -0,0 +1,26 @@ +{{- if hugo.IsServer -}} + +{{ else }} + {{ $gid := (getenv "HUGO_GOOGLE_ANALYTICS_ID") }} + {{ if $gid }} + + + + {{ else }} + {{ if .Site.Params.google_analytics_id }} + + + + {{ end }} + {{ end}} +{{ end }} \ No newline at end of file diff --git a/layouts/partials/hamburger.html b/layouts/partials/hamburger.html new file mode 100644 index 0000000..a6d7de9 --- /dev/null +++ b/layouts/partials/hamburger.html @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..2f59dba --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,12 @@ +
+
+ +
+ +
+ {{ partial "main-menu.html" . }} + {{ partial "hamburger.html" . }} +
+
diff --git a/layouts/partials/main-menu-mobile.html b/layouts/partials/main-menu-mobile.html new file mode 100644 index 0000000..5211ea7 --- /dev/null +++ b/layouts/partials/main-menu-mobile.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/layouts/partials/main-menu.html b/layouts/partials/main-menu.html new file mode 100644 index 0000000..7ea303c --- /dev/null +++ b/layouts/partials/main-menu.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html new file mode 100644 index 0000000..dd1404d --- /dev/null +++ b/layouts/partials/sidebar.html @@ -0,0 +1,11 @@ +{{$currentNode := .}} +
+

{{ .Section | humanize }}

+ +
diff --git a/layouts/partials/social.html b/layouts/partials/social.html new file mode 100644 index 0000000..06a2cfd --- /dev/null +++ b/layouts/partials/social.html @@ -0,0 +1,7 @@ +{{ if .Site.Data.social }} +
+ {{ range .Site.Data.social }} + {{ .name }} + {{ end }} +
+{{ end }} \ No newline at end of file diff --git a/layouts/partials/sub-footer.html b/layouts/partials/sub-footer.html new file mode 100644 index 0000000..3e56837 --- /dev/null +++ b/layouts/partials/sub-footer.html @@ -0,0 +1,16 @@ + diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..84c7a03 Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..1cc4cf8 Binary files /dev/null and b/static/favicon.png differ diff --git a/static/images/logo-mobile.svg b/static/images/logo-mobile.svg new file mode 100644 index 0000000..af4ad2c --- /dev/null +++ b/static/images/logo-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/logo.svg b/static/images/logo.svg new file mode 100644 index 0000000..af4ad2c --- /dev/null +++ b/static/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/social/github.svg b/static/images/social/github.svg new file mode 100644 index 0000000..99f29bb --- /dev/null +++ b/static/images/social/github.svg @@ -0,0 +1 @@ +GitHub icon \ No newline at end of file diff --git a/static/images/social/twitter.svg b/static/images/social/twitter.svg new file mode 100644 index 0000000..eafc4ae --- /dev/null +++ b/static/images/social/twitter.svg @@ -0,0 +1 @@ +Twitter icon \ No newline at end of file diff --git a/static/images/terminal.gif b/static/images/terminal.gif new file mode 100644 index 0000000..c9ba0b2 Binary files /dev/null and b/static/images/terminal.gif differ diff --git a/static/slides/01_Introduction.pdf b/static/slides/01_Introduction.pdf new file mode 100644 index 0000000..f898d1a Binary files /dev/null and b/static/slides/01_Introduction.pdf differ diff --git a/static/slides/02_Anonymity.pdf b/static/slides/02_Anonymity.pdf new file mode 100644 index 0000000..c409a9e Binary files /dev/null and b/static/slides/02_Anonymity.pdf differ diff --git a/static/slides/03_Censorship.pdf b/static/slides/03_Censorship.pdf new file mode 100644 index 0000000..6417cb5 Binary files /dev/null and b/static/slides/03_Censorship.pdf differ diff --git a/static/slides/04_Messaging.pdf b/static/slides/04_Messaging.pdf new file mode 100644 index 0000000..4b35dde Binary files /dev/null and b/static/slides/04_Messaging.pdf differ diff --git a/static/slides/05_TLS.pdf b/static/slides/05_TLS.pdf new file mode 100644 index 0000000..93d58e4 Binary files /dev/null and b/static/slides/05_TLS.pdf differ diff --git a/static/slides/06_Tor.pdf b/static/slides/06_Tor.pdf new file mode 100644 index 0000000..e5bd37c Binary files /dev/null and b/static/slides/06_Tor.pdf differ diff --git a/static/slides/07_WebPrivacy.pdf b/static/slides/07_WebPrivacy.pdf new file mode 100644 index 0000000..04abd04 Binary files /dev/null and b/static/slides/07_WebPrivacy.pdf differ diff --git a/static/slides/08_VPNs.pdf b/static/slides/08_VPNs.pdf new file mode 100644 index 0000000..7859eee Binary files /dev/null and b/static/slides/08_VPNs.pdf differ diff --git a/themes/hugo-whisper-theme b/themes/hugo-whisper-theme new file mode 160000 index 0000000..511dcd7 --- /dev/null +++ b/themes/hugo-whisper-theme @@ -0,0 +1 @@ +Subproject commit 511dcd7dca626d1f6440e45bc4f6ee35be7b2206