美文网首页收藏
第三十章 使用派生密钥令牌进行加密和签名

第三十章 使用派生密钥令牌进行加密和签名

作者: Cache技术分享 | 来源:发表于2024-09-22 09:03 被阅读0次

第三十章 使用派生密钥令牌进行加密和签名

IRIS 支持 WS-SecureConversation 1.4 定义的 <DerivedKeyToken> 元素。可以创建并使用<DerivedKeyToken> 元素进行加密和签名,作为前三个主题中描述的方法的替代。

通常,会同时执行加密和签名。为简单起见,本主题分别介绍这些任务。有关结合加密和签名的信息,请参阅结合加密和签名。

概述

<DerivedKeyToken> 元素旨在携带发送者和接收者可以独立使用的信息来生成相同的对称密钥。这些方可以使用该对称密钥对 SOAP 消息的指定部分进行加密、签名或同时执行这两种操作。

要生成和使用 <DerivedKeyToken>,请执行以下操作:

  1. 生成一个对称密钥以供临时使用。
  2. 使用要向其发送消息的实体的公钥来加密对称密钥。这将创建一个 <EncryptedKey>元素。

可以从该实体的请求消息中包含的 X.509 证书中获取公钥。或者可以提前获取它。

  1. 通过 P_SHA1 算法从原始对称密钥计算出一个新的对称密钥。

这将创建一个引用 <EncryptedKey> 元素的 <DerivedKeyToken> 元素。

  1. 使用新的对称密钥进行加密或签名。

对这些活动使用不同的对称密钥被认为是一种很好的做法,这样就可以减少用于分析的数据量。

  1. 在消息中包含 <EncryptedKey>元素和 <DerivedKeyToken>

IRIS 中,派生密钥令牌也可以基于另一个派生密钥令牌。

创建并添加 <DerivedKeyToken>

作为参考,本节描述了后面几节中需要的常见活动。它描述了如何创建 <DerivedKeyToken>并将其添加到 WS-Security 标头。您可以使用以下步骤或各小节中描述的变体。

  1. 可选择包含 %soap.inc 包含文件,它定义了可能需要使用的宏。
  2. 获取要向其发送消息的实体的凭证集。请参阅以编程方式检索凭证集。
 Set x509alias = "servernopassword" 
 Set credset = ##class(%SYS.X509Credentials).GetByAlias(x509alias)
  1. 根据凭证集创建加密密钥。为此,调用 %XML.Security.EncryptedKeyCreateX509() 类方法,并将第二个参数指定为 $$$SOAPWSEncryptNone。例如:
 set enckey=##class(%XML.Security.EncryptedKey).CreateX509(credset,$$$SOAPWSEncryptNone)

此方法生成一个对称密钥,并返回 %XML.Security.EncryptedKey的实例,该实例表示 <EncryptedKey> 标头元素。此标头元素包含对称密钥,由给定凭证集中的公钥加密。

当创建加密密钥作为派生密钥的基础时,请始终指定 $$$SOAPWSEncryptNone"" 作为 CreateX509() 的第二个参数。

  1. 可选择修改加密密钥实例以使用不同的算法。请参阅指定块加密算法和指定密钥传输算法。

  2. <EncryptedKey> 元素添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于要添加的元素,指定 %XML.Security.EncryptedKey的实例。

 do ..SecurityOut.AddSecurityElement(enckey)
  1. 根据加密密钥创建派生密钥令牌。为此,调用 %SOAP.WSSC.DerivedKeyToken的 Create() 方法。此方法采用两个参数:

a. 作为基础使用的加密密钥。

b. 指定派生密钥如何引用该加密密钥的引用选项。在此基本过程中,使用 $$$SOAPWSReferenceEncryptedKey

 set refopt=$$$SOAPWSReferenceEncryptedKey
 set dkenc=##class(%SOAP.WSSC.DerivedKeyToken).Create(enckey,refopt)

此方法在返回代表 <DerivedKeyToken>元素的 %SOAP.WSSC.DerivedKeyToken的实例。

  1. &<DerivedKeyToken> 元素添加到 WS-Security 标头元素。为此,请调用 Web 客户端或 Web 服务的 SecurityOut 属性的 AddSecurityElement() 方法。对于要添加的元素,指定 %SOAP.WSSC.DerivedKeyToken的实例。
 do ..SecurityOut.AddSecurityElement(dkenc)
  1. 发送 SOAP 消息。请参阅添加安全标头元素中的一般注释。

相关文章

  • 数字签名及证书

    1. 加密: 对称加密:用对称密钥及算法进行加密。对称密钥,加解密使用相同的密钥。 非对称加密:用非对称密钥及算法...

  • 加密算法概览

    1.对称加密 加密方和解密方使用同一套密钥。即:发送方通过使用相应的加密算法和密钥,对将要发送的信息进行加密;对接...

  • 安卓系统签名修改

    1.安卓签名和密钥 Android OS 映像在两个地方使用加密签名: 映像中的所有 .apk 文件都必须经过签名...

  • 深入浅出:区块链技术中的非对称加密算法--签名和加密

    签名是一种非对称加密算法的用法,即使用不同的加密密钥与解密密钥,而由已知加密密钥推导出解密密钥在计算上是不可行的。...

  • 认证授权 归纳(4)(密钥概念)

    1: 密钥分类 (对称密钥与非对称密钥) 2:密钥,私钥,公钥的区分 3:摘要 签名 签名验证 4:加密解密 ...

  • 算法和数据结构5.4共享密钥加密

    加密数据的方法可以分为两种,加密和解密都使用相同密钥的“共享密钥加密”和分别使用不同密钥的“公开密钥加密”。 共享...

  • 信息安全基础知识

    加密技术分为对称加密和非对称加密,区别在于加密和解密是否使用相同的密钥。对称加密使用相同的密钥,非对称加密的密钥则...

  • 3DES加密

    本文介绍了3DES加密特性,加密特点,3DES是对称加密,用一个密钥对内容进行加密,必须使用相同的密钥进行解密, ...

  • 2018-04-16

    HTTPS加密方式: HTTPs采用混合加密机制,使用公钥加密用于传输对称加密,之后使用对称密钥加密进行通信。...

  • 加密--对称加密和非对称加密

    对称加密 对称加密是指用相同的密钥进行加密和解密 DES 加密算法 非对称加密 公钥密码 密钥配送的问题 ?在使用...

网友评论

    本文标题:第三十章 使用派生密钥令牌进行加密和签名

    本文链接:https://www.haomeiwen.com/subject/pcmtrjtx.html