it-swarm-tr.com

Bir sistem, eski şifreleri açık metin olarak saklamadan veya işlemeden, şifrelerde minimum sayıda değiştirilmiş karakteri nasıl zorlayabilir?

Bazı ortamlarda, kullanıcıların her yeni şifre oluşturduklarında belirli sayıda karakteri değiştirmeleri gerekir. Bu, elbette, özellikle ayrılan bir çalışanın paylaşılan bir hizmet hesabı için sahip olabileceği eski şifrelerle birlikte, şifrelerin kolayca tahmin edilmesini önlemek içindir.

Bu zorlamanın --- butona basan tarafına ayrısorular açık adresim var. Ancak, bu yaptırımın arka tarafta nasıl çalıştığını da merak ediyorum. Bir açık metin parolası güçlü bir karma algoritmadan türetilemezse, sistem yeni parolalarda kaç karakterin değiştirildiğini nasıl belirler?

52
Iszi

Gerçekten kullandığınız karma sisteme bağlı olarak, kullanıcının daha önce kullandığı tüm şifreler ile karşılaştırmak konusunda emin değilim ve hash herhangi bir benzerlik türetmek mümkün olmadığını söyleyebilirim o zaman başlamak için çok iyi bir sistem değil ile.

Ancak, kullanıcının yeni şifresini ayarlarken mevcut şifresini sağlaması gerektiğini varsayarsak, en azından yeni şifreyi mevcut şifreyle karşılaştırabilirsiniz, çünkü her ikisinde de bu noktada utanmazsınız.

pam_cracklib Linux üzerindeki modül böyle şifreleri kontrol eder ve varsayılan olarak birkaç temel kontrol yapar.

  • Yeni parola yalnızca harfleri ters çevrilmiş ("parola" - "drowssap") ya da döndürülmüş ("parola" - "asswordp") eski parola mı?
  • Yeni parola, büyük/küçük harf değişimi nedeniyle eskisinden farklı mı ("parola" - "Parola")?
  • Yeni paroladaki en az bazı karakter sayısı eski parolada yok mu? Burada "difok" parametresi devreye girer.

Bununla ilgili daha fazla ayrıntı bulabilirsiniz burada .

47
Mark Davidson

Bu şifre değişikliğinde kolayca yapılır (kullanıcıdan hem eski hem de yeni şifre vermesi istenir).

27
frankodwyer

Genellikle, şifrenizi değiştirdiğinizde, önce eski şifreyi girmeniz gerekir. Bu, bilgisayarınız tarafından yürüyen birinin parolanızı çok hızlı bir şekilde değiştirememesini ve sırtınız döndüğünde sizi kilitlememesini sağlamak için güvenlik açısından kullanışlıdır. Ayrıca sunucunun parola mesafesi kurallarını uygulamasına izin verir. Sunucunun eski parolayı yalnızca yeni parolanın eskisinden yeterince farklı olduğunu doğrulaması için bellekte tutması yeterlidir. Asla şifrelenmemiş şifreyi saklamak gerekmez.

Bu arada, bu tür şifre değiştirme kuralları güvenlik için kötüdür. (Evet, burada kurban olduğunuzu biliyorum.) Kullanıcılar parolalarını sık sık değiştirmek zorunda kalırsa, ya hatırlaması çok kolay bir parola seçecek ya da kolay erişilebilir bir yere yazacaklardır. Parola süresinin dolması konusunda çok az avantaj vardır ve parola gücünde, kullanıcıların parolalarını bu avantajları dengelemekten daha fazla birkaç ayda bir değiştirmesini sağlamaktan beklenen kayıp. Parola süresinin dolmasına ilişkin daha ayrıntılı bir tedavi için bkz. Her 90 günde bir parolanızı değiştirmek güvenliği nasıl artırır? ve Kullanıcıları parolaları değiştirmeye zorlamak yararlı mı? ve Düzenli şifre değişikliği gerekiyor, ancak önceki şifreleri mi saklıyorsunuz?

Kullanıcı, şifre değişikliği için hem eski hem de yeni şifreyi girmelidir. Böylece, düz parola sürümü kullanıcı tarafından verildiğinden, yeni parolayı eskisiyle karşılaştırmak kolayca yapılabilir.

Yeni parolayı önceki parolalarla (geçerli parola dışında) karşılaştırmak için, yalnızca karma sonuçları karşılaştırılarak yapılabilir. Başka bir karşılaştırmaya izin verecek herhangi bir yöntem bir güvenlik deliği olacaktır.

5
Jacco

Genellikle, şifrenizi değiştirdiğinizde, önce eski şifreyi girmeniz gerekir. Bu, bilgisayarınız tarafından yürüyen birinin parolanızı çok hızlı bir şekilde değiştirememesini ve sırtınız döndüğünde sizi kilitlememesini sağlamak için güvenlik açısından kullanışlıdır. Ayrıca sunucunun parola mesafesi kurallarını uygulamasına izin verir. Sunucunun eski parolayı yalnızca yeni parolanın eskisinden yeterince farklı olduğunu doğrulaması için bellekte tutması yeterlidir. Asla şifrelenmemiş şifreyi saklamak zorunda değildir ve yenisini sakladığı anda eski karmayı silebilir.

Sunucu eşitliği sadece sonuncusu ile değil, eski şifrelerle kontrol ederse, bu farklı bir hikaye. Eski karmalarla parolanın yeniden kullanımını kontrol etmek yeterince kolaydır: her eski karma için, yeni parolanın karma değerini eski tuzla hesaplayın ve eski karma değeriyle karşılaştırın. Düzgün yapılandırılmış bir sistemde, bu işlem birkaç saniye sürecektir.

Sunucunun sadece eski şifrelerle eşitlik artı bir öncekiyle benzerlik değil, eski şifrelerle benzerliği kontrol etmesi de farklı bir konudur. Sunucu uygun karmaları kullanıyorsa, yeni paroladaki varyasyonları denemeli ve her varyasyonu tüm eski tuzlarla hash etmelidir. İhmal edilemez sayıda varyasyon ile bu işlem dakikalar veya daha uzun sürebilir. Eğer sunucu eski bir şifre ile benzerlikten şikayetçi ise, yanlış şifrelenmiş şifreleri saklıyor olabilirler.

Benzerlik için başka bir yaklaşım vardır, bu da her şifre varyasyonunun karmasını, her biri bağımsız olarak tuzlanmış olarak, şifre ayarlanır kurulmaz saklamaktır. Ancak bu size çok fazla şey kazandırmaz: Sunucunun yeni şifrenin karmasını hala tüm bu tuzlarla hesaplaması gerekir, bu da tipik bir şifre değişikliği için çok uzun zaman alır.

Gerçekte çalışan, ancak hiçbir yerde uygulandığını görmediğim eski şifreleri kurtarmanın bir yolu, kullanıcıdan eski şifreyi sorduktan ve eski şifreyi bellekten silmeden önce bir şifre değişikliğinde aşağıdakileri yapmaktır:

  • Yeni paroladan simetrik bir anahtar elde edin (bir anahtar güçlendirme algoritması kullanarak).
  • Eski paroladan aynı şekilde bir anahtar elde edin.
  • Eski anahtarla eski parola listesinin şifresini çözün.
  • Önceki şifreyi listeye ekleyin.
  • Politika kontrollerini yapın - önceki tüm şifreler bu noktada bilinir. Yeni şifre kontrolleri geçerse…
  • Eski parola listesini yeni anahtarla şifreleyin.
  • Parolayı ve önceki parolaların şifrelenmiş listesini veritabanını değiştirin.

Mevcut parola tehlikeye girerse, önceki tüm parolalar da görünür. Ancak, makul bir hesaplama çabasıyla herhangi bir sayıda önceki parola için bir parola mesafesi ilkesinin uygulanmasına izin verir.

Sadece karmaları koruyarak yapılabilir, hatta birkaç iterasyon üzerinde bile yapılabilir.

Yöntem, şifreyi alıp karma algo üzerinden yinelemek ve saklanan değerlerle karşılaştırmaları kontrol etmek olacaktır.

Örneğin, çoğu kullanıcı (ve servis masası çalışanları, öfkeli önemli türlere sahip son çare olarak buna düşmeyi severler), şifrelerini inanılmaz derecede basit bir şekilde yineleyecektir.

Bu yüzden # foob @ r1 şifresini alıp # foob @ r2 yapmak, # foob @ r1 bilgisi olmadan hızlı bir şekilde algo üzerinde kaba kuvvet uygulayarak test edilebilir. Modern işlem gücü ile ilk 4 karakter arasında on saniyeden daha kısa sürede tekrarlayabilirsiniz.

Verimlilik uğruna son dört kişi tipik olarak insanların değiştirdiği şeydir, bu nedenle paranız için daha büyük patlama göreceksiniz. Eğer ardışık olmayan ve ardışık yapacaksanız, son kullanıcı ve büyük bir işlemci yığını için oldukça büyük bir beklemeye bakıyorsunuz.

5
Ori