Wat is cryptografie?
Cryptografie of geheimschrift (uit het Grieks, κρυπτει kryptei “verborgen,” en γράφω gráfo “schrijven”) houdt zich bezig met technieken voor het verbergen of zodanig versleutelen van te verzenden informatie, dat het voor een cryptoanalist, een persoon die toegang heeft tot het kanaal tussen zender en ontvanger, en dus als het ware ‘mee kan luisteren’, onmogelijk is om tegen aanvaardbare inspanning uit de getransporteerde data af te leiden welke informatie er door de zender was verzonden en welke partijen daarbij betrokken waren. Cryptografie wordt gebruikt om gegevens over te dragen die niet leesbaar mogen zijn door andere partijen. Enkel de zender en ontvanger beschikken over de juiste sleutel om de gegevens terug om te zetten in hun originele vorm.
Bron: Wikipedia
Met behulp van tools zoals GnuPG, Bcrypt, Ccrypt kan je in Linux bestanden versleutelen.
Wat is Stegografie?
Steganografie is het verbergen van informatie in onschuldig ogende objecten en is onderdeel van cryptografie. Steganos betekent in het oud-Grieks verborgen, en graffein schrijven.
Bron: Wikipedia
Met behulp van tools zoals steghide kan je teksten in bestanden zoals afbeeldingen of muziek verbergen.
Waarom cryptografy of stegografie gebruiken?
In onze digitale wereld worden we regelmatig geconfronteerd met berichten van hacking naast big-brother toestanden door overheidsinstellingen om maar te zwijgen van organisaties zoals de Amerikaanse CIA, NSA en andere alfabet-overheidsdiensten.
Dat betekent feiteilijk dat je nooit meer zeker bent dat je persoonlijke gegevens niet door één of andere organisatie gelezen en misbruikt kunnen worden.
Simpel voorbeeld: Je wil de pin-code van je bankkaart doorgeven aan je vriend(in), ouders, … Hoe ga je dat doen als zij in het zuiden van Frakrijk op vakantie zijn en jij hier?
Telefonisch… hmmm de muren kunnen hebben oren hebben.
Via e-mail? Ach nee, want die mail kan jaren lang bewaard blijven op obscure servers.
SMS? Ook niet veel beter.
Snail-mail dan maar? In hoeverre is het briefgeheim nog echt geheim…
OK. We zijn hier wel echt paranoia aan het worden, maar hoe kan je dan wel belangrijke informatie naar de andere kant van de wereld sturen?
Cryptografie
Van de mogelijk cryptografische tools zal ik enkel GpG behandelen.
GPG ((GNU Privacy Guard)
GNU Privacy Guard (GPG) is een applicatie die vooral bedoeld is voor versleuteling van data met behulp van een publieke cryptografische sleutel. Het bevat echter ook de mogelijkheid om gegevens te versleutelen middels een door de gebruiker vertrekt wachtwoord en het bevat diverse versleutelingsalgoritmes.
Standaard zou het pakket geïnstalleerd moeten zijn, maar indien niet kun je het installeren via:
$ sudo apt-get install gnupg
Versleutelingsalgoritmes
GnuPG bevat diverse versleutelingsalgoritmes. Deze krijg te zien door onderstaand commando:
$ gpg –version
Bestand versleutelen
Ik heb in een mapje ~/hacking enkele bestanden. Eentje ervan is het bestand README , met volgende tekst.
Om dat bestand te versleutelen tik je onderstaand commando in:
$ gpg -c <bestandsnaam>
Je gaat 2 maal om een wachtwoord gevraagd worden.
Dan wordt een NIEUW bestand aangemaakt met als extentie .gpg.
README word dus README.gpg (README.txt zou README.txt.gpg worden)
Je mag dus niet vergeten om je origineel bestand, zonder de gpg extentie te verwijderen!
Als je de inhoud van het tekstbestand README.gpg bekijkt, zie je iets dergelijks:
De vercijfering is dus wel degelijk gelukt.
Ontsleutelen van een bestand
Om een met GnuPG versleuteld bestand te ontsleutelen, gebruik je onderstaand commando:
$ gpg <bestandsnaam>
Daarbij word je naar de vercijferingssleutel waarmee het bestand versleuteld is, gevraagd.
Sleutels
Standaard versleutelt gpg met het “cast5
” versleutelingsalgoritme. Wens je een ander versleutelingsalgoritme gebruiken dan voeg je de “-crypto-algo
” parameter toe gevolgd door het gewenste algoritme. Bv: “-crypto-algo=3DES
”
Het commando wordt dan:
$ gpg -crypto-algo=<versleutelingsalgoritme> <bestandsnaam>
Om ons bestand met AES256 te versleutelen zou het commando er als volgt uitzien:
$ gpg -crypto-algo=AES256 README
Stenografie
Waarom stegografie
In tegenstelling tot volledige versleuteling van het bestand, zoals hierboven uitgelegd, waarbij de gegevens in die mate worden aangepast dat het voor iedereen zichtbaar is dat het om een versleuteld bestand gaat, ga je bij het gebruik van stego technieken geen enkele tip aan de buitenstaanders geven dat er mogelijks verborgen data in het bestand aanwezig is. Je kan het ongeveer vergelijken met het verbergen van je juwelen in een koekendoos.
Steghide
Om teksten in bestanden te kunnen verstoppen, gaan we gebruik maken van het programma steghide.
Als het bestand nog niet geïnstalleerd is op je systeem, kun je het installeren als volgt:
$ sudo apt-get install steghide
Meer info over steghide vind je op http://steghide.sourceforge.net/index.php
Er zijn wel wat voorwaarden aan verbonden:
- De cover file – dat is het bestand dat je tekst zal verbergen – moet wel groot genoeg zijn om het bestand (embedded file) te kunnen verbergen.
- Enkel .jpg en .bmp bestanden kan je als grafische cover file gebruiken
- Enkel .wav bestanden kan je gebruiken als audio cover file
Voor deze tutorial maken we gebruik van volgende bestanden
Teksten verbergen in een ander object
Het commando is :
$ steghide embed -cf <cover file> -ef <embedfile>
- <cover file> is het bestand dat als container voor je verborgen bestand zal dienen
- <embedfile> is het te verbergen bestand
Het leuke is dat beide bestanden er nadien identiek uit lijken en nog volledig te gebruiken zijn.
Verborgen teksten terughalen
Om het bestand terug uit de <cover file> te kunnen halen, moet je natuurlijk het wachtwoord kennen.
Het commando is:
$ steghide extract -sf <coverfile>
In mijn voorbeeld wordt dat:
Hoe er rekening mee dat steghide geen bestanden kan overschijven. Je moet dus na het terughalen van het bestand uit ons .wav-bestand fol.txt hernoemen/verwijderen als je het tweede voorbeeld met het.jpg bestand direct erna wil uitvoeren. Dat is natuurlijk niet vlot werken daar je feitelijk niet weet hoe het verborgen bestand heet en je wil voorkomen dat je eigen bestanden overschreven zouden worden.
Informatie over het ingesloten bestand
Via onderstaand commando, kun je informatie opvragen over het bestand waarin een verborgen bestand zit:
steghide info <ontvangen_bestand>
Voorbeeldbestand
Hieronder de jpg die ik gebruik heb. Daarin zit het bestand fol.txt versleuteld.