from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher = Fernet(key)
text = b"Tajna zprava"
encrypted = cipher.encrypt(text)
decrypted = cipher.decrypt(encrypted)
print(encrypted)
print(decrypted)Kryptografie je obor zabývající se:
ochranou informací
utajením obsahu zpráv
ověřením identity
zajištěním integrity dat
Plaintext – původní zpráva
Ciphertext – zašifrovaná zpráva
Šifrování – převod plaintext → ciphertext
Dešifrování – převod ciphertext → plaintext
Klíč – tajná informace určující výsledek šifrování
Algoritmus – matematický postup šifrování
Důvěrnost (Confidentiality)
Integrita (Integrity)
Autentizace (Authentication)
Nepopiratelnost (Non-repudiation)
Stejný klíč pro šifrování i dešifrování
Klíč musí být bezpečně předán oběma stranám

Rychlá
Vhodná pro velké objemy dat
Problém distribuce klíče
Nutnost zabezpečeného kanálu pro předání klíče
Cesarova šifra
AES
DES (historický)
3DES
ChaCha20
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher = Fernet(key)
text = b"Tajna zprava"
encrypted = cipher.encrypt(text)
decrypted = cipher.decrypt(encrypted)
print(encrypted)
print(decrypted)Dvojice klíčů:
veřejný klíč (public key)
soukromý klíč (private key)
Co zašifruje jeden klíč, může dešifrovat pouze druhý
Šifrování komunikace
Digitální podpis
SSL/TLS
Není potřeba sdílet tajný klíč
Umožňuje digitální podpis
Pomalejší než symetrická kryptografie
RSA
ECC (Elliptic Curve Cryptography)
ElGamal
V praxi se používá kombinace:
Asymetrická kryptografie → výměna symetrického klíče
Symetrická kryptografie → samotný přenos dat
Např. HTTPS.
Hashovací funkce:
převádí data libovolné délky
na pevně dlouhý otisk (hash)
Vlastnosti:
deterministická
rychlá
odolná vůči kolizím
jednosměrná
MD5 (nedoporučený)
SHA-1 (nedoporučený)
SHA-256
SHA-3
BLAKE2
import hashlib
text = b"heslo123"
hash_value = hashlib.sha256(text).hexdigest()
print(hash_value)Ukládání hesel
Kontrola integrity souborů
Digitální podpis
Blockchain
Vytvoří se hash dokumentu
Hash se zašifruje soukromým klíčem
Ověření probíhá pomocí veřejného klíče
Zajišťuje:
Autenticitu
Integritu
Nepopiratelnost

Systém důvěry založený na:
certifikačních autoritách (CA)
digitálních certifikátech
Digitální certifikát obsahuje:
veřejný klíč
identitu vlastníka
podpis CA
dobu platnosti

Využívá asymetrickou kryptografii
Po navázání spojení přechází na symetrickou

Distribuovaná databáze
Řetězec bloků
Každý blok obsahuje hash předchozího bloku

Data
Timestamp
Hash předchozího bloku
Změna jednoho bloku změní všechny následující hashe
Nutnost přepočítat celý řetězec
Konsenzuální mechanismy
Kryptoměny
Smart contracts
Decentralizované aplikace
Brute force
Dictionary attack
Man-in-the-middle
Replay attack
Kvantové počítače ohrožují RSA a ECC
Vývoj nových algoritmů odolných vůči kvantovým útokům
Nepoužívat zastaralé algoritmy
Používat dostatečně dlouhé klíče
Používat osvědčené knihovny
Nesnažit se implementovat kryptografii „ručně“
Pravidelně aktualizovat software
Symetrická kryptografie → rychlá, problém distribuce klíče
Asymetrická kryptografie → řeší výměnu klíče
Hash → integrita a jednosměrnost
Digitální podpis → ověření identity
Blockchain → distribuovaná důvěra
Proč se v HTTPS používá hybridní šifrování?
Proč není MD5 bezpečný?
Jak by šel napadnout blockchain?
Jaké jsou výhody ECC oproti RSA?