CSEc Erasekey

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

CSEc Erasekey

Jump to solution
2,276 Views
xiaoweix
Contributor III

CSEc 擦除密钥用到的KDF函数,从一个密钥生成一个密钥,这个函数里面用到的master euc key可以是M1-M3吗,还是必须是明文?For the KDF function used in CSEc key erasure, which generates one key from another key, can the master euc key used in this function be M1-M3, or must it be plaintext?

0 Kudos
Reply
1 Solution
2,229 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@xiaoweix

是key不是M值,KDF函数的参数命名方式写的也很清楚,Authkey,不是M值。

View solution in original post

0 Kudos
Reply
7 Replies
2,246 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@xiaoweix

首先不能单独的对任何一个密钥进行擦除操作, 只能通过CSEc模块恢复出厂设置的命令擦除所有的密钥 。

 

 

 

所以我们可以看看我们提供的回复出厂设置命令的示例工程:你可以看到KDF的输入是MasterEcuKey而不是M值。Senlent_0-1763435900191.png

 

0 Kudos
Reply
2,241 Views
xiaoweix
Contributor III
@nxp TechSupport Senlent非常感谢您的回复,但我还是有点不明白,官方给的KDF函数展开,用的是36.5.13.28 CMD_MP_COMPRESS这个命令,Parameter Direction Width
DATA <n> IN n * 128
PAGE_LENGTH IN 16
MP_COMPRESS OUT 128
输入的DATA不止有128bit,可以n个,那这样是可以把M1-M3加载进去的吗,然后用这个来生成一个临时key,再来计算授权码,然后可以实现回复出厂化设置吗?
0 Kudos
Reply
2,242 Views
xiaoweix
Contributor III
非常感谢您的回复,但我还是有点不明白,官方给的KDF函数展开,用的是36.5.13.28 CMD_MP_COMPRESS这个命令,Parameter Direction Width
DATA <n> IN n * 128
PAGE_LENGTH IN 16
MP_COMPRESS OUT 128
输入的DATA不止有128bit,可以n个,那这样是可以把M1-M3加载进去的吗,然后用这个来生成一个临时key,再来计算授权码,然后可以实现回复出厂化设置吗?
0 Kudos
Reply
2,237 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@xiaoweix

我不知道我们是不是在讨论同一个函数。

KDF函数是自己定义的一个用于计算 M1~M5值的工具函数

KDF(AuthKey, Constant, K_out)

参数AuthKey和 Constant均为 16个字节长度的输入参数, K_out为 32个字节长度的输出

KDF函数功能是将参数 AuthKey和 Constant连接后,使用 CSEc模块的 CSEC_DRV_MPCompress()压

缩算法API,得到输出的 K_out。

整个重置的流程是:

CSEC_DRV_Init(&csec1_State);
Res = CSEC_DRV_InitRNG();
Res = CSEC_DRV_DbgChal(Challenge);
Res = CalculateDbgAuth(MASTER_ECU_KEY,Challenge,DbgAuth);
Res = CSEC_DRV_DbgAuth(DbgAuth);

初始化谁随机数,

生成随机数“Challenge”,

用户将该随机数与MASTER_ECU_KEY 和 UID 一起用于返回授权请求。

如果 CSEc 确认授权,则此功能会删除存储在 NVM 内存中的所有密钥(实际密钥和过期密钥)。

0 Kudos
Reply
2,233 Views
xiaoweix
Contributor III
@nxp TechSupport Senlent非常感谢您的回复,
KDF函数功能是将参数 AuthKey和 Constant连接后,使用 CSEc模块的 CSEC_DRV_MPCompress()压
缩算法API,得到输出的 K_out。
那KDF是只能用明文和Constant连接,不能用密文和Constant连接是吗?
期待您的回复!
0 Kudos
Reply
2,230 Views
Senlent
NXP TechSupport
NXP TechSupport

Hi@xiaoweix

是key不是M值,KDF函数的参数命名方式写的也很清楚,Authkey,不是M值。

0 Kudos
Reply
2,222 Views
xiaoweix
Contributor III
非常感谢
0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2206281%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ECSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206281%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3EFor%20the%20KDF%20function%20used%20in%20CSEc%20key%20erasure%2C%20which%20generates%20one%20key%20from%20another%20key%2C%20can%20the%20master%20euc%20key%20used%20in%20this%20function%20be%20M1-M3%2C%20or%20must%20it%20be%20plaintext%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206483%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206483%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3Eextremely%20grateful%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206460%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206460%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3EHi%40xiaoweix%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EIt's%20the%20key%20not%20the%20M-value%2C%20and%20the%20way%20the%20KDF%20function%20names%20its%20parameters%20says%20it%20clearly%2C%20Authkey%2C%20not%20M-value.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206444%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206444%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F61445%22%20target%3D%22_blank%22%3E%40nxp%3C%2FA%3E%20TechSupport%20Senlent%20Thank%20you%20very%20much%20for%20your%20reply.%20%3CBR%20%2F%3EKDF%20function%20function%20is%20to%20connect%20the%20parameter%20AuthKey%20and%20Constant%2C%20then%20use%20the%20CSEC_DRV_MPCompress()%20of%20the%20CSEc%20module%20%3CBR%20%2F%3Eto%20compress%20the%20algorithm%20API%2C%20and%20get%20the%20output%20K_out.%20%3CBR%20%2F%3EThen%20KDF%20can%20only%20connect%20to%20Constant%20with%20plaintext%2C%20not%20with%20ciphertext%2C%20right%3F%20connection%2C%20not%20ciphertext%20connection%20to%20Constant%2C%20right%3F%20%3CBR%20%2F%3EI%20look%20forward%20to%20your%20reply!%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206434%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206434%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3EHi%40xiaoweix%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EI'm%20not%20sure%20if%20we're%20talking%20about%20the%20same%20function.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThe%20KDF%20function%20is%20a%20self-defined%20utility%20function%20for%20calculating%20M1~M5%20values.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3EKDF(AuthKey%2C%20Constant%2C%20K_out)%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EThe%20parameters%20AuthKey%20and%20Constant%20are%20both%2016%20bytes%20long%20as%20input%20parameters%2C%20and%20K_out%20is%2032%20bytes%20long%20as%20output.%3C%2FP%3E%0A%3CP%3EKDF%20function%20function%20is%20to%20connect%20the%20parameter%20AuthKey%20and%20Constant%2C%20and%20then%20use%20the%20CSEC_DRV_MPCompress()%20of%20the%20CSEc%20module%20to%20press%3C%2FP%3E%0A%3CP%3Eshrinking%20algorithm%20API%20to%20get%20the%20output%20K_out.%3C%2FP%3E%0A%3CP%3EThe%20whole%20reset%20process%20is%3A%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3ECSEC_DRV_Init(%26amp%3Bcsec1_State)%3B%0ARes%20%3D%20CSEC_DRV_InitRNG()%3B%0ARes%20%3D%20CSEC_DRV_DbgChal(Challenge)%3B%0ARes%20%3D%20CalculateDbgAuth(MASTER_ECU_KEY%2CChallenge%2CDbgAuth)%3B%0ARes%20%3D%20CSEC_DRV_DbgAuth(DbgAuth)%3B%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3Einitialize%20whoever%20the%20random%20number%20is.%3C%2FP%3E%0A%3CP%3EGenerate%20the%20random%20number%20%22Challenge%22.%3C%2FP%3E%0A%3CP%3EThe%20user%20uses%20this%20random%20number%20along%20with%20the%20MASTER_ECU_KEY%20and%20UID%20to%20return%20authorization%20requests.%3C%2FP%3E%0A%3CP%3EIf%20CSEc%20confirms%20the%20authorization%2C%20this%20function%20deletes%20all%20keys%20(actual%20and%20expired)%20stored%20in%20the%20NVM%20memory.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206402%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206402%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F61445%22%20target%3D%22_blank%22%3E%40nxp%3C%2FA%3E%20TechSupport%20Senlent%E9%9D%9E%E5%B8%B8%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%9B%9E%E5%A4%8D%EF%BC%8C%E4%BD%86%E6%88%91%E8%BF%98%E6%98%AF%E6%9C%89%E7%82%B9%E4%B8%8D%E6%98%8E%E7%99%BD%EF%BC%8C%E5%AE%98%E6%96%B9%E7%BB%99%E7%9A%84KDF%E5%87%BD%E6%95%B0%E5%B1%95%E5%BC%80%EF%BC%8C%E7%94%A8%E7%9A%84%E6%98%AF36.5.13.28%20CMD_MP_COMPRESS%E8%BF%99%E4%B8%AA%E5%91%BD%E4%BB%A4%EF%BC%8CParameter%20Direction%20Width%3CBR%20%2F%3EDATA%20%3CN%3E%20IN%20n%20*%20128%3CBR%20%2F%3EPAGE_LENGTH%20IN%2016%3CBR%20%2F%3EMP_COMPRESS%20OUT%20128%3CBR%20%2F%3E%E8%BE%93%E5%85%A5%E7%9A%84DATA%E4%B8%8D%E6%AD%A2%E6%9C%89128bit%EF%BC%8C%E5%8F%AF%E4%BB%A5n%E4%B8%AA%EF%BC%8C%E9%82%A3%E8%BF%99%E6%A0%B7%E6%98%AF%E5%8F%AF%E4%BB%A5%E6%8A%8AM1-M3%E5%8A%A0%E8%BD%BD%E8%BF%9B%E5%8E%BB%E7%9A%84%E5%90%97%EF%BC%8C%E7%84%B6%E5%90%8E%E7%94%A8%E8%BF%99%E4%B8%AA%E6%9D%A5%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA%E4%B8%B4%E6%97%B6key%EF%BC%8C%E5%86%8D%E6%9D%A5%E8%AE%A1%E7%AE%97%E6%8E%88%E6%9D%83%E7%A0%81%EF%BC%8C%E7%84%B6%E5%90%8E%E5%8F%AF%E4%BB%A5%E5%AE%9E%E7%8E%B0%E5%9B%9E%E5%A4%8D%E5%87%BA%E5%8E%82%E5%8C%96%E8%AE%BE%E7%BD%AE%E5%90%97%EF%BC%9F%3C%2FN%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206399%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206399%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3EThank%20you%20very%20much%20for%20your%20reply%2C%20but%20I'm%20still%20a%20little%20bit%20confused%2C%20the%20official%20KDF%20function%20given%20to%20expand%2C%20using%20the%20command%2036.5.13.28%20CMD_MP_COMPRESS%2C%20Parameter%20Direction%20Width%20%3CBR%20%2F%3EDATA%20%3CN%3E%20IN%20n%20*%20128%20%3CBR%20%2F%3EPAGE_LENGTH%20IN%2016%20%3CBR%20%2F%3EMP_COMPRESS%20OUT%20128%20%3CBR%20%2F%3EThe%20input%20DATA%20has%20more%20than%20128bit%2C%20it%20can%20be%20n.%20Is%20it%20possible%20to%20load%20M1-M3%20in%20this%20way%2C%20and%20then%20use%20this%20to%20generate%20a%20temporary%20key%2C%20and%20then%20calculate%20the%20authorization%20code%2C%20and%20then%20can%20it%20be%20achieved%20to%20revert%20to%20the%20factory%20settings%3F%3C%2FN%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2206378%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CSEc%20Erasekey%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2206378%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22mailto%3AHi%40xiaoweix%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EHi%40xiaoweix%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EFirst%20of%20all%2C%20it%20is%20not%20possible%20to%20erase%20any%20of%20the%20keys%20individually%2C%20but%20only%20all%20of%20the%20keys%20can%20be%20erased%20by%20the%20CSEc%20module%20factory%20reset%20command.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CP%3ESo%20let's%20take%20a%20look%20at%20the%20sample%20project%20we%20provided%20with%20the%20Revert%20to%20Factory%20Settings%20command%3A%20you%20can%20see%20that%20the%20input%20to%20the%20KDF%20is%20the%20MasterEcuKey%20and%20not%20the%20M%20value.%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Senlent_0-1763435900191.png%22%20style%3D%22width%3A%20705px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Senlent_0-1763435900191.png%22%20style%3D%22width%3A%20705px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F365991i389BCA04E7859101%2Fimage-dimensions%2F705x393%3Fv%3Dv2%22%20width%3D%22705%22%20height%3D%22393%22%20role%3D%22button%22%20title%3D%22Senlent_0-1763435900191.png%22%20alt%3D%22Senlent_0-1763435900191.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3C%2FLINGO-BODY%3E%3C%2FLINGO-BODY%3E