澳门新浦京8455com有限公司欢迎您!

基于SPI的协议加固透明传输工具

时间:2019-12-09 06:26

一.背景

  随着计算机网络技术的日益发展和普及,远程网络数据传输的安全性显得越来越重要。—般地,运行的应用程序发送的数据包都以明文方式发送,接收方也将直接获得明文数据,但这样发出的数据很容易被截获并进行分析,从而进行网络攻击。只有少数应用会为自己发出数据进行加密。然后再在接收方进行解密操作。随着网络的日益普及,网络数据发送的安全也变得很重要。但是,只有较少的应用程序为网络收发数据进行了加密传输,仍然有大量的应用直接采用明文方式通讯。这些应用包括采用了一些特定协议进行通讯,也包含一些特殊用途的客户端程序,比如监控系统和内外网的客户端访问。如欲对这些应用的网络通讯内容进行加固来防止攻击者的监听和攻击,则需要对这一款应用程序进行升级,即增加加密和解密功能。如果一个系统中使用了多种应用结合的方式进行通信,则需要各应用生产商间进行协商。来确保系统中各应用的正常通信。

  本工具利用Windows提供的SPI服务,在应用层对应用程序网络通信的数据进行加密,在接收方收到数据前进行解密。整个过程应用程序并未有任何更改。实现了通信数据的透明加密。

特点

  1. 由SCL时钟线和SDA数据线传输
  2. 有的IIC接口的设备,内部有固化地址,有的设备可通过芯片接线来确定设备地址,从设备地址为7bit,所以一条IIC总线上最多可以接2的7次方 = 128个设备
  3. 多主机时钟同步和仲裁,标准模式下传输速率为100kbit/s, 快速模式下传输速率为400kbit/s,高速模式下为3.4Mbit/s
  4. 采用IIC接口,IO必须被配置为开漏输出,这是为了实现线与,挂载多个设备,对总线进行独占,当总线上有一个设备输出低电平时,该线上就是低电平

一、SPI概述

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换

                       澳门新浦京8455com 1

澳门新浦京8455com, SPI总线的系统

(1)MOSI:主器件数据输出,从器件数据输入
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK:时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制

SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。

 

一、SPI介绍

二.工具原理

传输

  • 起始信号:SCL保持高电平,SDA一个下降沿,表示一个起始信号
  • 停止信号:SCL保持高电平,SDA一个上升沿,表示一个停止信号
  • 数据传输:SDA上的数据必须在SCL为高电平时稳定,在SCL为低电平时改变。因为如果在SCL为高电平时SDA尚的电平信号改变,则会导致接收数据的设备认为这是一个起始信号或者停止信号。 数据传输从高位开始
  • ACK应答信号:处理器发送完8bit数据后,将SDA线配置为输入,因为IIC外接上拉电阻,所以这时候SDA上的电平就为高,当IIC设备接收到数据后,就在第9个周期将SDA拉低,处理器检测到SDA上的低电平就知道IIC设备接收到了数据,便可进行其他操作了。注意:为什么IIC总线要连接上拉电阻?
    1. 因为IIC标准规定,IIC设备在空闲时要保持为高电平,这样才能实现多主模式
    2. 加上拉能够确保主设备正确的拉低、拉高,便于从设备明确的区分高、低电平
    3. 电阻的大小跟功耗和传输速率有有关系

澳门新浦京8455com 2Paste_Image.png澳门新浦京8455com 3澳门新浦京8455com 4澳门新浦京8455com 5澳门新浦京8455com 6

 二、传输过程

上升沿发送、下降沿接收、高位先发送。

 

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。

下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

 

假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010),从机的sbuff=0x55 (01010101),下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。


脉冲       主机sbuff   从机sbuff   sdi

1.1技术性能:

采用主从模式,一般仅支持单Master--多Slave。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前--底位在后(MSB first)。接口有两条单向数据线,为全双工通信。

澳门新浦京8455com 7

  各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/A转换器、LED/LED显示驱动器、I/O接口芯片、实时时钟、UART收发器

1. Winsock 2 SPI简介

  Winsock是为上层应用程序提供的一种标准网络接口。上层应用程序不用关心Winsock实现的细节,它为上层应用程序提供透明的服务。Winsock 2引入的一个新功能就是打破服务提供者的透明,让开发者可以编写自己的服务提供者接口(Service Provider Interface,SPI)程序,即SPI程序。Winsock 2 SPI除了有完成网络传输的传输服务提供者,还提供了友好名字服务的名字空间服务提供者。其中,传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制等服务。Winsock 2提供的服务其结构如图1所示。

澳门新浦京8455com 8

图1 Winsock 2 SPI结构

  SPI以动态链接库的形式出现,工作在TCP/IP协议的应用层,为上层API调用提供接口函数。由于SPI工作在TCP/IP协议的应用层,因此对基于应用层的数包SPI都可以截获。

写数据

写数据主要包括几个步骤:起始信号→7bit从设备地址+0→ACK应答→要写入数据的8bit存储地址→ACK应答→要写入的数据+ACK+停止信号

  sdo

1.2接口定义:

 SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。

 

澳门新浦京8455com 9

  • MOSI :主设备数据输入,从设备数据输出
  • MOSO :主设备数据输出,从设备数据输入
  • SCLK:时钟信号,由主设备产生
  • CSS:从设备使能信号,有主设备控制

2.传输模型

  基于SPI的文件加密传输系统的工作模型如图2所示。在发送方,用户层通信程序发送的网络封包被自定义的SPI程序所截获,SPI程序将数据包的IP地址、端口等信息提取出来,经过规则判断函数判断之后,如果需要加密,则调用加密函数完成加密工作,并在封包中设置加密标志。数据接收方在Windows核心层将接收的网络封包上传给用户层接收程序之前,自定义的SPI程序又将此数据封包截获,规则判断函数首先检查网络封包中的加密标志,若数据包是加密的数据包,则调用解密函数进行解密,最终将解密后的数据包向上传送给用户层的接收程序。

澳门新浦京8455com 10

图2 基于SPI的网络数据加密传输模型

读数据

读数据包括几个步骤:起始信号→7bit从设备地址+0→ACK应答→要读出数据的8bit存储地址→ACK应答→起始信号→7bit从设备地址+1+ACK+读出的数据+NO_ACK无应答+停止信号

0 00-0   10101010  01010101   0    0

1 0--1   0101010x  10101011     0    1

1.3时钟极性和时钟相位