# How a VPN hides what you do online

> A process map exported from forks.world (https://forks.world). Author: Brian. Source: https://forks.world/p/cmv21nqe7001bl2062w2cwt94
> It describes who does what, in what order, and with which technology. Read the plain-language sections first; the JSON at the end is the exact, complete data.

## Summary

- 12 steps across 1 layer
- Persona: Your internet provider
- Technology / systems: You, VPN server, The website

## How to read this file

- A process is made of **layers**. The main layer is the top level; any step of kind `subprocess` opens a detail layer with its own lanes and steps.
- **Lanes** are either persona (people/roles) or technology (systems). Each step belongs to one lane; `using` lists tools a person uses for that step.
- Step kinds: `start`, `task`, `decision` (its arrows carry the answer as a label), `subprocess`, `end`.

## How a VPN hides what you do online

Lanes:
- You: technology / system (id `you`)
- VPN server: technology / system (id `vpn`)
- The website: technology / system (id `site`)
- Your internet provider: person / role (id `isp`)

Steps, in the order they run:

1. **You turn on the VPN app** [start; You; id `n1`]
   - then Your device sets up an encrypted tunnel to the VPN server
2. **Your device sets up an encrypted tunnel to the VPN server** [task; You; id `n2`]
   - then You visit a website
3. **You visit a website** [task; You; id `n3`]
   - then Your provider sees only scrambled traffic going to the VPN server
4. **Your provider sees only scrambled traffic going to the VPN server** [task; Your internet provider; id `n4`]
   - then The VPN server decrypts it and asks the website for the page
5. **The VPN server decrypts it and asks the website for the page** [task; VPN server; id `n5`]
   - then The website sees the VPN server's address, not yours
6. **The website sees the VPN server's address, not yours** [task; The website; id `n6`]
   - then It sends the page back to the VPN server
7. **It sends the page back to the VPN server** [task; The website; id `n7`]
   - then The VPN encrypts it and sends it through the tunnel
8. **The VPN encrypts it and sends it through the tunnel** [task; VPN server; id `n8`]
   - then The page appears and your provider never saw what it was
9. **The page appears and your provider never saw what it was** [task; You; id `n9`]
   - then Does the VPN keep logs?
10. **Does the VPN keep logs?** [decision; VPN server; id `n10`]
   - if "Yes" go to The VPN company can see everything your provider could; if "No" go to Nobody in the middle has a record
11. **The VPN company can see everything your provider could** [end; VPN server; id `n11`]
12. **Nobody in the middle has a record** [end; VPN server; id `n12`]

```mermaid
flowchart LR
  subgraph l_you["You"]
    n_n1(["You turn on the VPN app"])
    n_n2["Your device sets up an encrypted tunnel to the VPN server"]
    n_n3["You visit a website"]
    n_n9["The page appears and your provider never saw what it was"]
  end
  subgraph l_vpn["VPN server"]
    n_n5["The VPN server decrypts it and asks the website for the page"]
    n_n8["The VPN encrypts it and sends it through the tunnel"]
    n_n10{"Does the VPN keep logs?"}
    n_n11(["The VPN company can see everything your provider could"])
    n_n12(["Nobody in the middle has a record"])
  end
  subgraph l_site["The website"]
    n_n6["The website sees the VPN server's address, not yours"]
    n_n7["It sends the page back to the VPN server"]
  end
  subgraph l_isp["Your internet provider"]
    n_n4["Your provider sees only scrambled traffic going to the VPN server"]
  end
  n_n1 --> n_n2
  n_n2 --> n_n3
  n_n3 --> n_n4
  n_n4 --> n_n5
  n_n5 --> n_n6
  n_n6 --> n_n7
  n_n7 --> n_n8
  n_n8 --> n_n9
  n_n9 --> n_n10
  n_n10 -->|"Yes"| n_n11
  n_n10 -->|"No"| n_n12
```

## Full data (JSON)

```json
{
  "title": "How a VPN hides what you do online",
  "maps": {
    "m_root": {
      "id": "m_root",
      "lanes": [
        {
          "id": "you",
          "name": "You",
          "type": "system"
        },
        {
          "id": "vpn",
          "name": "VPN server",
          "type": "system"
        },
        {
          "id": "site",
          "name": "The website",
          "type": "system"
        },
        {
          "id": "isp",
          "name": "Your internet provider",
          "type": "person"
        }
      ],
      "steps": [
        {
          "id": "n1",
          "kind": "start",
          "lane": "you",
          "next": [
            {
              "to": "n2"
            }
          ],
          "uses": [],
          "label": "You turn on the VPN app"
        },
        {
          "id": "n2",
          "kind": "task",
          "lane": "you",
          "next": [
            {
              "to": "n3"
            }
          ],
          "uses": [],
          "label": "Your device sets up an encrypted tunnel to the VPN server"
        },
        {
          "id": "n3",
          "kind": "task",
          "lane": "you",
          "next": [
            {
              "to": "n4"
            }
          ],
          "uses": [],
          "label": "You visit a website"
        },
        {
          "id": "n4",
          "kind": "task",
          "lane": "isp",
          "next": [
            {
              "to": "n5"
            }
          ],
          "uses": [],
          "label": "Your provider sees only scrambled traffic going to the VPN server"
        },
        {
          "id": "n5",
          "kind": "task",
          "lane": "vpn",
          "next": [
            {
              "to": "n6"
            }
          ],
          "uses": [],
          "label": "The VPN server decrypts it and asks the website for the page"
        },
        {
          "id": "n6",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "n7"
            }
          ],
          "uses": [],
          "label": "The website sees the VPN server's address, not yours"
        },
        {
          "id": "n7",
          "kind": "task",
          "lane": "site",
          "next": [
            {
              "to": "n8"
            }
          ],
          "uses": [],
          "label": "It sends the page back to the VPN server"
        },
        {
          "id": "n8",
          "kind": "task",
          "lane": "vpn",
          "next": [
            {
              "to": "n9"
            }
          ],
          "uses": [],
          "label": "The VPN encrypts it and sends it through the tunnel"
        },
        {
          "id": "n9",
          "kind": "task",
          "lane": "you",
          "next": [
            {
              "to": "n10"
            }
          ],
          "uses": [],
          "label": "The page appears and your provider never saw what it was"
        },
        {
          "id": "n10",
          "kind": "decision",
          "lane": "vpn",
          "next": [
            {
              "to": "n11",
              "label": "Yes"
            },
            {
              "to": "n12",
              "label": "No"
            }
          ],
          "uses": [],
          "label": "Does the VPN keep logs?"
        },
        {
          "id": "n11",
          "kind": "end",
          "lane": "vpn",
          "next": [],
          "uses": [],
          "label": "The VPN company can see everything your provider could"
        },
        {
          "id": "n12",
          "kind": "end",
          "lane": "vpn",
          "next": [],
          "uses": [],
          "label": "Nobody in the middle has a record"
        }
      ],
      "title": "How a VPN hides what you do online",
      "parent": null
    }
  }
}
```
