2004-10-15 撰写
本文适合对网格计算及globus感兴趣的朋友阅读。
globus toolkit 3的安全机制是它的一大特性。这个安全机制在即将发布的gt4中基本上没有修改。它是对web service的一个补充。
一 实现的安全内容包括:
1 实现两个计算网格结点间的安全通信
2 实现安全的穿越不同组织间的边界,因此有一个中心管理的安全系统。
3 实现用户的“Single sign-on”(单次验证),即访问多个网格资源(有权访问)只需要验证一次。
二 使用的基础技术:公共密钥概念
B给A发信息,A持有2个密钥,公开密钥Kea,保密密钥Kda。B用Kea加密,传给A,A用Kda解密。
三 globus所使用的安全证书(GSI 证书)包括
主题名(证书代表的用户或对象),公共密钥(主题拥有的),CA(给证书签名的那个CA)的identity,CA的数字签名
四 一个重要概念Mutual Authentication(互相鉴别)
二者都有证书,二者都信任那个给他们证书签字的CA,那么二者就可以互相证明对方是对方所说的那位。(B说他是B,A可以证明B说的是正确的)
五 在globus中的具体鉴别过程
例:B鉴别A。
A把他的证书发给B,证书上的信息告诉B,1 A称他是谁(主题),2 A的公开密钥,3 CA的identity和签名。这样B通过鉴别CA的数字签名来证明这个证书合法(是那个他所信任的CA),下面证明A真的是A,他给A发一个随机消息,让A给消息加密,A用他的保密密钥将消息加密,发给B,B用A的公开密钥解密,看是否还是那条消息。鉴别结束。同样的方法,A还要鉴别B。
一旦Mutual Authentication成功,GSI将退出以减少因加密解密导致的负载,如果双方愿意,GSI可以提供一个共享密钥。还可以提供一个叫通信完整性的特性,可以保证窃听者可以读通信内容,但无法修改通信内容(即使改了,双方也能通过完整性以确定消息被改过)(这个特性会加重负载,但不是很大)。
保证保密密钥保密性,Globus toolkit将密钥保存在本机硬盘上,同时设定了一个passphrase(设置GSI时设定),用来给保密密钥加密。还可以将密钥保存在smartcard上(建议)。
六 Delegation and Single Sign-On
委托,与单次验证,是SSL的一个扩展,通过创建代理来减少enter passphrase次数。代理包含一个新的证书(新公共密钥,新保密密钥,User's identity),这个证书是User签的,而不是CA。代理有生命期限(globus中缺省为1天)。这个扩展只应用到了GSI及基于GSI的软件(Globus,girdftp),Globus Project正在努力联系Grid Forum和IETF以将这个委托机制加入到其他基于SSL的软件中。SSL(Secure Sockets Layer),SSL=TLS(Transport Layer Security)
七 globus安全认证配置过程
调用setup-gsi来配置simple CA(一个globus提供的CA实现)
配置好CA后,会在TRUSTED_CA 目录里有
globus-user-ssl.conf.XXXXX 用户证书申请
globus-host-ssl.conf.XXXXX 主机(或service)证书申请
grid-security.conf.XXXXXX 基本配置,供上两个配置文件使用
XXXXXX是CA的hash code,
申请证书时:
grid-cert-request,创建符号链接,from GRID_SECURITY 目录 to TRUSTED_CA 目录
GRID_SECURITY/globus-user-ssl.conf --> TRUSTED_CA/globus-user-ssl.conf.XXXXXX
GRID_SECURITY/globus-host-ssl.conf --> TRUSTED_CA/globus-host-ssl.conf.XXXXXX
GRID_SECURITY/grid-security.conf --> TRUSTED_CA/grid-security.conf.XXXXXX
XXXXX.0: trusted CA 证书
XXXXX.signing_policy:一个配置文件,定义了域所要用的CA
Gridmap搜索规则
如果是root用户
GRIDMAP environment variable为/etc/grid-security/grid-mapfile
如果是其他用户
GRIDMAP environment variable为HOME/.gridmap
鉴别请求规则:
鉴别按照一下顺序进行: service credential, host credential, proxy credential and user credential.
以下为鉴别是用到的环境变量及证书文件。
Service credentials:
环境变量:X509_USER_KEY和X509_USER_CERT
/etc/grid-security/<service>/<service>{cert,key}.pem
GLOBUS_LOCATION/etc/<service>/<service>{cert,key}.pem
HOME/.globus/<service>/<service>{cert,key}.pem
Host credentials:
环境变量:X509_USER_KEY和X509_USER_CERT
/etc/grid-security/host{cert,key}.pem
GLOBUS_LOCATION/etc/host{cert,key}.pem
HOME/.globus/host{cert,key}.pem
Proxy credentials:
环境变量:X509_USER_PROXY
/tmp/x509up_u<uid>
User credentials:
环境变量:X509_USER_KEY和X509_USER_CERT
HOME/.globus/user{cert,key}.pem
HOME/.globus/usercred.p12