Forum » Operacijski sistemi » LUKS šifriranje RaspberryPi
LUKS šifriranje RaspberryPi
poweroff ::
Torej, ideja je, da bi SD kartico Raspberry Pi šifriral z LUKS (Linux Unified Key Setup), seveda na način, da bi bilo za uporabnika to kar najbolj enostavno.
Ena varianta je seveda, da uporabiš tipkovnico in ob zagonu vneseš geslo, ampak to je rahlo nepraktično. Je pa mogoče uporabiti simulator tipkovnice (mislim, da zna to tudi Yubikey).
Druga varianta je, da uporabiš keyfile, ki ga vtakneš v USB ob zagonu. Tukaj moraš seveda imeti fizični dostop.
Potem sen našel tole: https://github.com/NicoHood/NicoHood.gi...
Če prav razumem, ob zagonu iz /boot particije požene SSH odjemalca (dropbear), geslo pa potem vneseš kar preko SSH. To je sicer za uporabnika razmeroma enostavno in tudi varno v primeru fizičnega dostopa, če pa to delaš preko omrežja, zna biti problematično. Poleg tega sumim, da tole deluje samo v primeru ethernet omrežja (in ne preko wifi).
Potem sem pa našel še tole: https://www.zymbit.com/zymkey/
Gre za napravo, ki se jo namesti na GPIO pine in vsebuje LUKS ključ, ki ga posreduje Cryptsetupu, ki ob zagonu odklene / particijo. Ta zadeva zna preverjati karakteristike RPi naprave, da ugotovi njeno "identiteto" oz. jo avtenticira. Za uporabo ne potrebuje uporabnikove intervence (to je recimo plus), je pa razmeroma draga in ko jo "zakleneš" na napravo (s tistim Cut-2-Lock), se RPi naprave verjetno niti posodabljati ne da več.
No, ena glavnih težav pa je, da ti lahko napadalec spremeni /boot particijo. To pomeni, da bi moral ob vsakem rebootu RPi naprave pregledati integriteto /boot particije.
Zato me zanima, ali obstaja kakšen način zagona RPija preko GPIO, oziroma, da bi preko GPIO iz zunanje naprave zagnal initramfs, ki bi potem odklenil šifrirano SD kartico? Oziroma po domače, kako zakleniti "bootloader" (razen, da kartico fizično zalepim v slot)?
Ena varianta je seveda, da uporabiš tipkovnico in ob zagonu vneseš geslo, ampak to je rahlo nepraktično. Je pa mogoče uporabiti simulator tipkovnice (mislim, da zna to tudi Yubikey).
Druga varianta je, da uporabiš keyfile, ki ga vtakneš v USB ob zagonu. Tukaj moraš seveda imeti fizični dostop.
Potem sen našel tole: https://github.com/NicoHood/NicoHood.gi...
Če prav razumem, ob zagonu iz /boot particije požene SSH odjemalca (dropbear), geslo pa potem vneseš kar preko SSH. To je sicer za uporabnika razmeroma enostavno in tudi varno v primeru fizičnega dostopa, če pa to delaš preko omrežja, zna biti problematično. Poleg tega sumim, da tole deluje samo v primeru ethernet omrežja (in ne preko wifi).
Potem sem pa našel še tole: https://www.zymbit.com/zymkey/
Gre za napravo, ki se jo namesti na GPIO pine in vsebuje LUKS ključ, ki ga posreduje Cryptsetupu, ki ob zagonu odklene / particijo. Ta zadeva zna preverjati karakteristike RPi naprave, da ugotovi njeno "identiteto" oz. jo avtenticira. Za uporabo ne potrebuje uporabnikove intervence (to je recimo plus), je pa razmeroma draga in ko jo "zakleneš" na napravo (s tistim Cut-2-Lock), se RPi naprave verjetno niti posodabljati ne da več.
No, ena glavnih težav pa je, da ti lahko napadalec spremeni /boot particijo. To pomeni, da bi moral ob vsakem rebootu RPi naprave pregledati integriteto /boot particije.
Zato me zanima, ali obstaja kakšen način zagona RPija preko GPIO, oziroma, da bi preko GPIO iz zunanje naprave zagnal initramfs, ki bi potem odklenil šifrirano SD kartico? Oziroma po domače, kako zakleniti "bootloader" (razen, da kartico fizično zalepim v slot)?
sudo poweroff
Ribič ::
Kolikor vem na debian-variantah linuxa obstajajo skripte, ki ob boot-u poskrbijo za odklep glavne particije. Te skripte že uporabljaš pri vnosu gesla, če imaš šifriran sistem, obstaja pa še nekaj drugih, ki sistem odklenejo na drugačen način (glej initramfs-tools oz. skripte v folderju /lib/cryptsetup/scripts oz. /usr/share/initramfs-tools/hooks. Določeni izmed teh se izvedejo pri zagonu in poskrbijo, da se sistem pravilno odklene - ti lahko pri inštalaciji izbereš kateri skript bo zadolžen za odklep glavne particije in na kakšen način. Lahko pa tudi napišeš svoj programček, ki bo zadeve izvajal poljubno.
Za ARM sisteme nisem prepričan. Vem pa, da na x86/x64 sistemih lahko uporabiš bootloader GRUB2, ki ima opcijo šifriranja tudi particije /boot oz. je lahko omenjeni folder tudi del glavne šifrirane particije.
http://www.pavelkogan.com/2014/05/23/lu...
http://www.pavelkogan.com/2015/01/25/li...
Jaz se bom v kratkem lotil inštalacije linux-a z šifrirano /boot vsebino na UEFI sistemih.
No, ena glavnih težav pa je, da ti lahko napadalec spremeni /boot particijo. To pomeni, da bi moral ob vsakem rebootu RPi naprave pregledati integriteto /boot particije.
Za ARM sisteme nisem prepričan. Vem pa, da na x86/x64 sistemih lahko uporabiš bootloader GRUB2, ki ima opcijo šifriranja tudi particije /boot oz. je lahko omenjeni folder tudi del glavne šifrirane particije.
http://www.pavelkogan.com/2014/05/23/lu...
http://www.pavelkogan.com/2015/01/25/li...
Jaz se bom v kratkem lotil inštalacije linux-a z šifrirano /boot vsebino na UEFI sistemih.
Vse ribe so mi pobegnile!
poweroff ::
Kolikor vem na debian-variantah linuxa obstajajo skripte, ki ob boot-u poskrbijo za odklep glavne particije. Te skripte že uporabljaš pri vnosu gesla,
To misliš šifrirano /home/user mapo?
Za ARM sisteme nisem prepričan. Vem pa, da na x86/x64 sistemih lahko uporabiš bootloader GRUB2, ki ima opcijo šifriranja tudi particije /boot oz. je lahko omenjeni folder tudi del glavne šifrirane particije.
Čeprav tam je isti problem. Lahko ti nekdo poheka bootloader. V bistvu bi moral biti bootloader read only.
V tem zgornjem primeru pa predvidevam, da so decrypt funkcije naložene v UEFIju, torej ti samo še vneseš geslo in to je to. Disk je pa v celoti šifriran.
Hmm, a kaj podobnega obstaja na RPi (se pravi kakšen "externi bootloader", ki bi ga povezal preko GPIO pinov)?
sudo poweroff
Ribič ::
To misliš šifrirano /home/user mapo?Ne. Mislim glavno particijo kjer je root mount point (/). Pri trdih diskih je to particija npr. /dev/sda1.
Čeprav tam je isti problem. Lahko ti nekdo poheka bootloader. V bistvu bi moral biti bootloader read only.
Bootloader boš težko napravil read-only. Ena varianta je, da ga prestaviš iz diska oz naprave, kjer je inštaliran operacijski sistem, v BIOS oz. v flash napravo na osnovni plošči. Raspi mislim, da tega nima (vsaj verzija 1 ga ni imela, ko sem se s tem nazadnje ukvarjal). Druga opcija je pa, da bootloader ostane r/w na nosilcu podatkov, pri čemer postaviš neke vrste "verified boot". Za to boš pa potreboval ustrezni TPM, ki preveri overjeni bootloader oz. operacijski sistem. V primeru zaznane spremembe, se sistem ne boota. Vse skupaj pa ti itak nič ne pomaga, če ima napadalec fizični dostop...
There is no security without physical security.
Sicer pa na trgu obstaja kup naprav z različnimi konfiguracijami, tako, da je težko uvesti neko univerzalno rešitev. Nekatere naprave imajo BIOS oz. UEFI firmware, ki zažene bootloader na disku, druge spet imajo bootloader že kar vgrajen v firmware, tretje sploh nimajo firmware in zaženejo prvi bootloader, ki ga vidijo, itd.
V tem zgornjem primeru pa predvidevam, da so decrypt funkcije naložene v UEFIju, torej ti samo še vneseš geslo in to je to. Disk je pa v celoti šifriran.
Za tole še nisem slišal, da bi v UEFI-ju bile funkcije za dešifriranje... čeprav tole nebi bila slaba ideja. Mislim, da bi Coreboot znal imeti kaj takega. Kolikor sem seznanjen, bo UEFI samo preveril istovetnost bootloaderja, potem pa lahko bootloader naprej dešifrira sistem... skratka obstaja neka veriga (chain of trust). Raspi mislim, da se zanaša na u-boot bootloader na SD kartici. Saj v bistvu je večina teh ARM naprav takih, da uporabljajo kar u-boot direktno. Tule žal nisem čisto seznanjen. Ali Raspberry Pi 3 podpira tudi UEFI?
Hmm, a kaj podobnega obstaja na RPi (se pravi kakšen "externi bootloader", ki bi ga povezal preko GPIO pinov)?
Bootloader ne moreš kar povezati preko GPIO pinov. Bootloader je program, ki je lociran na neki napravi s katere bo določeni hardware poskušal zagnati operacijski sistem. Če ta hardware ni programiran, da na tej napravi išče bootloader, potem se ne bo zgodilo nič. Za raspberry ne vem točno kaj bi se dalo narediti. Itak moraš bootati neke naprave npr. SD kartice, ki pa ima že po privzetem R/W dostop. Nekateri sistemi imajo tudi opcijo boot preko PXE (mreže). Pri Allwinner napravah mislim, da so čipi skonfigurirani tako, da iščejo bootloader tudi preko SPI protokola. Torej bi teoretično lahko gor priklopil nek SPI flash čip, kamor bi zapisal bootloader ter še kakšne druge zadeve za verified boot in potem onesposobil pisanje po čipu s pomočjo Read-only pina, ki ga fizično prispajkaš na ničlo (GND), da onesposobiš pisanje. Pri raspberri-ju pa ne vem točno kakšno je boot zaporedje. Mislim, da je samo s SD kartice.
Skratka najprej se raje vprašaj kaj je sploh tvoj cilj. Kakšen je tvoj "threat model"? Mar poskušaš zadevo zaščititi proti omrežnim vdorom ali proti fizičnemu dostopu? V primeru slednjega bo lahko na napravi izdelal nek dodatek, ki bi preverjal stanje. V primeru vdora bi se ti naprava samostojno zaklenila, pobrisala dešifrirne ključe in se izklopila. Tako napadalec vsaj nebi imel dostopa do podatkov. Mislim, da ima tista naprava, ki si jo omenil točno takšno funkcijo (perimeter). V primeru omrežnega vdora pa ti morajo itak okužiti sam operacijski sistem, tako, da si že tukaj pečen.
Vse ribe so mi pobegnile!
Ribič ::
Tule je npr. dokumentacija za postavitev verified boot sistema v u-boot bootloadertu na splošno ter na plošči BeagleBone Black.
https://lwn.net/Articles/571031/
https://github.com/u-boot/u-boot/blob/m...
https://lwn.net/Articles/571031/
https://github.com/u-boot/u-boot/blob/m...
Vse ribe so mi pobegnile!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Za vstop v Linux zadostuje 70 sekundOddelek: Novice / Varnost | 9203 (6004) | Spiky28 |
» | Linux za MIPSOddelek: Operacijski sistemi | 1341 (1198) | čuhalev |
» | Londonska mestna četrt z Windows XP na Chromebooke (strani: 1 2 )Oddelek: Novice / Operacijski sistemi | 33297 (29699) | MrStein |
» | mac os x in final cut pro xOddelek: Operacijski sistemi | 2310 (1890) | gorski volk |
» | Coreboot prihaja na prenosnikeOddelek: Novice / Ostala programska oprema | 10933 (7937) | Icematxyz |