EncFS: Şifreli Dosya Sistemi (TÜRKÇE)

0
sundance
EncFS, pratik kullanımlı ve performanslı bir şifrelenmiş dosya sistemi. En önemli iki özelliği, şeffaflığı ve dizin bazında şifreleme yapabiliyor olmanız.

EncFS'in özelikleri ve nasıl kullanılabileceği konusunda Cuma günü Linux DevCenter'da yayınlanan makalemin daha geniş ve Türkçe halini (kesinlikle çeviri değil ;) yazının devamında bulabilirsiniz.
EncFS: Şifreli dosya sistemi

Güvensiz sistemler, protokoller:

Gün geçtikçe şifreleme sistemleri, gerek uygulama, gerekse işletim sistemi bazında hayatımızda daha çok yeralmakta. Bunun en önemli sebebi, günümüzde bilginin birçok ortamda (ve genellikle de kontrolsüz olarak) bulunması.

Bu kontrolsüzlüğün en bariz örneği bütün Internet'in üzerine kurulduğu TCP protokolü. İlk çıktığı zamanlarda, tek amaç "bağlantının sağlanması" olduğundan TCP ve üzerine kurulmuş temel protokoller (telnet, ftp, smtp, http vs.) güvenlik endişeleri gözönüne alınmadan oluşturulmuşlardı. Bu konuda en temel zayıflık ise, sözkonusu trafiğin şifrelenmemiş olarak, clear-text diye adlandırılan düz-yazı olarak iletiliyor olmasıydı. Bu zayıflık, kısa sürede hem iyi niyetli, hem de kötü niyetli kişiler tarafından çeşitli şekillere ortaya kondu. Bunun ardından protokol geliştiren ekipler, bütün bu protokollerin şifreli iletişim sağlayan güvenli hallerini geliştirdiler (telnet->ssh, ftp->sftp,scp, smtp->tls-smtp, http->https gibi).

Bu sayede, ağ üstünden giden trafiğin güvenliği ve dolayısıyla kişilik hakları bir miktar daha güvenli hale getirilmiş oldu.

Fiziksel Güvenlik Problemi

Fakat bilgisayar güvenliği ile ilgilenenlerin çok yakından bildiği temel bir kural vardır. Bu da bir sisteme eğer sınırsız bir fiziksel erişim sözkonusu olduğunda o sistemin güvenliğinden sözedilemeyeceğidir.

Bunu biraz açtığımızda görürüz ki kastedilen bir bilgisayarı networkden kesseniz, başına giriş şifresi koysanız ve daha bir dizi önlem daha alsanız bile birisinin bilgisayarı alıp götürmesini engelleyemiyorsanız, ordaki bilgileriniz güvenli değil demektir. Çünkü, bilgisayarın içindeki harddisk, ya da verilerinizin bulunduğu bir başka medya alınıp bir başka bilgisayarda incelenebilir ve içindeki bilgilere erişilebilir.

Buna karşı alınabilecek en büyük önlem, işletim sistemi bazında bir şifreleme gerçekleştirilmesi ve harddisk, cdrom ya da usb disk gibi cihazlara dosya yazmanın şifreli olarak yapılmasını sağlamak olacaktır.

Bunun çeşitli yöntemleri, uzun yıllardır uygulanmakta. Fakat son yıllarda donanımların çok daha fazla güçlenmesi sayesinde, bu işlemlerin yapılması sırasında gerçekleşen performans kayıpları, yazılımla gerçekleştiğinde bile kabul edilebilir seviyelere gelmiştir.

Şifrelenmiş Dosya Sistemleri

Windows sistemlerde 2000'den itibaren EFS (encrypted file system) kullanılabilir olmuşken, Linux'da ise 1993'ten bu yana birçok şifrelenmiş dosya sistemi kullanılmaktadır. Bu dosya sistemlerinin ilk örneği, 1993 yılında çıkan CFS olmuştur. CFS bir pass-through (geçirgen) dosya sistemiydi. Geçirgen dosya sistemleri, filtre mantığı ile çalışırlar ve dosyanın nereye yazılacağı, nasıl yazılacağı gibi işlerle ilgilenmezler. Bir dosya yazılacağı zaman, üstünde gerekli değişiklikleri yaparlar ve gerisini yine dosya sistemine bırakırlar.

CFS'in temel özelliklerinden biri ise, bu işlemi NFS (Network File System) kullanarak yapıyor olmasıydı. NFS, Unix sistemlerin dosya paylaşımını sağlayan yapı olduğundan temel amacı, ağ üzerinden erişim için tasarlanmış bir protokoldü. Bu sebeple, CFS'in bir NFS uzanımı gibi çalışması, yerel çalışan bir dosya sistemine göre, ciddi bir performans kaybı getiriyordu.

1996 yılında ise yine aynı konseptte, CFS'in kodunun üstüne eklemelerle, İtalya'dan bir grup TFS'i çıkarttı. Buradaki temel farklılık, TCFS'in kernel ile daha entegre olup, kullanıcılara mümkün olduğu kadar şeffaf bir sistem sunmaktı. Dosyaların gruplar tarafından paylaşılması, dinamik şifreleme modülleri, değişik şifreleme algoritmaları gibi özellikler getiren TCFS'in en zayıf yanı ise, her kernel değişikliğine adapte edilmesi zorunluluğuydu. Bu sebeple Kernel 2.2'ye kadar gelen TCFS, 2.4'den sonra devam etmemiştir.

Bence bu sistemlerin en büyük handikapı yeterince şeffaf ve rahat kullanılabilir olmamaları bir yana, partisyon bazında işlem görüyor olmaları. Yani çok basitçe, sadece bir tek dizini şifrelenmiş olarak kullanmanız mümkün değil. Bu özellikle insanlarla paylaştığınız bilgileri bulundurduğunuz USB memory konusunda problem yaratmakta. Hem diskin başkaları tarafından okunmasını istiyorsunuz, hem de diskin için kimsenin okumamasını istediğiniz belli bir dizin bulunmakta.

EncFS

Bütün bu ihtiyaçlara cevap veren ve benim bu yazıda ele alacağım sistem, CFS ve ENCFS ile birçok ortak noktaları bulunan, fakat ikisinden de çok daha performanslı ve şeffaf bir çalışma düzenine sahip olan EncFS. EncFS'in bu şekilde çalışmasını sağlayan en önemli özelliklerden biri nispeten yeni bir teknoloji olan FUSE; file system interface module kullanıyor olması.

EncFS'den daha derinlemesine bahsetmeden önce, bu projenin geliştirilmesinde Ubuntu ekibinin ciddi desteği ve katkıları olduğunu vurgulamak isterim. Ben de böyle bir projenin varolduğunu Ubuntu Traffic vasıtası ile öğrendim. Ubuntu'nun Linux dağıtımları arenasına olan bu yapıcı katkısının artarak devam etmesini umuyoruz.



EncFS'in ana sayfası
http://arg0.net/users/vgough/encfs.html

Burada EncFS'in temel kullanım bilgilerinden, diğer dosya sistemleriyle karşılaştırmaya kadar çok geniş bilgi almanız mümkün.

EncFS'in kurulumu birazcık karışık gibi gözükmekle birlikte pek zor değil.

Öncelikle Fuse ve rlog programlarını kurmanız lazım. EncFS'in yazarı Valient Gough'un sayfasında bu programların Suse için olan RPM'lerini bulmanız mümkün. Öte yandan her zamanki gibi http://fuse.sourceforge.net/ ve http://freshmeat.net/projects/rlog adreslerinden kaynak kodlarını indirip derleyebilirsiniz.

Bu ikisini derledikten/kurduktan sonra EncFS'i de derleyip kurmanız gerekmekte.

Bütün bu işlemlrin akabinde kullanım oldukça kolay.

Öncelikle temel kavramları açıklamakta biraz yarar var.

EncFS'de bir dizini şifrelemek, Unix'deki mount yaklaşımına çok benziyor. Nasıl bir partisyonu mount ediyorsanız, EncFS'de ise şifrelenmiş bir dizini bir başka dizine mount ediyorsunuz. Bunun en bilinen örneği iso dosyaları. Tek bir dosya içinde bir dosya sistemi barındıran iso'ları Linux altında mount -o loop knoppix.iso /mnt/iso gibi mount edip, daha sonra da /mnt/iso dizininden içeriğini okumak mümkündür. EncFS'deki sistem de tamamen aynı.

Diyelim ki user diye bir kullanıcı ismine sahibiz, ve ev dizinimiz altında şifrelemek istediğimiz bir "sifreli" isimli dizinimiz var.

Öncelikle bu dizinin şifresiz halini okuyabileceğimiz bir mount point (bağlantı noktası) oluşturmamız gerekiyor. Bu dizinin ismi de "sifresiz" olsun.

mkdir /home/user/sifresiz

Şimdi yapmamız gereken aradaki şifreleme bağlantısının sağlanması

$encfs /home/user/sifreli /home/user/sifresiz

Volume key not found, creating new encrypted volume.
Password:
Verify:
$

Burada anahtar nokta, dizin isimlerini göreceli değil, kesin vermeniz lazım. Yani /home/user dizininde bulunan birisi direkt encfs sifreli sifresiz yazarsa bu kabul edilmeyecektir, yukardaki gibi tam dizin ismini girmek gerekir.

Bu kadar, şifreli dizinimiz artık hazır. İsterseniz gidip bir bakın şifreli dizinin altına, büyük ihtimalle görecekleriniz, çizgi romanlarda küfür baloncukları içinde gördüğünüz anlamsız gelen karakter dizileri olacak. EncFS, sadece sözkonusu dizindeki dosyaları şifrelemekle kalmaz, onların isimlerini de anlaşılmaz hale getirir. Bu sayede şifrelenmiş dosya sistemine bakanların dosya isimlerinden aradıkları dosyaların bu dizinde olup olmadığını anlama imkanları da kalmaz.

Öte yandan sifresiz dizinine baktığınızda ise dosyalarınızın orda olduğunu görürsünüz. Bir kez daha hatırlatmakta fayda var bu gördüğünüz dosyaların kendi değil, EncFS sisteminin araya girmesi ile o anda deşifre edilen, aslında sifreli dizini altındaki dosyalar.

Bu şifrelenmiş dizin ile işiniz bittiğinde ise
fusermount -u /home/user/sifresiz

komutunu vermeniz yeterli. Artık sifresiz dizini altı boş gözükecek, ve şu anda şifreli dosyalarınıza sizin ya da bir başkasının (yeniden bağlantıyı sağlamadan (mount etmeden)) erişmesi mümkün değil.

Bunun sağladığı kolaylıklardan bir tanesi de şifreli dizilerin yedeğini veya kopyasını almak için tekrar deşifre etme zorunluluğunuzun olmaması. Herhangi bir anda, şifreli halde yedek alabilir, daha sonra da o yedekten geri dönerken şifreyi açabilirsiniz. Bu sayede şifresi açılmış dosyalar, yedek teyplerinizde bile bulunmaz.

EncFS'in işleyişine biraz daha bakarsak, şifreleme için şöyle bir yöntem izlediğini görürüz: Bir dizin ilk defa şifreleneceğinde, EncFS ona sizin klavyeden elle pek giremeyeceğiniz rastlantısallıkta uzun bir şifre atar. Daha sonra sizin girdiğiniz şifre ise bu şifreyi şifrelemek/açmak için kullanılır. Bu mantık, pgp anahtarlarının pin ile şifrelenmesi gibidir. Bu uygulamadaki güzel yanı ise, siz şifreyi değiştirdiğinizde, sadece ana şifrenin şifrelendiği kodun değişmesi, dizinin yeniden baştan şifrelenmesi gibi bir işlem yapılmasına gerek kalmaması sonucunu doğurur.

Biraz da performanstan sözetmek gerekirse, EncFS 1 küsur Ghz herhangi bir makinada, size gözle görülür bir performans kaybı olmadan hizmet verebilir. Burada belki de önemli olan, zaten sizin için değerli dizinler için EncFS kullanmak, diğerlerine ise normal erişmektir. Daha güvenli bir sistem oluşturmak için uygulanabilecek yöntemlerden biri, kullanıcının ev dizinini EncFS ile şifreleyip öyle kullanmasıdır. Her açılışta, EncFS şifresi girilerek dizin şeffaf bir hale getirilecek, kullanıcı başında değilken sözkonusu bilgisayarın çalınması durumunda ise ev dizinindeki herhangibir dosyaya erişmek pratik olarak mümkün olmayacaktır.

EncFS, hem kullanım, hem de özellik açısında çok başarılı bir sistem. Dizüstü bilgisayarlarda ve USB hafızalar başta olmak üzere, veri taşımak için kullanılan medyalarda bulunan bilginin, gün geçtikçe değerlenmesi, üstüne kaydedildiği medyaların ise gün geçtikçe değersizleşmesi, bizleri fiziksel güvenliği sağlamak kadar, veri güvenliğine de önem vermeye itmektedir.

Bu tür ihtiyaçlara cevap verebilmesi açısından EncFS oldukça başarılı bir program.

Umarım işinize yarar.


Kıvılcım Hindistan
www.fazlamesai.net/sundance

Görüşler

0
FZ
FM: Fark yaratalıM ;-)

Çok teşekkür ederim!
0
pismikrop
Elinize sağlık çok güzel olmuş. Başarılarınızın devamı diliyorum.
0
Nightwalker
Sanırım 5 saatlik uykunu 4 e indirdik ama değmiş :-)
Ellerine sağlık.
0
mturker
Selam, ellerinize sağlık. DevCenter'da yayınlanan makaleye yapılan yorumlarda AES ve benzeri algoritmalarla karşılaştırılması istenmiş, diğerleri için mount vs yardımcı programlarına yamalar yapılması gerektiği ama yine de algoritmanın kendini kanıtlamış bir algoritma olduğundan bahsedilmiş.
Ayrıca diğer yorumda da dosya sisteminin o folder için tuttuğu başlık bilgilerinin (ve hatta sembolik bağların bile) şifrelenmediği için bu sistemin kırılmasının kolay olduğundan bahsedilmiş. Dosya boyutlarının aynı kaldığı (veya göreceli olarak aynı miktarda arttığı) ve böylece sözgelimi benzer boyutlarda olan dosyaların (mesela resimler, dokümanlar) tahmin edilmesinin kolay olduğu ve bunların başlık dosyalarında benzer şeyler yazdığı belirtilmiş. Gerçi bu sonuncusunun bilgiye ulaşmaya çalışan birinin işine yarayabileceği tartışılır ama bunlarla ilgili yorumlarınız nedir ?
0
darkhunter
Şifreli klasörde dosya isimlerinin, başlık bilgilerinin ve boyutlarının şifrelenmemiş halleriyle aynılık yada benzerlik taşıması söz konusu değil.

Klasörün kırılması, emsaller aklımıza geldiğinde imkansız değildir diye düşünüyorum fakat kullanılan şifreleme algoritmasının nispeten yeni olması ve sıralı bağlar kullanmıyor olması sanırım güvenlik konusunda bir avantaj.

Mount aracına yama gerekir mi ?
İşte bu benim kafamı kurcalıyor :)
0
mturker
Başlık bilgilerinin şifrelenmemiş halleriyle değil. Benzer dosyaların başlık bilgilerinin birbirleriyle benzer veya aynı olmasından söz ediliyor. Mesela bir dizinde 20 tane jpeg dosyası varsa bunların hepsinin başlık bilgileri birbirine benzer. Dolayısıyla siz de onların jpeg dosyaları olduğunu bilirseniz (isimleri şifrelenmemişse, veya tahmin ederek yapmaktan bahsediyor heralde) , daha sonra kendinizdeki jpeg dosyalarının başlık bilgilerinden yola çıkıp elinizdeki şifrelenmiş dosyaları çözmeniz mümkündür gibi birşey demek istiyor sanırım. Benim anladığım bu.

Mount aracına yama işini de yine aynı yerde biri söylemiş, diğer algoritmalar bunu gerektiriyor demiş.
0
darkhunter
Anlıyamıyorum...

Söz konusu durumu bilgisayarımda denedim. Daha sonra orjinal başlık bilgileri ile (şifrelenmemiş olanlar), şifreli dosyalarınkini karşılaştırdım. En ufak bir benzerlik yada bu dosyaların kimliğini ifşa edecek küçükte olsa bir ipucu yakalayamadım. Zaten bu dosyaların isimleride şifrelenmişti (öyleyse buradan hareket etmekte mümkün değil).

Mount aracı konusunda bir fikrim yok. Algoritmaların nasıl bir zorunluluk gerektirdiğini bilemiyorum.
0
sundance
Kripto analiz, dediğiniz gibi bir yapıya dayanıyor, basitçe. Fakat bu (bildiğim kadarıyla) uzun zaman önce aşılmış bir zorluk. Sözkonusu (aynı headera sahip) dosyaların hashlenmesi, sözkonusu kriptoanalizi oldukça zor hale getiriyor. Basitçe söylemek gerekirse, ordaki jpg dosyalarının hepsinin başlıklarının şifrelenmiş hali aynı değil. Bu daha basit eski sistemlerde gerçekten de böyleydi ve kripto analiz için en bilindik saldırı yöntemiydi.

Bu problem uzun süre önce aşıldı, zira aksi takdirde aynı şeyi üstünden geçen trafiğin karakterinin bilindiği bütün sistemler için kullanmak mümkün olabilirdi (mesela https) . Zira orda da standart formata sahip .jpg, .gif, .swf dosyaları bulunmakta.

Fakat bahsedilen hash sistemleri sayesinde, aynı verinin şifrelenmiş hali çok değişik sonuçlar çıkartmakta.

0
sundance
EncFS'in yazarının verdiği cevap da benzer

http://www.linuxdevcenter.com/pub/a/linux/2005/04/14/encfs.html

Kısaca "Net olarak bir dosyanın hem kendisini hem de şifrelenmiş halini elinizde bulundursanız bile 128 ya da 256 bitlik AES anahtarını çıkartabilmeniz için elinizde çoooook uzun bir dosya olması gerekir (örnekte dünyanın bütün bilgileri bile olsa denilmekte" Bu haliyle bile gerçekleşmesi ciddi bir bilgisayar gücü gerektirmekte.

Burada önemli olan, günümüz anahtarlarının geçmişteki sabit anahtarlar gibi olmaması. Yani "a harfi yerine b harfi kullanıldı, bütün alfabe de böyle" gibi çalışmayan, tamburlu sistemler kullanılması. Yani a harfi yerine bazen b, bazen k, bazen se a kullanılmakta. Anahtarın tamamının ortaya çıkması için çooook geniş bir örnekleme yapılması gerekmekte.
0
darkhunter
Harika olmuş ;-)
0
e2e
Ben bir türlü sonuç alamadım :(
Debian Testing deposundaki encfs'i kullandım. Fuse modülü için ise fuse-source paketini. İşlem yaparken herhangi bir sorunla karşılaşmadım. Fakat şifrelenmiş bir klasörüm olmadığı gibi bağlamaya çalıştığım mount dizini de bomboştu.

İşte işlem:
debian:/home/e2e# encfs /home/e2e/test /home/e2e/m_test
Creating new encrypted volume.
Please choose from one of the following options:
enter "x" for expert configuration mode,
enter "p" for pre-configured paranoia mode,
anything else, or an empty line will select standard mode.
?> p

Paranoia configuration selected.

Configuration finished. The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 2:1:1
Filename encoding: "nameio/block", version 3:0:1
Key Size: 256 bits
Block Size: 512 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism. However, the password can be changed
later using encfsctl.

New Encfs Password:
Verify Encfs Password:
debian:/home/e2e#
0
zentoo
Bu makale için teşekkür ederim. Çok yararlı olacak. Ancak benim sorularım var:


1 - ENcFS PPC mimarisi için mevcut olacak mı?
2 - LinuxBIOS a yerleştirme girişimi olabilir mi?
3 - Sistemi reboot etmeden mesela RAID1 için Mirror diski yada stripe diski eklesek EncFS işlevini kaybeder mi?



Teşekkür ederim. :-]
0
ErtugrulErata
sundance'ın bu makalesinden yola çıkarak encfs i kendi sistemime kurdum.
iki adet sorum var:

encfs ~/sifreli ~/sifresiz yazdığımda sifreli dizinini gizli dosya olmasını isteyen bir uyarı geliyor. bunda bu hata ok sanırım ?

diğer soru şu fuse her çekirdek güncellemede yeniden mi derlenecek?
0
ttk
Çok güzel ve faydalı bir yazı teşekkür ederim.
Ayrıca zamanında dikkatimi çekmeyen bu yazıya bu gün ek mesaj gönderip mesajı farketmeme sebep olan arkadaşa da teşekkürler :)
Görüş belirtmek için giriş yapın...

İlgili Yazılar

del.icio.us

cbc

del.icio.us yer imleri(bookmark) saklamak için kullanılan bir site. Tüm üyelerin yer imlerini incelemek mümkün.

http://del.icio.us/rss/uyeadı adresini ziyaret ederek yerimlerini rss olarak almak, /html/uyeadı adresini ziyaret ederek düz html olarak aynı veriye erişmek mümkün.

TT'den az kullanılmış araba

butch

fazlamesai.net'e soralım: J2EE mi yoksa .NET mi?

FZ

MIT hocalarından Philip Greenspun tercihini .NET'ten yana kullanmış. Greenspun'ın 11 Nisan 2002 tarihli yorumlarından sonra en son 8 Mart 2005'te bir yorum gelmiş. Son 3 sene içinde gelen yorumlar ağırlıklı olarak .NET taraftarı yorumlar. Genel hava şu: Eğer bir sürü programcı çalıştırmak istiyorsanız, çok büyük şirketseniz, bol bol paranız varsa, vs. buyrun J2EE ile sistem geliştirin. Daha sıkı koşullar altında çalışıyorsanız şu anda .NET çok daha hızlı ve etkin sistem geliştirmeye ve programlamaya izin veriyor. Tabii buna itirazlar da var: EJB'den yola çıkarak J2EE'yi kötüleme hatasına düşmeyin! gibi. Bir başka yazılımcı ise "yahu bir satır kod değiştiriyoruz, application server'ı başlatmak 3 dakika sürüyor, el insaf" şeklinde şikayet ediyor.

IT sektörünün acar FM üyeleri bu konuda ne der? Acı dolu yazılım deneyimlerini bizimle paylaşmak isteyenler, hodri meydan, yanınızda rakamlarla gelin ve hangi platformu neden tercih ettiğinizi güçlü bir şekilde açıklayın.

İTÜ, Teknoloji ve Vizyon

FZ

28 Haziran 2001 tarihinde, bir İTÜ öğrencisi olarak, İTÜ Otomasyon binasında yaz okulu kaydımı yaptırmaya çalışırken, beklediğim 2 saatlik süre içinde aklımdan teknoloji, insanlık ve Türkiye ile bağlantılı pek çok şey geçti ve sizlerle paylaşmak istedim.

Fazlamesai 1 yaşında

butch

Az önce Sundance'e fazlamesai'nin birinci yılı dolunca birşeyler yapalım dedim ve o anda farkettim ki fazlamesai ben bunları söylerken zaten 1 yaşına girmiş. Bir anda garip oldu ortalık ve biraz gülüştük. Evet, fazlamesai.net'te ilk haberin yayınlanmasından bu yana tam 1 yıl geçmiş. Bunu sizlerle de paylaşalım dedik. Bizim için çok zevkli geçti geçtiğimiz bir sene ve ben kendi adıma çok şey öğrendim siteye katkıda bulunan herkesten.
Neyse saçmalamaya başlamadan durayım ve seneye de buralarda ve daha güçlü olacağımız umudunu içimde taşıdığımı söyleyeyim. Herkese teşekkürler...