Could you elaborate on the potential drawbacks of utilizing zero-knowledge proofs in various applications? Are there any security concerns or limitations that one should be mindful of when implementing these proofs? Furthermore, how might the computational demands of generating and verifying zero-knowledge proofs affect their scalability and practical usage in large-scale systems?