|
socket连接多层程序安全性简述 - 数据 , a: I3 U: M& Z- p! r9 E: f( R
3 j, G# h! d$ E# m- G& U剩下三种数据包/数据包完整性/数据包保密性 ; ]( \) o- H3 m" ?2 V
其实只是一种安全机制的不同级别实现而已 - V5 o: \6 d" W6 H) p. }: A
数据包对发送者的身份加密,完整性和保密性 8 z4 _, k5 l7 I0 X
是对其的有益补充 ) q. A7 o& `( D O
, f6 P0 h' ~7 ~0 K实际上数据包模式对发送者身份加密实现方法任意 / s7 F& I( ~$ Q) N! _
比如可以用Windows提供的那套加密库
0 u4 }' u g0 q5 d呵呵,反正只要你在服务器端对其进行检验
- x# ~* u' z& n传送中途数据包被截留不会泄露发送人身份或 , ~) w: }; {/ c0 A: m, A5 @( \
可以证明发送人身份的数据即可 , }! c$ g0 m5 w2 w, e) _
# L- t; R! }6 t5 ^& ^4 {0 ?
而完整性可以通过各种算法保证,比如crc,md5都是 8 n( t* y5 D- z8 G2 |
可行的,甚至简单一点按位and/or也不失一种办法 + a; l( ~: `: l
只是比较简陋罢了,呵呵,总之要保证数据不会被
& u7 @. J/ n" k+ H' B g8 g中途截留者更改 $ v( [: V+ c% M
; k$ N1 l. r% \/ s# s H
至于保密性,找一种对称加密算法对全部数据进行 - \: L, M4 v a* X C: Z) F
加密,然后将密匙用另外的非对称算法再次加密即可
3 B$ F, h$ U! ~# U' B. r+ ]具体这方面的安全考虑问题可以看看《应用密码学》 % Y9 W" Q- B4 K+ |
一书,非常不错的这方面的权威书籍 2 a+ S, Q6 M& Q) {. P
' }6 A P& G- J% a$ O
这里需要提及的是这三种模式的实现, ' \% V5 D+ ~3 j4 H& ]+ d& U- W- x# W: @0 W
简单一点的可以类似上一个呼叫模式中 + K# w2 \, F- {# C8 e: T
在IAppServer::AS_GetRecords或者
! [2 \9 V% n" @5 D其他类似的事件里面实现,参见上篇文章
4 ^4 V& |; _9 E( L
, m9 J/ g4 m7 F; F* U$ ]不过很幸运的是borland提供了一种更加简单可行的方案
0 L* _: y8 \# J6 a! {IDataIntercept接口
, Y2 p% H( z4 B : z, f& R5 m8 O6 }
__interface IDataIntercept;
, C8 \/ r2 L6 [* U3 Ytypedef System: elphiInterface<IDataIntercept> _di_IDataIntercept;
1 f; b, E' T& P8 O% c5 E. c/ I. ~ e__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn 2 W4 C! Y0 b7 {7 W( j% M7 n& Z5 j' q- n
tercept : public IUnknown
9 l3 J) A! g. T7 }{ $ a# T) d3 ~7 L8 }) X
public: 9 Z9 I9 S0 Y* m) H* B" h3 n0 c3 [( n
virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; 5 o! v) J1 |& W2 U$ w! j
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ; 5 ^4 K& N% q* y' q' O; N; i
};
+ w; \! Q2 h0 T$ M8 A他在TSocketConnection类传送数据时会自动被使用 % w5 V; o$ v- t# s: R! j
呵呵,用它实现数据完整性和保密性都是非常合适的选择
1 i, j% }8 k" D+ f& p, ]: {外加还可以对数据进行压缩,呵呵 + y7 J' ]6 K( c: J% a
具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
; [* g7 C% w* s- o / e S$ k# U( @+ _
MS对这几种安全机制的分类是高级别兼容低级别 " r3 e" M2 w5 R
实际上在我们自己使用的时候完全可以根据我们的需要 ' _2 G5 N6 J' u C& |, q
自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案
& m8 d, A8 `3 r( ] j
- v) \0 I. s5 J- u; H' gbtw:本来想随便写写,发现好像很多问题都几句话说不清
2 U3 |% X( `& P5 Y0 X3 s 等到下个月有时间偶把这些东东好好总结一下写篇
) D$ R. I0 T6 S 象样一点的文章出来,呵呵 l! X: n) O" |" u, M- y. G' K, a
6 ]2 s- ~6 A& f: b- I4 @
其实这些安全模式的实现方式还有很多,偶只是挑出
/ X8 u) F, y$ ? 偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
5 l9 D w0 Z" b7 u! j0 ~+ l 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |