Sie haben bereits mehrere ausgezeichnete Antworten erhalten, obwohl die Antwort von @ TomLeek und @ Iszi (beide übrigens ausgezeichnet) im direkten Widerspruch zu stehen scheint.
Beide machen hervorragende Punkte: Einerseits wird das System durch die Geheimhaltung des Designs nicht sicher, während Sie durch eine öffentliche Überprüfung (möglicherweise) bestimmte Schwachstellen finden können, die Sie nicht berücksichtigt haben. Andererseits tut es nicht wirklich weh, das Design geheim zu halten, solange dies kein Schlüsselfaktor für die Sicherheit des Designs ist.
Beide Seiten sind absolut korrekt - manchmal .
Ich denke, es wäre fair zu sagen, dass beide Seiten im allgemeinen Argument zustimmen würden, dass die Geheimhaltung des Designs die Sicherheit überhaupt nicht direkt erhöht.
Im schlimmsten Fall ist es lediglich verbirgt Sicherheitslücken (die eine gute Sache sein können oder nicht, je nachdem, vor wem Sie sie am meisten verbergen).
Im besten Fall (wo es keine trivialen Schwachstellen gibt, die von aufgedeckt würden Durch das Veröffentlichen des Designs wird die Sicherheit immer noch nicht erhöht. minimiert jedoch die Angriffsfläche .
Minimierung der Angriffsfläche (auch ohne Vorhandensein von eine Verwundbarkeit) ist definitiv eine gute Sache; Dies muss jedoch abgewogen und gegen die Vorteile des Publizierens abgewogen werden (nämlich durch zusätzliche Augenpaare überprüft werden) und den Nachteil, es geheim zu halten - z. die Versuchung, sich darauf als Sicherheitskontrolle (die immer beliebter werdende Sicherheit durch Dunkelheit), als eine Form des Sicherheitstheaters zu verlassen.
Es ist auch erwähnenswert, dass, wie @Tikiman angedeutet hat, die bloße Veröffentlichung des Designs nicht ausreicht, um sicherzustellen, dass es überprüft wird - insbesondere von denen, die in der Lage sind, die Schwachstellen zu finden, und die es auch sind geneigt, sie Ihnen zu offenbaren. In vielen Fällen wird ein veröffentlichtes Design nur von diesen böswilligen Personen mit illegaler Absicht überprüft, sodass Sie nicht den erwarteten Nutzen erzielen. Darüber hinaus weiß man oft nicht einmal, ob sein Design in den oben genannten besten oder schlechtesten Fall fällt.
Fazit: Wie bei so vielen Sicherheitsaspekten lautet die klare Antwort immer noch: Es kommt darauf an .
Hier ist ein eindeutiger Kompromiss zu berücksichtigen - wenn dies ein komplexes Kryptosystem wäre, wäre die Antwort klar; Wenn dies ein implementierungsintensives typisches Unternehmenssystem wäre, wäre eine andere Antwort klar.
Mein Neigen in diesem Fall ist wie bei @Tom gesagt, aber aus den genannten sekundären Gründen - teilweise der anarchischen Benutzerbasis und hauptsächlich dem pädagogischen Ziel.
Beachten Sie, dass dies eigentlich keine wirklichen Sicherheitsaspekte sind - zumindest nicht direkt.
(Oh und was @ Tikimans Punkt betrifft - die Pädagogik hier bedeutet, dass Sie tatsächlich sicherstellen können, dass das Design zumindest von der gesamten Klasse überprüft wird ;-))