在全密态数据库中,客户端侧增加了一个轻量级的解析器,该解析器复用了服务端原有的解析器。用户/应用程序输入SQL语法后,客户端解析器进行词法和语法解析,会得到一棵语法树,使得驱动可以“理解”SQL语句,从而判断出需要加密的明文数据。
客户端加解密驱动通过遍历语法树,根据加密列信息,识别到语法树中需要处理的数据节点。提取出数据节点中的明文数据,使用列密钥进行加密并使用密文替换节数据点内的数据。然后将修改后的语法树进行逆解析,再通过语法树,生成SQL语句,然后发送给服务端。

图7 语法解析及加解密示意图
浙公网安备 33010602011771号