AES encryption without salt and IV I need to encrypt blocks of 16KiB with AES256. I have only one requirement to satisfy - If one day a hacker gets the data without the keys, he will not be able to decipher the data.

According to the design:


Each block will have a different random key
Blocks are differ from each other


Due to a space problem, i'm planning to use no salt and no IV. 


Given 1 + 2, is it still safe to waive the salt and the IV?
Which mode should i use?


Thanks
There are two blocks to consider here. The 16KiB blocks you mention you have to encrypt and the blocks as encrypted by the AES block cipher. Let's call your blocks fragments.

ECB is secure for blocks that are not related to each other in any way. Your fragments, however unique, may still contain blocks that are not unique. If this is the case then ECB will leak information about identical blocks. CBC will overcome this, especially if each block has it's own key.

So:


  Given 1 + 2, is it still safe to waive the salt and the IV?


Yes, but not for ECB; ECB is almost never a good idea.


  Which mode should i use?


CBC or any other mode that is secure for protecting data at rest.



You need an authenticated cipher or MAC if you also require integrity and authenticity. These are basically always required within transport protocols.