QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

% z/ U/ G, x% h4 E

8 F& @2 r3 b, Z/ A7 ?

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

, s- B# J+ \5 ]& h& M+ r

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

. R& N2 Z1 c. f

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

4 S0 E5 E( l6 C! l1 B

是对其的有益补充

! W; `2 J. e+ W! N& [/ R

" m! `" o: h" o* {7 {* j8 {

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

' C2 z9 \, }+ I: y& B

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

# o% H/ d; g) {

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

2 y! i6 m8 k' B

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

2 G+ g- x. r! m2 D6 v9 M5 R

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

. G# F/ @2 [6 L8 X8 q

( F" r3 C' v1 @6 D- R0 Z1 P

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

5 r7 v& m& O4 m

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

8 K: j# k3 _2 i! D6 S( ?

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

; h* A/ m; r7 o

中途截留者更改

! z+ o1 D* U" T% |

3 O) X5 l. _* z7 |: [" j

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

3 R4 w6 ^# f( U+ q

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

) H/ v$ j/ N, A3 D r

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

' H3 x R% s" H4 z

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

6 ^/ d3 R: n* o% j

. m" s2 z& C* X4 O6 n! H

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

& ~7 M" ]2 i3 {) X" ]

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

2 C- ]- u9 T" E0 A/ V* \/ A. p. H; b d

在IAppServer::AS_GetRecords或者

, F# q! f' G! a( L: B

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

# q2 p& @7 n: A! `1 k3 k& O: }

: f5 {, @4 y9 j4 a% G

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

' @. p# ~; Q9 S, C+ N4 d# T( X+ s

IDataIntercept接口

( n# }4 v: W/ P* H) k! T, L, ?2 y

0 E5 q0 O5 H$ h: z" Q' V8 s

__interface IDataIntercept;

# Y5 c4 _) V0 f% ^

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

- g0 M/ h5 r) t5 ]! h* i% I

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

' F$ @3 K. J: ^+ ?

tercept : public IUnknown

& R; u) K# a1 D- h d$ z

{

. z/ r# e+ \3 }6 g6 T" w

public:

* L# G8 W; r6 j1 c: _# Z6 H0 S

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

6 z& f- T5 P" r5 ^, G9 K

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

5 V2 Y+ r! u0 R6 t

};

! `( e) k& q9 A- }. j* j- A) Q

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

- D/ w, P- ?" q& z

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

! j1 k' P$ i) t/ e

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

1 c, l/ x9 J- H/ o% v- P& G6 L8 }/ L6 _

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

% Q1 q- \# G/ z! [5 D

5 y8 A; H" [% b5 \! E

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

( u+ g% q0 A; \3 x" ~

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

5 u, U: I0 U# [6 D( x l- M

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

" l9 Q9 S& y) i; F0 x

: C/ S( O8 K9 {/ `& K( p/ V9 N

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

% L F+ i, [) D2 O# j& `+ N

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

$ S# w, T" P7 |# r2 T

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

& {7 d& W, k! K

3 q' B* ^7 T3 Q0 L7 y$ a8 j9 A+ _; M

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

* `3 l- A" b: {' u

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

% D3 X. l6 i. @9 r: R! l* Y4 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 03:10 , Processed in 0.284716 second(s), 52 queries .

回顶部