|
socket连接多层程序安全性简述 - 数据 1 ?5 h6 P) n2 S9 d6 e
8 }% y3 u7 I- J( s7 A
剩下三种数据包/数据包完整性/数据包保密性 2 Q; D9 y; U" ~* b: M% K, O' r3 S
其实只是一种安全机制的不同级别实现而已 i1 m f) X4 E. _9 n' E
数据包对发送者的身份加密,完整性和保密性 0 _9 M: ?# H5 ]9 z
是对其的有益补充 ! ~# `1 Z5 R) u5 Y, L' E
) A' K" l$ u P# l& k& H2 Z+ d
实际上数据包模式对发送者身份加密实现方法任意 4 X* D; O+ f- n' W, I, X, ?3 t5 k
比如可以用Windows提供的那套加密库 ( m0 F; a) _; v0 d+ y+ Z: E9 k7 Z
呵呵,反正只要你在服务器端对其进行检验
, ?, E/ w7 B( D" e0 W传送中途数据包被截留不会泄露发送人身份或 7 x" z0 c* u, h# G( m! X4 v
可以证明发送人身份的数据即可 4 t* T1 B( Q, w; k9 G) J- x
. U* D$ ~8 z2 {6 }; z而完整性可以通过各种算法保证,比如crc,md5都是 % |$ o O: Q! U6 r& r
可行的,甚至简单一点按位and/or也不失一种办法
6 `* ~+ U ~, B t" f只是比较简陋罢了,呵呵,总之要保证数据不会被 1 y$ z0 t5 H0 g' T
中途截留者更改
" s, v8 n6 {2 j( Y( ? 9 o7 _: A4 Z- F4 y+ G; j* \# f
至于保密性,找一种对称加密算法对全部数据进行 ! s3 @0 k- D$ F a0 i7 K! f
加密,然后将密匙用另外的非对称算法再次加密即可 1 b7 t5 \/ b9 Q- d
具体这方面的安全考虑问题可以看看《应用密码学》 5 K+ @8 b# y7 e1 z9 n" e
一书,非常不错的这方面的权威书籍 2 I$ X) _6 \0 ]: M" b% ]+ t& ^8 ^' A
: H: I! L3 S$ q1 M- I7 y [# [5 _6 D
这里需要提及的是这三种模式的实现, / I% H0 X6 w' c% L( v
简单一点的可以类似上一个呼叫模式中 , S" G8 }- j: Q; p6 n7 ~! n8 ~) h
在IAppServer::AS_GetRecords或者
. W( t0 [7 B u其他类似的事件里面实现,参见上篇文章
3 ^' T. Z' H" ]
$ w1 c+ t% ]; x& b8 A& @不过很幸运的是borland提供了一种更加简单可行的方案 5 m; g' B0 I" j# `
IDataIntercept接口 & e' x9 J. B+ p2 ^1 S* h
. g, @# t% ?( |/ S__interface IDataIntercept; Z( b' e Z# }; y2 A# b' B6 p
typedef System: elphiInterface<IDataIntercept> _di_IDataIntercept;
7 [7 F, t/ M% g4 X8 ]5 Y2 J! y__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn
( `' |" N8 d p+ o9 b" V' Ltercept : public IUnknown
% c7 A4 w9 N. [1 G+ [" _1 y' p{
+ e: ?6 D5 n& L" z9 B% g- n/ [public: % A9 q8 |- W0 @/ g% }- x
virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ;
) v! g6 S" Q0 F3 ^8 g virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;
% |# }! B7 q% U/ s, b v9 r- s# o1 E}; / p/ c# p& p+ B$ \7 u
他在TSocketConnection类传送数据时会自动被使用
8 x6 ]0 |; e, V/ r. W2 |/ h呵呵,用它实现数据完整性和保密性都是非常合适的选择
' i7 Y! D( G Y1 d外加还可以对数据进行压缩,呵呵
7 E, m1 W% u0 P9 I具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子 ' k: c' v- `" v3 V+ s
1 r3 U+ @, n1 u- ^% n
MS对这几种安全机制的分类是高级别兼容低级别 + a' Z9 q$ z, X3 U( [4 b
实际上在我们自己使用的时候完全可以根据我们的需要 ; t/ D. B6 h! }% J5 L& x
自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案
4 k9 K5 I: U8 D3 C' o" u( X
- R& U' d- E2 b3 pbtw:本来想随便写写,发现好像很多问题都几句话说不清
1 }3 r8 M% w4 M 等到下个月有时间偶把这些东东好好总结一下写篇
. d: F' F* [1 S- H 象样一点的文章出来,呵呵
# p2 x Y' p2 E4 ?& x$ H! F ' u/ w- X& E1 t$ V9 o
其实这些安全模式的实现方式还有很多,偶只是挑出 6 g+ W+ C. D3 z/ {$ ]- e
偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
0 K- ?* h: a: O/ E' Q; d 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |