QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2104|回复: 0
打印 上一主题 下一主题

socket连接多层程序安全性简述 - 数据

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 01:11 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

socket连接多层程序安全性简述 - 数据

( H m: q1 _$ u2 N5 O: o8 ^

. m- g% d( X9 L! A1 j5 Q

剩下三种数据包/数据包完整性/数据包保密性

4 q/ H$ m j' C/ ?8 B) t

其实只是一种安全机制的不同级别实现而已

9 l9 A4 c, m3 Y/ G

数据包对发送者的身份加密,完整性和保密性

U2 z0 r' L5 q; F/ n) b, j9 B

是对其的有益补充

" h% I3 C( e/ x: ^3 W/ g7 G

@6 A8 l+ \( w3 a

实际上数据包模式对发送者身份加密实现方法任意

( w# k8 D) s) Y" j C

比如可以用Windows提供的那套加密库

: V, y% k1 z' M4 } W; R8 p& m

呵呵,反正只要你在服务器端对其进行检验

0 O, {/ [# l6 T- i. Z% ~& K

传送中途数据包被截留不会泄露发送人身份或

) T: Y: m7 Y& N1 E, I, P ?+ _0 V2 D" M

可以证明发送人身份的数据即可

3 L/ ]+ e3 m$ U/ Y, ]. z5 h8 H

* h8 D8 t$ L7 \% S. r2 K

而完整性可以通过各种算法保证,比如crc,md5都是

" W% ^! t/ t3 x' s4 A

可行的,甚至简单一点按位and/or也不失一种办法

2 v8 n5 J/ R. Z% \

只是比较简陋罢了,呵呵,总之要保证数据不会被

0 y" m- W: u! Y. B/ I" y

中途截留者更改

0 d- B( e7 t! ?: U, b: z# B3 ~6 T, |

2 d2 H$ n' I4 a! E- T) a

至于保密性,找一种对称加密算法对全部数据进行

/ t4 l( f) o% R N5 ] ?9 w1 X

加密,然后将密匙用另外的非对称算法再次加密即可

9 p; \4 a* e8 D( H: n1 s

具体这方面的安全考虑问题可以看看《应用密码学》

* c: h* `2 t5 l0 u1 ^( C0 J4 g

一书,非常不错的这方面的权威书籍

4 a8 c4 o1 @. b1 C

7 M+ ^7 X9 L/ Z# F+ g" B

这里需要提及的是这三种模式的实现,

& T/ o9 N0 b; G% z7 K

简单一点的可以类似上一个呼叫模式中

8 { S9 K- s+ t& ]: j, z

在IAppServer::AS_GetRecords或者

0 [6 s0 k& P! H) M/ w/ r6 p J* y

其他类似的事件里面实现,参见上篇文章

% \2 m& ^) _# c# c, Y- @

$ X& ^, e8 R3 b' }

不过很幸运的是borland提供了一种更加简单可行的方案

0 j3 {8 R5 z B

IDataIntercept接口

+ ]2 Q; ^7 t& P" I% m' L

' l) T* h* Y: x W7 P* i/ K; @# |

__interface IDataIntercept;

# ? ^! D& j! z% R

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

( y; [. ?# C8 y! j: t* \2 `

__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn

9 `& O6 K# Q! _+ c& Y

tercept : public IUnknown

& v: t0 P9 k* y& P( F

{

; m' f+ Q' U* B

public:

5 _# v. j7 M% j: N, D8 R

virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ;

6 K3 y" P9 z5 C' E

virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;

8 F7 k+ _. \) c0 H* J. k8 y) t

};

6 I' o- _8 o* s! I

他在TSocketConnection类传送数据时会自动被使用

$ a; t' N" e8 e5 `$ L

呵呵,用它实现数据完整性和保密性都是非常合适的选择

/ T5 d- `& q4 v3 R( x+ w

外加还可以对数据进行压缩,呵呵

9 \, T7 Z7 B9 u- ?8 r

具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子

; n7 B( v+ m6 K. k( M, c* z0 }

% ~* p% e4 H3 C/ H( g: X

MS对这几种安全机制的分类是高级别兼容低级别

5 j7 C3 P3 U8 C$ ]3 d, g3 f* g$ c

实际上在我们自己使用的时候完全可以根据我们的需要

: r/ w( J, |% s. U, q8 F* J

自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案

0 ?' X' N9 U s* [. F i9 V

1 [( O' w6 `1 h. V7 B- y# ^

btw:本来想随便写写,发现好像很多问题都几句话说不清

2 B9 f$ y/ G+ k9 O0 ^

等到下个月有时间偶把这些东东好好总结一下写篇

/ {' n: o, u/ y w1 F' [

象样一点的文章出来,呵呵

% c- ~& W* ?& q, v' G7 y8 o

$ @4 R8 g6 Y) D* R7 r% Q" R1 |: H

其实这些安全模式的实现方式还有很多,偶只是挑出

. t/ h0 `: `% ?& j7 x- l

偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵

) K# M- R6 F# j4 @6 l* g

希望能够对大家有帮助,也希望大家积极讨论,批评指正

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-12 04:14 , Processed in 0.410722 second(s), 53 queries .

回顶部