你好,
我正在开发一个ecdh-curve25519加密应用程序,它应该基于我的开发板上的硬件加速器。
At the moment I am able to generate a [Shared Secret] by using as from your guide (DA1468x_DA15xxx_SDK_1.0.14.1081/doc/html/group___e_c_d_h.html).
Checking flags and resources buffer it seems all OK!
这个“共享秘密”应该与另一个使用“libnadium library”(同样的ecdh曲线)在另一个外部设备(比如linux pc)上使用相同的curve25519生成的另一个共享。
Now, at this point something wrong happens: the two shared secret are completely different.
Did you have any idea or even experienced such a problem?
Did you ever tested the algorithm for compatibility with other shared secret generators?
先谢谢你
[使用的SDK]::DA1468x\u DA15xxx\u SDK\u 1.0.14.1081
[PC-linux]:: libsodium+linux ubuntu 18
Device:
Hi nhan.ngodinh,
Let me check your issue and I will get back to you as soon as I have an answer for you.
谢谢,下午好
你好,
为了给今天的讨论提供一些要点,我用“test vector”测试了您的[SDK代码],如[https://tools.ietf.org/html/rfc7748#page-14].
结果与预期的[共享机密]不符。
相反,使用[ubuntu+libnadium]在[linux pc]上进行相同的测试,返回的是正确的[shared secret]。
现在,如果我没有犯任何错误,我猜你可能不符合(非正式)标准RFC7748。
谢谢,恩
Hi nhan.ngodinh,
请您澄清一下[SDK代码]和您使用的测试向量是什么?你不应该采取不同的结果,但我会尝试复制你的问题。另外,您正在使用的任何输入/代码片段都会非常有用。
谢谢,下午好
你好,
as I specified in my previous comment, test vectors are taken as from [https://tools.ietf.org/html/rfc7748#page-14]-> pag 13.
For simplicity I'm attaching below the keys and resulting shared secret:
# Alice's private key, a:
77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a
# Alice's public key, X25519(a, 9):
8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a
# Bob's public key, X25519(b, 9):
DE9EDB7D7B7DC1B4D35B61C2ECE435373F8343C85B78674ADFC7E146F882B4F
#他们共同的秘密,K:
4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742
[SDK代码]:
#参考SRC:
DA1468x\u DA15xxx\u SDK\u 1.0.14.1081/SDK/interfaces/crypto/src/crypto\u ecdh.c
#代码段:
/*强制在crypto_ecdh.h中仅使用curve25519*/
#定义加密\u ECDH \u仅使用\u曲线25519(1)
/*初始化曲线结构*/
初始化的\u PRIVILEGED \u DATA crypto \u ecdh \u context \u t c \u ctx=crypto \u ecdh \u INIT \u ctx(crypto \u EC \u PARAMS \u CURVE25519);
/* copying Alice's private key into the "d" filed */
memcpy(&(c\u ctx.d[0]),Alice\u priv,32岁;
/*设置对应标志*/
c_ctx.flags |= CRYPTO_ECDH_CTX_d;
/*将Alice的pub键复制到“X坐标”字段中,这是curve25519唯一使用的一个*/
memcpy(&(c\u ctx.Ql[0][0]),Alice\u pubk,32岁);
/*设置对应标志*/
c|ctx.flags |=加密| ECDH | ctx | Ql;
/*将Bob的pub键复制到“X坐标”字段中,这是唯一一个用于curve25519的字段*/
memcpy(&(c\u ctx.Qp[0][0]),Bob\u pubk,32岁);
/*设置对应标志*/
c_ctx.flags |= CRYPTO_ECDH_CTX_Qp;
/* calling crypto_ecdh_compute for generating shared key (flags should be ok at this point) */
crypto_ecdh_compute (&c_ctx c_ctx_timeout);
/*正在打印共享机密和标志(标志应为15,但共享机密错误)*/
printf(“共享机密[flags->%d]\n”,c\u ctx.flags);
for(uint32_t i = 0; i < 32; i++)
printf(“\”%x\“,”,c\u ctx.s[i]);
如果你还需要什么,请告诉我。
谢谢,恩
Hi nhan.ngodinh,,
我会尝试复制你的问题,我会尽快给你反馈。
谢谢,下午好
你好,
did you get the chance to have a look at the problem?
我需要了解是否继续使用您的SDK“ECDH-curve25519”或转移到另一个解决方案。
请低调,我们有一些压力,最后一个帖子是日期为“2019-03-01”。
非常感谢你的支持。
当做
nn
Hi nhan.ngodinh,
Apologies for the delay, but I have driven your issue internally, so i will get back to you when I have any update from the Team.
谢谢,下午好
Hi nhan.ngodinh,
你能告诉我你在SDK1.0.14.1081的哪个项目工作吗?在一个可执行的项目中还是在一个不可执行的项目中?如果你正在从事一个不可编辑的项目,我建议你进入一个可编辑的项目(例如BLE\u adv项目),并遵循同样的程序。你能在一个不可靠的项目中得到正确的结果吗?
谢谢,下午好
你好,
“我建议您进入BLE项目(例如BLE\u adv项目),并遵循相同的步骤”你在开玩笑吗?
简单回顾一下:你不知道API有什么问题吗?一个月后。。。
我们正在讨论网络安全功能,我建议进一步调查问题,以解决您的问题,让我们使用它作为一个共同的(和有用的…)API,在任何项目。。。
无论如何,我想最好不要使用它的时刻,直到你提供了一个有效的替代方案(或预期的修复)。
非常感谢您的支持
当做
aa级
Hi nhan.ngodinh,
我会用注册的邮箱和你联系。
谢谢,下午好