# ISECU [TOC] ## Leerdoelen Na het doorlopen van deze module kent de student de volgende begrippen en weet ze te plaatsen in bedrijfs context: * Algemene begripsvorming * Doelen en componenten van Informatiebeveiliging * [De CIA triad](#CIA-Driekhoek) * [Primitives, Policies, Products](#Primitives-Policies-Products) * [Randomness, entropie](#Primitives-Policies-Products) * [Symmetrische en asymmetrische encryptie en de toepassing daarvan](#Symmetrische-en-asymmetrische-encryptie) * [Block en stream ciphers](#Block-en-stream-ciphers) * [Transformatie en substitutie](#Substitutie-vs-Transformatie) * [Feistel structuur](#DES-Data-Encryption-Standard) * [Private / public keys](#Private-en-public-keys) * [Difie Hellman](#Diffie-Hellman-key-exchange) * [Hashing, collisions](#Hashing-functies) * [ISMS en de Deming Cycle daarbinnen](#Information-Security-Management-Systems) * [ISO 27000](#ISO0) * TLS, PKI, certificaten * VPN * Firewalls * Identiteits- en authenticatiemanagement ## Samenvatting sheets ### Week 1 - Introductie informatie beveiliging **Waarom informatie beveiliging?** * Meer dan 4000 ransonware aanvallen per dag * 45% van de mensen klikt op links zonder na te denken in emails * 58% van MKB niet voorbereid op dataverlies * Boetes tot 20 mil. **Informatie beveiliging als proces** * Initieel als verzamling technische maatregelen * Later ook organisatorische maatregelen * Nu: toevoeging aan bestaande bedrijfsprocessen Hiervoor is nodig; **standaardisatie, professionalisering en meetbaarheid**. #### CIA Driekhoek * **Confidentiality** (Vertrouwelijkheid) * Het beperken van toegang tot informatie. * Toegang wordt op basis van gebruiksrecht verschaft of ontzegd. * Voorbeelden: * Geheimschrift * Encryptie * Toegangsbeperking * **Integrity** (Onveranderlijkheid) * Het garanderen dat informatie niet ongewenst verandert * Registreren of voorkomen van wijzigingen, afhankelijk van vereisten * Voorbeelden: * Redundante opslag * Checksums * Opslag read-only media (DVD) * **Availability** (Beschikbaarheid) * Informatie moet wanneer benodigd gebruikt kunnen worden door gerechtigde partijen * Heeft raakvlakken met IT-beheer * Voorbeelden: * Fail-over * Defect apparaat automatisch overgenomen door werkend appraat * Load-balancing * Meerdere apparaten aan elkaar geknoopt voor meer capaciteit * Disaster recovery * Maatregelen na een grote ramp de IT-dienstverlening weer op orde te krijgen. Er zijn pogingen gedaan om dit model uit te breiden met; * Identity management * Authentication management * Rights management * Non-repudation * etc. Hierbovengenoemd zitten er nog niet in maar worden vaak onder **confidentiality** geschaard. #### Primitives, Policies, Products De componenten van een werkbaar en effectief informatiebeveilingsbeleid kunnen worden onderverdeeld in 3 groepen: * **Primitives** (Week 2 & 3) * Wiskundige principes die vanuit een technisch oogpunt noodzakelijk zijn om de InfoSec-doelen (CIA) op een computer te behalen. * Hashes, encryptie, digitale handtekening etc. * **Policies** (Week 4) * Beleidsregels en afspraken die vanuit een organisatorisch oogpunt noodzakelijk zijn de InfoSec-doelen (CIA) op computeromgevingen te behalen. * Wet en regelgeving, normeringen, certificeringen, 'common sense'. * **Products** (Week 5) * Combinatie(s) van primitives en policies die op computeromgevingen toegepast kunnen worden om de Info-Sec (CIA) doelen op computeromgeving te kunnen behalen. * Soft, hardware en gedrag * Maken een organisatie veiliger * Einddoel van informatiebeveiligingsproces ### Week 2 - Primitives #### Randomness ofwel willekeur * Oorsprong en doel van cryptografie * Ontbreken van herkenbare patronen * Eenheid van willekeur: 'Entropie' * Hoe dichter een reeks getallen in de buurt van willekeur komt, hoe hoger de entropie. * Een computer is een wiskundige, deterministische machine die op dezelfde vraag altijd hetzelfde antwoord moet geven, dus kunnen we met een computerprogramma hooguit een “schijnbaar willekeurige” of “pseudorandom” reeks maken. Meestal is dat goed genoeg. #### Entropie Welke reeks heeft meer entropie? 1. 127777216 2. 862491735 Reeks 1; De herhaling van een getal binnen een reeks bevat meer entropie dan een reeks die uit unieke getallen bestaat. #### Cryptographically Secure Pseudorandom Number Generators (CSPRNG's) * Computerfuncties om lange reeksen cijfers met hoge mate van willekeur te genereren. * Geintegreerd in ieder OS (/dev/random) (Win32 CryptGenRandom) * Interface met hardware vult entropy pool: CPU-klokken, stroomvoorzieningen, antennes * Hash- of cryptofunctie (cipher) maakt uit pool langere random strings Iedere CSPRNG maakt gebruik van één of meerdere hardwareinterfaces waarmee een hogere mate van entropie bewerkstelligd kan worden. Vaak wordt het tik-verschil tussen twee hardwareklokken (cpu en memory) gebruikt als input. Sommige meer specialistische systemen (SafeNet) gebruiken fluctuaties in het stroomniveau of een antenne waarmee kosmische straling gemeten kan worden. Sommige experimentele systemen gebruiken een Geiger-Muller buis en een kleine hoeveelheid radioactief materiaal om input te verzamelen. Deze entropie wordt door een encryptie of hash-functie gehaald (komt later nog terug!) en dat resulteert in (pseudo-)willekeurige reeksen. #### Typen encryptie Wordt bepaald door; * Operatietypen in functie: * Substitutie * Verplaatsen van tekens volgens een patroon. * Transformatie * Veranderen van tekens volgens een patroon. * Aantal sluitels * Een - Symmetrisch * Gebruikt dezelfde keys voor encryptie als decryptie. * Twee - Asymmetrisch * Gebruikt twee verschillende doch aan elkaar verbonden keys voor encryptie en decryptie. * Operatiemodus * Block ciphers * Encryptie functie waarbij de plaintext in blokken van een vaste lengte versleuteld wordt. * Stream ciphers * Encryptie functie waarbij de plaintext in een doorlopende stroom versleuteld wordt. #### Substitutie vs. Transformatie **Substitutie**; De Scytale werd door de oude Grieken gebruikt om berichten te versleutelen. Door ontvanger en verzender van dezelfde stok te voorzien konden op een veilige manier berichten worden overgedragen. **Transformatie**; De Enigma was een Duits systeem wat in WO2 gebruikt werd om de communicatie tussen onderzeeers en het thuisfront te beveiligen. Dit electormechanische systeem kon alleen gekraakt worden door de inzet van enorme hoeveelheden mankracht. Substitutiefuncties zijn goeddeels in onbruik geraakt – de plaintext is namelijk aanwezig binnen de ciphertext en dit maakt de code makkelijk te kraken. Zeker voor gebruik met computers zijn transpositiefuncties tegenwoordig standaard. We zullen substitieciphers verder buiten beschouwing laten. #### Symmetrische en asymmetrische encryptie * Symmetrisch * 1 sleutel voor beide patrijen * Makkelijk, maar; hoe hou je de sleutel veilig? * Nadeel; sleutel moet op twee plekken worden uitgewisseld en beheerd. * Asymmetrisch * 2 sleutels, 1 voor ver- en 1 voor ontsleutelen * Lastiger, maar veiliger * Nadeel; beheren van aparte sleutel is lastiger, sleutels moeten groter zijn en het kost veel tijd om een sleutelpaar te maken. #### Block en stream ciphers **Block ciphers:** Lastig omdat ze een vast formaat data vereisen (padding). Ieder 'block' wordt afzonderlijk gecrypt. Dezelfde sleutel wordt zo nooit meermaals gebruikt binnen 1 sessie. Veel block ciphers kunnen ook in stream-modus worden toegepast. **Stream ciphers:** Lastig in gebruik, continu proces van encryptie en decryptie. Dit vreet entropie. Stream ciphers werden vroegen veel gebruikt, maar alles op IP-basis is overgegaan raken ze in onbruik. * Block * Toepasbaar op bulk encryptie * Versleuteling in "brokken" van gelijk formaat. * Ieder blok dient als input voor het volgende blok. * Voorbeelden: * AES (Advanced ES, meest gebruikt, symmetrisch) * DES (Data ES, verouderd) * Stream * Vooral toepasbaar voor encryptie in een sessie. * Versleuteling in continue stroom. * Sleutel maakt random data die wordt gecombineerd met de plaintext. * Voorbeelden: RC4, ChaCha #### DES: Data Encryption Standard * Oude standaard. (1977) * 56-bits sleutel. * Chained Block cipher op basis van Feistel Diagram. * Later verbeterd door 3-dubbele uitvoering (3DES) * Slecht qua security, maar makkelijk #### Feistel diagram ![](https://i.imgur.com/oOf1JR4.png) 1. We kiezen een sleutel “K1” en “hakken” dan de plaintext in twee stukken: “R0” en “L0”. 2. De ene helft van de ciphertext “R0” wordt door een encryptiefunctie “F” versleuteld, waarna de resulterende ciphertext gebruikt wordt om de andere helft van de plaintext “L0” te XOR-en. 3. De plaintext “R0” wordt als “L1” doorgegeven aan de volgende iteratie van het proces. 4. De vanuit “L0” ge-XOR’de ciphertext wordt in de volgende iteratie gebruikt als “R1”, terwijl de R0-cipher wordt verwijderd. 5. “R1” en “L1” staan nu klaar voor een nieuwe iteratie van de encryptieslag. 6. De sleutel wijzigt volgens een permutatietabel. Dit is nodig omdat DES anders kwetsbaar zou zijn voor herhaalde-sleutel aanvallen (risico bij block-ciphers, weet je nog?). Deze tabel is opgenomen in de DES-standaard. **Nog heel veel berekeningen en diagrammen van sheets, zijn overgeslagen** ### Week 3 - Asymmetrische encryptie **Asymmetrie** is de afwezigheid van **symmetrie**. Bij encriptie betekent dit dat er verschillende sleutels gebruikt worden voor het ver- en ontsleutelen van informatie. ![](https://i.imgur.com/YGlNo8n.png) Alice verstuurt Bob een bericht, wat ze versleutelt met haar private key. Bob ontsleutelt dit met Alice’s public key. De twee sleutels tezamen noemen we een sleutelpaar of “keypair”. #### Hoe? * Sleutels zijn aan elkaar gelinkt. * Relatie tussen sleutels is (waarschijnlijk) niet te kraken. * Gebaseerd op de aanname dat factorisatie (ontbinden in factoren) een 'hard' probleem is. * Met een (normale) computer is dit niet in polynomiale tijd op te lossen. **Polynomiale tijd**; Voor een computer sneller op te lossen dan door 1 voor 1 alle mogelijkheden af te gaan. #### Factorisatie * Factorisatie is voor een computer meestal heel makkelijk * Tenzij; * Het getal heel groot is * Het getal uit een product van twee priemgetallen bestaat (alleen deelbaar door zichzelf en 1) #### Voorbeeld: RSA * Rivest, Shamir en Adleman (1977) * Patent verkregen 1983 * Inmiddels ingehaald door andere standaarden maar nogsteeds (grotendeels) veilig. Onder de motorklep; * Neem twee grote priemgetallen * Vermenigvuldig deze met elkaar * Bereken nu de indicator van dit product * Kies een getal dat relatief priem is t.o.v. deze indicator * Bereken een getal waarmee geldt dat; indiend vermenigvuldigd met het eerdere relatieve priemgetal, modulo de indicator de uikomst '1' is. Voorbeeld; * Priemgetallen: P = 61 en Q = 53 * P * Q = N * 61 * 53 = 3233 * N = 3233 * I = Kleinst gemene veelvoud (KGV) (P - 1, Q - 1) * I = 780 * Kies een willekeurig getal E, relatief priem t.o.v. I: E = 17 * Los op voor D: D * E mod I = 1 * D * 17 mod 780 = 1 * D = 413 Hoofdonderdelen keypair: * N = 3233 * E = 17 * D = 413 #### Private en public keys ![](https://i.imgur.com/7lmgcpQ.png) Door de getallen E en D te gebruiken in combinatie met de modulus N kunnen we gaan encrypten en decrypten. In de praktijk worden deze getallen samengevoegd in bestanden die we “certificaten” of “keyfiles” noemen, afhankelijk van de toepassing. Er zijn altijd twee van deze bestanden, die samen een “keypair” vormen. #### Keyfiles * Keyfiles worden opgeslagen als X.509 certificaten. (def. RFC 5280) * Meerdere standaarden gebruikstypen: PKCS 1 t/m 15. * Kunnen op twee manieren geencodeerd worden; * Digital ("DER") * Base64 ASCII ("PEM") #### Toepassingen assymetrische crypto: * SSL/TLS * Key Exchange * Smartcards * SSH Logins * VPN #### Diffie Hellman key exchange https://www.youtube.com/watch?v=NmM9HA2MQGI ![](https://i.imgur.com/vJIVXqD.png) #### Hashing functies **Hashing** is een rekenfunctie waarmee input wordt omgezet tot een **digest** of **hash** van vast formaat. Een kleinen wijziging in de input zorgt voor grote veranderingen in de **hash**. Dit wordt het **avalanche** of **lawine** effect genoemd. **Hashfuncties** worden gebruikt om de **integriteit** van data **aan te tonen** of te **ontkrachten**. Een hash functie **werkt maar een kant uit**. **Collisions:** * Twee of meer **verschillende** blokken die **dezelfde hash genereren**. * Een blok dat een **van te voren bepaalde hash** heeft. De **weerstand tegen collisions** bepaald de **veiligheid van de hash functie**. #### Hashing, CRC's en Checksums **Cycle Redundancy Check**; Wijzigingen aantonen en deze ongedaan maken (error correction) gebruikt bij **Availability** (CIA) **Checksums**; snel en efficient onveranderlijkheid aan te tonen. Voornamelijk om technische problemen uit te sluiten. (bijv. corruptie files) **Crypto-hashing**; Moet cryptografisch veilig zijn (kleine kans op collisions) en is daardoor trager. Voorbeelden hash functies; * **Crpytografie** * MD5 * SHA 1/2 * SCRYPT * BCRYPT * **CRC's** * CRC-8 * CRC-16 * CRC-32 * **Checksums** * sum * Fletcher ### Week 4 - Policies **Policies**; Om informatiebeveiliging te waarborgen moet volgens een eenduidig, helder en bovenal verstandig beleid gewerkt worden #### Raamwerk en kaders Om **Information Security Management Systems** (ISMS) te kunnen meten, waarborgen en vergelijken worden normen gedefinieerd. Deze bestaan op vele niveaus, van hoog (**strategisch**) tot laag (**operationeel**). #### Information Security Management Systems * Term afkomstig van Britsch Standards Institute (BSI) * BSI bepaalt standaarden voor nationaal gebruik * Sommige aangepast voor internationaal gebruik * Internationale standaarden worden bepaald en beheerd door de International Standards Organisation (ISO). #### ISO * Grootste standaardisatie organisatie ter wereld. * Houdt zich bezig met kwaliteitsmanagement tot ISO-3591 en ISO-3103 **ISO-27000**; * ISO normen voor ISMS te vinden in ISO-27XXX reeks. * Eisen: 27001 * Controlepunten: 27002 (uit 27001) * Privacyinformatie cloud-services: 27018 * Cybersecurity richtlijnen: 27032 * **Belangrijkste: documenteer alles.** #### Deming-cyclus * Bedacht door W. Edward Deming * Kwaliteitsmanagement methode * Continue verbetering van processen * Gebaseerd op de wetenschappelijke methode. ![](https://i.imgur.com/AWYP9HB.png) * **Plan** * Onderken problemen * Indentificeer verbeterpunten * Definieer oplossingen * Management: bepalen strategie, opzetten ISMS * **Do** * Implementeer oplossingen * Gebruik nieuwe methodes * Experimenteer met vernieuwingen * Operaties: development, systeembeheer * **Check** * Meet performance * Vergelijk met oude methode * Kwantificeer de verbeteringen * Audits: pentesting, red-teams, toezichthouders * **Act** * Bepaal de beste oplossing * Leg de nieuwe inzichten vast * Pas het geleerde toe in de praktijk * Management: reorganisatie, wijzigingsmanagement #### ISO-27000 requirements Iedere maatregel moet een reden ookwel **requirement** hebben; * **Wettelijke vereisten** * **Contractuele vereisten** * **Risicoanalyse** #### Requirements uit normen * De meeste normen gaan op details in * Smaken: Technisch/operationeel, organisatorisch, juridisch * Vaak per jurisdictie geregeld: NL, EU, VS etc. * Of per vak gebied: banken, zorg, ICT etc. #### ETSI European Telecommunication Standards Institute * **European Telecommunication Standards Institute** * Bepaald EU standaarden * EN/ES: Europese (verplichte) standaard * EG: Niet verplichte aanwijzing * TS: Technische specificatie * TR: Informatief verslag * Voorbeeld: EN 319 411-1 “Electronic Signatures and Infrastructures (ESI); Policy and security requirements” **FIPS - Federal Information Protection Standards**; bepaald VS standaard #### Industrie specifieke normen * Vanuit risico inschatting, ervaringen en wettelijke dispute ontstaan * Gericht op een bepaalde business * Onderhouden door normeringsinstanties, beroepsorganisaties of overheden * Voorbeelden: Thuiswinkel waarborg, PCI-DSS, NEN-7510 ### Week 5 - Products Welke van de volgende zijn producten? * Virusscanner * **Ja** * Primitive: Heristische scan * Beleid: Malware bescherming * ISO-27001 certificering * **Nee**, alleen policy * DES * **Nee**, alleen primitive * RSA * **Nee**, alleen primitive * DV-certificaat * **Ja** * Primitive: Encryptie * Beleid: Indentiteitsbeheer * Een sterk wachtwoord * **Ja** * Primitive: Hashing * Beleid: Toegangsbeheer #### TLS * Transport Layer Security (TCP) * Gebruikt asymmetrische encryptie om server te indentificeren en sleutels uit te wisselen * Sleutels worden gebruikt voor symmetrisch versleutelde communicatie gedurende de sessie * Heette tot 1999 Secure Sockets Layer (SSL) #### Certificaten **Certificaten** zijn een universele manier om asymmetrische encryptie in te regelen. * Bestaat in twee vormen; * Web-of-Trust * Als je iemand kent 'vetrouw' je het certificaat * Public Key Infrastructure * Autoriteiten die certificaten uit geven (CA's) en hun trust betekent jouw trust * Bekende autoriteiten: GeoTrust, Comodo, Staat der Nederlanden etc. #### Public key infrastructure 1. Gebruiker genereert keypair en voegt identificerende data toe aan publieke deel 2. Private key blijft op computer, public key wordt naar CA gestuurd als 'Certificate Signing Request' 3. CA encrypt de **Certificate Signing Request** met zijn private key en stuurt deze terug - nu is het een **certificaat** 4. Gebruiker plaatst encrypted certificaat op zijn website 5. Bezoeker van website download het certificaat en decrypt het met de zich op het OS bevindende public key van de CA. #### Certificaat maken in linux: 1. `openssl req -new -newkey rsa:4092 -nodes -keyout private.key - out public.csr` 2. Vul de gevraagde informatie in: * CN: Naam van het certificaat, bijv. het URL; * ON: Organisatienaam, bijv. Hogeschool Leiden * OU: Organistatieeenheid, bijv. Forensische ICT * Place: Stad, bijv Leiden; * State or Province: Provincie, bijv ZH * Country: Landcode, bijv. NL 2. Kopieer private.key naar een veilige plek 3. Laat de CSR door een erkende CA encrypted 'signen' 4. Plaats het getekende certificaat op de daartoe geeigende plaats. (bijv. `/etc/httpd.conf/ssl`) 5. Herstart de webserver en controleer of TLS naar behoren werkt. #### Problemen met assymetrische encryptie * Genereren van sleutels is **duur** (in CPU-tijd) * Encrypten is duur * Decrypten is duur * Hergebruik van certificaten is gevaarlijk Oplossing: Gebruik een **assymetrische encryptie** om een **symmetrische sleutel** af te spreken. In TLS; 1. Makkelijk; De client genereert een random nummer, crypt dit met de public key van de server en verstuurt het. 2. Moeilijk (veilig); Diffie-Hellman Key exchange #### Diffie-hellman - voorbeeld 1. Modulus m = 23 en basisgetal g = 5 2. Alice kiest a = 4 en verstuurt A: g(5)^a (4) % m (23) = A (4) (g^a%m) 3. Bob kiest b = 3 en verstuurt B: g(5)^b (3) % m (23) = B (10) (g^b%m) 4. Alice berekent S volgens: B (10)^a(4) mod m (23) = S (18) (B^a%m) 5. Bob betekent S volgens: A (4)^b (3) mod m (23) = S (18) (A^b%m) Beiden komen uit om 18 zonder dat het getal is verstuurd. #### VPN **Toepassen van crypto bij een VPN**; * Het encrypten van netwerkframes (bijv. ethernet) en deze verpaken in een IP-pakket. * De ontvangende partij decrypt de frames en verstuurt ze naar hun eindbestemming. * Kan gebruikt worden voor veiligheid of om een netwerk te virtualiseren of het internet te 'tunnelen'. * Niet te onderscheppen, vaak ook niet door firewalls en virusscanners. **Types**; * Point-to-point: Pure encapsulation tussen twee computersystemen * Point-to-site: Manier om een op het internet aangesloten systeem virtueel in een LAN te hangen. * Site-to-site: Manier om twee geografisch en fysieke van elkaar gescheiden netwerken als een te laten werken. ^Kunnen werken in de fysieke laag (1), linklaag (2) of internetlaag (3) van het IP-model. **VPN protocollen**; * **OpenVPN**: Gebruikt TLS, opereert in de **internetlaag. Werkt voor alle types** * **IPSec**: opereert in de **linklaag, site-to-site** * Voegt een header/tailer toe en crypt de inhoud van het pakket * **PPTP**: Opereert in de **link laag, point-to-point** * **VLAN**: Opereert in de **fysieke laag, site-to-site** **VPN Authenticatie**; * Mensen, computers aan beiden zijden, misschien zelfs tussenligende nodes * Niet triviaal; vaak obv. PKI/certificaten * Al zit er meestal toch wel ergens een wachtwoord verscholen. #### Primitives en policies afdwingen in software **Secure Coding principles**; * Minimize attack surface area * Establish Secure Defaults * Principle of Least privilege * Principle of Defence in Depth * Fail Securely * Separation of Duties * Avoid security by obscurity * Keep security simple * Fix security issues correctly