Leaving your keys in memory is the weakness that could potentially let authorities into your phone. This could harm people. If your phone has rebooted, and you haven’t logged in yet, there are no keys in memory. That means your data is encrypted at rest.
For the sake of comparison, this was also implemented in iOS 18.
Google has broken trust so often, so severely, that it’s the default to not trust anything they do, ever.
If they can, they absolutely will leverage basic security measures for their own benefit. And, it isn’t like there’s no press by governments to backdoor all the things.
So it shouldn’t boggle the mind at all. This is what happens when oligarchs and their servants run amok, nobody can trust anything.
GrapheneOS offers such an auto-reboot feature (18 hours by default, but the users can set it between 10 minutes and 72 hours), while the iPhone picked up something similar with iOS 18.1 (Inactivity Reboot) last year.
I was referring primarily to things that are known to be good security practices and widely known and used already. Keeping data more secure at rest goes with the “don’t trust anything or anyone” goal, and if not doing it on Android due to said trust or lack thereof, then GrapheneOS offers it too at least.
The before first unlocked state is considered more secure, file/disk encryption keys are in a hardware security module and services aren’t running so there is less surface for an attack . When a phone is taken for evidence, it gets plugged into power and goes in a faraday bag. This keeps the phone in an after first unlock state where the encryption keys are in memory and more services that can be attacked are running to gain access.
GrapheneOS has had this feature. Unlocking after a reboot is only possible with PIN. Also the RAM is wiped. This increases security and lowers the risk of attackers gaining access. Be it physically or not.
I dump memory more often than you would think. It’s usually not obfuscated or encrypted in any meaningful way even though it is fairly trivial to do so.
It’s good practice to scour through any bloatware installed on windows laptops. Since bloatware is generally written by the lowest bidder, you can find all kinds of keys and phone-home urls (sometimes with all the parameters) and other weird things. Just fire up a decent hex editor and search for strings in the dump file. You don’t need to know jack about reverse engineering either.
I am often working as reverse engineer professionally and I also feel that mindset is half the battle–a willingness to see everything as data and to look inside to see what is there. Like digital spelunking.
When I started in computers, years ago, I transitioned from QuickBasic directly into assembly. Ever since then, I can kinda “read the Matrix” (Blond, Brunette, Redhead…) and forget about how confusing a raw binary or how a mess of a dmp looks to someone else. (To me, I really just see patterns and nothing massively complicated.)
“It’s just data.” - You would be surprised how fuzzy that statement is for some people. It’s almost exactly like telling someone who doesn’t speak any English that “the sky is blue”. It’s totally cool though! Learning about the internals of any computer is really just a very long chain of “aha moments” as many concepts aren’t intuitive.
I get to spend a surprising amount of time reading and writing assembly. I consider myself so lucky to be able to do this, and it’s true that after enough time you start seeing through it. The human mind is excellent at finding and seeing patterns. Code is no exception. It’s just another kind of data. Even the different compilers have their own flavor after a while.
Curious to me that you began in Basic; my experience is that people continue to see their first language in other languages for some time, and the best reverse engineers I’ve met usually start with something unusual. My hypothesis is that when you start in a weird place, it brings all others closer together so that they appear not so different from each other. The distance between the top of the mountain of code and the deepest valley of flat data doesn’t seem so great if you start with, say, Lisp and you never considered that lists weren’t both code and data.
I come from Matlab, and to this day I can’t see memory as anything but matrices.
I taught myself QuickBasic as it was the only thing I knew that was related to copying C64 BASIC out of magazines. (QBasic was packaged with DOS 3.11 I think and I was able to get a full copy of QuickBasic somehow. That was about +30 years ago? Dunno. I was about 12 at the time.) I didn’t know what other languages were out there besides TurboPascal. I did learn simple Pascal, but that was a short chapter.
I actually met someone else in the area that was learning to code, and of course, we wanted to write a game. The only way to code for a mouse at the time was to write an INT33 handler, so it kicked off our interest in asm. (I still use asm for MCU stuff on occasion, but it’s limited.) I quickly diverged into writing some really nifty… eh… “boot sector code” so that kicked off my career in security.
And yeah, it’s the same phenomenon for me: I just think in terms of bits and bytes getting shifted around and I still refuse to believe in “magic”. (Slight jab at Rust coders there, but in good fun.)
Fast forward to today, I train “kids” fresh out of college as part of my job now. The first thing I do is start giving them weird tasks that require they actually understand how something like an fopen() actually works.
(Funny story. I refused to “show my work” in math class for simple f(x) problems as I viewed it as unoptimized code. Lulz. I was such an autistic dork.)
This sounds less like security
And more like a backdoor
Google can already push apps to your phone at will via their remote installation service. How does this create or open a backdoor?
Leaving your keys in memory is the weakness that could potentially let authorities into your phone. This could harm people. If your phone has rebooted, and you haven’t logged in yet, there are no keys in memory. That means your data is encrypted at rest.
For the sake of comparison, this was also implemented in iOS 18.
Thanks for the voice of sanity. There are so many people freaked out by basic security measures that it boggles the mind.
Google has broken trust so often, so severely, that it’s the default to not trust anything they do, ever.
If they can, they absolutely will leverage basic security measures for their own benefit. And, it isn’t like there’s no press by governments to backdoor all the things.
So it shouldn’t boggle the mind at all. This is what happens when oligarchs and their servants run amok, nobody can trust anything.
I was referring primarily to things that are known to be good security practices and widely known and used already. Keeping data more secure at rest goes with the “don’t trust anything or anyone” goal, and if not doing it on Android due to said trust or lack thereof, then GrapheneOS offers it too at least.
Oh, I get it. I’m looking at switching to graphene despite it needing a Google phone.
I’m just saying that people see Google and changes in an article, it’s not weird for them to immediately assume something hinky is going on
The before first unlocked state is considered more secure, file/disk encryption keys are in a hardware security module and services aren’t running so there is less surface for an attack . When a phone is taken for evidence, it gets plugged into power and goes in a faraday bag. This keeps the phone in an after first unlock state where the encryption keys are in memory and more services that can be attacked are running to gain access.
So hourly reboot is what you’re saying
Depending on your threat model
GrapheneOS has had this feature. Unlocking after a reboot is only possible with PIN. Also the RAM is wiped. This increases security and lowers the risk of attackers gaining access. Be it physically or not.
It’s more like security theater if the phone doesn’t have the latest OS and doesn’t have the necessary hardware to block cellbrite in the BFU state
What hardware do android phones not have making them vulnerable to cellbrite?
I dump memory more often than you would think. It’s usually not obfuscated or encrypted in any meaningful way even though it is fairly trivial to do so.
It’s good practice to scour through any bloatware installed on windows laptops. Since bloatware is generally written by the lowest bidder, you can find all kinds of keys and phone-home urls (sometimes with all the parameters) and other weird things. Just fire up a decent hex editor and search for strings in the dump file. You don’t need to know jack about reverse engineering either.
I am often working as reverse engineer professionally and I also feel that mindset is half the battle–a willingness to see everything as data and to look inside to see what is there. Like digital spelunking.
That, 200%!
When I started in computers, years ago, I transitioned from QuickBasic directly into assembly. Ever since then, I can kinda “read the Matrix” (Blond, Brunette, Redhead…) and forget about how confusing a raw binary or how a mess of a dmp looks to someone else. (To me, I really just see patterns and nothing massively complicated.)
“It’s just data.” - You would be surprised how fuzzy that statement is for some people. It’s almost exactly like telling someone who doesn’t speak any English that “the sky is blue”. It’s totally cool though! Learning about the internals of any computer is really just a very long chain of “aha moments” as many concepts aren’t intuitive.
I get to spend a surprising amount of time reading and writing assembly. I consider myself so lucky to be able to do this, and it’s true that after enough time you start seeing through it. The human mind is excellent at finding and seeing patterns. Code is no exception. It’s just another kind of data. Even the different compilers have their own flavor after a while.
Curious to me that you began in Basic; my experience is that people continue to see their first language in other languages for some time, and the best reverse engineers I’ve met usually start with something unusual. My hypothesis is that when you start in a weird place, it brings all others closer together so that they appear not so different from each other. The distance between the top of the mountain of code and the deepest valley of flat data doesn’t seem so great if you start with, say, Lisp and you never considered that lists weren’t both code and data.
I come from Matlab, and to this day I can’t see memory as anything but matrices.
I taught myself QuickBasic as it was the only thing I knew that was related to copying C64 BASIC out of magazines. (QBasic was packaged with DOS 3.11 I think and I was able to get a full copy of QuickBasic somehow. That was about +30 years ago? Dunno. I was about 12 at the time.) I didn’t know what other languages were out there besides TurboPascal. I did learn simple Pascal, but that was a short chapter.
I actually met someone else in the area that was learning to code, and of course, we wanted to write a game. The only way to code for a mouse at the time was to write an INT33 handler, so it kicked off our interest in asm. (I still use asm for MCU stuff on occasion, but it’s limited.) I quickly diverged into writing some really nifty… eh… “boot sector code” so that kicked off my career in security.
And yeah, it’s the same phenomenon for me: I just think in terms of bits and bytes getting shifted around and I still refuse to believe in “magic”. (Slight jab at Rust coders there, but in good fun.)
Fast forward to today, I train “kids” fresh out of college as part of my job now. The first thing I do is start giving them weird tasks that require they actually understand how something like an
fopen()
actually works.(Funny story. I refused to “show my work” in math class for simple f(x) problems as I viewed it as unoptimized code. Lulz. I was such an autistic dork.)