你好,
我正在开发一个ECDH-Curve25519加密应用程序,该应用程序应该基于您的开发板上的HW Accellerator。
目前,我可以通过从您的指南中使用(da1468x_da15xxx_sdk_1.0.14.14.1081/doc/doc/html/group ___________c_d_h.html)来生成[共享秘密]。
检查标志和资源缓冲区似乎还可以!
该“共享的秘密”应与另一个使用“ libodium库”(同样,相同的ECDH-Curve)在另一个外部设备(考虑Linux-PC)上生成的另一个生成的曲线25519。
现在,在这一点上发生了错误:两个共享的秘密完全不同。
您是否有任何想法,甚至遇到了这样的问题?
您是否曾经测试过该算法与其他共享秘密生成器的兼容性?
先感谢您
[sdk-used] :: 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。
为简单起见,我附着在钥匙下方,共享秘密:
#爱丽丝的私钥,答:
77076D0A7318A57D3C16C17251B26645DF4C2F87EBC0992AB177FBA51DB92C2A
#爱丽丝的公钥,x25519(a,9):
8520F0098930A754748B7DDCB43EF75A0DBF3A0D26381AF4EBA4EBA4A98EAA9B4E6A
#鲍勃的公钥,x25519(b,9):
DE9EDB7D7B7DC1B4D35B61C2ECE435373F8343C85B78674DADFC7E146F882B4F
#他们分享的秘密,k:
4A5D9D5BA4CE2DE1728E3BF480350F25E07E21C947D19E3376F09B3C1E161742
[SDK代码]:
#参考SRC:
da1468x_da15xxx_sdk_1.0.14.1081/sdk/Interfaces/crypto/src/crypto/crypto_ecdh.c
#代码片段:
/ *强迫仅使用Curve25519到Crypto_ecdh.h */
#define crypto_ecdh_use_only_curve25519(1)
/ *初始化曲线结构 */
initialise_privileged_data crypto_ecdh_context_t c_ctx = crypto_ecdh_init_ctx(crypto_ec_ec_params_curve25519);
/ *将爱丽丝的私钥复制到提交的“ D” */
memcpy(&(c_ctx.d [0]),alice_priv,32);
/ *设置相关标志 */
c_ctx.flags | = crypto_ecdh_ctx_d;
/ *将Alice的Pub键复制到提交的“ X坐标”中,唯一用于Curve25519 */
memcpy(&(c_ctx.ql [0] [0]),alice_pubk,32);
/ *设置相关标志 */
c_ctx.flags | = crypto_ecdh_ctx_ql;
/ *将Bob的Pub键复制到提交的“ X坐标”中,唯一用于Curve25519 */
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);
/*打印共享的秘密和标志(flags = 15,但共享秘密错误)*/
printf(“共享秘密[flags->%d] \ n”,c_ctx.flags);
for(uint32_t i = 0; i <32; i ++)
printf(“ \”%x \“,”,c_ctx.s [i]);
让我知道您是否需要更多东西。
谢谢,nn
hi nhan.ngodinh,
我将尝试复制您的问题,我会尽快与您联系。
谢谢,pm_dialog
你好,
您有机会查看问题吗?
我需要了解是否继续使用您的SDK“ ECDH-Curve25519”或移至其他解决方案。
请注意,我们承受着一定的压力,最后一篇文章的日期为“ 2019-03-01”。
然后,您非常支持您的支持。
问候
nn
嗨,nhan.ngodinh,
对延迟表示歉意,但我在内部驱动了您的问题,因此,当我有团队的任何更新时,我会回到您身边。
谢谢,pm_dialog
嗨,nhan.ngodinh,
您能让我知道您正在进行哪个SDK1.0.14.1081的项目?在ble还是在非细节项目中?如果您正在从事一个非BLE项目,我建议您进入BLE项目(例如BLE_ADV项目)并遵循相同的过程。您能在BLE项目中获得正确的结果吗?
谢谢,pm_dialog
你好,
“我建议您进入一个BLE项目(例如BLE_ADV项目)并遵循相同的过程”, 你在开玩笑吧?
只是回顾一下:您不知道该API有什么问题?一个月后...
我们谈论的是网络安全功能,我建议进一步调查问题,以解决您的问题,让我们将其用作常见(且有用的...)API,在任何项目中...
无论如何,我想最好暂时不使用它,直到您提供有效的替代方案(或预期的修复程序)。
非常感谢您的支持
问候
aa
嗨,nhan.ngodinh,
我将通过注册的电子邮件地址与您联系。
谢谢,pm_dialog