I believe we have defined "N" to always point toward the incoming ray. This is usually what you want for shading calculations.
You can use the "backfacing()" function to find out if you actually hit the backside of the polygon or not. However, I don't believe this is currently exposed via getmessage() for trace calls. The response to that call is implemented on the renderer side, so you would have to request that extension from the Arnold team.