2016-03-25 32 views
6

Kullanıcı kimliklerini tamamen anonim tutmayı düşünen bir web uygulaması üzerinde çalışıyorum. saldırıya uğrama veritabanını güvence üzerine konsantre hariç - Ben sonuca geldiniz AncakKullanıcıları Anonim Tutmak - Sadece Güvenli DB Seçeneği - Genel Düşünceler?

, çok fazla yapabileceğim bir şey yok.

Bu, StackOverflow ile ilgili genel bir fikir birliği midir, yoksa kaçırdığım herhangi bir yöntem var mı? Ancak bu daha sonra

  • Düz bcrypt karma ve tuz çeşitli nedenlerle kullanıcıyla iletişim yol açar:

    yüzden düşündüm.
  • Parola sıfırladı. Kurtarma sorusu/cevabı kaydedebildim ama sonra elbette cevapların okunabilir olması gerekiyordu, böylece şeyler yeniliyordu.
  • Başka bir nokta, bu güvenlik sorularını veya kayıtta oluşturduğum bir kullanıcı adını unuttuklarını söylüyordu. Onları bir hesaba bağlamanın yolu yok. Ayrıca, yinelenen kullanıcıları kısıtlayan (yukarıdakileri fethettiğimi varsayarsak) akla ilk gelenler de vardı. Eğer arandığımda/tuzlanıp tuzağa düşürdüysem, işlemede oldukça ağır olur muydu? Kullanılmakta olan uzun bir e-posta listesini saklayabilirim ancak daha sonra bu sorunu tekrar mevcut bir hesaba bağlayabilir miyim?

Düşüncelerinizi duymak isterler.

Teşekkürler.

+0

Kullanıcıların e-posta/parola ile oturum açmasını istediğinizi düşündüğümüzü ve daha sonra sisteminizin tüm kişisel bilgilerini şifreleyecek şekilde tanımlamasını istiyor musunuz? –

+0

Kullanıcı doğrulama için Sqrl kullanmayı düşünebilirsiniz. https://www.grc.com/sqrl/sqrl.htm. Sistem, parola yerine bir kullanıcı oturumu imzalamak için ortak anahtar şifresini kullanır. Kullanıcıyı, bir müşteri sırrından türetilen bir anahtara göre tanımlarsınız. Bu şekilde şifreleri kaybetme konusunda endişelenmenize gerek yok. Kaybedecek şifreler olmadığı için. Denemedim, ama podcast'inde Steve Gibson'ı dinlemekten çok iyi görünüyor. –

+0

@AaronFranco evet bu doğru. – userMod2

cevap

3

Açıkladığınız bir senaryo olabileceğini düşünüyorum. Kullanıcılara, oturum açtıklarında şifre çözme jetonu verebilirsiniz. Simge, ön uçtaki uygulamadaki bir değişkene atanabilir. Bu nedenle, site veya sayfadan ayrılırlarsa, simge kaybedilir ve tekrar giriş yapmak zorunda kalırlar.

Jetonu kullanarak, uygulama sunucudan gelen şifrelenmiş verilerin şifresini çözebilir. Böylece, tüm veriler belirteci kullanılarak şifrelenebilir. Daha sonra, parola değişiklikleri gerekiyorsa, yeni bir parola oluşturduğunuzda yeni bir belirteç oluşturabilir ve sunucunuzun şifresini çözmesi gerekir, ardından yeni verilerini kullanarak tüm verilerini yeniden şifreleyebilirsiniz. Bu şekilde, tüm sunucu dosyalarınızı, kodlarınızı ve veritabanlarınızı SSL kullanırken şifrelenmiş olabilirsiniz, böylece tüm veriler anonim kullanıcıya ulaşana kadar anonim olacaktır. Oturum açan kullanıcı, sunucudan gelen verileri şifresini çözmek için belirteci almanın tek yolu olacaktır. Bu sunucu performansını önemli ölçüde azaltacaktır.

Bu teknik, Atmel tarafından mikroçiplerinde, aygıttan buluta% 100 şifreleme yapmak için kullanılır. Bir çip için mantıklı olan, çünkü bir kullanıcı görsel olarak onunla etkileşime girmek zorunda kalmaz. Bir webapp söz konusu olduğunda, görüntü için verilerin şifresini çözmek için bir yol olması gerekir. Hangi olasılıkları sınırlar. İşte https://www.jamesward.com/2013/05/13/securing-single-page-apps-and-rest-services https://www.fourmilab.ch/javascrypt/javascrypt.html

yukarıda bahsedilen güvenlik yöntemini kullanır Atmel cipsi için link: Burada

bunu yaparken de yararlı olabilir bağlantıların bir çift. http://www.atmel.com/products/security-ics/cryptoauthentication/

+0

İlginç - bunun nasıl olacağını görebiliyor ancak kullanıcı artık e-posta/cep telefonu yerine bir jetonu hatırlamak zorunda kalacaktı. Sanırım bu token basit bir şekilde yapılabilir mi? – userMod2

+0

Kullanıcı asla belirteci görmez. Jetonu sunucunuzdan getirmek için sadece E-posta ve Şifre'yi kullanırlar. Kod, sunucudan şifrelenmemiş olan tek şey olurdu. –

+0

Ah tamam - ama sunucu tarafında/DB'de hala jetondan kullanıcı hakkına bir link var mı? – userMod2

2

Öncelikle, tamamen anonim olmanın tek yolu asla çevrimiçi olmayacak. Hiçbir şey ve ben hiçbir şey ifade etmiyorum, tamamen güvenli. Herhangi bir karma, şifreleme, DB, vb kırık olabilir. Kötü niyetli bir "bilgisayar korsanı" gerçekten bilgi isterse, ne kadar uğraşırsanız uğraşırsanız bir yol bulacaktır.

Bunu söyledikten sonra, örneğin Tor'dan, vekilden, VPN'den, örneğin, baktığınız her bir bilgiyi tamamen şifrelerseniz, ne anlattığınızı söyleyebilirsiniz, o zaman bir şeye girersiniz. Ancak bu, eğer bir şeyler ters giderse, örneğin üçlü karmaşayı ve tüm karmaları çoklu tuzla söylerseniz ve kullanıcı bilgilerinin şifresini çözmeniz gereken bir soruna rastlarsa (argüman uğruna, FBI bunu isterse) bir sorun haline gelebilir. Bir MD5 şifrelemeli tek tuzlanmış karma, şifresini çözmek/çözmek için 2-5 saatte bir yere götürebilir. IP, kullanıcı adı, şifre, e-posta, isim, vb. Dahil olmak üzere tüm bilgileri şifrelediniz. Artık tek bir kullanıcının şifresini çözmek için potansiyel olarak bir güne bakıyorsunuz. Ancak, tarayıcınıza şifreli bir tünel yapmak için tarayıcınıza (örneğin, bir VPN gibi) erişebilmek için kullanıcının erişebileceği şifreli bir tünel çizme çizgisi boyunca bir şeyler yapabilirsiniz, daha sonra tarayıcı URL'sinde vekil atarsınız. anafılığı daha da arttırmak için. Bu sayede kullanıcı farklı bir IP ile şifrelenmiş bir tünelde ve tünelden verilen bir IP'yi başka bir şekilde kullanıyor. Hatta sık sık IP'leri atlamak ve proxy'leri değiştirmek kadar ileri gidebilirsin.

Şimdi veritabanını güven altına alalım, çoklu tuzlama sağlamalarını öneriyorum, bir geçiş deyimiyle güvence altına aldım ve geçiş deyimini veritabanının açık olduğu bilgisayardan siliyorum. Bu, şifre çözme için karmalara erişmeniz gerekiyorsa, zahmetli olabilir.

Bunun için gidiyorum, gerçekleşecek en kötü şey, kullanıcının hafif bir izine sahip olacaksınız. Ancak, bunu başarılı bir şekilde oluşturursanız, kötü niyetli bir niyetin, bunu yapıp yapamayacağını görmek için istismar etmeye çalışacağını unutmayın.