Comprenda los principios generales de seguridad (integridad, autenticación, autoridad) y luego lea algunos libros sobre cómo las personas han estado subvirtiendo estos pilares de seguridad durante milenios y estará a mitad de camino.
Luego lea algunos buenos libros sobre estrategias de diseño y prueba y aprenderá cómo diseñar la capacidad de prueba en su arquitectura.
Ahora llegamos al punto en que pienso en la seguridad. Estoy pensando en cómo puedo validar la fuente de datos, ¿importa si se manipulan los datos, quién es la fuente de datos, qué tan seguro estoy de eso? ¿Cómo podría haber sido alterado, etc ...
Esto afecta el diseño. Los archivos de configuración pueden tener secciones clave encriptadas, o campos particulares pueden estar en texto claro con un campo de firma asociado. Las cosas se vuelven más complejas con los servicios orientados a Internet, ya que debería esperar un mayor nivel de hostilidad allí.
Luego, en las pruebas, ¿cómo se prueba todo esto? ¿Cuáles son sus entradas de datos máximas, qué sucede si empuja el software más allá de esos límites, cómo lo maneja? ¿En qué confía? ¿Cómo puedes fingir esa confianza?