This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF:用于安全文件的令牌保存方式或位置(SL_FS_CREATE_SECURE)

Guru**** 2483955 points
Other Parts Discussed in Thread: UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1280660/cc3220sf-how-or-where-to-save-tokens-used-for-secure-files-sl_fs_create_secure

器件型号:CC3220SF
主题中讨论的其他器件:UNIFLASH

大家好!

我的任务是以安全格式保存 SFLASH 上的一些文件、以便攻击者在对我的设备进行物理访问时无法读取这些文件的内容。

我计划设置文件系统标志 SL_FS_CREATE_SECURE。 为简单起见、我还将设置 SL_FS_CREATE_NOSIGNATURE 和 SL_FS_CREATE_STATICKEN。  
我的问题是、我不知道在哪里保存每个文件的令牌、以便从固件角度保持对这些文件的访问、而是防止入侵者对这些文件进行隐藏。

我的计划是否很好? 我是否可能遗漏了一些重要内容? 我没有找到任何好的示例、文档 swra509c 未提供此主题的信息。

提前感谢您的帮助!

Jiří

稍后添加:

我不打算使用 SL_FS_CREATE_VENTER_TOKEN 标志。 我想使用由 SimpleLink 提供的令牌。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    答案可能在这里:  

    https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/905464/cc3220sf-secure-file-encryption-on-gang-image?tisearch=e2e-sitesearch&keymatch=security%2525252520token#

    我会在闪存中创建一些供应商令牌、整个闪存都将加密。 因此、一切都应该免受外部攻击。

    我对吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!Jiří

    否。 该主题讨论了另一个主题(将加密映像进行 Gang 编程到 SPI 芯片并在稍后激活)。

    为什么不在固件中使用硬编码令牌? 如果您的器件处于生产模式、这种方法应该是安全的。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jan、

    感谢您的回复!

    我通常选择默认的巴哈维尔。 在这种情况下意味着不使用  SL_FS_CREATE_VENTER_TOKEN 标志。
    因此、我会与团队沟通、这将是解决方案。 令牌的生成方式必须由管理人员决定。

    我看到我们的项目不使用解密图像根据 6.7.1在 swru469中创建加密图像
    我已经在这个用例中思考过了。 (我仍然不清楚这是为了什么、但我不需要知道一切。)

    Jiří

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jan、您能给我更多帮助吗?

    我的理解是否正确、即 当我要确保攻击者无法读取该文件时、需要使用标志 SL_FS_CREATE_VENTOR_TOKEN? 为什么处于生产模式的器件不足以实现此目的?  

    Jiří

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!Jiří

    在文件系统处于生产模式时对"文件分配表"进行加密、并使用标志 SL_FS_CREATE_SECURE 创建文件。 其他文件未加密。 这意味着、外部闪存芯片读卡器/编程器可以从 SPI 闪存读取未加密的文件。 标志 SL_FS_CREATE_VENTOR_TOKEN 用于控制文件访问。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jan、

    感谢您的答复。 我对标签进行了误操作、想引用  SL_FS_CREATE_SECURE。

    但你的答案对我来说很清楚。

    我将使用标志 SL_FS_CREATE_SECURE 和 SL_FS_CREATE_VENTER_TOKEN 、并在 fimware 中创建硬编码令牌。

    此致

    Jiří

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!Jiří

    是的、如果 OTA 过程安全、这是安全的方法。 例如、除非未添加额外的加密层、否则 TI 本地 OTA 是不安全的。 通过 HTTPS (TLS)完成并经过适当的证书验证后、来自远程服务器的 OTA 是安全的。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Jan!

    我会咨询我的 Collague、了解我们拥有的知识。

    Jiří

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要继续讨论这个主题。 我必须做错事。 下面是我的代码:

    /**
     * @brief Master token used for secured files (for accessing them); secret information!
     */
    static uint32_t u32_masterToken = 0x12345678; /* "random" number for testing, may be replaced with real random number made during binary creation process */
    
    s32L_fd = sl_FsOpen((const uint8_t*)cPL_name, slfs_getFlags(u32L_flags, u32L_fileSize), &u32_masterToken);

    从 sl_FsOpen(..)文档中:

    \param[in] pToken input for read、output Token for write

    从文档来看、我根本不清楚如何使用令牌。
    我尝试使用上述代码、但 u32_masterToken返回的值为0
    当尝试通过 Uniflash 下载文件时、必须将0用作令牌值。

    我的目标是使用一些随机值。 0不够随机。 :-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!Jiří

    对于创建、请使用:

    令牌= token_file_eap;

    unsigned long token = TOKEN_FILE;
    hdl = sl_FsOpen(fileName,
                    (SL_FS_CREATE |
                    SL_FS_CREATE_SECURE |
                    SL_FS_CREATE_VENDOR_TOKEN |
                    SL_FS_CREATE_NOSIGNATURE |
                    SL_FS_CREATE_MAX_SIZE(len)),
                    &token);

    若要将文件放入此文件:

    retVal = sl_FsGetInfo(fileName, TOKEN_FILE, &fileInfo);

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面更详细地介绍了我自己的设置。 很抱歉 上次忘记了。
     

    s32L_fd = sl_FsOpen(
        (const uint8_t*)cPL_name, 
        SL_FS_OVERWRITE |
        SL_FS_CREATE |
        SL_FS_CREATE_MAX_SIZE(u32L_fileSize) |
        SL_FS_CREATE_SECURE |
        SL_FS_CREATE_VENDOR_TOKEN |
        SL_FS_CREATE_NOSIGNATURE,
        &u32_masterToken);

    我不明白您的意思  token = TOKEN_FILE_EAP;
    还有什么价值TOKEN_FILE?

    您认为我的代码的关键区别是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!Jiří

    在我的例子中、token_file 只是一个宏(意味着在代码上定义常量)。 上面带有供应商令牌的代码、我用于存储 EAP 安全证书、它可以正常工作、没有任何问题。

    但我不确定开发模式下的行为是怎样的。 此外、我不确定文件系统中已经存在时标志 SL_FS_OVERWRITE 的行为。 您可以轻松自己进行此测试。 两年前我没有使用 CC3220、忘记了一些事情。

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢您、Jan! 当然、我将删除  SL_FS_OVERWRITE 并尝试。 如果我能理解、我会在这里添加信息。