所属公司: 广州大学黄埔研究院
开发角色: 全栈/架构
项目状态: 已由中国信通院第三方测评完成合同交付
项目地址: 内部科研项目,不公开
RPKIB系统由安全认证管理子系统和安全域间路由子系统组成,其中安全认证管理子系统负责资源证书的生成和存储,并通过初始化同步和实时推送两种方式将证书用于安全域间路由子系统进行路由起源认证和路由路径安全认证;安全域间路由子系统在路由通告转发系统quagga基础上新增安全扩展, 提供包括安全认证相关证书采集、路由起源认证、路径认证、路由信息签名、路由信息加解密等功能,以增强路由通告系统在信息数据源和信息传输方面的安全性。
核心功能包括:
- RPKIB系统的CA资源证书管理中心
- RPKIB资源证书存入区块链进行去中心化管理
- 安全域间路由子系统初始化采集所有证书资源
- 区块链证书更新实时推送触发路由起源认证
- 安全域间路由子系统的路由起源认证
- 安全域间路由子系统的路由路径认证
- 安全域间路由子系统的路由信息签名验签
- 安全域间路由子系统的路由信息加解密
RPKIB系统总体架构

安全认证管理子系统总体架构

安全域间路由子系统总体架构

技术栈
- CA: python/shell
- 路由节点: C/quagga/BGP/bgpsrx
- 区块链终端节点: golang/docker/sehll, html/js/css/vue, leveldb/boltdb
- 联盟链fabric: golang/docker/docker-compose/shell, sdk/cli
- 实时监控:faviewer/prometheus/grafana
- 部署运维: ubuntu/centos/system service, shell/ssh/telnet/docker/docker-compose
核心技术: BGP协议加解密
在bgp协议的实现逻辑中,bgpd写入路由报文的实现逻辑为直接写入socket缓冲区, 但读取路由报文则需要预先读取固定的头部19个字节,用于获取路由报文的相关信息,比如大小、报文类型等,路由信息通过排除头部19个字节的方式加密剩余报文实现报文体密文传输, 在读取路由报文的实现中, 保持bgp协议中预先读取头部19个字节的逻辑不变, 仅仅针对剩余报文数据进行提取并解密, 解密成功后再替换原加密报文并写入内存缓冲区, 用于下一步的具体数据解析

核心技术: 路由报文签名验签
路由信息签名是针对路由信息使用自身路由节点的私钥进行签名,签名功能由动态库bgpsec_openssl使用椭圆曲线算法完成,根据提供的证书ski获取私钥进行签名并生成hash摘要,以bgp协议为标准经TCP传输到邻居节点,成功解析出路由信息后,使用解析出来的签名数据和发送方的ski, 由动态库bgpsec_openssl完成签名验签功能

核心技术: 跨语言C/golang接入RTR协议
RPKIB资源证书更新实时推送是针对RPKIB资源证书相关操作在区块链进行存储之前实时推送到RPKIB区块链客户端,faclient再将推送通知转发到已经记录的主机监控服务, 包括CA的证书更新监控服务和rpkibuser的证书更新监控服务,rpkibuser收到证书更新再通过rtr长连接协议将证书更新通知及相关数据推送到srx_server,以支持ROA证书及路由前缀缓存实时更新
