  With the emergence of cloud computing services, computationally weak devices
(Clients) can delegate expensive tasks to more powerful entities (Servers).
This raises the question of verifying a result at a lower cost than that of
recomputing it. This verification can be private, between the Client and the
Server, or public, when the result can be verified by any third party. We here
present protocols for the verification of matrix-vector multiplications, that
are secure against malicious Servers. The obtained algorithms are essentially
optimal in the amortized model: the overhead for the Server is limited to a
very small constant factor, even in the sparse or structured matrix case; and
the computational time for the public Verifier is linear in the dimension. Our
protocols combine probabilistic checks and cryptographic operations, but
minimize the latter to preserve practical efficiency. Therefore our protocols
are overall more than two orders of magnitude faster than existing ones.
