包括关系数据库的内核程序、以及用于执行所述程序的方法和装置转让专利

申请号 : CN201580027797.7

文献号 : CN106575342B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 池田清和竹冈尚三香野孝通

申请人 : 株式会社先端电子竹冈研究室株式会社

摘要 :

提供了一种能够在不使用OS内核级上的文件系统的情况下增强存储在存储设备中的数据的机密性的内核程序等。所述内核程序安装在计算机上,可操作用于在应用程序与存储设备之间输入和输出数据并且使所述计算机充当:套接字建立器,所述套接字建立器建立用于与所述应用程序连接的套接字;关系数据库,所述关系数据库可操作用于通过设备驱动器从/向所述存储设备输入和输出数据;以及访问控制器,所述访问控制器通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令,并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果。

权利要求 :

1.一种计算机可读存储介质,其上存储有内核程序,所述内核程序可操作用于在应用程序与存储设备之间输入和输出数据,所述内核程序包括关系数据库,所述关系数据库可操作用于通过设备驱动器从/向所述存储设备输入和输出数据,所述内核程序适于在被处理器执行时实现以下步骤:作为套接字建立器,建立用于与所述应用程序连接的套接字;并且

以及

作为访问控制器,通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令,并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果,在不使用文件系统以及用于所述文件系统的系统调用的情况下对所述内核程序进行配置,并且由所述关系数据库管理的数据通过所述设备驱动器仅被布置在所述存储设备内。

2.如权利要求1所述的计算机可读存储介质,其中,所述关系数据库为其中客户端与RDBMS(关系数据库管理系统)服务器被整合在一起的轻型SQL数据库。

3.如权利要求1所述的计算机可读存储介质,所述内核程序适于在被处理器执行时进一步实现以下步骤:作为访问认证器,管理第一密钥和第一公钥以向所述应用程序发送所述第一公钥,并且从管理第二密钥和第二公钥的所述应用程序中接收所述第二公钥,其中,通过使用所述第二公钥对有待通过所述套接字发送到所述应用程序的消息进行加密,并且使用所述第一公钥对通过所述套接字从所述应用程序中接收的消息进行加密。

4.如权利要求3所述的计算机可读存储介质,其中,所述内核程序作为所述访问认证器,生成作为针对所述应用程序的访问授权的权限,并且使用所述第二公钥对所述权限进行加密,然后将所述加密权限发送至所述应用程序,其中,通过所述套接字从所述应用程序中接收的所述消息包括所述权限以及所述命令,并且其中,所述内核程序作为所述访问控制器,使用所述第一密钥对从所述应用程序中接收的所述消息进行解密,对包括在所述消息中的所述权限执行认证过程,并且然后仅当所述认证过程成功时向所述关系数据库输出所述命令。

5.如权利要求4所述的计算机可读存储介质,其中,所述内核程序作为所述访问认证器,提前存储用于认证的口令,并且其中,当从所述应用程序中接收加密口令时,所述内核程序作为所述访问认证器,使用所述第一密钥对所述接收的口令进行解密,通过判断所述解密口令是否与所述预先存储的口令一致来执行认证过程,并且然后仅当所述认证过程成功时生成所述权限。

6.一种设置有内核程序的装置,所述内核程序可操作用于在应用程序与存储设备之间输入和输出数据,所述装置包括:套接字建立器,所述套接字建立器建立用于与所述应用程序连接的套接字;

关系数据库,所述关系数据库可操作用于通过设备驱动器从/向所述存储设备输入和输出数据;以及访问控制器,所述访问控制器通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令,并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果,在不使用文件系统以及用于所述文件系统的系统调用的情况下对所述内核程序进行配置,并且由所述关系数据库管理的数据通过所述设备驱动器仅被布置在所述存储设备内。

说明书 :

包括关系数据库的内核程序、以及用于执行所述程序的方法

和装置

技术领域

[0001] 本发明涉及在OS(操作系统)中的内核程序的技术。
[0002] 本申请要求于2014年6月6日递交的日本专利申请号2014-118082的根据巴黎公约的优先权权益,所述日本专利申请根据PCT规则20.6通过引用结合在此。

背景技术

[0003] 由Unix(注册商标)和Windows(注册商标)表示的OS的内核程序被配置成从本质上包括文件系统。所述文件系统是具有对存储在(辅助)存储设备(如HDD(硬盘驱动器)或SSD(固态驱动器))中的文件(数据)进行管理的功能的系统。所述文件系统为应用程序提供用于操作文件同时使应用程序看不到在存储设备中存储数据的实际状态的抽象(访问)接口。
[0004] 所述文件系统通常以使所有文件在根目录下构成分层结构的方式来表示数据的状态。所述文件系统被进一步适配成用于使用挂载操作来使一个目录从属于另一个目录,这使得应用程序能够通过指示目录(分层位置)和文件名来指定目标文件。
[0005] 所述文件系统通常具有在每个文件中向每个“所有者”、“组”以及“其他用户”给予访问权限“读r”、“写w”以及“执行e”的结构。所述访问权限被如下表达(例如,每个用户3比特,总共9比特):
[0006] “所有者”  “组”  “其他用户”
[0007] r,w,e     r,w,e      r,w,e
[0008] 通过使用Unix(注册商标)的ls命令来引用访问权限的结果的示例如下:
[0009] %ls-l owner.c
[0010] -rw-r--r--1ikeda toyotsu 375May 14 10:35owner.c
[0011] 此参考结果示出所有者可以执行读和写然而被阻止直接进行执行,并且组成员和其他用户可以进行读然而既不允许执行写也不允许执行。使用这种形式,文件系统管理每个文件的访问权限。
[0012] 现有技术文献
[0013] 专利文献
[0014] 专利文献1:日本未审查专利申请公开号2006-503369

发明内容

[0015] 本发明要解决的课题
[0016] 如上文描述的常规文件系统允许人员窃取所有者授权(或管理员授权)来读出根目录下的所有文件。这种问题的常规解决方案之一是在应用级别上确保存储在存储设备中的文件的安全性。然而,由于需要内核程序以较高的速度、较少的运算量来执行过程,因此OS的常规内核程序仅提供访问授权的相当简单的认证。
[0017] 然而,近年来,在智能电话和平板型终端已经变得非常流行的情况下,大量计算机被连接到通信网络。因此,在应用级别上确保安全性需要的运算量急剧增大。然而,在OS内核级上的文件系统中,存储设备仅以目录的形式积累文件。因此,如果破坏应用级别安全性,那么窃取存储在存储设备中的根目录下的所有文件变得可能。具体地,当存储在文件系统中的数据是私人信息时,安全性问题变得更加严重。
[0018] 此处内核程序通常是通过以极高的速度追求执行高精度处理而获得的产品。因此,即使从全球来看,仅存在几种内核程序,如Unix(注册商标)、Windows(注册商标)等。由于这种情况,OS内核级上的文件系统的配置一直未改变并且变得过时。
[0019] 因此,本发明的目标是提供能够增强存储在存储设备中的数据的机密性而不使用OS内核级上的文件系统的内核程序、方法和装置。
[0020] 解决课题的方法
[0021] 根据本发明,提供了一种将被安装在计算机上的内核程序,所述内核程序可操作用于在应用程序与存储设备之间输入和输出数据,所述内核程序使所述计算机充当:
[0022] 套接字建立器,所述套接字建立器建立用于与所述应用程序连接的套接字;
[0023] 关系数据库,所述关系数据库可操作用于通过设备驱动器从/向所述存储设备输入和输出数据;以及
[0024] 访问控制器,所述访问控制器通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令,并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果,
[0025] 在不使用文件系统以及用于所述文件系统的系统调用的情况下对所述内核程序进行配置,并且
[0026] 由所述关系数据库管理的数据通过所述设备驱动器仅被布置在所述存储设备内。
[0027] 如根据本发明的内核程序的实施例,优选的是,所述关系数据库为其中客户端和RDBMS(关系数据库管理系统)服务器被整合在一起的轻型SQL数据库。
[0028] 如根据本发明的内核程序的另一个实施例,还优选的是,内核程序进一步使所述计算机充当:
[0029] 访问认证器,所述访问认证器管理第一密钥和第一公钥以向所述应用程序发送所述第一公钥,并且从管理第二密钥和第二公钥的所述应用程序中接收所述第二公钥,[0030] 其中,通过使用所述第一公钥对将要通过所述套接字发送到所述应用程序的消息进行加密,并且使用所述第二公钥对通过所述套接字从所述应用程序中接收的消息进行加密。
[0031] 如根据本发明的内核程序的另一个实施例,还优选的是:
[0032] 所述访问认证器生成作为针对所述应用程序的访问授权的权限,并且使用所述第二公钥对所述权限进行加密,然后向所述应用程序发送所述加密权限;
[0033] 通过所述套接字从所述应用程序中接收的所述消息包括所述权限以及所述命令;并且
[0034] 所述访问控制器使用所述第一密钥对从所述应用程序中接收的所述消息进行解密,对包括在所述消息中的所述权限执行认证过程,并且然后仅当所述认证过程成功时向所述关系数据库输出所述命令。
[0035] 如根据本发明的内核程序的另一个实施例,还优选的是:
[0036] 所述访问认证器提前存储用于认证的口令;并且
[0037] 当从所述应用程序中接收加密口令时,所述访问认证器使用所述第一密钥对所述接收的口令进行解密,通过判断所述解密口令是否与所述预先存储的口令一致来执行认证过程,并且然后仅当所述认证过程成功时生成所述权限。
[0038] 根据本发明,提供了一种设置有内核程序的装置,所述内核程序可操作用于在应用程序与存储设备之间输入和输出数据,所述装置包括:
[0039] 套接字建立器,所述套接字建立器建立用于与所述应用程序连接的套接字;
[0040] 关系数据库,所述关系数据库可操作用于通过设备驱动器从/向所述存储设备输入和输出数据;以及
[0041] 访问控制器,所述访问控制器通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令,并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果,
[0042] 在不使用文件系统以及用于所述文件系统的系统调用的情况下对所述内核程序进行配置,并且
[0043] 由所述关系数据库管理的数据通过所述设备驱动器仅被布置在所述存储设备内。
[0044] 根据本发明,提供了一种执行内核程序的方法,所述内核程序可操作用于在应用程序与存储设备之间输入和输出数据,所述内核程序包括可操作用于通过设备驱动器从/向所述存储设备输入和输出数据的关系数据库,并且所述方法包括:
[0045] 建立用于与所述应用程序连接的套接字的步骤;以及
[0046] 通过所述套接字的消息结构从所述应用程序输入命令然后向所述关系数据库输出所述命令并且从所述关系数据库输入执行结果然后通过所述套接字的消息结构向所述应用程序输出所述执行结果的步骤,
[0047] 在不使用文件系统以及用于所述文件系统的系统调用的情况下对所述内核程序进行配置,并且
[0048] 由所述关系数据库管理的数据通过所述设备驱动器仅被布置在所述存储设备内。发明的效果
[0049] 根据本发明的内核程序以及用于执行所述内核程序的方法和装置使能够在不使用OS内核级上的文件系统的情况下增强存储在存储设备中的数据的机密性。

附图说明

[0050] 呈现附图,在附图中:
[0051] 图1是功能性框图,展示了根据本发明的设置有内核程序的装置的一个实施例;
[0052] 图2是示意图,用于使用所描述的代码来解释建立套接字以及发送和接收消息的实施例;
[0053] 图3是时序图,示出了在API库、套接字建立器以及访问控制器之间的时序过程的实施例;
[0054] 图4是第一时序图,示出了在API库与访问认证器之间的时序过程的实施例;并且[0055] 图5是第二时序图,示出了在API库与访问认证器之间的时序过程的实施例。

具体实施方式

[0056] 以下将参照附图描述本发明的说明性实施例。
[0057] 图1是功能性框图,展示了根据本发明的设置有内核程序的装置的一个实施例。
[0058] 如图1所示,装置1被配置成包括处理器(计算机)和存储设备10(如HDD或SSD)并且用于设置有作为软件通过在安装的处理器上被执行而起作用的内核程序11、API(应用程序接口)库12以及一个或多个应用程序13。此外,根据本发明的内核程序11包括关系数据库111、设备驱动器112、套接字建立器113、访问控制器114以及访问认证器115。此处,在图中通过箭头连接功能单元而直观化的处理流程可以被理解为一种用于执行内核程序的方法。
[0059] (API库12)所述API库12被适配成用于实现应用程序13中所使用的语言与查询语言(即在关系数据库中所使用的语言)之间的相互转换。通过使用内核程序11的系统调用接口将API的应用侧接口描述为系统程序设计。
[0060] 此处,以使得删除与现有文件系统相关联的低级别系统调用的方式构建根据本发明的内核程序11。例如,可以删除以下系统调用。
[0061] open(),close()
[0062] 在破坏应用级别安全性然后以访问具有所有者授权的文件系统的情况下,低级别系统调用(如,open())可以打开整个文件。因此,读出所有文件变得容易。为了防范攻击,在根据本发明的内核程序11中,文件系统被删除并因此排除相关联的系统调用(如open()和close())。
[0063] (关系数据库111)根据本发明的内核程序11设置有代替现有文件系统的关系数据库111。通常,即使是管理员授权也不能从对应于内核空间的存储器区域中进行读取或写入。此处,本发明在内核空间内安排程序代码和操作存储器区域以及关系数据库,所述关系数据库实现数据库的极高机密性。
[0064] 关系数据库111被适配成用于通过设备驱动器112从/向所述存储设备10输入和输出数据。其中客户端和RDBMS服务器被整合在一起的轻型SQL数据库可以被用作关系数据库111,并且整个数据库可以被视作单个文件。明确地,可以采用“SQLite3”作为所述轻型SQL数据库。
[0065] 此处,值得注意的一点是,不像具有目录结构的文件系统,SQL数据库原则上防止在文件单元中取出数据。即,SQL数据库总是被配置成用于当输入查询时输出响应(执行结果)。因此,即使是成功窃取整个数据库的恶意第三方,几乎很难从窃取的数据库中取出单独的文件。因此,本发明在内核程序而非现有文件系统中实现以上SQL数据库,从而极大地提高文件管理的安全性。
[0066] SQL数据库确定在存储设备10中进行存储的每种方式。基于SQL数据库,存储设备10中的存储器结构被构建成具有高效率的内存数据库,以便不识别来自外部的结构。通过使用这种SQL数据库,即使在破坏安全性的情况下,仍然不可能读出或篡改每个文件。
[0067] 此处,常规的SQL数据库被执行为应用程序,并且因此作为数据库的实体的文件还被存储在现有文件系统中。布置在现有文件系统上的这种数据库允许具有管理员授权的人员通过使用常用命令来统一地读出所有文件。
[0068] 相比之下,根据本发明的SQL数据库的文件如它们在存储设备中一样通过设备驱动器被存储。这意味着,SQL数据库直接管理存储设备区域。因此,因为本发明的数据库没有布置在现有文件系统上,所以即使是具有OS管理员授权的人员也不能复制数据库的文件的全部或部分。
[0069] 不可能找到存储设备10上的SQL数据库的数据实体的位置,除非深入理解数据库的内部数据结构以及用于管理所述结构的方法两者。因此,以显著的形式读出或篡改存储设备10上的数据库数据是极其困难的。进一步地,因为内核空间中的程序代码和存储器区域信息也都不可以被取出,所以存储设备10上的任何数据的位置以及程序代码和SQL数据库自身的存储器空间不可以被分析。
[0070] 如根据本发明的SQL数据库,可以使用“SQLite”,所述“SQLite”是结合PHP使用DBMS(数据库管理系统)管理的内置类型数据库。SQLite不基于服务器的任何概念,不像客户端-服务器类型DBMS(如MySQL和PostgreSQL)。也就是说,SQLite具有一套体制,在所述体制中,服务器与客户端被整合在一起并因此数据库的全部内容存储在单个本地区域中。
[0071] 图2是示意图,用于使用描述的代码来解释建立套接字以及发送和接收消息的实施例。并且图3是时序图,示出了在API库、套接字建立器以及访问控制器之间的时序过程的实施例。
[0072] (套接字建立器113)套接字建立器113被配置成用于建立与应用程序13连接的套接字(参见图3中的步骤S1)。以使得API库12(应用程序侧)和内核程序11被分别认为是客户端和服务器的方式建立套接字。每当应用程序13访问数据时,通过所建立的套接字发送具有以SQL语言描述的查询的形式的访问消息。套接字使用基于TCP/IP设置的IP地址和端口号来调解与彼此的成对通信。在本实施例中,IP地址和端口号中的两者都充当本地地址。
[0073] 套接字使应用程序13完全看不见数据库的抽象文件配置和存储器空间结构,由此保证高安全性。以下是系统调用的示例,通过所述系统调用来建立套接字(参见图2中的套接字建立器113)。
[0074] socket(domain,type,protocol):在内核程序侧生成套接字
[0075]     domain=AF-UNIX:本地地址(UNIX域)
[0076]     type:通信方法类型
[0077]     protocol:协议
[0078] bind:在内核程序侧确定服务器名称和端口号
[0079] listen:在内核程序侧开始接受套接字
[0080] connect(s,dbname,namelen):在API侧与套接字连接
[0081]     s:套接字号
[0082]     dbname:SQLite3数据库名称
[0083]     namelen:名称大小
[0084] accept(s,name,namelen):在内核程序侧接受连接
[0085]     s:套接字号
[0086]     dbname:SQLite3数据库名称
[0087]     namelen:名称大小
[0088] close:在API侧删除套接字
[0089] 上述代码“domain=AF-UNIX”在不使用任何IP地址或端口号的情况下实现了关闭在单个装置内的套接字通信的建立。因此,阻止与任何其他装置的通信连接实现了高安全性。
[0090] 在建立套接字之后,应用程序13(API库12)可以通过使用针对套接字通信的系统调用来访问布置在内核程序11内的SQL数据库。此处,API库12和内核程序11使用如下消息结构“sqmsg”来与彼此通信(参见图3中的步骤S2)。
[0091]
[0092] (传输查询)API可以通过执行以下过程来向内核程序发送查询:
[0093] 在“sqmsg.msg[]”中设置查询,然后设置“sqmsg.request=1”(当执行预注册的查询时,使用BSON形式来设置“sqmsg.msg[]”中的参数,然后设置“sqmsg.request=2”);
[0094] 当请求立即执行时,设置“sqmsg.flag=1”;
[0095] API通过使用“send()/write()”来向内核程序发送“sqmsg”(参见图3中的步骤S3);以及
[0096] 内核程序通过使用“recv()/read()”来接收sqmsq(参见图3中的步骤S3)。
[0097] (接收执行结果)为了将执行结果返回至API,内核程序执行以下过程:
[0098] 设置“sqmsg.request=0”(将“sqmsg.request”设置为零);
[0099] 将“sqmsg.u.value”设置为成功值/失败值(如果成功,则sqmsg.u.value=0;如果失败,则sqmsg.u.value=-1);
[0100] 在sqmsg结构中设置执行结果(当执行预注册的查询时,使用BSON形式来设置“sqmsg.payload[]”中的参数,然后设置“sqmsg.request=3”);
[0101] 内核程序通过使用“send()/write()”来将“sqmsg”发送至API(参见图3中的步骤S6);以及
[0102] API通过使用“recv()/read()”来接收sqmsq(参见图6中的步骤S3)。
[0103] 此处,BSON是二进制格式,并且如下例如在JSON的情况下对其进行描述。
[0104] 插入到值(:a:b:c)中;
[0105] (访问控制器114)访问控制器114被配置成用于通过套接字的消息结构从应用程序13输入命令,然后向关系数据库111输出所述命令。访问控制器114被进一步被适配成用于输入来自关系数据库111的执行结果,然后通过套接字的消息结构将执行结果输出至应用程序13。
[0106] 此处,将描述在API库12中的应用程序侧的接口与内核程序侧的系统调用之间的关系的特定示例。
[0107] (1)首先,准备以下函数来将以SQL语言所描述的查询一起置于BSON格式。
[0108] int ksqlite_bind_int(struct ksqlite_stmt*stmt,char*pchar,int value)[0109] int ksqlite_bind_double(struct ksqlite_stmt*stmt,char*pchar,double value)
[0110] int ksqlite_bind_int64(struct ksqlite_stmt*stmt,char*pchar,int64_t value)
[0111] 应用程序13使用这些函数来写命令,所述命令被给予到应用程序的存储器缓存上的关系数据库111中。
[0112] (生成查询)
[0113] bson_init(&bs);/*BSON查询区域的初始化*/
[0114] bson_append_string(&bs,":a","AAA");/*准备查询*/
[0115] bson_append_string(&bs,":b","GEGE");
[0116] bson_append_int(&bs,":c",10);
[0117] bson_finish(&bs);
[0118] (2)接下来,应用程序准备使用“ksqlite_prepare()”来发送查询
[0119] sqm->request=2;
[0120] sqm->msglen=sizeof(struct sqmsg)+bson_size(&bs);
[0121] printf("SIZE%d\n",sqm->msglen);
[0122] memcpy(sqm->u.msg,bson_data(&bs),bson_size(&bs));
[0123] bson_destroy(&bs);
[0124] (3)然后,应用程序将命令发送到内核程序内。
[0125] (传输查询)
[0126] send(s,sqm,sqm->msglen,0);
[0127] printf("SEND END C¥n");
[0128] (4)响应于所述命令,可以批量地发送在关系数据库111中生成的多个执行结果。应用程序通过使用“ksqlite_step()”来获得这些执行结果。“ksqlite_step()”重复地执行调用,直到读出所有执行结果为止。
[0129] (接收查询执行结果)
[0130]
[0131] 此处,在以上数据中的“连续标志”使能够判断所读数据之后是否是连续的数据。
[0132] (访问认证器115)访问认证器115被配置成用于认证应用程序13的访问权限,并且管理和控制有待使用的密钥和公钥。
[0133] (1)内核程序11的访问认证器115管理“第一密钥”和“第一公钥”,并且将“第一公钥”发送至应用程序13,从而打开它。
[0134] 应用程序13使用接收的第一公钥来对有待通过套接字发送至内核程序11的消息进行加密。
[0135] (2)应用程序13管理“第二密钥”和“第二公钥”,并且将“第二公钥”发送至内核程序11的访问认证器115,从而打开它。
[0136] 内核程序11使用接收的第二公钥来对有待通过套接字发送至应用程序13的消息进行加密。此处,内核程序11的访问认证器115提前设置用于认证的口令。
[0137] 图4是第一时序图,示出了在API库与访问认证器之间的时序过程的实施例。如图所示,API库被布置在应用程序侧。
[0138] (S101)内核程序11的访问认证器115提前将“第一公钥”发送至API库12。
[0139] (S102)当访问内核程序11的关系数据库时,API库12首先通过使用在步骤S101中接收的第一公钥来对保存的“口令”以及生成的“第二公钥”进行加密。
[0140] (S103)API库12使用系统调用来将加密消息(加密口令和第二公钥)发送至内核程序11。例如,分别设置以下系统调用。
[0141] sqlite3_set_authorizer()
[0142] (S104)内核程序11的访问认证器115通过使用“第一密钥”来解密使用系统调用接收的消息,由此获得口令和第二公钥。然后,访问认证器115通过判断所获得的口令是否与预设口令一致来执行认证过程。
[0143] (S105)在口令认证成功时,内核程序11的认证器115生成“权限”。所述权限是指用于访问内核程序11的数据库的访问授权。
[0144] (S106)内核程序11的访问认证器115使用“第二公钥”来对权限进行加密。
[0145] (S107)作为对之前的系统调用的响应,内核程序11的访问认证器115将加密权限返回至API库12。
[0146] 然后,API库12(应用程序13)通过使用“第二密钥”来解密所接收的加密权限,以获得权限。在那之后,每当向SQL数据库发送命令时,API库12总是将权限添加至待发送的命令中。
[0147] 此处,由通过API库12来获得权限的应用执行的过程可以给予其他可靠应用的过程权限。即,多个处理可以共享用于访问内核程序的单个访问授权。因为通过公钥方法来将其自己的权限进行加密,所以更加难以欺骗地获取权限。
[0148] 图5是第二时序图,示出了在API库与访问认证器之间的时序过程的实施例。在图5中示出的时序过程紧随在图4中示出的时序过程。
[0149] (S1)在内核程序11成功认证访问之后(在向API库12发送权限之后),套接字建立器113建立用于与API库12进行连接的套接字(如在图3中的以上步骤S1)。
[0150] (S11)API库12使用“第一公钥”来对用于访问内核程序11的SQL数据库的“命令”以及之前获得的“权限”进行加密(参见图4)。
[0151] (S2)API库12生成包括加密消息(命令和权限)的消息结构“sqmsg”。
[0152] (S3)API库12使用“send()/write()”来将sqmsg发送至内核程序。内核程序使用“recv()/read()”来接收sqmsg。
[0153] (S31)内核程序的访问控制器114通过使用“第一密钥”来解密包括在sqmsg中的消息。
[0154] (S32)作为权限认证,内核程序的访问控制器114判断解密权限是否与其自己生成的权限相匹配。
[0155] (S4)只有在权限认证成功时,访问控制器114才将解密权限输出至关系数据库111。因此,只有应用程序的通过以上检查的命令可以实现对SQL数据库的访问。接收这种命令,关系数据库111返回执行结果。
[0156] (S41)内核程序的访问控制器114使用“第二公钥”来对从关系数据库111中接收的执行结果进行加密。
[0157] (S5)访问控制器114生成包括加密执行结果的消息结构“sqmsg”。
[0158] (S6)访问控制器114使用“send()/write()”来将sqmsg发送至API库12。API库12通过使用“recv()/read()”来接收sqmsg。
[0159] (S7)API库12使用“第二密钥”来解密包括在sqmsg中的消息。
[0160] 如以上详细地解释的,根据本发明的内核程序以及用于执行内核程序的方法和装置允许在不使用OS内核级上的文件系统的情况下提高存储在存储设备中的数据的机密性。
[0161] 根据本发明,通常作为应用在用户空间中被执行的数据库被安排在内核空间内。因此,可以阻止对数据库的访问并且可以隐藏数据库的操作存储器区域。也就说,即使是OS的管理员授权也不可以读出数据库的程序代码以及存储器区域的任何数据,这实现了极高的机密性。
[0162] 设置有根据本发明的内核程序的装置最适合用作用于管理个人数据的数据库。最近,经常发生这样的问题:恶意第三方通过通信网络来窃取存储在个人终端中的个人数据。本发明提供了针对所述问题的解决方案,所述解决方案防止所有个人数据被窃取。具体地,优选的是,将根据本发明的装置应用到安装在汽车上的计算机系统的存储器装置上。未来将实现的自动驾驶技术必须要求改进存储在每辆汽车中的数据的机密性和防篡改。进一步地,通过在每个单独的所有者中利用本发明的装置,实现了个人信息的高级安全性。
[0163] 在不背离本发明的精神和范围的情况下,可以构建本发明的上述各种实施例的许多广泛不同的替换和修改。所有前述实施例是仅作本发明的示例之用,并且并不旨在限制。相应地,仅如以下权利要求书及其等效物中所界定的那样限定本发明。
[0164] 附图标记列表
[0165] 1  装置;  10  存储设备;  11  内核程序;  111  关系数据库;  112  设备驱动器;  113  套接字建立器;  114  访问控制器;  115  访问认证器;  12 API库;  以及  13  应用程序。