|
socket连接多层程序安全性简述 - 数据
! [4 G. x. R! ~/ M ?; {1 o6 N. E/ U- k/ M
剩下三种数据包/数据包完整性/数据包保密性
* |4 \$ O, {+ v- _+ r( U其实只是一种安全机制的不同级别实现而已 . G. v9 g) [% Z; {4 Z
数据包对发送者的身份加密,完整性和保密性
& ]7 m4 a. e) m( b0 i2 K是对其的有益补充
. R; s/ A5 }6 f7 A" Y 8 d% q( \0 M" V2 w8 v7 W% A; s1 o
实际上数据包模式对发送者身份加密实现方法任意 2 l1 e2 g- Z8 \
比如可以用Windows提供的那套加密库
" o0 f& S7 g* s: ^5 D, h0 P0 `呵呵,反正只要你在服务器端对其进行检验
0 b7 N$ g6 X" J& C传送中途数据包被截留不会泄露发送人身份或 : a+ o8 ~0 y$ y4 l
可以证明发送人身份的数据即可 ( V# e2 f1 I! |* Y. n, t
7 @2 J B" V1 d( F& r
而完整性可以通过各种算法保证,比如crc,md5都是
, S; l: h$ X [7 |1 v0 A可行的,甚至简单一点按位and/or也不失一种办法
1 G; y& K: w& l" n; e只是比较简陋罢了,呵呵,总之要保证数据不会被
7 {4 l% y' j$ @5 L' E$ t& @" M6 s中途截留者更改
1 K9 g( V& u" S! i' B4 H: r3 Q/ A
6 H6 b$ @- X$ I+ S9 I7 {+ ]至于保密性,找一种对称加密算法对全部数据进行 5 y0 U& u4 ~: l8 G; y
加密,然后将密匙用另外的非对称算法再次加密即可 & w' Z) i, X. P2 M* ~. b: z
具体这方面的安全考虑问题可以看看《应用密码学》 # P# y* a( i0 m! v* g; q
一书,非常不错的这方面的权威书籍
c; Y1 {- K B" x# F: u9 K' {8 T
7 w& r X/ t- |6 X这里需要提及的是这三种模式的实现,
8 D& f& e: F- V7 m: h: X$ m简单一点的可以类似上一个呼叫模式中
4 s/ F) k1 D2 H8 o8 J3 I1 t* u在IAppServer::AS_GetRecords或者 5 `2 Q {! _% q5 E
其他类似的事件里面实现,参见上篇文章 4 X3 v4 k } g" m. ^; X# E! Y
3 Q6 g9 W1 Y6 ^: @
不过很幸运的是borland提供了一种更加简单可行的方案 2 m+ L4 Y$ g" r
IDataIntercept接口
; i4 v4 [ K5 I" e' x5 R9 t ( w& f+ I0 V2 F" E
__interface IDataIntercept;
. ?8 d& T7 i! \ I- g* C. |4 Ftypedef System: elphiInterface<IDataIntercept> _di_IDataIntercept; 8 d- B8 s# h* W( V* M, v
__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn
+ k H7 `6 O9 k0 D9 \tercept : public IUnknown
1 U% Y, T" F& x: L{
2 r- J" i. h" [- l( tpublic:
1 R/ [/ E8 C: }3 q virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ;
1 S/ V: d5 v; G) I virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;
: X) E: u$ m! E) k};
* x3 C) m9 J" O' H他在TSocketConnection类传送数据时会自动被使用
+ t) F1 s" ~ {2 o6 p& r呵呵,用它实现数据完整性和保密性都是非常合适的选择 . E0 O( C5 ~* b5 D; W
外加还可以对数据进行压缩,呵呵 , h+ B3 Y# ~' j% i& ^
具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
! G7 n" \& K0 F( P ) s0 I5 d( D* d2 h' }% ~$ Y
MS对这几种安全机制的分类是高级别兼容低级别
: b" ~! l# q+ k1 B- K1 n: q实际上在我们自己使用的时候完全可以根据我们的需要
' a9 C' X& ?. [, T/ q7 h9 t1 I( P自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案 7 d7 {# _' \- L( B* f
6 ]. x4 X( D; {
btw:本来想随便写写,发现好像很多问题都几句话说不清 + J2 X( @. i, ~$ ]4 j1 U
等到下个月有时间偶把这些东东好好总结一下写篇 a: j( _5 y7 A E% Y
象样一点的文章出来,呵呵 : \8 ?2 Y5 M, w$ h6 t6 t
; ^, f, O6 k7 j- H; o) C9 n1 ^
其实这些安全模式的实现方式还有很多,偶只是挑出
3 |* e0 j0 K# v& ^ s7 {, A! | 偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
/ V. v- n# l4 o. V/ y( R 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |