# Which are the current solutions to the illegal values in the homomorphic secret sharing?

There is a usual example about homomorphic secret sharing, focused on e-voting. Supposing we use Shamir's scheme for the Secret Sharing system, a participant generates a polynomial whose a0 is +1 (yes), 0 (abstention), or -1 (no), and then distributes the calculated n points to the tellers. Each teller will calculate the sum of every point, and publish the result. Everyone is able to calculate the resulting polynomial, which is equal to the sum of all the generated polynomials by the voters. The secret revealed then, is the sum of every +1, 0, or -1.

One of the vulnerabilities this system has, is that a malicious player could generate a polynomial with a0 = 7893. If the a0 value is out of the {-1,+1} range, it will corrupt the final outcome. Which are the current solutions to this problem? In other words... How is it possible to ensure that the a0 is between a and b, without revealing its value?

This likely does not work for your purposes though --- such a scheme is likely no longer homomorphic (I cannot remember details from the talk currently though). So what do people do in practice? I believe some combination of "standard" Shamir's secret sharing, and a non-interactive zero knowledge (NIZK) proof that $$a_0\in (a,b)$$. This is called a "Range proof" (see for example this).