I'll be using AES from OpenSSL. I understand why I don't want to use ECB from reading pages like this Wikipedia article, which has a great example of what happens when you attempt to encrypt with electronic codebook.
But what I'm missing, is some sort of comparison table with all the other modes so I understand the positives and negatives of the various modes. Where can I find this information so I can make an informed decision on what mode to use?
Update 1:
Looks like OpenSSL's EVP api (which I believe is the recommended API when using OpenSSL?) only supports 2 modes [OpenSSL][1] – GCM and CCM – which drastically reduces my choices.
1: https://www.openssl.org/docs/crypto/EVP_EncryptInit.html
Update 2:
Unsurprisingly, that OpenSSL page is somewhat misleading or incomplete. Looking at /usr/include/openssl/evp.h
I see there are 30+ variations on AES to choose from, including:
EVP_aes_*_ecb()
EVP_aes_*_cbc()
EVP_aes_*_cfb1()
EVP_aes_*_ofb()
EVP_aes_*_ctr()
EVP_aes_*_xts()
- ...and many more!
So I'm back to reading about all the different modes so I can make a semi-intelligent choice as to which I should be using.