The Fates Have Spoken
I'm more prophetic than I realize:
- Probably some major piece of functionality I've missed [that] will extend my deadline by another 6 months.
I wrote that a couple of days ago, and lo, I've found my flaw. While exploring the next steps needed to create a multi-user solution, I realized that people will need their transaction details encrypted. I'd anticipated encrypting Personally Identifiable Information (PII - names, emails, etc.) but naively assumed that transaction details could be saved in plain text. However, certain transactions would be unique enough to identify a user.
I doubt that Slowpoke is going to be the personal financial app for high value targets (or for anyone other than me, really), but here's one scary scenario. Let's assume that I have a very prominent user on the site, Mr. Moneybags. Due to his influence in the community, he's a target of ne'er do wells attempting to manipulate that influence.
Well, let's say that one of these villains discovered he shopped at a specific Starbucks on a specific date and looks up the transaction pattern "Starbucks #12345 Chicago IL". They do a bit more sleuthing and are able to trace an otherwise innocuous shopping spree that identifies him specifically.
Then, the scofflaws hack my database and download the transaction data. They look for an anonymized user id that matches the profile above and then start sifting through other transactions that match that id. Voila! They find a monthly recurring payment to Pornos 'r Us, a perfectly legal, but potentially embarassing, adult material supply store. The cretins then decide to blackmail Mr. Moneybags for their own nefarious aims.
Is this a potentially far-fetched scenario? Perhaps. But people tend to frown on having their financial data exposed, especially when it leads to extortion or scamming attempts that harsh their mellow.
This discovery won't actually prevent my release of v1, since the first version is an attempt to get all declared features working and won't have anyone's financial data other than my own (I'm comfortable enough at such a low footprint that I'm unlikely to be blackmailed or scammed). However, if I'm serious about marketing this to a broader audience - especially with people I don't know - the audience needs to know that their data is safe.
This isn't a blocker that made me have a very drawn out "oh shit" moment, because I always anticipated encrypting some data at rest, but it will require me to re-implement or re-architect a couple of features:
- User specific transaction search - I'll need to decrypt a user's transactions on the fly so they're not searching binary strings that have absolutely no meaning for them.
- Pooled smart categorization - I need to ensure that transaction info in aggregate is sufficiently anonymized.
I've already done some research on how to handle both of the above, but, since it's heavily sourced from Gemini, I need to verify the solutions are real and practical. If they are, I'll run through some technical tutorials and post on some common defense-in-depth strategies that make it harder for hackers to access sensitive data.
Until next time, my human and robot friends.
Comments
Post a Comment