Soru:
Metinli 2FA güvenlik kodlarının hatırlanması kasıtlı olarak kolay mı?
Bob Kaufman
2017-12-12 00:11:34 UTC
view on stackexchange narkive permalink

Banka hesabımda 2FA kurulumum var. Giriş yaptığımda, telefonumdan web sitesine girdiğim altı basamaklı bir kod alıyorum. Bu kodlar her zaman kendilerine bir modele sahiptir. 111xxx, 123321, xx1212 vb. Gibi bir şey.

Bu kodların kasıtlı olarak tek bir bakışta hatırlanmasının kolay olduğunu düşünüyorum. Bu kodların hatırlanmasını kolaylaştırmak için kendilerine bir kalıp olduğunu dikte eden yaygın bir iş uygulaması / en iyi uygulama var mı?

Çok fazla 2FA kodu kullanıyorum ve böyle bir kalıbı hiç fark etmedim.Elbette, bazen tekrarlanan rakamlar oluyor, ancak garip bir şeylerin döndüğünü düşündürmek için yeterince sık görülmüyorlar.Kodlarınızı takip etmek ve yüz kadar biriktirdikten sonra rakamlar üzerinde istatistiksel bir analiz yapmak öğretici olabilir.
Hem metinli 2FA hem de kimlik doğrulayıcı uygulama kodlarını kullanıyorum ve kimlik doğrulayıcı uygulama kodlarında herhangi bir model görmemekle birlikte, telefonuma yazılanların genellikle kolayca akılda kalıcı olduğunu fark ettim.
Bir yan not olarak (bu, infosec Yığınıdır), SMS mesajları olarak gönderilen faktörler güvenli ikinci faktörler olarak kabul edilmez.Pek çok sistem daha iyi bir şey sunmaz, ancak bir kimlik doğrulayıcı uygulama veya cihaz kaydı gerektiren bir şey kullanma seçeneğiniz varsa, bu daha iyi olur.Konuyla ilgili bir örnek makale: https://techcrunch.com/2016/07/25/nist-declares-the-age-of-sms-based-2-factor-authentication-over/
Bir kalıp düşünürseniz, muhtemelen kodunuz için geçerli olmayacaktır, ancak bir kod düşünürseniz, kodun * bir tür * kalıba sahip olma ihtimali vardır.Bir keresinde annem için rastgele bir wi-fi şifresi oluşturmam gerekti;Yorumlayacağı bir model olmadığını düşündüğüm bir tane bulana kadar onları üretmeye devam ettim.Sonra "Bunu, içinde baş harfleriniz olduğu için mi seçtiniz?" Dedi.
@TobySmith Uygulamada bunlarda SMS olanlardan çok daha sık kalıplar görüyorum!
SO size sormadan önce 10 dakika aynı soruyu yazarak geçirdim.Beni yendiğin için biraz üzgünüm ama mutlu olan tek deli ben değilim.:)
Beş yanıtlar:
ScarySpider
2017-12-12 01:43:51 UTC
view on stackexchange narkive permalink

Bunu ben de fark ettim ve bunun insan beyninin rastgele gürültüye kalıp uygulama eğiliminin bir sonucu olduğunu düşünüyorum. Bu, özellikle bir dizi sayıyı hatırlamaya çalışırken daha yaygın görünüyor.

Bence bu o.Bu [OTP] (https://en.wikipedia.org/wiki/One-time_password#Methods_of_generating_the_OTP) genellikle rastgele oluşturulmuş kodlardır ve mümkün olduğu kadar güvenli olmaya çalışırlar, yaratımlarına kalıplar eklemek kesinlikle bir güvenlik açığı olacaktır.Ayrıca, bu sayıların ne kadar kısa olduğuna dikkat edin, bu, @ScarySpider'nin bahsettiği şeyle birleştiğinde hatırlanmalarını kolaylaştırır.
Ve kalıpları fark etmeye başladığınızda, [onay önyargısı] (https://en.m.wikipedia.org/wiki/Confirmation_bias) devreye girer.
Michael
2017-12-12 03:03:31 UTC
view on stackexchange narkive permalink

Altı basamaklı rastgele sayıların yaklaşık% 85'inde en az bir yinelenen basamak bulunur ve% 40'ında yan yana yinelenen bir ardışık basamak bulunur. (Yaptığım matematiği düzeltmekten mutluyum.)

Bu anahtarlar standart TOTP algoritması kullanılarak oluşturulur. Makale bu uygulamayı özetliyor ve akılda kalıcı bir sayı oluşturmak için herhangi bir çaba olmadığını gösteriyor:

RFC 6238'e göre referans uygulaması şu şekildedir:

  • Keyfi bir bayt dizesi olan K anahtarını oluşturun ve istemciyle güvenli bir şekilde paylaşın.
  • Bir T0, zaman adımlarını saymaya başlamak için Unix zamanı ve bir aralık, TI, C sayacının değerini hesaplamak için kullanılacak olan (varsayılanlar T0 olarak Unix dönemi ve TI olarak 30 saniyedir)
  • Kriptografik bir karma yöntemi üzerinde anlaşın (varsayılan SHA-1'dir)
  • Belirteç uzunluğu konusunda anlaşın, N (varsayılan 6'dır)

RFC 6238 farklı parametrelerin kullanılmasına izin verse de, kimlik doğrulayıcı uygulamasının Google uygulaması T0, TI değerlerini desteklemez , hash yöntemleri ve belirteç uzunlukları varsayılandan farklıdır. Ayrıca, K gizli anahtarının RFC 3548'e göre 32 tabanlı kodlamada girilmesini (veya bir QR kodunda sağlanmasını) bekler.

Parametreler üzerinde anlaşmaya varıldığında, belirteç oluşturma aşağıdaki gibidir:

  1. C'yi T0'dan sonra TI'nın kaç kez geçtiğini hesaplayın.
  2. HMAC hash H'yi mesaj olarak C ve anahtar olarak K ile hesaplayın (HMAC algoritması önceki bölüm, ancak çoğu kriptografik kitaplık da desteklemektedir). K olduğu gibi geçirilmeli, C 64 bitlik işaretsiz tamsayı olarak aktarılmalıdır.
  3. H'nin en az 4 anlamlı bitini alın ve ofset olarak kullanın, O.
  4. O bayt MSB'den başlayarak H'den 4 bayt alın, en önemli biti atın ve geri kalanını (işaretsiz) 32 bitlik bir tamsayı olarak saklayın, I.
  5. Belirteç, 10 tabanındaki I'in en düşük N basamağıdır. Sonuçta N'den daha az basamak varsa, onu soldan sıfırlarla doldurun.

Hem sunucu hem de istemci belirteci hesaplayın, ardından sunucu, istemci tarafından sağlanan belirtecin yerel olarak üretilen belirteçle eşleşip eşleşmediğini kontrol eder. Bazı sunucular, hafif saat sapmalarını, ağ gecikmelerini ve kullanıcı gecikmelerini hesaba katmak için geçerli saatten önce veya sonra oluşturulması gereken kodlara izin verir.

IM üzerinden iletilen bir OTP'nin bu tür bir algoritmayı kullanması için hiçbir neden yoktur.Büyük olasılıkla / dev / random'dan sadece altı rastgele rakamdır.
@Sneftel Bu, sunucunun OTP'yi depolamak zorunda olmaması avantajına sahiptir;sadece girildiğinde hesaplar.Ayrıca, kodun yalnızca kısa bir pencere için geçerli olduğu gerçeğini de ele alır.Rastgele bir sayı kullanıyorsanız, ürettiğinizi ve bunun son kullanma tarihini kaydetmeniz gerekir.Açıkçası, ikinci bir faktörün yokluğunda her ikisi de eşit derecede iyi çalışır.
@ChrisHayes Son kullanma tarihi ile birlikte altı basamaklı bir numarayı birkaç dakika saklamak zorunda kalmamak önemsiz bir avantajdır.Bunlar zaten seans için saklanması gereken türden şeylerdir.
İsimsiz bir vank'ın TOTP kullanıp kullanmadığını muhtemelen bilemezsiniz, bu yüzden bu ifadeyi korumaya alırdım.Ama matematik için +1.
Gerçekler olarak sunulduğu şekliyle asılsız iddialar için -1
@Sneftel "IM üzerinden iletilen bir OTP" nin yukarıda açıklanan algoritmayı kullanması * gerekmediği *, ancak insanlar 2FA ve OTP'ye başvurduğunda * genellikle * olduğu% 100 doğru olsa da, yukarıdaki algoritma uygulanır ve kullanılır.Bunu yapmak oldukça güvenli bir varsayımdır.Ancak, evet, eğer bu konuda bilgiçlik gösterecekseniz, o zaman doğru, RFC 6238'e atıfta bulunmak * zorunda değil *. Öyleyse bizi geride bırakan şey, rakamların neden bir kalıba sahip olduğu ve bunun içinHer iki açıklamada da (RFC 6239 veya / dev / random) [şu anda kabul edilen cevap] ile (https://security.stackexchange.com/a/175278/3992) katılıyorum.
IME metinli kodların HOTP ile üretilme olasılığı TOTP'den daha fazladır.Kodun ne kadar çabuk ulaşacağını ve kabul edilmesi gerektiğini bilmek zordur;aynı zaman aralığında aynı kodu üreten iki istek de istemezsiniz.
@otus, iyi bir nokta.Muhtemelen TOTP olacak olan bankanın mobil uygulamasından gelen bir bildirim olarak "Telefonumda IM" yi okudum, ancak yeniden okuduktan sonra OP'nin muhtemelen bir metin mesajı anlamına geldiğini anlıyorum.
** Dostum ** Bir yorum için hesaplamayı kendim yaptım, aşağı kaydırdım ve beni yumruk attığını fark ettim.İnternetteki rastgele bir kişiden diğerine: benim matematiğim sizin matematiğinizle aynı fikirde.Bu herkes için yeterince cevap olmalı: İnternet bunun doğru olduğunu söylüyorsa, o zaman doğrudur.
Tim
2017-12-14 09:09:53 UTC
view on stackexchange narkive permalink

Telefonumda çeşitli şirketlerden yaklaşık 90 doğrulama kodu vardı. Bunların 62'si 6 basamak uzunluğundaydı. İşte her basamağın sayısı:

Muhtemelen 1,8'e doğru hafif bir eğim ve 9? Verilerdeki neredeyse kesinlikle parazit var (62, küçük bir örnektir).

Peki ya çift haneler?

enter image description here İlk grafik yalnızca 2 basamaklı sınırlarda çift basamaklı sayılar (yani AABBCC) - bu nedenle her bir çiftin 186 olası basamak yerleşimi boyunca yaklaşık 1.86 kez görünmesini bekleriz. İkincisi, herhangi bir yerleşimdir (yani XXX99X, çift basamaklı olarak sayılır). 310 yerleşimde her bir çiftin yaklaşık 3,1 katı olmasını bekleriz.

Çift basamaklı olmayanların turuncu ile gösterildiğinden çok daha fazla çift basamaklı belirgin bir çarpıklık görünmüyor. İkinci verilerde, yaklaşık 31 çift hane olmasını beklerdik ve 27 elde ederiz. Bu makul görünüyor.

Elbette bu, diğer "rastgele olmayan" kalıpları dışarıda bırakmaz - dürüst olmak gerekirse büyük olasılıkla kalıp arıyor - hepsi 2FA uygulamamdan alınan şu sayılara bakın: 365 595, 111116, 566 272, 468 694, 191574, 833 043.

Grafikleri sevdiğim için oy verildi.
schroeder
2017-12-12 00:21:49 UTC
view on stackexchange narkive permalink

Umarım bu, sizin durumunuzda rastgele bir şanstır. Bir örüntü varsa, ikinci bir koda sahip olmanın tüm anlamını zayıflatır.

Hayır, kasıtlı olarak hatırlanmaları kolay değildir ve kullanıcılarının 6 sayı yazarken sorun yaşadıklarına dair geri bildirim almadıkları sürece genelleştirilmiş bir iş vakası yoktur. O zaman birisi aptalca bir şey yapmış olabilir ama umarım değildir.

thomasrutter
2017-12-12 05:21:14 UTC
view on stackexchange narkive permalink

Aynı zamanda insanların rastgeleliği düşünme eğilimiyle de ilgilidir. Gerçek rastgelelikte, tekrarlanan rakamlar ve tekrarlanan modeller, beklediğimizden çok daha sık meydana gelir. İnsanlardan rastgele "görünen" rakam dizileri oluşturmaları istendiğinde, tekrar eden kalıplardan veya rakamlardan kaçınma eğilimindedirler ("7" yi aşırı kullanmak ve "0" ile "2" yi yetersiz kullanmak gibi diğer tuhaflıklar da, vb). Birinden 1 ile 100 arasında "rastgele" bir sayı seçmesini isterseniz, genellikle 7 içerir ve çoğu zaman 37 (veya 17) olur. İnsanların (genellikle) rastgele görünen bir şeyi seçmeye çalıştığı için (rastgele görünen sayıların rastgele bir çekilişte kazanma olasılığının daha yüksek olduğuna dair yanlış inanç nedeniyle) manuel olarak seçtiği piyango sayılarını inceleyebilirsiniz.

If bir insan rastgele bir yazı tura atışı taklit etmeye çalışıyorsa, son sonucu tekrarlayacaklarından çok daha fazla yazı ve yazı arasında gidip gelirler ve bir sonraki değerini oldukça iyi bir kesinlikle tahmin etmeyi mümkün kılar (>% 50 olasılıkla bir sonraki değeri .

Tekrarlanan bir basamak veya iki basamaklı bir dizi, gerçek bir rastgele 6 basamaklı sayı için oldukça yaygındır (örneğin, ardışık yinelenen bir basamağın ~% 41'i, herhangi bir yerde tekrarlanan bir rakam) ve bir insandan bulmasını istediğiniz "rastgele" 6 basamaklı bir sayı için çok nadirdir.

Gerçekten rastgele bir sayı seçmek, bir piyangoda geçerli bir stratejidir, çünkü ödülü diğer birçok insanla paylaşma olasılığınız daha düşüktür.Tabii ki, çoğu piyangoda "bana gerçekten rastgele sayılar ver" seçeneği olduğundan, bunu manuel olarak yapmaya çalışmak biraz aptalca
Bu doğrudur ve bir piyangoda bir dezavantaj olan "rastgele görünen" (bir insana) sayı ile karıştırılmamalıdır.Piyangoya girenlere gelince, batıl inanç büyük bir rol oynar, insanların "şanslı" sayıları vardır, vb.
@fjw Tamam ama insanların rastgele görünen sayıları seçtiğini nasıl biliyorsunuz çünkü rastgele görünen sayıların kazanımlarını maksimize ettiği yönündeki haklı inanca dayalı olarak rastgele görünen sayıları seçmenin aksine, rasgele görünen sayıların kazanma olasılığının daha yüksek olduğuna dair yanlış bir inanca sahipler.gerçekten rastgele sayı seçemememizle)?(Her durumda yanıta +1)
"Varsayılan", kendi numaralarınızı seçip rasgele oluşturmalarını sağlamak değildir.Özellikle kendi numaralarınızı seçmeyi seçmek, her zaman kazancı veya kazanma olasılığını en üst düzeye çıkarmak için rastgele bir sayı üretecinden daha iyi yapabileceğiniz inancıyla yapılır.Bu inanç, onları daha "rastgele" elde edebileceğiniz veya otomatik olarak oluşturulan sayılardan daha iyi "rastgele" sayılar seçebileceğiniz ise, bu yanlıştır.Batıl inanç büyük bir rol oynar ve belki de biraz paranoya: otomatik olarak üretilen sayıların bir şekilde size karşı hileli olması.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...