Wcześniej: przykro mi, że jestem negatywny;
Wdrażanie własnego protokołu bezpieczeństwa jest dobrym pomysłem, jeśli nie jesteś dobrze wyszkolonym ekspertem ds. Bezpieczeństwa lub naprawdę nie zależy Ci na bezpieczeństwie i chcesz tylko stworzyć wrażenie bezpieczeństwa (marketing) i zatrzymaj dziecięce skrypty.
SSL zdecydowanie nie jest blokadą linii papilarnych, tak jak w komentarzach, JCryption i twoja propozycja są równe drzwiom, w których możesz wprowadzić dwucyfrowy kod, aby otworzyć drzwi i masz nieskończenie wiele prób. Ciężko jest się zepsuć, jeśli nie jesteś naprawdę zainteresowany i tylko przejeżdżasz, ale jeśli chcesz dostać się do tego domu (i prawdopodobnie to zrobisz, inaczej bezpieczeństwo nie będzie potrzebne), dostaniesz się.
Kolejny chodzi o to, że ludzie często zapominają wspomnieć o tym, co chcą osiągnąć. Bezpieczeństwo ma znane trzy komponenty o nazwie CIA, mianowicie poufność, integralność i dostępność. Czy dla Ciebie ważne jest to, że przesyłane dane są poufne lub czy są ważne dla integralności (np. Masz pewność, że przesłane dane pochodzą od tego, którego oczekujesz, a nie od człowieka w środku)?
W tym przypadku jedyną rzeczą, którą można tu osiągnąć, jest to, że pasywny napastnik nie może zobaczyć, co dzieje się na linii. Gdy tylko atakujący aktywuje się i zmienia wiadomości na trasie, całe twoje bezpieczeństwo się rozpada. Tak więc moją radą byłoby po prostu trzymać się rozwiązania, które wymyślili eksperci (w tym przypadku TLS, a nie ssl, ponieważ jest to stara wersja) i po prostu upewnij się, że twój serwer go obsługuje.
edit:
Btw, SSL/TLS nie może pracować bez certyfikatów. Cały klucz kryptograficzny klucza publicznego polega na tym, że przynajmniej pewna część zaufanej strony powinna być.
Z drugiej strony, jeśli nie obchodzi cię, że Twoi użytkownicy otrzymają wiadomość "nieprawidłowy certyfikat", możesz po prostu stworzyć swój własny certyfikat, który jest naprawdę łatwy. W takim przypadku Twój certyfikat nie jest zaufany przez przeglądarki, ale możesz być pewien, że przynajmniej twoja komunikacja jest bezpieczna (OK, są wyjątki w tym przypadku, ale nadal ...)
Argument, że certyfikaty powinno być za darmo jest rzeczywiście z punktu widzenia perspektywy. Sądzę, że osoby, które twierdzą, że są fałszywe/idiotyczne, nie wiedzą, co to znaczy być urzędem certyfikacji. Firmy te inwestują miliony w celu utrzymania bezpieczeństwa komunikacji i pewności, że zarabiają dobre pieniądze ze sprzedaży certyfikatów, ale hej to ich praca, a także zasługują na zarabianie pieniędzy, tak jak każdy inny.
Edit2: po komentarzach
I rzeczywiście powiedzieć, że masz bezpieczną komunikację. Tęsknisz jednak za tym, że z samopodpisanymi certyfikatami nie wiesz do kogo bezpiecznie rozmawiasz. Wyobraź sobie ciemny pokój, który jest całkowicie odizolowany od podsłuchiwania rozmowy. Teraz wyobraź sobie różnicę między takim pokojem ze światłem i bez niego. Jeśli pokój ma światło, możesz zobaczyć, do kogo mówisz bezpiecznie i tylko wybrać, aby porozmawiać z ludźmi, którym chcesz zaufać. Teraz wyobraź sobie, że robisz to samo w całkowicie ciemnym pokoju. Możesz tylko mieć nadzieję, że facet, z którym rozmawiasz w tym ciemnym pokoju, jest tylko sprzymierzeńcem, a nie przeciwnikiem. Jednak nie możesz tego wiedzieć, po prostu nadzieję, że jest w porządku. I chociaż twoja rozmowa jest bezpieczna, nikt nie może nasłuchiwać, nadal nie masz "pełnego" bezpieczeństwa.
Jeśli ja, będąc oszustem, wykonam atak pośredni, mogę utworzyć samopodpisany certyfikat bez powiadomienia użytkownika. Tak więc zaletą korzystania z TLS z samopodpisanymi certyfikatami jest to, że masz przynajmniej implementację protokołu corrent (a nawet wdrożenie tego nie jest łatwe). Ponadto można uniknąć brzydkich ostrzeżeń, doradzając użytkownikom, aby ręcznie zaufali certyfikatowi raz. Jest to jednak możliwe tylko wtedy, gdy masz stosunkowo małą grupę powracających gości, dla publicznej strony nie jest to rozwiązanie.
Zawsze używaj protokołu SSL/TLS z poprawnymi certyfikatami. Jeśli masz inne powody niż bezpieczeństwo sieci w celu zaszyfrowania loginu (takie jak zapobieganie logowaniu haseł po stronie serwera/awarii/normalne/itp., Które później może odzyskać atakujący), możesz użyć tego: http://stackoverflow.com/questions/12457234/encrypt-in-javascript-decrypt-in-php-using-public-key-cryptography –