Deși vă puteți crea propria funcție hash, cifrul simetric, schema de criptare a cheii publice etc., astfel încât nimeni să nu cunoască designul acesteia, este probabil o idee proastă să vă bazați pe obscuritate (cum a comentat @kelalaka) pentru a obține securitate.
În secolul al XIX-lea, Auguste Kerckhoffs a afirmat un principiu pe care îl numim ca „Principiul lui Kerckhoffs”:
un criptosistem ar trebui să fie sigur chiar dacă totul despre sistem, cu excepția cheii, este de cunoștință publică.
În plus, Maxima lui Shannon a fost formulată și în secolul al XX-lea și precizează că:
ar trebui să proiectăm sisteme pe baza ipotezei că inamicul se va familiariza imediat cu ele
Sau, cu alte cuvinte, atunci când proiectați un sistem pentru securitate, trebuie să presupuneți că atacatorul știe cum funcționează sistemul.
În exemplul dvs. de funcție de hash proprietară, atacatorul ar putea să obțină cumva acces la software-ul sau hardware-ul care calculează o astfel de funcție de hash și, folosind cripto-analiza sau inginerie inversă, va reuși să găsească vulnerabilități, cum ar fi atacurile de coliziune sau recuperarea pre-imagine. tehnici.
Un alt motiv pentru a nu te baza pe tehnici proprietare sau secrete este încrederea consumatorilor: de ce ar avea un consumator încredere că le păstrezi parola (hașată) în siguranță dacă recunoști că securitatea provine din necunoașterea implementării?
Acesta este motivul pentru care, în industrie, primitivele criptografice (funcții hash, cifruri, scheme de semnătură etc.) sunt adesea adoptate doar după o examinare semnificativă din partea comunității științifice. Apoi, RFC-urile și standardele sunt în curs de elaborare, astfel încât vânzătorii și furnizorii de servicii să își poată cuantifica securitatea spunând la ce standard se conformează.