Önceki cevaplara bazı notlar alalım.
İlk olarak, karma algoritmaları istemci tarafında kullanmak muhtemelen en iyi fikir değildir. Parolanız sunucu tarafında korunursa, hash'leri karşılaştıramazsınız (en azından istemci hashini veritabanında şifrenin hashing katmanlarından birinde depolamazsanız, ki bu aynı veya daha da kötüsü). Ve veritabanı tarafından kullanılan hash algoritmasını istemci tarafında uygulamak istemezsiniz, bu aptalca olur.
İkinci olarak, kriptografik anahtarların ticareti de ideal değildir. MITM teorik olarak (istemcide kurulu bir kök sertifikasına sahip olduğu düşünüldüğünde) şifreleme anahtarlarını değiştirebilir ve kendi anahtarlarıyla değişebilir:
Anahtarları değiştiren teorik bir sunucudan orijinal bağlantı (tls dikkate alınmadan):
İstemci genel anahtarlar ister> sunucu özel anahtarları tutar, istemciye genel anahtarlar oluşturur> sunucu müşteriye genel anahtarlar gönderir
Şimdi, teorik bir MITM saldırısında:
İstemci genel anahtarlar ister> MITM sahte özel anahtarlar üretir > Sunucu özel anahtarları tutar, istemciye genel anahtarlar oluşturur> MITM genel anahtarları orijinal sunucudan alır, artık sahte genel anahtarlarımızı istemciye göndermekte özgürüz ve İstemciden bir talep geldiğinde, müşteri verilerinin şifresini sahte anahtarlarla çözeceğiz, yükü değiştireceğiz (veya okuyacağız) ve orijinal genel anahtarlarla şifreleyeceğiz > MITM, istemciye sahte genel anahtarlar gönderir.
Bu, TLS'de güvenilir CA sertifikasına sahip olmanın amacıdır ve bu, sertifika geçerli değilse tarayıcıdan bir uyarı mesajı alırsınız.
OP'ye yanıt olarak: Benim düşünceme göre bunu yapamazsınız, çünkü er ya da geç, birisi hizmetinizden bir kullanıcıya saldırmak isteyecek ve protokolünüzü bozmaya çalışacaktır.
Bununla birlikte, yapabileceğiniz şey, insanların aynı şifre ile oturum açmaya çalışmasını önlemek için 2FA uygulamaktır. Yine de tekrar saldırıların farkında.
Kriptografide pek iyi değilim, lütfen yanılıyorsam düzeltin.