Kryptograficzny System Plików pod Linuxem - Jak To Zrobić
Kryptograficzny System Plików pod Linuxem - Jak To Zrobić
Autor: Alexander O. Yuriev,
alex@bach.cis.temple.edu
Wersja polska: Krzysztof G. Baranowski
KGB@rubikon.net.pl
v1.1 12 Maja 1997
W dokumencie opisano jak skompilować, zainstalować i ustawić Kryptograficzny
System Plików (zwany dalej CFS - przyp. tłumacza), który został napisany przez
Matta Blaze z AT&T, pod Linuxa.
1. Wprowadzenie
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.
2. O CFS
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.
3. KOMPILACJA I INSTALACJA CFS.
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.
Olaf podpisał zmodyfikowane archiwum. Podpis PGP dla zmodyfikowanej wersji
cfs-1.1.2 można otrzymać z:
ftp.mathematic.th-darmstadt.de.
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)
4. TWORZENIE KATALOGU CFS
Ż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, TYLKO 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".
5. OCHRONA CFS
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:
Sniffing
Atak przeciwko protokołowi.
Informacje zawarte poniżej mogą zostać użyte, aby zmniejszyć
prawdopodobieństwo skutecznego ataku przeciwko CFS.
Upewnij się, że binaria CFS są oryginalne:
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,
upewnij się, że CFS serwer (cfsd), nie został w jakiś sposób
zmodyfikowany i że szyfruje dane poprawnie,
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.
Uważaj na programy zapisujące do pliku dane
wpisywane z klawiatury, tzw. keyboard grabbers i zawsze stosuj się do
poniższych zasad:
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,
wpisuj hasła do terminali przyłączonych bezpośrednio do portów
szeregowych systemu, gdy są one dostępne,
upewnij się, że konsole (pty i tty) są ustawione tak, aby uniemożliwić
innym odczytanie twojego hasła.
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)
Zawsze używaj komendy cdetach, kiedy nie pracujesz z danymi. Nawet
kiedy przerywasz pracę na kilka minut.
5.1 ZNANE PROBLEMY Z CFS
W tym momencie jedyny znany problem, to komunikat "Permission denied", kiedy
próbujesz dostać się do plików na płycie CD.
6. PODZIĘKOWANIA
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]======================
7. DODATEK A
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.