QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

* t1 o$ r$ l# h" f" g4 k/ n, e+ B

, I; a8 j0 |6 c" @" ~: d1 Y

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

; I* ^+ y8 G5 H) \; Q

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

$ s) [) N) a1 S- X( p# p+ {

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

# U9 c( g. K! O; b5 E/ J6 |* H

是对其的有益补充

* G& Q# c6 u! X. o

" s2 k+ \3 S; G8 Q* M- g

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

; w& ~; {% ~0 {1 H/ R

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

( z5 g8 H# E) l! d1 v& G4 Q& @

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

! ~- P' S1 t# O4 g( D. d/ T2 m

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

$ M0 m/ H8 X. E" c

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

" r7 c1 c4 E- }1 x* Z' n2 b8 K

3 \$ Y, C8 W: @. H

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

% {& S& x2 w* @9 l

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

4 {+ K% Y& E, b# D' A' x

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

6 B: C! e& F4 M, M- u

中途截留者更改

6 T' i$ ^" o6 F

, x( O" I8 C5 |' v. T9 O1 j4 M

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

4 F6 N" t$ ?% H& l2 |1 M. `. A% O

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

$ B k' q' g2 O" m( d

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

* S! ?$ F8 Y0 u" p4 c

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

" Y, L) f. Y3 J2 Y# B

6 S' B; t) i t! I3 y

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

7 a9 B5 ]& u9 k5 k2 |, N' A

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

+ _. G! ^2 o- X( x- `9 e

在IAppServer::AS_GetRecords或者

( W& E9 s3 a N3 t4 H, j

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

* q, q1 W9 D% b' g

2 V: A2 b. ]$ n: h' \

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

' \3 X1 Y- s i4 }

IDataIntercept接口

+ h% H; _8 S) N/ M. _) D5 T

5 j- ?1 K, g8 c# j% ]' W

__interface IDataIntercept;

; t3 v# n0 W9 Z* q

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

" s/ F/ M1 B- d h; m

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

$ S' ^% U" s' X/ E$ H! u% {$ E

tercept : public IUnknown

0 P+ v* T/ `+ B5 r2 s

{

* O( K8 f' X0 G7 Y) z

public:

{" L4 I1 l& s" W ]

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

" g6 S# f' j$ x/ E. Y0 T0 [1 I

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

6 m4 t* _( l5 [" n

};

! V5 |5 Y b1 |. k

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

S1 v. t3 K+ ^

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

8 r0 [1 T( v% T8 R% T

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

5 g' f9 [ X5 Z/ H- {9 p+ }* w3 D

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

& Y8 w- I, ~ B3 x, e

% o/ S S4 W' K; J4 Q2 d

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

7 V& o1 t& W, x, t2 z

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

+ z& ~4 W4 w5 V: u

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

' H; V# ~) X7 K; S- U& J# Y( m

" @: ?) o3 v7 H4 l ?1 ]) p

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

" i) {5 C" W. N, i* X

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

7 `6 @: W3 G8 x

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

# t' O8 O& w9 g0 L9 o! Q& ]

* f0 t. M! |& u; _( f

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

. \! o! m1 n7 H

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

, k# y1 R' E& d3 m% M- S0 J5 c

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

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-10 21:08 , Processed in 0.309886 second(s), 52 queries .

回顶部