Tengo curiosidad por esto. Vi este hilo:
¿Por qué no deberíamos hacer rodar el nuestro?
y esta respuesta:
que contenía este comentario, que tenía el segundo número más alto de votos y que no puede ignorarse simplemente:
"El mayor problema que observo entre los programadores principiantes es que no toman en serio los riesgos de seguridad. Si menciono qué tipo de debilidades tiene algún sistema, la respuesta común es poner los ojos en blanco ... Los ataques son reales y Ocurre, y si ni siquiera puede aplicar la seguridad adecuada en la escuela, ¿cómo se supone que su aplicación saldrá cuando está disponible para cientos de clientes?: / La única forma de convencerlos es, por lo general, proporcionar ejemplos y, lo mejor de todo, una demostración en vivo. Entonces, si tiene ejemplos ... ¡Creo que sería una buena adición! "
Esto me hace preguntarme, entonces. El contexto de esta discusión fue sobre el software o algoritmos criptográficos "propios" y por qué, en general, es una mala idea debido a las numerosas vulnerabilidades de seguridad que se pueden crear sin la experiencia adecuada (y parece que Sea un aire fuerte que esto no solo se aplica a la creación de sus propios cifrados per se, sino también de implementando cifrados, codificados en su propio código) que pueden hacer que el producto sea considerable. Menos seguro de lo que debería ser, o anuncia ser. Y la preocupación es, por supuesto, eminentemente razonable. Más aún, la cantidad de experiencia requerida es aparentemente bastante grande; de acuerdo con una historia que escuché sobre esto hace mucho, mucho tiempo, alguien dijo una vez (¿creo que fue Bruce Schneier?) Que no (se aproximarían) "confiarían en nada" Crypto escrito por cualquier persona que no haya "ganado sus huesos" primero al pasar mucho tiempo rompiendo códigos ".
El problema, sin embargo, es que si bien entiendo esto en relación con el software cryptographic , el comentario anterior plantea un punto que sugiere que esto conlleva implicaciones que son enormemente más generales En este sentido, los problemas de seguridad se aplican al software all y, por lo tanto, el desarrollador del software any debe tener en cuenta la seguridad sin importar lo que sea, incluso si no explícitamente criptográficos o no estamos escribiendo explícitamente partes criptográficas (por ejemplo, considere la frecuencia con la que un exploit de búfer aparece en varios softwares de uso general como navegadores web y algún cracker lo golpea para hacer daño, especialmente Robo de información y / o dinero. Parece que, intuitivamente, hay una obligación básica de ética por parte de cualquier desarrollador de software que va a liberar un código que será utilizado por el público en general, para asegúrese de que cumpla con algún estándar de seguridad "razonable", incluso si no es específicamente un código de "seguridad" . Si un código de liberación que uno sabe puede ser inseguro, entonces uno está actuando de una manera que, de nuevo, muy razonablemente , podría interpretarse como que contiene negligencia no ética.
Y eso es lo que me preocupa. Porque, en última instancia, ya que no puede simplemente "pre-fabricar" todo el software de (como entonces, ¿cuál sería el punto de desarrollo de cualquier software? tendrá que rodar al menos ALGUNA VIGENCIA de seguridad) incorporando el código por tu cuenta . Tienes que tirar tu propio , te guste o no, y eso significa que se necesita experiencia . Entonces, la pregunta es: si seguimos el dictamen de no "rodar el propio" en la medida en que se aplica a específicamente el código relacionado con la seguridad, como el cifrado, PERO tenemos que rodar nuestro propio código como parte del desarrollo de la aplicación TODOS , entonces, ¿cuánta experiencia en seguridad necesitamos como programadores de aplicaciones generales para cumplir con ese límite ético intuitivo? Parece que la cantidad debe ser "más que cero" pero (¡con suerte!) "Menos que la de un experto en seguridad informática" del calibre que desarrolla los algoritmos de cifrado reales (como AES, etc.) que se convierten en estándares mundiales. Pero, ¿cuál es esa cantidad y a qué extremo de ese espectro está más cerca, y qué se necesita exactamente para aprenderla?