SORU
13 Kasım 2008, PERŞEMBE


Şifreleme veritabanında düz metin şifreleri Karma/

Ettimmiras kaldısadece 300,000 üzerinde mağaza keşfettim ki bir web uygulaması bir SQL Server veritabanında düz metin olarak, şifreler, kullanıcı adları. Bu Çok Kötü bir Şey™ olduğunu fark ettim.

Bilerek kalacağım güncelleme adı ve şifre güncelleme işlemleri için şifrelemek/şifresini çözmek ve en küçük çarpışmada sistemin geri kalanı, ne önerirsiniz olarak, en iyi yolu kaldırmak için düz metin parola veritabanı?

Herhangi bir yardım için teşekkür ederiz.

Eğer belli olsaydı Üzgünüm,/parolaları şifrelemek karma olsun, ameliyattan ne olacağını sormak istediğim bir şey var. Edit:

Hemen açayım:

  1. DB yedeğini
  2. Güncelleme giriş/güncelleme şifre kodu
  3. Saat sonra, kullanıcılar tablosundaki tüm kayıtları ile parola karma ve her bir yerine gidin
  4. Kullanıcılar emin olmak için Test hala/güncelleme şifreleri giriş yapabilirler

Benim sorunum kullanıcıların çokluğu daha fazla sanırım doğru yapıyorum emin olmak istiyorum.

CEVAP
13 Kasım 2008, PERŞEMBE


DÜZENLE (2013) kullanın: scrypt, bcrypt, tercihi veya o sırada PBKDF2,. Durumunuza uygun olarak büyük bir yavaşlama faktörü kullanın. Onaylanıp varolan bir uygulama kullanın. Uygun bir tuz kullandığınızdan emin kullandığınız kütüphaneler senin için bundan emin olmalıdır rağmen).


Sen ne zaman karma şifreleri kullanınDÜZ MD5 DEĞİL.

Kullanım PBKDF2, temel olarak hangi araçları kullanarak rastgele bir tuz önlemek için rainbow table saldırılar ve yineleme (re-karma) yeteri kadar yavaş yavaş karma aşağıya - çok değil, bu uygulama çok uzun sürer, ama o kadar saldırgan, kaba-zorlama çok sayıda farklı şifre fark etmez

Belge:

  • En az 1000 kez, tercihen daha fazla - uygulama süresi kaç sizin için uygun olduğunu görmek için yineleme.
  • Tuz 8 Byte (64 bit) yeterli ve rastgele güvenli (tuz şifresiz, birisi tahmin edecektir endişeli değiliz) olması gerekmez.
  • İyi bir şekilde uygulamak için tuz ne zaman karma kullanmaktır HMAC ile en sevdiğiniz karma algoritmasını kullanarak parola olarak HMAC anahtarı ve tuz olarak metne hash (this section belge).

Örnek Python uygulama, güvenli hash SHA-256 kullanarak:

EDİT: Eli Collins tarafından belirtildiği gibi bu PBKDF2 bir uygulama değil. Standart PassLib gibi sadık olan uygulamaları tercih etmelisiniz.

from hashlib import sha256
from hmac import HMAC
import random

def random_bytes(num_bytes):
  return "".join(chr(random.randrange(256)) for i in xrange(num_bytes))

def pbkdf_sha256(password, salt, iterations):
  result = password
  for i in xrange(iterations):
    result = HMAC(result, salt, sha256).digest() # use HMAC to apply the salt
  return result

NUM_ITERATIONS = 5000
def hash_password(plain_password):
  salt = random_bytes(8) # 64 bits

  hashed_password = pbkdf_sha256(plain_password, salt, NUM_ITERATIONS)

  # return the salt and hashed password, encoded in base64 and split with ","
  return salt.encode("base64").strip()   ","   hashed_password.encode("base64").strip()

def check_password(saved_password_entry, plain_password):
  salt, hashed_password = saved_password_entry.split(",")
  salt = salt.decode("base64")
  hashed_password = hashed_password.decode("base64")

  return hashed_password == pbkdf_sha256(plain_password, salt, NUM_ITERATIONS)

password_entry = hash_password("mysecret")
print password_entry # will print, for example: 8Y1ZO8Y1pi4=,r7Acg5iRiZ/x4QwFLhPMjASESxesoIcdJRSDkqWYfaA=
check_password(password_entry, "mysecret") # returns True

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • Mindy

    Mindy

    20 NİSAN 2006
  • WK

    WK

    9 Ocak 2006