你好,
我正在开发一个ecdh-curve25519加密应用程序,应该是基于你的HW加速器在我的开发板。
目前,我能够生成一个[共享的秘密]使用从您的指南(DA1468x_DA15xxx_SDK_1.0.14.1081/doc/html/group__ e_c_d_h.html)。
检查标志和资源缓冲区,似乎一切正常!
这个“共享秘密”应该与使用“lib钠库”(同样是ecdh-curve)在另一个外部设备上(考虑一个linux-pc)使用相同的curve25519生成的另一个秘密共享。
现在,错误的事情发生了:两个共享秘密是完全不同的。
你有任何想法或经历过这样的问题吗?
您曾经测试过该算法与其他共享秘密生成器的兼容性吗?
先谢谢你
[SDK-used]:: DA1468x_DA15xxx_SDK_1.0.14.1081
[PC-linux]:: lib钠+linux ubuntu 18
设备:
嗨nhan.ngodinh,
我先看看你的问题,一有答复就给你答复。
谢谢,PM_Dialog
你好,
为了给今天的讨论提供一些要点,我用“测试向量”测试了你的[SDK代码],从[https://tools.ietf.org/html/rfc7748第14页).
结果与预期的[共享秘密]是错误的。
相反,在[linux-pc]上用[ubuntu+ lib钠]做同样的测试,它会返回正确的[shared-secret]。
现在,如果我没有犯任何错误,我猜您可能不符合(非正式的)标准RFC 7748。
谢谢,神经网络
嗨nhan.ngodinh,
请问你们使用的[SDK代码]和哪个测试向量?你不应该采取不同的结果,但我会尽量复制你的问题。此外,您正在使用的任何输入/代码片段都将非常有帮助。
谢谢,PM_Dialog
你好,
如我在前面的评论中所述,测试向量从[https://tools.ietf.org/html/rfc7748第14页)- > pag 13。
为了简单起见,我在下面附上了密钥和共享密钥:
# Alice的私钥,a:
77076 d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
# Alice的公钥,X25519(a, 9):
8520年f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
# Bob的公钥,X25519(b, 9):
de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f
他们共同的秘密,K:
4 a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742
(SDK代码):
#参考SRC:
DA1468x_DA15xxx_SDK_1.0.14.1081 / sdk /接口/加密/ src / crypto_ecdh.c
#代码片段:
/*强制只使用curve25519到crypto_ecdh.h */
#定义CRYPTO_ECDH_USE_ONLY_CURVE25519 (1)
/*初始化曲线结构*/
INITIALISED_PRIVILEGED_DATA crypto_ecdh_context_t c_ctx = CRYPTO_ECDH_INIT_CTX(CRYPTO_EC_PARAMS_CURVE25519);
/*复制Alice的私钥到d文件*/
memcpy (& (c_ctx.d [0]), Alice_priv, 32);
/*设置对应的标志*/
c_ctx。旗帜| = CRYPTO_ECDH_CTX_d;
/*复制Alice的pub键到“X坐标”字段,唯一用于curve25519 */
memcpy (& (c_ctx.Ql [0] [0]), Alice_pubk, 32);
/*设置对应的标志*/
c_ctx。旗帜| = CRYPTO_ECDH_CTX_Ql;
/*复制Bob的pub键到“X坐标”字段,这是唯一一个用于curve25519 */
memcpy (& (c_ctx.Qp [0] [0]), Bob_pubk, 32);
/*设置对应的标志*/
c_ctx。旗帜| = CRYPTO_ECDH_CTX_Qp;
/*调用crypto_ecdh_compute来生成共享密钥(此时应该没有标志)*/
crypto_ecdh_compute (&c_ctx c_ctx_timeout);
/*打印共享秘密和标志(标志=15,但共享秘密错误)*/
printf("SHARED SECRET [flags->%d]\n", c_ctx.flags);
For (uint32_t I = 0;我< 32;我+ +)
printf (" \ " % x \”、“c_ctx.s[我]);
如果你还需要什么就告诉我。
谢谢,神经网络
嗨nhan.ngodinh,,
我会尽量复制你的问题,我会尽快给你我的反馈。
谢谢,PM_Dialog
你好,
你有机会看一下这个问题吗?
我需要了解是否继续使用您的SDK“ECDH-curve25519”或移动到另一个解决方案。
请理解,我们受到了一些压力,最后一个帖子的日期是“2019-03-01”。
谢谢你的支持。
问候
神经网络
嗨nhan.ngodinh,
很抱歉耽误了您的时间,但我已经在内部处理了您的问题,所以当我从团队那里得到任何更新时,我会给您回复。
谢谢,PM_Dialog
嗨nhan.ngodinh,
请问您现在在做SDK1.0.14.1081的哪个项目?在BLE项目中还是非BLE项目中?如果你正在做一个非BLE项目,我建议你转到BLE项目(例如ble_adv项目),并遵循同样的程序。你能在BLE项目中得到正确的结果吗?
谢谢,PM_Dialog
你好,
“我建议你进入一个BLE项目(例如ble_adv项目),并遵循相同的程序。”你在开玩笑吧?
总结一下:你不知道那个API有什么问题吗?一个月后……
我们谈论的是网络安全功能,我建议进一步调查这个问题,以解决你的问题,让我们使用它作为一个常见的(和有用的……)API,在任何项目中…
无论如何,我想最好暂时不要使用它,直到您提供一个有效的替代方案(或预期的修复)。
非常感谢您的支持
问候
aa
嗨nhan.ngodinh,
我会用你的注册邮箱联系你。
谢谢,PM_Dialog