你好,
我正在开发ECDH-Curve25519加密应用程序,它应该基于我的Dev板上的HW Accellerator。
目前,我能够通过使用指南(da1468x_da15xxx_sdk_1.0.14.1081 / doc / html / group ___ e_c_d_h.html)生成[共享秘密]。
检查标志和资源缓冲区似乎都可以!
使用“LibSodium库”(再次,相同的ECDH曲线),应与另一个外部设备上的相同曲线25519(思考Linux-PC)相同的曲线25519生成的另一个“共享秘密”。
现在,此时发生了什么问题:两个共享秘密完全不同。
你有任何想法甚至经历过这样的问题吗?
您有没有测试与其他共享秘密发生器的兼容性算法?
先感谢您
[SDK-uss] :: da1468x_da15xxx_sdk_1.0.14.1081
[PC-Linux] :: libsodium + Linux Ubuntu 18
设备:
嗨nhan.ngodinh,
让我检查你的问题,我会尽快回复你的答案。
谢谢,PM_DIALOG.
你好,
为了今天给出一些讨论点,我用“测试向量”测试了[SDK代码],从[https://tools.ietf.org/html/rfc7748#page-14]。
结果是错误的预期[共享秘密]的尊重。
相反,使用[Ubuntu + libsodium]对[Linux-PC]进行相同的测试它返回正确的[共享密钥]。
现在,如果我没有发出任何错误,我猜您可能不符合那个(非正式)标准RFC 7748。
谢谢,nn.
嗨nhan.ngodinh,
您可以澄清[SDK代码]和您使用的测试矢量吗?您不应该采取不同的结果,但我会尝试复制您的问题。此外,您使用的任何输入/代码片段都会非常有用。
谢谢,PM_DIALOG.
你好,
正如我在我之前的注释中指定的那样,测试向量是从[https://tools.ietf.org/html/rfc7748#page-14]- > pag 13。
为简单起见,我将在键下面附加并产生共享秘密:
#Alice的私钥,答:
77076D0A7318A57D3C16C17251B26645DF4C2F87EBC0992AB1777FBA51DB92C2A
#Alice的公钥,X25519(A,9):
8520F0098930A754748B7DDCB43EF75A0DBF3A0D26381AF4EBA4A98EA9B4E6A
#BOB的公钥,X25519(B,9):
DE9EDB7D7B7DC1B4D35B61C2ECE435373F8343C85B78674DADFC7E146F882B4F.
#their共享秘密,K:
4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
[SDK代码]:
#参考SRC:
da1468x_da15xxx_sdk_1.0.14.1081 / sdk / interfaces / crypto / src / crypto_ecdh.c
#代码片段:
/ *强制使用只使用曲线25519加入crypto_ecdh.h * /
#define 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.flags | = crypto_ecdh_ctx_d;
/ *将Alice的Pub键复制到“x坐标”提起,唯一用于曲线25519 * /
memcpy(&(c_ctx.ql [0] [0]),ALICE_PUBK,32);
/ *设置拼写标志* /
c_ctx.flags | = crypto_ecdh_ctx_ql;
/ *将bob的pub键复制到“x坐标”归档中,唯一用于曲线25519 * /
memcpy(&(c_ctx.qp [0] [0]),bob_pubk,32);
/ *设置拼写标志* /
c_ctx.flags | = crypto_ecdh_ctx_qp;
/ *调用crypto_ecdh_compute用于生成共享密钥(此时应该可以确定)* /
crypto_ecdh_compute(&c_ctx,c_ctx_timeout);
/ *打印共享秘密和标志(标志= 15,因为它应该但共享错误)* /
printf(“共享秘密[标志 - >%d] \ n”,c_ctx.flags);
for(Uint32_t i = 0; i <32; i ++)
printf(“\”%x \“,”,c_ctx.s [i]);
如果你需要更多的东西,请告诉我。
谢谢,nn.
嗨nhan.ngodinh ,,
我会尽力复制你的问题,我会尽快回复你的反馈。
谢谢,PM_DIALOG.
你好,
你有机会看看这个问题吗?
我需要了解是否继续使用SDK“ECDH-Curve25519”或转移到另一种解决方案。
请静音我们有一些压力,最后的帖子日期为“2019-03-01”。
你非常适合你的支持。
问候
nn.
嗨nhan.ngodinh,
为延迟表示歉意,但我在内部推动了问题,所以我会在团队中有任何更新时回复您。
谢谢,PM_DIALOG.
嗨nhan.ngodinh,
您能否在哪个项目中告诉我,您可以在哪个项目中努力?在BLE或非BLE项目中?如果您正在进行非BLE项目,我建议您进入BLE项目(例如BLE_APP项目)并按照相同的步骤进行操作。您是否能够在BLE项目中获得正确的结果?
谢谢,PM_DIALOG.
你好,
“我建议您进入BLE项目(例如BLE_APP项目)并按照相同的程序”, 你在跟我开玩笑吗?
只是重新推荐:你不知道该API的问题是什么?一个月后......
我们正在谈论网络安全功能,我建议进一步调查这个问题,以解决您的问题,让我们在任何项目中使用它作为常见(有用的......)API ...
无论如何,我猜最好不要用它,直到你提供有效的替代方案(或预期的修复)。
非常感谢您的支持
问候
AA.
嗨nhan.ngodinh,
我将在注册的电子邮件地址与您联系。
谢谢,PM_DIALOG.