← Zpět na obsah

Kapitola 27: Digitální identita a eGovernment

Digitální identita - kdo jsi v online světě
Digitální identita - kdo jsi v online světě

1. Úvod: Kdo jsi na internetu?

Když přijdeš do školy, všichni vědí, kdo jsi. Když chceš ukázat, kolik ti je let, ukážeš občanku. Ale jak dokážeš, kdo jsi, na internetu? Od toho je tu digitální identita. Je to jako tvoje digitální občanka, která ti umožňuje bezpečně komunikovat s úřady, školou nebo bankou, aniž bys musel/a vstát ze židle.

2. Co je to digitální identita?

Digitální identita je soubor informací o tobě v digitálním světě, které prokazují, že jsi to opravdu ty. Není to jen tvůj profil na sociální síti. Je to oficiální způsob, jak se "podepsat" a prokázat svou totožnost online.

Definice: Digitální identita

Digitální identita je ověřený způsob, jak prokázat svou totožnost v online prostředí. Umožňuje ti bezpečně přistupovat k online službám státu i některých firem.

Proč je digitální identita důležitá?

Díky ní můžeš spoustu věcí zařídit z pohodlí domova.

Příklad: Pomocí digitální identity si můžeš online zkontrolovat své známky ve školním systému, podat daňové přiznání nebo si zažádat o nový řidičský průkaz.

3. Elektronický podpis: Tvůj podpis v digitálním světě

Když podepisuješ smlouvu na papíře, použiješ své pero. Ale jak podepsat digitální dokument? K tomu slouží elektronický podpis.

Definice: Elektronický podpis

Elektronický podpis je digitální obdoba tvého vlastnoručního podpisu. Potvrzuje, že s dokumentem souhlasíš a že ho od chvíle podepsání nikdo nezměnil.

4. eGovernment: Úřad v tvém obýváku

eGovernment (čti "í-government") je zkratka pro "elektronickou vládu". Znamená to, že státní úřady nabízejí své služby online.

eGovernment - úřad z domova
eGovernment - úřad z domova

Definice: eGovernment

eGovernment je využívání digitálních technologií pro komunikaci mezi občany a státními úřady.

Státní informační systémy

Aby eGovernment fungoval, existují různé státní informační systémy. Jsou to webové portály, kde můžeš vyřizovat různé věci.

Příklad: Portál občana
Je to brána ke službám státu. Po přihlášení pomocí digitální identity si zde můžeš například:

5. Bezpečnost na prvním místě!

Tvoje digitální identita je velmi cenná. Kdyby se k ní dostal někdo cizí, mohl by se za tebe vydávat a napáchat velké škody. Proto je důležité ji chránit!

Co dělat, když se něco nezdá?

Pokud ti přijde podezřelá zpráva, která se tváří jako od úřadu, nebo se ti nějaká stránka nezdá, je to přesně ten moment, kdy je potřeba požádat o pomoc.

Příklad: Přijde ti SMS: "Vase digitalni identita bude zablokovana. Pro obnoveni kliknete zde a zadejte sve heslo." To je podezřelé! Odkaz může vést na podvodnou stránku. Neklikej na něj a ukaž zprávu rodičům nebo učiteli!

Člověk a digitální svět

Digitální identita a eGovernment nám přináší obrovské zjednodušení života. Zároveň ale kladou vysoké nároky na naši zodpovědnost. Musíme si být vědomi, že naše digitální "já" je stejně důležité jako to skutečné a musíme ho chránit. Učíme se tak být obezřetní, rozpoznávat podezřelé situace a vědět, kdy a koho požádat o pomoc, což jsou klíčové dovednosti pro bezpečný život v moderním světě.

Otázky k zamyšlení

Úkoly pro praxi

  1. Průzkum Portálu občana: Podívej se s rodiči nebo učitelem na webové stránky Portálu občana (gov.cz). Zjisti, jaké tři služby tam můžeš jako občan vyřídit.
  2. Vytvoř si "digitální trezor": Napiš si na papír seznam svých online účtů (e-mail, školní systém, oblíbená hra...). K nim si napiš (vymyšlená, ne skutečná!) silná hesla. Tento papír si schovej na bezpečné místo. Tím si vytvoříš jednoduchou evidenci svých "digitálních klíčů".
  3. Scénář podvodu: Vymysli krátký příběh o tom, jak se podvodník snažil někoho napálit pomocí falešného e-mailu od úřadu. Jak by se měl dotyčný zachovat?

* Rozšíření pro pokročilé

eIDAS a digitální identita v EU

eIDAS je nařízení Evropské unie, které zajišťuje, že elektronické podpisy a digitální identity jsou uznávány ve všech členských státech. Díky tomu můžeš českou elektronickou identitou podepsat dokument v Německu nebo Francii.

Kvalifikovaný elektronický podpis je právně ekvivalentní vlastnoručnímu podpisu. Potřebuješ k němu certifikát od akreditované autority (např. PostSignum, I.CA). Používá se pro smlouvy, úřední podání, faktury.

Bankovní identita (BankID)

BankID je skvělá věc – tvá banka již ověřila tvou totožnost (když jsi si zakládal účet), takže může toto ověření poskytnout i státu a dalším službám.

Jak to funguje: Když se chceš přihlásit na Portál občana, vybereš svou banku. Ta tě přesměruje do svého internetového bankovnictví, kde se přihlásíš jako obvykle. Banka potvrdí tvou identitu a ty jsi přihlášen – bez dalších hesel nebo čteček.

Datové schránky

Datová schránka je elektronická poštovní schránka pro komunikaci se státem. Zprávy doručené do datové schránky mají stejnou právní váhu jako doporučené dopisy.

Důležité: Zpráva se považuje za doručenou okamžikem přihlášení do schránky, nebo automaticky po 10 dnech (fikce doručení) – i když jsi se nepřihlásil! Proto je důležité schránku pravidelně kontrolovat.

OAuth - přihlášení přes třetí stranu
OAuth - přihlášení přes třetí stranu

* Úkoly pro pokročilé

  1. Portál občana: Prozkoumej podrobně Portál občana (gov.cz). Napiš seznam 10 služeb, které lze vyřídit online bez návštěvy úřadu.
  2. Word – Průvodce eGovernmentem: Napiš návod pro seniora "Jak založit datovou schránku". Zahrň: požadavky, kroky, tipy, bezpečnost.
  3. Excel – Srovnání metod přihlášení: Vytvoř tabulku srovnávající metody přihlášení k Portálu občana: eObčanka, NIA ID, BankID. Sloupce: Metoda, Požadavky, Bezpečnost, Výhody, Nevýhody.
  4. Simulace podání: Projdi si (bez odeslání) proces online podání na úřad (např. výpis z rejstříku trestů). Zapiš kroky, které by byly potřeba.

** Rozšíření pro maturitní obory

Podrobně: eIDAS a digitální identita v EU

eIDAS (electronic IDentification, Authentication and trust Services) je nařízení EU z roku 2014, které vytváří jednotný rámec pro elektronickou identifikaci a důvěryhodné služby v celé Evropě.

Vzájemné uznávání

Klíčová myšlenka: digitální identita vydaná v jednom členském státě musí být uznávána ve všech ostatních. Čech se může přihlásit k německé veřejné službě českou eObčankou nebo BankID.

Úrovně důvěry

eIDAS definuje tři úrovně záruky:

Elektronický podpis – právní aspekty

Existují tři typy elektronického podpisu, každý s jinou právní silou:

  1. Prostý elektronický podpis: Například naskenovaný podpis nebo "Podepsáno: Jan Novák" v emailu. Nejnižší právní síla, ale pro běžnou komunikaci stačí.
  2. Zaručený elektronický podpis: Vytvořený pomocí certifikátu, jednoznačně spojený s osobou. Vyšší důvěryhodnost.
  3. Kvalifikovaný elektronický podpis: Nejvyšší úroveň. Certifikát musí být vydán kvalifikovaným poskytovatelem (akreditovaná autorita). Právně ekvivalentní vlastnoručnímu podpisu!

GDPR a tvá práva

GDPR (General Data Protection Regulation) je nařízení EU o ochraně osobních údajů. Dává ti silná práva:

Digitální podpis - ověření autenticity
Digitální podpis - ověření autenticity

** Úkoly pro maturitní obory

  1. GDPR žádost: Napiš vzorovou žádost o přístup k osobním údajům podle GDPR. Použij formální styl, uveď právní základ.
  2. Excel – Srovnání identit: Vytvoř tabulku srovnávající digitální identity v EU: Česko (NIA), Německo (nPA), Estonsko (e-Residency). Sloupce: Země, Název, Technologie, Služby, Rozšíření.
  3. Word – Průvodce el. podpisem: Napiš návod "Jak podepisovat dokumenty elektronicky" (3-4 strany). Zahrň: typy podpisů, nástroje, právní platnost.
  4. PowerPoint – eGovernment v EU: Vytvoř prezentaci "Digitální identita a eGovernment v Evropě" (12-15 snímků). Příklady z různých zemí.
  5. Canva – Infografika: Vytvoř infografiku "Tvá práva podle GDPR" – přehled všech práv s ikonami.

*** Rozšíření pro IT obory

Jako IT specialista budeš implementovat autentizační systémy a pracovat s kryptografickými protokoly. Naučíš se základy digitálních podpisů a OAuth.

Digitální podpis v Pythonu

# pip install cryptography
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization

# Generování klíčového páru (soukromý + veřejný klíč)
soukromy_klic = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
verejny_klic = soukromy_klic.public_key()

# Podepsání dokumentu
dokument = b"Dulezita smlouva - obsah dokumentu"
podpis = soukromy_klic.sign(
    dokument,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)
print(f"Podpis: {podpis.hex()[:64]}...")

# Ověření podpisu (kýmkoli s veřejným klíčem)
try:
    verejny_klic.verify(
        podpis,
        dokument,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )
    print("Podpis je PLATNÝ!")
except:
    print("Podpis je NEPLATNÝ!")
        

OAuth 2.0 - přihlášení přes Google/Facebook

# pip install requests-oauthlib
# Zjednodušený příklad OAuth flow

# 1. Uživatel klikne na "Přihlásit přes Google"
# 2. Přesměrování na Google s parametry:
authorization_url = (
    "https://accounts.google.com/o/oauth2/auth?"
    "client_id=TVOJE_CLIENT_ID&"
    "redirect_uri=http://localhost:5000/callback&"
    "scope=openid email profile&"
    "response_type=code"
)

# 3. Uživatel se přihlásí na Google, potvrdí oprávnění
# 4. Google přesměruje zpět na redirect_uri s kódem

# 5. Výměna kódu za access token (na serveru)
import requests

def vymena_kodu(code):
    response = requests.post(
        "https://oauth2.googleapis.com/token",
        data={
            "code": code,
            "client_id": "TVOJE_CLIENT_ID",
            "client_secret": "TVOJE_CLIENT_SECRET",
            "redirect_uri": "http://localhost:5000/callback",
            "grant_type": "authorization_code"
        }
    )
    return response.json()  # Obsahuje access_token

# 6. Použití access tokenu pro získání dat uživatele
def ziskej_profil(access_token):
    response = requests.get(
        "https://www.googleapis.com/oauth2/v2/userinfo",
        headers={"Authorization": f"Bearer {access_token}"}
    )
    return response.json()  # {email, name, picture, ...}
        

JWT (JSON Web Tokens)

# pip install PyJWT
import jwt
from datetime import datetime, timedelta

TAJNY_KLIC = "super_tajny_klic_pro_podpis"

def vytvor_token(user_id, role):
    """Vytvoří JWT token pro uživatele."""
    payload = {
        "user_id": user_id,
        "role": role,
        "exp": datetime.utcnow() + timedelta(hours=24),  # Expirace
        "iat": datetime.utcnow()  # Čas vytvoření
    }
    token = jwt.encode(payload, TAJNY_KLIC, algorithm="HS256")
    return token

def over_token(token):
    """Ověří a dekóduje JWT token."""
    try:
        payload = jwt.decode(token, TAJNY_KLIC, algorithms=["HS256"])
        return payload
    except jwt.ExpiredSignatureError:
        return {"error": "Token expiroval"}
    except jwt.InvalidTokenError:
        return {"error": "Neplatný token"}

# Použití
token = vytvor_token(123, "admin")
print(f"Token: {token}")

data = over_token(token)
print(f"Dekódováno: {data}")
        

*** Praktické úkoly pro IT obory

  1. Digitální podpis: Implementuj systém pro podepisování a ověřování dokumentů pomocí RSA klíčů.
  2. OAuth aplikace: Vytvoř Flask aplikaci s přihlášením přes Google (zaregistruj se na Google Cloud Console).
  3. JWT autentizace: Implementuj REST API s JWT autentizací - registrace, přihlášení, chráněné endpointy.
  4. GDPR nástroj: Napiš skript, který exportuje všechna data uživatele z databáze do JSON (pro právo na přenositelnost).

*** Rozšíření pro IT obory: Bezpečné API a autentizace

Jako IT specialista budeš navrhovat bezpečné API. Tato sekce pokrývá klíčové koncepty.

Typy autentizace API

Typ Popis Použití
API Key Jednoduchý token v hlavičce Jednoduché API, server-to-server
Basic Auth Username:password (Base64) Pouze s HTTPS!
JWT Podepsaný JSON token Stateless, SPA aplikace
OAuth 2.0 Delegovaná autorizace Přihlášení třetí stranou

Bezpečnostní hlavičky HTTP

# Flask - bezpečnostní hlavičky
from flask import Flask, make_response

app = Flask(__name__)

@app.after_request
def add_security_headers(response):
    # Zabránit clickjacking
    response.headers['X-Frame-Options'] = 'DENY'

    # Zabránit MIME sniffing
    response.headers['X-Content-Type-Options'] = 'nosniff'

    # XSS ochrana
    response.headers['X-XSS-Protection'] = '1; mode=block'

    # Pouze HTTPS
    response.headers['Strict-Transport-Security'] = 'max-age=31536000'

    # Content Security Policy
    response.headers['Content-Security-Policy'] = "default-src 'self'"

    return response
        

Rate Limiting - ochrana před DDoS

# pip install flask-limiter
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(
    get_remote_address,
    app=app,
    default_limits=["100 per day", "10 per minute"]
)

@app.route("/api/data")
@limiter.limit("5 per minute")  # Vlastní limit pro endpoint
def get_data():
    return {"data": "sensitive"}

@app.route("/api/login", methods=["POST"])
@limiter.limit("3 per minute")  # Přísný limit pro login
def login():
    return {"status": "ok"}
        

Input Validace

# pip install pydantic
from pydantic import BaseModel, EmailStr, validator
from typing import Optional

class UserCreate(BaseModel):
    username: str
    email: EmailStr
    password: str
    age: Optional[int] = None

    @validator('username')
    def username_valid(cls, v):
        if len(v) < 3:
            raise ValueError('Username musí mít alespoň 3 znaky')
        if not v.isalnum():
            raise ValueError('Username může obsahovat jen písmena a čísla')
        return v

    @validator('password')
    def password_strong(cls, v):
        if len(v) < 8:
            raise ValueError('Heslo musí mít alespoň 8 znaků')
        if not any(c.isupper() for c in v):
            raise ValueError('Heslo musí obsahovat velké písmeno')
        return v

# Použití
try:
    user = UserCreate(username="jan", email="jan@test.cz", password="Heslo123")
    print(user.dict())
except Exception as e:
    print(f"Chyba: {e}")
        

*** Další úkoly pro IT obory

  1. Secure API: Vytvoř REST API s rate limitingem, CORS, bezpečnostními hlavičkami.
  2. Input sanitization: Implementuj validaci pro registrační formulář (email, heslo, telefon).
  3. API dokumentace: Použij Swagger/OpenAPI pro dokumentaci svého API.
← Zpět na obsah