Using storage systems outside a company may endanger data security. This leads users to mostly encrypt their information for risk mitigation. Although encryption improves confidentiality, it causes inefficiency such as the encrypted data is not easily searchable. In this paper, data would be stored in a cloud storage provider (CSP) in a way that it is secure and simultaneously searchable. To this end, secure and privacy preserving keyword searching (SPKS) scheme has been employed and since it has a security defect, an improved version of SPKS has been introduced. The improvement consists of embedding an authentication process within the algorithm in a way that avoid imposing any communication overhead. The encryption algorithm employs CSP for partially decryption of the cipher texts. Consequently, the client computational and communication overhead in decryption will be reduced. Although the CSP participates in the deciphering process, we show that it cannot detect any information about the plaintext.