Lisans Anahtarı Tasarımı: 60 Bit, 32 Sembol, Sıfır Kafa Karışıklığı

Notifio adlı masaüstü uygulamasının lisans sistemi ilginç bir örnektir: hiç hesap yok, oturum yok, şifre sıfırlaması yok. Tüm kimlik sistemi tek bir satırdan ibaret, e-posta yoluyla gelen ve uygulamaya bir kez yazılan `NTFIO-7K3M-QX9B-TFHD` gibi bir anahtar.

Bu anahtarın arkasında basit ama zekice bir matematik var. Üretici, 32 sembolden oluşan bir alfabe kullanıyor: 24 harf (I, O, 0, 1 hariç) ve 8 rakam. Neden bu dört karakteri çıkardılar? Çünkü I ve O, l (küçük L) ve 0 (sıfır) ile karışabilir; 0 ve 1 de görsel olarak benzer. Kullanıcı telefonda veya el yazısıyla anahtarı yazarken bu kafa karışıklığı hata yaratırdı.

Anahtarın kendisi 12 rasgele karakterden oluşuyor, dört karakterlik üç grup. 32 sembolün her biri 5 bit temsil ediyor (2^5 = 32), yani 12 karakter × 5 bit = 60 bit toplam entropi. Matematik: 32^12 = 1,152,921,504,606,846,976 = 2^60. Bu, brute-force saldırısı için yeterince geniş; ancak insan yazması için yeterince kısa.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Kod tarafında üretim on dört satır: `crypto.randomBytes()` ile rasgele baytlar alıyor, modulo işlemiyle alfabeye eşliyerek karaktere dönüştürüyor. Hiçbir karışık hash, salt veya kontrol basamağı yok, saf rasgelelik. Bunun işe yaraması, alfabenin tam olarak 32 sembol (2'nin kuvveti) olmasından geliyor; aksi halde modulo işlemi bias (eğilim) yaratırdı.

Bu tasarım, yazılım güvenliğinde bir ders: bazen en iyi çözüm, karmaşık altyapı değil, sınırlamayı ve insan faktörünü düşünmektir. Kısa, hataya dayanıklı ve hesap yönetimine gerek yok.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz