Cómo abordar las pruebas de software y el cumplimiento normativo para IEC 61508
Los sistemas de software industrial que ejecutan robots de fabricación, ascensores eléctricos e incluso los semáforos de las calles se han vuelto muy complejos. A medida que estos tipos de sistemas aumentan sus capacidades funcionales, se conectan y se vuelven inteligentes, la seguridad ya no es el único desafío a abordar. Protegerse contra amenazas y vulnerabilidades con controles de seguridad es igualmente importante.
¿Está desarrollando software para un sistema electrónico programable de seguridad? Desarrollar software crítico para la seguridad no es fácil, pero hay una manera de superar los desafíos. Automatización mediante prácticas modernas de desarrollo de software CI/CD Puede ser parte de ello. Aprenda a acelerar y reducir costos en la entrega de software que necesita ser seguro, protegido y conforme a IEC 61508.
Puntos clave
¡Comprende la IEC 61508 estándar y estándares de codificación segura relacionados.
Utilizando análisis estático, pruebas unitarias y cobertura de código para sistemas electrónicos programables.
Integración de requisitos regulatorios de seguridad y protección a lo largo del ciclo de vida del desarrollo de software (SDLC).
Seguridad, protección y calidad: un desafío entrelazado
Al desarrollar software para sistemas críticos para la seguridad, la seguridad es la prioridad principal. Un dispositivo debe ser seguro tanto en condiciones normales de funcionamiento como en caso de fallo. Además, debemos considerar posibles usos indebidos y ataques externos. Curiosamente, las prácticas que mejoran la seguridad suelen mejorar también la calidad y la fiabilidad general del software. Errores de programación comunes, como desbordamientos, abusos de memoria y autorizaciones incorrectas, son causas fundamentales de problemas de seguridad, protección y calidad.
Comprensión de IEC 61508
La norma IEC 61508 es una norma fundamental para la seguridad funcional, aplicable en diversas industrias. Ofrece un enfoque sistemático para incorporar funcionalidades de seguridad en los diseños, garantizando que los sistemas fallen de forma predecible y segura. La norma se basa en dos principios fundamentales:
Siguiendo un proceso de ciclo de vida de ingeniería de seguridad: Esto implica adherirse a las mejores prácticas durante todo el ciclo de vida del desarrollo, desde la recopilación de requisitos hasta el mantenimiento y la eliminación.
Enfoque de fallo probabilístico: Este principio utiliza métricas para medir y contabilizar el impacto de seguridad de las fallas del dispositivo, a menudo cuantificadas por niveles de integridad de seguridad (SIL).
Las siete partes de la norma IEC 61508
La norma IEC 61508 está estructurada en siete partes, más un informe técnico (Parte 0):
Parte 0: Introduce conceptos y desafíos de seguridad funcional.
Parte 1: Proporciona una descripción general del ciclo de vida de la seguridad del producto, incluidas las fases de análisis, realización y operación.
Partes 2 y 3: Detallar los requisitos para los ciclos de vida del desarrollo de hardware y software, respectivamente, incluida la determinación de los niveles de integridad de seguridad (SIL).
Parte 4: Contiene definiciones y abreviaturas utilizadas en la norma.
Partes 5-7: Ofrecer pautas y ejemplos para el desarrollo, incluidos métodos para determinar el SIL y documentación de respaldo.
Integración de la seguridad y la protección en el ciclo de vida del desarrollo de software (SDLC)
La aplicación de la norma IEC 61508 requiere un enfoque estructurado del ciclo de vida del desarrollo de software. Esto incluye:
Fase de Requisitos: Recopilar todos los requisitos, incluyendo las necesidades regulatorias y de los clientes, y realizar un análisis de riesgos y peligros. En materia de seguridad, también se debe realizar una evaluación de amenazas y riesgos, que incorpore requisitos como el control de acceso seguro y la protección de datos.
Fase de realización: Esto implica la implementación y verificación del dispositivo. Para el hardware (Parte 2), se sigue un enfoque de modelo en V. Para el software (Parte 3), se centra en los requisitos, el diseño, el desarrollo, la integración, la verificación y la validación.
Fase de operación: Esta fase cubre el mantenimiento y la eliminación del sistema.
Técnicas y herramientas clave para el cumplimiento
Para cumplir con los requisitos de la norma IEC 61508, se recomiendan varias técnicas, cuyo nivel de rigor depende de la clasificación SIL:
Trazabilidad: Establecer una trazabilidad bidireccional entre requisitos, diseño, código y casos de prueba es esencial. Las herramientas pueden automatizar este proceso, ayudando a identificar brechas y a garantizar el cumplimiento de todos los requisitos.
Estándares de codificación: Adopción de estándares de codificación como Misra or AUTOSAR C ++ 14 Ayuda a prevenir errores comunes de programación. Por seguridad, se recomiendan estándares como CERT y UL 2900.
Análisis estático:Herramientas que realizan análisis estáticos Pueden detectar problemas potenciales como desbordamientos, fugas de memoria y errores de puntero en las primeras etapas del ciclo de desarrollo. Idealmente, estas herramientas deberían estar certificadas para su uso en aplicaciones críticas para la seguridad.
Análisis y pruebas dinámicas: Las pruebas unitarias, de integración y de sistema son cruciales. Los casos de prueba deben reutilizarse para las pruebas de regresión a fin de garantizar que los cambios no generen nuevos problemas. Las métricas de cobertura de código, como las de declaraciones, ramificaciones y la Cobertura de Condición/Decisión Modificada (MCDC), ayudan a determinar la exhaustividad de las pruebas.
Herramientas certificadas: El uso de herramientas certificadas para aplicaciones críticas de seguridad es un requisito fundamental. Esto garantiza que las herramientas no introduzcan fallos en el proceso de desarrollo.
Conclusión
El desarrollo de software para sistemas críticos para la seguridad bajo estándares como IEC 61508 presenta desafíos significativos. Sin embargo, al adoptar un enfoque estructurado, integrar la seguridad desde el principio y utilizar las herramientas y técnicas adecuadas, las organizaciones pueden entregar con éxito software confiable, seguro y conforme a las normas. La automatización mediante prácticas de CI/CD puede agilizar aún más este proceso, reduciendo costos y el tiempo de comercialización.