Du latin « clavis » par le radical « clau-dere » (fermer)
L'ancien français connaissait un phénomène que les linguistes nomment « attelage phonétique ». Le « s » du pluriel, en effet, quand il était adjoint à un mot, tendait à en faire disparaître la consonne finale.
Ainsi la consonne « p » : Le « drap » au pluriel s'écrivait « dras ».
La consonne « c » pouvait également disparaître : le « clerc » devenait « clers » au pluriel.
Il en était de même de la consonne finale « f ». On écrivait donc une « clef », mais des « clés » au pluriel.
Telle est donc la bonne orthographe, conforme du moins à l'histoire de la langue. « Clef » prend un « f » au singulier, et n'en prend pas au pluriel.
Le dictionnaire de l'Académie française, dans sa nouvelle édition en cours de publication, accepte les deux formes.