In this paper, we present a simple and generic construction of systematic authentication codes which are optimal with respect to several bounds. The construction is based on error correcting codes. The authentication codes provide the best level of security with respect to spoofing attacks of various orders, including the impersonation and substitution attacks. The encoding of source states and the authentication verification are very simple and are perhaps the most efficient among all authentication systems.