Geçenlerde canım sıkıldı, "Acaba ne yapsam?" derken aklıma geldi. Hem öğrenip hem kullanırım diye, Python ile kendi password generator ve manager botumu yazmaya karar verdim. Amacım, her site için benzersiz, kırılması imkansız şifreler üretip, güvenli bir şekilde saklamaktı. "Ne güzel olur, artık '123456' falan kullanmam" diye düşünüyordum. Kafayı yiyeceğimi nereden bilebilirdim?
random ve string kütüphanelerini kullanarak işe koyuldum. Mantık basitti: Büyük harf, küçük harf, rakam ve özel karakterlerin olduğu bir havuzdan rastgele seçim yapacaktı. Ama bu bana yetmedi. "Daha güvenli olsun" diye, şifre uzunluğunu varsayılan olarak 32 karakter yaptım. Üstelik, aynı karakterin arka arkaya gelmemesi, belirli paternden kaçınması gibi ekstra kurallar da koydum. Sonuç mu?
Python:
# Kısaca, ürettiği şifrelerden biri şöyle bir şey:
# g7$LqP!2@mZ9#vR1&sKdW5%fX8^yC3?nJ
Harika değil mi? Kesinlikle kırılamaz! Meğerse, kendi kendimin en büyük düşmanı olacakmışım.
Şifreleri, basit bir JSON dosyasına kaydediyordum. Ana şifremle şifrelenmiş güzelce duruyorlardı. Birkaç test hesabı için denedim, mükemmel çalışıyordu. Sonra gerçek hesaplarımı da bu sisteme geçirmeye karar verdim. E-postam, sosyal medya, banka... Hepsi için bu canavarca şifreleri ürettim ve güvenle kaydettim. "Artık rahatım" dedim.
İlk sorun, cep telefonumdan bir uygulamaya girmek istediğimde başladı. 32 karakterlik, içinde `!`, `&`, `^` gibi semboller olan bir şifreyi, dokunmatik klavyeden tek tek girmeye çalıştım. Şaka gibi ama, üçüncü denemede kendimi "Şifreniz 5 kez yanlış girildi, hesabınız geçici olarak kilitlendi." yazısını okurken buldum.
Asıl felaket, ana şifre yöneticisini kurduğum bilgisayarın format yemesiyle geldi. Yedekleri kontrol ettim. Evet, şifrelenmiş JSON dosyam duruyordu. Ama onu açacak olan Python script'im ve o script'in içindeki bazı özel anahtar mantıkları... Onlar gitti. Şifrelerim önümde, ama ulaşılamaz durumdalar. StackOverflow'da bile böyle bir saçmalığın çözümünü bulamazsın.
Mükemmeliyetçilik bazen en büyük düşmanın olabiliyor. Güvenlik ile kullanılabilirlik arasındaki dengeyi tamamen unutmuşum. Belki de şifre uzunluğunu 16-20 karakterle sınırlamalı, ya da belirli bir "okunabilir" mod eklemeliydim.
Siz hiç böyle bir otomasyon tuzağına düştünüz mü? Aşırı güvenli şifre üretmenin, hatırlanabilir veya acil durumda ulaşılabilir bir yolu var mı? Yoksa ben mi fazla karmaşık düşünüyorum? Fikirlerinizi bekliyorum!