29 Nisan 2017 Cumartesi

Kaynak kodun açık olması güvenliği nasıl etkiler?

Özgür yazılımla yeni tanışmış olanların aklına ilk gelen sorulardan biri kaynak kodun açık olmasının bir güvenlik sorunu oluşturup oluşturmayacağı oluyor. Madem programın kaynak kodu ortada saldırganlar bunu saldırı için de kullanabilirler, bu da olumlu bir şey değil diye düşünüyor büyük kalabalıklar. Güvenlikle ilgili neredeyse bütün yazılımların kaynak kodlarının açık olması, kullandığımız bütün şifreleme araçlarının kodlarının ortada olması içinizi rahatlatmıyorsa birlikte bakalım durum gerçekten böyle mi?

Algoritmayı gizleyerek güvenlik sağlanamaz

Kriptografi dersinin başlangıcında anlatılan konu budur: bir algoritmayı gizleyerek onu daha güvenli hale getiremezsiniz. Konuyla ilgisi yok ama gizlenmesi gereken şey algoritma değil anahtar olmalıdır. Eğer güvenlik için tek dayanağınız algoritmanın gizliliği olursa o sızdırıldığında (saklanmak istenen her şey bir gün sızdırılacaktır) algoritmanın yenilenmesi gerekecektir. Bunun ne kadar büyük maliyetli bir iş olacağı düşünülünce açıklıktan başka alternatif olmadığı da görülecektir.

Hatasız yazılım olmaz!

Yazdığınız programın kaynak kodunu ister açın isterseniz kapalı tutun mutlaka hatalar/açıklar içerecektir. Yazılımı tek başınıza sizin yazmış olmanız veya bir grupla geliştirmiş olmanız bu gerçeği değiştirmeyecektir. Ne kadar kalabalık bir geliştirici topluluğunuz olursa hatalar da o kadar azalacaktır. Benzer şekilde test için projeye ayırabileceğiniz kaynak da hataların azaltılmasına olumlu katkıda bulunacaktır. Projenizin kaynak kodlarını geliştirici ekipten başka kimsenin görmesine izin vermezseniz bütün bu yük sizin üzerinizde olacaktır. Halbuki projenizi bir özgür yazılım veya açık kaynak lisansıyla lisanslarsanız kaynak kodlarınıza başkaları da bakıp hataları size bildirebilecek veya daha da iyisini yapıp iyileştirmeleri size gönderebilecektir. Eğer benim projeme kim bakacak diyorsanız kendi endişenizi kendiniz ortadan kaldırmışsınız demektir ama projenizi dışarıdan katkı almaya uygun bir şekilde lisanslarsanız projeye ayıracağınız bütçe ile bedelini ödeyemeyeceğiniz geliştiricilere ve testçilere kavuşabilirsiniz.

Özgür yazılımlara daha çok göz bakar

Yazılımın geliştiricisi değil de kullanıcısı iseniz daha çok kişi tarafından ortaklaşa geliştiriliyor olması ve daha fazla test edilmiş olması sizin için daha az hata barındıran bir yazılım anlamına gelecektir. Neden bir şirketin çalıştırabileceği sınırlı sayıda yazılım geliştiriciye güvenebilirken dünyanın dört bir tarafına dağılmış çok daha büyük kalabalıklara güvenmeyeceksiniz? Hangi şirket bir tarayıcı yaklaşık 5000 kişinin kod göndermesine, yani yazılımın kodlarını okumasına kaynak ayırabilir? Bunu ancak özgür yazılımın gücü sağlayabilir.

Yazılımların hataları çoğunlukla kod okuyarak bulunmaz

Bir projenin kaynak kodlarını okuyup hatasını bulmak tahmin edilenden çok daha zor bir iştir. Elbette yazılımların hataları, açıkları kodları da okunarak tespit edilebilir ama yukarıdaki örneğe bakarsanız yaklaşık 16 milyon satırlık bir projede bunun pek kolay bir iş olmayacağını tahmin edebilirsiniz. Peki yazılımların açıkları nasıl bulunuyor? Belirli koşullar altındaki davranışlarına bakılarak elbette. Neredeyse bütün GNU/Linux dağıtımlarının varsayılan olarak kullandığı kabuk olan bash'in 1989'dan bu yana içerdiği bir hata ancak 2014'de görülebildi. Eğer kodu okuyup açığı tespit etmek sanıldığı kadar kolay olsaydı bu 25 yıldan kısa sürerdi herhalde.

Özgür yazılımların açıkları çok hızlı kapatılabilir

Özgür yazılımlar kullanıcılarına yazılım üzerinde değişiklik yapma ve bu değişikliği dağıtma hakkı verdiklerinden bir yazılım için geçerli bir hata veya açık bulunduğunda onu mutlaka geliştiricinin düzeltmesi gerekmez. Yazılımın geliştiricisini veya ait olduğu firmayı beklemek zorunda kalmazsınız özgür yazılım kullanırken.

Yazılımın kaynak kodlarının açık olması elbette yukarıda saydığım avantajlar için yeterli değildir. Eğer kullanıcılar yazılımı istedikleri gibi çalıştıramıyorsa, değiştiremiyorsa, dağıtamıyorsa veya değiştirdiği halini dağıtamıyorsa yazılım bu getirilerden mahrum kalacaktır. Yani sadece kaynak kodun açık olmasından sihirli bir iyileştirme beklememek gerekir. Bu avantajları bize sağlayan şey özgür yazılımdır.

6 Nisan 2017 Perşembe

Tam sayılarda kalansız bölme

Ortaokulda hepimizin öğrendiğimizi sandığımız ama pek azımızın öğrendiği bir konu tam sayılarda kalansız bölme konusu. Diğer bütün konular gibi bu konu da sadece kuralları budur diye anlatıldığı için sadece ikiye, üçe ve beşe bölme kurallarını aklımızda tutabiliyoruz. Onların da neden öyle olduğunu bilmediğimiz gibi sorgulamıyoruz bile. Bu konuyu neredeyse 15 yıldır bilgisayar mühendisliği birinci sınıf öğrencilerine soruyorum ve doğru öğrenmiş neredeyse kimseyi görmedim. Aslında o kadar kolay bir konu ki bir kere doğru anlatılsa insan istese bile unutamaz. Muhtemelen bu yazıyı okuyan kimsenin işine yaramayacaktır ama çocuklarınıza, hala kızına, emmioğluna falan anlatırsınız diyerek kısaca açıklamak istiyorum.

Önce hızlıca bildiğimiz kuralları hatırlayalım. Bir tam sayının ikiye bölünebilmesi için son rakamının (birler hanesinin) 2, 4, 6, 8 veya 0 olması gerekir. Beşe bölünmesi için ise birler hanesinin 5 veya 0 olması gerekiyor. Buraya kadar çok mantıklı görünen kurallar dizisi konu üçe bölünmeye geldiğinde değişiyor. Artık son basamağa değil bütün basamaklardaki rakamların toplamına bakmak gerekiyor. Bütün rakamlarının toplamı üçe bölünüyorsa sayı da bölünür diye öğretiyoruz çocuklara. Evet doğrusu bu ama ne alakası var sayının üçe bölünmesiyle rakamlarının toplamının üçe bölünmesinin? Öğrencilerin çok büyük çoğunluğu bu soruyu sormuyor bile, soranları da öğretmenler kural böyle diyerek geçiştiriyor. Matematiği bile böyle öğrettiğimiz çocuklar ileride hiçbir şeyi sorulamayan büyüklere dönüşüyorlar. Halbuki neden 13 üçe bölünmüyor da 12 ikiye bölünüyor (son rakama bakıyorsak aynı kriteri sağlıyor ikisi de) veya 15 üçe bölünüyor da 11 ikiye bölünmüyor (rakamları toplamına bakarsak böyle olmalıydı) soruları akıllara bile gelmiyor.

Hele bir yediye bölünme kuralı var ki akıllara zarar. Üniversiteye gelmiş ve bu kuralı hatırlayan kimse olmuyor. Aşağıya vikipedi'den alıntılıyorum, neden kimsenin hatırlamadığını hemen göreceğiz:
Sayının rakamlarının altına birler basamağından başlayarak (sağdan sola doğru) a b c d e f 2 3 1 2 3 1 - + sırasıyla ( 1 3 2 1 3 2 ...) yazılmalı ve şu hesap yapılmalıdır: ( 1.f + 3.e +2.d ) - ( 1.c + 3.b + 2.a ) = 7.k + m ( k, m: tamsayı) Sonuç, 7 veya 7 nin katları ( m = 0 ) olursa, bu sayı 7 ile tam olarak bölünür. Ayrıca bu sayı 10a + b olarak yazıldığında a - 2b sayısı 7'ye bölünüyorsa, asıl sayı 7'ye bölünebilir.
Aşağıdaki gibi anlatılsa hepimiz üçe bölünme kuralının neden sayının basamak değerlerinin toplamıyla ilgili olduğunu kolayca görebiliriz:
Bu örnek üç basamaklı bir sayı için yazıldı ama sayının kaç basamaklı olmasıyla ilgisi olmadan genişletilebileceği herkes için açık olmalı. Bir kere böyle düşünmeye başlayınca ikiye bölünme kuralı da kolayca yazılabilir:
Gördüğümüz gibi aslında ikiye ve üçe kalansız bölme kurallarında bambaşka şeylere bakmıyoruz ama bu kadar kolay bir konu neden doğru anlatılmıyor anlamak çok güç doğrusu. Son olarak yediye bölünme kuralını bir kere de biz yazalım. Bunu da unutacaksınız ama gerektiğinde çıkartabileceğinizi bileceksiniz. Bu kuralı dört basamaklı sayılara ve daha fazlasına genişletmek de son derece kolay olacaktır:
Ülkede bir şeyler iyi yapılsın istiyorsak sadece kuralları ezberletmeye çalışmak yerine matematiğin içindeki güzellikleri ve yapılan işlerin doğasını anlatmalıyız çocuklarımıza. Yaptığı işlemi neden yaptığını bile bilemeyen biri nasıl onun üstüne bir şey ekleyebilir?

5 Nisan 2017 Çarşamba

Eposta üniversiteler için ne anlama geliyor?

Bir önceki yazımda üniversitelerin %52'sinin eposta servisini kendi kontrolü olmayan şirketler aracılığı ile verdiğini yazmıştım. Üniversitelerin %17'sinin de eposta sunucularını MS işletim sistemleri üzerinden sağladığı düşünülünce konuya özgür yazılım açısından bakan biri için durum oldukça kötü görünüyor. Bu yazıda da üniversiteler neden bu tercihi yapıyorlar ve sonuçları neler oluyor konularını tartışmak istiyorum.

Biz yapamayız, ara eleman olalım fikrinin bir uzantısı

Üniversitelerin üreten ve paylaşan kurumlar olması durumunda neler yapabildiğinin dünyada pek çok örneği var BSD (Berkeley Software Distribution), wu-ftpd (Washington University ftp daemon) ve (MIT tarafından geliştirilen) Kerberos diğer pek çokları arasından bir çırpıda aklıma gelenler. Elbette eposta sunucularını kendimiz tutsak fezaya bayrak dikecektik, dışarı verdiğimiz için dikemiyoruz demiyorum ama eposta sunucusunu dahi kendi ayakta tutamayan bir üniversite nasıl olacak da dünyada yapılmamış bir işi kendi bilgi işleminden bekleyecek bilemiyorum. Eposta sunucularının diğer bütün sunucu servisleri gibi sorunlar çıkarttığı tahmin etmesi zor olmayan bir gerçek ama bunları çözmeye çalışmak, bu çözümleri başkalarıyla paylaşmak harcanan emeğe değecek bir iş bence. Sunucu servislerini dışarı taşımak bilgi işlemleri sorunları çözebilen birimler olmaktan sorun raporlayan birimlere dönüştürmek demek oluyor.

Bu servisler gerçekten "bedava" değil

Ne Google ne de Microsoft üniversitelere eposta hizmeti verirken belirli kullanıcı sayılarına kadar ücret talep etmiyor. Bu hizmeti sonsuza dek ücretsiz vereceklerinin, hatta vereceklerinin garantisi de yok. Yakın gelecekte bu servisi ücretli hale getireceklerini de düşünmüyorum doğrusu. Bir üniversitenin binlerle ifade edilen personelinin, onbinlerce öğrencisinin epostalarına üste para vermeden sahip olabilen bir kurum bundan neden vazgeçsin ki zaten? Peki bedava olmayan ne o zaman? İnternet bağlantısı tabi ki. Bilmeyenler için yazayım; ülkemizde üniversiteler internet bağlantısı için kendi bütçelerinden bir harcama yapmıyorlar. TÜBİTAK'a bağlı ULAKBİM bütün devlet üniversitelerinin bağlantıları için faturayı kendisi ödüyor. Durum böyle olunca üniversitelerde internet bağlantısı sanki ücretsizmiş gibi bir algı oluşuyor ama durumun öyle değil.

Telekom altyapısına çok az yatırım yapıldığından ULAKBİM üniversitelere çok kısıtlı bant genişlikleri verebiliyor. 50.000 öğrencisi ve 2000 personeli olan bir üniversitenin hızının yaklaşık 1Gbit/s olduğunu söyleyebilirim (çoğu anadolu üniversitesi için rakamlar bunun çok altında aslında). Aşağıda dün avrupada yaşayan bir arkadaşımla yaptığım yazışmada da görebileceğiniz gibi bir ev kullanıcısı 500 Mbit/s hızı tek başına kullanabiliyor. Hal böyleyken kurum içi eposta haberleşmesinin tamamını Amerika'ya gönderip alması veya yurtiçine gönderilen her epostanın Avrupayı gezip öyle yerine ulaşması bence kötü bir karar. Harcanan bu bant genişliğinin parasını üniversiteler kendi ödemiyor ama sonuçta ödeniyor.


Kararlar teknik değil idari 

Üniversite bilgi işlem daire başkanlıklarının çoğunlukla çok kısıtlı kaynaklarla çalıştığı bilenen bir gerçek ama çok yeni kurulmuş bir kaç üniversite dışında mail hizmetini google veya MS'e devretmiş üniversiteler zaten servisi veriyordu. Önemli bir çoğunluğunda bu işi çok kaliteli yapan arkadaşlarımız vardı, hala da o kurumlarda çalışıyorlar. Eposta sunucusunu biz işletmeyelim kararı bu servisi veren teknik bilgisi olan personelin kararı değil, üst yönetimlerin aldıkları kararlar. Bunu çok fazla sistem yöneticisinden bizzat dinledim.

Eposta sunucusu işletmek zor bir iş mi diye sorarsanız cevabım 'yeterince bilmiyorsanız her sunucuyu işletmek zor' olacaktır. Birer eğitim ve araştırma kurumu olan üniversiteler işletmesi zor diyerek kullanıcıların mahremiyetlerini hiçe sayarak bu görevden vazgeçmemeliler. Böyle bakınca DNS de zor bir servis diyerek yarın onu da mı kontrolümüz dışında bir yere vereceğiz?

Eposta yazışmalarının mahremiyeti hiç düşünülmüyor

Eposta yazışmalarımızı MS veya Google'a teslim etmek bütün yazışmalarımızı iki bütün amerikan şirketinin diskinde tutmak demek olurken bundan rahatsız olmamak nasıl mümkün oluyor anlamakta zorluk çekiyorum gerçekten. Bütün kullanıcıların gönderip aldıkları mailler üzerinden yapılabilecek en hafif şeyin reklam gösterimi olabileceğini düşünüyorum. Konuya bilgi güvenliği açısından bakınca durumun vahametini görmemek mümkün değil. Son dönemde hakkında çokça konuşulan kişisel verilerin korunması açısından bakınca da kurumların kullanıcılarının epostalarını hiçbir kontrolleri olmayan kurumlara devretmesi üzerinde konuşulması gereken bir konu olmalı.

İnternet erişim engellemeleri hiç hesaba katılmıyor

Neredeyse üç yıl youtube engelinin yaşandığı bir ülkede yaşıyoruz. Bu engellemelerin önce dns çözümlemesiyle yapıldığını daha sonra ise google'a ait IP adreslerinin engellendiğini hatırlatmak isterim. Google bu adresler üzerinden sadece youtube yayınını değil başka servislerini de yaptığından diğer servislere erişimde sorunlar yaşandığını düşününce yarın benzer bir yasaklama olduğunda (olmayacağını düşünen varsa tanışmak isterim kendisiyle) eposta servisinde bir aksama olduğunda üniversiteler kiminle konuşup servislerini ayağa kaldırabilirler? Benzer şekilde dosya paylaşım sitelerine getirilecek bir yasakla eposta servisleriyle birlikte kullanıcılara sunulan depolama alanları da bir anda erişilmez duruma gelecektir. Üniversiteler bütün kullanıcılarını vpn veya tor kullanmaya yönlendirmeyecekse bu durum için bir planlarının olması gerekir ama olmadığını hepimiz biliyoruz.

Servisi başkasına yaptırmak elimizdeki araçları alıyor

Kurum dışından biri size eposta gönderdiğini söylesin ve siz bunu alamamış olun. Ortada bir sorun olduğu açık ama bunu nasıl çözeceksiniz. Eğer eposta sunucusu kurumunuzdan biri tarafından yönetiliyorsa sunucu loglarına bakmasını sorunu teşhis etmesini isteyebilirsiniz ama bunu google'dan nasıl isteyeceksiniz?

Kullanıcılarınıza google ve/veya sunmadığı bir teknolojiyi kullandırmak istemeniz durumunda yine eliniz kolunuz bağlı durumdasınız. Örneğin epostalarınızı Google'a vermişseniz eposta sunucunuza IPv6 üzerinden de erişilebilirken MS henüz bu hizmeti vermiyor (en azından Outlook kullanan hiçbir üniversite MX kaydına böyle bir girdi yapmamış). Eposta sunucusunu kendisi barındıran 17 anadolu üniversitesinin eposta sunucusuna IPv6 üzerinden de ulaşılabiliyor. Elbette Microsoft da yarın IPv6 hizmeti vermeye başlayabilir ama yeni bir teknolojiyi denemek, kullanmak için bu şirketlerin zamanlamasını beklemek üniversitelerin yapması gereken bir şey mi sizce de?

Yerli de değil, milli de

Son zamanlarda hemen herkesin dilinde olan yerli yazılım, milli yazılım söylemi ile epostaları Amerika'da, Avrupa'da saklamak yan yana getirmesi zor şeyler gibi görünmüyor mu size de? Bu konuda daha önce uzunca yazdığım için tekrarlamak istemiyorum ama özgür yazılımlar sanki bu topraklarda yazılmış gibi kullanabileceğimiz ve ihtiyaçlarımıza göre özelleştirebileceğimiz yazılımlarken onları kullanmalıyız.

Dünyada durum nasıl?

Dünyaca ünlü, hemen herkesin adını bildiği MIT, Harvard, Yale, Caltech, Purdue, Oxford ve Princeton eposta servisini MS veya Google'a vermiş değil. Bunda da gören gözler için bazı ibretler olmalı.

Konuyla ilgili hala ikna edici olmayan bir yer varsa yorum olarak yazarsanız cevaplamaya çalışayım.

4 Nisan 2017 Salı

Üniversiteler eposta bayrağını nasıl kaybetti?

Üniversitelerin bilgi işlem daire başkanlıkları çoğunlukla kısıtlı personelle ama çok büyük özveriyle çalışan birimleridir. İşler yolunda giderken, yani internet bağlantısında bir problem olmadığında, ne yaptıkları pek anlaşılmaz ama en küçük kesintide hatırlanırlar. Üniversitelerin verdiği servisler çoğunlukla bu özverili personelin öğrenme isteğinden ve merakından kaynaklanır. Amirlerinin çoğunlukla adını bile duymadıkları servisleri kendi kurumlarında etkinleştirmek için hiç karşılığını almadıkları fazla mesailer harcarlar. ULAKBİM'in bilgi işlem personellerini bir araya getirdiği etkinliklerde heyecanla servisleri nasıl ayağa kaldırdığını anlatan çok sunum dinlemiş biri olarak yazıyorum bunları.

On yıl kadar önce neredeyse bütün üniversiteler diğer bütün servisleri gibi kendi eposta servislerini de kendi sunucularında tutarlardı. Zaten çok kısıtlı kaynaklarla çalışan bilgi işlem daire başkanlıkları çoğunlukla GNU/Linux kullanarak verirdi bu hizmeti. Kendi yetişmiş personeli olmasa bile civardaki üniversitelerdeki meslektaşlarından destek alarak bir kere kurulunca kuruma yetecek bir düzen kurulmuş olurdu.

Yukarıdaki cümleler hep geçmiş zamanlı çünkü bugün tablo çok büyük ölçüde değişmiş durumda. Aşağıda ayrıntılarını okuyacağınız gibi üniversiteler bu servisi büyük oranda artık kendileri vermiyorlar. Bir servisi vermek demek onun ayakta durması ve geliştirilmesi sırasında öğrenilecek şeylerle personelin kendisini geliştirmesi de demek olduğundan bilgi işlem daire başkanlıkları bu görevi başkalarına teslim ederken kendilerini de çok şeyden mahrum bırakıyorlar. Durum gerçekten bahsettiğim kadar vahim mi birlikte bakalım.


Bugün itibariyle Yüksek Öğretim Kurulu Başkanlığının bilgilerine göre 183 üniversitemiz var.
  • Bunların 7 tanesinin ya alan adı bile belli değil ya da henüz eposta servisi vermiyor. 
  • 51 üniversite personelinin elektronik postalarını Google'a devretmiş durumda. DNS sunucularına girilen bir kayıtla bütün eposta yönetimi işini Google'a teslim ederek bir odadan diğerine gönderilen epostanın kendi kampüslerindeki sunucuya değil California'ya gidip geri dönmesine neden olmuş durumdalar. Mesafeyi gözünüzde daha iyi canlandırabilmeniz için Mardin'den gönderilen bir epostanın gidip geldiği yolun bir ekran görüntüsü koyuyorum. Bu bağlantı için ödenen bedeli hepimizin vergileriyle yaptığımızı hatırlatmama eminim gerek yoktur.

  • 38 üniversite Microsoft'un çevrimiçi Outlook servisini kullanıyor. Bunu yapan üniversiteler de yine epostaları üzerindeki bütün kontrolü kaybetmiş durumdalar. Aşağıdaki ekran görüntüsü de Şırnak'tan gönderilen epostaların iletim merkezini gösteriyor.

  • 1 üniversite epostalarını Yandex'e, 1'i de Superonline'a teslim etmiş durumda.
  • Epostalarını bulut servislerine vermemiş üniversitelerden 29 tanesi Microsoft işletim sistemleri kullanarak bu servisi kendisi işletiyor.
  • 1 üniversite IBM AIX kullanırken, 2 üniversite de Oracle ile eposta servisini ayakta tutuyor.
  • 4 üniversite eposta servisini FreeBSD/OpenBSD kullanarak kendi sunucularında barındırıyor.
  • Sadece 49 üniversite bu servisi bir GNU/Linux dağıtımı kullanarak sürdürüyor. Bunların 18'inin sayfasından zimbra kullandıkları açıkça görülebiliyor.
Üniversitelerin özgür yazılımlar kullanarak kolayca yönetebilecekleri bu servisi yurtdışındaki bulut servislerine (başkasının bilgisayarına) teslim etmelerinin nedenlerini ve bunun yol açtığı şeyleri de bir sonraki yazıya bırakmadan önce bu bilgilere nasıl ulaştığımı yazayım kısaca: YÖK'ün sayfasından üniversitelerin alan adlarını öğrendikten sonra bir çok alternatifin arasından mxtoolbox'tan eposta sunucusu kaydını sorgulamak için 'MX Lookup' seçeneği kullanılabilir. Bununla google ve MS outlook kullananlar hemen görülebilirken kalanlar için üniversite sayfalarına girip 'eposta' bağlantılarını takip etmek yeterli olacaktır.

izlediklerimden öğrendiğim bir şeyler var

İzlediğim ilk büyük konser 1990'ların başında Ankara'da Zülfü Livaneli konseriydi. Henüz Sovyetler Birliğinin olduğu zamanlardan bah...