Volume 06

This article deals with importance of safety issues in computer programming. Secure software can only be designed with security as a primary goal. To achieve that we would have to redesign our computer systems with security in our mind including entire computer environment, e.g. hardware, programming languages and, of course, operating systems. In software development process the quality of resulting computer code should be the most important aspect during the whole program development process. Simplicity of the code in computer programs pays off. Extra options and features can result in unmanageable complexity. For computer security purposes, program modularization is of a paramount importance and it seems to be the only way how to properly cope with complexity. Internal consistency of the whole program should be frequently checked via assertions. They are the best way to check parameter validity coming from other program units e.g. modules. Especially each module must distrust everything else coming from other modules and/or from the user. Frequently used code optimizations are classicly leading to some sort of redundant code options and features and thus indirectly causing a useless code complexity. Extensive testing of programs is necessary for finding possible bugs in programs. However it does not locate security holes in the system. Standard software implementation techniques are completely inadequate in the production of a secure code. Consequently an introductory programming course as a college course should be taught in parallel with introductory security of computer systems, since it is too late to teach it as an elective at the end of computer science curriculum. In general, security of computer systems and programming should not be separated as two different and separate disciplines instead they should be integrated together.

Frank Schindler