I will be writing some code to implement a non interactive proof of shuffle. I intend to use it on a voting application that supports Borda voting. The voter must prove that her vote is valid, that is a permutation of 0..c-1 where c is the number of candidates.The vote is encrypted using lifted El Gamal. However the bibliography is huge on shuffle proofs and I am kind of lost. Can you recommend a paper/scheme that is easy to implement, practical and correct of course.
Andrew Neff's verifiable shuffle scheme A Verifiable Secret Shuffle and its Application to E-Voting is implemented by the DeDiS Advanced Crypto Library for Go
A working example program that uses the code is the server from the Riffle anonymous communication system.
Here's a "mostly finished" standalone implementation in Go, including a paper explaining the protocol: https://github.com/cjpatton/shuffle.git