韩冰 发表于 2005-1-26 01:11

socket连接多层程序安全性简述 - 数据

<P>socket连接多层程序安全性简述 - 数据</P>
<P>  </P>
<P>剩下三种数据包/数据包完整性/数据包保密性 </P>
<P>其实只是一种安全机制的不同级别实现而已 </P>
<P>数据包对发送者的身份加密,完整性和保密性 </P>
<P>是对其的有益补充 </P>
<P>  </P>
<P>实际上数据包模式对发送者身份加密实现方法任意 </P>
<P>比如可以用Windows提供的那套加密库 </P>
<P>呵呵,反正只要你在服务器端对其进行检验 </P>
<P>传送中途数据包被截留不会泄露发送人身份或 </P>
<P>可以证明发送人身份的数据即可 </P>
<P>  </P>
<P>而完整性可以通过各种算法保证,比如crc,md5都是 </P>
<P>可行的,甚至简单一点按位and/or也不失一种办法 </P>
<P>只是比较简陋罢了,呵呵,总之要保证数据不会被 </P>
<P>中途截留者更改 </P>
<P>  </P>
<P>至于保密性,找一种对称加密算法对全部数据进行 </P>
<P>加密,然后将密匙用另外的非对称算法再次加密即可 </P>
<P>具体这方面的安全考虑问题可以看看《应用密码学》 </P>
<P>一书,非常不错的这方面的权威书籍 :) </P>
<P>  </P>
<P>这里需要提及的是这三种模式的实现, </P>
<P>简单一点的可以类似上一个呼叫模式中 </P>
<P>在IAppServer::AS_GetRecords或者 </P>
<P>其他类似的事件里面实现,参见上篇文章 </P>
<P>  </P>
<P>不过很幸运的是borland提供了一种更加简单可行的方案 </P>
<P>IDataIntercept接口 </P>
<P>  </P>
<P>__interface IDataIntercept; </P>
<P>typedef System::DelphiInterface&lt;IDataIntercept&gt; _di_IDataIntercept; </P>
<P>__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn </P>
<P>tercept  : public IUnknown </P>
<P>{ </P>
<P>public: </P>
<P> virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; </P>
<P> virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ; </P>
<P>}; </P>
<P>他在TSocketConnection类传送数据时会自动被使用 </P>
<P>呵呵,用它实现数据完整性和保密性都是非常合适的选择 </P>
<P>外加还可以对数据进行压缩,呵呵 :) </P>
<P>具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子 </P>
<P>  </P>
<P>MS对这几种安全机制的分类是高级别兼容低级别 </P>
<P>实际上在我们自己使用的时候完全可以根据我们的需要 </P>
<P>自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案 </P>
<P>  </P>
<P>btw:本来想随便写写,发现好像很多问题都几句话说不清 </P>
<P>    等到下个月有时间偶把这些东东好好总结一下写篇 </P>
<P>    象样一点的文章出来,呵呵 </P>
<P>  </P>
<P>    其实这些安全模式的实现方式还有很多,偶只是挑出 </P>
<P>    偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵 </P>
<P>    希望能够对大家有帮助,也希望大家积极讨论,批评指正 :) </P>
页: [1]
查看完整版本: socket连接多层程序安全性简述 - 数据