De essentie van computerveiligheid deel 1

De essentie van computerveiligheid deel 1

Cyberaanvallen zijn steeds vaker in het nieuws.

Vorig jaar schreef Robin Smolders, Cyber Security Engineer, al een vakinhoudelijke gastblog over computerveiligheid. Computerveiligheid is een onderwerp waar we niet over uitgesproken raken. Wanneer het over Cyber Security gaat is iets wat vandaag 'state of the art' is, morgen wellicht alweer gedateerd. Voldoende reden dus om de eerdere blog te herzien, om jou goed voor te kunnen lichten.

Dit artikel is bedoeld voor de standaard computergebruiker om zowel bewustzijn te creëren als achtergrondinformatie te verstrekken. Vanwege de lengte is de blog opgesplitst in twee delen, in dit deel komen wachtwoorden en versleuteling aan bod. In het tweede deel komen phishing en social engineering aan bod.
 

Wachtwoorden

Wat is bijvoorbeeld een goed wachtwoord? Hackers slagen er steeds weer in om wachtwoorden te kraken of te achterhalen. Welke methodes gebruiken zij zoal om achter mensen hun wachtwoorden te komen?

Brute forcing:
Elk mogelijk wachtwoord wordt door een automatisch programma ingevoerd en geprobeerd totdat het wachtwoord is gevonden. Dit kan een tijdrovende klus zijn en zelfs een onmogelijke opgave als het wachtwoord te lang of te moeilijk is. Hier zijn vanzelfsprekend erg krachtige computers met veel rekenkracht voor nodig.

Dictionary attack:
Er wordt een lijst van veelgebruikte woorden losgelaten op het invoerveld. Deze ‘wordlists’ bevatten o.a. woorden uit de spreektaal, maar ook lijsten met veelgebruikte wachtwoorden die bijv. uit eerder gestolen databases afkomstig zijn. Op internet zijn veel verschillende wordlists te vinden in allerlei talen die continu worden ge-update met nieuwe woorden en termen.

Sommige hackers observeren nauwkeurig hun doelwit en maken een profiel bij hun slachtoffer. De wordlist wordt nu zoveel mogelijk aangevuld met woorden en termen die betrekking hebben op die persoon. Denk aan de naam van je kinderen, data van verjaardagen, het merk van je auto, de naam van je oude school, je huisnummer, je bijnaam etc. Als een hacker met deze gegevens een dictionary attack uitvoert, dunt hij de mogelijkheden uit en kan zo gerichter en sneller proberen een wachtwoord te kraken. Zelfs als iemand zo slim was om bijv. nog een uitroepteken aan zijn wachtwoord toe te voegen (“het wachtwoord moet minimaal 1 leesteken bevatten”). Elk woord uit de wordlist kan namelijk op allerlei manieren geprobeerd worden. Bijvoorbeeld een nul als de letter O, een één als de letter I, leesteken(s) ervoor of erachter, etc. Ook combinaties van woorden uit de lijst worden gebruikt. Het is daarom ten zeerste af te raden om een persoonlijke term als wachtwoord of als deel van je wachtwoord te gebruiken.

Rainbow tables:
Wachtwoorden worden tegenwoordig versleuteld opgeslagen in een database. Deze versleuteling gebeurt met zogeheten hash-algoritmes zoals het verouderde MD5, of het tegenwoordig veel gebruikte SHA256. Als hackers vandaag de dag een database met wachtwoorden stelen, dan staan daar alleen de hash codes in van de wachtwoorden en niet de wachtwoorden zelf. Maar, omdat twee dezelfde wachtwoorden altijd dezelfde hash code opleveren, kan er een vergelijkingstabel worden opgesteld. Het wachtwoord [pass1234] geeft met SHA256 altijd het volgende resultaat:

[bd94dcda26fccb4e68d6a31f9b5aac0b571ae266d822620e901ef7ebe3a11d4f]

Als dit wachtwoord dus door meerdere mensen wordt gebruikt en de bovenstaande hash code komt vaker voor in een gestolen database, dan kan een hacker achterhalen welke hash bij welk wachtwoord zou kunnen horen. Een manier om rainbow tables tegen te gaan heet de ‘salted hash’. Voordat een wachtwoord wordt ‘gehashed’, wordt er een willekeurig gegenereerde reeks van tekens aan toegevoegd. Deze reeks wordt samen met de hash opgeslagen in de database. Twee dezelfde wachtwoorden hebben nu allebei een andere hash. De essentie van een hash is tevens, dat als er slechts één teken verandert in de invoer, de complete hash code totaal anders is. Voorbeeld:

[pass0001] -> 0213e59277e03ee3d81823b4c8430edb3aa58fd0a7d8107598d9d1756f36e663

[pass0002] -> 1e517803804ca81368ed57c3e393efbf6ca70746c42e89194ec707850e8fd923

Phishing:
Een vorm van social engineering. Een hacker kan iemand via de email een valse login pagina voorschotelen waardoor het slachtoffer denkt dat hij/zij inlogt op bijv. Facebook. In werkelijkheid typt hij zijn credentials in op een website die in beheer is van een kwaadwillende hacker. Met phishing is het ook mogelijk om via malafide bijlagen een virus op iemands computer te krijgen. Later meer over phishing in deel twee.

Maar wat is zijn nu goede wachtwoorden om te gebruiken? Een wachtwoord als [d98GF4!HJ$6fdsQ2] is onmogelijk te brute-forcen met de rekenkracht van huidige computers en een dictionary attack is zinloos vanwege het ontbreken van de ‘woordwaarde’. Zelfs supercomputers van overheden zijn nog niet in staat om een wachtwoord als dit te kraken. Het probleem is dat je een erg goed geheugen moet hebben om dit soort complexe wachtwoorden te kunnen onthouden. Toch is er een truc om wachtwoorden te creëren die makkelijk te onthouden zijn en vrijwel onmogelijk te kraken. Neem 3 of 4 willekeurige woorden die niets met elkaar te maken hebben en zet ze achter elkaar, bijv. [AppelDolfijnBoekenkast] of [DeurmatPlakbandKruikCacao]… Een dictionary attack is vrijwel onmogelijk uit te voeren, omdat deze woorden nergens in deze volgorde voorkomen en een brute force is vanwege de lengte van het wachtwoord ook onmogelijk. Een veilige wachtwoordlengte om aan te houden is 12 tekens of langer. Je kunt hierbij uiteraard nog letters vervangen voor cijfers of leestekens om het nog iets veiliger te maken.

Gebruik ook nooit dezelfde wachtwoorden voor verschillende (belangrijke) diensten. De belangrijkste wachtwoorden zijn die van je hoofd emailadres en die van je pc zelf. Wachtwoorden voor andere diensten zijn via je email weer te resetten. Beveilig je mail account daarom met het moeilijkste wachtwoord dat je kunt bedenken (en onthouden) … Gmail biedt bijvoorbeeld ook de optie tot tweestaps verificatie. Als er wordt ingelogd op een vreemde computer, dan dient de gebruiker dit te verifiëren via een toegestuurde sms-code. Een gestolen wachtwoord is met tweestaps verificatie zo goed als waardeloos. Ook kun je gebruik maken van wachtwoordbeheer programma’s zoals LastPass. Maar vergeet dan niet je hoofdwachtwoord daarvan!
 

Versleuteling

Hash encryptie:
Officieel is een hash geen versleuteling omdat het niet te ontsleutelen is. Een wiskundig algoritme met zeer grote priemgetallen zorgt voor een “mathematical trapdoor”. Hierdoor is een hash alleen in één richting uit te rekenen en niet terug. Deze manier van versleutelen wordt, zoals eerder beschreven, veelal toegepast om wachtwoorden in een database op te slaan. Op het moment dat een wachtwoord wordt gecontroleerd, wordt eigenlijk de invoer nogmaals gehashed en de output vergeleken met de hash in de database. Komen beide hash codes overeen, dan is het wachtwoord correct. Het is dus ook niet noodzakelijk om de hash te kunnen ontsleutelen.

Symmetrische encryptie:
Een bestand wordt versleuteld (encryptie) met dezelfde digitale sleutel als waarmee men het bestand kan ontsleutelen (decryptie). Het probleem van deze methode is dat de sleutel dus altijd meegestuurd moet worden over het netwerk. Niet zo handig als zowel de sleutel als het versleutelde bestand samen onderschept worden door een hacker. De geniale oplossing voor dit probleem is asymmetrische encryptie.

Asymmetrische encryptie:
Er zijn 2 gebruikers die discreet en veilig met elkaar willen communiceren over het internet. Iedere persoon heeft een ‘keypair’ bestaande uit 2 sleutels; een publieke sleutel en een privé sleutel. De publieke sleutel is openbaar voor iedereen en de privé sleutel is geheim per gebruiker.

In deze video wordt uitgelegd hoe dit precies werkt: https://www.youtube.com/watch?v=AQDCe585Lnc

 

Gastblogger: Robin Smolders, Cyber Security Engineer

 

Hopelijk heb jij hierdoor wat meer inzicht gekregen in computerveiligheid, ben je bewuster geworden van het kiezen van een veilig wachtwoord en het versturen van versleutelde bestanden.
Heb jij nog vragen naar aanleiding van bovenstaande blog? Neem dan even contact op via info@pitt-it.nl