Is it insecure to pass initialization vector and salt along with ciphertext?

Viewed 4261

I'm new to implementing encryption and am still learning basics, it seems.

I have need for symmetric encryption capabilities in my open source codebase. There are three components to this system:

  • A server that stores some user data, and information about whether or not it is encrypted, and how
  • A C# client that lets a user encrypt their data with a simple password when sending to the server, and decrypt with the same password when receiving
  • A JavaScript client that does the same and therefore must be compatible with the C# client's encryption method

Looking at various JavaScript libraries, I came across SJCL, which has a lovely demo page here: http://bitwiseshiftleft.github.com/sjcl/demo/

From this, it seems that what a client needs to know (besides the password used) in order to decrypt the ciphertext is:

  • The initialization vector
  • Any salt used on the password
  • The key size
  • Authentication strength (I'm not totally sure what this is)

Is it relatively safe to keep all of this data with the ciphertext? Keep in mind that this is an open source codebase, and there is no way I can reasonably hide these variables unless I ask the user to remember them (yeah, right).

Any advice appreciated.

1 Answers
Related