QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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 Y

typedef 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' g

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

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

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

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-6-11 15:18 , Processed in 0.427032 second(s), 51 queries .

回顶部