Friday, October 15, 2010
Security must be based on a solid (security) architecture
Wednesday, July 28, 2010
Robustness and resilience of large distributed applications and networks
In the area of clouds and large distributed automation and control networks, we need to deal with a vast number of (growing) endpoints integrated in the (dynamic) system. It is probably a misconception to assume that all these peers could be protected comprehensively at any time. Hence, it must be an important objective that the protection of the entire system must not depend on the security status (pertaining integrity, confidentiality and availability) of each and every endpoint. In other words, a compromised node must not affect or infect the stability and protection of the entire distributed system. This shall be adressed in the system and security architecture and needs to be defined (and tested !) as a crucial requirement. A (layered) defense in depth, as a general design principle, can help to meet this requirement. In addition, intrusion detection, prevention and a quick isolation of the compromised node can help to minimize the overall impact. Plan for failure is the underlying principle to implement this efficiently. Beside these classical security precautions and controls, a robust design as well as adequate redandancy mechanisms for critical subsystems can support the system stability.
Tuesday, June 22, 2010
Security in large distributed networks (aka Smart Grids)
Wednesday, June 02, 2010
Test your security!
- Document all functional and non-functional requirements and develop use case scenarios base on it (a picture helps a lot !)
- Invite security professionals for support and guidance
- Conduct a comprehensive threat assessment based on a well documented system architecture and (preferable) a security architecture (invite all relevant stakeholders: product management, architects, developer, test folks, …)
- The architecture must support flexible patch and update management
- Review the resulting design, at least the security relevant components
- Check on all 3rd party components in detail to identify known weaknesses; if so, look for alternatives
- Provide and teach (!) secure coding and secure design principles to the team
- Make sure that the team has enough time to learn and to apply such rules and principles (project management must plan accordingly!)
- Test all functional security requirements accoring to your test specification (use well documented requirements and use case scenarios to specify test cases)
- Use tools to check your code to identify flaws and derivations from your guidelines mentioned above
- Apply code review if tools are not sufficient
- Use a realistic test environment (set up) to run a kinda black box test based on tools (fuzzer, etc.)
- Test especially all user interface (focus on web based interfaces) as well as communication stacks
- Document all testing results and establish a rating based on criticality
- Communicate and share your experience
