Thanks, Mark. It is really nice to discuss with you.
Now I found its description from NXP's datasheet. The so-called CRP feature actually is protected flash memory to be read via ISP and JTAG, not reloaded user applications.
As a conclusion, the user application has to be authenticated and authorized BEFORE loading. The system has to be a protected environment like COS or Java VM.
If I want to authenticated an user application in MSC device bootloader, then the user application has to embed a random seed, encrpted key in hex code, since I can not embedded extra mutal authentication algorithm in USB transactions. Especially there is no way to authente bootloader in reverse direction.
The other bootloaders like UART/VCP/CDC, DFU, CAN, Eithernet, may introduce mutual authenticaion in bootloader. The MSC host can not either.
If I deploy a 'secure' bootloader, then I can not deploy open source (lite or demo) version in same hardware. It will by hacked anyway. Unless I issue license for them as well.
At last, thanks for your information for hacking. :smileyhappy: In my preivous experience of promoting RFID/ICC, I did meet some people who is working on reverse engineering projects and their "products". It is dangerous to push silicon to extreme conditions sometime, but interesting though.