AES encrytion和decrytion用户数据

8个帖子/ 0新
最后一篇
亚历克斯·罗
离线
最后一次露面:1年11个月前
专家
加入:2014年2月28日19:16
AES encrytion和decrytion用户数据

你好对话和开发商,

我想用DA14580加密和解密的用户数据。这是很好的使用gapm_use_enc_block_cmd和加密修正。

当我按照UM-B-15,附录H,有什么不对的加密和解密。我试图如所描述的,被称为aes_init(假的,aes_done_cb)使用测试代码arch_main.c;和aes_operation(键,的sizeof(键),明文,的sizeof(明文),aes_out,16,1,aes_done_cb,1);(加密)和aes_operation(键,的sizeof(键),aes_out,16,aes_result,16,0,aes_done_cb,0);(解密)。

加密数据与使用GAPM_USE_ENC_BLOCK_CMD不同。---使用相同的密钥和明文。为了解密,所有输出都是来自相同密钥和加密数据的0,无法获得纯版。

请告知如何使用S / W解密。

由于信息非常有限,我不知道如何设置aes_flag - 我尝试了0和1,结果。iv i在阵列中使用0的IV由于芯片没有IV ...

sw_aes.c支持AES-CBC,即能解密通过使用gapm_use_enc_block_cmd加密的数据?

谢谢,

设备:
Joacimwe.
离线
最后一次露面:10个月前1年
格鲁鲁
加入:2014-01-14 06:45
你好。

你好。

硬件加密仅支持AES加密操作;不是AES解密操作。因此,如果要使用AES解密,您必须使用SW实现进行解密操作。要包含它,您必须定义USE_AES_DECRYPT(请参阅AES_API.C)。如果未定义,解密将无法正常工作。

请注意,有操作的许多块加密模式,使得使用AES的:AES-CBC,AES-CTR,AES-EBC等(见https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)。硬件模块仅支持原始AES加密操作,该操作采用128位密钥和128位明文,并产生128位的密文。另请注意,我认为输出字节因某种原因而逆转。AES_operation API函数似乎使用AES-EBC,除非您知道您在做什么,否则永远不会直接使用。

作为对DA14580我一个通用的密码会建议AES-CTR因为有你只需要AES加密操作,而不是AES-解密操作,这意味着你不需要使用SW AES解密。

这就是说,你必须在你想要使用的AES API的方式使用GAPM_USE_ENC_BLOCK_CMD任何问题,UM-B-15,而不是申报?在我看来,GAPM_USE_ENC_BLOCK_CMD是使用AES的首选方式。

例如,使用AES-CTR,例如将明文的前12个字节设置为对您加密的每条消息(随机数或序列号)的每条消息应该不同的once / IV。其他4个字节被设置为对您加密相同消息的每个16个字节的数据增加的计数器。然后XOR与纯粹的pinipherText,与Nonce / IV一起是您的最终加密数据。要解密,请使用存储的once / IV和XOR与加密文本一起重复AES操作以恢复明文。图片at.https://en.wikipedia.org/wiki/block_cipher_mode_of_operation_28 ...把它描述得很好。

在什么样的目的,你使用AES什么样的方式/呢?您是否使用它通过加密的空气或发送数据加密/解密存储在闪存/ EEPROM?

亚历克斯·罗
离线
最后一次露面:1年11个月前
专家
加入:2014年2月28日19:16
感谢您的分享

感谢您分享您的体验。

我用分钟修改为博思encrytipn和decrytion开放源代码,这工作非常出色。我也试过GAPM_USE_ENC_BLOCK_CMD,效果很不错了。

我跟着UM-B-15,AppendixH,这是onlt AES相关文档。使用aes_operation功能,我不能得到encyption右声道输出,以及decyption不行。我会尝试定义USE_AES_DECRYPT。如果同比AVE请给我更多的aaplication笔记。

AES EBC为我所用的东西。加密的数据usese两个以上的空气和在存储器中。

亚历克斯·罗
离线
最后一次露面:1年11个月前
专家
加入:2014年2月28日19:16
感谢您的分享

感谢您分享您的体验。

我用分钟修改为博思encrytipn和decrytion开放源代码,这工作非常出色。我也试过GAPM_USE_ENC_BLOCK_CMD,效果很不错了。

我跟着UM-B-15,AppendixH,这是onlt AES相关文档。使用aes_operation功能,我不能得到encyption右声道输出,以及decyption不行。我会尝试定义USE_AES_DECRYPT。如果同比AVE请给我更多的aaplication笔记。

AES EBC为我所用的东西。加密的数据usese两个以上的空气和在存储器中。

Joacimwe.
离线
最后一次露面:10个月前1年
格鲁鲁
加入:2014-01-14 06:45
API是非

这些API在非标及非一致的方式作出。键/明文/ enctext有时反转,有时没有。

这是它应该如何进行加密的16个字节的块时,可以使用:

关键aes_operation_enc:不反转
key gapm_use_enc_block:反转

输入明文aes_operation ENC:反转
输入enctext gapm_use_enc_block:verdered

输出enctext aes_operation ENC:不反转
输出enctext gapm_use_enc_block:反转

当解密:

输入enctext aes_operation 12月:不反转
输出明文AES_operation DEC:反转

核心
离线
最后一次露面:3年11个月前
加入:2017-04-14 04:35
嗨Joacimwe:

嗨Joacimwe:

我有一个问题关于DA14580 AES函数,我想使用AES-128加密用户数据,问题是DA14580 AES加密输出数据与OpenSSL Lib加密输出数据有差异,它像DA14580 AES加密输出错误的数据,我不要为什么。
我的SDK版本是5.04,这是我的代码:

uint8_t xor_key [16];
uint8_t aes_temp [16] = {是0xAB,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA,和0xAA};
aes_set_key(aes_temp,&键);
aes_enc_dec(aes_temp,xor_key,&键,BLE_SAFE_MASK);

输出xor_key值是:AF C6 6C 38 7E AF E7 CB 64 99 E4 70 C2 56 29 DD
但我使用OpenSSL Lib加密相同的AES_TEMP [16],输出为:B8 0E 69 E1 72 74 75 5C 5D C0 FE EA 7F 5F 66 DF
我改变aes_enc_dec功能:

INT aes_enc_dec(无符号字符*中,无符号字符*出来,AES_KEY *键,无符号的字符ble_flags)
{
in j;

if(ble_flags&ble_safe_mask)
rwip_schedule();

//检查与SMPM避免冲突/ LLM
如果(smpm_env.operation &&((结构smp_cmd *)(smpm_env.operation)) - >操作== GAPM_USE_ENC_BLOCK)
返回-1;

SetWord32(BLE_AESKEY31_0_REG,键 - > KS [3]);
SetWord32(BLE_AESKEY63_32_REG,键 - > KS [2]);
SetWord32(BLE_AESKEY95_64_REG,键 - > KS [1]);
SetWord32(BLE_AESKEY127_96_REG,键 - > KS [0]);

对于(j = 0;Ĵ<16; J ++){
*(挥发性UINT8 *)(UINT32)(0x80000 + jump_table_struct [offset_em_enc_plain] + j)的=在[J];
}

//设置指针上的数据加密。
setword32(ble_aesptr_reg,jump_table_struct [offset_em_enc_plain]);

//开始HW块
SetWord32(BLE_AESCNTL_REG,1);

而(GetWord32(BLE_AESCNTL_REG)== 1)
if(ble_flags&ble_safe_mask)
rwip_schedule();

对于(j = 0;Ĵ<16; J ++){
出[J] = *(挥发性UINT8 *)(UINT32)(0x80000 + jump_table_struct [offset_em_enc_cipher] + j)的;
}

返回0;
}

我不知道为什么会发生这种情况

mt_dialog.
离线
最后一次露面:6个月3周前
职员
加入:2015-06-08 11:34
嗨内核,

嗨内核,

显然,您使用的是相同的数据,密钥和纯文本,请尝试将纯文本排列在不同的变量数组分配,并把数据颠倒过来,这样你会得到正确的结果。

谢谢mt_dialog.

Joacimwe.
离线
最后一次露面:10个月前1年
格鲁鲁
加入:2014-01-14 06:45
你应该用我的安全

您应该在此处使用我的安全加密功能:

https://support.dialog-semiconductor.com/feature-request-easy-encblock

您应该与openssl一起获得相同的结果。