查看: 739|回复: 0

【CC3200AI 实验教程15】疯壳·AI语音人脸识别-加解密

[复制链接]
  • TA的每日心情
    开心
    2022-4-17 15:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-24 16:55:13 | 显示全部楼层 |阅读模式
    分享到:
    CC3200AI实验教程
    ——疯壳·开发板系列
    加解密及数据协议




        在《AI人脸系统架构》一节中,我们提到AI设备与服务器之间的通信协议及TEA加密。这一节主要来讲解一下TEA加密另附上《AI设备通信协议》。
        使用IAR打开AI_OCR工程,在工程中找到TEA.c,并打开其关联的头文件GeekTEA.h,可以见到如图1.0.1所示的在本工程中用到的与TEA加解密相关的函数。

    1.png    
        图1.0.1 TEA加解密相关函数
        图1
        由于加密前需要传递加密缓冲区大小的形参,故在加密前需要先调用获取加密缓冲区的大小的函数getEncryptSize(),其函数内容如图1.0.2所示。

    2.png    
        图1.0.2 getEncryptSize()函数
        图2
        接下来就是对加密数据进行拼装以及对数据进行加密,如图1.0.3所示为批量加密函数。

    3.png    
        图1.0.3 加密函数
        图3
        形参buf为存储加密后的数据缓冲区、size为getEncryptSize获取到大小、key为加密的秘钥即程序中的globle_Auth_key或者Skey、IS_BIG_ENDIAN为大小端选择(1为大端、0为小端,CC3200为大端)。
        大端与小端的区别在于数据的存储在内存的高低位不同。
        大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
        小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
        解密部分和加密部分相似,是一个逆运算。如图1.0.4为decryptBatch()即解密函数。

    4.png    
        图1.0.4 decryptBatch函数
        图4



        附:AI设备通信协议
        一、数据包种类
        响应数据报文分为两部分:报文头、报文体。报文头固定9个字节,头四个字节是报文类型,对应请求数据包的报文类型,接下来四个字节是报文体(不包括报文头)的长度。最后一位是响应状态码,其中0xff固定表示秘钥过期,需要更新秘钥,其他以各自描述为准。
        请求数据报文分为两部分:报文头、报文体。报文头固定8字节,头四个字节是报文类型,后四个是报文体的长度。
        人脸注册发送图片报文类型报文头5个字节,第一字节报文类型,后四个报文体长度。
        1、通用数据包
        1.1 激活数据包
        设备第一次跟服务器建立连接,建立连接后发送该数据包。
        数据包格式:

    表1.png    
        表1
        响应结果:
        如果该设备已经激活、报文无法解析、鉴权失败,将断开连接。
        解析并鉴权成功后,响应的数据包格式如下:

    表2.png    
        表2
        1.2 激活确认包
        用于接收到激活数据包响应数据后返回确认信息。
        数据包格式:

    表3.png    
        表3
        响应结果:
        如果解析包失败或鉴权失败,断开连接。
        解析并鉴权成功,之后数据交互使用skey加密。

    表4.png    
        表4
        1.3 更新秘钥数据包
        用于秘钥过期时更新秘钥,也用于心跳,如果一段时间没有请求,发送该包。
        数据包格式:

    表5.png    
        表5
        响应结果:
        如果解析包失败或鉴权失败,断开连接。
        解析成功,响应的数据包格式有两种:

    表6.png    
        表6
        1.4 更新秘钥确认包
        用于发送更新秘钥数据包接收到返回数据后进行确认的数据包。如果未收到响应或超时,可再次请求。如果请求成功,表示秘钥更新成功,旧的skey将彻底无法使用,之后与服务器通讯将使用新的skey。
        数据包格式:

    表7.png    
        表7
        响应结果:
        如果解析包失败或鉴权失败,断开连接。
        解析成功响应报文,之后的请求将使用新的skey。

    表8.png    
        表8
        1.5 握手包
        已激活的设备在与服务器建立连接后,先发送该包鉴权。
        数据包格式:

    表9.png    
        表9
        响应结果:
        如果解析包失败或鉴权失败,断开连接。
        解析成功响应报文。如果响应结果skey过期,发送1.3、1.4的包

    表10.png    
        表10
        2、人脸识别业务数据包
        2.1 人脸注册数据包
        人脸注册流程:先发送注册开始数据包,收到确认后,依次发送各个不同的人脸数据包。最后发送注册结束包,收到确认后结束人脸注册。
        数据包格式:

    表11.png    
        表11
        响应数据:
        如果解析包失败或鉴权失败,断开连接。
        解析成功,开始发送不同类型的人脸图片。

       表12.png   
        表12
        ②脸部信息注册包
        人脸类型代码:0x00:正脸;0x01:左侧脸;0x02:右侧脸;0x03:闭眼;0x04:张嘴;0x05:微笑;0x06:眨眼。

    表13.png    
        表13
        响应数据:

    表14.png   
        表14
        ③结束注册数据包
        注册完成发送结束注册包。

    表15.png    
        表15
        响应数据:

    表16.png   
        表16
        2.2 人脸删除
        用于删除人脸信息。
        数据包格式:

    表17.png    
        表17
        加密字段格式:

    表18.png    
        表18
        响应数据:
        如果解析包失败或鉴权失败,断开连接。
        解析成功。

    表19.png    
        表19
        2.3 人脸识别
        用于已知一张脸,在人脸库中找到最相似的脸,user_top_num表示返回相似度最高的前多少个人脸。
        数据包格式:

    表20.png    
        表20
        加密字段格式:

    表21.png    
        表21
        响应数据:
        如果解析包失败或鉴权失败,断开连接。
        解析成功,识别包格式:

    表22.png    
        表22
        单次循环体格式,人脸类型代码:0x00:正脸;0x01:左侧脸;0x02:右侧脸;0x03:闭眼;0x04:张嘴;0x05:微笑;0x06:眨眼。

    表23.png    
        表23
        2.4 人脸认证
        用于比较人脸与指定用户id之间的相似程度。
        数据包格式:

    表24.png    
        表24
        加密字段格式,人脸类型代码:0x00:正脸;0x01:左侧脸;0x02:右侧脸;0x03:闭眼;0x04:张嘴;0x05:微笑;0x06:眨眼。

    表25.png    
        表25
        响应数据:
        如果解析包失败或鉴权失败,断开连接。
        解析成功,返回数据包格式:

    表26.png    
        表26





        文件下载请点击: 【5】加解密及数据协议.pdf (688.68 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-28 12:02 , Processed in 0.131015 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.