IKEv2使用RSA-PSS签名

RSA-PSS全称为:RSA Probabilistic Signature Scheme,在IKEv2协议的报文交互中,Authentication载荷可携带由RSA-PSS算法签名的验证数据。以下根据strongswan代码中的testing/tests/swanctl/rw-cert-pss/中的测试环境,来看基于X.509证书的RSA-PSS签名配置和认证流程。拓扑结构如下:

在这里插入图片描述

拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。

虚拟主机配置

carol主机的配置文件:/etc/swanctl/swanctl.conf,内容如下。其中home连接中的本地local段配置中auth设置了rsa/pss-sha512的值。

connections {

   home {
      local_addrs  = 192.168.0.100
      remote_addrs = 192.168.0.1

      local {
         auth = rsa/pss-sha512
         certs = carolCert.pem
         id = carol@strongswan.org
      }
      remote {
         auth = pubkey
         id = moon.strongswan.org
      }
      children {
         home {
            remote_ts = 10.1.0.0/16

            updown = /usr/local/libexec/ipsec/_updown iptables
            esp_proposals = aes128gcm128-x25519
         }
      }
      version = 2
      proposals = aes128-sha256-x25519
   }
}

secrets {

   rsa-carol {
      file = carolKey.pem
      secret = "nH5ZQEWtku0RJEZ6"
   }
}

dave主机的配置与carol基本相同,区别在于dave的验证数据使用rsa/pss-sha384签名算法,不同于carol使用的sha512哈希算法,这里使用sha384哈希算法。

connections {

   home {
      local_addrs  = 192.168.0.200
      remote_addrs = 192.168.0.1

      local {
         auth = rsa/pss-sha384
         certs = daveCert.pem
         id = dave@strongswan.org
      }
      remote {
         auth = pubkey
         id = moon.strongswan.org
      }
      children {
         home {
            remote_ts = 10.1.0.0/16

            updown = /usr/local/libexec/ipsec/_updown iptables
            esp_proposals = aes128gcm128-x25519
         }
      }
      version = 2
      proposals = aes128-sha256-x25519
   }
}

网关配置

moon网关的配置文件:/etc/swanctl/swanctl.conf,内容如下。配置使用pubkey认证。

connections {

   rw {
      local_addrs  = 192.168.0.1

      local {
         auth = pubkey
         certs = moonCert.pem
         id = moon.strongswan.org
      }
      remote {
         auth = pubkey
      }
      children {
         net {
            local_ts  = 10.1.0.0/16

            updown = /usr/local/libexec/ipsec/_updown iptables
            esp_proposals = aes128gcm128-x25519
         }
      }
      version = 2
      proposals = aes128-sha256-x25519
   }
}

moon网关的配置文件:/etc/strongwan.conf,内容如下,字段rsa_pass设定为yes,表明使用RSA-PSS填充算法(PKCS #1 v2.1),而不是默认的RSA-PKCS #1 v1.5。前者比后者在数理上更具安全性,但是后者也是安全的。

swanctl {
  load = pem pkcs1 x509 revocation constraints pubkey openssl random
}

charon-systemd {
  load = random nonce sha1 sha2 mgf1 aes hmac pem pkcs1 x509 revocation constraints pubkey curve25519 gmp curl kernel-netlink socket-default updown vici

  rsa_pss = yes
}

连接建立流程

操作流程如下,首先在两个虚拟主机carol和dave上,以及网关moon上启动strongswan进程。再者,在carol和dave上创建名称为home的子连接。

moon::systemctl start strongswan
carol::systemctl start strongswan
dave::systemctl start strongswan
moon::expect-connection rw
carol::expect-connection home
carol::swanctl --initiate --child home 2> /dev/null
dave::expect-connection home
dave::swanctl --initiate --child home 2> /dev/null

接下来,查看以下carol主机上strongswan进程的日志信息,可见carol自身使用的验证算法:RSA_EMSA_PSS_SHA2_512_SALT_64,以及网关moon使用的验证算法:RSA_EMSA_PSS_SHA2_256_SALT_32。

carol charon-systemd: 10[IKE] authentication of 'carol@strongswan.org' (myself) with RSA_EMSA_PSS_SHA2_512_SALT_64 successful
carol charon-systemd: 15[IKE] authentication of 'moon.strongswan.org' with RSA_EMSA_PSS_SHA2_256_SALT_32 successful

在看一下dave主机上strongswan进程的日志信息,与以上介绍的配置相同,dave使用了RSA-EMSA-PSS验证算法,其中采用SHA384哈希算法;而moon网关选择了SHA256算法。

dave charon-systemd: 08[IKE] authentication of 'dave@strongswan.org' (myself) with RSA_EMSA_PSS_SHA2_384_SALT_48 successful
dave charon-systemd: 16[IKE] authentication of 'moon.strongswan.org' with RSA_EMSA_PSS_SHA2_256_SALT_32 successful

在carol建立连接的初始IKE_SA_INIT请求报文中,SIGNATURE_HASH_ALGORITHMS载荷指定了本端可接受的签名哈希算法,包括:SHA2-256、SHA2-384、SHA2-512和Identity。在moon回复的IKE_SA_INIT请求报文中,具有相同的SIGNATURE_HASH_ALGORITHMS载荷。如下图所示:

在这里插入图片描述

以下为carol在IKE_AUTH请求报文中携带的Authentication认证载荷的值,其中认证方法为Digital Signature(14/0xe)。整个authentication载荷的长度为460字节,去掉头部的8个字节长度,认证数据的长度为452个字节,其中开始的部分为0x43长的认证算法信息。

在这里插入图片描述

这部分数据采用ASN.1编码,解析之后内容如下。

在这里插入图片描述

首先是RSA-PSS的标识符Identifier:1.2.840.113549.1.1.10(参见RFC7427 A.4.1定义)。之后为三部分参数,如RFC3447 A.2.3中的定义,第一部分为hashAlgorithm算法标识,表明认证数据使用的哈希算法,此处为SHA512: 2.16.840.1.101.3.4.2.3;第二部分为maskGenAlgorithm标识(1.2.840.113549.1.1.8),算法也是使用SHA521: 2.16.840.1.101.3.4.2.3;第三部分为saltLength长度值,为64。

在这里插入图片描述

以下为dave主机发送的IKE_AUTH请求报文中携带的认证数据的解析结果,可见其使用的SHA2-384哈希算法,标识为:2.16.840.1.101.3.4.2.2。

在这里插入图片描述

strongswan测试版本: 5.8.1

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
VPP(Vector Packet Processing)是一种高性能数据平面框架,支持多种协议,包括 IKEv2(Internet Key Exchange version 2)协议。在VPP中配置IKEv2,需要进行以下步骤: 1. 安装VPP 首先,需要安装VPP和相关的插件。可以从官方网站上下载最新版本的VPP,并按照官方文档进行安装。 2. 配置IKEv2插件 在VPP中,可以使用IKEv2插件来实现IKEv2协议的支持。需要启用IKEv2插件,可以使用以下命令: ``` set plugins plugin_path /usr/lib64/vpp_plugins/ set plugins plugin default-plugin-enable set plugins plugin ikev2-plugin-enable ``` 3. 配置IKEv2连接 在VPP中,可以使用IKEv2插件来创建IKEv2连接。可以使用以下命令创建IKEv2连接: ``` ikev2 profile name IKEV2-PROFILE ikev2 profile auth shared-secret KEY ikev2 profile local-auth method pre-shared-key ikev2 profile remote-auth method pre-shared-key ikev2 profile local-id name FQDN ikev2 profile remote-id name FQDN ikev2 profile tunnel-ip local IP_ADDRESS ikev2 profile tunnel-ip remote IP_ADDRESS ikev2 profile ike-crypto-profile IKE-CRYPTO-PROFILE ikev2 profile esp-crypto-profile ESP-CRYPTO-PROFILE ``` 4. 配置IKEv2策略 在VPP中,可以使用IKEv2插件来配置IKEv2策略。可以使用以下命令配置IKEv2策略: ``` ikev2 policy name IKEV2-POLICY ikev2 policy proposal 1 encryption aes-256-gcm ikev2 policy proposal 1 integrity sha-256 ikev2 policy proposal 1 dh-group 19 ikev2 policy proposal 1 lifetime seconds 3600 ``` 5. 配置IKEv2安全协议 在VPP中,可以使用IKEv2插件来配置IKEv2安全协议。可以使用以下命令配置IKEv2安全协议: ``` ikev2 crypto name IKE-CRYPTO ikev2 crypto proposal 1 encryption aes-256-gcm ikev2 crypto proposal 1 integrity sha-256 ikev2 crypto proposal 1 dh-group 19 ikev2 crypto proposal 1 lifetime seconds 3600 ``` 6. 配置ESP安全协议 在VPP中,可以使用IKEv2插件来配置ESP安全协议。可以使用以下命令配置ESP安全协议: ``` ikev2 crypto name ESP-CRYPTO ikev2 crypto proposal 1 encryption aes-256-gcm ikev2 crypto proposal 1 integrity sha-256 ikev2 crypto proposal 1 lifetime seconds 3600 ``` 7. 配置IKEv2转发 在VPP中,可以使用IKEv2插件来配置IKEv2转发。可以使用以下命令配置IKEv2转发: ``` ikev2 route name IKEV2-ROUTE ikev2 route local-networks 10.0.0.0/24 ikev2 route remote-networks 10.1.0.0/24 ikev2 route profile IKEV2-PROFILE ``` 以上就是在VPP中配置IKEv2的步骤。需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值