Güvenli bir veritabanında saklanıyorsa şifreler neden şifrelenmelidir?


78

Bir web servisim var. Şu anda, sunucumdaki MySQL tablosunda düz metin olarak depolanmış şifrelerim var . Bunun en iyi uygulama olmadığını biliyorum ve bu yüzden üzerinde çalışıyorum.

Güvenli bir veritabanında saklanıyorsa şifreler neden şifrelenmelidir? Birisi veritabanıma girerse, herkesin şifresini alacağının farkındayım. Fakat birileri veritabanıma girerse, örneğin verileri silerken başka problemlerim var.

Aklıma gelen senaryo, saldırıya uğramış olmanız. Birkaç saat önce bir veritabanını geri yüklüyorsun ve her şey yolunda. Ancak, şifreleriniz düz metinse ... Hırsızın tüm şifreleri vardır ve hepsini sıfırlamanız gerekir. Kullanıcılarınıza güçlük.

Şifreler şifrelenmişse, önceki veritabanına geri yükleyebilirsiniz. Bu doğru düşünme mi?


124
Bir adım daha ileri giderdim. Şifrelemek için yeterli değil. Bunu karıştırmak isterdin. Bu şekilde, kullanıcılarınızın düz metin şifrelerinin ne olduğunu bile bilmemelisiniz.
Santa

67
@Santa Şifreyi saklamak yeterli değil. Tarifi yeterince iyi yapmak için biraz tuz eklemelisin ...
Bakuriu

16
Lütfen bu ilgili Security.StackExchange yazısına bir göz atın: Güvenli şifreler nasıl oluşturulur?
Adi

10
Hoşnutsuz DBA diyor ki ... kullanıcıdan seç * 'i seçti ve sonra bu listeyi önem sırasına göre ödedi. Hiçbir şey güvenli değildir.
Jon Raynor

Yanıtlar:


194

Öncelikle, salt okunur erişim haklarında okuma yazma işleminden daha özgür olmalısınız. Bir bilgisayar korsanının verilerinize erişimi olabilir ancak bu bilgileri düzenleyemiyor olabilir.

Ama, daha da önemlisi, bu seninle ilgili değil. Birisi veritabanınıza tam olarak erişebiliyorsa mahvolmanız gerçeği önemli değildir. Çok daha önemli, kullanıcının verileridir.

Veritabanınızı kurtarırsanız, bilgisayar korsanı yine de kullanıcı hesabınıza erişebilir.

Ve başka ne biliyor kim? Ya Google’da aynı şifreyi kullanıyorlarsa? Veya PayPal? Bu, bilgisayar korsanının annesinin kızlık soyadı veya kredi kartının son 4 hanesine erişmesini sağlarsa?

Ya bu onları başka hesaplara sokarsa? Kullanıcı destek sisteminden geçmek ve daha fazla bilgi almak için bilgisayar korsanlarının yanına koymayın .

Sadece ... sadece yapma. Bu, kullanıcının özel bilgileridir ve görebilmeniz gerekmez. Aynı zamanda senin ünün. Şifrele.

EDIT: Ekstra bir yorum, gelecekteki okuyucuların her cevabı ve yorumları okumasını engellemek için

Şifreleyecekseniz (en kesin anlamıyla), o zaman herkese açık ve özel bir anahtar çifti kullanmanız gerekir ; bu iyi, ancak hayatı hem siz hem de kullanıcı için biraz daha zorlaştırır.

Daha basit ve aynı derecede etkili bir çözüm, şifreyi rastgele-tuzlamak ve hash etmektir. Tek başına karmaşa yetmez; Eğer kullanıcı ortak bir şifre kullanıyorsa, basit bir internet araması ile kolayca bulunabilecek olan ters karma tablolarda görünecektir.


89
Ya da daha iyisi, hash!
Blorgbeard

29
Bu. "Biri veritabanıma girerse başka problemlerim var". Veritabanınız, saldırıya uğraması durumunda sorun yaşamayı umuyorsunuz. Ancak düz metin şifrelerini saklayarak, tüm kullanıcılarınıza potansiyel olarak tüm diğer hesaplarıyla ilgili sorunlar yaşarsınız. Her bir web sitesinde kaç kişinin gerçekten farklı bir şifre kullandığını düşünüyorsun?
Carson63000

13
Blorgbeard tavsiyesine uyun, belki okumak bu . Şifreleri şifrelemek, web sunucunuz tehlikeye girdiğinde koruma sağlamaz. Şifrelerin şifresini çözmenin anahtarı sunucuda bir yerde saklanmalıdır. Şifrelerin şifrelenmesi, birisinin makineye tam olarak erişebilmesi durumunda bile şifreleri kolayca kurtaramayacağı anlamına gelir.
Dilimlenmiş patates

7
Sisteminize bir değer sağlamazsa neden parolaları şifrelemeniz gerekiyor? Ne zamandır karşılaştırma yapmak yerine şifrelerinizin şifresini çözmeniz gerekecek? Pdr, OP'ye şifrelemesini söylememelisiniz, ona tuzlu ve özlü demeyi söylemelisiniz.
NobleUplift,

4
Ayrıca şifre kurtarma sorularının cevaplarını da toplamak istersiniz. Aksi halde, bunlar şifreler gibi başka sitelere de girmek için kullanılabilir.
Zan Lynx,

64

Eğer saldırıya uğrarsanız, siteyi yedeklemelerden geri yükleyebilir ve düzeltebilirsiniz. Ancak bilgisayar korsanının hala herkesin hesabına şifreleri var! Bu olayın belgelenmiş gerçek dünya örnekleri var (Sony, Linked-in), eğer şifre tabloları uygun şekilde karıştırılmış ve tuzlanmışsa, sevice'yi güvenli bir şekilde geri yüklemek ve hızlıca geri yüklemek çok daha kolay olurdu.

Muhtemelen , saldırıya uğrayacağınızı varsaymak ve yedekleme stratejinizi tasarlamak ve bu varsayımları dikkate alarak hassas verileri şifrelemek iyi bir fikirdir . Ve sadece koruman gereken bilgisayar korsanları değil. Hoşnutsuz, dürüst olmayan veya sadece ipucu olmayan çalışanlar düz metin şifreler verebilir.

Sıkıştırma olmadan, şifresini değiştirinceye kadar herkes için erişimi devre dışı bırakmanız gerekir (bu mümkün olsa bile herkes için büyük bir baş ağrısı olacaktır). Parolalar şifrelenmiş ve tuzlanmışsa, web hizmetini geri yükleyebilirsiniz ve bir saldırganın insanların hesaplarına erişmesi çok daha zor olacaktır.

Düzgün bir şekilde karıştırılmış ve tuzlanmış bir şifre temelde tek yönlüdür. Şifreyi karma şifreden kolayca tahmin edemezsiniz. Siz bile, servis sağlayıcı tahmin edemediğinden, yalnızca sıfırlayabilirsiniz.

Ayrıca, Elin'in dediği gibi, kendi karmaşınızı (ya da şifrelemenizi) yuvarlamaya çalışmayın. Standart bir kütüphane kullanın.



13
Hoşnutsuz çalışanlardan bahsettiği için +1. Tek kişilik bir dükkan veya küçük bir şirket olduğunuzda göz ardı etmek kolaydır, ancak sonunda kişisel olarak incelemediğiniz verilerle çalışan insanlara sahip olacaksınız.

2
Foreach'leri bir kullanıcı listesi arasında dolaşmak ve sonra şifrelerini toplamak birkaç dakikalık bir çalışmadır ve açıkçası 4000 neredeyse hiçbir şey değildir. php.net/manual/en/function.hash.php
Elin

3
"Şifreleme" terimleri arasında "karma ve tuz" ile @ david25272 arasında geçiş yapmaya devam ediyorsunuz. Tamamen farklı olan ikisini karıştırmayın. Şimdi OP bir şifreleme algoritması arıyor ve bir karma algoritma arıyor. Ayrıca, "tuz ve karma" değil, "karma ve tuz" değil. Sen karıştıktan sonra tuzlayamazsın.
NobleUplift

1
Ayrıca @ phpmysqlguy, tuzlama ve karma algoritmalar hakkında öneriler için cevabımı okuyun .
NobleUplift

36

Fakat eğer birisi veritabanıma girerse, yani verileri silerken başka problemlerim var.

Bu sorunlarla ilgili değil sen onu tüm diğer kullanıcılar için neden olabilecek sorunlar hakkında var, var. Bu, sitede çalışan kişilerin orada depolanan verileri kötüye kullanmaları için cezbedilmeyi (veya daha da kötüsü, potansiyel yükümlülüğü) kaldırmakla ilgilidir.

İnsanlar bile, bak gereken farklı sistemlerde farklı şifreler kullanmak, gerçeklik olmasıdır yok .

... ve şifrelere sahip olmak çok kolay olduğu için, sektördeki en iyi uygulamaları takip etmemeniz için hiçbir bahaneniz yok.


9
Sen en önemli noktayı olduğuna inandıkları olun: SİZ ve işçiler kullanıcının şifre girişi olmaması gerekir. Bilgisayar korsanını önemseyen, kullanıcıları ilgilendiren verileri tutan kişilerdir.
Adam Davis,

1
Bir geliştirici / yönetici olarak kullanıcılarınızın şifrelerine erişiminiz olmaması gerektiği için +1. Bu kendi içinde yeterli sebep.
Matt

21

Veri silmek gibi göze çarpan saldırılar genellikle amatör şeylerdir ve endişelerinizin en küçüğüdür. Deneyimli bir saldırganın yapacağı ilk şeylerden biri meşru bir erişim elde etmeye çalışmaktır, bu yüzden kullandığı orijinal güvenlik açığını düzeltseniz bile, yine de içeri girebilir. istediğini yerine getirir. Şifreleri bozulmadan bırakarak, potansiyel olarak işini daha kolay hale getirdin. Ayrıca gelecekteki kötü niyetli davranışlarını tespit etmeyi ve izole etmeyi zorlaştırdın.

Ayrıca, tüm ödünler size tam kabuk erişimi sağlamaz. Bir saldırganın kullandığı güvenlik açığı yalnızca userstablodaki salt okunur bir SQL enjeksiyonu ise ? Şifreleri bozulmadan bırakmak sadece ona tam erişim sağladı.

Bu, kullanıcı verilerinizi korumakla ilgili sorumluluğunuz hakkındaki diğer cevapların nedenlerine ek olarak verilir. Demek istediğim, kaybedecek bir şeyi olan sadece kullanıcılarınız değil.


18

Buraya sorunun kendisindeki bir yanlışlık hakkında cevap yazmam gerekiyor. Şifrelerin şifrelenmesi gerekip gerekmediğini soruyorsunuz. Hiç kimse şifreleri şifrelemez; hiç kimse, tek amacı şifreleri şifrelemek olan Firefox Sync ve Roboform gibi hizmetler ve programlar dışında.

Tanımlara bir göz atalım:

Şifrelemede, şifreleme, mesajları (veya bilgileri) yalnızca yetkili tarafların okuyabileceği şekilde kodlama işlemidir.

Ve karma:

Bir karma işlevi, isteğe bağlı uzunluktaki verileri sabit uzunluktaki verilerle eşleyen herhangi bir algoritmadır.

Başka bir deyişle, şifreleme iki yönlü bir dönüşümdür ve karma ise tek yönlü bir dönüşümdür, bu nedenle bunları daha sonra görüntülemek için şifresini çözmüyorsanız, şifreleme değildir.

Ayrıca, sadece karma, tuz değil ! Şifrelerinizi almadan önce bu sayfanın tamamını okuyun.

OP'nin şimdi aradığı karma algoritmalara gelince, SHA-384 veya SHA-512 gibi üst seviye SHA-2 değişkenlerinden herhangi birini öneririm.

Ve karma tur kullandığınızdan emin olun . Bir kez karma yapma, birden çok kez karma.

Giriş işleminizi daha güvenli hale getirmek için bu sayfayı okumayı düşünün .

İkincisi, veritabanınız asla yeterince güvenli olamaz. Her zaman güvenlik delikleri ve sürekli gelişen riskler olacaktır. Murphy Yasasını takip etmeli ve her zaman en kötü olaya hazır olmalısınız.

Diğer noktalar pdr markaları Başka tam olarak ne der gibidir: sosyal mühendislik kullanarak her web sitesi için aynı parolayı kullanan kişiler, hacker, vb vb daha fazla bilgi elde etmek


Karma artı tuz için +1 . Tuzsuz çatlama hashi sooo kolaydır.
Kod Maverick

3
@CodeMaverick gökkuşağı masasının diğer tarafında ne var biliyor musun? Altın bir tencereye.
NobleUplift,

Şifre şifreleme bağlamında, MD5'in hızlı olmanın ötesinde bilinen hiçbir güvenlik açığı yoktur ve bu aynı zamanda SHA-2 için de geçerlidir. Yavaş, yinelenmiş yapı kullanmak, MD5'teki SHA-2 seçiminden çok daha önemlidir.
KodlarInChaos

4
O sayfası gerektiğini bahseder - "size şifreleri karma önce bu sayfanın tamamını okuyun" değil hash ait mermi kullanabilirsiniz, ancak özel olarak tasarlanmış olan bir karma yöntem, PBKDF2 gibi gerektiği kadar yavaş olması.
jhominal,

2
Her ikisi de bellek veya CPU açısından çok pahalı olacak şekilde tasarlanmış SCrypt veya PBKDF2 kullanın. Kullanıcı kaydında sakladığınız rastgele oluşturulmuş bir Tuz kullanın. Sadece çarpışma sorunlarına yol açan birden fazla karma turu gerçekleştirmeyin.
tom.dietrich

14

Burada tehlikede olan önemli bir ilke var. Kullanıcı şifresini bilen bir işi olan sadece bir kişi var. Bu kullanıcı. Eşleri / kocası, doktorları ve hatta papazları değil.

Kesinlikle kullandıkları hizmetten sorumlu programcı, veritabanı yöneticisi veya sistem teknisyeni içermez. Programcının, kullanıcının gerçekten bir sorunu çözmek için önemsiz bir sorun olan parolayı gerçekten bildiğini kanıtlama sorumluluğu bulunduğundan, bu bir zorluk yaratır.

Saf çözüm, kullanıcının bazı yeni ve öngörülemeyen verilerle zorlandığı bir mekanizmaya sahip olmak ve daha sonra bu verilere ve şifrelerine dayanan bir yanıt döndürmek zorunda kalmaktır. Bunun bir uygulaması, kullanıcıdan yeni oluşturulan bazı verileri dijital imzasıyla dijital olarak imzalamasını istemek ve matematiksel olarak hesabı oluşturmak için kullandıkları şifreleme anahtar çiftini kullandıklarını kanıtlayabiliriz.

Uygulamada, saf çözümler önemli müşteri tarafı altyapısı ve işlemesi gerektirir ve birçok web sitesi için bu genellikle korunan veriler için uygun değildir.

Daha yaygın bir çözüm şöyle olacaktır:

Uygulamada bir şifrenin ilk alındığı noktada, şifre, uygulamanın rasgele 'tuz' değeri ile birlikte karma fonksiyonuna geçirilir.

Daha sonra orijinal dizgenin hafızasına yazılır ve bu noktadan itibaren, tuzlanmış karma veri tabanında depolanır veya veri tabanı kaydı ile karşılaştırılır.

Burada güvenliği sağlayan kilit hususlar şunlardır:

  1. Karma bilgisi, doğrudan kimlik doğrulama sağlamaz.
  2. Parolanın karma değerinden ters hesaplanması pratik değildir.
  3. Gökkuşağı tablolarının kullanımı (uzun parola listeleri ve hesaplanan karmaları) daha zorlaştırılmıştır, çünkü elde edilen karma hem kullanıcı adına hem de parolaya bağlıdır.

6
Genel olarak, kullanıcı adı yerine rastgele bir tuz kullanılması tercih edilir.
KodlarInChaos

Vay be, harika @CodesInChaos yakalamak. Bunu ilk okuduğumda farketmedim. Evet, tuzunuz rastgele oluşturulmalıdır. MySQL'de saklanan bazı çılgın bloblar olmak zorunda değil (ve o zamanlar taşınabilir, çünkü bu kötü olurdu). Aksi halde, +1, yalnızca kullanıcının kullanıcının şifresini bilmesi gerektiğini söylediği için.
NobleUplift,

Tamam, uygulamanın kendi rastgele tuz değerine sahip olduğunu önermek için cevap güncellendi.
Michael Shaw

4
Hayır, uygulamanın da bir tuz değeri yok. Depolanan her karma için farklı, kuvvetle rasgele, tuz değeri olmalıdır. (Tuzu bu karmanın yanında saklarsınız.) İstatistiksel saldırılara karşı koruyan şey budur. Tüm uygulama için aynı hash kullandıysanız, aynı düz metin aynı değere göre hash yapar. Kullanıcı adını karma olarak kullanmaktan çok daha kötü.
Ben Voigt

Bu bir web servisi değil, ancak SSH keypair kimlik doğrulaması, sunucunun ortak bir anahtarı depoladığı ve kullanıcının özel bir anahtarla kimlik doğrulaması yaptığı 'saf' çözümü kullanıyor.
cpast

10

İkinci bir savunma katmanı olarak şifreleri "şifrelemeniz" (aslında "karma" yapmanız gerekir), bu şifreleri ikinci bir savunma katmanı olarak gösterir : bu, veritabanını salt okunur bir şekilde gösteren bir saldırganın yükselmesini önlemek içindir. Bu, okuma-yazma erişimine girer ve kesin olarak verileri değiştirmeye başlar. Salt okunur kısmi ihlaller, gerçek dünyada meydana gelir, örneğin salt okunur erişimli bir hesaptan yapılan bazı SQL enjeksiyon saldırılarıyla veya atılan bir sabit diski veya eski bir yedekleme teypini çöp kutusundan alarak. Orada bu konuda uzun yazdım .

Parolaları doğru şekilde şifrelemek için bu cevaba bakınız . Bu tuzları, yinelemeleri ve hepsinden, en, içerir değil kendi algoritmaları (ev yapımı şifreleme felaket için emin bir tarifi) icat.


Şifreleme ve karma arasındaki farkı bilmek için +1.
NobleUplift,

8

Başkalarının söylediklerini tekrarlamayacağım, ancak PHP 5.3.8 veya daha iyisine sahip olduğunuzu varsayarak bcrypt, şifrelerinizi saklamak için PHP yerel kullanıyor olmalısınız . Bu PHP içine inşa edilmiştir. PHP 5.5'iniz varsa, mevcut en iyi şifre sabitini kullanabilirsiniz. 5.3.8 yapmak veya 5.5 gibi davranmak için bir kütüphane de kullanabilirsiniz.

Yığın Taşması sorusu PHP'de şifreleri toplamak için bcrypt nasıl kullanılır? açıklar ve diğer cevaplar daha fazla açıklar. Lütfen bunu kendiniz yapmaya çalışmayın.


2
Ne yazık ki, PHP 5.3.3 kullanıyorum bu yüzden önerileriniz geçerli olmayacak
phpmysqlguy

4
yükseltme 5.3.3 - 5.3.8’dir?
gbjbaanb

Red Hat'te olma ihtimalin var mı? Çünkü bcrypt için düzeltmeleri desteklediler. Değilse, brcypt yerine SHA256 kullanın.
Elin

1
Şifreleme ve karma farklı şeylerdir. Karma şifreler, şifrelenme. Onları asla tanıman gerekmez. Kullanıcının yalnızca kim olduğunu kanıtlamak için şifreyi kullanabilmesi gerekir. Hashing (tuzlu) buna izin verir. Şifreleme, esp. Simetrik şifreleme, şifrelerin kurtarılmasını sağladığı için yanlıştır.
Paul de Vrieze,

Ekleyeceğim tek şey php 5.5+ 'deki password_hash () işlevi ile ilgili iyi olan şey, tuzlama ve benzeri şeyleri varsayılan olarak yapmasıdır. Bundan önce, devam etmeniz ve onu destekleyen, ircmaxell'in kütüphanesi gibi bir şeyi kullanmanız gerekir (5.5 uygulamasını yazdı). Kendiniz tarafından rastgele bir tuz üretebileceğinizi düşünmeyin. Çok zor ve uzmanlara bırakılmış en iyisi; sömürü elde etmek için rastgele fakat düzgün olmayan sonuçlar elde etmek gerçekten çok kolay.
Elin

7

Bu cevapta belirtilen sebeplerden ötürü pdr'nin cevabına katılıyorum.

Aşağıdakileri ekleyeceğim: Yapmanız gereken kolay ve genel olarak herhangi bir uygulama için en iyi uygulama olarak kabul ediliyor. Daha spesifik olarak, şifreler her zaman kalıcı depolamaya yazmadan önce her zaman tuzlanmalı ve karıştırılmalıdır . Tuzlama ve iyi bir şifreleme hash (bazı popüler dillerde ücretsiz kaynak kodu da sağlar) seçmenin önemi hakkında iyi bir referans: https://crackstation.net/hashing-security.htm

Az miktarda ekstra geliştirme süresi, kullanıcılarınıza sağladığı korumaya ve bir geliştirici olarak ününüze değer.


Her iki tuzlama söz ve karma yanı sıra için 1 değil hatta bu soruya ait değil söz şifreleme.
NobleUplift,

2

Aklıma gelen senaryo, saldırıya uğramış olmanız.

Düşünmeniz gereken başka bir senaryo: Birisi DBA'nızı attı (veya DB’nizde belirli sorguları çalıştırabilecek biri varsa), kullanıcıların şifrelerini vermek için 100 dolar. Veya sosyal mühendisler bunu yapmak için bazı stajyerler.

Daha sonra bu şifreleri kullanıcının Gmail’ine veya ticari siteye giriş yapmak için kullanırlar (çünkü insanlar ... akıllıdan daha az diyebiliriz - ve aynı şifreyi siteler arasında kullanırlar).

Ardından kızgın kullanıcı şirketinizi şifresini ifşa ettiği için dava eder.


NOBODY (şirketinizdeki kişiler dahil) düz metin şifresini okuyabilmelidir. Hiç. Bunun için meşru bir iş veya teknik ihtiyaç yoktur.


2

Birincisi, veritabanı yöneticileri bile kullanıcıların şifrelerini görmemelidir. Bunları karma yapmak, yöneticinin bir şifreye bakmaya karar vermesi ve kullanıcılarının hesabına giriş yapması durumunda bunu önleyecektir.


1
bu daha önce cevaplarda zaten yayınlanmış olanlara değecek bir şey
gnat

3
+1. Aslında diğerleri gibi şifreleme yerine "hash" dedi. Ayrıca, şifrelerin diğer kullanıcıların hesaplarına giriş yapmak için şifreleri düz metin olarak yazmasını istediğini söyleyen OP ile doğrudan çelişir.
NobleUplift,

0

Peki, henüz kimsenin bundan bahsetmemesi şaşırtıcı, peki ya veritabanınızın FİZİKSEL güvenliği?

Dünyadaki en iyi BT güvenliğine sahip olabilirsiniz, ancak bu, depolama ortamınıza fiziksel olarak erişebilecek birini durdurmaz. Ekibiniz bu öğleden sonra Superbowl'u kazandığında ve ofisinizin / barındırma sağlayıcınızın bulunduğu şehir merkezindeki küçük bir isyan patladığında ne olur? (ABD'deki iki büyük BT alanı olan Seattle-Denver olduğu göz önüne alındığında, bunun mantıksız olduğunu sanmıyorum). Mafya binanıza çarptı ve yetkililer boğulmuş halde iken, birisi donanımınızın bir kısmını üzerinde açık metin şifreleri içeren bir DB ile kaptı?

Bazı üst düzey yöneticiler yasadışı borsa işlemlerini yürütmek için şirketteki pozisyonunu kullandığı için Federaller ekipmanınızı gösterip ele geçirdiğinde ne olur? Daha sonra Federaller bu şifreleri, yanlış bir şey yapmamış olsalar da müşterilerinizi araştırmak için kullanır. Sonra onları savunmasız bırakan SEN olduğunun farkındalar .

BT departmanınız, eski sürücüleri stajyere "dağıtmadan" önce DB'nizi tutan eski RAID sürücülerini silmeyi unuttuğunda ne olur, sonra yurt oda arkadaşlarının geride bıraktıklarını bulup, yapabileceklerini anlarlar. "Sat" ve asla geri izlemeyecek mi?

DB Sunucunuz bir anakartı patlattığında, BT yeni sunucunuza bir görüntü geri yüklerse ve eski sunucunun "karkası" geri dönüşüm yığınında atılırsa ne olur? Bu sürücüler hala iyi ve bu veriler hala orada.

İyi bir mimar, güvenliğin, daha sonra güvenlik duvarları ve operasyon politikaları ile "kenetleneceğiniz" bir şey olmadığını bilir. Güvenlik, en başından beri tasarımın temel bir parçası olmalıdır ve bu, şifreler tek yönlü olarak şifrelenmiştir , ASLA şifreleme yapılmadan iletilmez (kendi veri merkezlerinde bile) ve asla kurtarılamaz. Alınabilecek herhangi bir şey tehlikeye girebilir.


-1

Veritabanınızın saldırıya uğradığı durumu bir kenara koymak: Bir müşteri olarak şifrenizi bilmenizi istemem. Bir istek üzerine geldiğinde şifreyi kolayca alabileceğinizi biliyorum, ancak istediğiniz zaman sorgulamak için elinizde olmadığında daha iyi bir his var.


1
Aslında, OP bir adım daha ileri götürüp JavaScript’te şifrelenmişse, kablo tel üzerinden gönderilir ve talepte asla görülmez.
NobleUplift,

1
Bu durumda bir saldırganın sadece kablo üzerinden hash göndermesi gerekir. Karma sadece bir fantezi ama şifreli olmayan bir şifre işlevi görür, değil mi? (Düzenleme: her seferinde farklı bir tuzla tuzlanması gerekiyorsa ve tuz sunucudan geldiyse olmaz.)
RemcoGerlich

1
@RemcoGerlich Anahtar kavram, bir tekrarlama saldırısını önlemek için kullanılan bir nonce olarak bilinir .

-1

Parolalar düz metin olarak saklanırsa, kullanıcı tarafından biliniyor ve bu tabloya erişimi olan herkes anlamına gelir. Kullanıcıları ve şifreleri uygulama hakkındaki tüm fikir, sisteminizde belirli bir oturumun hem gizlilik hem de güvenlik nedenleriyle söz konusu bir kişiye ait olduğundan emin olmaktır.

Eğer bir kullanıcı adı / şifre bir grup insan tarafından biliniyorsa, bir kişiyi kesin olarak tanımlamak işe yaramaz hale gelir ve bu kimlik hırsızlığı, sahtekarlık ...

Bu yüzden, şifreleri, okuma yeteneğine sahip olmadan doğrulayabilmeniz için asimetrik şifreleme protokolleri kullanılarak saklanır.


2
Asimetrik şifreleme kullanarak şifreleri kim saklar? Bu açık anahtarlı şifreleme, yani şifremi şifreledikten sonra bile, birisi özel anahtarımı alırsa şifresini çözebilir ve okuyabilir. Karma ile, ben ve sadece şifremi biliyorum (bir yere yazmazsam ya da bir şifre yöneticisine koyarsam, aslında asimetrik şifrelemedir).
NobleUplift,

Lütfen açık anahtar şifrelemesi için wikipedia sayfasını kontrol edin: en.wikipedia.org/wiki/Public-key_cryptography "Açık anahtar şifrelemesi, asimetrik şifreleme olarak da bilinir"
Alpha1983

2
... evet dedim using asymmetric encryption? That's public-key cryptography. Amacın ne?
NobleUplift,

-1

Bence soruda temel bir kusur var. Gerçek şu ki, "güvenli veritabanı" diye bir şey yoktur. Kötü niyetli kullanıcıların sunucularınızdaki rasgele verilere erişmesine izin verebilecek bir yerde sisteminizde kusurlar olduğu belirtilmelidir. Heartbleed , araştırmacılar tarafından fark edilmeden önce iki yıldan fazla süredir vahşi olan bir istismar olarak, mükemmel bir durum. Verileri korumak için nasıl yapılacağını bildiğiniz her şeyi yapmış olabilirsiniz, ancak sunucularınızda kullandığınız diğer tüm yazılım parçalarını ve etkileşime girdikleri karmaşık yolları hesaba katamazsınız.

Birisi seninle ilgilenirse, saldırıya uğrayacaksın . İlk etapta saldırıya uğramamak için elinizden gelenin en iyisini yapmak, ancak mümkün olduğu kadar çok engelle karşılaşarak meydana gelen zararı azaltmak da önemlidir. Şifrelerinizi karıştırın. Kurulumu o kadar zor değil ve kullanıcılarına gizliliklerini ciddiye almamak suretiyle bir kötülük yapıyorsunuz. Kötü niyetli saldırılara karşı bir şekilde daha iyi korumalı olduğunuzu düşünmek , hepsi saldırıya uğramış olan Yahoo , Sony veya Target gibi şirketlerden daha iyidir .


1
Bu 14 önceki cevapların üzerinde önemli bir şey sunmuyor gibi görünüyor
gnat

Kabul etmiyorum aksi halde göndermezdim. Olumsuz yorumlarda bulunmanın, konuşmaya nasıl katkıda bulunacağını bilmiyorum, insanların katılmaya teşvik etmesinin yanı sıra.
lobati

Sizinkini yayınlamadan önce başka cevapları okuyup okumadığınızı bilmiyorum, ama okuduğumda buradaki tüm noktalar zaten (ve okuduğum okumaya göre) başka bir yerde yapıldı. Örneğin, sorudaki kusur hakkındaki nokta 2 aydan daha uzun bir süre önce bu ve bu cevapta yapıldı. Şifre şifreleme ile ilgili en az 7 yanıt daha yapıldı. Yedekleme ve sistemin diğer parçalarındaki olası sorunların hesaba katılması da uzun zaman önce yapıldı. Vb etc
gnat

Bağlantılı yanlış nokta benimkinden farklıydı. Şifrelemeye karşı şifreleme ile anlam arasındaki farkı belirtiyorlardı, ben de bir veritabanının "güvenli" sayılabileceğini düşünmenin yanlış olduğunu söylüyordum. Diğer yazılım parçalarını ve etkileşimlerinin güvensiz olduğunu tartışan başka cevaplar göremiyorum ve yedeklemeler hakkında herhangi bir noktaya değinmedim.
lobati

" saldırıya uğrayacağınızı varsayalım " - 2 ay önce gönderilen bir cevapta yazıldığından böyle geçti
gnat
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.