Synology Cloud Sync 格式 3.0 会话密钥和数据加密使用哪种加密/解密算法?

逆向工程 加密 解密
2021-06-15 23:52:43

背景:根据 Synology 白皮书中的一般信息,我对其 Cloud Sync 加密算法的细节进行了逆向工程;有关详细信息,请参阅Synology-decrypt

在这种加密中,会话密钥和数据都使用密码加密,在 CBC 模式下使用 AES-256,密钥和 iv 从密码派生,如openssl enc. 那个问题我已经破解了。

现在他们升级了加密文件格式(从 1.0 到 3.0)以包含随机盐,我正在尝试弄清楚该盐的确切使用方式。

问题: 使用给定的密码/盐组合使用哪种算法来加密/解密以下明文/密文?(基于上述内容,我希望这是 CBC 模式下的 AES-256,key+iv 是从密码派生的,如openssl enc。但我完全不确定。)

最好,我想要一个 UNIX 命令行(openssl例如使用)将明文转换为密文或其他方式。

    +--------------------------------------------------------------------+--------------+----------------------+--------------------------------------------------------------+
    |                                    plaintext                       |   password   |       salt           |                          ciphertext                          |
    +--------------------------------------------------------------------+--------------+----------------------+--------------------------------------------------------------+
    | "Just a single line, no newline character at the end..."           | "buJx9/y9fV" | "DXzp4VKu"           | 8f7d757c0e46ab0c434ab72b2a70ec71ad49b2284257189365cb4c706751 |
    | (4a75737420612073696e676c65206c696e652c206e6f206e65776c696e65      |              | (44587a7034564b75 or | 10a3b98bd95f58bd5eafdccb51020354dc33449b221b45c134180882aa84 |
    |  206368617261637465722061742074686520656e642e2e2e)                 |              |  0d7ce9e152ae)       | 739ff78f0213a54a720537785495a84425b0415b                     |
    +--------------------------------------------------------------------+--------------+----------------------+--------------------------------------------------------------+
    | "EA23EB5F36B9008AC73498A8FC53884D1D7EFBA052F902F44B44D40409CBC215" | "buJx9/y9fV" | "DXzp4VKu"           | e866e8c3fb7496d6dd5f0d8befd212e351d3558edf7f097bbe5994b38082 |
    | (454132334542354633364239303038414337333439384138464335333838      |              | (44587a7034564b75 or | 3a6b68a9221dc43c53726b767268c4dfc01f92f99383407070ae5622c10c |
    |  344431443745464241303532463930324634344234344434303430394342      |              |  0d7ce9e152ae)       | 27003cd4d4bcbda1d4bfbe03f5784f5cc45c95b3                     |
    |  43323135)                                                         |              |                      |                                                              |
    +--------------------------------------------------------------------+--------------+----------------------+--------------------------------------------------------------+

相关的 GitHub 问题

1个回答

由于我们在这里只需要使用术语“盐”,因此无需对新代码进行实际逆向工程,我们主要可以做出一些有根据的猜测。

通常不是加密中使用的术语,它更常用于加密哈希的上下文中。然而,它的用法本质上类似于 IV:两者都是随机生成的,不需要用户意识到,两者都使用一次并且不在用户/会话之间共享。

这使我想到一个可能性是,盐是用来作为输液管,或有一些很强的关系吧。

另一种可能性(如果密码或衍生品以某种方式散列,则更有可能)是盐实际上用作散列函数的附加输入,类似于您如何使用盐来避免加密散列攻击。

同样,如果没有进一步的研究和信息,就很难弄清楚那里发生了什么。如果您想进一步追求这一点,您将不得不投入更多时间对新版本进行逆向工程。