Daha sonra düz metin almak için kullanıcı parola depolamasına etik olarak nasıl yaklaşmalıyım?


1344

Giderek daha fazla web sitesi ve web uygulaması oluşturmaya devam ederken, sık sık kullanıcının parolalarını, kullanıcının bir sorunu varsa / unutulduğunda alabilecek şekilde depolamam istenir (unutulmuş bir şifre bağlantısını e-postayla göndermek için Bu uygulamaya karşı acı bir şekilde savaşabildiğimde ve gerçek sıfırlarını saklamadan şifre sıfırlama ve idari yardımı mümkün kılmak için çok fazla 'ekstra' programlama yapıyorum.

Dövüşemediğimde (ya da kazanamadığımda) her zaman şifreyi bir şekilde kodlarım, böylece en azından veritabanında düz metin olarak depolanmaz - DB'm saldırıya uğradığında suçlunun şifreleri kırması fazla bir şey gerektirmez, bu da beni rahatsız eder.

Mükemmel bir dünyada millet şifreleri sık sık güncelleyecek ve birçok farklı sitede çoğaltmayacaktı - maalesef aynı iş / ev / e-posta / banka şifresine sahip ve hatta yardıma ihtiyaç duyduklarında bana özgürce vermiş olan birçok insanı tanıyorum. DB güvenlik prosedürlerim herhangi bir nedenle başarısız olursa, finansal çöküşlerinden sorumlu olan kişi olmak istemiyorum.

Ahlaki ve etik olarak, bazı kullanıcılar için, çok daha az saygı ile davransalar bile geçim kaynaklarını korumaktan kendimi sorumlu hissediyorum. Karmaları ve farklı kodlama seçeneklerini tuzlamak için pek çok yaklaşım ve argüman yapılması gerektiğinden eminim, ancak bunları saklamanız gerektiğinde tek bir 'en iyi uygulama' var mı? Hemen hemen her durumda ben özellikleri ve ele gerekir şekilde herhangi bir fark yaparsa PHP ve MySQL kullanıyorum.

Bounty için ek bilgiler

Bunun yapmak istediğiniz bir şey olmadığını bildiğimi ve çoğu durumda bunu reddetmenin en iyisi olduğunu açıklığa kavuşturmak istiyorum. Ancak, bu yaklaşımı benimsemenin yararları üzerine bir ders aramıyorum, bu yaklaşımı uygularsanız atacağınız en iyi adımları arıyorum.

Aşağıdaki bir notta, güvenli bir şifre kurtarma rutini gerçekleştirmeleri istendiğinde, web sitelerinin büyük ölçüde yaşlılara, zihinsel olarak zorlayıcı veya çok gençlere yönelik web sitelerinin kafa karıştırıcı olabileceğine dikkat çektim. Bu durumlarda basit ve sıradan bulsak da, bazı kullanıcılar ya bir servis teknolojisinin sisteme yardım etmesinin ya da doğrudan onlara e-postayla gönderilmesinin / gösterilmesinin ekstra yardımına ihtiyaç duyarlar.

Bu tür sistemlerde, kullanıcılara bu düzeyde erişim yardımı verilmezse, bu demografik özelliklerden kaynaklanan yıpranma oranı uygulamayı bozabilir, bu nedenle lütfen bu tür bir kurulumu aklınızda bulundurun.

Herkese teşekkürler

Bu tartışma çok eğlenceli bir soru oldu ve çok memnun oldum. Sonunda, hem şifre güvenliğini koruyan bir cevap seçtim (düz metin veya kurtarılabilir şifreleri saklamak zorunda kalmayacağım), hem de belirlediğim kullanıcı tabanının bulduğum büyük dezavantajlar olmadan bir sisteme giriş yapmasını mümkün kıldı normal şifre kurtarma.

Her zaman olduğu gibi, farklı nedenlerle doğru olarak işaretlemek istediğim yaklaşık 5 cevap vardı, ama en iyisini seçmek zorunda kaldım - geri kalanların bir +1 var. Herkese teşekkürler!

Ayrıca, Stack topluluğunda bu soruya oy veren ve / veya favori olarak işaretleyen herkese teşekkürler. 100 oy vermeyi bir iltifat olarak alıyorum ve bu tartışmanın aynı endişeye sahip başka birine yardımcı olmasını umuyorum.


155
Bence bunun iyi olmadığını biliyor. Belirtilen şartlar altında hala en iyi çözümü arıyor.
stefanw

33
Günün sonunda yapacağınız tek şey, önlenebilir bir güvenlik açığını dikkatli bir şekilde uygulamaktır.
kale

20
@Michael Brooks - CWE-257 ile kesinlikle hemfikir olduğumu bilmenizi istiyorum ve şifreleri düz metin olarak kurtarılabilir hale getirmem istendiğinde her zaman sözlü olarak alıntı yapmak isterim. Ancak, gerçekte, müşteriler ve kullanıcılar nadiren NIST düzenlemeleriyle ilgileniyor ve yine de yapmamı istiyorlar. Zamanın% 90'ı onları başka türlü ikna edebilirim, ancak yapamadığım zamanın% 10'unda en iyi hareket yolunu belirlemeye çalışıyorum - bu durumlarda CWE-257 elimdeki küllerdir (maalesef).
Shane,

81
@AviD: Sistemin "düşük değerinin" kesinlikle bu konuda bir etkisi yoktur , çünkü insanlar şifrelerini tekrar kullanırlar . İnsanlar neden bu basit gerçeği anlayamıyor? Bazı "düşük değerli" sistemlerde şifreleri kırırsanız, büyük olasılıkla diğer "yüksek değerli" sistemler için birkaç geçerli şifreniz olur.
Aaronaught

20
Cevabımın yorum akışında az önce bahsettiğim başka bir nokta da göz ardı edildi: Bu gereksinimleri soran kişinin güvenilir olduğunu nasıl bilebilirsiniz? "Kullanılabilirlik" bahanesi, gelecekte bir noktada şifreleri çalmak için gerçek bir niyeti maskeleyen bir cephe ise? Saflığınız sadece müşterilere ve hissedarlara milyonlarca mal olabilir. Güvenlik uzmanları nihayet oturmadan önce bunu kaç kez tekrarlamalıdır: En yaygın ve en ciddi güvenlik tehditleri her zaman DAHİLİDİR.
Aaronaught

Yanıtlar:


1037

Bu soruna başka bir yaklaşım ya da açı almaya ne dersiniz? Parolanın neden düz metin içinde olması gerektiğini sorun: eğer kullanıcı parolayı alabiliyorsa, o zaman kesinlikle söyledikleri parolayı gerçekten almanız gerekmez (zaten ne olduğunu hatırlamıyorlar), onlara bir şifre vermek gerekiyor kullanabilirsiniz .

Bir düşünün: Kullanıcının şifreyi alması gerekiyorsa, bunun nedeni unutmuş olmasıdır. Bu durumda yeni bir şifre eskisi kadar iyidir. Ancak, günümüzde kullanılan yaygın parola sıfırlama mekanizmalarının dezavantajlarından biri, bir sıfırlama işleminde üretilen oluşturulan parolaların genellikle bir dizi rastgele karakter olmasıdır, bu nedenle kullanıcının kopyalama-n- yapıştırmak. Bu daha az bilgili bilgisayar kullanıcıları için bir sorun olabilir.

Bu problemin bir yolu, az çok doğal dil metni olan otomatik olarak oluşturulan şifreler sağlamaktır. Doğal dil dizeleri aynı uzunlukta rastgele karakter dizisinin sahip olduğu entropiye sahip olmasa da, otomatik oluşturulan şifrenizin sadece 8 (veya 10 veya 12) karaktere sahip olması gerektiğini söyleyen hiçbir şey yoktur. Birkaç rastgele kelimeyi bir araya getirerek yüksek entropi otomatik olarak oluşturulan bir parola alın (aralarında boşluk bırakın, böylece okuyabilen herkes tarafından hala tanınabilir ve yazılabilir). Değişen uzunlukta altı rastgele kelime muhtemelen 10 rastgele karakterden daha doğru ve güvenle yazmak için daha kolaydır ve daha yüksek bir entropiye de sahip olabilirler. Örneğin, 10 karakterlik bir parolanın entropisi, büyük harf, küçük harf, basamak ve 10 noktalama işaretinin (toplam 72 geçerli sembol için) 61.7 bitlik bir entropisi olur. Altı kelimelik bir parola için rasgele seçilebilen 7776 kelimelik bir sözlük (Diceware tarafından kullanıldığı gibi) kullanıldığında, parola 77.4 bitlik bir entropiye sahip olacaktır. Bkz.Daha fazla bilgi için Diceware SSS .

  • yaklaşık 77 bit entropi içeren bir parola: "nesir işaret fişeği akut yeteneğini kabul et"

  • yaklaşık 74 bit entropi içeren bir şifre: "K: & $ R ^ tt ~ qkD"

İfadeyi yazmayı tercih edeceğimi biliyorum ve copy-n-paste ile, ifadenin parolayı da kullanması daha kolay değildir, bu yüzden orada bir kayıp olmaz. Elbette, web siteniz (veya korunan varlık ne olursa olsun) otomatik olarak oluşturulan bir parola için 77 bit entropi gerektirmiyorsa, daha az kelime oluşturun (ki kullanıcılarınızın takdir edeceğinden eminim).

Gerçekten yüksek bir değere sahip olmayan parola korumalı varlıklar olduğunu iddia ediyorum, bu yüzden bir parola ihlali dünyanın sonu olmayabilir. Örneğin, çeşitli web sitelerinde kullandığım şifrelerin% 80'inin ihlal edilip edilmediğini umursamıyorum: olabilecek tek şey bir süre spam yapan veya benim adıma gönderen bir kişi. Harika olmazdı, ama banka hesabımı ele geçirmiş gibi değiller. Ancak, birçok kişinin banka hesapları (ve muhtemelen ulusal güvenlik veritabanları) için yaptıkları web forum siteleri için aynı şifreyi kullandığı göz önüne alındığında, bu 'düşük değerli' şifreleri bile olmayan -recoverable.


93
Şu anda en iyi şifre gücü ve kullanıcı hatırlama dengesini sunan parolalar için +1.
Aaronaught

197
Ayrıca tam bir cümle oluşturabilirsiniz; örneğin, <adjective> <noun> <verb> <adverb> şeklindedir. Yeşil kedi çılgınca atlıyor. kategoriler için listeler var. her biri için 1024 seçenek ile 40 bit entropi var.
Dominik Weber

28
Parola kullanımını yeniden kullanmaktan kaçınmak için kritik bir sorun olarak gördüğünüz için +1
lurscher

57
"Bir düşünün - eğer kullanıcının şifreyi alması gerekiyorsa, bunun nedeni unutmuş olmalarıdır" - her zaman doğru değildir! Sık sık parolamı almak istiyorum çünkü dizüstü bilgisayardayım ve makinemin evdeki parolamın saklandığını veya güvenli bir yere yazıldığını biliyorum ve yeni bir parola alarak bunu kırmak istemiyorum .
joachim

5
Yeni IT Security SE sitesinde en yüksek puan alan soru , bu entropi hesaplamasının geçerliliği ile ilgilidir. (Eh, teknik olarak, bu @Pieter bağlantılı olduğunu XKCD ilgilenir.)
Pops

592

Birisinin inşa etmek için büyük bir bina yaptırdığını düşünün - bir çubuk, diyelim ki - ve aşağıdaki konuşma gerçekleşir:

Mimar: Bu boyutta ve kapasitede bir bina için, burada, burada ve burada yangın çıkışlarına ihtiyacınız olacak.
Müşteri: Hayır, bu çok karmaşık ve bakımı pahalı, yan kapı veya arka kapı istemiyorum.
Mimar: Efendim, yangın çıkışları isteğe bağlı değildir, şehrin yangın koduna göre gereklidir.
Müşteri: Tartışmak için para ödemiyorum. Sadece istediğimi yap.

Mimar daha sonra yangın çıkmadan bu binanın nasıl etik olarak inşa edileceğini soruyor mu?

İnşaat ve mühendislik endüstrisinde, konuşmanın büyük olasılıkla şu şekilde bitmesi muhtemeldir:

Mimar: Bu bina yangın çıkışı olmadan inşa edilemez. Başka herhangi bir lisanslı profesyonele gidebilirsiniz ve o size aynı şeyi söyleyecektir. Ben şimdi gidiyorum; işbirliği yapmaya hazır olduğunda beni geri ara

Bilgisayar programlama lisanslı bir meslek olmayabilir , ancak insanlar genellikle mesleğimizin neden bir inşaat veya makine mühendisi ile aynı saygıyı elde etmediğini merak ediyor gibi görünüyor - daha fazla kendinizi yormayın. Bu meslekler, çöp (veya tamamen tehlikeli) gereklilikleri verildiğinde, sadece reddedecektir. Onlar, "iyi, elimden geleni yaptım, ama ısrar etti ve söylediklerini yapmalıyım" demenin bir bahane olmadığını biliyorlar. Bu bahane için lisanslarını kaybedebilirler.

Siz veya müşterilerinizin halka açık herhangi bir şirketin parçası olup olmadığını bilmiyorum, ancak şifreleri kurtarılabilir bir biçimde saklamak birkaç farklı güvenlik denetiminde başarısız olmanıza neden olacaktır. Sorun parolaları kurtarmak için veritabanınıza erişen bazı "hacker" için ne kadar zor değil. Güvenlik tehditlerinin büyük çoğunluğu içseldir. Korunmanız gereken şey, tüm parolalarla çekip onları en yüksek teklifi veren kişiye satan hoşnutsuz bir çalışan. Asimetrik şifreleme kullanmak ve özel anahtarı ayrı bir veritabanında saklamak, bu senaryoyu önlemek için kesinlikle hiçbir şey yapmaz; her zaman özel veritabanına erişimi olan biri olacak ve bu ciddi bir güvenlik riski.

Şifreleri kurtarılabilir bir biçimde saklamanın etik veya sorumlu bir yolu yoktur. Dönemi.


124
@Aaronaught - Bence bu adil ve geçerli bir nokta, ama bunu sana çevirmeme izin ver. Bir şirket için çalışan olarak bir proje üzerinde çalışıyorsunuz ve patronunuz 'bu bizim sistemimizin bir gereği' diyor (ne sebeple olursa olsun). Doğru öfke dolu bir işten mi çıkıyorsunuz? Sorumlu olmak için tam kontrol altında olduğumda bir zorunluluk olduğunu biliyorum - ancak bir şirket denetimin veya yükümlülüğün başarısızlığını riske atmayı seçerse, bir noktayı kanıtlamak için işimi feda etmek benim görevim mi yoksa BEST'i mi ararım? ve dedikleri şeyi yapmanın en güvenli yolu nedir? Sadece şeytanın avukatı oynuyor ..
Shane

44
Ben bir avukat değilim, ama bunu düşünün. Süpervizörünüz, kolayca önlenebilecek bir yükümlülüğe maruz kalmak gibi şirketin çıkarlarına karşı bir şeyler yapmanızı emrederse, işiniz itaat etmek veya kibarca reddetmek mi? Evet, onlar sizin patronunuz, ama yatırımcı olsalar bile kendilerine ait bir patronları var. Eğer varsa yok başlarını üzerinden gitmek, kimin kafası güvenlik delik istismar edildiğinde rulo olacak? Dikkate alınması gereken bir şey.
Steven Sudit

68
Geliştiriciler her zaman işlerimizin diğerlerinden daha zor olduğunu söylemeye çalışıyorlar, çünkü sürekli değişen çöp gereksinimleri alıyoruz. Bu, bunun nedeninin mükemmel bir örneğidir; mesleğimizin umutsuzca bir omurgaya ihtiyacı var. Mesleğimizin umutsuzca "hayır, bu kabul edilebilir bir gereklilik değil, bu iyi niyetle geliştirebileceğim bir şey değil, benim müşterim / işverenim olabilirsiniz ama müşterilerinize ve halka karşı profesyonel sorumluluklarım var, ve bunun yapılmasını istiyorsanız başka yere bakmanız gerekecek. "
Aaronaught

36
@sfussenegger: Arka planı bilmenize gerek yok. Kabul edilemez. Müşterinin% 100 güvenilir olduğunu varsayıyorsunuz - ya daha sonra şifreleri çözebilmesi için bu gereksinimi özellikle istiyorsa? Güvenlik gelişiminde birkaç maddeden biridir edilir taşa oyulmuş. Yapmadığınız bazı şeyler var ve kurtarılabilir şifreleri saklamak on tane.
Aaronaught

37
Tamam, şimdi ve burada bir risk değerlendirmesi yapalım. "Parolaları kurtarılabilir bir biçimde saklarsanız, önemsiz bir parola çalma riski yaratırsınız. Ayrıca en azından bazı kullanıcıların e-postaları ve banka hesapları için aynı parolaları kullanmaları olasıdır. Parolalar çalınırsa ve banka hesapları boşaltıldı, muhtemelen manşet olacak, hiç kimse sizinle tekrar iş yapmayacak ve muhtemelen varlığınızdan kovulacaksınız. " Şimdi saçmalığı kesebilir miyiz? Buna "Naziler" kelimesini getirmiş olmanız, hiçbir mantık duygunuz olmadığını açıkça göstermektedir.
Aaronaught

206

Şifreyi + bir tuzu bir genel anahtarla şifreleyebilirsiniz. Oturum açma için, saklanan değerin kullanıcı girişi + tuzdan hesaplanan değere eşit olup olmadığını kontrol edin. Bir süre gelirse, şifrenin düz metin olarak geri yüklenmesi gerektiğinde, özel anahtarla manuel veya yarı otomatik olarak şifresini çözebilirsiniz. Özel anahtar başka bir yerde saklanabilir ve ek olarak simetrik olarak şifrelenebilir (parolanın şifresini çözmek için bir insan etkileşimi gerekir).

Bence bu aslında Windows Recovery Agent'ın çalışma şekline benziyor .

  • Parolalar şifreli olarak saklanır
  • Kullanıcılar düz metnin şifresini çözmeden giriş yapabilir
  • Parolalar düz metin olarak kurtarılabilir, ancak yalnızca sistem dışında saklanabilen özel bir anahtarla (isterseniz bir banka kasasında).

34
-1 şifreler asla "şifrelenmemeli" CWE- 257'nin ihlalidir cwe.mitre.org/data/definitions/257.html
kale

100
1. Soru, şifrenin düz metin olarak kurtarılabilmesi gerektiğini belirtti, bu yüzden bu bir gerekliliktir. 2. Burada asimetrik şifreleme kullanıyorum, simetrik şifreleme kullanmıyorum. Şifreyi çözmenin anahtarı günlük işlemler için gerekli değildir ve bir banka kasasında saklanabilir. Bağlantıdaki argüman geçerlidir, ancak bu durum için geçerli değildir.
stefanw

57
Doğru, ancak gereksinimler göz önüne alındığında, bunu yapmanın en sorumlu yolu olduğunu kabul edebilir misiniz? CWE-257'nizle tüm gün bana vurabilirsiniz, kimlik bilgilerini güvenli bir şekilde saklamak ve çalışmak ve gerekirse orijinal formlarına geri döndürmek gibi ilginç bir sorunu değiştirmeyecektir.
stefanw

10
Windows Kurtarma Aracısı da parola yönetimi değil, gerçek şifreleme ile ilgili olduğu için kötü bir örnektir. Şifreleme anahtarı bir parola ile aynı değildir ; her birini çevreleyen kurallar ve uygulamalar tamamen farklıdır. Şifreleme ve kimlik doğrulama aynı değildir. Şifreleme gizlilik içindir - verileri korumak için bir anahtar kullanılır . Kimlik doğrulama, anahtarın veriler olduğu kimlik içindir ( kimlik doğrulama işleminde bir faktördür ). Tekrarlıyorum, şifreleme ve kimlik doğrulama aynı değil. Birinin prensiplerini diğerine geçerli bir şekilde uygulayamazsınız.
Aaronaught

16
+1 CWE-257'de takıntılı bir şekilde ısrar etmenin anlamı nedir? Bu bir zayıflık (CWE), bir güvenlik açığı değil (CVE). Kurtarılabilir parolaların arabellek taşmalarıyla karşılaştırılması elma ve portakalları karşılaştırmaktır. Müşterinin sorunu anladığından emin olun (böyle bir şey imzalamasına izin verin - aksi takdirde söz konusu bir şeyi hatırlamayabilir) ve devam edin. Ayrıca, gerekli güvenlik önlemleri sistemin değerine ve potansiyel saldırı riskine bağlıdır. Başarılı bir saldırgan yalnızca bazı bülten aboneliklerini iptal edebiliyorsa, herhangi bir sorun hakkında tartışmak için hiçbir neden yoktur.
sfussenegger

133

Vazgeçme. Müşterilerinizi ikna etmek için kullanabileceğiniz silah reddedilemez. Kullanıcı parolalarını herhangi bir mekanizma ile yeniden yapılandırabiliyorsanız , müşterilerine yasal bir reddedilmeme mekanizması ve bu parolaya bağlı herhangi bir işlemi reddedebilirler, çünkü tedarikçinin parolayı yeniden yapılandırmadıklarını kanıtlayamaz ve işlemi kendi başlarına koydu. Parolalar şifreli metin yerine doğru özet olarak saklanıyorsa, bu mümkün değildir, ya son istemci işlemi kendisi gerçekleştirdi ya da parola olmadan bakım görevini ihlal etti. Her iki durumda da, sorumluluk onunla birlikte kare içinde kalıyor. Bunun yüz milyonlarca dolar olacağı davalar üzerinde çalıştım. Yanlış yapmak istediğiniz bir şey değil.


2
Web sunucusu günlükleri mahkemede sayılmaz mı? Yoksa bu durumda da sahte oldukları varsayılır mı?
Vinko Vrsalovic

10
@ Vinko Vrsalovic, Web sunucusu günlükleri mahkemede ÖNERİLMEMEKTEDİR, böylece web sunucusu günlüklerinin açıkça olmadığını reddetme, özgünlük kanıtı, kanıt zinciri vb.
AviD

7
Kesinlikle. Tedarikçi bu işlemi sadece müşterinin gerçekleştirebileceğini kanıtlamalıdır . Bir web sunucusu günlüğü bunu yapmaz.
user207421

Tabii ki, "işlemler" için tüm parolalara gerek yoktur. Web sitesinin bir web sayfası yer işareti listesi geliştirmek için olduğunu varsayalım. Bu durumda, mali işlem olmadığı için sorumluluk limiti (genellikle web sitesine kayıt olurken Şartlar ve Koşullarda belirtilir) sıfırdır. Web sitesinin başkalarını etkileyen herhangi bir eylemi yoksa, saldırıya uğramış kullanıcıya veri kaybolur. Şirket T&C'ler tarafından korunmaktadır.
Sablefoste

1
@Sablefoste Bu web sitesinde. Kullanıcı başka bir yerde aynı şifreyi kullanırsa, özel kimlik bilgilerini sızdırma riski yaratırsınız. Uygulamaya hiç katılmazsanız, soruna neden olamazsınız.
user207421

94

Daha sonra düz metin almak için şifreleri etik olarak saklayamazsınız. Bu kadar basit. Jon Skeet bile daha sonra düz metin almak için şifreleri etik olarak saklayamaz. Kullanıcılarınız bir şekilde veya başka bir şekilde şifreleri alabilirse, kodunuzda bir güvenlik açığı bulan bir bilgisayar korsanı da potansiyel olarak bulabilir. Ve bu sadece bir kullanıcının şifresinin ele geçirildiğini değil, zamanda bunların .

Müşterilerinizle ilgili bir sorun varsa, şifreleri kurtarılabilir bir şekilde saklamanın yasalara aykırı olduğunu söyleyin. Burada her halükarda İngiltere'de Veri Koruma Yasası 1998 (özellikle, Çizelge 1, Kısım II, Paragraf 9), veri denetleyicilerinin, diğer şeylerin yanı sıra, kişisel verilerin güvenliğini sağlamak için uygun teknik önlemleri kullanmasını gerektirir. verilerin güvenliği ihlal edildiğinde oluşabilecek zararlar - bu, siteler arasında şifreleri paylaşan kullanıcılar için önemli olabilir. Onlar hala bir sorun olduğu gerçeğini grokking sorun varsa, gibi bazı gerçek dünya örnekleri onları gelin bu bir .

Kullanıcıların bir girişi kurtarmasına izin vermenin en basit yolu, onlara otomatik olarak giriş yapan ve doğrudan yeni bir şifre seçebilecekleri bir sayfaya götüren tek seferlik bir bağlantıyı e-postayla göndermektir. Bir prototip oluşturun ve bunları eylem halinde gösterin.

İşte konu hakkında yazdığım birkaç blog yazısı:

Güncelleme: Kullanıcılarının şifrelerini düzgün bir şekilde güven altına almayan şirketlere karşı davalar ve kovuşturmalar görmeye başlıyoruz. Örnek: LinkedIn 5 milyon dolarlık sınıf davasıyla tokatladı ; Sony, PlayStation veri kesmek için 250.000 £ para cezasına çarptırıldı . Doğru hatırlıyorsam, LinkedIn aslında kullanıcılarının şifrelerini şifreliyordu, ancak kullandığı şifreleme etkili olamayacak kadar zayıftı.


8
@jimmycakes - Bu, düşük güvenlikli bir sistemde yapmak için iyi bir şeydir, ancak yüksek değerli herhangi bir veri saklıyorsanız, kişilerin e-postasının zaten tehlikeye girdiğini ve onlara doğrudan bir giriş bağlantısı göndermenin sisteminizi tehlikeye attığını varsaymanız gerekir. Sorumu uygun bir alternatifle cevapladığım için +1, ancak bir bütün olarak mantıktaki bir kusura işaret etti. Payppal'ın HİÇ bir doğrudan giriş bağlantısı göndermesini istemiyorum. Paranoyak gelebilir, ancak her zaman e-posta hesabımın bozuk olduğunu varsayıyorum - beni dürüst tutar. ;)
Shane

Kesinlikle - Bana bir telefon verip beni (reset izin vermeden önce benim kimliğini doğrulamak en azından için benim banka beklediğiniz değil benim şifre kurtarmak). Burada özetlediğim, herhangi bir web sitesinden, her yerde beklediğim mutlak minimum şifre güvenliği standardı.
jammycakes

1
Zaten belirlediğiniz kısıtlamaya sahip olmayan bankayı veya paypal'ı görmezden gelmek; E-postalarının ele geçirildiğini varsayarsanız, çevrimiçi yöntem nasıl mümkün olabilir? Oluşturulan bir şifreyi e-postayla gönderirseniz, bu nasıl daha güvenli?
Peter Coulton

Tek bir kişinin şifresini almaktan bahsetmiyorum, bir veritabanından birden fazla şifre almaktan bahsediyorum. Bir sistem şifreleri kurtarılabilir şekilde düz metne depolarsa, bir bilgisayar korsanı veritabanınızdan tüm şifreleri çıkarmak için bir komut dosyası yazabilir.
jammycakes

Bilinmeyen ağ düğümleri aracılığıyla düz biçimde ağ üzerinden geçerek e-posta ile bağlantı / şifre göndermeyi merak ediyorum ...
Jakub

55

Bu bölümü okuduktan sonra:

Aşağıdaki bir notta, güvenli bir şifre kurtarma rutini gerçekleştirmeleri istendiğinde, web sitelerinin büyük ölçüde yaşlılara, zihinsel olarak zorlayıcı veya çok gençlere yönelik web sitelerinin kafa karıştırıcı olabileceğine dikkat çektim. Bu durumlarda basit ve sıradan bulsak da, bazı kullanıcılar ya bir servis teknolojisinin sisteme yardım etmesinin ya da doğrudan onlara e-postayla gönderilmesini / görüntülenmesini sağlamak için ekstra yardıma ihtiyaç duyarlar.

Bu tür sistemlerde, kullanıcılara bu düzeyde erişim yardımı verilmezse, bu demografik özelliklerden kaynaklanan yıpranma oranı uygulamayı bozabilir, bu nedenle lütfen bu tür bir kurulumu aklınızda bulundurun.

Bu gereksinimlerden herhangi birinin geri alınabilir bir şifre sistemi gerektirip gerektirmediğini merak ediyorum. Örneğin: Mabel Teyze çağırır ve "İnternet programınız çalışmıyor, şifremi bilmiyorum" diyor. "Tamam" diyor müşteri hizmetleri drone "birkaç ayrıntı kontrol edeyim ve sonra size yeni bir şifre vereceğim . daha kolayca."

Ardından sistem, bir parola sıfırlama işleminin ne zaman yapıldığını bilmek üzere ayarlanır ve "yeni parolayı korumak mı yoksa yeni bir parola seçmek ister misiniz?" Mesajı görüntüler.

Daha az bilgisayar okuryazarı olanlar için bu eski şifrelerini anlatmaktan nasıl daha kötüdür? Müşteri hizmetleri personeli yaramazlıklara ulaşabilirken, veritabanının ihlali durumunda kendisi çok daha güvenlidir.

Benim önerimde neyin kötü olduğunu yorumlayın ve başlangıçta istediğinizi gerçekten yapan bir çözüm önereceğim.


4
@john - Bence bu mükemmel bir çözüm. Yine de iç tehditlerden alev almaya hazırlanın! Bunu bir ara şifre sıfırlamasıyla yapsaydım (teknoloji şifreyi manuel olarak geçici bir mesafe olarak ayarlar ve Mabel'a 1234'ü şifresi olarak yazmasını söyler), o zaman muhtemelen önemli veri içermeyen bir sistemde iyi çalışırdı. Yüksek güvenlik ortamı olsaydı, o zaman müşteri hizmetinin CEO'nun şifresini 1234 olarak ayarlayıp doğrudan giriş yapabileceği bir sorunumuz var. Mükemmel bir çözüm yoktur, ancak bu birçok durumda çalışır. (+1)
Shane

5
Sadece bu cevabı fark ettim. @Shane, neden "iç tehditler" üzerinde yanmayı öngördüğünü anlamıyorum. Bir parolayı değiştirme yeteneği dikkate değer bir zayıflık değildir; sorun, diğer hizmetler için kullanılması muhtemel bir parola bulma yeteneğidir - e-postası, bankası, CC bilgilerinin saklandığı çevrimiçi alışveriş siteleri. Bu zayıflık burada kendini göstermiyor; Bob Mabel'ın şifresini sıfırlar ve ona telefondan söylerse, bu onun diğer hesaplarına erişmesine izin vermez. Ancak, girişte bir şifre sıfırlama "önermek" yerine zorlar .
Aaronaught

@Aaronaught - Ne demek istediğimi anlıyorum, ama düşündüğüm şey, müşteri hizmetleri çalışanlarının bile bir sistemin belirli alanlarından (bordro, muhasebe, vb.) Kilitlendiği ve doğrudan şifre belirlemelerine izin veren kendi başına bir güvenlik sorunu. Bu soruyu sorduğum sistem türünün bir iç muhasebe sisteminden büyük ölçüde farklı olduğunu düşünüyoruz. Muhtemelen, tescilli dahili sistemler ve içindeki şifre güvenliği hakkında tamamen farklı bir tartışmamız olabilir.
Shane

1
@Shane: O zaman soru daha az mantıklı. Birinin onlara telefonla şifre okumasını istediğinizi varsaymıştım. Kullanıcılara şifrelerini bazı otomatik self servis sistem üzerinden e-posta ile göndermek istiyorsanız, o zaman parolayı tamamen zayıflatabilirsiniz, çünkü daha zayıf bir şeyle "korunuyor". Belki de tam olarak ne tür kullanılabilirlik senaryolarını desteklemeye çalıştığınız konusunda çok daha spesifik olmanız gerekir. Belki bu analiz daha sonra size kurtarılabilir şifrelerin bile gerekli olmadığını gösterecektir.
Aaronaught

4
Destek kişisi tarafından sağlanan kodun yeni şifre olması gerekmez. Şifre sıfırlama işlevinin kilidini açan tek seferlik bir kod olabilir.
kgilpin

42

Michael Brooks, CWE-257 hakkında oldukça vokaldir - hangi yöntemi kullanırsanız kullanın, siz (yönetici) şifreyi yine de kurtarabilirsiniz. Peki şu seçenekler hakkında:

  1. Parolayı başkasının ortak anahtarıyla şifreleyin - bazı dış yetkiler. Bu şekilde kişisel olarak yeniden yapılandıramazsınız ve kullanıcının bu dış yetkiliye gitmesi ve şifresinin kurtarılmasını istemesi gerekir.
  2. İkinci bir paroladan oluşturulan bir anahtarı kullanarak parolayı şifreleyin. Bu şifreleme istemci tarafında yapın ve hiçbir zaman açık olarak sunucuya iletmeyin. Daha sonra, kurtarmak için anahtarı girişlerinden yeniden oluşturarak şifre çözme istemci tarafını tekrar yapın. Kuşkusuz, bu yaklaşım temel olarak ikinci bir şifre kullanıyor, ancak her zaman onlara yazmasını veya eski güvenlik sorusu yaklaşımını kullanmasını söyleyebilirsiniz.

Bence 1. daha iyi bir seçimdir, çünkü müşterinin şirketi içinde özel anahtarı tutacak birini belirlemenizi sağlar. Anahtarı kendileri oluşturduklarından emin olun ve talimatları güvenli bir şekilde saklayın. Vb. Tahmin edebilmek için şifreyi kırmak zorunda kalmaları için yalnızca şifreyi belirli karakterleri dahili üçüncü tarafa şifrelemeyi ve sağlamayı seçerek güvenlik ekleyebilirsiniz. o. Bu karakterleri kullanıcıya sağlayarak, muhtemelen ne olduğunu hatırlayacaklar!


8
Ve elbette, şifre çözme için şirketinizden birden fazla birine ihtiyaç duymak için herhangi bir gizli bölme tekniğini kullanabilirsiniz. Ancak bunların hiçbiri, bir kullanıcıya şifrelerini postalayabilmenin veya bazı birinci sınıf telefon destekçilerinin giriş yaparak onları
yürütebilmesinin

27

Bu soruya yanıt olarak kullanıcı için güvenlik endişeleri hakkında çok fazla tartışma yapıldı, ancak faydalardan bahsetmek istiyorum. Şimdiye kadar, sistemde kurtarılabilir bir parolaya sahip olmanın bahsettiği meşru bir fayda görmedim . Bunu düşün:

  • Kullanıcı, parolalarının kendisine e-postayla gönderilmesinden yararlanıyor mu? Hayır. Tek kullanımlık bir şifre sıfırlama bağlantısından daha fazla yararlanırlar, bu da hatırlayacakları bir şifre seçmelerini sağlar .
  • Kullanıcı şifresini ekranda göstermekten yararlanıyor mu? Hayır, yukarıdaki ile aynı nedenle; yeni bir şifre seçmelidirler.
  • Kullanıcı, bir destek görevlisinin şifreyi kullanıcıya söylemesinden yararlanıyor mu? Hayır; yine, destek sorumlusu kullanıcının şifresini doğru olarak doğruladığını görürse, yeni bir şifre verilmesi ve şifreyi değiştirme fırsatı kullanıcının yararına olur. Ayrıca, telefon desteği otomatik şifre sıfırlamalarından daha maliyetlidir, bu nedenle şirket de bundan fayda sağlamaz.

Kurtarılabilir şifrelerden yararlanabilecek tek şey, kötü niyetli niyeti olan veya üçüncü taraf şifre değişimi gerektiren kötü API'leri destekleyenlerdir (lütfen söz konusu API'ları asla kullanmayın!). Muhtemelen müşterilerinize , şirketin kurtarılabilir şifreleri depolayarak hiçbir fayda ve sadece yükümlülük kazanmadığını doğru bir şekilde belirterek argümanınızı kazanabilirsiniz .

Bu tür isteklerin satırları arasında okurken, müşterilerinizin şifrelerin nasıl yönetildiğini muhtemelen anlamadığını veya aslında hiç umursamadığını göreceksiniz. Gerçekten istedikleri, kullanıcıları için çok zor olmayan bir kimlik doğrulama sistemidir . Bu nedenle, onlara kurtarılabilir şifreleri nasıl gerçekten istemediklerini anlatmanın yanı sıra, özellikle de bir bankanın ağır güvenlik düzeylerine ihtiyacınız yoksa, kimlik doğrulama işlemini daha az acı verici hale getirmenin yollarını sunmalısınız:

  • Kullanıcının kullanıcı adı için e-posta adresini kullanmasına izin ver. Kullanıcının kullanıcı adını unuttuğu sayısız durum gördüm, ancak çok azı e-posta adresini unuttu.
  • OpenID sunun ve bir üçüncü tarafın kullanıcı unutkanlığı için ödeme yapmasına izin verin.
  • Parola kısıtlamalarını azaltın. Eminim ki bazı siteler "özel karakterleri kullanamazsınız" veya "şifreniz çok uzun" veya "şifreniz başlamalıdır" gibi gereksiz gereksinimler nedeniyle bazı web siteleri tercih ettiğiniz şifreye izin vermediğinde inanılmaz derecede rahatsız olduk bir harf ile. " Ayrıca, kullanım kolaylığı parola gücünden daha büyük bir endişe ise, daha kısa parolalara izin vererek veya karakter sınıflarının bir karışımını gerektirmeden aptal olmayan gereksinimleri bile gevşetebilirsiniz. Gevşeyen kısıtlamalarla, kullanıcıların unutamayacakları bir parola kullanma olasılığı daha yüksektir.
  • Parolaların süresinin dolmasına izin vermeyin.
  • Kullanıcının eski bir şifreyi yeniden kullanmasına izin verin.
  • Kullanıcının kendi şifre sıfırlama sorusunu seçmesine izin ver.

Ancak, bir nedenden dolayı (ve lütfen bize nedenini söyleyin) gerçekten, gerçekten, gerçekten kurtarılabilir bir parolaya sahip olmanız gerekiyorsa, kullanıcıyı diğer çevrimiçi hesaplarını parola olmayan bir şekilde vererek potansiyel olarak tehlikeye atmaya karşı koruyabilirsiniz. tabanlı kimlik kanıtlama sistemi. İnsanlar zaten kullanıcı adı / şifre sistemlerine aşina olduklarından ve iyi uygulanmış bir çözüm olduklarından, bu son çare olacaktır, ancak şifrelerin kesinlikle birçok yaratıcı alternatifi vardır:

  • Kullanıcının tercihen 4 basamaklı olmayan ve tercihen sadece kaba kuvvet girişimlerine karşı korumalı olması durumunda sayısal bir pim seçmesine izin verin.
  • Kullanıcının kısa bir cevapla, sadece cevabını bildikleri, asla değişmeyecekleri, her zaman hatırlayacakları ve diğer insanların bulduklarını umursamayacakları bir soru seçmesini isteyin.
  • Kullanıcının bir kullanıcı adı girmesini ve ardından tahmin etmeye karşı korumak için yeterli permütasyona sahip hatırlaması kolay bir şekil çizmesini sağlayın ( G1'in telefonun kilidini açmak için bunu nasıl yaptığına dair bu şık fotoğrafa bakın ).
  • Bir çocuk web sitesi için, kullanıcı adına (bir tür özdeşlik gibi) dayalı bulanık bir yaratığı otomatik olarak oluşturabilir ve kullanıcıdan yaratığa gizli bir ad vermesini isteyebilirsiniz. Daha sonra giriş yapmak için yaratığın gizli adını girmeleri istenebilir.

Buradaki yorumlara cevap verdim, cevabımda, oldukça uzun olduğu için - ortaya çıkan sorunların analizini ve tartışmasını gözden geçirmenin önemli olduğunu düşünüyorum. stackoverflow.com/questions/2283937/…
AviD

Kullanıcı şifresini ekranda göstermekten yararlanıyor mu? Bence - kesinlikle evet! İnternetten her zaman gizli şifre aldığımda, Apple'a teşekkür ederim, görünür hale getirebiliyorum, böylece ağrıyı 100 kez tekrar yazmak zorunda kalmam. Engelli kişinin nasıl hissettiğini hayal edebiliyorum.
Dmitri Zaitsev

1
Neden belirsiz bir parola görüntülemek hatırlayabileceğiniz yeni bir parola seçmenize izin vermekten daha iyi?
Jacob

@Jacob: Daha entropi mi?
Alexander Shcheblikin

25

Soru üzerine yaptığım yorum gereği:
Neredeyse herkes tarafından önemli bir nokta çok parlatıldı ... İlk tepkim @Michael Brooks'a çok benziyordu, ben @stefanw gibi, buradaki sorunun kırık gereksinimler olduğunu fark edene kadar , ama bunlar bunlar.
Ama sonra, durumun böyle olmayabileceği aklıma geldi! Burada eksik olan nokta , uygulamanın varlıklarının söylenmeyen değeridir . Basitçe söylemek gerekirse, düşük değerli bir sistem için, tüm sürecin dahil olduğu tamamen güvenli bir kimlik doğrulama mekanizması aşırıya kaçar ve yanlış olur güvenlik seçimi olacaktır.
Bir banka için "en iyi uygulamalar" şarttır ve CWE-257'yi etik olarak ihlal etmenin bir yolu yoktur. Ancak buna değmediği düşük değerli sistemleri düşünmek kolaydır (ancak basit bir şifre hala gereklidir).

Hatırlamak önemlidir, gerçek güvenlik uzmanlığı, herkesin çevrimiçi okuyabileceği "En İyi Uygulamalar" ı dogmatik bir şekilde püskürtmemek için uygun denemeler bulmaktır.

Bu nedenle, başka bir çözüm öneriyorum:
Sistemin değerine bağlı olarak ve SADECE sistem "pahalı" bir varlık (kimliğin kendisi dahil) olmadan uygun şekilde düşük bir değere sahipse VE uygun işlemi yapan geçerli iş gereksinimleri vardır imkansız (ya da yeterince zor / pahalı) VE müşteri tüm uyarıların farkındadır ... Şifrelemeyle hiç uğraşmamanızı söylemekten kısa bir süre için duruyorum, çünkü uygulanması çok basit / ucuz (hatta düşünülebilir olsa bile) anahtar yönetimi) ve BAZI koruma sağlar (uygulama maliyetinden daha fazla). Ayrıca, kullanıcıya e-posta, ekranda görüntüleme vb.Gibi orijinal şifreyi nasıl sağlayacağınıza bakmaya değer.
Sonra özel çemberler atlamak için tersinir şifrelemeye izin vermek uygun olabilir.

Buradaki varsayım, çalınan parolanın (toplamda bile) değerinin oldukça düşük olması nedeniyle, bu çözümlerden herhangi biri geçerli olabilir.


Farklı yazılarda ve ayrı yorum başlıklarında devam eden canlı bir tartışma, aslında SEVERAL canlı tartışmalar olduğundan, bazı açıklamalar ekleyeceğim ve burada başka yerlerde dile getirilen bazı iyi noktalara cevap vereceğim.

Başlamak için, burada herkesin kullanıcının orijinal şifresinin alınmasına izin vermenin Kötü Uygulama olduğunu ve genellikle İyi Bir Fikir olmadığını düşünüyorum. Bu hiç de anlaşmazlık altında değil ...
Dahası, pek çok, EN ÇOK, durumda - gerçekten yanlış, hatta kötü, kötü ve çirkin olduğunu vurgulayacağım .

Ancak esas sorun, etrafında prensip , gerekli olmayabilir herhangi bir durum yoktur IS bu yasaklamak, ve eğer öyleyse, nasıl bunu yapmak için duruma en doğru şekilde uygun .

Şimdi, @Thomas, @sfussenegger ve diğer birkaç kişinin bahsettiği gibi, bu soruya cevap vermenin tek uygun yolu, söz konusu (veya varsayımsal) durumun kapsamlı bir risk analizini yapmak , tehlikede olanı, ne kadar korunmaya değer olduğunu anlamaktır. ve bu korumayı sağlamak için diğer hafifletmelerin neler olduğu.
Hayır, bu bir terim DEĞİLDİR, bu gerçek canlı bir güvenlik profesyoneli için temel, en önemli araçlardan biridir. En iyi uygulamalar bir noktaya kadar iyidir (genellikle deneyimsiz ve bilgisayar korsanları için yönergeler olarak), bu noktadan sonra düşünceli risk analizi devreye girer.

Biliyor musun, komik - kendimi her zaman güvenlik fanatiklerinden biri olarak gördüm ve bir şekilde "Güvenlik Uzmanları" nın karşı tarafındayım ... Aslında, gerçek - çünkü fanatikim, ve gerçek bir gerçek güvenlik uzmanı - Bu en önemli risk analizi OLMADAN "En İyi Uygulama" dogmasını (veya CWE'leri) tüketmeye inanmıyorum .
"Gerçek sorunun ne olduğunu savunmadan alet kemerlerine her şeyi hızlıca uygulayan güvenlik zealotuna dikkat edin. Daha fazla güvenlik mutlaka iyi güvenliğe eşit değildir."
Risk analizi ve gerçek güvenlik fanatikleri, risk, potansiyel kayıp, olası tehditler, tamamlayıcı azaltıcı etkenler, vb. Temelinde daha akıllı, değer / risk temelli bir dengeye işaret eder. onların önerileri için bir temel oluşturuyor veya mantıksal değişimleri destekliyor, ancak bunun yerine bir risk analizinin nasıl gerçekleştirileceğini bile anlamadan dogma ve CWE'leri püskürtmeyi tercih ediyor, ancak Güvenlik Hack'leri var ve Uzmanlıkları, yazdırdıkları tuvalet kağıdına değmez.

Gerçekten de, Havaalanı Güvenliği olan saçmalık bu şekilde elde ediliyor.

Ancak BU DURUMDA yapılacak uygun denemeler hakkında konuşmadan önce, görünür risklere bir göz atalım (belirgin, çünkü bu durumla ilgili tüm arka plan bilgisine sahip değiliz, hepimiz varsayımsalız - çünkü soru ne varsayımsal durum olabilir ...)
DÜŞÜK-DEĞERLİ bir sistem olduğunu varsayalım, ancak halka açık erişimi o kadar trival değil - sistem sahibi sıradan kimliğe bürünmeyi önlemek istiyor, ancak "yüksek" güvenlik, kullanım kolaylığı kadar büyük değildir. (Evet, herhangi bir yetkin script-kiddie'nin siteyi hackleme riskini KABUL ETMEK meşru bir değiş tokuş ... Bekleyin, şimdi APT moda değil mi??)
Örneğin, büyük bir aile toplantısı için basit bir site ayarladığımı ve herkesin bu yıl kamp gezimize gitmek istediğimiz yerde beyin fırtınası yapmasına izin verdiğini varsayalım. Bazı anonim hackerlar hakkında daha az endişeleniyorum, hatta kuzen Fred, Wantanamanabikiliki Gölü'ne geri dönmek için tekrarlanan önerileri sıkıyor, çünkü Erma Teyze ihtiyaç duyduğunda oturum açamama konusunda. Şimdi, Erma Teyze, nükleer fizikçi, şifreleri hatırlamakta ya da hiç bilgisayar kullanmakta çok iyi değil ... Bu yüzden onun için mümkün olan tüm sürtünmeleri kaldırmak istiyorum. Yine, kesmek konusunda endişelenmiyorum, sadece yanlış girişin aptalca hatalarını istemiyorum - kimin geldiğini ve ne istediklerini bilmek istiyorum.

Neyse.
Peki, şifreleri tek yönlü bir karma kullanmak yerine simetrik olarak şifrelersek, burada temel risklerimiz nelerdir?

  • Kullanıcıların kimliğine bürünüyor musunuz? Hayır, bu riski zaten kabul ettim, ilginç değil.
  • Kötü yönetici? Eh, birisi başka bir kullanıcı, INTERNAL veya hiç kimliğine bürünebilir belki ... Ama yine, umurumda daha dont ... ve yine kötü niyetli bir yönetici şifrenizi alacağım olduğunu ne olursa olsun - senin yöneticisinin gitti kötü eğer onun oyun üzerinde zaten.
  • Ortaya konan bir başka konu, kimliğin aslında birkaç sistem arasında paylaşılmasıdır. Ah! Bu daha ilginç bir risktir, daha yakından bakmayı gerektirir. Paylaşılan
    gerçek kimlik değil, kanıt veya kimlik doğrulama bilgisi olduğunu söyleyerek başlayayım . Paylaşılan şifre etkili bir başka sisteme bana girmesine izin verir çünkü o hariç ... sadece semantiğini yüzden Tamam, (diyelim ki, banka hesabı veya gmail), bu aynı kimlik etkili olduğunu o değil . Bu senaryoda kimlik her sistem tarafından ayrı ayrı yönetilir (yine de OAuth gibi üçüncü taraf kimlik sistemleri olabilir - yine de, bu sistemdeki kimlikten ayrı - daha sonra bu konuda).
    Bu nedenle, burada temel risk noktası, kullanıcının (aynı) şifresini birkaç farklı sisteme isteyerek girmesi ve şimdi, ben (yönetici) veya sitemdeki herhangi bir bilgisayar korsanının Erma Teyze'nin şifrelerine erişebilmesidir. nükleer füze sahası.

Hmmm.

Burada sana bir şey geliyor mu?

Olması gerekiyor.

Nükleer füzeler sistemini korumanın benim sorumluluğum olmadığı gerçeğiyle başlayalım , sadece bir frakkin ailesi gezi sitesi inşa ediyorum (ailem için). Peki kimin sorumluluğu? Hmm ... Nükleer füze sistemine ne dersin? Duh.
İkincisi, birisinin şifresini çalmak isteseydim (güvenli siteler arasında aynı şifreyi tekrar tekrar kullandığı bilinen biri) Veya simetrik şifrelemenizle mi mücadele ediyorsunuz? Goshdarnitall, ben sadece kendi basit web sitemi koymak , kullanıcıların istedikleri hakkında ÇOK ÖNEMLİ HABER almak için kayıt olabilir ... Puffo Presto, ben onların şifreleri "çaldı".

Evet, kullanıcı eğitimi her zaman bizi hienie'de ısırmaya geri döner, değil mi?
Ve bu konuda yapabileceğiniz hiçbir şey yok ... Sitenize şifrelerini yazmak ve TSA'nın düşünebileceği her şeyi yapsanız bile, tutacakları bir şifre DEĞİL BİR BEZ DEĞİL , karışık bir şekilde şifrelerini içine girdikleri her siteye yapıştırıyorlar. BİLE uğraşmaya çalışmayın.

Başka bir deyişle, şifrelerine sahip değilsiniz , bu yüzden sizin gibi davranmayı deneyin.

Sevgili Güvenlik Uzmanlarım, yaşlı bir bayan Wendy'nin "NEREDE risk?"

Yukarıda dile getirilen bazı sorunlara cevaben birkaç nokta daha:

  • CWE bir yasa, yönetmelik veya hatta bir standart değildir. Yaygın zayıflıkların bir toplamıdır , yani "En İyi Uygulamalar" ın tersidir.
  • Paylaşılan kimlik meselesi gerçek bir sorundur, ancak buradaki muhabirler tarafından yanlış anlaşılmıştır (veya yanlış temsil edilmiştir). Bu, düşük değerli sistemlerde şifreleri kırmakla değil, kendi içinde ve kendisinin (!) Kimliğini paylaşma meselesidir. Düşük değerli ve yüksek değerli bir sistem arasında bir parola paylaşıyorsanız, sorun zaten buradadır!
  • Tarafından, önceki çalışma noktası aslında işaret olur KARŞI kullanarak OAuth ve bu düşük değer sistemleri ve yüksek değerli bankacılık sistemleri hem gibi.
  • Bunun sadece bir örnek olduğunu biliyorum, ama (ne yazık ki) FBI sistemleri gerçekten en güvenli değil. Kedinizin blogunun sunucuları gibi değil, ancak daha güvenli bankaların bazılarını geçmiyorlar.
  • Şifreleme anahtarlarının bölünmüş bilgisi veya ikili kontrolü, sadece orduda OLMAYACAKTIR, aslında PCI-DSS artık temelde tüm satıcılardan bunu gerektirmektedir , bu yüzden artık o kadar uzak değil (eğer değer haklı çıkarsa).
  • Bu gibi sorulardan, geliştirici mesleğini bu kadar kötü gösteren şeylerden şikayet eden herkese: Güvenlik mesleğini daha da kötüleştiren, bunun gibi cevaplar. Yine, iş odaklı risk analizi gerekli olan şeydir, aksi takdirde kendinizi işe yaramaz hale getirirsiniz. Yanlış olmanın yanı sıra.
  • Sanırım bu yüzden farklı düşünmek için eğitim almadan düzenli bir geliştirici alıp ona daha fazla güvenlik sorumluluğu bırakmak iyi bir fikir değil ve doğru ödünleşimleri aramak. Hiçbir suç, buradakilere, ben bunun için - ama daha fazla eğitim düzenli.

Whew. Ne kadar uzun bir yazı ...
Ama asıl sorunuza cevap vermek için @Shane:

  • Müşteriye bir şeyler yapmanın uygun yolunu açıklayın.
  • Hala ısrar ederse, biraz daha açıklayın, ısrar edin, tartışın. Gerekirse bir öfke nöbeti atın.
  • İŞ RİSKİ'ni ona açıklayın. Ayrıntılar iyi, rakamlar daha iyi, canlı bir demo genellikle en iyisidir.
  • EĞER STILL, ısrar ediyor VE geçerli ticari nedenler sunuyorsa - bir karar araması yapma zamanı:
    Bu site değeri düşük mü? Gerçekten geçerli bir iş vakası mı? Senin için yeterince iyi mi? Geçerli ticari nedenlerden daha ağır basabileceğiniz başka riskler yok mu? (Ve tabii ki, istemci kötü amaçlı bir site DEĞİL, ama şu).
    Eğer öyleyse, hemen devam edin. Gerekli süreci yerine getirmek için çabaya, sürtünmeye ve kullanım kaybına (bu varsayımsal durumda) değmez. Başka herhangi bir karar (yine, bu durumda) kötü bir ödünleşmedir.

Yani, alt satır ve gerçek bir cevap - basit bir simetrik algoritma ile şifreleyin, şifreleme anahtarını güçlü ACL'ler ve tercihen DPAPI veya benzeri ile koruyun, belgeleyin ve istemcinin (bu kararı verecek kadar kıdemli biri) oturum açmasını sağlayın o.


5
Düşük değerli sitenizle "hayır" pahalı öğeleri ve Facebook / GMail / bankanız arasında paylaşılan şifreler , düşük değerli sitelerde bile pahalı bir varlıktır.
jammycakes

3
Buradaki sorun, yukarıda belirtilen kullanıcı gruplarının birçok farklı güvenlik seviyesinden (bankacılıktan reçete bloglarına kadar) tüm uygulamalar için aynı şifreyi kullanma eğiliminde olduğunu düşünüyorum. Yani soru, kullanıcıları kendilerinden bile korumak geliştiricinin sorumluluğundaysa. Kesinlikle söyleyebilirim, evet!
ercan

7
Üzgünüm, ama kimlik kendisi olduğunu bir değeri yüksek varlık, nokta. İstisna yok, mazeret yok. Sitenizin ne kadar küçük ve önemsiz olduğunu düşünüyorsunuz. Ve paylaşılan bir şifre , bilgisayar korsanının kullanıcılarınızın Facebook hesaplarına, Gmail hesaplarına, banka hesaplarına vb. Girmesine izin veriyorsa kimliktir. Anlambilimle ilgili hiçbir şey yoktur, ancak sonuçlarla ilgili her şeydir. Bunun gibi bir hacker saldırısından etkilenen herkese sorun: theregister.co.uk/2009/08/24/4chan_pwns_christians
jammycakes

2
@Jacob, Erma'nın diğer sistemlerle ilgili hesaplarından ödün verildiği için müşteriniz hangi dünyada dava edilecekti? Müşterinizin (ihmal ettiğim gibi verilen bir DEĞİLDİR) kısmında büyük bir ihmal bile olsa ve diğer sistemin sizin yüzünden ihlal edildiğini kanıtlamanın YOK OLDUĞUNU OLMADAN bile, diğer sistemdeki bir sistemden gelen herhangi bir zararın talep edilmesi. Önyargıyla mahkemeden atılacak ve aşağılayıcı davacı bulacaktır. Ancak, Erma çok sayıda Hizmet
Şartını

5
@Jacob, bu çok yanlış. Parola aynı olduğu için (bu, ToS'nizi ve güvenlik politikalarını açıkça ihlal eder), ikisini doğrulamak için yasal bir dayanak yoktur. Bu, bunu kanıtlamanın neredeyse imkansız olduğu gerçeğine BESIDES. Bir kenara, özel düzenlemeler uygun olmadığı sürece, rasgele bir şirketin gevşek güvenlik uygulamalarına sahip olmasını gerektirmeyen HUKUK YOK olduğunu da belirteceğim. Bunun da ötesinde, şifreler şifrelenir (!), Bu nedenle gevşeklik unutulmuş bir sonuçtan çok uzaktır.
AviD

21

Yarı evlere ne dersin?

Parolaları güçlü bir şifreleme ile depolayın ve sıfırlamaları etkinleştirmeyin.

Parolaları sıfırlamak yerine, tek seferlik bir parola göndermeye izin verin (ilk oturum açma gerçekleştiğinde değiştirilmesi gerekir). Kullanıcının daha sonra istediği şifreye geçmesine izin verin (eğer seçerse bir önceki şifre).

Bunu, şifreleri sıfırlamak için güvenli bir mekanizma olarak "satabilirsiniz".


Biliyorsunuz, bunu çeşitli durumlarda kullandım (genellikle bu benim orta zemim), ama bana son kullanıcının etkileşime girmeyeceğini ve desteğin onlara ' şifresini 'bu işteki koşullardan dolayı' modeline ekleyin. Yine de katılıyorum, bu mümkün olduğunda tercih edilir.
Shane,

Müşterilerinize DB'nin kötü ellere düşme riskini ve çalınan şifrelerin tanıtımını yapma riskini anlatabilirsiniz ... Etrafta çok sayıda örnek var.
Oded

6
Onlardan "tasarım" dan çıkış yapmalarını isteyin, ekledikleri bir fıkra ile, onları uyardığınız şey gerçekten olursa sizi dava edemezler ... En azından o zaman kendinizi korursunuz.
Oded

4
-1 şifreler asla "şifrelenmemeli" CWE- 257'nin ihlalidir cwe.mitre.org/data/definitions/257.html
rook

34
@Michael Brooks: Aynı yorumu tekrar tekrar indirmeye ve kopyalamaya yapıştırmaya gerek yok; hepimiz bunun kötü bir uygulama olduğunun farkındayız. Shane, konuyla ilgili kaldıraçtan yoksun olduğunu ve bir sonraki en iyi şeylerin önerildiğini belirtti.
Johannes Gorset

13

Bir kullanıcının orijinal şifresini almasına izin vermenin tek yolu, şifreyi kullanıcının kendi ortak anahtarıyla şifrelemektir. Ancak o kullanıcı şifresinin şifresini çözebilir.

Yani adımlar şöyle olur:

  1. Kullanıcı henüz bir şifre belirlemeden sitenize kaydolur (elbette SSL üzerinden). Bunları otomatik olarak oturum açın veya geçici bir şifre girin.
  2. İleride şifre almak için genel PGP anahtarlarını saklamayı teklif edersiniz.
  3. Genel PGP anahtarlarını yüklerler.
  4. Onlardan yeni bir şifre belirlemelerini istersiniz.
  5. Parolalarını veriyorlar.
  6. Parolayı, mevcut en iyi parola karma algoritmasını kullanarak (örneğin, bcrypt) karma yaparsınız. Bir sonraki oturum açmayı doğrularken bunu kullanın.
  7. Parolayı genel anahtarla şifrelersiniz ve ayrı olarak saklarsınız.

Kullanıcı daha sonra parolasını sorarsa, şifrelenmiş (karma olmayan) parolayla yanıt verirsiniz. Kullanıcı gelecekte parolasını almak istemezse (yalnızca hizmet tarafından oluşturulan bir parolayı sıfırlayabilir), 3. ve 7. adımlar atlanabilir.


5
Çoğu kullanıcının bir PGP anahtarı yoktur (hala bir tane yok; sektörde 20 yıl sonra, hiç ihtiyaç duymadım) ve bir tane elde etmek sürtünmesiz bir süreç değil. Ayrıca, özel bir anahtar gerçekten de gerçek bir şifre için sadece bir proxy. Başka bir deyişle, bir şifre için şifre; tüm yol boyunca kaplumbağalar.
Robert Harvey

1
@RobertHarvey Amaç, bir kullanıcının site çalışanlarının veya herhangi bir bilgisayar korsanının erişimine izin vermeden şifrelerini almasına izin vermektir. Alma işleminin kullanıcının kendi bilgisayarında gerçekleşmesini zorunlu kılarak, bunu uygularsınız. PGP'ye de bunu başarabilecek alternatifler olabilir. Kaplumbağalar aşağıya doğru olabilir (belki de yol boyunca bazı filler), ama başka bir yol göremiyorum. Genel nüfus (bireysel olarak hedeflenmesi muhtemel değildir) için parolalarınızı biraz kağıt üzerinde bulundurmak ve bunları hizmetten alamamak, şu anda olduğundan daha güvenli olacaktır
Nicholas Shanks

Bunu seviyorum çünkü herkesi bir PGP ortak anahtarına sahip olmaya zorluyor, ki bu garip bir şekilde çok etik bir şey.
Lodewijk

sadece bir tane oluşturabilir ve kullanıcıya verebilirsiniz.
My1

@RobertHarvey Bunun "sürtünmesiz bir süreç" olmadığı konusunda haklı olabilirsiniz, ancak normal kullanıcılar bunu göz ardı edebilecek güç kullanıcıları için ekstra bir hizmet olabilir. PK'nın "bir şifre için şifre" olduğu iddiasına gelince, teorik olarak pek çok şifre için olabileceğini unutmayın ; farklı hizmetler için farklı şifreler kullanabilir ve tümünü aynı anahtarı kullanarak şifreleyebilirsiniz. O zaman PK tek bir paroladan daha değerli olacaktır. Belki de soyut bir şekilde bir şifre yöneticisi (?) İle karşılaştırılabilir. Bunun ne gibi sonuçları olabileceği bana hemen açık değil ...
Kjartan

12

Bence kendinize sormanız gereken asıl soru: 'İnsanları ikna etmede nasıl daha iyi olabilirim?'


4
@sneg - Ben çok inandırıcı bir adamım, ama bazen bir patron ve bazen bir müşteri, bu yüzden onları her zaman bir şekilde ikna etmem gereken kaldıraçım yok. Aynada biraz daha pratik yapacağım ..;)
Shane

İkna olmak için, yetkinliğiniz ve iletişim yeteneğiniz dışında herhangi bir kaldıraca ihtiyacınız yoktur. Bir şey yapmanın daha iyi bir yolunu biliyorsanız ama insanlar dinlemiyorsa ... Bir düşünün.
z-boss

7
@ z-boss - Görünüşe göre birlikte çalışmaktan zevk aldığım bazı sert kafalarla / için çalışmadınız. Bazen dilinizin altınla kaplanması önemli değildir ve Google Chrome'u bir gün içinde yeniden programlayabilirsiniz (bu muhtemelen faydalı olabilir) yine de bütçelemezler.
Shane

11

Bende aynı sorun var. Aynı şekilde her zaman birisinin sistemimi hacklediğini düşünüyorum, bu "eğer" değil "ne zaman" meselesidir.

Yani, kredi kartı veya şifre gibi kurtarılabilir gizli bilgileri saklaması gereken bir web sitesi yapmam gerektiğinde, yaptığım şey:

  • ile şifreleme: openssl_encrypt (string $ data, string $ yöntemi, string $ password)
  • veri argümanı :
    • hassas bilgiler (ör. kullanıcı şifresi)
    • Gerekirse serileştirin, örn. bilgi çoklu hassas bilgiler gibi bir veri dizisiyse
  • password arg : yalnızca kullanıcının bildiği bilgileri kullanın:
    • kullanıcı plakası
    • sosyal Güvenlik numarası
    • kullanıcı telefon numarası
    • kullanıcı ana adı
    • kayıt zamanında e-posta ve / veya sms tarafından gönderilen rastgele bir dize
  • yöntem arg :
    • "aes-256-cbc" gibi bir şifre yöntemi seçin
  • ASLA "şifre" bağımsız değişkeninde kullanılan bilgileri veritabanında (veya sistemdeki herhangi bir yerde) saklamayın

Bu verileri yeniden elde etmek gerektiğinde "openssl_decrypt ()" işlevini kullanın ve kullanıcıdan yanıtı isteyin. Örneğin: "Şifrenizi almak için şu soruya cevap verin: Cep telefonu numaranız nedir?"

PS 1 : asla şifre olarak veritabanında saklanan bir veri kullanmayın. Kullanıcı cep telefonu numarasını kaydetmeniz gerekiyorsa, bu bilgileri asla verileri kodlamak için kullanmayın. Her zaman yalnızca kullanıcının bildiği veya akraba olmayan biri için zor bildiği bilgileri kullanın.

PS 2 : kredi kartı bilgileri için "tek tıklamayla satın alma" gibi, yaptığım giriş şifresini kullanmak. Bu parola veritabanında (sha1, md5, vb.) Karmadır, ancak oturum açma sırasında düz metin parolayı oturumda veya kalıcı olmayan (yani bellekte) güvenli bir çerezde saklarım. Bu sade şifre asla veritabanında kalmaz, aslında her zaman bellekte kalır, bölümün sonunda yok edilir. Kullanıcı "tek tıklamayla satın alma" düğmesine tıkladığında sistem bu şifreyi kullanır. Kullanıcı facebook, twitter gibi bir hizmetle oturum açtıysa, o zaman tekrar satın alma sırasında şifreyi sorarım (tamam, tamamen "tıklama" değildir) veya daha sonra kullanıcının oturum açmak için kullandığı hizmetin bazı verilerini kullanırım (facebook kimliği gibi).


9

Kimlik bilgilerini korumak ikili bir işlem değildir: güvenli / güvenli değil. Güvenlik tamamen risk değerlendirmesi ile ilgilidir ve sürekli olarak ölçülür. Güvenlik fanatikleri bu şekilde düşünmekten nefret ediyor, ama çirkin gerçek, hiçbir şeyin mükemmel bir şekilde güvenli olmadığıdır. Sıkı parola gereksinimleri, DNA örnekleri ve retina taramaları içeren karma parolalar daha güvenlidir ancak geliştirme ve kullanıcı deneyimi pahasınadır. Düz metin parolalar çok daha az güvenlidir ancak uygulanması daha ucuzdur (ancak bundan kaçınılmalıdır). Günün sonunda, bir ihlalin maliyet / fayda analizine gelir. Güvenliği, korunan verilerin değerine ve zaman değerine göre uygularsınız.

Birinin şifresinin doğaya çıkmasının maliyeti nedir? Verilen sistemdeki kimliğe bürünme maliyeti nedir? FBI bilgisayarları için maliyet muazzam olabilir. Bob'un bir kerelik beş sayfalık web sitesi için maliyet göz ardı edilebilir. Bir profesyonel, müşterilerine seçenekler sunar ve güvenlik söz konusu olduğunda, herhangi bir uygulamanın avantajlarını ve risklerini ortaya koyar. Bu, müşteri endüstri standartlarına uymadığı için onları riske atabilecek bir şey talep ederse iki katına çıkar. İstemci özellikle iki yönlü şifreleme isterse, itirazlarınızı belgelemenizi sağlarım, ancak bu sizin en iyi şekilde uygulamanızı engellememelidir. Günün sonunda müşterinin parasıdır. Evet,

Şifreleri iki yönlü şifreleme ile saklıyorsanız, güvenlik anahtar yönetimine gelir. Windows, sertifikalara özel anahtarların yönetici hesaplarına ve parolalara erişimini kısıtlayan mekanizmalar sağlar. Başka platformlarda barındırma yapıyorsanız, bunlarda hangi seçeneklerin bulunduğunu görmeniz gerekir. Diğerlerinin önerdiği gibi, asimetrik şifreleme kullanabilirsiniz.

Şifrelerin tek yönlü karmalar kullanılarak saklanması gerektiğini özel olarak belirten hiçbir yasa (Birleşik Krallık'taki Veri Koruma Yasası) yoktur. Bu yasaların herhangi birindeki tek gereklilik, güvenlik için makul adımlar atılmasıdır. Veritabanına erişim kısıtlanmışsa, düz metin parolalar bile bu tür bir kısıtlama kapsamında yasal olarak nitelendirilebilir.

Ancak bu bir hususu daha ortaya çıkarır: yasal öncelik. Yasal öncelik, sisteminizin kurulduğu endüstri göz önüne alındığında, tek yönlü karmaları kullanmanız gerektiğini gösteriyorsa, bu tamamen farklıdır. Müşterinizi ikna etmek için kullandığınız mühimmat budur. Makul bir risk değerlendirmesi sağlamak, itirazlarınızı belgelemek ve sistemi müşterinin gereksinimlerini karşılayabileceğiniz en güvenli şekilde uygulamak için en iyi öneri.


10
Cevabınız, bu konunun merkezi olan ve kurtarılabilir şifrelerin ciddi bir zayıflık olarak değerlendirilmesinin nedeni, şifrelerin birden fazla site / hizmette yeniden kullanıldığını tamamen yok sayar. Bir güvenlik uzmanı, güvenlik kararlarını teknik olmayan istemciye devretmez; bir uzman, sorumluluklarının ödeme yapan müşterinin ötesine geçtiğini bilir ve yüksek riskli ve sıfır ödüllü seçenekler sunmaz . Retorik üzerine ağır ve gerçeklere son derece hafif - -1 ve hatta soruyu gerçekten cevaplamadığı için.
Aaronaught

4
Yine, risk değerlendirmesini tamamen gözden kaçırıyorsunuz. Argümanınızı kullanmak için sadece 1 yönlü karma işlemlerle duramazsınız. Ayrıca karmaşıklık gereksinimleri, parola uzunlukları, parola yeniden kullanım kısıtlamaları vb. Eklemeniz gerekir. Kullanıcıların aptal parolalar kullanacağını veya parolaları yeniden kullanacağını savunmak, sistem ilgisizse açıkçası yeterli bir iş gerekçesi değildir ve açıkçası soruyu cevapladım. Kısa cevap: std uygulaması kullanmak için zorlayın, reddedilirseniz ve devam ederseniz itirazlarınızı belgeleyin.
Thomas

7
Ve yine, düşük değerli bir sistem için bunların hiçbirinin önemli olmadığı kanıtı tekrarlıyorsunuz! Bir kullanıcının şifresinin değerinin, bir kullanıcının sisteminizdeki hesabının değeri ile ilgisi yoktur. Bu bir sırdır ve her zaman tutmanız gereken bir sırdır . Keşke burada hala sorunları anlamadığınızı gösteren yorum için -1 verebilsem .
Aaronaught

5
Risk değerlendirmesi temel konudur. Parolanın yeniden kullanılması, çok daha geniş bir sorun kümesinde yalnızca bir olası sorundur. Neden fob gerektirmez? Neden kişinin giriş yapmak için ofisinize gitmesini istemiyorsunuz? Risklerin makul bir değerlendirmesi olmadan, bu soruları cevaplamanın bir yolu yoktur. Dünyanızda her şey bir risktir, bu nedenle her sistem FBI düzeyinde giriş güvenliği gerektirir. Gerçek dünya böyle değildir.
Thomas

7
Burada açık olan tek şey, tüm argümanınızın Kaygan Eğim yanlışlığından başka bir şey olmadığı ve okuyucuları bu gerçeği örtbas etmek için "risk değerlendirmesi" gibi terimlerle aktarmaya çalıştığınızdır. "FBI" hangi sistemi kullanırsa kullansın bcrypt karmasından ve minimum şifre uzunluğundan çok daha güvenli olacağından emin olabilirsiniz. Endüstri standardı kimlik doğrulama sistemlerine gereksinim duymak beni "güvenlik fanatiği" yaparsa, sanırım ben fanatikim; şahsen, bu feda etmeye razı orada insanlar olduğunu bilmek beni üzüyor MY para için güvenlik. Bu etik değildir .
Aaronaught

8

Kullanıcının güvenlik sorusunun yanıtını şifreleme anahtarının bir parçası haline getirin ve güvenlik sorusu yanıtını düz metin olarak saklamayın (bunun yerine hash)


Kullanıcı da soruyu farklı cevaplayabilir. Bazı sorular, daha sonra yeniden ifade edilmesi kolay daha uzun yanıtlar alır.
Monoman

5
Güvenlik soruları kötü bir fikirdir. Bilgi ihlal edildiğinde annenizin kızlık soyadını değiştirmesini nasıl sağlıyorsunuz? Ayrıca Peter Gutmann'ın Mühendislik Güvenliği bölümüne bakınız .
jww

7

Bir yaşam için çok faktörlü kimlik doğrulama sistemleri uyguluyorum, bu yüzden benim için şifreyi sıfırlayabileceğinizi veya yeniden yapılandırabileceğinizi düşünmek doğaldır, ancak kullanıcıyı sadece sıfırlama / rekreasyon iş akışı için kimlik doğrulaması yapmak için geçici olarak bir daha az faktör kullanır. Özellikle ek faktörlerden bazıları olarak OTP'lerin (bir defalık şifreler) kullanılması, zaman aralığı önerilen iş akışı için kısaysa risklerin çoğunu azaltır. Akıllı telefonlar için (çoğu kullanıcının zaten bütün gün kendileriyle taşıdığı) yazılım OTP jeneratörlerini büyük bir başarıyla uyguladık. Ticari bir fişten şikayet etmeden önce, diyorum ki, bir kullanıcının kimliğini doğrulamak için kullanılan tek faktör olmadığında şifreleri kolayca geri alınabilir veya sıfırlanabilir tutma risklerini azaltabiliriz.


Bir faktörü çok faktörlü bir kimlik doğrulama sisteminden geçici olarak kaldırmak, bir şifreyi sıfırlamak için pek çok sitede görülen çirkin "gizli soru" sistemlerinden çok daha güvenli bir yöntemdir. Ancak şifreleri kurtarılabilir bir formatta saklamak için, ilkini şifrelemek veya gizlemek için ikinci faktörü bir şekilde kullanmadığınız sürece bunun nasıl yardımcı olduğundan emin değilim ve bunun SecurID gibi bir şeyle nasıl mümkün olduğundan emin değilim. Açıklayabilir misin?
Aaronaught

@Aaronaught Söylediklerim, kurtarılabilir parolalara sahip olmanız gerekiyorsa, tek kimlik doğrulama faktörü değilse, doğuştan gelen risk daha düşüktür ve son kullanıcı için, eğer iş akışları zaten güvenli olmayan kanallardan gönderilen (gizli sertifikalarla S-MIME kullanmıyorsanız, veya PGP, her ikisi de özellikle doğru ilişkilendirme ve sona erme / ikame yönetimi için masraflar
doğurur

1
Bunların hepsinin doğru olduğunu düşünüyorum, ancak halkın uzlaşma riski en azdan başlıyor; kurtarılabilir parolalarla ilgili daha ciddi sorun, iç güvenliktir ve potansiyel olarak hoşnutsuz bir çalışanın binlerce müşterinin e-posta parolalarıyla veya kimlik avı yapanlara ve spam göndericilere satmak için çarpık bir CEO ile çıkmasına izin vermesidir. İki faktörlü kimlik doğrulama, kimlik hırsızlığı ve parola tahminiyle mücadelede harikadır, ancak gerçek parola veritabanını güvende tuttuğu sürece gerçekten fazla bir şey getirmez.
Aaronaught

5

Maalesef, şifrelerini çözmenin bir yolu olduğu sürece, güvenli olmasının bir yolu yoktur. Acı ile savaşın ve kaybederseniz CYA.


5

Az önce bu ilginç ve ateşli tartışmaya rastladım. Beni en çok şaşırtan şey, aşağıdaki temel soruya ne kadar az dikkat edildiğiydi:

  • S1. Kullanıcının düz metin saklanan parolaya erişim konusunda ısrar etmesinin gerçek nedenleri nelerdir? Neden bu kadar değerli?

Kullanıcıların yaşlı veya genç olduğu bilgileri bu soruya gerçekten cevap vermiyor. Ancak müşterinin endişesini tam olarak anlamadan bir işletme kararı nasıl alınabilir?

Şimdi neden önemli? Çünkü müşterilerin talebinin gerçek nedeni, kullanımı zor olan bir sistemse, belki de tam nedeni ele almak gerçek sorunu çözebilir mi?

Bu bilgiye sahip olmadığım ve bu müşterilerle konuşamadığım için sadece tahmin edebiliyorum: Bu kullanılabilirlikle ilgilidir, yukarıya bakınız.

Gördüğüm başka bir soru sordu:

  • S2. Kullanıcı parolayı ilk etapta hatırlamıyorsa, eski parola neden önemlidir?

Ve işte olası cevap. "Miaumiau" adlı bir kediniz varsa ve adını şifre olarak kullandıysanız, ancak bunu unuttuysanız, bunun ne olduğunu hatırlatmayı mı yoksa "# zy * RW (ew" gibi bir şeyi göndermeyi mi tercih edersiniz?

Bir başka olası neden, kullanıcının yeni bir şifre bulmanın zor bir iş olduğunu düşünmesidir! Böylece eski şifrenin geri gönderilmesi onu tekrar bu acı verici işten kurtarma yanılsaması verir.

Sadece sebebini anlamaya çalışıyorum. Ancak nedeni ne olursa olsun, ele alınması gereken nedenin nedeni bu değildir.

Kullanıcı olarak işleri basitleştirmek istiyorum! Çok çalışmak istemiyorum!

Gazete okumak için bir haber sitesine giriş yaparsam, 1111'i şifre olarak yazmak ve üzerinden geçmek istiyorum !!!

Güvensiz olduğunu biliyorum, ancak birisinin "hesabıma" erişmesi neye önem veriyor? Evet, haberi de okuyabilir!

Site "özel" bilgilerimi saklıyor mu? Bugün okuduğum haberler? O zaman bu sitenin sorunu, benim değil! Site, kimliği doğrulanmış kullanıcıya özel bilgiler gösteriyor mu? O zaman ilk etapta gösterme!

Bu sadece kullanıcının soruna karşı tutumunu göstermek içindir.

Özetlemek gerekirse, düz metin şifrelerinin (güvenli olduğunu bildiğimiz) nasıl "güvenli" olarak saklamanın bir problem olduğunu düşünmüyorum, bunun yerine müşterilerin gerçek endişelerini nasıl ele alacağımı düşünmüyorum.


4

Kayıp / unutulan şifreleri işleme:

Hiç kimse şifreleri kurtaramaz.

Kullanıcılar şifrelerini unuttuysa, en azından kullanıcı adlarını veya e-posta adreslerini bilmeleri gerekir. İstek üzerine Kullanıcılar tablosunda bir GUID oluşturun ve kullanıcının e-posta adresine parametre olarak guid'i içeren bir bağlantı içeren bir e-posta gönderin.

Bağlantının arkasındaki sayfa, guid parametresinin gerçekten var olduğunu doğrular (muhtemelen bazı zaman aşımı mantığında) ve kullanıcıdan yeni bir şifre ister.

Yardım hattı kullanıcılarına sahip olmanız gerekiyorsa, hibeler modelinize bazı roller ekleyin ve yardım hattı rolünün belirlenen kullanıcı olarak geçici olarak oturum açmasına izin verin. Tüm yardım hattı girişlerini günlüğe kaydet. Örneğin, Bugzilla yöneticilere böyle bir kimliğe bürünme özelliği sunar.


GUID kötü bir fikir, neredeyse rastgele ve bruteforce kolay değil. bununla ilgili başka sorunlar var, bkz. stackoverflow.com/questions/664673/…
AviD

3

Şifrelenip kaybolmadan önce, düz metin şifresini kayıt olduktan sonra e-posta ile göndermeye ne dersiniz? Birçok web sitesinin bunu yaptığını gördüm ve bu şifreyi kullanıcının e-postasından almak, sunucunuzda / comp'inizde bırakmaktan daha güvenlidir.


E-postanın diğer sistemlerden daha güvenli olduğunu varsaymam. Bu yasal endişelerimi elimden alsa da hala birinin e-postalarını kaybetmesi / silmesi sorunu var ve şimdi kareye geri dönüyorum.
Shane,

Hem parola sıfırlama sağlayın hem de düz metin parolayı e-postayla gönderin. Şifrenin bir kopyasını kendiniz saklamaksızın, bu konuda yapabileceğiniz en çok şey olduğunu düşünüyorum.
casraf

Bu kesinlikle korkunç bir fikir. Her ikisi de etkisizdir (birçok kullanıcı e-postaları okuduktan sonra gerçekten siler) ve korumaya çalıştığınızdan daha kötüdür (çünkü e-posta varsayılan olarak şifrelenmemiş ve güvenilir olmayan ağlardan geçer). Kullanıcıya şifreyi kendileri not etmelerini önermek daha iyidir, en azından kendilerine bir e-posta göndererek, bilgi tüm İnternet'te değil, e-posta sunucusundan asla daha uzağa gitmez!
Ben Voigt

3

Kurtarılabilir şifreleri saklama gereksinimini reddedemezseniz, buna karşı argümanınız olarak bakabilirsiniz.

Şifreleri düzgün bir şekilde hash edebilir ve kullanıcılar için bir sıfırlama mekanizması oluşturabilir veya kişisel olarak tanımlanabilir tüm bilgileri sistemden kaldırabiliriz. Kullanıcı tercihlerini ayarlamak için bir e-posta adresi kullanabilirsiniz, ancak hepsi bu kadar. Gelecekteki ziyaretlerde tercihleri ​​otomatik olarak çekmek ve verileri makul bir süreden sonra atmak için bir çerez kullanın.

Parola ilkesinde genellikle göz ardı edilen seçeneklerden biri parolanın gerçekten gerekli olup olmadığıdır. Parola ilkenizin yaptığı tek şey müşteri hizmetleri çağrılarına neden oluyorsa, belki ondan kurtulabilirsiniz.


Parola ile ilişkilendirilmiş bir e-posta adresiniz olduğu ve bu parolanın kurtarılabildiği sürece, parolanın yeniden kullanılması nedeniyle bu e-posta adresi için parolayı sızdırmış olabilirsiniz. Aslında buradaki temel endişe budur. Gerçekten önemli olan, kişisel olarak tanımlanabilir başka bir bilgi yoktur.
Aaronaught

1
Demek istediğimi tamamen kaçırdın. Gerçekten bir parolaya ihtiyacınız yoksa, bir parola toplamayın. Geliştiriciler genellikle "tam da bunu yaptığımız gibi" düşünme tarzına sıkışırlar. Bazen önceden tasarlanmış kavramları atmaya yardımcı olur.
anopres

2

Kullanıcıların unuttukları parolaları gerçekten kurtarmaları (örneğin söylenmeleri) gerekiyor mu, yoksa sadece sisteme girebilmeleri mi gerekiyor? Eğer gerçekten istedikleri oturum açmak için bir parola ise, neden eski parolayı (her ne olursa olsun) destek personelinin parolasını kaybeden kişiye verebileceği yeni bir parolaya değiştiren bir rutininiz olmasın?

Tam olarak bunu yapan sistemlerle çalıştım. Destek görevlisinin geçerli şifrenin ne olduğunu bilmesinin bir yolu yoktur, ancak şifreyi yeni bir değere sıfırlayabilir. Elbette bu tür tüm sıfırlamalar bir yere kaydedilmeli ve iyi uygulama kullanıcıya parolanın sıfırlandığını bildiren bir e-posta oluşturmak olacaktır.

Başka bir olasılık, bir hesaba erişime izin veren iki eşzamanlı şifrenin bulunmasıdır. Biri kullanıcının yönettiği "normal" şifre ve diğeri ise sadece destek personeli tarafından bilinen ve tüm kullanıcılar için aynı olan bir iskelet / ana anahtar gibidir. Bu şekilde, kullanıcının bir sorunu olduğunda destek personeli ana anahtarla hesaba giriş yapabilir ve kullanıcının şifresini herhangi bir şekilde değiştirmesine yardımcı olabilir. Söylemeye gerek yok, ana anahtarla yapılan tüm girişler sistem tarafından da günlüğe kaydedilmelidir. Ek bir önlem olarak, ana anahtar her kullanıldığında destek görevlilerinin kimlik bilgilerini de doğrulayabilirsiniz.

-EDIT- Ana anahtarın olmamasına ilişkin yorumlara yanıt olarak: Kullanıcı dışında herhangi birinin kullanıcının hesabına erişmesine izin vermenin kötü olduğuna inandığım için kötü olduğunu kabul ediyorum. Soruya bakarsanız, tüm mesele, müşterinin son derece tehlikeye atılan bir güvenlik ortamını zorunlu kılmasıdır.

Ana anahtarın ilk göründüğü kadar kötü olması gerekmez. Eskiden anabilgisayar bilgisayar operatörünün belirli durumlarda "özel erişime" ihtiyaç duyduklarını algıladıkları bir savunma tesisinde çalışıyordum. Özel şifreyi mühürlü bir zarfa koyup operatör masasına bantladılar. Şifreyi kullanmak için (operatörün bilmediği) zarfı açmak zorunda kaldı. Vardiyadaki her değişiklikte, vardiya amirinin işlerinden biri zarfın açılıp açılmadığını ve eğer öyleyse şifrenin derhal değiştirilip değiştirilmediğini (başka bir departman tarafından) ve yeni şifrenin yeni bir zarfa konduğunu ve işlemin tümünün başladığını görmekti. yeniden. Operatöre neden açtığı sorusu sorulacak ve olay kayıt için belgelenecektir.

Bu benim tasarlayacağım bir prosedür olmasa da işe yaradı ve mükemmel bir hesap verebilirlik sağladı. Her şey günlüğe kaydedildi ve gözden geçirildi, ayrıca tüm operatörlerin DOD gizli izinleri vardı ve hiçbir zaman istismar etmedik.

İnceleme ve gözetim nedeniyle, tüm operatörler zarfı açma ayrıcalığını kötüye kullandıklarında derhal işten çıkarılma ve olası cezai kovuşturmaya maruz kaldıklarını biliyorlardı.

Yani sanırım gerçek cevap, bir şeyi doğru yapmak istiyorsa, güvenebilecekleri insanları işe alırsa, arka plan kontrolleri yapar ve uygun yönetim denetimi ve hesap verebilirliği uygular.

Ama sonra yine bu zavallı adamın müşterisi iyi bir yönetime sahip olsaydı, ilk etapta böyle bir güvenlikten etkilenmiş çözüm istemezlerdi, şimdi onlar?


Ana anahtar çok riskli olurdu, destek personeli her hesaba erişebilir ve bu anahtarı bir kullanıcıya verdikten sonra ana anahtar ve her şeye erişebilirler.
Carson Myers

Ana anahtar korkunç bir fikirdir, çünkü eğer birisi onu bulursa (veya kazayla ifşa etmişse), onu kullanabilirler. Hesap başına şifre sıfırlama mekanizması çok tercih edilir.
Phil Miller

Merak ediyorum, Linux'un varsayılan olarak root düzeyinde erişime sahip bir süper kullanıcı hesabı olduğunu düşündüm. Bu, sistemdeki tüm dosyalara erişmek için bir "ana anahtar" değil mi?
JonnyBoats

@JonnyBoats Evet, öyle. Bu yüzden Mac OS X gibi modern Unix'ler kök hesabı devre dışı bırakır.
Nicholas Shanks

@NicholasShanks: Kök hesabı devre dışı bırakılsın mı veya kök hesaptaki etkileşimli giriş devre dışı bırakılsın mı? Hala sınırsız izinlerle çalışan birçok kod var.
Ben Voigt

2

Bu konuda anladığım kadarıyla, bir oturum açma / parola ile bir web sitesi oluşturuyorsanız, sunucunuzda düz metin parolayı bile görmemeniz gerektiğine inanıyorum. Parola istemciden ayrılmadan önce özetlenmeli ve muhtemelen tuzlanmalıdır.

Düz metin parolayı hiç görmüyorsanız, geri alma sorunu ortaya çıkmaz.

Ayrıca, MD5 gibi bazı algoritmaların artık güvenli olarak kabul edilmediğini (web'den) topluyorum. Bunu kendim yargılamak için bir yolum yok, ama dikkate alınması gereken bir şey.


1

bağımsız bir sunucuda bir DB açın ve bu özelliği gerektiren her web sunucusuna şifreli bir uzaktan bağlantı verin.
ilişkisel bir DB olmak zorunda değildir, FTP erişimi olan, tablolar ve satırlar yerine klasörler ve dosyalar kullanan bir dosya sistemi olabilir.
mümkünse web sunucularına salt yazma izinleri verin.

Parolanın geri alınamayan şifrelemesini, normal kişilerin yaptığı gibi sitenin DB'sinde saklayalım (diyelim "pass-a") :)
her yeni kullanıcıya (veya parola değişikliğine) uzak DB'de parolanın düz bir kopyasını saklayın. bu parola için birleşik anahtar olarak sunucunun kimliğini, kullanıcının kimliğini ve "parolayı" kullanın. geceleri daha iyi uyumak için şifre üzerinde çift yönlü bir şifreleme bile kullanabilirsiniz.

şimdi birisinin hem şifreyi hem de bağlamını alması için (site kimliği + kullanıcı kimliği + "pass-a") şunları yapması gerekir:

  1. ("pass-a", kullanıcı kimliği) çifti veya çiftleri almak için web sitesinin DB'sini hacklemek.
  2. bazı yapılandırma dosyalarından web sitesinin kimliğini alın
  3. bulmak ve uzak şifreler DB kesmek.

şifre alma hizmetinin erişilebilirliğini kontrol edebilir (yalnızca güvenli bir web hizmeti olarak açığa çıkarabilir, günde yalnızca belirli sayıda şifre alımına izin verebilir, manuel olarak yapabilir vb.) ve hatta bu "özel güvenlik düzenlemesi" için ekstra ücret ödeyebilirsiniz.
Parola alma DB sunucusu, birçok işleve hizmet etmediği ve daha iyi güvenli olabileceği için oldukça gizlidir (izinleri, işlemleri ve hizmetleri sıkıca uyarlayabilirsiniz).

Sonuçta, hacker için işi zorlaştırırsınız. herhangi bir sunucuda güvenlik ihlali olasılığı hala aynıdır, ancak anlamlı verilerin (bir hesap ve şifre eşleşmesi) birleştirilmesi zor olacaktır.


3
Uygulama sunucusu bu sunucuya erişebiliyorsa, uygulama sunucusuna erişimi olan herkes de olabilir (bilgisayar korsanı veya kötü niyetli bir kullanıcı olsun). Bu sıfır ek güvenlik sağlar.
molf

1
Buradaki ek güvenlik, uygulama sunucusunun DB'sinin parolaları tutmamasıdır (bu nedenle ikinci bir hack gereklidir - parolalar DB'sine) ve parola alma hizmetinin erişilebilirliğini denetlediğinizde DB parolaları düzensiz etkinliklere karşı daha iyi korunabilir. böylece toplu veri alımlarını algılayabilir, alım SSH anahtarını haftalık olarak değiştirebilir, hatta otomatik geçiş alımına izin veremez ve tümünü manuel olarak yapabilirsiniz. Bu çözüm aynı zamanda şifreler DB için diğer dahili şifreleme planlarına da (genel + özel anahtarlar, tuz vb.) Uygundur.
Amir Arad

1

Dikkate almamış olabileceğiniz başka bir seçenek de eylemlere e-posta yoluyla izin vermektir. Bu biraz hantal, ama ben kullanıcıların sistem belirli bölümlerini (salt okunur) görüntülemek için sistemlerinin "dışında" ihtiyacı olan bir istemci için uyguladı. Örneğin:

  1. Bir kullanıcı kaydedildiğinde, tam erişime sahiptir (normal bir web sitesi gibi). Kayıt bir e-posta içermelidir.
  2. Veri veya işlem gerekiyorsa ve kullanıcı şifresini hatırlamıyorsa , normal " gönder " düğmesinin hemen yanındaki özel bir " izin için bana e-posta gönder " düğmesini tıklayarak işlemi gerçekleştirebilir.
  3. İstek daha sonra eylemin gerçekleştirilmesini isteyip istemediklerini soran bir köprü ile e-postaya gönderilir. Bu, şifre sıfırlama e-posta bağlantısına benzer, ancak şifreyi sıfırlamak yerine bir defalık eylem gerçekleştirir .
  4. Kullanıcı daha sonra "Evet" i tıklatır ve verilerin gösterilmesi veya işlemin yapılması, verilerin gösterilmesi vb.

Yorumlarda belirttiğiniz gibi, e-posta ele geçirilirse bu işe yaramaz, ancak @joachim'in şifreyi sıfırlamak istememe hakkındaki yorumunu ele alır. Sonunda, şifre sıfırlamayı kullanmak zorunda kalacaklardı, ancak bunu daha uygun bir zamanda ya da gerektiğinde bir yöneticinin ya da arkadaşının yardımıyla yapabilirlerdi.

Bu çözüme bir bükülme, eylem talebini üçüncü taraf güvenilir bir yöneticiye göndermek olacaktır. Bu, yaşlılar, zihinsel engelli, çok genç veya başka türlü karıştırılmış kullanıcılar için en iyi sonucu verir. Tabii ki bu, bu kişilerin eylemlerini desteklemesi için güvenilir bir yönetici gerektirir.


1

Kullanıcının şifresini normal şekilde tuzlayın ve karıştırın. Kullanıcı oturum açarken, hem kullanıcının parolasına (tuzlama / karma işleminden sonra) izin verin, hem de kullanıcının tam olarak girdiği şeyin eşleşmesine de izin verin.

Bu, kullanıcının gizli parolasını girmesine izin verir, ancak parolalarının tuzlu / karma sürümünü girmelerine izin verir, bu da birinin veritabanından okuyacağı şeydir.

Temel olarak, tuzlanmış / karma parolayı da "düz metin" parolası yapın.


Neden kullanıcının doğrudan girdiği veriyi veritabanında saklanan karma parola ile karşılaştırmak gerektiğini düşünüyorsunuz? Bu size nasıl bir işlevsellik kazandırıyor? Ayrıca, bunu yaparken kullanıcı tarafından girilen parola ve veritabanından karma parola arasında sabit zamanlı karşılaştırma işlevi uygulamak büyük önem taşır. Aksi takdirde, karma parolayı zamanlama farklılıklarına göre belirlemek neredeyse önemsizdir.
Artjom B.

1
@ArtjomB. Soru, kullanıcının şifresinin nasıl korunacağını soruyor ve aynı zamanda müşteri desteğinin (CS) unutulan şifresini girerek bir kullanıcıyla konuşmasını / e-posta göndermesini sağlıyor. Karma sürümü düz metin parola olarak kullanılabilir hale getirerek, CS onu okuyabilir ve kullanıcının unutulmuş parola yerine onu kullanmasını sağlayabilir. CS, kullanıcı olarak oturum açmak ve onlara bir görevde yardımcı olmak için de kullanabilir. Bu aynı zamanda, otomatik unutulan şifre sistemleri konusunda rahat olan kullanıcıların, girdikleri ve kullandıkları şifre karma olduğu için korunmalarını sağlar.
Eliott

Anlıyorum. Soruyu bütünüyle okumadım. Tüm sistemin önemsiz şekilde kırılmasını önlemek için sabit zamanlı bir karşılaştırmanın kullanılması hala gereklidir.
Artjom B.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.