QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

; k; o) f5 I; _5 x' a2 y

. Y1 p* Y& T" [

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

! V& e" i$ e/ e. m5 A5 M

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

; J3 N+ [ K; b8 t |+ Y+ j) }

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

6 F0 E/ D" e5 Y% q j1 m" [3 {

是对其的有益补充

2 l. W+ r V: C {) d! }

% i3 ?' h; m6 p. v

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

6 a2 h, B1 h- ]" e [

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

, u. @2 ?) F) k& L, ~

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

' c8 o; E* u5 s( @, n* h2 V

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

) {8 v! X/ G6 h7 ~1 H, m% }5 Y

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

$ ~: o- ^3 u; ^' F' G) W7 K/ P

' d1 P7 C! Q& L3 w

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

% o, Z$ J4 y, t; k

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

7 g! m# K/ P/ {* Q

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

4 S6 S2 A" j u' n3 C, U

中途截留者更改

( L8 O0 c- w& f) O( t. s3 W

6 z% h: x2 W1 y1 m! e9 N, V; c( Z

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

0 d' k" j3 S$ e% C

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

9 m6 t2 _7 T/ z! q D/ p7 G1 I4 @

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

7 n7 |9 p7 ^; Q

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

8 z& z! u8 K H( Y! r- }& l

& T0 @" t1 P. Y) j, w

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

8 K4 ?4 d: i* O3 w3 o

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

# }$ E6 E! M! F& b# s" B$ b$ `9 t

在IAppServer::AS_GetRecords或者

, E- ~# F# C7 \ z0 B

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

: O& f/ ~2 `, U2 y# D

% e8 R6 }9 q; K% z- H4 s# h

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

0 p) M/ G: i4 k) `( V- B. N

IDataIntercept接口

! y" D* t! z/ i# I

+ y3 e, Y3 j5 h. d

__interface IDataIntercept;

. s* `: D R/ r! h3 o

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

7 M% W s" p1 w K B

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

1 s! k( X+ [) n. Z( D

tercept : public IUnknown

, Z9 ^; @- P0 V' w

{

* x4 T* m% T& ?2 ?$ o) ^

public:

* X) |$ s' j& E, Z% X$ S) X4 ~3 U

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

- L" ^0 a% h4 t1 L5 |% e

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

/ {% M7 }( l. H5 A7 b) b; m

};

3 e' O. C' k/ J! [$ e

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

; X+ q+ ~/ j) e$ } z9 L

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

8 Z7 c+ K& L2 ?2 ?

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

! }& ^$ L$ L: d* L( }

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

6 A( R0 O5 V) R3 \0 H

- {4 [4 S1 H5 p1 E

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

; ^" }& |: D6 O

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

0 {$ L8 j6 I0 ~. R7 R

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

" j5 ], d/ Z: [2 r1 q0 a

, n+ \. I$ J7 D; `3 o! P" d4 t+ [

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

6 s9 }6 {; Q# r9 w. I2 @, g

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

& V w4 ~" H+ S0 m/ `4 ^

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

& K9 ?' S$ q/ s

3 T6 E# J) X7 J; k

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

}2 x- j0 m8 K6 X7 [& k9 Q

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

0 t; G7 Q6 \" \( b" l1 e m: Y1 z j

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

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-14 01:07 , Processed in 0.422718 second(s), 51 queries .

回顶部