Tuesday, October 19, 2010
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
Friday, April 23, 2010
Divide and Protect
Divide and protect is one option to secure large distributed systems. The concept of Divide and Protect is about the compartmentation of a system into functional blocks with identical requirements in terms of security and privacy. It supports a defense in depth strategy, and it helps to handle the complexity of large installations. The compartmentation of a given system leads to security zones with different levels of trust that should be outlined in a digram. Based on such diagram (red = not trusted, .., green = trusted), the system architecture can be developed in a comprehensive manner. This is especially true for the communication architecture and the selection of appropriate protocols. By using this approach, non-functional requirements can be addressed in the early beginning of the product development process which means no change (requests) later on.
Thursday, January 21, 2010
Failure is an option
Tuesday, November 24, 2009
Success criterions for development projects
- Precise, high quality requirements based on strong user involvement
- A motivated and skilled team with the ability to learn constantly
- Flexible and realistic project management
- An open and innovative environment which understands the fact that software development is a heuristic process and which accepts failure
Saturday, October 31, 2009
Security Architecture – an approach to outline a framework
- Security Infrastructure [ Communication and Network Security, Perimeter Security, …]
- System Security Services [ Access Control, Identity Management, Credential Management, Audit, Backup and Recovery, …]
- Application Security [ Operation Systems, Databases, Web and Application Server, SaaS, Enterprise Applications, Collaboration, and Messaging, … ]
- Service Security [ System Maintenance, System Operation, Change Management, Incident Management, Event Management and Forensics, …]
- Security Management [ Policies and Roles, Risk Management, Training and Awareness, … ]
Saturday, October 24, 2009
Quality of Non-Functional Requirements
As already outlined, non-functional requirements are a crucial success criterion in distributed systems (and in software development in general). These requirements need to be prioritized in order to focus on the main use-cases of the system. Beside prioritization, using a clear syntax is important as well because non-functional requirements tend to be fuzzy. This limits the acceptance during development. Like their functional siblings, non-functional requirements should adhere to the following criterions as well:
- Clear and non-ambiguous
- Described by using simple and consistent terminology which is well-known by all stakeholders
- Testable at the end of the day in order to achieve a measurable outcome
- Traceable from the beginning until the end (architecture, design, implementation, test, roll-out)
- Technical feasible considering the tools and systems that are part of development and deployment scenario
- Realistic in realization which depends on the planning horizon, the skill-set and location(s) of the team, the infrastructure and the development environment
Ideally, a designated requirement manager and a software architect are the perfect team members to make this happen. All stakeholders should agree on this proceeding in the beginning and are asked to monitor the adherence over the whole lifetime. “Lessons learned” are a good approach to refine this process. Good and bad examples should be used to tune a successful requirement management to perfection.
Friday, October 23, 2009
Defeating OCSP – is it that ez?
Friday, August 21, 2009
More on Software Architecture – Architectural Styles
Tuesday, August 04, 2009
Software based Transactional Memory
Friday, July 24, 2009
Security in the scope of Software Architecture
- Secure Components
- Secure Infrastructure and Services
- Secure Execution Environment
- Secure Network Environment (zones, compartments, sandboxes)
- End-to-End Security (supported by services like identity, authentication, authorization, auditing)
- Secure Operation (Logging, Import/Export, Backup/Restore) and Security Appliances
The approach addresses common security paradigms like “Layered Defense”, “Security in Depth” as well as general design objectives (modularity, consistency, extensibility, robustness). These building blocks are the foundation for a security architecture where security controls can be applied. Just to drill a little bit down. Secure components can be characterized as in the following:
Design and composition of components are essential steps to meet the requirement for a sustainable architecture. Components must be secured in accordance with recommended practices. Design and implementation must adhere to security principles, design patterns and coding rules. They must be configured according to the security policies of the organization. Remember the weakest link paradigm; one weak component could compromise the security of the whole architecture. Components that expose interfaces to the “outside world”, like user or communication interfaces are especially under attack or even the entry point for an intruder. This must be considered when specifying, designing and developing these entities. And, interfaces must be well-defined to support an integrative approach in order to achieve end-to-end security. The overall security requirements for the component design should be derived from general security objectives such confidentiality, integrity, availability, and accountability.
Wednesday, July 22, 2009
Software Architecture and Requirement Management…
- Customers (FR)
- Existing Platforms, Mainline (FR), (NFR)
- General Market Requirements (NFR)
- Standards and Regulations (FR)
- Best Practice and Patterns (NFR)
- Quality Attributes, preferably prioritized, utility trees are recommended (NFR)
As a result, the “Architecture Specification” should reflect all requirements as well as their importance and emphasis in the project. Any mismatch (or even missing requirement) can be detected in the scope of a review or even a architecture test. This is good news because it avoids very expensive changes in later steps of the software development process.
Tuesday, July 21, 2009
Software Architecture (is alive and kicking)
Software Architecture is the highest level in the area of software development (but it is not superficial or shallow, not at all). Software Architecture is the foundation for all the other more detailed development steps that will follow in the life cycle of a system. Because of its early position in this process, Software Architecture is an important success criterion. And because of this fact, it should be tested, at least by a very detailed review. In order to be testable, Software Architecture must be documented, preferable in a single document called the “Architecture Specification” based on well-defined views. Diagrams and figures are mandatory. The quality of the Software Architecture affects the quality of the whole system in creation predominantly. A well documented and widely teached Software Architecture is a perfect guidance for the development team. Project management needs it to make parallel development on components happen. It is highly recommended to communicate the Software Architecture to all other relevant stakeholders: Customers, 3rd Parties, Marketing, Operations & Services, and Test Teams. More is about to come …
Tuesday, June 30, 2009
Firefox 3.5 is just around the corner
- HTML 5.0 support - which includes offline data storages & access (I got still my security concerns.), video and audio support which makes plug-ins obsolete (sure, it needs the supported format/codecs) and other features
- A new JavaScript Engine – which is one reason for the significant increase in performance
- Privacy Support – it helps to limit the data you leave behind when browsing around; the private browsing mode allows this (no cookies, no history, no caching, no auto-filled stuff)
- Enhanced Search Capabilities – added to the existing URL bar capabilities that are manifold and fast
- Geo-awareness – web apps that need this information can fetch the data from Firefox 3.5 (sure, this needs your okay to do so)
- Many other changes and enhancements that make browsing the web more fu
If you like Firefox, go ahead and upgrade to version 3.5. The new version should be available by the end of the day.
