QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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' W

IDataIntercept接口

; 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! A

typedef 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

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

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-13 04:22 , Processed in 0.327376 second(s), 52 queries .

回顶部