Mark M. | has entered the room |
Mark M. | turned on guest access |
Feb 2 | 7:35 PM |
Tad F. | has entered the room |
Tad F. |
Hi Mark!
|
Mark M. |
hello, Tad!
|
Mark M. |
how can I help you today?
|
Tad F. |
I am working my way through the long list of getting ready for production, and am reviewing options for securing my app.
|
Tad F. |
So we are talking obfuscation and encryption.
|
Tad F. |
For an "open beta" on Google, I was hoping to get by with ProGuard but I need something that can encrypt strings.xml and other resources.
|
Tad F. |
Know of anything that isn't outrageously expensive?
|
Mark M. |
the only tool that I know of that does what you describe is DexGuard
|
Tad F. |
I've looked at DashO, DexGuard and AppDome, which are all increasingly expensive
|
Tad F. |
Which is fine for production, but I'm trying just to target a few hundred users initially and don't need to spend 1000's until the testers tell me it's a go.
|
Tad F. |
I was hoping you might know of some library or some such that could handle the resource encryption piece...
|
Feb 2 | 7:40 PM |
Mark M. |
why do you feel that you need to encrypt resources? anyone who wants them can still get them -- those tools add speed bumps but don't really stop anyone
|
Tad F. |
Really? I would think good 128bit or 256 bit encryption would make quite a bump.
|
Mark M. |
for example, suppose that you are concerned about API keys -- an attacker would just get them by examining the Web service calls
|
Tad F. |
Well - I would assume those would be encrypted also, and unencrypted on the fly... at least, that's what those 3 products claim to do.
|
Tad F. |
And the website calls are https, so presumably they can't listen in over the wire either.
|
Mark M. |
they are encrypted "at rest", in the APK file
|
Mark M. |
and HTTPS traffic can be trivially intercepted if you have access to the phone
|
Tad F. |
Actually, all three talk about support for both static and dynamic protection.
|
Mark M. |
I do it with Charles Proxy all the time as part of app development
|
Tad F. |
Hmmm..ok so you think encryption is basically a waste of time?
|
Mark M. |
I would not worry about resource encryption, personally
|
Tad F. |
so strings.xml or the same thing with all my static string constants in "Globals.java"?
|
Feb 2 | 7:45 PM |
Tad F. |
I do have the web end of things somewhat protected in that every call looks for a token prior to doing what it does, and the token is generated on the fly by the app, not stored anywhere, and only good for a certain amount of time.
|
Mark M. |
that helps a bit for your own Web service
|
Tad F. |
But I was just nervous at having the web API completely open.
|
Tad F. |
All my app keys and so forth I use for validation to Facebook, Google, etc are on the webserver, not in the app, but I still was nervous about some of the other strings.
|
Tad F. |
Facebook for example, requires an ID be in strings.xml in order to use their login widget.
|
Mark M. |
isn't that Facebook'
|
Mark M. |
sorry -- isn't that Facebook's problem if somebody sees that ID?
|
Tad F. |
Well, ultimately it is my app's problem even if it is a Facebook generated issue.
|
Mark M. |
how so? what are you expecting to happen? note that I have never integrated Facebook authentication
|
Feb 2 | 7:50 PM |
Tad F. |
Well, nobody could use that ID to hack into someone's FB account, but they could use it to wreak havoc on my app's relationship with Facebook.
|
Tad F. |
presumably.
|
Tad F. |
I don't pretend to know all the ways someone could screw with my app's account on FB with just the ID, but I know for sure they can't if they don't know which ID to hit.
|
Mark M. |
in the end, if you want to apply resource encryption, and you are not worried about problems coming from the resource encryption itself, go ahead and apply it
|
Mark M. |
I'm simply saying that, in all likelihood, they will get that ID in 5 minutes anyway
|
Tad F. |
yeah - well back to my original question :)
|
Tad F. |
Curious if you knew of any open source libs just for that aspect, sounds like the answer is "no".
|
Mark M. |
frankly, I have never looked, but I have not heard of any, either
|
Tad F. |
I couldn't find any through various searches. Bunch of options for doing dynamic encryption/decryption of strings in an app, but nothing to hit the APK or AAB file.
|
Tad F. |
I did find some interesting studies that crawled various distribution points (i.e. Google Play Store) and identified how many apps are obfuscated and/or encrypted vs. those that aren't
|
Feb 2 | 7:55 PM |
Tad F. |
Here was one interesting one from a couple years ago: https://cpb-us-e2.wpmucdn.com/faculty.sites.uci...
|
Tad F. |
Focuses more on obfuscation than encryption though...
|
Mark M. |
obfuscation is the focus of a never-ending war with de-obfuscators
|
Feb 2 | 8:00 PM |
Tad F. |
Hey another question for you - any opinion one way or the other which has more long term momentum for cross platform (Android/iOS) work: Flutter vs. Kotlin multi-platform?
|
Mark M. |
how long is your "long term"? 2 years? 5? 10?
|
Tad F. |
5
|
Tad F. |
5-10
|
Tad F. |
10 is too long. Who the hell knows for 10
|
Tad F. |
call it 2-5
|
Mark M. |
in a 5-year horizon, my biggest concern would be Google electing to de-fund the effort -- while the community is big enough to attempt to pick up the slack, it will be a huge momentum dain
|
Mark M. |
er, drain
|
Tad F. |
And they focus more on the Kotlin side?
|
Mark M. |
there, it's more a JetBrains thing
|
Mark M. |
and Kotlin is a pretty big piece of their puzzle
|
Mark M. |
however, you have to create the iOS UI outside of Kotlin, at least presently
|
Mark M. |
KMP is about handling 80% of your logic in common between platforms, and doing something native for the remaining 20%
|
Mark M. |
with Flutter, it's end-to-end within their environment
|
Feb 2 | 8:05 PM |
Mark M. |
the benefit is that you don't have to do a hunk of Swift for an iOS UI
|
Tad F. |
Right, I would wonder if there are any articles/studies done that give a sense if whether you have actually saved any $ doing that.
|
Tad F. |
vs. native on both platforms
|
Mark M. |
possibly, but it's kinda early on the KMP side -- that sort of analysis might be more practical this year than last year
|
Mark M. |
my hope, for the sake of the Flutter folks, is that Google would scale back their involvement gracefully
|
Tad F. |
I guess Google and Oracle are still in the fight over the Java thing, right? I've been wondering for a while if that wasn't a big reason for the Kotlin push by them.
|
Mark M. |
I would not be surprised if that's part of it
|
Tad F. |
OK - well I'm going to sign off, stay healthy and thanks as always for your input!
|
Mark M. |
happy to help!
|
Feb 2 | 8:20 PM |
Tad F. | has left the room |
Feb 2 | 8:25 PM |
Mark M. | turned off guest access |