Hybrid Commitments and their Applications to Zero Knowledge Proof Systems