|
socket连接多层程序安全性简述 - 数据
9 V- Y' F2 K7 s
3 \/ O6 U9 g# r$ n2 q剩下三种数据包/数据包完整性/数据包保密性
# L& r& W' o6 L3 d" E其实只是一种安全机制的不同级别实现而已
9 S% H5 t) D3 z& x数据包对发送者的身份加密,完整性和保密性 , {! k5 O5 M& y8 e- w' t( Y% \/ i
是对其的有益补充 7 v. g# f: R0 Z& V4 \' E8 ]
4 n9 n8 M; s8 u% t& l7 o' Q3 i实际上数据包模式对发送者身份加密实现方法任意
H- z9 Q# v) t. Z! L# K比如可以用Windows提供的那套加密库 / M6 a7 G% e5 V2 Y( u8 y/ d, p) h
呵呵,反正只要你在服务器端对其进行检验
6 _3 q/ m) U- f# W& R0 o3 \传送中途数据包被截留不会泄露发送人身份或 % y1 Z8 a8 `( O
可以证明发送人身份的数据即可 ( P! Q" W- q) }- F* t) u
* G: v* B- Z% w! b, x. Z而完整性可以通过各种算法保证,比如crc,md5都是 0 U9 p5 M R2 o
可行的,甚至简单一点按位and/or也不失一种办法 - @! o6 H* B. \
只是比较简陋罢了,呵呵,总之要保证数据不会被
( m) S% t7 Q- ]8 a+ ]中途截留者更改
- Q, m5 A9 H' X. z: a/ @7 [' y ; \- O/ a2 ?. |4 B, @
至于保密性,找一种对称加密算法对全部数据进行 ( s- ~0 m& P3 I. @
加密,然后将密匙用另外的非对称算法再次加密即可
. o: `7 `3 q! ~/ R/ D具体这方面的安全考虑问题可以看看《应用密码学》
! L$ Z% x& X, z1 q4 e( ?$ t% \一书,非常不错的这方面的权威书籍
) |) M7 o5 t" Z K
* ]& i3 W% F& x) H x& W这里需要提及的是这三种模式的实现,
E. s$ Z- R2 i$ E" |简单一点的可以类似上一个呼叫模式中 - G: u0 |( I; q
在IAppServer::AS_GetRecords或者
- D% m9 s' u8 ?# p# K- h( U8 {其他类似的事件里面实现,参见上篇文章
2 S. P/ |9 b: D3 @, B
( y9 r, J0 G9 g: l' z" N5 P不过很幸运的是borland提供了一种更加简单可行的方案 $ y! H& y x9 E7 Z' f
IDataIntercept接口 0 Q& N/ N2 }) f- Z- A0 _8 H7 @8 a
! M1 } S8 c. y__interface IDataIntercept; 2 m* F( {- t \) z( l+ e
typedef System: elphiInterface<IDataIntercept> _di_IDataIntercept;
5 G( l, Q" s6 I* _) |7 }1 U__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn ) }0 p/ h" `% n+ c) q5 j4 q
tercept : public IUnknown 3 b& y( s0 F3 @* A6 r( S2 c4 U
{
( ~' z n7 J3 w( [3 ?8 L# U- ~8 p$ [public:
9 ^; D, q1 R8 d" A& e, o0 j9 ]) }" t virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; / p, J7 Y: S4 J9 W5 P; M. o, G1 d
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ; 5 n+ G8 C# K+ N9 c. E. V3 u
}; $ y6 ^7 V/ _! p1 Q# L: t5 \/ W
他在TSocketConnection类传送数据时会自动被使用
4 }. Q+ d( y3 B0 h' q% d9 a. _. C5 `呵呵,用它实现数据完整性和保密性都是非常合适的选择 1 M% Z& S. c- c: J2 s9 I( |) h
外加还可以对数据进行压缩,呵呵
4 Z) Q/ R. N0 q+ M8 \! P具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
. U+ G3 x1 P3 N& {6 ]8 \' v $ x/ h+ [+ [2 H* E& j
MS对这几种安全机制的分类是高级别兼容低级别 4 J+ T6 O# C) h' K
实际上在我们自己使用的时候完全可以根据我们的需要 7 W- \. T9 r# C3 n8 |' ]5 m9 O
自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案 ! a; M' Y+ ?# r& E2 J% W7 y
7 i5 G# h$ M& K' a' L/ y
btw:本来想随便写写,发现好像很多问题都几句话说不清 : f2 D8 x+ R: {: Q ^( j
等到下个月有时间偶把这些东东好好总结一下写篇
) Z# i- q0 ^" G) J+ d 象样一点的文章出来,呵呵
" d- X, v' ?) d: i- L
7 E# H. w8 g% X# Q 其实这些安全模式的实现方式还有很多,偶只是挑出 5 Q9 j& X: h, y3 F
偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
7 Y) K" f7 }* F 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |