image

Paniekknop voor encryptie-gebruikers

vrijdag 14 december 2012, 16:59 door Redactie, 20 reacties

Om te voorkomen dat kwaadwillenden het geheugen van een versleutelde computer kunnen uitlezen om zo de encryptiesleutel te achterhalen, is er nu een programma dat als paniekknop fungeert. 'Panic_bcast, zoals de oplossing heet, moet het lastiger maken om 'cold boot-aanvallen' uit te voeren. Hierbij wordt het geheugen door middel van stikstof 'bevroren' waardoor het mogelijk is het geheugen uit te lezen.

Activist
Dit probleem is aanwezig als de computer nog draait of net is uitgeschakeld. Panic_bcast is in werkelijkheid een netwerkprotocol dat via UDP broadcasts en HTTP werkt. De ontwikkelaar schetst een scenario waarbij een ongenode gast aan de deur van een activist komt.

De activist verstuurt vervolgens het panieksignaal via Panic_bcast. De machines in het netwerk ontvangen het panieksignaal en schakelen vervolgens TrueCrypt en zichzelf uit.

"Een serieuze vrijheidsvechter zal zoiets als dit op alle nodes in het netwerk draaien", aldus de ontwikkelaar. De software is zo geschreven dat het elke variant van UNIX ondersteunt die Python kan draaien. Het zou zowel op Linux als FreeBSD zijn getest.

Reacties (20)
14-12-2012, 17:03 door Security Scene Team
oh jee... als ome ivo dit toch eens zou zien. lol
14-12-2012, 17:30 door Didier Stevens
Ik weet niet hoe het in de States zit, maar hier in Europa is het vrij simpel om zeer snel alle elektriciteit in je huis af te sluiten.

Wij hebben verliesstroomschakelaars, en als je een stekker maakt met een weerstand tussen een faze en de aarding, dan hoef je deze stekker maar in een stopcontact te pluggen en de verliesstroomschakelaar doet zijn werk.

Je moet er wel voor zorgen dat je PCs en de stekker door dezelfde verliesstroomschakelaar beschermd worden, en dat je geen UPS hebt voor je PCs.
14-12-2012, 17:37 door vimes
[admin] Thanks, fixed [/admin]

ik heb het gevoel dat hier niet staat wat er bedoeld wordt.
14-12-2012, 17:41 door WhizzMan
Didier: Bij ons heet dat de "aardlekschakelaar". Dat zou helaas niet echt helpen, omdat de sleutel van je encryptie nog enige tijd in je RAM chips blijft hangen en deze met stikstof op de RAM spuiten nog veel langer houdbaar is. De software die nu omschreven wordt wist eerst de sleutel uit het geheugen voordat de computer wordt uitgeschakeld, waardoor de truuk van het invriezen niet meer gaat werken.
14-12-2012, 17:45 door Anoniem
Nou nog een disk wipe erachter aan...

Jammer dat de Roverheid die je toch zou moeten beschermen dit soort dingen noodzakelijk maakt.
14-12-2012, 17:51 door Anoniem
https://github.com/qnrq/panic_bcastThe panic signal is then sent over the network as a MD5 checksum.
MD5? Lekker veilig. En ook nog eens elke keer dezelfde hash voor elke key, dus ook nog eens het risico van pass-the-hash.
14-12-2012, 17:55 door Didier Stevens
Door WhizzMan: Didier: Bij ons heet dat de "aardlekschakelaar". Dat zou helaas niet echt helpen, omdat de sleutel van je encryptie nog enige tijd in je RAM chips blijft hangen en deze met stikstof op de RAM spuiten nog veel langer houdbaar is. De software die nu omschreven wordt wist eerst de sleutel uit het geheugen voordat de computer wordt uitgeschakeld, waardoor de truuk van het invriezen niet meer gaat werken.

Nee, dat doet de software nou net niet. Ik heb nl. de sourcode doorgenomen.

De auteur van de code is van plan om dit *later* toe te voegen, maar de manier waarop hij dit plant te doen vind ik niet goed.
Voor mij is de beste oplossing dat TrueCrypt zelf een feature heeft waardoor je het de opdracht kan geven om de sleutels uit het geheugen te wissen. Dan moet zijn Python programma maar TrueCrypt aanropen.

En vermits TrueCrypt open source is, zou hij zelf de aanpassing kunnen doen. Staat bij mij al een tijdje op mijn todo lijst, maar ja, geen tijd...
14-12-2012, 18:04 door Didier Stevens
Voor wie het nog niet zelf gelezen heeft, hier is het stukje Python code.
Je kan zien dat er geen sleutels gewist worden.


# TODO: Extend with a C lib that iterates through used physmem addresses and
# overwrites values in a prio order before triggering poweroff.
# TODO: Use mountedDrives() to iterate and eject (crypto) mounts
def treatPanic():
os.popen("killall truecrypt")
# Linux, possibly more
os.popen("shutdown -P now")
# FreeBSD, possibly more
os.popen("shutdown -p now")
[/qoute]
14-12-2012, 19:05 door Fwiffo
Hier in Nederland is de politie zo vriendelijk de computer voor je uit te zetten voor ze hem meenemen. Dus deze software heb je niet niet nodig.

Bron:
http://www.security.nl/artikel/35680/%22Robert_M._gebruikte_waarschijnlijk_TrueCrypt%22.html
14-12-2012, 19:30 door Anoniem
Op zich best een aardig idee om, zeg, een grote rode knop (met Molly-guard) ergens op te hangen en die dan per microcontroller aan je netwerk te hangen. Zeg een arduino met ethernetuitbreiding, wellicht een raspberrypi model B.

Maar een stukje python code? Doe het even beter en schrijf een stukje C, dat is een beter gereedschap voor dit werk. Ik heb niets tegen python, maar voor iets dat altijd moet draaien voor een gebeurtenis die bijna nooit voorkomt mag je best even een ietsje beter je best doen en portable C schrijven. Dat doet het óók op alle unix systemen.
14-12-2012, 19:41 door Anoniem
Voor de mensen die denken dat simpelweg de stroom erafhalen genoeg is, nee, dat is het niet, niet met moderne geheugens als DDR3. Wil je je daarop verlaten dan moet je zorgen dat al je encryptiesleutels alleen in SDR opgeslagen worden, die loopt nog snel genoeg leeg.

Eigenlijk zou je encryptiesleutels alleen in de chip zelf moeten opslaan, of een encryptiefunctie in de geheugencontroller inbouwen zodat een gedeelte van het geheugen transparant wordt versleuteld (met weer een andere sleutel, zeg een willekeurige sleutel uit een random generator). Merk op dat dit een totaal andere constructie is dan wat TPM/palladium doet.
14-12-2012, 19:56 door Anoniem
Extended Memory test enablen in de BIOS en dan zou een simpele reboot voldoende moeten zijn.
14-12-2012, 20:16 door Anoniem
Voedingen (vooral de zuinige) van tegenwoordig kunnen het toch nog wel even (0 to enkele seconden) zonder stroom doen. Een korte stroomdip overbruggen is geen probleem.

Verder wat Didier zegt @17:55. Geheugen wissen is bij uitstek een feature van het programma zelf. Ik kan me wel voorstellen dat de ontwikkelaars denken dat het de veiligheid van het programma niet ten goede komt.

Overigens lijkt Truecrypt geen open source te zijn voor Windows. Zelf hacken onder Windows gaat niet zo handig zonder broncode.
14-12-2012, 22:18 door rob
Door Didier Stevens:
Door WhizzMan: Didier: Bij ons heet dat de "aardlekschakelaar". Dat zou helaas niet echt helpen, omdat de sleutel van je encryptie nog enige tijd in je RAM chips blijft hangen en deze met stikstof op de RAM spuiten nog veel langer houdbaar is. De software die nu omschreven wordt wist eerst de sleutel uit het geheugen voordat de computer wordt uitgeschakeld, waardoor de truuk van het invriezen niet meer gaat werken.

Nee, dat doet de software nou net niet. Ik heb nl. de sourcode doorgenomen.

De auteur van de code is van plan om dit *later* toe te voegen, maar de manier waarop hij dit plant te doen vind ik niet goed.
Voor mij is de beste oplossing dat TrueCrypt zelf een feature heeft waardoor je het de opdracht kan geven om de sleutels uit het geheugen te wissen. Dan moet zijn Python programma maar TrueCrypt aanropen.

En vermits TrueCrypt open source is, zou hij zelf de aanpassing kunnen doen. Staat bij mij al een tijdje op mijn todo lijst, maar ja, geen tijd...

Het zou natuurlijk kunnen dat het zijn intentie ook is om het op die wijze te doen.

Volgens mij moet zijn python code dan ook niet als veel meer dan een idee en een PoC worden gezien. Misschien kan iemand anders het op de juiste wijze verder uitwerken.
15-12-2012, 00:58 door Anoniem
kexec -l /boot/memtest86+
15-12-2012, 11:24 door Anoniem
Door Didier Stevens: Ik weet niet hoe het in de States zit, maar hier in Europa is het vrij simpel om zeer snel alle elektriciteit in je huis af te sluiten.

Wij hebben verliesstroomschakelaars, en als je een stekker maakt met een weerstand tussen een faze en de aarding, dan hoef je deze stekker maar in een stopcontact te pluggen en de verliesstroomschakelaar doet zijn werk.

Je moet er wel voor zorgen dat je PCs en de stekker door dezelfde verliesstroomschakelaar beschermd worden, en dat je geen UPS hebt voor je PCs.
Je zou die stekker standaard in het stekkerblok kunnen steken waarin je ook de stekkers voor je pc en randapparatuur hebt zitten. Als je er dan een Klik-Aan-Klik-Uit schakelaartje tussen zet, kun je op afstand (bij het zien van de ongenode gasten aan de deur) ongemerkt je computerapparatuur uitschakelen. Als je dan pretendeert je sleutel nog even te moeten zoeken, is er wellicht genoeg tijd om de gegevens uit het RAM te laten verdwijnen (weet niet hoe lang die blijven staan).
15-12-2012, 12:32 door Anoniem
Door Didier Stevens:
Door WhizzMan: Didier: Bij ons heet dat de "aardlekschakelaar". Dat zou helaas niet echt helpen, omdat de sleutel van je encryptie nog enige tijd in je RAM chips blijft hangen en deze met stikstof op de RAM spuiten nog veel langer houdbaar is. De software die nu omschreven wordt wist eerst de sleutel uit het geheugen voordat de computer wordt uitgeschakeld, waardoor de truuk van het invriezen niet meer gaat werken.

Nee, dat doet de software nou net niet. Ik heb nl. de sourcode doorgenomen.

De auteur van de code is van plan om dit *later* toe te voegen, maar de manier waarop hij dit plant te doen vind ik niet goed.
Voor mij is de beste oplossing dat TrueCrypt zelf een feature heeft waardoor je het de opdracht kan geven om de sleutels uit het geheugen te wissen. Dan moet zijn Python programma maar TrueCrypt aanropen.

En vermits TrueCrypt open source is, zou hij zelf de aanpassing kunnen doen. Staat bij mij al een tijdje op mijn todo lijst, maar ja, geen tijd...
Eerst was ik cynisch (what are the odds dat zoiets daadwerkelijk gebeurd). Toen was ik blij voor de wiki-leakers onder ons. Toen las ik jouw reactie en werd ik boos omdat de ontwikkelaar daar zelf vrij weinig (tot niets) over meld, en nu ben ik euforisch dat er mensen als jij zijn die dit kunnen en willen uitzoeken!

Achtbaan van emoties :p
15-12-2012, 12:55 door Anoniem
Truecrypt wist wel degelijk de encryptiesleutel in het geheugen als er wordt gedismount, of als de PC op de normale manier wordt afgesloten. Er wordt gewaarschuwd juist niet acuut de stroom te onderbreken omdat TC dan niet de gelegenheid krijgt om de key te wissen. Zodoende, blijft de key dan nog in het geheugen staan.
Ook wordt errop geattendeerd dat een key op de harde schijf kan worden opgeslagen als de PC in de slaapstand wordt gebracht, dit is echter eenvoudigweg uit te zetten.

bron: http://www.truecrypt.org/docs/?s=unencrypted-data-in-ram
15-12-2012, 13:49 door Anoniem
TRESOR http://events.ccc.de/congress/2011/Fahrplan/events/4869.en.html zet de keys alleen in CPU registers. Die is (voorlopig) niet te recoveren nadat de machine is gereboot, uitgezet of suspend-to-disk.
Sessie 4869 te bekijken via http://events.ccc.de/congress/2011/wiki/Documentation
15-12-2012, 15:19 door Santurechia
Kortom, maak van al je hotboxes laptops, zodra het stroom eraf gegooid word (en hij op batterij springt) kan je je geheugen wissen zonder gezeur.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.