Şifreler, Otomatik Doldurma, Güvenlik, Şifrelerin Gelişimi Ve Chrome Üzerine

Bu konuyu okuyanlar

Turab Garip

Dekan
Emektar
Katılım
30 May 2007
Mesajlar
6,853
Reaksiyon puanı
136
Puanları
63
Herkese selamlar.

Şifreler ve şifre güvenliği üzerine basit ama uzun bir yazı olacak, ancak temel anlamda bilgi edinmek isteyenler için yazıyor olacağım.

Bilişim teknolojileri (BT ya da orijinal adıyla IT) günümüzde çok hızlı ilerlediği için onlarca uygulama ve internet sitesi kullanıyoruz ve bu bizi onlarca şifreyi hatırlamak zorunda bırakıyor. O yüzden birçok kişi tek bir şifreyi birçok sitede ve uygulamada kullanıyor-ki bu da çok büyük bir güvenlik riski doğuruyor. Örneğin bir sitede şifreniz ele geçirilse ya da o sitenin yayımcısı kötü niyetli olsa, mail adresinizi ve o şifreyi birçok uygulamada deneyebilir ve bütün her yerdeki hesaplarınızı ele geçirebilir. Bazı kişiler "daha güvenli" olması açısında her yerde tek şifre kullanmıyor ancak toplamda 2-3 şifreyi bütün sitelerde ve uygulamalarda kullanıyor; fakat bu da güvenlik açısından ilk seçeneğe göre büyük bir avantaj sağlamıyor.

Peki ne olmalı? Mevcut ortamda her uygulama ve site için farklı ve mümkünse karmaşık şifreler kullanmalıyız. İyi ama insanız biz. Bir anlam ifade etmeyen karmaşık karakter dizilimlerini hem de her uygulama ve site için farklı olacak şekilde nasıl ezberimizde tutabiliriz? Cevap veriyorum: tutamayız. İnsan beyni buna çok müsait değil. Üstelik bu uygulamalardan bazıları bizi belirli süre sonrasında "güvenlik nedeniyle" şifrelerimizi değiştirmeye de zorluyor. Bilişim dünyası son yıllarda bu konu üzerinde çokça düşünüyor ve çözüm üretmeye çalışıyor. Örneğin basit çözüm olarak bazı siteler "şifreyi kolay hatırlama metodu" geliştiriyor, şifrenizi kodlayarak hafızanızda tutmak için. Tabii ki hatırlamak zorunda olduğumuz şifre sayısı arttıkça bu yöntem de verimsiz oluyor.

Bilişim dünyası bu konuda çok geliştirmeler yaptı, örneğin parmak izi ve yüz tanıma gibi biyometrik verilerle giriş yapma gibi. Bunlar karmaşık ve gelişmiş teknolojiler olsa bile, bunların da kırılması açıkçası çok uzun zaman almadı. Nihayetinde bunlar da "şifre" gibi bir veri olarak bir yerde saklanıyor. Sistemin sizin siz olduğunuzu anlayabilmesi için parmak izinizi ve yüz verinizi bir yerde saklaması gerek. Ve bir şekilde parmak izinizin kayıtlı olduğu bu sistemde veri sızıntısı olursa veya istismar olursa çok daha büyük güvenlik sorunlarıyla karşılaşabilirsiniz. Hatta kırmaya bile gerek olmadığı durumlar bile oluyor; örneğin benim eşimin kardeşi eşimin telefonunun yüz tanımasını geçebiliyor, birbirlerine benzedikleri için. Ya da daha zayıf algoritmalar kişinin fotoğrafıyla bile kırılabiliyor. Zayıf derken, burada Apple bile zayıf kalıyor, çünkü kişinin yüzünün 3 boyutlu çıktısı ile kırılabiliyor. Tabii bunu bir adım daha ileriye götürüp "retina taraması" gibi yöntemler de geliştiriliyor, ancak bunda da her ortama uyarlanamama ve pahalı olma gibi sorunlar mevcut. (Tabii uygulaması yayıldıkça onu da atlatma yöntemleri üzerinde çalışılacaktır.) Bu nedenle daha basit ve kullanışlı seçenek olarak da günümüzde 2FA (2 factor authentication) denilen "2 adımlı doğrulama yöntemleri" geliştirildi. Bir uygulamaya şifrenizi girmeniz yeterli olmuyor, ikinci adım olarak da kendinizi ispat etmeniz beklenen bir yöntem. Örneğin şifreyi girdikten sonra telefona SMS ile veya bildirim ile gelen kodu da girmek gibi.

Bunlar da maliyeti arttırabildiği için, Google Authenticator, Duo Security gibi ek programlar da geliştirildi. Buraya kaydettiğiniz bir uygulama kodu ile o uygulamaya özel bir "ikinci doğrulama kodu"nu SMS veya bildirim gelmeden kendiniz oluşturabilmeniz için. Yani birinci adımda şifreyi, ikinci adımda da telefonunuza yüklediğiniz uygulamada ürettiğiniz "tek kullanımlık şifreyi" (OTP, one time password) girip o şekilde oturum açmak. Tabii telefonum her zaman yanımda olmayabilir, o an çalışmayabilir vb gerekçelerle OTP cihazları da üretildi. Örneğin İş Bankası'nın "mobil anahtarlık" cihazı gibi. Üzerindeki tuşa basıyorsunuz ve size tek kullanımlık ve süreli bir şifre veriyor.

Şu an en yaygın öneri bu yönde, yani 2FA kullanmak. Ancak tabii bunların da riskleri zamanla ortaya çıkarıldığı için bilişim dünyası "3FA" ve "4FA" denilen, 3 adımlı doğrulama ve 4 adımlı doğrulama yöntemleri de geliştiriyor. Tahmin edebileceğiniz gibi bu bizi en başa da götürebilir. Yani "hatırlamak zorunda olduğumuz onlarca şifre" ile "uygulamak zorunda olduğumuz onlarca adım" birbirinden çok farklı olmamaya başladı. Örneğin 4 adımlı doğrulama mı daha hızlı ve kolay? Yoksa uzun ve karmaşık şifreleri küçük bir not defteri olarak cüzdanımızda taşımak mı daha kolay?

Bu sorulara devamlı cevap aranıyor ve bulunan cevapların eksikleri çıktıkça devamlı bir başka seçeneğe yöneliyoruz. Şu an "şifre" dediğimiz kavramın bütünüyle ortadan kaldırılması gerektiğini savunanlar da var. Geleceğin bu konuda çok değişken olabileceğini ifade ediyor bu. Peki ama "ne olmalı" sorusuna hala cevap bulamadık? Şu an en yaygın önerinin 2FA kullanmak olduğunu söylemiştim. Bunun haricinde "hatırlamak zorunda kalmayalım diye bizim yerimize şifreleri hatırlayan uygulamalar" şu an çok revaçta.

Şifre saklama uygulamaları nedir? Bazı kişiler şifre sayısı arttıkça şifrelerini bilgisayardaki bir metin belgesinde veya excel dokümanında saklıyor. Nispeten daha akıllı olanlar, oluşturdukları dokümanı da güçlü bir şifre ile şifreleyip "en azından sadece bunu hatırlasam yeter, diğer bütün şifrelerime bununla erişebilirim" diye düşünerek örneğin excel dosyasına bir şifre belirliyor. İşte şifre saklama uygulamaları, siz hatırlamak zorunda kalmayın, güvensiz yerlere şifrelerinizi yazıp kaydetmeyin diye bunu sizin adınıza yapan programlar. Bir nevi "şifrelerimi sakladığım veritabanı" gibi. Siz uygulamanın bilgilerini ve şifrelerinizi o programa kaydediyorsunuz, o programın kendisine de bir ana şifre tayin ediyorsunuz (master password) ve böylece gerçekte hatırlamanız gereken tek bir şifre kalıyor. Eğer bu güçlü bir şifreyse, programa kaydettiğiniz diğer şifreler de bununla şifreleniyor (encrypt). Böylece şifre dosyanız çalınsa bile, ana şifreniz güçlüyse diğer şifrelerinizin kırılma olasılığı oldukça düşük oluyor. Hatta siz bile ana şifrenizi unutursanız, programdaki tüm şifrelere erişimi sonsuza kadar kaybediyorsunuz.

Zaman içerisinde bu uygulamalar da oldukça gelişti. Örneğin ilk önceleri bilgisayarınıza kurduğunuz şifre saklama uygulaması, artık daha fazla cihazı birbirine bağlamak istediğimiz için yetersiz kaldığından dolayı şifreleri bilgisayarınızda değil, uzaktaki bir sunucuda saklamaya başladı. Bazı uygulamalar da web tabanlı olarak geliştirildi ve böylece aynı şifreleri farklı cihazlarda tekrar tekrar kaydetmek yerine, bir defa kaydedip tüm cihazlarda senkronize etme imkanı doğdu.

Chrome ile bunun ilgisi de buradan geliyor. Çünkü şifre saklama uygulamalarının ilkleri aslında internet tarayıcılarıdır. Aslında Chrome'dan çok daha önce Internet Explorer 5'te bile, yani 20 yıl önce bile bu özellik mevcuttu. Benim Chrome özelinde bahsetmemin sebebi, Google'ın genel anlamda ve Chrome'un da tarayıcı alanında piyasayı domine etmesidir. Chrome, çok yönlü hizmetler sunan, her yere el atmış bir şirket olan Google'un ürünü olduğu için, neredeyse bir şifre uygulaması kadar senkron olabiliyor; ancak o hala bir internet tarayıcısı ve bu nedenle de sadece internet sitelerinin şifrelerini kaydedebilir.

Peki bu uygulamalar ne kadar güvenli? Yeni yöntemler geliştirildikçe, bunların da açıkları üzerinde çalışıldığını söylemiştim. Zaten bu durum sadece şifreler için değil, bütrün teknoloji için geçerli bir kural oldu. Bu programların özelinde güvenlik riski doğuran en önemli faktör, programın yapımcısına olan güven unsuru. Programın yapımcısına ne kadar güveniyoruz? Ya da ne kadar güvenmeliyiz. Aslında cevap "sıfır güven" (zero trust) olmalı. (Bu da bilişim güvenliği ile ilgili yeni geliştirilen bir kavram. Şu an daha ziyade ağ alanında kullanılıyor, ancak konseptimize çok uygun.) Ama maalesef bunun mevcut koşullarda bir uygulama başarımı mümkün değil. Bir şifre uygulaması kullanıyorsanız, o uygulamanın yapımcısına güveniyorsunuz demektir. Bu riski azaltmanın en önemli seçeneklerinden biri, açık kaynak olan yazılımları tercih etmekten geçiyor, ancak yine de istismara tamamen kapalı olduğu anlamına hiçbir zaman gelmeyecektir. Bununla birlikte, açık kaynak da olsa bir yazılım şifrenizi sizin kontrolünüzde olmayan bir sunucuya gönderiyorsa, açık kaynak olmasının bir anlamı kalmadığını da hatırlatmak gerek.

Chrome'un yaptığı da tam olarak budur. Şifrelerinizi girdiğiniz sitelerde otomatik olarak doldurabilmek yani sizin adınıza hatırlayabilmek için mecburen şifrenizi bir yere kaydeder. Kaydettiğiniz bu şifreleri de tüm cihazlarınızda senkron tutmak için bunları kendi sunucularında saklar. Bu da belirttiğim gibi istismara çok açık bir konudur.

Chrome arada bir şifrelerinizin güvensiz olduğu konusunda sizi uyarır, bu anlama geliyor? Chrome dahil birçok şifre saklama uygulaması, kullanıcılarını "daha önce çalınmış şifrelere karşı uyaracak bir mekanizma" geliştirmiştir. Örneğin E-devlet şifrenizi 12345678 olarak değiştirin. (Tabii bu basit şifreyi kaydetmenize umarım izin vermeyecektir, fakat konsepti anlatmak için izin verdiğini ve şifrenizi bu şekilde değiştirebildiğinizi varsayalım.) Chrome anında sizi uyarıp bu şifrenin çalınmış olabileceği, zayıf olduğu ve kullanmamanız gerektiği yönünde bir mesaj gösterecek. Peki bu E-devlet'te veri sızıntısı olduğunu mu ifade ediyor? Varsayalım öyle bile olsa, şifreyi girer girmez denk mi geldi de anında size bu uyarı geldi?

İki sorunun da cevabı hayır. Bu mesajı görürsünüz, ancak sebebi ne E-devlet'te veri sızıntısı olmuş olması, ne de E-devlet hesabınızın o an hacklenmiş olması. Sebebi şu; bu şifre başkaları tarafından birçok uygulamada çok defa kullanıldığı ve çok defa ifşa olduğu için Chrome (veya bu özelliğe sahip olarak kullandığınız şifre saklama uygulaması) sizi uyarıyor, "bu şifre daha önce kırıldı, dolayısıyla bu şifreyi kullanırsan senin hesabında bu şifreyi deneyen birisi hesabına erişebilir" demek istiyor. Kısacası gerçekleşmiş bir tehlikeyi değil, potansiyel bir tehlikeyi bildiriyor.

Verdiğim örnekteki şifre her zaman basit de olsa, bu durum karmaşık şifreler için de geçerli olabilir. Örneğin Afrika'da birinin Adobe sitesine kayıt olurken "28!f@dQk.^" şeklinde bir şifre oluşturduğunu düşünün. Siz bu kişiyi tanımıyorsunuz, ancak oldu ya siz de Hotmail'e kayıt olurken bu şifreyi kullandınız. Sonuçta milyarlarca insanız, birbirinden habersizce insanlar farklı farklı site ve uygulamalarda aynı şifreyi kullanıyorlar. Gel zaman git zaman Adobe sitesinde veri sızıntısı oldu. (Ki geçmişte oldu.) Ve diyelim ki hackerlar şifreleri decrypt edebildi, yani "28!f@dQk.^" bu şifreye bir şekilde ulaştı. Chrome sizi Hotmail şifrenizin ifşa olduğu ve değiştirmeniz gerektiği yönünde uyaracaktır. Sizin hesabınız çalınmadı, Hotmail veri de sızdırmadı, öyleyse benimle ne ilgisi var beni neden uyarıyor?

Çünkü diyor ki sonuçta "28!f@dQk.^" bu şifre bir şekilde açığa çıktı ve birileri başka sitelerde ve uygulamalarda bu şifreyi deneyebilir. Senin de Hotmail şifren bu olduğu için ileride bir gün birisi Hotmail hesaplarında önceden ifşa olmuş şifreleri denerse veya Hotmail'de bir veri sızıntısı olursa ve o veri sızıntısında şifreler çözülememiş bile olsa birisi senin hesabına erişebilir. Bunun sebebi, hackerların "önceden kullanılmış şifreler" veritabanlarını sık sık tarayıp denemeler yapmasıdır.

İnternette "sık kullanılan şifreler" şeklinde istatistiki çalışmalar vardır. Örneğin Wikipedia'daki "en sık kullanılan 10.000 şifre" listesine bakabilirsiniz. İnternette on milyonlarca şifre bu şekilde dosyalar halinde paylaşılır, bunlara "şifre sözlüğü" denir ve hackerlar bir sistemde deneme saldırısı (bruteforece - dictionary attack) yapacaklarsa, bulabildikleri kadar şifre sözlüğünü şifre kırma programına yükleyip öyle saldırırlar. Böylece o program, hedef sistemde bu şifreleri teker teker dener. Tabii bu listeler, yani şifre sözlükleri günümüz kullanımları ve güncel veri sızıntıları dikkate alınarak sık sık güncellenir.

İşte Chrome da hackerların da kullanmış olduğu ve internette herkesin erişimine açık bu şifre sözlüklerini sistemine yükler ve sizin kaydettiğiniz şifreler bunlardan biriyse "bu şifre başkaları tarafından başka yerlerde kullanıldı ve ifşa oldu, bunu kullanmasan daha iyi olur" diye uyarır.

Peki bu durum Chrome'un da güvenilirliği üzerine bir şüphe çekmiyor mu? Daha önce söylediğim gibi, çekiyor elbette. Sonuçta kaydettiğiniz şifreyi bir veritabanında arıyor, yani şifrenizi kaydettiği için doğal olarak şifrenizin açık (decrypted) haline tam erişimi var. Tabii ki bu sadece Chrome'a özgü değil, şifre kaydetme uygulamalarının tümü için bu durum geçerli. Chrome'un zayıf şifreler hakkında uyarma özelliği olmasaydı da şifrenizi otomatik doldurabilmesi için tam erişime sahip olması gerekir. Bu bakımdan Chrome open source yani açık kaynak olmadığı için, belirttiğim gibi şifrenizi bir veritabanında sorgulamasa bile bu şüphe her zaman mevcut. Yani "mecburen" tam erişimine sahip olduğu şifrelerinizle ne yapacağı konusunda kesin bilgi sahibi olmanız imkansız.

Bu durum yine belirttiğim gibi bütün şifre kaydetme uygulamaları için geçerli. Tabii açık kaynak için bir istisna mümkün. Çünkü açık kaynak programlarda programlarda programın şifrelerinizle ne yaptığı her zaman görülebilir; ancak programın yapımcısı tarafından istismar edilebilecek bir açık (backdoor) varsa ve onu henüz kimse keşfetmemişse, bu risk de yine her zaman vardır. Bazı programlar şifrelerinizi yerel cihazınızda saklayabilir; ancak şifrenin güvenliğini bahsettiğim "şifre sözlük"lerinde sorgulamak için başka bir sunucuya gönderiyorsa, bu risk her zaman daha da büyüktür.

Peki ne yapmalı soruna dönersek, kendi uyguladığım seçeneği bir örnek olarak anlatabilirim. Anlattıklarımın hepsini birlikte değerlendirince ben kendi adıma (ve ticari olarak ekibim adına) açık kaynak ve kendi barındırabileceğimiz (self-hosted) yöntemlere yöneldim. Böylece program açık kaynak olduğu için risk tüm diğer seçeneklerden çok daha düşük, hatta sıfıra yakın olacak ve aynı zamanda kendi sunucumuzda (ya da kişisel bilgisayarımızda) barındırdığımız için şifrelerimiz dışarıda birilerinin erişebileceği bir yere kayıt olmamış olacak. Şu an halihazırda bunun için Bitwarden_rs isimli uygulamayı tek kurulumda yaklaşık 25 kişi aynı anda kullanıyoruz ve birkaç eksikliği dışında oldukça başarılı bir iş çıkarıyor. (Bu programda da "şifrenin güvenliğini sına" özelliği mevcut ve bunu kullanırsanız, şifreniz yine sizin kontrolünüzde olmayan bir yere gönderiliyor.) Bu nedenle artık Chrome'da hiçbir şifre saklamıyorum, şifre kaydetme özellğini de kapattım. Telefon ve ev-iş bilgisayarlarımda kurulu olan istemci ile şifrelerimi kendi bilgisayarımda saklıyor, hem sitelere hem uygulamalara girişte hiçbir şifreyi hatırlamak mecburiyetinde kalmıyorum. Kullandığım 150'den fazla uygulamada Bitwarden ile ürettiğim uzun ve karmaşık şifreler kullanıyorum, hiçbirini de kendim hatırlamıyorum.

Açık kaynak bu tarz "kendi barındırabileceğiniz" çözümleri olan yazılımların cüzi bir ücret karşılığında bulut bilişim abonelikleri de var, bu da şahsi olarak benim için şifreleri Chrome'da saklamakla aynı şeydir. Bu nedenle verdiğim örnekte Bitwarden kendi bilgisayarınız - sunucunuzda kullanabileceğiniz gibi, kendi sitesinde abonelik de satıyor, ikisinin aynı şey olmadığını, birinde şifrelerin sizde, diğerinde ise şifrelerin onlarda olduğunu hatırlatmak isterim.

Elbette Bitwarden gibi bir uygulamayı "tek başınıza" kullanmak size zahmetli, sıkıcı, anlamsız gelebilir, ben bir ekiple birlikte merkezi bir sunucuda kullandığım için çok daha avantajlı oluyor; ancak siz de benzeri diğer açık kaynak ve yerel veri saklayan programları deneyebilirsiniz.

Birden fazla kişinin aynı veritabanını kullanması üzerine de küçük bir not bırakayım; örneğin bizim ekibimizde 25 kişi aynı sunucuyu kullanıyoruz, fakat hiç kimsenin birbirinin şifrelerine erişmesi mümkün değil. Sunucu yöneticisi olarak benim de erişmem mümkün değil, çünkü şifreler her kullanıcının kendi belirlediği ana şifre ile kodlanarak (encyprt edilerek) saklanıyor. Dolayısıyla ana şifre olmadan veritabanında ancak anlamsız karakterler görüntülenebilir. Tabii ana şifreniz zayıfsa, yukarıda bahsettiğim sözlük ataklarına karşı yine zayıf olursunuz, zira ana şifreniz çalındığında tüm şifrelerinizin birden çalınmış olacağını da unutmayınız. Bu nedenle hatırlamak zorunda kalacağınız tek şifre olan ana şifreyi mümkün olduğunda karmaşık yapıp hiçbir yerde yazılı olarak tutmamanız şimdilik en iyi seçenek olacaktır.
 

JawBone

Doçent
Katılım
17 Kas 2020
Mesajlar
871
Çözümler
2
Reaksiyon puanı
587
Puanları
93
Yaş
19
Ben bi A4 kağıdına yazdım tüm şifreleri cebimde taşıyorum artık. Dijital ortamdan daha güvenilir bence. Tabi sadece şifreleri yazdım. Giriş bilgilerim vs. yazmıyor. Hangi şifreyle hangi giriş yönteminin ve sitenin kullanılacağını sadece ben biliyorum.
 

Turab Garip

Dekan
Emektar
Katılım
30 May 2007
Mesajlar
6,853
Reaksiyon puanı
136
Puanları
63
Ben bi A4 kağıdına yazdım tüm şifreleri cebimde taşıyorum artık. Dijital ortamdan daha güvenilir bence. Tabi sadece şifreleri yazdım. Giriş bilgilerim vs. yazmıyor. Hangi şifreyle hangi giriş yönteminin ve sitenin kullanılacağını sadece ben biliyorum.
Evet, bu tam olarak yazıda bahsettiğim şeylerden biriydi:

"Örneğin 4 adımlı doğrulama mı daha hızlı ve kolay? Yoksa uzun ve karmaşık şifreleri küçük bir not defteri olarak cüzdanımızda taşımak mı daha kolay?"

Günümüzde oldukça revaçta olan "sanal para"ların da "soğuk cüzdan"ları temelde bu şekilde saklanıyor, yani bir kağıda yazıp kaldırarak.
 
Son düzenleme:
Üst