The manage data operation allows binary values to be associated with an account. The documentation doesn't mention any upper limit to this data, but there surely must be. What is the limit? Or does the extra reserve needed to store data scale with the size of the data?
It can contain up to 64 bytes.
typedef opaque DataValue<64>;
You can add as many data entries to the account as you want but the account needs to hold a minimum balance required by the network. Currently you need to hold additional 0.5 XLM for each data entry.