In Unity 3 with "Open compiled shader" which can give the way to protect shaders for deskstop.But porting to IOS/Android,GLES shaders are complete open source.
I guess you could obfuscate the source code by some algorithm (maybe a simple xor algorithm, or maybe some more exotic encryption method) and create the shaders during game start through code. You should take your encrypted code and decrypt before passing this to methods that create a shader. I haven't done iPhone or android coding so I don't know if there are any differences in how shaders are created though.