反向编程指南.pdf
《反向编程指南.pdf》由会员分享,可在线阅读,更多相关《反向编程指南.pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、反向隔离装置编程指南一 反向隔离装置密钥协商原理密钥协商主要针对IP 通道,而非 TCP,UDP 通道,也就是说针对机器而非具体应用。密钥协商主要采用UDP 报文进行,具体原理如下:1、外网网关机产生随机数r1,作:A=ECert2(r1)ESkey1(H(r1),将A发送到反向隔离装置;2、反向隔离装置对 A解密并验证外网网关机的签名,产生随机数r2,作:B=ECert1(r2)ESkey2(H(r2),将B发送到外网网关机;3、外网网关机对 B 解密并验证反向隔离装置的签名;4、双方分别合成会话密钥 DK:DK=r1r2。二 密钥协商 DLL 原理应用程序DLL隔离装置12启动 IKE获取
2、共享密钥DLL 里面没有定时协商密钥的时间(即更新密钥时间),用户如果需要重新协商的话,则要调用接口函数重新启动IKE。三 DLL 使用说明头文件包含函数:#define DLL_IMPORT extern C _declspec(dllimport)初始化函数:DLL_IMPORT int InitializeIKE(LPCSTR ip,LPCSTR fname1,LPCSTR fname2);返回值:应该为 1 fname1 隔离装置公钥fname2 网关机私钥如果返回值为 1,则输入的文件路径不对!获取共享密钥函数:DLL_IMPORT int GetShareKey(LPCSTR ke
3、y);返回值:如果为 1,则需要重新协商如果为 3,获取密钥成功具体使用 DLL 的样例 Test 里有使用的具体过程。1加载 DLL hDLL=LoadLibrary(ike.dll);/加载动态链接库 ike.dll文件;if(hDLL=NULL)return;2启动 IKE pInitializeIKE InitializeIKE;if(hDLL=NULL)return;InitializeIKE=(pInitializeIKE)GetProcAddress(hDLL,InitializeIKE);InitializeIKE(m_IP,fname1,fname2);/必须由用户提供3获取
4、共享密钥unsignedchar sharekey8;pGetShareKey GetShareKey;if(hDLL=NULL)return;GetShareKey=(pGetShareKey)GetProcAddress(hDLL,GetShareKey);int i=GetShareKey(LPCSTR)sharekey);if(i!=3)AfxMessageBox(Error for GetKey!n);4释放 DLL 文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4
5、L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V
6、4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6
7、V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F
8、6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10
9、F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R1
10、0F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R
11、10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7if(hDLL=NULL)return;FreeLibrary(hDLL);/卸载 IKE.dll 文件;四 其他问题DLL 功能目前暂定为上面的这些,但是随着用户的使用,可能作相应的调整,但整个框架不变。Dll 里面采用socket 进行
12、密钥协商,所以在配置隔离装置的时候增加一条规则(协议 UDP 端口5555)。五 数据加密头文件 des.h 库:syskeeper.lib 得到通讯密钥以后,就可以加密数据了!在des.h 我们提供封装的两个加密函数,分别针对TCP和UDP.int processTcpData(unsigned char*out,unsigned char*in,int inlen,unsigned char*key);返回值:为加密的数据的长度参数说明:unsigned char*out:为经过密钥加密的数据;unsigned char*in :为用户准备发送的数据;int inlen :为用户准备发送的
13、数据的长度;unsigned char*key:为使用 DLL 协商的密钥;int processUdpData(unsigned char*out,unsigned char*in,int inlen,unsigned char*key);unsigned char*out:为经过密钥加密的数据;unsigned char*in :为用户准备发送的数据;int inlen :为用户准备发送的数据的长度;unsigned char*key:为使用 DLL 协商的密钥;void OnSendData()/举例unsigned char Msg3000;unsigned char outMsg30
14、24;/should bigger 3000+3*8 文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5
15、F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B
16、5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10
17、B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A1
18、0B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A
19、10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6
20、A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7int outle
21、n;/Msg is to be sent!memset(Msg,a,3000);outlen=processUdpData(outMsg,Msg,3000,key);int ret=m_hSock.SendTo(outMsg,outlen,1001,10.144.100.201);编程要点:1用 UDP 发送数据,每次长度不能大于60000,UDP 的最大长度 65535,但是为了隔离装置的安全性,规定加密后每次长度不能大于60,000。2在进行加密的时候,输出的加密数据由于在某些地方增加了负载处理,所以输出的 buffer 长度(len2)要大于输入的长度(len1),具体的增加长度可以参考
22、 processUdpData 和 processTcpData 两个函数。为了方便编程,我们将buffer 的长度设置为 len2=len1+(len1/1000)*8;3用 TCP 发送数据,为了防止系统将数据Nagle 化,也就是将连续发送的报文组装成一个报文,建议设置套接字选项const int TCPNODELAY=true;if(setsockopt(ServerSocket,IPPROTO_TCP,TCP_NODELAY,(const char*)&TCPNODELAY,sizeof(TCPNODELAY)=SOCKET_ERROR)printf(Set TCP_NODELAY
23、failed.Error:%d,WSAGetLastError();return;具体细节参考附录2。4加密数据要调用#include des.h 和库 syskeeper.lib 附录1:TCP socket 选项 文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 H
24、Y1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2
25、HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2 HY1Q7O2I10F9 ZD7R10F6V4L7文档编码:CW4Q6A10B5F2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 反向 编程 指南
限制150内