fido2-the-smartphone

Mockup Website for FIDO2 Platform and Roaming Authentication on Smartphones

https://github.com/seemoo-lab/fido2-the-smartphone

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.3%) to scientific vocabulary
Last synced: 8 months ago · JSON representation ·

Repository

Mockup Website for FIDO2 Platform and Roaming Authentication on Smartphones

Basic Info
  • Host: GitHub
  • Owner: seemoo-lab
  • License: apache-2.0
  • Language: Vue
  • Default Branch: main
  • Homepage:
  • Size: 2.8 MB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created about 3 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

FIDO2 The Smartphone

This is a mockup website that allows you to explore FIDO2 platform and roaming authentication on a smartphone.

In our lab study, we used a mockup website titled "KUUGEL" as described in our paper. You can change the mockup website's title, text and appearance to suit your own needs.

Installation

We use a local network disconnected from the Internet to connect all involved parties. The network consists of a webserver hosting the website, a DNS server, a wireless router, and an Apple iPhone. This installation guide assumes you are hosting the webserver and DNS server on a Macboook.

Disclaimer

We have only tested the mockup website on an Apple iPhone SE (2nd generation) running iOS 14.5.1 and Safari 14.1. It has only been tested using a Yubico YubiKey 5C NFC and Apple Touch ID for the Web. The webserver and DNS server have been hosted on an Apple Macbook Pro (2019) running macOS Catalina (10.15.7). We have used a Raspberry Pi 3 running RaspAP as the wireless router.

Install the DNS Server

Two conditions require the presence of a DNS server in the local network: - Secure context: WebAuthn requires an HTTPS connection. - Readable URL: The URL field should contain a readable domain instead of an IP address, and, the client would be unable to locate the local IP address without a DNS server.

Therefore, we set up a DNS server using Dnsmasq with the sole purpose of resolving the domain to the webserver’s IP address.

Install Dnsmasq. On macOS, this can be done using Homebrew. bash brew install dnsmasq

The redirection is achieved by adding one line to the configuration file of Dnsmasq. Add this line to /usr/local/etc/dnsmasq.conf (<the-domain> is the domain name and <server-ip> is the web server's IP address): address=/<the-domain>/<server-ip>

Next, we start the DNS server using bash sudo dnsmasq

Go to the Macbook's advanced network settings, select the DNS tab and add the following two DNS servers (<router-ip> is the router's IP address): 127.0.0.1 <router-ip>

Finally, go to the iPhone's DNS settings by navigating to Settings -> WiFi -> Info icon of the connected network -> DNS and set <server-ip> as the DNS server.

Install Website Certificates

The website uses the Web Authentication (WebAuthn) API for FIDO2 authentication. WebAuthn requires a secure context, so we host the website with HTTPS. As a requirement for the HTTPS connection, a trusted third party must sign the website certificate. Therefore, we establish a certification chain consisting of two certificates: The server certificate is used to host the website. The corresponding CA certificate is marked as trustworthy on the iPhone, thus establishing a secure context and ensuring support for the WebAuthn API.

First, we install mkcert. bash brew install mkcert Next, we install the local CA certificate that is used to sign the certificate for our website (<the-domain> is the domain name). You will be asked to run this as superuser. mkcert -install <the-domain>

Find the local CA certificate in the Macbook's Keychain Acces (search "mkcert") and export it. Copy the CA certificate to the iPhone. This can easily be done with Airdrop. Follow the installation instructions on the iPhone. Go to the iPhone's settings and navigate to Settings -> General -> Profile. Select the CA certificate and install it. Finally, navigate to Settings -> General -> About -> Certificate Trust Settings and enable full trust for the CA certificate.

Host Website

First, install all dependencies. bash npm install Note that you might need to run the command with the "--legacy-peer-deps" option.

Compile and deploy the website. The website is developed with Vue.js, and we use the runtime environment provided by Node.js to make the website accessible within the local network. Although this feature is only recommended for development, it is sufficient for our means. bash npm run serve

Explore FIDO2 on the iPhone

Delete all cached website data from the iPhone and open https://<the-domain>:9090 in Safari (<the-domain> is the domain name).

Our Paper

  • Leon Würsching', Florentin Putz', Steffen Haesler, Matthias Hollick. FIDO2 the Rescue? Platform vs. Roaming Authentication on Smartphones Proceedings of the Conference on Human Factors in Computing Systems (CHI)), April 23–28, 2023, Hamburg, Germany. (paper, dataset)

Authors

('=equal contribution)

Acknowledgements

This work has been co-funded by the LOEWE initiative (Hesse, Germany) within the emergenCITY center and the Federal Ministry of Education and Research of Germany in the project Open6GHub (grant number: 16KISK014).

How To Cite

Cite This Repository

bibtex @software{Wuersching_FIDO2_The_Smartphone_2023, author = {W\"ursching, Leon and Putz, Florentin and Haesler, Steffen and Hollick, Matthias}, license = {Apache-2.0}, month = {1}, title = {{FIDO2 The Smartphone: Mockup Website for Platform and Roaming Authentication on Smartphones}}, url = {https://github.com/seemoo-lab/fido2-the-smartphone}, version = {v1}, year = {2023} }

Cite Our Paper

bibtex @inproceedings{Wuersching_FIDO2_The_Rescue_2023, author = {W\"ursching, Leon and Putz, Florentin and Haesler, Steffen and Hollick, Matthias}, title = {FIDO2 the Rescue? Platform vs. Roaming Authentication on Smartphones}, booktitle = {Proceedings of the 2023 CHI Conference on Human Factors in Computing Systems}, year = {2023}, doi = {10.1145/3544548.3580993}, }

Owner

  • Name: Secure Mobile Networking Lab
  • Login: seemoo-lab
  • Kind: organization
  • Location: Darmstadt, Germany

Citation (CITATION.cff)

cff-version: 1.2.0
title: >-
  FIDO2 The Smartphone: Mockup Website for Platform and
  Roaming Authentication on Smartphones
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Leon
    family-names: W\"ursching
    email: lwuersching@seemoo.tu-darmstadt.de
    affiliation: Technical University of Darmstadt
    orcid: 'https://orcid.org/0000-0003-2648-6507'
  - given-names: Florentin
    family-names: Putz
    email: fputz@seemoo.tu-darmstadt.de
    affiliation: Technical University of Darmstadt
    orcid: 'https://orcid.org/0000-0003-3122-7315'
  - given-names: Steffen
    family-names: Haesler
    email: haesler@peasec.tu-darmstadt.de
    affiliation: Technical University of Darmstadt
    orcid: 'https://orcid.org/0000-0002-6808-0487'
  - given-names: Matthias
    family-names: Hollick
    email: mhollick@seemoo.tu-darmstadt.de
    affiliation: Technical University of Darmstadt
    orcid: 'https://orcid.org/0000-0002-9163-5989'
repository-code: 'https://github.com/seemoo-lab/fido2-the-smartphone'
repository-artifact: 'https://zenodo.org/record/7572697#.Y9fu4y8w0eY'
license: Apache-2.0
version: v1
date-released: '2023-01-30'

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

package.json npm
  • @vue/cli-plugin-babel ~4.5.0 development
  • @vue/cli-plugin-eslint ~4.5.0 development
  • @vue/cli-plugin-router ~4.5.0 development
  • @vue/cli-service ~4.5.0 development
  • @vue/compiler-sfc ^3.0.0 development
  • @vue/eslint-config-prettier ^6.0.0 development
  • babel-eslint ^10.1.0 development
  • eslint ^6.7.2 development
  • eslint-plugin-prettier ^3.3.1 development
  • eslint-plugin-vue ^7.0.0 development
  • node-sass ^6.0.1 development
  • prettier ^2.2.1 development
  • sass-loader ^12.1.0 development
  • core-js ^3.6.5
  • primeflex ^2.0.0
  • primeicons ^4.1.0
  • primevue ^3.5.1
  • vue ^3.0.0
  • vue-router ^4.0.0-0