新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Web服务(Web Services,WS), 语义Web服务(Semantic Web Services, SWS)讨论区: WSDL, SOAP, UDDI, DAML-S, OWL-S, SWSF, SWSL, WSMO, WSML,BPEL, BPEL4WS, WSFL, WS-*,REST, PSL, Pi-calculus(Pi演算), Petri-net,WSRF,
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLW3CHINA.ORG讨论区 - Web新技术讨论『 Web Services & Semantic Web Services 』 → Secure and Flexible Certificate Access in WSSecurity 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 12632 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Secure and Flexible Certificate Access in WSSecurity 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flanker721 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:23
      积分:189
      门派:XML.ORG.CN
      注册:2006/12/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flanker721发送一个短消息 把flanker721加入好友 查看flanker721的个人资料 搜索flanker721在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flanker721的博客楼主
    发贴心情 Secure and Flexible Certificate Access in WSSecurity

    Secure and Flexible Certificate Access in WSSecurity
    through LDAP Component Matching
    Sang Seok Lim
    IBM Watson Research Center
    P.O. Box 218
    Yorktown Heights, NY 10598
    slim@us.ibm.com
    Jong Hyuk Choi
    IBM Watson Research Center
    P.O. Box 218
    Yorktown Heights, NY 10598
    jongchoi@us.ibm.com
    Kurt D. Zeilenga
    IBM Linux Technology Center
    Redwood City, CA 94105
    zeilenga@us.ibm.com
    ABSTRACT
    As an integral part of the Web Services Security (WS-Securi
    ty), directory services are used to store and access X.509 cer-
    ti&macr;cates. Lightweight Directory Access Protocol (LDAP) is
    the predominant directory access protocol for the Internet,
    and hence for the Web services. Values of LDAP attribute
    and assertion value syntaxes, though de&macr;ned using ASN.1,
    are encoded in simple octet string formats which generally
    do not preserve the complete structure of the abstract val-
    ues. As a result, LDAP matching rules for certi&macr;cates need
    to be provided in a certi&macr;cate-syntax speci&macr;c way, while
    X.500 matching rules can be constructed from structured
    ASN.1 syntax de&macr;nition. Moreover, LDAP has traditionally
    lacked the capability to make assertions against components
    of values of complex syntaxes such as X.509 certi&macr;cates. The
    WS-Security needs to be able to locate a target X.509 cer-
    ti&macr;cate by matching against arbitrary certi&macr;cate components
    in its security token references. Therefore, WS-Security re-
    quires the directory server to be prepared with all the possi-
    ble matching functions for maximum °exibility. This is very
    cumbersome due to the lack of ASN.1 awareness in LDAP
    server implementations. This led to development of reme-
    dies such as the recently proposed Certi&macr;cate Parsing Server
    (XPS). XPS extracts relevant components of the certi&macr;cate
    and stores them in separate and searchable attributes. Due
    to the signi&macr;cant downside of these remedies, we decided
    to seek after an ASN.1 based Component Matching alterna-
    tive in an attempt to make an LDAP directory server ASN.1
    aware. With Component Matching and ASN.1 awareness,
    LDAP can provide WS-Security with various matching rules
    °exibly. In this paper, we describe our implementation of
    the Component Matching and ASN.1 awareness in OpenL-
    DAP Software. This paper will also describe the use of the
    Component Matching technology in various security com-
    ponents of Web Services, especially in the context of WS-
    Security and XKMS. The experimental results show that
    °exible and secure certi&macr;cate access can be accomplished
    ACM Workshop on Secure Web Services, October 29,2004, Fairfax VA,
    USA. Copyright 2004 ACM 158113973X/
    04/0010....$5.00.
    without sacri&macr;cing performance and manageability.
    Categories and Subject Descriptors
    H.3.5 [Information Storage and Retrieval]: Online In-
    formation Services-Web-based services; C.5.5 [Computer
    System Implementation]: Metrics|Servers
    General Terms
    Security, Design
    Keywords
    PKI, X.509 Certi&macr;cate, Certi&macr;cate Repository, Component
    Matching, LDAP
    1. INTRODUCTION
    Public Key Infrastructure (PKI) [6] is an integral part of the
    WS-Security speci&macr;cation [17] which provides an application-
    layer security framework for Web services by including se-
    curity information in SOAP (Simple Object Access Pro-
    tocol) [1] messages. Portions of a SOAP message can be
    signed in order to ensure integrity and can be encrypted to
    ensure con&macr;dentiality. Certi&macr;cate Authority (CA) provides
    the most universal form of the Security Token Service to
    both Web service providers and requesters. The use of PKI
    ensures the authenticity of the security tokens themselves.
    The public key of a Web services entity is used to validate
    the integrity and authenticity of SOAP messages which were
    established by the corresponding private key and to encrypt
    the contents of the SOAP messages.
    X.509 certi&macr;cates [4] are often managed in the directory
    and are accessed through standard directory access proto-
    cols such as X.500 [11] Directory Access Protocol (DAP) [7]
    and Lightweight Directory Access Protocol (LDAP) [5]. In
    order to embed an X.509 certi&macr;cate as a security token in
    a SOAP message, a Web service requester needs to retrieve
    the X.509 certi&macr;cate from a CA. Alternatively, if the Web
    service requester includes a certi&macr;cate URI as a reference to
    the security token, it is a Web service provider who retrieves
    the certi&macr;cate from the CA. Even when the certi&macr;cate is
    embedded in the SOAP message, the Web service providers
    may need to contact the certi&macr;cate repository in order to
    verify whether the certi&macr;cate has been revoked by retrieving
    a Certi&macr;cate Revocation List (CRL).
    LDAP is predominantly being used as the directory access
    protocol for the Internet. Compared to X.500 Directory
    87
    Access Protocol, LDAP renders lightweight directory service
    by providing string-based encodings of names and attribute
    values (hence of assertion values), simple protocol encoding,
    direct mapping onto TCP/IP, and the reduced number of
    operations. However, these simpli&macr;cations come at a price:
    LDAP generally does not preserve the complete structure
    of abstract values and the protocol and its implementations
    are unable to harness the full power of the underlying ASN.1
    data de&macr;nitions. Due to the use of specialized string-based
    encodings for each syntax, adding support for new syntaxes
    and matching rules requires new development e&reg;orts. DAP
    avoids these problems by the use of ASN.1 (Abstract Syntax
    Notation One) [9] encoding rules, in particular the Basic
    Encoding Rules [8].
    Though these limitations were not viewed as a signi&macr;cant
    problem during LDAP's early years, it is clear that a num-
    ber of directory applications, such as PKI, are signi&macr;cantly
    hampered by these limitations. For instance, in PKI, a cer-
    ti&macr;cate needs to be located based upon the contents of its
    components, such as serialNumber, issuer, key identi&macr;ers,
    and subjectAltName [10]. LDAP search operations do not
    understand the ASN.1 type of the certi&macr;cate attribute and
    the assertion as de&macr;ned in [10], because attributes and asser-
    tions in LDAP are encoded in an octet string with syntax
    speci&macr;c encoding rules. Not only would it require excep-
    tional e&reg;ort to support matching rules such as certi&macr;cateM-
    atch and certi&macr;cateExactMatch as de&macr;ned in [10], that e&reg;ort
    would have to be repeated for each matching rule introduced
    to match on a particular component (or set of components)
    of a certi&macr;cate. Because of the amount of e&reg;ort each server
    vendor must undertake to support each new rule, few new
    rules have been introduced to LDAP since inception. Ap-
    plications had to make due with existing rules.
    Foreseeing the need to be able to add new syntaxes and
    matching rules without requiring recoding of server imple-
    mentations, the directory community engineered a number
    of extensions to LDAP to address these limitations. The
    Generic String Encoding Rules (GSER) [14] was introduced
    and is now used in describing and implementing new LDAP
    string encodings. GSER produces human readable UTF-
    8 [22] encoded Unicode [19] character strings and supports
    reuse of existing LDAP string encodings. The Component
    Matching [15] mechanism was also introduced to allow LDAP
    matching rules to be de&macr;ned in terms of ASN.1. Imple-
    mentations may use automated systems to (statically and
    dynamically) value parsing and matching functions. Addi-
    tionally, Component Matching also introduces rules which
    allow arbitrary assertions to be matched against selected
    component values of complex data types such as certi&macr;cates.
    For example, the Component Matching enables matching
    against the selected components of a certi&macr;cate without the
    need to de&macr;ne a speci&macr;c matching rule or requiring custom
    codes to implement that matching rules for the certi&macr;cate
    attributes.
    Though the directory community saw GSER and Compo-
    nent Matching as an eloquent solution to LDAP syntax and
    matching rule limitations, there was some concerns, as most
    LDAP server implementations were not ASN.1 aware, that
    its adoption would be slow. To ful&macr;ll immediate needs of
    PKI applications, another solution based upon component
    extraction (or \data de-aggregation") was proposed and im-
    plemented in Certi&macr;cate Parsing Server (XPS) [2]. While
    some viewed this as being more pragmatic, as it shifted sig-
    ni&macr;cant complexity from the server to the client and intro-
    duced a number of security and management issues, it is con-
    sidered by many to be not a workable solution for PKI appli-
    cations (and certainly not a workable general solution to the
    component matching problem). In the spring of 2004, IBM
    undertook an engineering e&reg;ort to provide ASN.1 awareness,
    GSER, and component matching support in the OpenLDAP
    Project's Standalone LDAP Daemon (slapd) (the directory
    server component of OpenLDAP Software). We started from
    implementing ASN.1 awareness in the server by providing an
    automatic path to generate encoders and decoders for BER,
    DER [8], and GSER from given ASN.1 data type de&macr;ni-
    tions. In addition, this ASN.1 infrastructure automatically
    generates the component extraction and matching routines
    for the individual components of an attribute type. The
    search &macr;lter functions were modi&macr;ed to support Component-
    Filter, ComponentAssertion, and ComponentReference. As
    a result, it becomes possible to support complex matching
    such as X.509 certi&macr;cateMatch with a Certi&macr;cateAssertion
    syntax without manually de&macr;ning syntax speci&macr;c encodings
    and matching routines.
    We show an example of the °exible reference method with an
    extension to <ds:X509Data> named, GenericCerti&macr;cateRef-
    erence which is designed after the certi&macr;cateMatch of the
    X.509 recommendation. De&macr;ning GenericCerti&macr;cateRefer-
    ence was easy because the Component Matching infrastruc-
    ture could automatically generate the corresponding certi&macr;-
    cateMatch matching rules from the ASN.1 type speci&macr;ca-
    tion. Web services can also use Component Matching in
    a URI reference of Security Token Reference by specifying
    the componentFilterMatch matching rule as the extended
    matching rule in the LDAP URI. Component Matching pro-
    vides XKMS with the interfaces to PKI, allowing it to lo-
    cate and validate a certi&macr;cate °exibly. With the Component
    Matching enabled LDAP server as the security token service,
    the speci&macr;cation of token references will become very °ex-
    ible. The Component Matching also &macr;lls the security gap
    in the certi&macr;cate access which required special Directory In-
    formation Tree (DIT) structuring to avoid. The Component
    Matching and GSER facilitate the °exible and extensive use
    of security token references in SOAP messages.
    This paper is organized as follows. Section 2 introduces
    WS-Security and its use of X.509 certi&macr;cates as security to-
    kens. Section3 presents an example X.509Data extension
    element and how Component Matching technology is used
    for XKMS. Section 4 introduces GSER and the Component
    Matching. In Section 5, we present the design of the GSER
    and Component Matching support in the OpenLDAP di-
    rectory server. Section 6 shows experimental results of our
    prototype implementation of LDAP component matching in
    slapd. Section 7 concludes the paper.
    2. WEB SERVICES SECURITY
    2.1 SOAP and WSSecurity
    SOAP (Simple Object Access Protocol) is a protocol for
    invoking methods on servers, services, components, and ob-
    jects [1]. It is a way to create widely distributed, complex
    computing environments using an existing Internet infras-
    88
    01 <?xml version=”1.0” encoding=”utf-8”?>
    02 <S:Envelope xmlns:S=http://www.w3.org/2001/12/soap-envelope>
    03 <S:Header>
    04 <wsse:Security>
    05 <wsse:SecurityTokenReference wsu: Id=“#X509Token
    06 <wsse:Reference
    07 URI=“ldap://ldap.example.com/dc=example, dc=ibm???(userCertificate:componentFilterMatch:=
    08 and:{ item:{ component “tbsCertificate.serialNumber”, rule allComponentsMatch, value 9453771 },
    09 item:{ component “tbsCertificate.extensions.1.KeyUsage.value”, rule bitStringMatch, value ‘01000000’B }}”)>
    10 </wsse:SecurityTokenReference>
    11 <ds:Signature>
    12 <ds:SignedInfo>
    13 <ds:CanonicalizationMethod
    14 Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    15 <ds:SignatureMethod
    16 Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    17 </ds:SignedInfo>
    18 <ds:SignatureValue>
    19 Hp1ZkmFZ/2kQLXDJbchm5gK..
    20 </ds:SignatureValue>
    21 <ds:KeyInfo>
    22 <wsse:SecurityTokenReference>
    23 <wsse:Reference URI="#X509Token"/>
    24 </wsse:SecurityTokenReference>
    25 </ds:KeyInfo>
    26 </ds:Signature>
    27 </wsse:Security>
    28 </S:Header>
    29 <S:Body>
    30 <m:GetLastTradePriceResponse xmlns:m=”http://example.com”>
    31 <Price>34.5</Price>
    32 </m:GetLastTradePriceResponse>
    33 </S:Body>
    34 </S:Envelope>
    Figure 1: Web Service Request and Response with Security Token Reference.
    tructure, enabling Web service developers to build Web ser-
    vices by linking heterogeneous components over the Internet.
    For interoperability over heterogeneous platforms, it is built
    on top of XML and HTTP which are universally supported
    in most services.
    WS-Security [17] is recently published as the standard for
    secure Web Services. It provides a set of mechanisms to
    help Web Services exchange secure SOAP messages. WS-
    Security provides a general purpose mechanism for signing
    and encrypting parts of SOAP messages for authenticity and
    con&macr;dentiality. It also provides a mechanism to associate se-
    curity tokens with the SOAP messages to be secured. The
    security token can be cryptographically endorsed by a se-
    curity authority. It can be either embedded in the SOAP
    message or acquired externally.
    2.2 LDAPPKI
    in WSSecurity
    In WS-Security, a security token can be either embodied in
    a SOAP message or acquired from an external service by
    following SecurityTokenReference [17]. Signed security to-
    kens such as X.509 certi&macr;cates are accessed through di&reg;er-
    ent forms of references de&macr;ned in the WS-Security standard
    and in various security token pro&macr;les [18]. The security to-
    kens can be retrieved and registered with the existing access
    methods. Either standard access protocols such as LDAP
    and HTTP or an ad-hoc access mechanism can be used to ac-
    cess security tokens. XKMS (XML Key Management Spec-
    i&macr;cation) [20] also provides a Web Service client which lacks
    direct access to the security tokens with an o&sup2;oading mech-
    anism. X.509 certi&macr;cates are the most universal form of the
    security tokens which is well proven in the heterogeneous
    and distributed network, the Internet. X.509 certi&macr;cates
    were originally designed to be stored in directories. Hence,
    directory access protocols such as X.500 and LDAP are the
    most appropriate way to access them in terms of the naming
    and information models and its powerful search capabilities.
    In the following example scenario which illustrates an op-
    erational °ow of accessing security tokens for a SOAP mes-
    sage shown in Figure 1, it is assumed that the Web service
    provider needs to contact the Security Token Service in or-
    der to fetch and verify its security token. The °ow is as
    follows:
    1. The service requester constructs a SOAP message. It
    contains a signature for the key elements of the mes-
    sage. <ds:signature> is placed in the Security Header
    block (lines 03 - 28 in Figure 1). In this scenario,
    a X.509 certi&macr;cate is located in the external Security
    Token Service. The reference to the external token
    or the certi&macr;cate is included in the message within
    <SecurityTokenReference> elements (line 05 - 10). The
    constructed message is sent to the Web Service.
    2. TheWeb Service fetches KeyInfo in line 21-25. It refer-
    ences X.509Token, or ID which is de&macr;ned in line 05-10
    as SecurityTokenReference. In this case, the reference
    is an LDAP URI in line 07 - 09. In the URI, there
    is a component &macr;lter in which \tbsCerti&macr;cate.issuer"
    and \tbsCerti&macr;cate.extensions.1.keyUsage.value" refer
    to the corresponding components of a certi&macr;cate and
    9453771 and \'01000000'B" are assertion values against
    the components. More detailed explanation of the
    component &macr;lter will be described in Section 5.2.1.
    89
    <wsse:SecurityTokenReference>
    <wsse:KeyIdentifier EncodingType=“…#GSER”
    ValueType=“…#GenericCertificateFields”
    { serialNumber 9453771, issuer {type cn, value ray} ,
    keyUsage ‘100000000’B }
    <wsse:KeyIdentifier>
    </wsse:SecurityTokenReference>
    CertificateAssertion ::= SEQUENCE {
    serialNumber [0] CertificateSerialNumber OPTIONAL,
    issuer [1] Name OPTIONAL,
    subjectKeyIdentifier [2] SubjectKeyIdentifier OPTIONAL,
    authorityKeyIdentifier [3] AuthorityKeyIdentifier OPTIONAL,
    certificateValid [4] Time OPTIONAL,
    privateKeyValid [5] GeneralizedTime OPTIONAL,
    subjectPublicKeyAlgID [6] OBJECT IDENTIFIER OPTIONAL,
    keyUsage [7] KeyUsage OPTIONAL,
    subjectAltName [8] AltNameType OPTIONAL,
    policy [9] CertPolicySet OPTIONAL,
    pathToName [10] Name OPTIONAL,
    subject [11] Name OPTIONAL,
    nameConstraints [12] NameConstraintsSyntax OPTIONAL
    }
    <wsse:SecurityTokenReference>
    <ext:KeyIdentifier EncodingType=“…#XER”
    ValueType=“…#GenericCertificateFields”
    <CertificateAssertion>
    <serialNumber>9453771</serialNumber>
    <issuer>cn=ray</issuer>
    <keyUsage>Signature</keyUsage>
    </CertificateAssertion>
    <wsse:KeyIdentifier>
    </wsse:SecurityTokenReference>
    (b) XER
    (c) GSER
    (a) CertificateAssertion XML Schema
    Figure 2: Certi&macr;cate Assertion Schema De&macr;nition and GenericCerti&macr;cateReference XER and GSER.
    3. The Security Token Service searches for the certi&macr;-
    cate according to the LDAP URI from the Web ser-
    vice provider and returns the resulting certi&macr;cate as a
    search result.
    4. TheWeb service provider validates the <ds:Signature>
    in the <wsse:Security> header and processes the SOAP
    message to return the service result to the Web service
    requester.
    In the above scenario, the Web service retrieves the secu-
    rity token stored in a directory through LDAP as a security
    token access method. In order to retrieve the certi&macr;cate,
    the Web service will send an LDAP request correspond-
    ing to the reference URI. The Security Token References
    can have various forms of references in addition to LDAP
    URI. In case of X.509 certi&macr;cates, they can be referenced
    by X509IssuerSerial, X509SubjectName, and X509SKI. The
    <ds:X509Data> element of the <ds:KeyInfo> can also be
    extended to represent elements from external namespaces.
    2.3 LDAP Deficiencies for Certificate Access
    Although WS-Security needs to be able to locate a certi&macr;-
    cate by matching against arbitrary components of a certi&macr;-
    cate, LDAP does not easily provide an universal matching
    mechanism to the X.509 certi&macr;cate. In LDAP, attribute and
    assertion values are represented in octet string. No struc-
    tural information is stored along with them. A brute force
    way to provide matching for complex attributes is to pro-
    vide syntax speci&macr;c matching rules. For a X509IssuerSerial
    reference for example, it is possible to write a special match-
    ing function which matches the certi&macr;cate attribute against
    the assertion value consisting only of issuer name and serial
    number. Obviously, it will be too costly to de&macr;ne syntax
    speci&macr;c matching rules for all possible references. In or-
    der for an LDAP server to support X509SubjectName and
    X509SKI, matching rules speci&macr;c to the references need to
    be implemented. For a very °exible reference such as Cer-
    ti&macr;cateMatch as de&macr;ned in X.509 recommendation [10], it
    would be very di±cult to provide the corresponding match-
    ing rule in LDAP. Moreover, it would be di±cult to cope
    with changes such as certi&macr;cate extensions.
    To address this mismatch between X.509 certi&macr;cate and
    LDAP, the attribute extraction mechanism was recently pro-
    posed in the Certi&macr;cate Parsing Server (XPS) designed by
    the University of Salford [3]. In XPS, all the certi&macr;cate
    attributes are extracted and stored as simple and search-
    able LDAP attributes and matching is performed on the ex-
    tracted attributes. Although it facilitates matching against
    components of a complex attribute, it can be considered as
    a suboptimal approach due to the following respects. First,
    matching is performed on the extracted attributes but not
    on the certi&macr;cate itself. Because the contents of the ex-
    tracted attributes are mutable, there is a chance of return-
    ing wrong certi&macr;cates to Web services. It is strongly recom-
    mended for Web services to verify the returned certi&macr;cate
    again. In order to minimize the security hole, the server ad-
    ministrator must ensure the integrity of a certi&macr;cate and ex-
    tracted attributes. Second, when there is more than one cer-
    ti&macr;cate in a directory entry, one per key usage for example,
    the Web services may be returned with multiple certi&macr;cates
    even though they searched for certi&macr;cates having a speci&macr;c
    key usage. The matched values control [10] does not solve
    the problem, because matching is not performed on the cer-
    ti&macr;cate itself. It is inevitable to restrict the Directory Infor-
    mation Tree (DIT) structure in designing a certi&macr;cate DIT
    to avoid an additional searching step in the Web services [2].
    Third, the XPS does not facilitate matching against a com-
    plex assertion value as in X.500 directory. It is not possible
    to perform a °exible matching as in X.509 certi&macr;cateMatch
    without making the LDAP directory server ASN.1 aware.
    3. COMPONENT MATCHING
    In order to overcome the mismatch between LDAP and the
    requirement of °exible certi&macr;cate matching imposed by ad-
    vanced applications like Web Services, we decided to pro-
    vide 1) ASN.1-awareness and 2) Component Matching ca-
    pabilities to an LDAP directory server. With the ASN.1-
    awareness support for the LDAP server, ASN.1 values are
    manifested within the server. It will be possible to use an
    ASN.1 value in an assertion. Hence, matching can be per-
    formed in an abstract level according to the corresponding
    ASN.1 type de&macr;nition. With Component Matching, it be-
    comes possible to match an assertion value against speci&macr;c
    90
    Certificate / CRL Repository (LDAP)
    Registration
    Authority (RA)
    Certificate
    Authority (CA)
    XKMS Trust
    Service
    Client
    Tier 0 RetrievalMethod
    Tier 1 / 2
    Locate / Validate
    Key Mgmt
    Certificate / CRL
    Access
    Publish
    Certificate
    Publish
    Certificate / CRL
    Management
    Transactions
    Management
    Transactions
    Registration
    Revocation
    Recovery
    Figure 3: XKMS in PKI.
    components of a complex attribute. For example, an infras-
    tructure is provided to perform matching on an arbitrary
    component of an X.509 certi&macr;cate, such as serialNumber,
    issuer, keyUsage, and subjectAltName.
    Compared to the XPS approach, our approach of providing
    ASN.1 awareness and Component Matching has the follow-
    ing advantages:
    1. It does not store the X.509 attributes separate from
    the certi&macr;cate itself. Therefore, it does not increase
    storage requirements and does not open a potential to
    the compromised integrity between a certi&macr;cate and
    its extracted attributes.
    2. Matching is performed directly on the contents of the
    certi&macr;cate but not on the associated attribute's con-
    tents. Even if there is more than one certi&macr;cate in a
    user's entry, it can return only the matched certi&macr;cate
    when it is used with the matched values control [10].
    3. Flexible matching becomes possible because match-
    ing between an attribute value and an assertion value,
    both represented in ASN.1, will be provided.
    3.1 Component Matching and Security Token
    Reference
    In the X.509 token pro&macr;le [18] of WS-Security, it is de&macr;ned
    that the following three types of token references can be
    used:
    1. Reference to a Subject Key Identi&macr;er: the value of a
    certi&macr;cate's X.509SubjectKeyIdenti&macr;er.
    2. Reference to a Security Token: either an internal or
    an external URI reference.
    3. Reference to an Issuer and Serial Number: the certi&macr;-
    cate issuer and serial number.
    Because it is de&macr;ned to be extensible, any security token can
    also be used with appropriate schemas. It is shown in Fig-
    ure 1 that the <ds:X509Data> element of <ds:KeyInfo>
    is used as the security token. <ds:X509Data> de&macr;ned in
    [21] contains various references such as X509IssuerSerial,
    X509SubjectName, X509SKI, and so on. With the ASN.1
    awareness and the Component Matching support in an Open
    LDAP directory server, these references can be used with-
    out the need of implementing syntax speci&macr;c matching rules
    for various types of the references. It is also possible to
    use elements from external namespace in <ds:X509Data>
    for further °exibility. Figure 2 shows one such an example.
    Here, the GenericCerti&macr;cateReference element from dsext
    namespace is used to provide a generic reference mecha-
    nism which implements Certi&macr;cateMatch in the X.509 rec-
    ommendation [10]. The reference consists of a sequence of
    certi&macr;cate attributes, serialNumber, issuer, subjectKeyIden-
    ti&macr;er, authorityKeyIdenti&macr;er, certi&macr;cateValid, privateKey-
    Valid, subjectPublicKeyAlgID, keyUsage, subjectAltName,
    policy, pathToName shown in Figure 2 (a), each of which is
    de&macr;ned optional. By using the example reference, it would
    be possible to resolve a security key reference in a very °ex-
    ible way. For instance, searching for a certi&macr;cate having a
    subjectAltName with a speci&macr;c keyUsage becomes possible.
    Figure 2 (b) shows that the reference is encoded in XML
    while Figure 2 (c) shows that the reference is encoded in
    GSER.
    With the ASN.1 aware and Component Matching enabled
    LDAP server, the °exible reference format for an X.509 cer-
    ti&macr;cate can now be de&macr;ned in ASN.1 with con&macr;guring the
    LDAP server to understand the reference. The required
    matching rules, encoders, and decoders for the reference
    type will be automatically generated and integrated to the
    LDAP server. This improvement in °exibility will foster the
    °exible use of security token references in the Web Services
    by making it easy to create and update references.
    3.2 Component Matching and XKMS
    Figure 3 illustrates a general PKI architecture which is com-
    prised of CA, RA, and two types of end-entities. When a
    PKI is used for Web Services, there are two types of PKI
    clients: one directly accesses PKI; the other indirectly ac-
    cesses it by using service proxies such as XML Key Man-
    agement Speci&macr;cation (XKMS) [20] services which provide
    clients with a well de&macr;ned interface to a PKI so as to hide
    the complexities of the underlying PKI. The XML Key Infor-
    mation Service Speci&macr;cation (X-KISS) is one of the services
    provided by XKMS [20]. It de&macr;nes two key services: locate
    and validate. In the following sections, it will be presented
    how the Component Matching can be used in the X-KISS
    services with respect to certi&macr;cates and CRLs access.
    3.2.1 Certificate Access
    Figure 4 shows an example X-KISS locate service request. In
    the request, there is <QueryKeyBinding> which describes
    how to bind this request to a desired public key. In the
    example, <KeyUsage> and <ds:KeyInfo> are provided to
    bind the request. A client using the XKMS service sends the
    X-KISS Locate request shown in Figure 4. In response to
    the request, the XKMS service needs to resolve the request
    and then might contact an LDAP directory server to locate
    the desired certi&macr;cate. In the example locate request, the
    serial number in line 15-17 and the key usage in line 07 are
    supplied by the client for <QueryKeyBinding>. With Com-
    ponent Matching, the component &macr;lter will be constructed
    91
    00 <?xml version="1.0" encoding="utf-8"?>
    01 <LocateRequest xmlns:ds=http://www.w3.org/2000/09/xmldsig#
    02 xmlns:xenc=http://www.w3.org/2001/04/xmlenc#
    03 Id="I8fc9f97052a34073312b22a69b3843b6“
    04 Service=http://test.xmltrustcenter.org/XKMS
    05 xmlns="http://www.w3.org/2002/03/xkms#">
    06 <QueryKeyBinding>
    07 <KeyUsage>Signature</KeyUsage>
    08 <ds:KeyInfo>
    09 <wsse:SecurityTokenReference>
    10 <ds:X509Data>
    11 <ds:X509IssuerSerial>
    12 <ds:X509IssuerName>
    13 o=IBM,c=US
    14 </ds:X509IssuerName>
    15 <ds:X509SerialNumber>
    16 9453771
    17 </ds:X509SerialNumber>
    18 </ds:X509IssuerSerial>
    19 </ds:X509Data>
    20 </wsse:SecurityTokenReference>
    21 </ds:KeyInfo>
    22 </QueryKeyBinding>
    23 </LocateRequest>
    Figure 4: Example XKMS Locate Service Request.
    from the request by the XKMS services as shown in Figure 5.
    The component reference \tbsCerti&macr;cate.extension.*" refers
    to all extensions of the certi&macr;cate of which KeyUsage is one
    extension. In the value, \extndID 15" is the object identi&macr;er
    of a KeyUsage and \'100000000'B" is used to check if a cer-
    tain bit(the &macr;rst bit for signature) is set. The corresponding
    component &macr;lter of Figure 5 enables the XKMS service to
    &macr;nd a certi&macr;cate of an issuer for a signature purpose only. If
    the client uses GenericCerti&macr;cateReference explained in the
    previous section and the Component Matching is supported
    in an LDAP directory server, the XKMS service can use ar-
    bitrary &macr;elds of a certi&macr;cate in order to construct component
    &macr;lters to process the locate request.
    3.2.2 CRL Access
    The XKMS service also provides an X-KISS Validate Ser-
    vice with which a client using XKMS services can check the
    status of a public key by sending some of <ds:KeyInfo> el-
    ements in <QueryKeyBinding> in line 08-21 of Figure 4.
    For instance, if it checks the validity of a X.509 certi&macr;cate
    using CRLs, the client may send <X509Data> containing
    <ds:X509SerialNumber> 9453771 </X509SerialNumber> in
    <QueryKeyBinding>. In response to the request, the XKMS
    service might choose to use either CRL based validation or
    Online Certi&macr;cate Status Protocol (OCSP) [16].
    A certi&macr;cate revocation list (CRL) [6] can be generated and
    distributed periodically by the CA, making it available on
    the Internet by typically using an LDAP directory server or
    aWeb server. Because a CRL contains the list of multiple re-
    voked certi&macr;cates, it can become quite large and burdensome
    to transmit it over the Internet. To alleviate this problems,
    OCSP was proposed to provide a timelier and more e±cient
    status mechanism. The XKMS service can speak to OCSP
    responders which can check the status of a certi&macr;cate. The
    OCSP responder returns the status (either good, revoked, or
    unknown) of a requested certi&macr;cate. With OCSP, the XKMS
    service does not need to download and scan the CRL, which
    are burdensome to the service.
    We conceive that Component Matching can be used as an
    (userCertificate:componentFilterMatch
    := and:{
    item:{
    component “tbsCertificate.serialNumber”,
    rule IntegerMatch,
    value 9453771
    },
    item:{
    component “tbsCertificate.extension.*”,
    rule allComponentsMatch,
    value {extnID 15, extnValue ‘100000000’B}
    }
    }
    )
    Figure 5: Example Component Filter.
    alternative to OCSP. The CRL is a sequence of pairs of a
    revoked certi&macr;cate's serial number and a revoked time [6].
    In order to check the status of a certi&macr;cate, the XKMS ser-
    vice needs to construct a component assertion by using the
    serial number of the certi&macr;cate as shown in the upper item
    of Figure 5 and send it to the LDAP directory server. Then
    the server will perform Component Matching on the CRL
    against the assertion to &macr;nd the asserted certi&macr;cate in the
    CRL. By using the Component Matching based CRL vali-
    dation, the whole CRLs is not required to be downloaded
    to the XKMS service. An LDAP server already has been
    widely used for distributing certi&macr;cates and CRLs. Hence,
    if the server can perform validity checking over LDAP as
    well, it will be a very practical and e±cient alternative to
    the OCSP which needs additional protocol layer, or and an
    OCSP responder.
    4. COMPONENT MATCHING AND GSER
    The attribute syntaxes of X.500 are de&macr;ned in ASN.1 types.
    Basically, the types are constructed structurally from basic
    types to composite types. Every &macr;eld of an ASN.1 type is a
    component. Component Matching [15] de&macr;nes how to refer
    to a component within an attribute value by retrieving the
    structural information of an ASN.1 type and how to match
    the component against an assertion value. Matching rules
    are de&macr;ned for the ASN.1 basic and composite types. It also
    de&macr;nes a new assertion and &macr;lter targeted for a component.
    These de&macr;nitions are based on ASN.1 so that they can be
    applied to any syntax, as long as the syntaxes are speci&macr;ed
    in ASN.1.
    A native LDAP encoding does not represent the structure
    of an ASN.1 type. Instead, it is represented either in octet
    string or in binary. With the LDAP encoding, as a result,
    it is di±cult to contain the structural information of ASN.1
    type in its representation. In order to solve this problem,
    Legg [14] recently proposed GSER (Generic String Encod-
    ing Rules). Component matching uses GSER as its basic
    encoding for the component &macr;lter. GSER generates a hu-
    man readable UTF-8 character string encoding of a given
    ASN.1 speci&macr;cation. It de&macr;nes UTF8 string encodings at
    the lowest level of primitive ASN.1 types such as INTE-
    GER, BOOLEAN, and STRING types and then it builds
    up more complex ASN.1 types such as SEQUENCE and
    SET from the lowest level. Thus, the structural information
    of an ASN.1 speci&macr;cation is maintained in encodings so that
    it can be recovered in the decoding process. By using GSER
    to store attribute values instead of the native LDAP string
    encoding, LDAP server will become capable of identifying
    92
    { version 2,
    serialNumber 12345 ,
    signature { algorithm 1.2.840.113549.1.14, parameters NULL},
    issuer {{type cn, value IBM trust} , {type o, value IBM},{type c, value US}},
    validity {notBefore {2004 01 13 18 59}, notAfter {2005 01 13 18 59} },

    }
    GSER encodings
    TBSCertificate :: = SEQUENCE {
    version [0] EXPLICIT Version DEFAULT v1,
    serialNumber CertificateSerialNumber,
    signature AlgorithmIdentifier,
    issuer Name,
    validity Validity,
    subject Name,
    subjectPublickKeyInfo subjectPublicKeyInfo,
    issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIOMAL
    subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL
    extensions [3] EXPLICIT Extensions OPTIONAL
    }
    typedef struct TBSCerticate{
    AsnInt version;
    AsnInt serialNumber;
    struct AlgorithmIdentifier* signature;
    struct Name* issuer;

    }
    C internal data structure
    Encoding
    EncTBSCertificate(…)
    Decoding
    DecTBSCertificate(…)
    ASN.1 Compiling
    Figure 6: ASN.1 TBSCerti&macr;cate speci&macr;cation, its compiler output, and example GSER encodings.
    the structure of ASN.1 speci&macr;cation of the attribute types.
    Furthermore, a component &macr;lter of an LDAP request is also
    encoded in GSER. Hence, GSER is an essential mechanism
    to ASN.1 awareness and Component Matching. GSER en-
    coding can also be used in an assertion to facilitate a very
    °exible and abstract matching of two ASN.1 values.
    Figure 6 shows the ASN.1 type speci&macr;cation of TBSCerti&macr;-
    cate and its GSER encodings. TBSCerti&macr;cate is de&macr;ned as
    SEQUENCE so that there are curly braces at the beginning
    and at the end of its GSER encodings. It has version, se-
    rialNumber etc. as its components inside of SEQUENCE.
    Within the braces in the encoding, there is version and 2, or
    its value, followed by a comma which separates the encod-
    ing of the subsequent &macr;eld. GSER de&macr;nes each basic type's
    encoding and then combines them structurally to more com-
    plex ones by using \f", \," and \g". On the other hand, a
    native LDAP encoding does not have any uniform rule to
    construct the structural information of attribute value in
    it.
    5. COMPONENTMATCHINGIMPLEMENTATION
    IN OPENLDAP
    An ASN.1 compiler translates ASN.1 modules into C data
    structures representing ASN.1 and their encoding / decod-
    ing routines as illustrated in Figure 7. We extended the eS-
    NACC ASN.1 compiler to implement the GSER backend in
    addition to the originally supported BER and DER [12]. It
    also generates component equality matching rules and com-
    ponent extract functions which will be discussed in the rest
    of the section in detail. In order to facilitate the integration
    of the newly de&macr;ned syntaxes without the need of rebuild-
    ing the slapd executable, the generated data structures and
    routines are built into a module which can be dynamically
    loaded to slapd.
    The rest of the section will provide a detailed description
    of the component matching in two steps. After describing
    how to make the OpenLDAP directory server ASN.1 aware,
    the description of component &macr;lter processing, aliasing, and
    ASN.1 types
    GS/B/DER decoder
    Component equality
    matching rule
    Component extract
    function
    OpenLDAP
    Server (slapd)
    Dynamic Module
    Load
    C Data structures
    Automatic
    generation
    eSNACC
    Compiler
    GSER back-end
    Figure 7: Input and Output of an eSNACC Com-
    piler.
    component indexing will be presented. Then, the overall
    operational °ow of Component Matching will be described.
    5.1 ASN.1 Awareness
    5.1.1 eSNACC Compiler
    We have implemented a GSER backend for the extended
    eSNACC compiler. GSER can be used as an LDAP en-
    codings for newly de&macr;ned attribute types. With GSER,
    string-based LDAP encodings can maintain the structures
    of their corresponding ASN.1 types. The assertion values
    in the component &macr;lter are also represented in GSER and
    the GSER decoders are used to decode them into their in-
    ternal representations. Figure 6 shows the example C data
    structure for a TBSCerti&macr;cate ASN.1 type and its corre-
    sponding GSER encodings. Generated C data structure for
    the ASN.1 type has data &macr;elds corresponding to components
    of the ASN.1 type. Once the C data structure for TBSCer-
    ti&macr;cate is instantiated, it can be converted into GSER en-
    codings by EncTBSCerti&macr;cate() and the encodings can be
    decoded into the C data structure by DecTBSCerti&macr;cate().
    The eSNACC compiler also generates matching rules and
    extract functions automatically which will be further dis-
    cussed in the next subsection.
    93
    Table 1: Attribute Aliasing Table.
    Alias Attribute Aliased Attribute Component Reference Matching Rule
    x509certi&macr;cateSerialNumber userCerti&macr;cate tbsCerti&macr;cate.serialNumber integerMatch
    x509certi&macr;cateIssuer userCerti&macr;cate tbsCerti&macr;cate.issuer distinguishedNameMatch
    5.1.2 Component Representation of ASN.1 Types
    A new data structure of slapd is needed to represent an
    attribute value at its component level because the original
    data structure for attributes does not contain the structure
    information of an ASN.1 type in its representation. Every
    &macr;eld of an ASN.1 type is a component which is addressable
    by a component reference. In our implementation, the com-
    ponent data structure consists of two parts: one to store
    the value of the component; the other to store a component
    descriptor which contains information on how to encode, de-
    code, and match the value of the component.
    The data structure of a component appears as a tree which
    keeps the structural information of the original ASN.1 spec-
    i&macr;cation using nodes and arcs. Each component node of
    the tree not only has data values but also represents the
    structural information of the given ASN.1 speci&macr;cation by
    having links to subordinate nodes. In the tree, any node
    can be referenced by a component reference in order to per-
    form matching on the corresponding component. Hence, we
    need a function to traverse the tree and locate the refer-
    enced node. The ASN.1 compiler also generates component
    extractor routines for this purpose.
    5.1.3 Syntax and Matching Rules
    An attribute is described by an attribute type in LDAP. An
    attribute type contains two key &macr;elds which help to de&macr;ne
    the attribute as well as rules that it must follow. The &macr;rst
    &macr;eld is a syntax which de&macr;nes the data format used by the
    attribute type. The second &macr;eld is a matching rule which is
    used by an LDAP server to compare an attribute value with
    an assertion value supplied by the LDAP search or compare
    operations. Attributes must include the matching rules in
    their de&macr;nition. At least, an equality matching rule should
    be supported for each attribute type. From the viewpoint of
    an LDAP server, an ASN.1 speci&macr;cation de&macr;ning a new at-
    tribute type requires a new syntax and its matching rule to
    be de&macr;ned in it. To fully automate the component match-
    ing in which the composite attribute types are de&macr;ned in
    ASN.1, we extended the eSNACC compiler to generate the
    basic equality matching rule of a given ASN.1 type, or all-
    ComponentMatch matching rule speci&macr;ed in RFC 3687 [15].
    The allComponentMatch matching rule evaluates to true
    only when the value of the referenced component of the
    attribute and that of ComponentAssertion are the same.
    It can be implemented by performing matching from the
    top-most component which is identi&macr;ed by the component
    reference recursively down to the subordinate components.
    The generated matching function of each component can be
    overridden by other matching functions through a matching
    rule re&macr;nement table. Therefore, it is possible that a syn-
    tax developer can replace the compiler-generated matching
    functions with existing matching functions of slapd which
    might be more desirable. In order to support this re&macr;ning
    mechanism, slapd checks if a matching function is overrid-
    den or not by looking up the re&macr;nement table, whenever it
    (userCertificate:componentFilterMatch
    := not:item:{
    component “tbsCertificate.serialNumber”,
    rule IntegerMatch,
    value 9453771
    }
    )
    Component Reference
    Component Assertion
    Component Filter
    New Matching Rule
    Figure 8: Example Component Filter.
    is executed.
    5.2 Component Matching
    5.2.1 Component Assertion and Filter
    RFC 3687 [14] de&macr;nes a new component &macr;lter as the means
    of referencing a component of a composite attribute and as
    the means of representing an assertion value for a composite
    attribute types. Component assertion is an assertion about
    the presence or the values of components within an ASN.1
    value. In the component assertion, there are three key &macr;elds:
    &sup2; Component Reference: speci&macr;es which component of
    an attribute value will be matched against an assertion
    value.
    &sup2; Matching Rule: speci&macr;es which matching rule will be
    used to perform matching on the values.
    &sup2; Value: An assertion value in GSER.
    Component &macr;lter is an expression of component assertions,
    which evaluates to either TRUE, FALSE, or Unde&macr;ned af-
    ter performing matching. Figure 8 illustrates an exam-
    ple component &macr;lter. The component reference \Certi&macr;-
    cate.serialNumber" identi&macr;es one component in the Certi&macr;-
    cate attribute value. In the component reference, \." means
    identifying one of components subordinate to the preceding
    component. In the component assertion, rule is followed by
    an integerMatch matching rule [11] which will be used to
    compare the following assertion value with the referenced
    component of the attribute value. The routines required to
    support the component &macr;lter and the component assertion
    were hand-coded while the routines for the component asser-
    tion values are automatically generated from a given ASN.1
    type.
    5.2.2 Attribute / Matching Rule Aliasing
    To enable component matching, clients as well as servers
    need to support GSER and new component matching rules.
    However, the client side changes will be minimal, if at all, be-
    cause the component &macr;lter can be speci&macr;ed by using the ex-
    isting extensible matching rule mechanism of LDAPv3 and
    the component assertion value is represented as the text
    centric GSER encoding rules. In particular, the clients that
    94
    Table 2: Decoder Performance Comparison.
    d2i X509() ASN.1 ASN.1
    Decoder Decoder for CM
    Time (usec) 32.74 40.20 72.00
    accept search &macr;lters as strings require no changes to utilize
    component matching other than &macr;lling in the necessary com-
    ponent &macr;lter as the search &macr;lter. However, for those clients
    who have search &macr;lters hard coded in them, we propose an
    attribute aliasing mechanism which maps a virtual attribute
    type to an attribute component and a component matching
    rule, and a matching rule aliasing mechanism which maps a
    virtual matching rule to a component assertion.
    Attribute aliasing registers a set of virtual attributes to an
    LDAP server. The virtual attributes themselves &macr;nd corre-
    sponding matching rules and component references by look-
    ing up an attribute alias table. The example attribute alias
    table is shown in Table 1. x509certi&macr;cateSerialNumber at-
    tribute is aliased to userCerti&macr;cate.tbsCerti&macr;cate.serialNumb
    er with the integerMatch matching rule. Hence, the &macr;lter
    (x509certi&macr;cateSerialNumber=12345) is considered equiva-
    lent to (userCerti&macr;cate:ComponentFilter:=item:component
    tbsCerti&macr;cate.serialNumber, rule integerMatch, value 12345).
    With an attribute aliasing, clients only have to form sim-
    ple assertions to utilize component matching. A matching
    rule alias works in a similar way. An alias matching rule is
    mapped into the corresponding a component reference and
    a matching rule.
    5.2.3 Putting It All Together
    The overall °ow of acquiring security tokens in Web services
    with Component Matching is as follows. First, the ASN.1
    speci&macr;cation of a X.509 certi&macr;cate is compiled and the gen-
    erated routines are loaded into the LDAP server. Once they
    are loaded successfully, Component Matching on the certi&macr;-
    cate can be performed in the server. Then, the Web Service
    requester sends the Web Service provider a SOAP message
    which contains SecurityTokenReference. URI reference was
    taken as an example in the following discussion. The Web
    service provider fetches the SecurityTokenReference from
    the message and performs an LDAP search based on the
    LDAP URI in it. The search &macr;lter can contain the compo-
    nent assertion against the corresponding component of the
    certi&macr;cate. Accepting a component search request, certi&macr;-
    cates in the LDAP server are decoded by the corresponding
    DER decoder to construct a component tree of the certi&macr;-
    cate. It has all certi&macr;cate attributes as de&macr;ned in the X.509
    recommendation. The incoming component &macr;lter is parsed
    to obtain the component assertion value and the component
    reference by the GSER decoder for the &macr;lter. The compo-
    nent extractor extracts the referenced component from the
    component tree which is speci&macr;ed by the component refer-
    ence in the component &macr;lter. The component assertion value
    is decoded by the corresponding GSER decoder for the ex-
    tracted component. At this point, we have obtained the
    ASN.1 internal representation of both the component asser-
    tion value and the returned certi&macr;cate component. Matching
    is performed on these two internal data structures and the
    matched certi&macr;cate is returned to theWeb Service provider.
    6. PERFORMANCE CONSIDERATIONS
    The benchmarking was performed with a 40,000 entry DIT.
    Using an LDAP benchmark in ruby scripts [13], only read
    operation was performed &macr;rst on the entries with varying
    base DNs in the LDAP search requests. The read bench-
    mark was made to test how fast data could be read from
    slapd. The machine running slapd has two 2.40GHz Hy-
    perthreading Intel Xeon CPUs and 1.5Gbytes memory. The
    slapd was con&macr;gured with a BDB backend. First, we mea-
    sured the performance of eSNACC compiler generated DER
    decoders as compared to that of the openssl decoder, d2i X509()
    function (manually written certi&macr;cate parsing function). Ta-
    ble 2 shows how much time both decoders took to decode
    an example X.509 certi&macr;cate generated by openssl.
    d2i X509 took 32.74 usec to decode a certi&macr;cate. The com-
    piler generated DER decoder took 40.20 usec in case of not
    allocating component descriptors which is not out side of
    the pure decoding process. The compiler generated decoder
    took 7.46 usec longer as compared to d2i X509(). It is be-
    cause the decoder allocated memory not only for ASN.1 val-
    ues but also for the component data structures of each &macr;elds
    of the certi&macr;cate.
    We also integrated the compiler generated decoders into
    slapd and performed searching by Component Matching.
    We measured the average time to search for an entry con-
    taining the target certi&macr;cate, varying the number of concur-
    rent clients. The search scope is base and a component &macr;lter,
    \(userCerti&macr;cate:componentFilterMatch:=item:component
    \tbsCerti&macr;cate.serialNumber", rule integerMatch, value 945
    3771)" is used in the search. As the number of concurrent
    clients is increased from 1 to 8, the overall searching time
    of both cases were also increased from 1 msec to 6 msec
    approximately. When the number of concurrent clients is
    1, Component Matching (CM) takes 1.2 msec and d2i X509
    takes 1.18 msec. When the number of concurrent client be-
    come 8, CM takes 5.91 msec and d2i X509 takes 6 msec.
    The time di&reg;erence between the Component Matching and
    d2i X509 is very small and can be considered to be within
    the experimental error bound. It is because the decoding
    itself is only small portion of a search operation. It only
    accounts for 4-7% of overall search time. We also performed
    subtree search and it appeared that the average searching
    time of CM was only slightly higher than that of d2i X509.
    The overheads of parsing component &macr;lters can be removed
    by using attribute and matching rules aliases.
    Overall searching time is heavily dependent on other factors
    such as &macr;lter parsing, indexing, and caching rather than de-
    coding. By the experiment, It was proven that a °exible and
    secure way of accessing a certi&macr;cate and CRL was achieved
    without performance degradation.
    The maintenance of proper indices is critical to the search
    performance in the Component Matching as much as in the
    conventional attribute matching. In slapd, the attribute in-
    dexing is performed by generating a hash key value of the
    attribute syntax, matching rule, and the attribute value and
    maintains the list of IDs of those entries having the matching
    value in the set of attribute values of the indexed attribute.
    The component indexing can be speci&macr;ed in the same way
    as the attribute indexing, except that the component ref-
    95
    erence is used to specify which component of a composite
    attribute to be indexed. If the referenced component is a
    basic ASN.1 type, the indexing procedure will be the same
    as the attribute indexing. The indices for the referenced
    component are accessed through a hashed value of the cor-
    responding syntax, matching rule, and value in the index
    &macr;le for the referenced component of the composite attribute.
    In OpenLDAP, the indexing of the composite component is
    centered on the GSER encodings of the component value.
    The hash key of a component value is generated from its
    GSER encodings together with its syntax and matching rule.
    For the SET and SET OF constructed types, it is required
    to canonicalize the order of the elements in the GSER en-
    codings before generating the hashed key value. For <all>
    component reference of SET OF and SEQUENCE OF. it is
    needed to union the indices for each value element of SET
    OF and SEQUENCE OF.
    7. CONCLUSION
    WS-Security is a key protocol for securing SOAP message
    exchanges. It de&macr;nes token references in order to acquire se-
    curity tokens internally and externally. An X.509 certi&macr;cate
    is an universally used security token and is usually stored
    and retrieved via LDAP. The X.509 certi&macr;cate pro&macr;le of WS-
    Security and XML Signature standards provides a rich set of
    reference methods for the X.509 certi&macr;cate in a °exible and
    extensible way. Component Matching and ASN.1 awareness
    in LDAP are very e&reg;ective mechanisms to cope with this
    °exibility and extensibility.
    This paper presented the design of the Component Match-
    ing in the OpenLDAP directory server in the context of
    WS-Security. It is described the &macr;rst implementation of the
    component matching and ASN.1 awareness in a pure LDAP
    based directory server. In order to provide a fully auto-
    mated infrastructure, we extended an ASN.1 compiler to
    automatically generate the component extraction / match-
    ing routines and encoders / decoders of BER, DER, and
    GSER for a given ASN.1 type. To make the server un-
    derstand an incoming ComponentFilter in GSER format,
    the search &macr;lter processing was modi&macr;ed to support Compo-
    nentFilter, ComponentAssertion, and ComponentReference
    as well. For backward compatibility in the case where the
    search &macr;lters are hard coded to client applications, we also
    provide an alias mechanism for the attribute names and the
    matching rules. According to the experiments, the perfor-
    mance of the prototype system which integrated compiler-
    generated decoders was proven to be competitive to that of
    the hand-optimized ones. We conclude from the experiment
    that °exible and secure certi&macr;cate access can be achieved
    without losing performance and manageability.
    8. REFERENCES
    [1] D. Box and D. Ehne. Simple object access protocol
    (SOAP). W3C Note, May 2000.
    [2] D. W. Chadwick. De&macr;ciencies in LDAP when used to
    support PKI. Comm. of the ACM, 46(3), March 2003.
    [3] D. W. Chadwick, E. Ball, and M. Sahalayev.
    Modifying LDAP to support x.509-based PKIs. In
    17th Annual IFIP WG 11.3 Working Conference on
    Database and Applications Security, August 2003.
    [4] W. Ford and D. Solo. Internet x.509 public key
    infrastructure certi&macr;cate and certi&macr;cate revocation list
    (CRL) pro&macr;le. RFC 3280, 2002.
    [5] J. Hodges, R. Morgan, and M. Wahl. Lightweight
    directory access protocol (v3): Technical speci&macr;cation.
    RFC 3377, September 2002.
    [6] R. Housley, W. Ford, W. Polk, and D. Solo. Internet
    X.509 public key infrastructure certi&macr;cate and CRL
    pro&macr;le. RFC 2459, January 1999.
    [7] ITU-T Rec. X.511, The directory: Abstract service
    de&macr;nition, 1993.
    [8] ITU-T Rec. X.690, ASN.1 encoding rules:
    Speci&macr;cation of basic encoding rules (BER), canonical
    encoding rules (CER), and distinguished encoding
    rules (DER), 1994.
    [9] ITU-T Rec. X.680, Abstract syntax notation one
    (ASN.1): Speci&macr;cation of basic notation, December
    1997.
    [10] ITU-T Rec. X.509, The directory: Public-key and
    attribute certi&macr;cate frameworks, March 2000.
    [11] ITU-T Rec. X.500, The directory: Overview of
    concepts, models and service, February 2001.
    [12] R. Joop. Snacc 1.2rj.
    http://www.fokus.gmd.de/ovma/freeware/snacc/
    entry.html.
    [13] A. Krennmair and R. Lischka. Testing OpenLDAP
    server, March 2004.
    [14] S. Legg. Generic string encoding rules. RFC 3641,
    October 2003.
    [15] S. Legg. X.500 and LDAP component matching rules.
    RFC 3687, February 2004.
    [16] M. Myers, R.Ankney, A.Malpani, and C.Adams.
    Internet X.509 public key infrastructure online
    certi&macr;cate status protocol - OCSP. RFC 2560, June
    1999.
    [17] OASIS. Web services security: SOAP message security
    1.0 (WS-Security 2004). OASIS Standard 200401,
    March 2004.
    [18] OASIS. Web services security: X.509 certi&macr;cate token
    pro&macr;le. OASIS Standard 200401, January 2004.
    [19] The Unicode Consortium. The Unicode Standard,
    Version 4.0. Addison-Wesley, Boston, 2003.
    [20] W3C. XML key management speci&macr;cation (XKMS).
    W3C Standard, March 2001.
    [21] W3C. XML - signature syntax and processing. W3C
    Standard, February 2002.
    [22] F. Yergeau. UTF-8, a transformation format of ISO
    10646. RFC 3629, November 2003.
    96

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/30 17:32:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Web Services & Semantic Web Services 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/8/10 17:52:39

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    171.875ms