Ben
You can't stop any code that runs on the processor having access to the decrypted content of the QSPi flash.
The idea is that you don't allow any code to run that you don't know where it is from, whether encrypted or not. That is where authentication comes in and so adding authentication checking before allowing any such code to operate means that you are effectively ensuring that only trusted code can run.
As comparison: if you fully secure code to run in QSPI using on-the-fly decryption but you allow someone to smuggle malware into that code (that is, you don't have full control and knowledge of what it is actually doing) your compete system is just as compromised, even if all of the technical steps are correct.
The fact that you install a second code that can access the content of the first, whether encrypted or not, doesn't compromise as long as you can be absolutely sure that it doesn't do anything that you don't want it to be doing with it. If it is "possible" to load and operate code that you haven't fully under your control you have already lost - so this is where you must close the security hole by never allowing the system to accept executing any code that can't be proven to be from a trusted source and and can't be proven to have not been manipulated.
Regards
Mark
[uTasker project developer for Kinetis and i.MX RT]
Contact me by personal message or on the uTasker web site to discuss professional training, solutions to problems or rapid product development requirements
For professionals searching for faster, problem-free Kinetis and i.MX RT 10xx developments the uTasker project holds the key