Tag Archives: kripto

Ccrypt İle Şifreleme

Platform bağımsız ve kullanması kolay bir uygulama olarak, ccrypt, dosya şifrelemede kullanmak için gayet basit ve güvenli, ayrıca sistem kaynaklarını da bir o kadar az tüketen bir araç olarak durmakta. Bu basit rehberi en azından denemeniz ve hatta kalıcı olarak kurup kullanmanız için hazırladım.

ccrypt, dosyaları şifrelemek ve şifresini çözmek için kullanılan, Rijndael Blok Şifresi üzerine kurulu açık kaynak, özgür yazılım bir uygulamadır. ccrypt’in sahip olduğu algoritma simetrik değildir. Bununla birlikte, ccencrypt ile dosya şifrelerken ccdecrypt ile şifre çözemektedir (ccrypt -e ya da ccrypt -d ile de yapabilirsiniz). Ayrıca ccat ile şifresiniz çözdüğünüz dosyayı sadece terminal ekranına yazdırabilir ve bilgisayarınızda geçici dosyalar bırakma riskinizi düşürebilirsiniz.

  • ccrypt güvenliği

ccrypt 256-bitlik bir şifrelemeye sahiptir. AES’in de seçtiği Rijndael Blok Şifresi‘ni kullanmaktadır. ccrypt’in AES ile farkı ise, AES 128-bit blok boyutu kullanırken kullanırken, ccrypt, Rijndael’in izin verdiği 256-bit blok boyutu kullanmaktadır. Bu onu elbette AES’ten daha az güvenli yapmamaktadır. Sadece AES standartına sahip değildir. Ayrıca, bu şifreleme eğer kırılırsa duyulması da o kadar çabuk olacaktır.

ccrypt ile bir dosyayı şifrelerseniz eğer, ccrypt o dosyanın üzerine yazacak, yeni bir dosya oluşturmayacaktır. Bununla birlikte, artık harddiskinizde orjinal dosya olmayacaktır. Fakat, siz bu dosyayı silseniz dahi donanım ataklarında harddiskiniz/ram’iniz/takasınız bu dosyanın izini taşıyabilir. Eğer bu izleri silmek isterseniz, bunun için çeşitli araçlar mevcut. Bunlardan bir tanesi GNU/Linux için wipe.

Eğer, şifreleme esnasında “–tmpfiles” parametresi kullanırsanız, orjinal dosyanın üzerine yazmak yerine geçici bir dosya oluştabilir, ardından da wipe ile silebilirsiniz.

kame ~ % ccencrypt --tmpfiles sifrelenecekdosya && ls

sifrelenecekdosya
sifrelenecekdosya.cpt

  • Dosya ve dizin şifreleme, şifre çözme

ccrypt ile herhangi bir dosyayı sorunsuz bir şekilde şifreleyebilirsiniz. Fakat, sizinleri şifrleyemezsiniz. Dizin için farklı bir yol izleyeceğiz.

Dosya şifreleme;
kame ~ % ccencrypt sifrelenecekdosya
Enter encryption key:
Enter encryption key: (repeat)

Gördüğünüz üzere ccencrypt (ya da ccrypt -e sifrelenecekdosya) ile dosyamızı anahtarımız ile şifrelemiş olduk. Anahtarı ise unutmamanız çok önemli. Tamamen unutursanız eğer şifrelenen dosyayı kurtarmanız mümkün olmayacaktır.

Dizin şifreleme;
kame ~ % tar -zcvf sifrelenecekdizin.tar.gz dizin/
kame ~ % ccencrypt sifrelenecekdizin.tar.gz

İlk komutumuz dizin adındaki dizinimizi (balık adındaki balık, komik değil biliyorum.) tar.gz formatında sıkıştırmak olacaktır. Ardından arşiv dosyamızı ccrypt ile sorunsuz bir şekilde şifreleyebilirsiniz.

Şifre çözme;
kame ~ % ccdecrypt sifrelenmisdosya.cpt
Enter decryption key:

ccrypt’in şifrelediği dosyaların uzantısı “.cpt” olarak değiştirmektedir. Eğer şifreyi çözmek isterseniz kullandığınız ccdecrypt ile (ya da ccrypt -d sifrelenmisdoya.cpt) anahtarınızı girerek dosyanızın şifresini çözebilirsiniz.

  • Anahtarımı unuttum, ne yapmalıyım?

Eğer anahtarınızı unutmuşsanız, şifrelediğiniz dosyaya erişmeniz mümkün olmayacaktır. Fakat, ccguess ile şifrenizi yanlış yazmış olabileceğinizi düşünerek ne olabileceğine dair bir kalıp deneyebilirsiniz.

Diyelim ki, şifrenizi “abcdefg” yaptınız (ben yaptım siz yapmayın), ve aklınızda sadece a, b, c, d ile e’yi içerdiği kalmış;

kame ~ % ccguess sifrelidosya.cpt
Enter approximate key: abcde


Generating patterns...1..2..3..4..5..sorting...done.

Possible match: abcdefg (2 changes, found after trying 1890639 keys)

Burada şu unutulmamalı; anahtarınız ne kadar çok karakter içerirse doğru tahmin için o kadar çok karakteri doğru hatırlamak zorundasınız, yoksa çabalarınız boşuna olacaktır.

  • Şifreleme esnasında sistem çöktü, peki şimdi ne olacak?

Örneğin, elinizde 100mb bir dosya var ve tam bunu şifrelerken ya da şifreyi çözerken sisteminiz kitlendi, elektrikler gitti vs. Ayrıca, bu dosyanın yedeğini şifrelemeden önce almadınız ve tek kopya şifrelemeye çalıştığınız dosya. Öncelikle yapmanız gereken şifrelenen dosyayın şifresini “-m” parametresi ile çözmek olacaktır.

kame ~ % ccdecrypt -m bozukdosya.cpt

Bu yöntemle dosyanın çözülen şifrelenmiş kısmı ile bozuk kısmından oluşan 2 ayrı dosya oluşturacak. Orjinal dosyayı bu iki kısmı birleştirerek tekrar oluşturabilirsiniz, fakat şifreleme ve çözümün birleştiği noktadaki 32-63 byte’lık bölümü malesef kaybedeceksiniz.

  • Anahtar oluştururken neleri kullanmamalı?

Yazdırılabilir ASCII karakterlerin hepsini kullanabilirsiniz. Sadece ‘\n’, ‘\r’ ve ”’ı kullanamazsınız. Bunların dışında, işletim sisteminiz eğer bazı özel karakterleri yazdıramıyorsa, doğal olarak onları da anahtar oluştururken kullanamayacaksınız.

  • Windows’ta şifreledim, GNU/Linux veya Mac Os’ta açabilir miyim?

Evet! ccrypt, platform bağımsız bir uygulamadır.

  • Şifrelenecek dosyanın boyutu önemli mi?

Hayır! İstediğiniz büyüklükte bir dosyayı ccrypt ile şifreleyebilirsiniz. Önemli olan sisteminizin bunu kaldırabilmesi.

Tagged , , , , , , , , , , , , , , , , , ,

Arka Kapı

Eğer işlemcinizin üreticisi (AMD, Intel, Qualcomm vd.) NSA tarafından arka kapı bırakmaya zorlanmışsa ya da herhangi bir donanımızda bu tarz gizlilik ihlalleri yapılmışsa, kendinizi nasıl korumaya çalışırsanız çalışın NSA sizinle ilgili her şeyi görebilir.

Daha ayrıntılı bir açıklama yapmam gerekirse; kullandığınız donanımın geliştirme aşamasında, Büyük Birader sizleri izleyebilmek için üreticileri arka kapı bırakması için zorlamış, çip geliştirmesinde doğrudan veya dolaylı olarak katkıda bulunmuşsa kendinizi gizleyebilmeniz pek de mümkün olmayacaktır. Buradaki izleme daha çok sizin yaptığınız her şeyi kaydetmek değil de kendilerine bir arka kapı bırakmak, zamanı geldiğinde ya da ihtiyaç duyulduğunda buna başvurarak gerekli bilgiyi temin etmektir.

Bu tarz bir veri temini her şeyi kaydedip samanlıkta iğne aramaktan çok değerli veriyi almaya yarar. Kendini mükemmel bir şekilde kamufle etmiş böyle bir yöntem, kullandığınız herhangi bir cihazın rahatça izlenmesine olanak sağlayacaktır. Bir diğer deyişle, NSA kendi işleri için hazırlattığı özel çiplere sahip olacak, tüketici ise bu çiplere sahip donanımları bunun farkında bile olmadan satın alarak kullanmaya başlayacak. Her şey uzaktan bir komplo teorisi gibi durmaktadır. Fakat son sızan bilgilere göre buna benzer, daha doğrusu bunu ima edecek bir çalışma 2007 yılında başlamış. Google ise bu dönemde kendine ait her servis için noktadan noktaya (man in the middle yok demek) kriptolanmış iletişim için çalışmaktaydı ve Snowden’dan sonra bu işi iyice hızlandırdı. Bu, şu işe yarayacak; eğer biri verileri bir şekilde Google’dan temin etmek isterse Google istese bile bu verileri veremeyecek.

Bu noktada, Windows ve Mac OS kullanıcıları ciddi anlamda tehlikede olduğu varsayılabilir. GNU/Linux kullanıcıları nispeten daha az, *BSD kullanıcıları ise daha da az tehlikedeler. Art niyetli bir firmware, işlemci (donanım) üzerindeki bu tarz arka kapıları aktive edebilir ve bundan istediği gibi faydalanabilir. Siz ise işletim sisteminizi, donanım yazılımınızı güncelleştirdiğinizi zannedebilirsiniz. Kulağa çok çılgınca geldiği doğru. Böyle bir şeyin yapılmış olabileceğini ise ancak ileri düzey bir elektron mikroskobu ve ileri düzey teknik aletlerle işlemcinizi inceleyerek görebilirsiniz.Böyle bir şeyi test etmek ise tüketicilerin boyunu aşmaktadır.

Bir Kernel hacker’ı olan Theodore Ts’o, Intel’in /dev/random’ı sadece RDRAND’e dayanması gerekliliğindeki ısrarını neden reddetiğini de bu üstte anlattığım “komplo teorisi“‘ne dayanarak söylüyor. Diyor ki; “Denetlenmesi kesinlikle mümkün olmayan, bir çipin içine gizlenmiş uygulama demek olan sadece donanımsal RNG‘ye güvenmek, KÖTÜ bir fikirdir.” Örneğin, eğer Intel, RNG’yi doğrudan işlemcileri içine yerleştirirse kullanıcıların yazılımı kullanması yerine yazılımın kullanıcıları kullanmasına olanak sağlamış olacaktır. Başka bir deyişle, eğer RNG bir anahtar ile dağıtılmakta ise bunu tespit edebilmek imkansız olacak. Fakat kullanıcı yazılıma dayanarak RNG’yi gerçekleştirirse, yazılımdaki buna benzer bir arka kapı ise kolaylıkla farkedilebilecektir.

Ne yapalım, harddiskimizi kriptoladıktan sonra bilgisayarımızın üzerine benzip döküp yakalım mı?” dediğinizi duyar gibiyim. “NSA beni ne yapsın?” diyerek espri yaptığınızı biliyorum. Fakat bunu her normalleştirdiğinizde size dönüşü daha kötü olacak, daha çok gizlilik ihlali içerecek, sizleri aptal yerine koyacak ve birer köleye çevirecektir. Farkında olun, uyanık olun, hakkınıza sahip çıkın!

Tagged , , , , , , , , , , , , ,

PGP Kullanın

Bir uygulamayı nasıl kullanabileceğinize dair rehberler hazırlanırken, hazırlayan kişi -kaçınsa da- kendisi nasıl kullanıyorsa öyle anlatır. Bu bir hata değildir, bunda yanlış bir şey yoktur. Az bildiği anlamına da gelmez. Aynı şekilde alışkanlıklarının dışına çıkması onu anlatacağı şeyde hata yapmaya da götürebilir.

Böyle bir giriş yaptıktan sonra PGP üzerine hazırlanan bu rehberin, yazan kişinin kullanım çerçevesinde ilerleyeceği için “eksik” olduğu düşünülen noktalar aslında bilerek boş bırakılmıştır. Adım adım ilerleyecek olursak:

  1. PGP, e-posta ve dosyaların güvenliği için bir kriptolama ve doğrulama (matematiksel kısmı için aramaya inanın) aracıdır. Sizlere gönderdiğiniz dosyanın ya da e-postanın şifrelenmesini ve başkaları tarafından okunmamasını (ya da sadece gönderdiğiniz kişi tarafından okunabilmesini), gönderen kişinin kimliğini doğrulamayı ve gönderilen dosya ya da e-postanın yapısının bozulmadan size ulaşmasını (ya da bozulup bozulmadığını anlamanızı) sağlar.
  2. Kullandığınız e-posta sağlayıcı ne kadar güvenli olursa olsun e-posta mahremiyeti artık ayaklar altına alındığı için gönderdiğiniz e-postaları bu yöntemle göndermeniz güvenliğinizi kat kat arttıracak, e-posta içeriğiniz üçüncü şahıslar tarafından okunamayacaktır.
  3. PGP anahtarları oluşturmak için açık kaynak veya ticari yazılımlar mevcuttur. GNU/Linux kullanan biri olarak sadece GPG; GnuPrivacyGuard ve Terminal üzerinden gideceğim. O yüzden açık bir terminaliniz olursa hemen başlayabilirsiniz. Çünkü her şeyi onun üzerinde yapacağız. “#” komut, “>” ise terminal çıktısıdır.

Dağıtımınızın ne olduğunu bilmediğim ve bilemeyeceğim için paket yöneticinizden gnupg‘nin kurulu olup olmadığına bir bakın. Eğer kurulu değilse kurun. Her şeyin artık hazır olduğunu varsayarak;

# gpg --gen-key
> Please select what kind of key you want:
> (1) RSA and RSA (default)
> (2) DSA and Elgamal
> (3) DSA (sign only)
> (4) RSA (sign only)

Burada sizlere ne tür bir kriptolama yöntemi kullandığınız soruluyor. Varsayılan olan 1’i seçip (1 ve enter) yolumuza devam ediyoruz.

> RSA keys may be between 1024 and 4096 bits long.
> What keysize do you want? (2048)

Anahtarınız ne kadar güçlü olacak burada belirleyeceğiz. En büyük olanı iyidir diyoruz. 4096 yazın ve devam edin.

> Please specify how long the key should be valid.
> 0 = key does not expire
> = key expires in n days
> w = key expires in n weeks
> m = key expires in n months
> y = key expires in n years
> Key is valid for? (0)

Burada anahtarınızın ömrünü biçeceğiz. Bir nevi son kullanım tarihi. Sınırsız olmasını pek tavsiye etmiyorum. 3-5 gün sonra dolması da bana mantıklı gelen bir şey değil (eğer paylaşmayacaksanız). İdeal olarak 1-2 sene seçilebilir. 1y ya da 2y yazarak devam edebilirsiniz.

> GnuPG needs to construct a user ID to identify your key.
> Real name:
> Email address:
> Comment:
> Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Adınız veyahut takma adınız, kullanacağız e-posta adresiniz, anahtarla ilgili -varsa- yorumunuz (bu daha çok neden kullandığınız, ne işi yaradığı ile ilgili olabilir), son olarak O yazarak devam ediyoruz. Karşınıza şifre belirlemeniz için bir pencere açılacak. Buraya büyük, küçük harf, rakam ve işaretler kullanarak en az 10 karakterlik bir şifre yazıyorsunuz. İleride unutmayacağınız fakat güçlü bir şifre yazmanız sizin yararınıza olacaktır.

Anahtarın oluşturulabilmesi için rastgele bytes’a ihtiyaç olacak. Bu yüzden film açın, tarayıcınızda sitelere girin, metin editörüne bir şeyler yazın. Anahtarın oluşması biraz zaman alacaktır. Oluştuğunda ise:

> gpg: key ******** marked as ultimately trusted
> public and secret key created and signed

Şeklinde bir çıktı alacaksınız. ******** (rakam ve harflerden oluşan 8 hane) sizin anahtarınızın ID’si olmaktadır. Bu ID ayrıca 40 hanelik fingerprint’in son 8 hanesidir.

Sıra geldi oluşturduğumuz anahtarımızı nasıl kullanabilir, paylaşabiliriz, yedekleyebilir ve silebiliriz kısmına. Diyelim ki elinizde önemli bir dosya var ve kimsenin açık kurcalamasını istemiyorsunuz:

# gpg -e ******** dosya.txt

Dosyanızın kriptolanmış hali olan dosya..txt.gpg‘nin oluştuğunu göreceksiniz. Açmak isterseniz:

# gpg -d dosya.txt.gpg
# gpg --output dosya.txt --decrypt dosya.txt.gpg

Anahtarınızı paylaşmanızın iki yolu var. Biri anahtarınızı dışa aktarıp (ASCII-armored) göndermek, bir diğeri de anahtar sunucularına yollamak. ASCII-armored için:

# gpg --output anahtarım.asc --export -a ********

Böyle e-postanız üzerinden anahtarım.asc‘yi arkadaşlarınıza gönderebilirsiniz. Herhangi bir sunucuya göndermek için:

# gpg --send-key ********

Böylece arkadaşlarınız paylaştığınız anahtarınızı kullanarak sizlere kriptolanmış e-posta veya dosya gönderebilecekler. Şimdi size gönderilen bir anahtarı nasıl aktarabileceğinize bakalım:

# gpg --import arkadaşımınamahtarı.asc

Arkadaşınız eğer anahtarını sunuculardan birine göndermiş ve siz sadece ID’sini biliyorsanız:

# gpg --recv-key ********

Size gönderilen bir anahtarı doğrulamak isterseniz muhakkak fingerprint’ini karşılaştırın.

# gpg --fingerprint ********

Aynı şekilde anahtarınızı imzalamanız da anahtarı kullanan kişilere anahtarın sahibi olduğunuzu söyler.

# gpg --sign-key ********

Çok önemli bir adım olarak anahtarınızı nasıl yedeklersiniz? Öncelikle anahtar(larınızı) listelemek için:

# gpg --list-keys

Açık anahtarınız; pub 4096R/ ve gizli anahtarınız; sub 4096R/ ‘den sonraki 8 karakterlik kısımdır. Açık anahtarınızı yedeklemek için;

# gpg -ao açıkanaharım.key --export ********

Gizli anahtarınızı yedeklemek için;

# gpg -ao gizlianahtarım.key --export-secret-keys ********

Silinirse geri yüklemek için;

# gpg --import açıkanahtarım.key
# gpg --import gizlianahtarım.key

Bu yedekleri usb diskinizde saklayabilir, cd’ye yazdırabilirsiniz. Önemli olan bunları kaybetmemek. Bununla birlikte, anahtarı iptal etmek (revoke) bilmemiz gereken başka bir şeydir. Bir anahtar neden iptal edilire gelirsek (bu bilginiz olsun kısmı):

  1. Şifrenizi unutmuşsunuzdur ve hatırlama ihtimaliniz yoktur.
  2. Anahtarınızı kaybetmişsinizdir ve geri yükleyemiyorsunuzdur.
  3. Birileri tarafından kullandığınız şifre bulunmuştur.

Her türlü kötü durumları bu konuda kafanızda canlandırabilirsiniz. Ama temel olarak bu üç neden kafanızın bir yerinde bulunsun. İptal edilmiş bir anahtar ile karşılaştığınızda hatırlarsınız.

Revoke anahtarı oluşturmak için:

# gpg --gen-revoke ********

Anahtarı aktarmak için:

# gpg --import revoke.asc

Eğer anahtarı bir sunucuya göndermişseniz revoke edilmiş anahtarı tekrar göndermeniz o anahtarın iptal edildiğini gösterecektir.

Son olarak, oluşturduğunuz anahtarı ve sahip olduğunuz anahtarları silmek isterseniz:

# gpg --delete-secret-key ********
# gpg --delete-key 'arkadaşım@epostası'

O kadar uğraştık, bir e-posta göndereceğim ama nasıl diyorsanız, diyelim ki göndereceğiniz kişinin anahtarı sizde mevcut ve bir metin editörü ile (ben vim kullanıyorum bana bakmayın) e-postada anlatmak istediklerinizi yazdınız;

# gpg -e -u 'BenimanahtarIDim' -r 'ArkadaşımınanahtarIDsi' eposta.txt

Eklentiye eposta.txt.gpg‘yi koyun ve gönderin. Arkadaşınız yukarıda bahsettiğimiz şekilde e-posta.pgp.txt’yi açacak ve e-postayı okuyacaktır. Ben biraz eski kafalı olduğum için bu şekilde yapıyorum. Kullandığınız e-posta istemcisi (Thunderbird, Claws vs) ya da web tabanlı e-posta istemciniz bunu otomatik yapıyor olabilir. Onu sizin keşfetmeniz gerekecek.

Tekrar tekrar söylemeye gerek yok ama ben gene söyleyeyim. Kullandığınız e-posta servisi ne kadar güvenilir olduğunu iddaa ederse etsin, siz PGP kullanın!

Tagged , , , , , , , , , , ,