Ya has recibido varias respuestas excelentes, aunque las respuestas de @TomLeek e @ Iszi (ambas excelentes por cierto) parecen estar en contradicción directa.
Ambos tienen excelentes puntos: por un lado, mantener el secreto del diseño no hará que el sistema sea seguro, mientras que revisarlo públicamente le permitirá (posiblemente) encontrar ciertas vulnerabilidades que no había considerado; por otro lado, no hace daño mantener el diseño en secreto, siempre y cuando no sea un factor clave en la seguridad del diseño.
Ambos lados son absolutamente correctos, a veces .
Creo que sería justo decir que ambas partes en el argumento general estarían de acuerdo en que mantener el diseño en secreto no aumenta directamente la seguridad.
En el peor de los casos, simplemente oculta las debilidades de seguridad (lo que puede o no ser algo bueno, dependiendo de a quién consideres que está más oculto).
En el mejor de los casos (donde no hay vulnerabilidades triviales que serían expuestas al publicar el diseño), todavía no aumenta la seguridad, pero sí minimiza la superficie de ataque .
Minimizar la superficie de ataque (incluso sin la presencia de una vulnerabilidad) es definitivamente algo bueno; sin embargo, esto debe sopesarse e intercambiarse con los beneficios de la publicación (es decir, ser revisado por conjuntos de ojos adicionales), y la desventaja de mantenerlo en secreto, por ejemplo. la tentación de confiar en él como un control de seguridad (la seguridad siempre popular por la oscuridad), como una forma de teatro de seguridad.
También vale la pena señalar que, como se aludió a @Tikiman, el simple hecho de publicar el diseño no es suficiente para asegurar que se revise , especialmente por aquellos que son capaces de encontrar las vulnerabilidades y quienes también lo son. Dispuesto a revelarlos a usted. En muchos casos, un diseño publicado solo sería revisado por aquellos individuos malintencionados con intención ilícita, por lo que no lograría el beneficio esperado. Además, a menudo uno ni siquiera sabe si su diseño cae en el mejor o el peor caso mencionado anteriormente.
Por lo tanto, en resumen, como en muchas cosas en materia de seguridad, la respuesta directa sigue siendo: Depende .
Aquí hay que considerar un compromiso definitivo: si se tratara de un sistema criptográfico complejo, la respuesta sería clara; Si se tratara de un sistema empresarial típico de implementación pesada, una respuesta diferente sería clara.
Mi inclinación en este caso es como dijo @Tom, pero por las razones secundarias mencionadas, en parte la base de usuarios anárquicos, y principalmente el objetivo pedagógico.
Tenga en cuenta que estas no son realmente consideraciones de seguridad, al menos no directamente.
(Ah, y en cuanto al punto de @ Tikiman: la pedagogía involucrada aquí significa que realmente puede asegurarse de que el diseño sea revisado, al menos por toda la clase ;-))