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.