反向编程指南

反向编程指南

ID:37643410

大小:277.20 KB

页数:8页

时间:2019-05-27

反向编程指南_第1页
反向编程指南_第2页
反向编程指南_第3页
反向编程指南_第4页
反向编程指南_第5页
资源描述:

《反向编程指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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=r1⊕r2。二.密钥协商DLL原理1启动IKE

2、2获取共享密钥应用程序DLL隔离装置DLL里面没有定时协商密钥的时间(即更新密钥时间),用户如果需要重新协商的话,则要调用接口函数重新启动IKE。三.DLL使用说明头文件包含函数:#defineDLL_IMPORTextern"C"__declspec(dllimport)初始化函数:DLL_IMPORTintInitializeIKE(LPCSTRip,LPCSTRfname1,LPCSTRfname2);返回值:应该为1fname1隔离装置公钥fname2网关机私钥如果返回值为-1,则输入的文件路径不对!获取共享密钥函数:DLL_IMPORTintG

3、etShareKey(LPCSTRkey);返回值:如果为1,则需要重新协商如果为3,获取密钥成功具体使用DLL的样例Test里有使用的具体过程。1.加载DLLhDLL=LoadLibrary("ike.dll");//加载动态链接库ike.dll文件;if(hDLL==NULL)return;2.启动IKEpInitializeIKEInitializeIKE;if(hDLL==NULL)return;InitializeIKE=(pInitializeIKE)GetProcAddress(hDLL,"InitializeIKE");Initializ

4、eIKE(m_IP,fname1,fname2);//必须由用户提供3.获取共享密钥unsignedcharsharekey[8];pGetShareKeyGetShareKey;if(hDLL==NULL)return;GetShareKey=(pGetShareKey)GetProcAddress(hDLL,"GetShareKey");inti=GetShareKey((LPCSTR)sharekey);if(i!=3)AfxMessageBox("ErrorforGetKey!");4.释放DLLif(hDLL==NULL)return;Fr

5、eeLibrary(hDLL);//卸载IKE.dll文件;四.其他问题DLL功能目前暂定为上面的这些,但是随着用户的使用,可能作相应的调整,但整个框架不变。Dll里面采用socket进行密钥协商,所以在配置隔离装置的时候增加一条规则(协议UDP端口5555)。五.数据加密头文件des.h库:syskeeper.lib得到通讯密钥以后,就可以加密数据了!在des.h我们提供封装的两个加密函数,分别针对TCP和UDP.intprocessTcpData(unsignedchar*out,unsignedchar*in,intinlen,unsignedch

6、ar*key);返回值:为加密的数据的长度参数说明:unsignedchar*out:为经过密钥加密的数据;unsignedchar*in:为用户准备发送的数据;intinlen:为用户准备发送的数据的长度;unsignedchar*key:为使用DLL协商的密钥;intprocessUdpData(unsignedchar*out,unsignedchar*in,intinlen,unsignedchar*key);unsignedchar*out:为经过密钥加密的数据;unsignedchar*in:为用户准备发送的数据;intinlen:为用户准备

7、发送的数据的长度;unsignedchar*key:为使用DLL协商的密钥;voidOnSendData(){//举例unsignedcharMsg[3000];unsignedcharoutMsg[3024];//shouldbigger3000+3*8intoutlen;//Msgistobesent!memset(Msg,'a',3000);outlen=processUdpData(outMsg,Msg,3000,key);intret=m_hSock.SendTo(outMsg,outlen,1001,"10.144.100.201");}编程

8、要点:1.用UDP发送数据,每次长度不能大于60000,UDP的最大长度6553

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。