Een greep uit crypto: Keys

Keys (sleutels) worden o.a. gebruikt voor versleuteling (encryption) en ondertekening (signatures) van data. Ze worden vaak in paren gemaakt. Vaak wordt er gebruik gemaakt van “asymmetric keys”.

Asymmetrisch houdt in dat:

  • Data beveiligd met de private key, kan worden uitgelezen m.b.v. de public key.
  • Data beveiligd met de public key, kan worden uitgelezen m.b.v. de private key.

De tegenpool, symmetrisch:

  • Data kan worden beveiligd middels elke willekeurige key.
  • Data kan worden uitgelezen middels elke willekeurige key.

Symmetrisch heeft een bepaald nut, maar asymmetrisch biedt veel meer belangrijke voordelen.
Asymmetrisch wordt gebruikt voor o.a. SSL-certificaten, PGP en DNSSEC.

Type keys

Je kunt op verschillende manieren een key maken. De meest bekende standaarden die op dit moment actief gebruikt worden zijn RSA en Elliptic Curve.

  • RSA is vrij oud en robuust. Iedereen ondersteund het.
  • Elliptic Curve (EC) is vrij nieuw en modern. Het biedt veel voordelen t.o.v. RSA, maar wordt nog niet door alles ondersteund.

Digitaal ondertekenen

Bij ondertekening (signatures) wordt in de simpelste vorm een tekstuele waarde bepaald van de te versturen informatie. Deze waarde is vrijwel onmogelijk om na te bootsen. Als er ook maar één karakter in de originele informatie veranderd wordt, veranderd deze waarde al.

Deze waardes noemen we hashes. Deze worden berekend middels algoritmen zoals:

  • MD5
  • SHA-1
  • SHA-256
  • etc.

Zo’n zogenaamde “checksum” encrypt je vervolgens met je private key. Deze stuur je vervolgens met de informatie mee naar de ontvanger.

Ondertekening valideren

De ontvanger:

  • Gebruikt de public key om de checksum in de signature te decrypten.
  • Gebruikt hetzelfde hashing-algoritme om zelf een berekening op de informatie te doen.
  • Vergelijkt de ontvangen waarde met de zelfberekende waarde.

Komen deze overeen, dan bewijs je daarmee dat:

  1. De informatie die ontvangen is niet veranderd sinds de ondertekening met de private key.
  2. Degene die jou de informatie verstuurd heeft, controle heeft over de private key.

Bij PGP

  • Waar de public key te vinden valt:
    • Geüpload naar een keyserver waar de verzender deze kan vinden.
    • Direct van de ontvanger verkregen.
  • Wat voor soort informatie beveilig je zoal:
    • E-mail
    • Bestand
  • Transport:
    • Elk willekeurig medium.

Bij DNSSEC

  • Waar de public key te vinden valt:
    • In de DNS bij de hoger gelegen instantie (b.v. SIDN voor finalx.nl).
  • Wat voor soort informatie beveilig je zoal:
    • Signatures van DNS-records.
  • Transport:
    • DNS.

Bij SSL-certificaten

  • Waar de public key te vinden valt:
    • In het certificaat.
  • Wat voor soort informatie beveilig je zoal:
    • Alle informatie in het certificaat.
  • Transport:
    • HTTP
    • E-mail (SMTP, IMAP)
    • Meer.
Reload?