Kryptograficzny System Plików pod Linuxem - Jak To Zrobiæ Autor: Alexander O. Yuriev, alex@bach.cis.temple.edu WWeerrssjjaa ppoollsskkaa:: KKrrzzyysszzttooff GG.. BBaarraannoowwsskkii KKGGBB@@rruubbiikkoonn..nneett..ppll v1.1 12 Maja 1997 W dokumencie opisano jak skompilowaæ, zainstalowaæ i ustawiæ Kryp tograficzny System Plików (zwany dalej CFS - przyp. t³umacza), który zosta³ napisany przez Matta Blaze z AT&T, pod Linuxa. 11.. WWpprroowwaaddzzeenniiee Nastêpuj±ce o¶wiadczenie skopiowane zosta³o bezpo¶rednio z CFS 1.12 i opisuje zastrze¿enia co do u¿ywania CFS. · Autorem tego oprogramowania jest Matt Blaze. · Copyright (c) 1992, 1993, 1994 by AT&T. · Zezwala siê u¿ywaæ, kopiowaæ i modyfikowaæ niniejsze oprogramowanie bez ¿adnych op³at, pod warunkiem, ¿e zostanie do³±czona do wszystkich kopii oprogramowania pe³na dokumentacja, uwagi i ostrze¿enia autora. · To oprogramowanie podlega kotroli eksportu ze Stanów Zjednoczonych. · Nie wolno eksportowaæ go, w czê¶ci lub w ca³o¶ci, albo pomagaæ w eksporcie, bez zgody rz±du USA i pisemnego zezwolenia od AT&T. W szczególno¶ci nie wolno udostêpniaæ ¿adnej czê¶ci tego oprogramowania i jego nieograniczonych dystrybucji innym osobom, ni¿ obywatele USA i Kanady. · To oprogramowanie jest dostarczane "Takie jakie jest", bez ¿adnej gwarancji i ani autorzy, ani AT&T nie udzielaj± ¿adnej gwarancji jakiegokolwiek rodzaju dotycz±cej dopasowania oprogramowania do jakichkolwiek potrzeb. · Pomimo, ¿e informacje w tym dokumencie uwa¿a siê za poprawne, ani autor, ani Laboratoria CIS, ani Uniwersytet Temple nie udzielaj± ¿adnych gwarancji i nie s± odpowiedzialni za to, co siê stanie kiedy bêdziesz stosowa³ siê do niniejszego instrukta¿u. Informacja zawarta w tym dokumencie jest udostêpniana, taka jaka jest. 22.. OO CCFFSS CFS umo¿liwia niezale¿ne od aplikacji szyfrowanie/deszyfrowanie danych na pow³oce struktury plików i nie wymaga modyfikacji kodu istniej±cego ju¿ systemu plików, ani ¿adnych modyfikacji j±dra systemu. Symetryczne szyfrowanie zawarte w g³ównym strumieniu CFS bazuje na zmodyfikowanym standardzie DES pracuj±cym w trybie CBC, który czyni brutalny atak przeciwko 56-bitowemu kluczowi DES prawie niemo¿liwym. Struktura CFS zastêpuje g³ówny strumieñ DES, szyfrem Fast-DES albo jakimkolwiek innym szyfrem, w doskona³y, bezpo¶redni sposób. Gdyby¶ by³ zainteresowany przeczytaj Bia³± stronê o CFS <ftp://bach.cis.temple.edu/pub/Papers/cfs.ps>. 33.. KKOOMMPPIILLAACCJJAA II IINNSSTTAALLAACCJJAA CCFFSS.. CFS nie skompiluje siê "samo" pod Linuxem. Pod±¿aj za niniejszymi instrukcjami, je¶li chcesz uruchomiæ CFS na swoim Linuxie. Jest kilka metod osi±gniêcia tego celu, ale najprostsza bazuje na modyfikacjach przeprowadzonych przez Olafa Kircha. Jego wersja CFS jest dostêpna z: ftp.mathematic.th-darmstadt.de <ftp://ftp.mathematik.th- darmstadt.de/pub/linux/okir/cfs-1.1.2.tar.gz>. Olaf podpisa³ zmodyfikowane archiwum. Podpis PGP dla zmodyfikowanej wersji cfs-1.1.2 mo¿na otrzymaæ z: ftp.mathematic.th-darmstadt.de <ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/>. W trybie jednego u¿ytkownika, skompiluj cfs za pomoca komendy "make". (przeczytaj najpierw odpowiednie pliki, tzn. README, Changes itp. - przyp. autora). Po kompilacji, zainstaluj: cfsd, cdetach, ccat, cmkdir, cname i cattach do katalogu /usr/local/sbin - w³a¶cicielem tych plikow niech bêdzie root, a grupa, do której musz± one nale¿eæ to wheel. Nadaj plikom atrybuty 551. Dla bezpieczeñstwa mo¿na wygenerowaæ sumy kontrolne MD5, na czystych binariach. Nastêpnie skopiuj te pliki razem z "md5sum", na media takie jak p³yta CD, albo dyskietka i zabezpiecz j± przed zapisem. Utwórz katalog /.cfsfs, który bêdzie u¿ywany przez serwer CFS. Niech w³a¶cicielem katalogu bêdzie root, grupa root, a jego atrybuty niech wynosz±: 000. Utwórz katalog /securefs, ktory stanie siê korzeniem drzewa Kryptograficznego Systemu Plików. Dodaj nastepuj±c± liniê do /etc/rc.d/rc.local: echo -n "Inicjacja Kryptograficznego Systemu Plików: " if [ -x /usr/local/sbin/cfsd ]; then /usr/local/sbin/cfsd > /dev/null echo -n "cfsd " /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs echo -n "loopback" echo "done" else echo "Nie zainstalowano poprawnie Kryptograficznego System Plików" fi U¿ytkownicy Red Hata powinni dodaæ plik "cfsfs", który znajduje siê na koñcu tego dokumentu do katalogu /etc/rc.d/init.d. Nastêpnie utworzyæ do³±czenie symboliczne "S65cfsfs" i umie¶ciæ go w odpowiednim katalogu startowym, np. rc3.d u¿ywaj±c komendy: ln -s /etc/rc.d/init.d/cfsfs S65cfsfs we w³a¶ciwym katalogu startowym. Nastêpnie nale¿y dodaæ liniê: /.cfsfs localhost w pliku /etc/exports. Na koñcu dodaj liniê: portmap: 127.0.0.1 do pliku /etc/hosts.allow. Teraz powiniene¶ zrestartowaæ komputer. Po jego uruchomieniu, u¿yj komendy mount ¿eby sprawdziæ, czy CFS pracuje. Je¶li wszystko zadzia³a³o, powiniene¶ zobaczyæ now± nastêpuj±c± liniê po wykonaniu komendy mount. localhost:/.cfsfs on /securefs type nfs(rw,port=3049,intr,addr=127.0.0.1) 44.. TTWWOORRZZEENNIIEE KKAATTAALLOOGGUU CCFFSS ¯eby utworzyæ szyfrowany katalog o nazwie "sekret" u¿yj komendy: cmkdir sekret Zostaniesz poproszony o podanie i zweryfikowanie has³a. Je¿eli to sie uda, utworzony zostanie katalog "sekret", który pojawi sie w bie¿±cym katalogu. Katalog ten bêdzie zawiera³ zaszyfrowane dane, które bêdzie mo¿na normalnie przegl±daæ pod warunkiem, ¿e do³±czymy ten katalog do drzewa CFS. ¯eby mo¿na by³o swobodnie korzystaæ z informacji zawartych w katalogu, trzeba do³±czyæ go do drzewa katalogów zarz±dzanych przez CFS za pomoca komendy: cattach sekret Tajne CFS poprosi Ciê o podanie has³a dostêpu. Je¿eli bêdzie siê ono zgadza³o z has³em podanym przy tworzeniu katalogu "sekret", dane zawarte w tym katalogu bêd± dostêpne w niezakodowanej formie w /securefs/Tajne, TTYYLLKKOO dla u¿ytkownika, który poda³ w³a¶ciwe has³o dostêpu. (nawet root nie mo¿e odczytaæ tych plików ;-) - przyp. t³umacza) Zauwa¿, ¿e do³±czenie katalogu do drzewa CFS, mo¿e zaj±æ nawet minutê. (u mnie na P133/16MB RAM zajmuje nie wiêcej ni¿ 5 sekund). Od tej pory mo¿emy korzystaæ z katalogu /securefs/Tajne jak z ka¿dego innego katalogu. Kiedy skoñczymy pracê powinni¶my u¿yæ komendy: cdetach Tajne ¿eby uniemo¿liwiæ dostêp do danych. Komenda ta usuwa katalog "sekret" z listy katalogów zarz±dzanych przez CFS, co uniemo¿liwia odczytanie informacji w tym katalogu, gdy¿ s± one zakodowane. Aby znowu umo¿liwiæ sobie dostêp do danych nale¿y u¿yæ komendy "cattach". 55.. OOCCHHRROONNAA CCFFSS Aby umo¿liwiæ u¿ytkownikom dostêp do zaszyfrowanych danych, CFS wymaga od u¿ytkownika has³a, które jest u¿ywane do wygenerowania zestawów kluczy. Zdobycie has³a przez niepowo³ane osoby pozwala intruzom odczytaæ zaszyfrowane dane, dlatego jest niezwykle wa¿ne, aby u¿ytkownik we w³asnym interesie chroni³ has³o dostêpu. Istniej± dwie mo¿liwo¶ci zdobycia Twojego has³a przez intruzów: 1. Sniffing 2. Atak przeciwko protoko³owi. Informacje zawarte poni¿ej mog± zostaæ u¿yte, aby zmniejszyæ prawdopodobieñstwo skutecznego ataku przeciwko CFS. 1. Upewnij siê, ¿e binaria CFS s± oryginalne: a. upewnij siê, ¿e: cattach, ccat, cmkdir, cname, cfsd i cdetach nie zosta³y zast±pione "koniami trojañskimi", które zapisuj± has³a dostêpu, b. upewnij siê, ¿e CFS serwer (cfsd), nie zosta³ w jaki¶ sposób zmodyfikowany i ¿e szyfruje dane poprawnie, c. atak przeciwko "cdetach" zazwyczaj wymaga ma³ej modyfikacji kodu, która chroni klucze dostêpu przed zniszczeniem i pozwala intruzowi uzyskaæ kontrolê nad zakodowanymi danymi. Najprostszym sposobem na upewnienie siê, ze binaria nie zosta³y podmienione, jest zlinkowanie ich statycznie i umieszczenie na p³ycie CD. Inny sposób, to zlinkowanie statyczne, wygenerowanie sum kontrolnych za pomoc± programu MD5 i umieszczenie ich na dyskietce zabezpieczonej przed zapisem. Przed u¿yciem CFS w systemie, zamountuj dyskietkê i sprawd¼ czy sumy kontrolne zgadzaj± siê; w razie potrzeby zastêpuj±c podmienione programy ich oryginalnymi wersjami. 2. Uwa¿aj na programy zapisuj±ce do pliku dane wpisywane z klawiatury, tzw. keyboard grabbers i zawsze stosuj siê do poni¿szych zasad: a. kiedy wpisujesz has³o w oknie xterm-a, upewnij siê, ¿e xterm jest oryginalny i u¿ywaj bezpiecznej klawiatury "Secure keyboard". To uniemo¿liwi przechwycenie has³a przez wy¿ej opisane programy, b. wpisuj has³a do terminali przy³±czonych bezpo¶rednio do portów szeregowych systemu, gdy s± one dostêpne, c. upewnij siê, ¿e konsole (pty i tty) s± ustawione tak, aby uniemo¿liwiæ innym odczytanie twojego has³a. 3. Nigdy nie wpisuj has³a poprzez sieæ, nawet je¶li znajduje siê ona za firewallem i wiesz, ¿e nikt pod³±czony do sieci nie u¿ywa sniffera. Tyczy siê to tak¿e sieci u¿ywaj±cych, tzw. scramble routers, poniewa¿ nie masz pewno¶ci, ze routery u¿ywaj± odpowiednio silnej enkrypcji, nie maj± "tylnych drzwi" albo innych dziur, które pozwoli³yby intruzowi pokonaæ enkrypcjê routera. Je¿eli jednak musisz podaæ has³o poprzez sieæ, rób to tylko zaszyfrowanym kana³em pomiêdzy hostami. (najbardziej znany i popularny jest (ssh) secure shell - przyp. autora) 4. Zawsze u¿ywaj komendy cdetach, kiedy nie pracujesz z danymi. Nawet kiedy przerywasz pracê na kilka minut. 55..11.. ZZNNAANNEE PPRROOBBLLEEMMYY ZZ CCFFSS W tym momencie jedyny znany problem, to komunikat "Permission denied", kiedy próbujesz dostaæ siê do plików na p³ycie CD. 66.. PPOODDZZIIÊÊKKOOWWAANNIIAA Ni¿ej wymienieni ludzie przyczynili siê do powstania tego dokumentu: Topher Hughes z Dickinson College, Elie Rosenblum z Montgomery Blair High School, Mario D. Santana z Florida State University, Daniel P Zepeda i Olaf Kirch. ====================[pocz±tek pliku cfsfs]====================== #!/bin/sh # # $Header: /Secure/secure-doc/linux/CFS/RCS/CFS-Doc,v 1. 4 1996/03/15 04:49:37 alex Exp alex $ # # cfsfs Kryptograficzny System Plików # # Autor: Alexander O. Yuriev <alex@bach.cis.temple.edu> # # Derived from cron # Source function library. . /etc/rc.d/init.d/functions # See how we were called. case "$1" in start) echo -n "Uruchamianie Kryptograficznego Systemu Plików: " if [ -x /usr/local/sbin/cfsd ]; then /usr/local/sbin/cfsd > /dev/null /bin/mount -o port=3049,intr localhost:/.cfsfs /securefs echo "done" else echo -n "Nie zainstalowano poprawnie Kryptograficznego Systemu Plików" fi touch /var/lock/subsys/cfsfs ;; stop) echo -n "Zamykanie Kryptograficznego Systemu Plików: " umount /securefs killproc cfsd echo rm -f /var/lock/subsys/cfsfs ;; *) echo "U¿ycie: cfsfs {start|stop}" exit 1 esac exit 0 ====================[koniec pliku cfsfs]====================== 77.. DDOODDAATTEEKK AA Jak najwygodniej pos³ugiwaæ siê CFS... Copyright (C) 1997 by Krzysztof G. Baranowski (KGB@rubikon.net.pl) Poniewa¿ ci±g³e u¿ywanie komend "cattach","cdetach" i przechodzenie pomiêdzy wieloma odleg³ymi od siebie katalogami mo¿e byæ na d³u¿sz± metê mêcz±ce i mo¿e zniechêciæ u¿ytkownika od u¿ywania CFS, postanowi³em napisaæ ten dodatek, w którym przedstawiê naprawdê bardzo proste porady, dziêki którym bêdzie mo¿na zhumanizowaæ pracê z CFS. A zatem zacznijmy od pocz±tku. Najwygodniej jest utworzyæ w domowym katalogu u¿ytkownika ukryty katalog, w którym bêdziemy trzymaæ wszystkie zakodowane pliki. Wi±¿e siê to jednak z ryzykiem. Bo je¿eli kto¶ pozna nasze has³o dostêpu to bêdzie móg³ swobodnie manipulowaæ naszymi plikami. Z drugiej strony posiadanie wielu katalogów mo¿e przyprawiæ u¿ytkownika o ból g³owy, gdy¿ bêdzie on musia³ zapamiêtaæ ogromn± ilo¶æ hase³. A minimalna d³ugo¶æ has³a dostêpu do ka¿dego katalogu wynosi 16 (szesna¶cie) znaków. ;-) Pozostañmy wiêc przy jednym katalogu. Zatem piszemy: /home/kris$ cmkdir .xfiles Zak³adam, ¿e u¿ytkownik ma login: kris, a jego katalog domowy to /home/kris i u¿ywa bash'a jako domy¶lnego shella. Nastêpnie CFS poprosi nas o has³o, które musi sk³adaæ siê przynajmniej z 16 znaków. Po weryfikacji has³a nasz tajny katalog ".xfiles" zostanie utworzony: Nastêpnie dopiszmy dwa aliasy do pliku ".bashrc": alias dekoduj='cattach /home/kris/.xfiles tajne' alias koduj='cdetach tajne' W tym przypadku katalog, w którym bêdziemy mogli przegl±daæ odkodowane pliki posiada nazwê "tajne", a jego scie¿ka dostêpu to: /securefs/tajne. Oczywi¶cie nazwê mo¿emy sobie wybraæ dowoln±. :-) Nastêpnie w naszym domowym katalogu utwórzmy do³±czenie symboliczne do katalogu /securefs/tajne za pomoc± komendy: /home/kris$ ln -s /securefs/tajne tajne Wybór nazwy do³±czenia tak¿e zale¿y od u¿ytkownika. I to wszystko. Od tej pory u¿ywanie CFS staje siê dziecinnie proste. Je¶li chcemy dostaæ siê do naszego zakodowanego katalogu wpisujemy: /home/kris$ dekoduj i podajemy has³o. Komenda "cd tajne" od razu przenosi nas tam gdzie trzeba, gdzie mo¿emy buszowaæ sobie do woli :-), a "cd .." przenosi nas z powrotem do katalogu domowego. Proste i praktyczne. Po zakoñczeniu pracy wpisujemy: /home/kris$ koduj I ju¿ nikt nie odczyta naszych danych, w³±cznie z nami, chyba ¿e u¿yjemy jeszcze raz komendy "dekoduj". Na koniec ma³a uwaga. Kopiowanie, przenoszenie plików, przechodzenie do katalogów bêd±cych pod kontrol± CFS mo¿e byæ trochê opó¼nione. Zwi±zane jest to z enkrypcj±/dekrypcj± dokonywan± w czasie rzeczywistym. No to bawcie siê dobrze.