You will always have such shading artefacts with smooth shading. This has to do with the angles, the normals, and how they are distributed across the mesh.
You could add more geometry to make the effect not so strong. Or use a high poly mesh and bake a normal map for your low poly version.
You can mark sharp edges then use an edge split modifier and an subdivision modifier set the edje split modifier so it splits sharp edges.This way you can add more geometry and reduce these "shadows" Edit:The subdivision modifier goes first and also adding edge creases might help)
This has to do with geometry and how you model holes. If you model the keyhole as I show it and radiate the same geometry out a bit, you can then add as many edge loops you like around the keyhole. By sliding an edge loop close, that sharpens the hole edge as much as you like. Granted your shape is more complicated... but edge loops can make things easier..