|
socket连接多层程序安全性简述 - 数据
3 ^7 K# S, l. \2 | {& g 5 p* [3 \1 N' X3 h
剩下三种数据包/数据包完整性/数据包保密性
' M0 ?9 A' j7 ]/ p其实只是一种安全机制的不同级别实现而已 , x6 c8 \2 E6 M# Q. {% W2 p
数据包对发送者的身份加密,完整性和保密性 ' I- ]. n% ]' q3 u; b
是对其的有益补充 8 Z2 r/ g, F, M# A7 T7 D" o
% y# ?2 d- W1 b% \- v& _
实际上数据包模式对发送者身份加密实现方法任意 ' p: u: C5 M% \( q" Q
比如可以用Windows提供的那套加密库
+ F/ C9 b X4 s: k1 }# @# I9 v5 M呵呵,反正只要你在服务器端对其进行检验 " f1 ~0 L+ T0 V) ^! G- G j8 w- m
传送中途数据包被截留不会泄露发送人身份或
# k( h' ?' Y! M* P( ~可以证明发送人身份的数据即可
6 \; F4 j- Q3 ?* V- U6 z
4 S" X7 L2 C# F, g而完整性可以通过各种算法保证,比如crc,md5都是 ; I: _( h' q5 ^, n9 C$ y( J1 Y
可行的,甚至简单一点按位and/or也不失一种办法
2 i" G& w4 @. a* m* z只是比较简陋罢了,呵呵,总之要保证数据不会被
" P/ U- W/ A9 `$ X6 g; U中途截留者更改
- o" \- ~1 Y, O3 k& h1 d $ n) x$ m/ m" L
至于保密性,找一种对称加密算法对全部数据进行
6 `% u, ]+ ?% |$ h3 `9 b加密,然后将密匙用另外的非对称算法再次加密即可 3 J6 e/ N6 Q: L" G
具体这方面的安全考虑问题可以看看《应用密码学》 ' }7 |* c D) s6 M& C7 Y2 O
一书,非常不错的这方面的权威书籍
8 Z' x& P/ n* o0 H6 Z3 U
7 Z2 ?* D8 Q% J. {6 G0 n+ y这里需要提及的是这三种模式的实现,
+ k- Q0 v$ y: K+ D7 N简单一点的可以类似上一个呼叫模式中 * Z# e2 J5 j' n
在IAppServer::AS_GetRecords或者
# y, e# ?% [6 i; x3 [- H其他类似的事件里面实现,参见上篇文章 , p2 `) _" T* H+ x$ m+ i9 q: g
& X: N5 ?4 _6 _' q' d. O( I- r不过很幸运的是borland提供了一种更加简单可行的方案
) v4 `& [. `" {! m' WIDataIntercept接口
; K w+ K/ |# i& \1 c& M
4 ^8 J) A% d9 j; e) @2 b0 `__interface IDataIntercept;
, e; P% Y! W" B' ^; G5 P* R! Atypedef System: elphiInterface<IDataIntercept> _di_IDataIntercept;
; B8 Y8 `. Y! ]$ W' R% s__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn . Z+ V; B: {" c U; ]( Q% O
tercept : public IUnknown 4 ]: m/ q9 c% B. v- N
{ & C$ n/ m4 f' N; O3 m8 C
public: 8 J0 ?* J2 e% o: G0 M
virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; ) p$ | ?6 g1 C/ c9 X
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;
R' M, ]6 ^4 D3 ^, n; C) k. P}; ' _2 \0 k3 D& B5 V( M4 ^% E8 b+ o
他在TSocketConnection类传送数据时会自动被使用
1 _& ]' X' f- p呵呵,用它实现数据完整性和保密性都是非常合适的选择 + F8 H: G3 j) V! `
外加还可以对数据进行压缩,呵呵 7 b! _. Q1 ?5 y) G+ e7 C
具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子 $ m- k$ @7 ?' `/ w' t) x8 T8 D' r
+ L4 V. K+ M$ `
MS对这几种安全机制的分类是高级别兼容低级别
. e: b+ O H+ [$ D实际上在我们自己使用的时候完全可以根据我们的需要 1 q! A) [' Q" U9 I! k
自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案
2 G7 x" P. b7 C% _ $ K0 V' t7 |# o( L* c1 I
btw:本来想随便写写,发现好像很多问题都几句话说不清
$ j( k) W. u. j n0 V 等到下个月有时间偶把这些东东好好总结一下写篇 8 g5 \. S: y6 `0 q/ G$ j `0 O
象样一点的文章出来,呵呵 * k6 @. ~: D) [( r4 i* S% F h* J3 L7 Z, M
+ q, X4 r9 N5 c6 `, w 其实这些安全模式的实现方式还有很多,偶只是挑出
% A- T0 f/ `* b, ^& X( L 偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵 $ {# x' }' i) z6 N
希望能够对大家有帮助,也希望大家积极讨论,批评指正 |