CN113419737B - 一种基于Linux seccomp的量化策略托管方法及装置 - Google Patents

一种基于Linux seccomp的量化策略托管方法及装置 Download PDF

Info

Publication number
CN113419737B
CN113419737B CN202110657144.4A CN202110657144A CN113419737B CN 113419737 B CN113419737 B CN 113419737B CN 202110657144 A CN202110657144 A CN 202110657144A CN 113419737 B CN113419737 B CN 113419737B
Authority
CN
China
Prior art keywords
policy
strategy
sdk
proxy
linux
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110657144.4A
Other languages
English (en)
Other versions
CN113419737A (zh
Inventor
李文峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gf Securities Co ltd
Original Assignee
Gf Securities Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gf Securities Co ltd filed Critical Gf Securities Co ltd
Priority to CN202110657144.4A priority Critical patent/CN113419737B/zh
Publication of CN113419737A publication Critical patent/CN113419737A/zh
Application granted granted Critical
Publication of CN113419737B publication Critical patent/CN113419737B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Abstract

本发明公开了一种基于Linuxseccomp的量化策略托管方法及装置,包括策略托管平台;所述策略托管平台包括策略进程和代理进程;所述策略进程和代理进程之间相互连接导通;所述策略进程由proxy、loader、SDK、用户策略动态库四个模块共同支持;所述代理进程相互连接有订单B、行情B、定时器B以及管理B;本发明用户策略使用SDK接入编译成动态链接库并上传至券商服务器中运,客户的策略程序属于不可信的第三方程序,存在极大的安全隐患;SDK设计时需要考虑到用户代码可能会绕过SDK一些规则限制,这加重了SDK开发者的工作量,也限制了SDK的设计。

Description

一种基于Linux seccomp的量化策略托管方法及装置
技术领域
本发明涉及一种量化交易策略托管平台技术领域,具体涉及一种基于Linuxseccomp的量化策略托管方法及装置。
背景技术
量化交易策略托管,用于程序化的证券交易。一般由券商提供开发SDK,用户策略使用SDK接入编译成动态链接库并上传至券商服务器中运,客户的策略程序属于不可信的第三方程序,存在极大的安全隐患;SDK设计时需要考虑到用户代码可能会绕过SDK一些规则限制,这加重了SDK开发者的工作量,也限制了SDK的设计。
发明内容
本发明所要解决的技术问题是提供了一种基于Linux seccomp的量化策略托管方法及装置;通过运行沙箱的管控,极大增强了安全性,杜绝对券商服务系统的渗透与破坏;通过轻量级SDK设计,策略代码与代理程序隔离在不同进程运行,可消除SDK设计时需要考虑安全性的负担,提升SDK设计的自主性。
本发明基于Linux seccomp的量化策略托管装置是通过以下技术方案来实现的:包括策略托管平台;所述策略托管平台包括策略进程和代理进程;所述策略进程和代理进程之间相互连接导通;所述策略进程由proxy、loader、SDK、用户策略动态库四个模块共同支持;所述代理进程相互连接有订单B、行情B、定时器B以及管理B。
作为优选的技术方案,策略进程各模块均基于linux平台采用C++11开发;所述代理进程之间采用C++11编写。
作为优选的技术方案,策略进程启动后,以代理进程+策略子进程方式运行;所述SDK采用google protobuf实现进程间调用的功能;所述proxy包括对外对接订单A、行情B、定时器B以及管理B;所述loader为用户策略动态库的程序。
作为优选的技术方案,策略子进程在策略进程内运行。
本发明基于Linux seccomp的量化策略托管方法是通过以下技术方案来实现的:具体包括以下步骤:
S1:Proxy进程实施;
S2:策略子进程实施;
S3:客户策略动态库编写;
S4:Loader程序实施;
S5:SDK实施。
作为优选的技术方案,S1:Proxy进程实施;具体设置如下:
SS1: proxy是一个可执行程序;
SS2:调用socketpiar系统函数创建两对socket fd,形成两个消息通道.其中一个通道用于接收从策略子进程发起的消息,另外一个通道用于推送消息至策略子进程;
SS3:调用fork系统函数,创建策略子进程,子进程逻辑见下文;
SS4:创建一个线程,用来通过SS2创建的接收通道接收客户发起的请求,并根据消息ID调用不同的业务功能,如交易、行情等;
SS5:创建另外一个线程,用来通过SS2创建的推送通道推送从外部接收的消息到策略子进程中。
作为优选的技术方案,S2:策略子进程实施;具体设置如下:
SS1:策略子进程是由proxy创建的子进程,其运行客户提供的动态链接库逻辑,而此库是由客户使用策略sdk开发而成;
SS2:子进程启动时,首先调用libseccomp库(封装了linux seccomp API)设置运行沙箱;调用seccomp_init(SCMP_ACT_TRAP);初始化为白名单模式;此模式默认禁止所有系统调用执行;接下来再根据配置信息(可根据客户的需求制定)调用seccomp_rule_add放开某些系统API,从而豁免某些必要的系统API;最后调用seccomp_load将沙箱生效,调用完成后,本进程就处于沙箱控制中了;
SS3:调用execvpe传入客户策略动态库名字执行loader程序;Loader逻辑见下文。
作为优选的技术方案,S3:客户策略动态库编写;具体设置如下:
SS1:需要提供一个如下的对外函数
extern "C" {
Gosp::GfStrategy* CreateStrategy() {
return new SampleStrategy();
}
}
其中SampleStrategy是一个自定义的类,可自由命名,继承自SDK的Gosp::GfStrategy类,此自定义类根据需要可由客户选择性继承重写一些回调函数,供loader程序回调。
作为优选的技术方案,S4:Loader程序实施;具体设置如下:
SS1:loader是一个用于加载客户开发的策略动态库的程序;
SS2:Loader通过dlopen\dlsym函数,找到动态库的CreateStrategy函数并执行,得到一个Gosp::GfStrategy类的实例,接下来再注册此对象的一些相关的回调函数,将回调函数与消息ID关联;
SS3:启动无限循环接收消息逻辑,收到消息后,再根据SS2注册的回调函数进行消息回调,从而实现收到proxy推送过来的消息后执行自定义的回调逻辑。
作为优选的技术方案,S5:SDK实施;具体设置如下:
SS1:sdk是一个由C++11编写而成的动态链接库
SS2:SDK提供了Gosp::GfStrategy类,并且封装了通过socket fd(proxy创建的两对socket pair)发送和接收消息的功能,对客户提供行情订阅,交易等接口,其中,消息体采用google protobuf协议格式打包。
本发明的有益效果是:用户策略使用SDK接入编译成动态链接库并上传至券商服务器中运,客户的策略程序属于不可信的第三方程序,存在极大的安全隐患;SDK设计时需要考虑到用户代码可能会绕过SDK一些规则限制,这加重了SDK开发者的工作量,也限制了SDK的设计。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于Linux seccomp的量化策略托管装置的架构图。
实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
在本发明的描述中,需要理解的是,术语“一端”、“另一端”、“外侧”、“上”、“内侧”、“水平”、“同轴”、“中央”、“端部”、“长度”、“外端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
本发明使用的例如“上”、“上方”、“下”、“下方”等表示空间相对位置的术语是出于便于说明的目的来描述如附图中所示的一个单元或特征相对于另一个单元或特征的关系。空间相对位置的术语可以旨在包括设备在使用或工作中除了图中所示方位以外的不同方位。例如,如果将图中的设备翻转,则被描述为位于其他单元或特征“下方”或“之下”的单元将位于其他单元或特征“上方”。因此,示例性术语“下方”可以囊括上方和下方这两种方位。设备可以以其他方式被定向(旋转90度或其他朝向),并相应地解释本文使用的与空间相关的描述语。
在本发明中,除非另有明确的规定和限定,术语“设置”、“套接”、“连接”、“贯穿”、“插接”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
如图1所示,本发明的一种基于Linux seccomp的量化策略托管装置,包括策略托管平台;所述策略托管平台包括策略进程和代理进程;所述策略进程和代理进程之间相互连接导通;所述策略进程由proxy、loader、SDK、用户策略动态库四个模块共同支持;所述代理进程相互连接有订单B、行情B、定时器B以及管理B。
本实施例中,策略进程各模块均基于linux平台采用C++11开发;所述代理进程之间采用C++11编写。
本实施例中,策略进程启动后,以代理进程+策略子进程方式运行;所述SDK采用google protobuf实现进程间调用的功能;所述proxy包括对外对接订单A、行情B、定时器B以及管理B;所述loader为用户策略动态库的程序。
本实施例中,策略子进程在策略进程内运行。
本发明的一种基于Linux seccomp的量化策略托管方法,具体包括以下步骤:
S1:Proxy进程实施;
S2:策略子进程实施;
S3:客户策略动态库编写;
S4:Loader程序实施;
S5:SDK实施。
本实施例中,S1:Proxy进程实施;具体设置如下:
SS1: proxy是一个可执行程序;
SS2:调用socketpiar系统函数创建两对socket fd,形成两个消息通道.其中一个通道用于接收从策略子进程发起的消息,另外一个通道用于推送消息至策略子进程;
SS3:调用fork系统函数,创建策略子进程,子进程逻辑见下文;
SS4:创建一个线程,用来通过SS2创建的接收通道接收客户发起的请求,并根据消息ID调用不同的业务功能,如交易、行情等;
SS5:创建另外一个线程,用来通过SS2创建的推送通道推送从外部接收的消息到策略子进程中。
本实施例中,S2:策略子进程实施;具体设置如下:
SS1:策略子进程是由proxy创建的子进程,其运行客户提供的动态链接库逻辑,而此库是由客户使用策略sdk开发而成;
SS2:子进程启动时,首先调用libseccomp库(封装了linux seccomp API)设置运行沙箱;调用seccomp_init(SCMP_ACT_TRAP);初始化为白名单模式;此模式默认禁止所有系统调用执行;接下来再根据配置信息(可根据客户的需求制定)调用seccomp_rule_add放开某些系统API,从而豁免某些必要的系统API;最后调用seccomp_load将沙箱生效,调用完成后,本进程就处于沙箱控制中了;
SS3:调用execvpe传入客户策略动态库名字执行loader程序;Loader逻辑见下文。
本实施例中,S3:客户策略动态库编写;具体设置如下:
SS1:需要提供一个如下的对外函数
extern "C" {
Gosp::GfStrategy* CreateStrategy() {
return new SampleStrategy();
}
}
其中SampleStrategy是一个自定义的类,可自由命名,继承自SDK的Gosp::GfStrategy类,此自定义类根据需要可由客户选择性继承重写一些回调函数,供loader程序回调。
本实施例中,S4:Loader程序实施;具体设置如下:
SS1:loader是一个用于加载客户开发的策略动态库的程序;
SS2:Loader通过dlopen\dlsym函数,找到动态库的CreateStrategy函数并执行,得到一个Gosp::GfStrategy类的实例,接下来再注册此对象的一些相关的回调函数,将回调函数与消息ID关联;
SS3:启动无限循环接收消息逻辑,收到消息后,再根据SS2注册的回调函数进行消息回调,从而实现收到proxy推送过来的消息后执行自定义的回调逻辑。
本实施例中,S5:SDK实施;具体设置如下:
SS1:sdk是一个由C++11编写而成的动态链接库
SS2:SDK提供了Gosp::GfStrategy类,并且封装了通过socket fd(proxy创建的两对socket pair)发送和接收消息的功能,对客户提供行情订阅,交易等接口,其中,消息体采用google protobuf协议格式打包。
本发明的有益效果是:用户策略使用SDK接入编译成动态链接库并上传至券商服务器中运,客户的策略程序属于不可信的第三方程序,存在极大的安全隐患;SDK设计时需要考虑到用户代码可能会绕过SDK一些规则限制,这加重了SDK开发者的工作量,也限制了SDK的设计。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。

Claims (5)

1.一种基于Linux seccomp的量化策略托管装置,其特征在于:包括策略托管平台;所述策略托管平台包括策略进程和代理进程;所述策略进程和所述代理进程之间相互连接导通;所述策略进程由Proxy、Loader、SDK、客户策略动态库四个模块共同支持;
基于所述Linux seccomp的量化策略托管装置,具体执行以下步骤:
S1:Proxy进程实施;
S2:策略子进程实施;
S3:客户策略动态库编写;
S4:Loader程序实施;
S5:SDK实施;
所述S1:Proxy进程实施;具体设置如下:
SS1.1:Proxy是一个可执行程序;
SS1.2:调用socketpair系统函数创建两对socket fd,形成两个消息通道,其中一个通道用于接收从策略子进程发起的消息,另外一个通道用于推送消息至策略子进程;
SS1.3:调用fork系统函数,创建策略子进程;
SS1.4:创建一个线程,用来通过SS1.2创建的接收通道接收客户发起的请求,并根据消息ID调用不同的业务功能;
SS1.5:创建另外一个线程,用来通过SS1.2创建的推送通道推送从外部接收的消息到策略子进程中;
所述S4:Loader程序实施;具体设置如下:
SS4.1:Loader是一个用于加载客户开发的策略动态库的程序;
SS4.2:Loader通过dlopen或dlsym函数,找到动态库的CreateStrategy函数并执行,得到一个Gosp::GfStrategy类的实例,接下来再注册此实例对象的回调函数,将回调函数与消息ID关联;
SS4.3:启动无限循环接收消息逻辑,收到消息后,再根据SS4.2注册的回调函数进行消息回调,从而实现收到Proxy推送过来的消息后执行自定义的回调逻辑;
所述S2:策略子进程实施;具体设置如下:
SS2.1:策略子进程是由Proxy创建的子进程,其运行客户提供的动态链接库逻辑,而此库是由客户使用策略SDK开发而成;
SS2.2:子进程启动时,首先调用libseccomp库,libseccomp库封装了linux seccompAPI,设置运行沙箱;调用seccomp_init并设定参数为SCMP_ACT_TRAP,初始化为白名单模式,此模式默认禁止所有系统调用执行;接下来,根据配置信息,该配置信息根据客户的需求制定,调用seccomp_rule_add函数;最后调用seccomp_load将沙箱生效;
SS2.3:调用execvpe传入客户策略动态库名字执行Loader程序;
所述S3:客户策略动态库编写;具体设置如下:
SS3.1:需要提供一个对外函数
extern "C" {
Gosp::GfStrategy* CreateStrategy() {
return new SampleStrategy();
}
}
其中SampleStrategy是一个自定义的类,继承自SDK的Gosp::GfStrategy类,此自定义类根据需要由客户选择性继承重写一些回调函数,供Loader程序回调。
2.根据权利要求1所述的基于Linux seccomp的量化策略托管装置,其特征在于:所述策略进程各模块均基于linux平台采用C++11开发;所述代理进程采用C++11编写。
3.根据权利要求1所述的基于Linux seccomp的量化策略托管装置,其特征在于:所述策略进程启动后,以代理进程与策略子进程方式运行;所述SDK采用google protobuf实现进程间调用的功能。
4.根据权利要求1或3所述的基于Linux seccomp的量化策略托管装置,其特征在于:所述策略子进程在策略进程内运行。
5.根据权利要求1所述的基于Linux seccomp的量化策略托管装置,其特征在于:所述S5:SDK实施;具体设置如下:
SS5.1:SDK是一个由C++11编写而成的动态链接库;
SS5.2:SDK提供了Gosp::GfStrategy类,并且封装了通过socket fd,发送和接收消息的功能,所述socket fd为Proxy创建的两对socket pair,对客户提供行情订阅,交易接口,其中,消息体采用google protobuf协议格式打包。
CN202110657144.4A 2021-06-11 2021-06-11 一种基于Linux seccomp的量化策略托管方法及装置 Active CN113419737B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110657144.4A CN113419737B (zh) 2021-06-11 2021-06-11 一种基于Linux seccomp的量化策略托管方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110657144.4A CN113419737B (zh) 2021-06-11 2021-06-11 一种基于Linux seccomp的量化策略托管方法及装置

Publications (2)

Publication Number Publication Date
CN113419737A CN113419737A (zh) 2021-09-21
CN113419737B true CN113419737B (zh) 2023-11-10

Family

ID=77788490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110657144.4A Active CN113419737B (zh) 2021-06-11 2021-06-11 一种基于Linux seccomp的量化策略托管方法及装置

Country Status (1)

Country Link
CN (1) CN113419737B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106384045A (zh) * 2016-09-12 2017-02-08 电子科技大学 基于应用程序虚拟化的安卓存储应用沙箱及通信方法
US9830449B1 (en) * 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
CN108021807A (zh) * 2017-12-29 2018-05-11 浙江大学 Linux容器的细粒度沙盒策略执行方法
CN108491275A (zh) * 2018-03-13 2018-09-04 广东欧珀移动通信有限公司 程序优化方法、装置、终端及存储介质
CN111523114A (zh) * 2020-03-11 2020-08-11 国网辽宁省电力有限公司大连供电公司 基于安全沙箱技术的移动业务应用数据防泄密系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830449B1 (en) * 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
CN106384045A (zh) * 2016-09-12 2017-02-08 电子科技大学 基于应用程序虚拟化的安卓存储应用沙箱及通信方法
CN108021807A (zh) * 2017-12-29 2018-05-11 浙江大学 Linux容器的细粒度沙盒策略执行方法
CN108491275A (zh) * 2018-03-13 2018-09-04 广东欧珀移动通信有限公司 程序优化方法、装置、终端及存储介质
CN111523114A (zh) * 2020-03-11 2020-08-11 国网辽宁省电力有限公司大连供电公司 基于安全沙箱技术的移动业务应用数据防泄密系统

Also Published As

Publication number Publication date
CN113419737A (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
CN106933660B (zh) 一种安卓平台下应用进程保活的实现方法
US20190020665A1 (en) Securing micro-services
US20170295265A1 (en) Communication protocol and system for network communications
EP1686472B1 (en) Method for dispatching network connections in user-mode
US11245725B2 (en) Dynamically updating policy controls for mobile devices and applications
CN109246057B (zh) 报文转发方法、装置、转发系统、存储介质及电子设备
US9426158B1 (en) Client device connectivity with integrated business rules and multiple network types
US8060788B2 (en) Real-time signal handling in guest and host operating systems
CN102378963A (zh) 利用模型来审查可执行程序的方法和装置
US20090157796A1 (en) Cell-based computing platform where services and agents interface within cell structures to perform computing tasks
CN109445845B (zh) 接口调用方法、装置、计算机设备和存储介质
US10983849B2 (en) Container application for android-based devices
Schreiber Android binder
US7600232B2 (en) Inter-process communications employing bi-directional message conduits
Lineberry et al. These aren't the permissions you're looking for
CN113419737B (zh) 一种基于Linux seccomp的量化策略托管方法及装置
CN113127775B (zh) 一种页面加载方法、装置、设备和存储介质
US20100100955A1 (en) System and method for secure os access in an ecma-script virtual machine
US20050193101A1 (en) Execution of unverified programs in a wireless, device operating environment
US20140173635A1 (en) System and method for adding local resources for use by a mobile agent object
Moreira et al. Supporting adaptable distributed systems with FORMAware
Coulson et al. NETKIT: a software component-based approach to programmable networking
US8024783B2 (en) Modular agent architecture
US20030208605A1 (en) System and method of communication between java components in different namespaces
KR100494827B1 (ko) 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant