本发明涉及与对软件源代码的提交记录相关联的非同质化通证的生成,特别是但不仅限于涉及诸如开源软件代码等协作开发的源代码的非同质化通证的生成。
背景技术:
::1、在软件开发领域,许多开发者在联合软件项目上进行协作是常见的做法,通常使用开源模型。本领域技术人员将会理解,顾名思义,开源软件是源代码可自由修改和再分发的软件。换句话说,它是允许去中心化软件开发的模型,使用开发者社区来协作进一步开发该软件。2、通常,开发者从事这些类型的项目可能是出于多种原因,其中少量示例包括对项目目标的普遍热情、学术目的,或者提升他们作为开发者的自身技能。然而,申请人意识到,激励开发者为开源项目做出贡献的机制很少(如果有的话),并且大多数项目无法吸引和接触全球开发者。3、根据的2020年数字洞察报告(2020digital insight report),99.95%的开发者处于非活跃状态,并且71.21%的开源项目是由不足10个开发者来支持。有段时间,开源项目“openssl”仅由单个活跃开发者维护。4、为这些开源项目做出贡献的开发者可能会提供对项目有重大影响的代码。例如,由特定开发者供应的对源代码的更改(称为“提交记录(commit)”)可能会向项目添加特别重要的新特征,或者可能会修复特定错误或关键安全漏洞。5、申请人意识到,提供用于确定与特定代码相关联的价值并将其适当地归属于一个或多个相关开发者的机制将会是有益的。技术实现思路1、从第一方面看,本发明的实施方式提供了一种操作可信执行环境以生成与对源代码的提交记录相关联的非同质化通证的方法,所述方法包括:2、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;3、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;4、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;5、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;6、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;7、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;8、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;9、生成非同质化通证;以及10、将所述非同质化通证与关联于所述提交记录的所述结构信息和所述语义信息相关联。11、本发明的该第一方面扩展到一种可信执行环境,该可信执行环境被配置用于生成与对源代码的提交记录相关联的非同质化通证,所述可信执行环境被配置用于:12、接收第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;13、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;14、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;15、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;16、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;17、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;18、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;19、生成非同质化通证;以及20、将所述非同质化通证与关联于所述提交记录的所述结构信息和所述语义信息相关联。21、本发明的第一方面还扩展到一种非暂时性计算机可读介质,该非暂时性计算机可读介质包含指令,当所述指令由处理器执行时,使得所述处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:22、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;23、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;24、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;25、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;26、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;27、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;28、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;29、生成非同质化通证;以及30、将所述非同质化通证与关联于所述提交记录的所述结构信息和所述语义信息相关联。31、本发明的第一方面还扩展到一种计算机软件产品,所述计算机软件产品包括指令,当所述指令由处理器执行时,使得处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:32、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;33、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;34、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;35、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;36、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;37、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;38、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;39、生成非同质化通证;以及40、将所述非同质化通证与关联于所述提交记录的所述结构信息和所述语义信息相关联。41、因此,应当理解,本发明的实施方式提供了一种布置,在该布置中使用“可信执行环境”(trusted execution environment,tee)以通过检查与对软件代码的给定提交记录相关联的语义内容和结构内容,以及随后生成继而与关联于所述提交记录的语义内容和结构内容的相关信息相关联的非同质化通证(non-fungible token,nft),来分析所述提交记录对软件代码的影响。因此,nft提供了提交记录c的“指纹(fingerprint)”,从而捕获提交记录c对相关源代码的结构内容和/或语义内容的影响。42、换句话说,对于给定的代码提交记录c:取提交记录c之前的源代码s和提交记录c之后的源代码s'作为基于tee提供可信计算环境的“透明中心”(transparency centre,tc)服务的输入(s,s',c)。如果需要,可以将该tc服务设置在任何云平台上。43、本领域技术人员将会理解,tee是安全处理布置,其可以形成更大的处理布置或处理器(诸如中央处理器(cpu))的一部分。存在本领域本身已知的,本发明的各个方面和实施方式可以容易地应用于的若干种不同类型的tee。因此,tee是可以运行通用程序的计算环境。它通常具有其自己的存储器,但可以通过以受限和加密的方式使用外部存储器来对此谨慎扩展。它可以安全地向用户认证自己,从而若非如此,就没有用户会合理地相信他们正在使用或查看来自tee的结果。这通常涉及认证和某种形式的密钥协商以及tee与用户之间签名机制的自举(bootstrapping)。一般而言,tee将被配置为仅使用所有各方都已知并且信任的程序。此外,tee通常能够认证其配置方式。44、根据本发明使用基于tee的透明中心服务是非常有利的,原因在于tee确保用于执行分析的过程是可信的。这是因为如上文所概述,在tee上运行的代码是安全储存的,并且不能被篡改。因此,可以相信关于提交记录而执行的结构分析和语义分析是客观的。特别是,基于tee的透明中心服务的使用确保了用于执行分析的过程可信,因为在tee上运行的代码被安全地储存并且不能被篡改。因此,由于代码提交记录与对该服务的任何其他提交记录输入都要经受相同的分析,因此可以相信对提交记录的分析以及因而由该提交记录的开发者提供的价值是客观的。45、申请人意识到,将tee用于本发明的分析过程的另一个益处是,如果需要的话,tee为更改软件分析的实现提供高度的灵活性。尽管可以在没有tee的情况下使用基于密码学的解决方案,但这些基于密码学的解决方案通常是针对特定的分析实现方案而实现的,并且如果要在以后更改软件分析,则需要复杂的实现或重新设计。此外,tee的使用支持其中期望不泄露实现方案的机密软件分析。举例说明,如果:t是软件分析器的源代码;t'是t的加密版本;并且x是t的可执行文件,则t的提供者可以将t'和x发送到基于tee的透明中心,以运行软件分析以及证明结果是由与t(和t')相关的x所生成,而不向他人泄露t。46、本领域技术人员将会理解,术语“源代码”用于表示在任何编译过程之前通常全部或部分由一个或多个人类编写的底层代码。这可以用常规的编程语言编写,诸如:c;c++;c#;java;python;visual basic;javascript;r;sql;或者php,但是应当理解,此列表不是穷举性的,并且存在本领域本身已知的,本发明的原理可以容易地应用于的数千种不同的编程语言。只要可以对代码执行相关分析,本发明还可以与未广泛使用的专有编程语言一起使用。47、tc服务执行结构分析过程st,以将(s,s')解析为一对结构表示(t,t'),在一些实施方式中,所述一对结构表示(t,t')可以包括语法树(有时称为“抽象语法树”)。本领域技术人员将会理解,这些第一结构表示和第二结构表示(如上文所述,其可以包括语法树)的计算可以经由本领域本身已知的明确定义的树/图算法或特定的机器学习过程来实现。48、至少在一些实施方式中,分析结构表示以确定与提交记录相关联的结构信息的步骤可以包括计算第一结构编码(m_结构_a)。因此,该编码m_结构_a可以基于(t,t')为c提供工作证明。49、如上文所概述,所述方法包括将第一源代码和第二源代码(s,s')编译成对应的可执行代码(b,b')作为(s,s')的低级表示,以及为所述两个可执行代码构建控制流图(g,g')。因此,在一些潜在重叠的实施方式中,分析第一控制流图和第二控制流图以确定与提交记录相关联的结构信息的步骤可以包括计算第二结构编码(m_结构_b)。因此,该编码m_结构_b可以基于(g,g')为c提供工作证明。50、在一些实施方式中,从抽象语法树(或类似之物)和控制流图生成结构信息的过程可以涉及视情况在给定的图结构(即,抽象语法树(其为一种类型的图))和/或控制流图上运行系统遍历。在此过程期间,根据深度优先搜索(deepth-first-search,dfs)过程来访问图中的所有节点。使用该过程,每次访问节点时,都会基于该节点包含的内容来更新结构信息。该过程继而基于dfs继续访问下一节点。该过程继续进行,直到已经涵盖图中所有节点,此时过程完成。51、符号执行步骤可以通过系统地访问控制流图(control flow graph,cfg)例如使用dfs,而以类似的方式工作。根据此类实施方式,在执行开始之前,过程为cfg中使用的所有变量分配符号值(例如,x、y、z),而不是具体值(concrete value)。继而,可以一个接一个地符号地执行cfg中的所有节点和路径。具体而言,执行过程会基于虚拟机标准和符号化上下文,符号化执行每一个控制流基本块内的所有指令信息,更新软件分析过程的符号化状态,并添加语义图结构等相关语义信息。在cfg中探索完整的路径会产生符号值及其表达式的集合。52、在一些实施方式中,可以使用“可满足模理论”(satisfiable modulo theory,smt)求解器来检查表达式是否可解,即,为所有符号变量找到至少一组具体值以使表达式被评估为真。如果是这样,则路径是可行的,因为其在特定条件下能够被触发。不可解的路径将被忽略,并且直到探索完所有路径所述过程才完成。smt求解器可以形成执行cfg的符号执行的同一模块的一部分,或者可以是单独的模块。53、在一组特定的实施方式中,结构信息(m_结构)因此可以是这两个结构编码m_结构_a和m_结构_b的组合。54、在一些情况下,提交记录可以与提交记录日志(即,提交记录所提供内容的概述)一起提供。这可以是可指示出提交记录的某些属性的书面描述和/或一组选项的形式。例如,提交记录日志可以指示出提交记录引入了一个或多个新特征和/或提交记录修复了软件中的特定错误。在一些实施方式中,所述方法还包括从与提交记录相关联的提交记录日志提取数据。这个可选的语义分析过程可以被称为“se-a”。在一组此类实施方式中,从与提交记录相关联的提交记录日志提取数据的步骤可以包括计算第一语义编码(m_语义_a)。55、如上文所概述,本发明的方法包括对第一控制流图和第二控制流图(g,g')执行语义分析过程(称为“se-b”)。在一些实施方式中,分析所述第一语义表示和第二语义表示的步骤包括计算第二语义编码m_语义_b。该编码m_语义_b可以经由特定形式的形式验证技术为c提供工作证明的编码,例如通过符号地遍历这两个图来捕获并且向量化对源代码的语义更新。通常,应当理解,术语“语义更新”是指不考虑源代码的结构形式(例如,包括但不限于条件程序、值依赖等)的逻辑修改。56、在一组特定的实施方式中,语义信息(m_语义)因此可以是这两个结构编码m_语义_a和m_语义_b的组合。57、根据各种编码在给定的一组实施方式中的存在,tee可以提供各种编码的组合作为输出。在一组特定的实施方式中,tee的输出包括结构信息m_结构和语义信息m_语义。58、在一些实施方式中,结构信息m_结构和语义信息m_语义可以各自包括相应的数值向量。这些数值向量中的每个值可以是“责任明确的(accountable)”或“非责任明确的(non-accountable)”。责任明确的值意味着该值与可以独立解释并且可以通过本领域本身已知的向量化技术生成的属性直接相关。非责任明确的值与作为整体的向量相关,而不是与任何独立的值相关,这些非责任明确的值可以由机器学习或深度学习模型生成。因此,编码或数值向量提供软件提交记录的客观抽象。59、设想了这样的布置:其中可以通过将特定公式应用于编码以生成数值分数来生成给定软件提交记录的数值分数,尽管选定的公式将使数值分数成为主观度量,而不是由编码本身给出的客观度量。因此,一般而言,特定提交记录的影响是在软件的开发过程或使用的后期而不是在提交记录的时候,通过社区共识来确认的(如果大多数开发者和/或用户对提交记录反映积极,则其被认为是有影响力的)。因此,本发明的实施方式使用来自提交记录的结构信息m_结构和语义信息m_语义来生成无偏抽象。作为结果,无论社区对提交记录的看法如何随时间变化(例如,从积极到消极,或者反之亦然),m_结构和m_语义提供的客观度量都保持不变。60、术语“源代码”还应当理解为扩展到“中间语言”代码,诸如llvm ir。本领域技术人员将会理解,中间代码通常提供源代码(以诸如上文列出的高级编程语言编写)和用于执行的机器代码之间的中间表示。根据本发明的各个方面的实施方式,可应用于源代码的分析和验证技术还可以对此类中间代码执行。因此,供应商能够以此类中间表示形式供应“源代码”。61、因此,如上文所概述,在一些实施方式中,源代码包括软件代码。然而,除了用于生成与对软件源代码的提交记录相关联的nft之外,申请人意识到本发明的原理还可以应用于硬件。本领域技术人员将会理解,可以使用硬件描述语言(hardware descriptionlanguage,hdl)来定义电子电路,特别是复杂数字电路,其中合成器(类似于软件开发中使用的编译器)可以将期望电路行为的hdl描述转换成“网表”,即,物理电子组件(通常来自预定义的组件库)及其之间相关连接的列表,该列表一旦被构建成物理电路,将会具有hdl描述中定义的属性。本文使用的术语“源代码”还应当理解为包括以hdl编写的代码。两种常用的hdl是verilog和vhdl,但这些仅是示例性的并且本发明的原理适用于任何此类hdl。因此,在一些实施方式中,源代码包括hdl代码。62、本领域技术人员还将会理解,术语“可执行代码”——如与本发明的某些实施方式相关联使用的——用于表示可由处理器执行以便执行一个或多个关联功能的代码。通常,可执行代码是经由编译过程从源代码派生出来的,从而产生“二进制文件”(也称为“机器代码”或“机器可读代码”)。尽管这通常采用人类难以辨认的形式,但是术语“可执行代码”还扩展到“可执行源代码”,其中人类可读代码是可执行的。术语“可执行代码”进一步扩展到涵盖“字节码”(有时称为“可移植代码”或“p代码”),本领域技术人员将会理解,这是被设计成由软件解译器执行或用于进一步编译成机器代码的指令集的形式。63、供应商提供的代码可能会经受一些混淆过程。例如,可能对源代码(或一些中间代码)加以混淆,从而使代码对人类来说不可理解,但是仍然能够被编译成可执行文件,所述可执行文件提供与从混淆前的源代码编译的可执行文件相同的功能,或者能够以其遮蔽的源代码形式被执行。64、然而,应当理解,关于源代码或可执行代码对于人类和/或机器而言的可辨认性或可理解性没有严格的要求。然而,通常而言,源代码和可执行代码可以是这样的形式:使得源代码对于在tee内执行的分析的目的是可理解的,而可执行代码可能是不可理解的,或者可能是虽可理解但程度低于源代码。尽管可执行代码通常不会被人类清楚,但是应当理解,源代码也不一定需要被人类清楚,只要在tee内进行的分析可在该源代码上执行即可。65、本发明的原理可以应用于其中做出提交记录以更新源代码的任何软件项目。尽管这例如可以是由单个开发者进行工作的软件项目,但是本发明在其中多个不同用户对源代码做出贡献的布置中(例如,在协作开源软件项目中)特别有利。因此,在一些实施方式中,源代码可由多个用户编辑。生成与开发者对项目的贡献相关联的nft的能力可以鼓励开发者参与项目。66、如前文所概述,tee使用提交记录前的源代码(“第一”源代码)和提交记录后的源代码(“第二”源代码)进行操作。在一些实施方式中,第一源代码和第二源代码被直接供应给可信执行环境。然而,在一组备选实施方式中,第一源代码和提交记录被直接供应给可信执行环境,所述方法还包括通过使第一源代码经受提交记录来生成第二源代码。67、在一些实施方式中,所述方法还包括从提交记录提取一个或多个意图标签,以及将所述一个或多个意图标签添加到与提交记录相关联的语义信息中。68、在一些实施方式中,非同质化通证包括与提交记录相关联的结构信息和语义信息。换句话说,结构信息和语义信息——或“元数据”——可以储存在nft的数据字段中。这样做可以通过简单地检查nft本身来容易地访问该信息,然而这可能会带来缺点,因为其增加了nft所需的存储。这是特别重要的考虑因素,因为将元数据储存在nft中一般会增加将nft储存在区块链上的成本,原因在于此类区块链系统通常需要为区块链存储的每一比特付费。69、因此,在一些优选实施方式中,所述方法还包括将与提交记录相关联的结构信息和语义信息储存在数据库中,所述结构信息和语义信息对照与非同质化通证相关联的标识符进行储存。换句话说,可以将元数据储存在区块链外存储中,其中nft提供指针(即,标识符),所述指针指示出在哪里可以找到元数据。应当注意的是,即使元数据被放置在区块链外存储中,攻击者也不能伪造元数据,原因在于生成元数据的过程是可验证的。拥有来自可信来源的输入的观察者可以使用nft中的链接来查找元数据以及在本地运行所述过程以生成元数据的副本,并且继而检查所储存的元数据是否有效。70、在一些实施方式中,所述方法还包括:从与提交记录相关联的一个或多个信息字段提取数据;以及将所述数据与非同质化通证相关联。在一组此类实施方式中,所述一个或多个信息字段包括下列各项中的一个或多个:用户身份信息;软件仓库信息;以及/或时间戳。因此,tc服务可以视情况而执行提取过程e以从一个或多个源代码、提交记录和/或提交记录日志收集基本信息m_基本,该基本信息m_基本包括下列各项中的一个或多个:c的创建者、c的时间戳、关联于c的项目软件仓库等。该基本信息m_基本可以被提供作为tee的输出,并且在一组实施方式中是如前文所概述的与m_结构和/或m_语义在一起的tee的输出。71、应当理解,tee可以包括被配置用于实现本发明特征的合适的组件或模块。各个功能中的一个或多个(并且潜在地全部功能)可由相同的组件或模块实现,并且/或者这些功能中的一个或多个(并且潜在地全部功能)可由相应的独立组件或模块实现。72、在一些实施方式中,可信执行环境包括接收模块,该接收模块被配置用于接收第一源代码和第二源代码。73、在一些实施方式中,可信执行环境包括解析器,该解析器被配置用于解析所述第一源代码和第二源代码,以相应地从中生成第一结构表示和第二结构表示。74、在一些实施方式中,可信执行环境包括编译器,该编译器被配置用于编译所述第一源代码和第二源代码,以相应地从中生成第一可执行代码和第二可执行代码。75、在一些实施方式中,可信执行环境包括控制流图生成器,该控制流图生成器被配置用于从所述第一可执行代码和第二可执行代码生成相应的第一控制流图和第二控制流图。76、在一些实施方式中,可信执行环境包括树分析器,该树分析器被配置用于分析所述第一结构表示和第二结构表示。77、在一些实施方式中,可信执行环境包括图分析器,该图分析器被配置用于分析所述第一控制流图和第二控制流图。78、在一些实施方式中,可信执行环境包括符号执行器,该符号执行器被配置用于执行第一控制流图和第二控制流图的符号执行以生成相应的第一语义表示和第二语义表示。79、在一些实施方式中,可信执行环境包括图分析器,该图分析器被配置用于分析所述第一语义表示和第二语义表示以确定与提交记录相关联的语义信息。80、在一些实施方式中,可信执行环境包括非同质化通证生成器,该非同质化通证生成器被配置用于生成非同质化通证,以及将所述非同质化通证与关联于提交记录的结构信息和语义信息相关联。81、申请人意识到,结构分析和语义分析的使用是非常有益的,原因在于其提供了对软件提交记录所提供的影响的客观、全面的概览。使用这两者来分析软件代码(特别是提交记录)的功能是有用的,原因在于有可能具有两个软件代码a和b,所述两个软件代码a和b具有类似的结构,但是表现出非常不同的功能性。相反,a和b还可能具有完全相同的功能性但却具有非常不同的结构,当开发者重构软件(比如从a到b)以便使代码更可读和/或更容易维护时经常会是这种情况。然而,申请人意识到,在一些场景中,只需要结构分析或语义分析中之一。82、因此,从第二方面看,本发明的实施方式提供了一种操作可信执行环境以生成与对源代码的提交记录相关联的非同质化通证的方法,所述方法包括:83、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;84、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;85、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;86、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;87、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;88、生成非同质化通证;以及89、将所述非同质化通证与关联于所述提交记录的所述结构信息相关联。90、本发明的该第二方面扩展到一种可信执行环境,该可信执行环境被配置用于生成与对源代码的提交记录相关联的非同质化通证,所述可信执行环境被配置用于:91、接收第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;92、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;93、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;94、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;95、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;96、生成非同质化通证;以及97、将所述非同质化通证与关联于所述提交记录的所述结构信息相关联。98、本发明的第二方面还扩展到一种非暂时性计算机可读介质,该非暂时性计算机可读介质包含指令,当所述指令由处理器执行时,使得所述处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:99、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;100、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;101、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;102、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;103、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;104、生成非同质化通证;以及105、将所述非同质化通证与关联于所述提交记录的所述结构信息相关联。106、本发明的第二方面还扩展到一种计算机软件产品,所述计算机软件产品包括指令,当所述指令由处理器执行时,使得处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:107、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;108、解析所述第一源代码和所述第二源代码以相应地从中生成第一结构表示和第二结构表示;109、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;110、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;111、分析所述第一结构表示和所述第二结构表示以及所述第一控制流图和所述第二控制流图,以确定与所述提交记录相关联的结构信息;112、生成非同质化通证;以及113、将所述非同质化通证与关联于所述提交记录的所述结构信息相关联。114、备选地,从第三方面看,本发明的实施方式提供了一种操作可信执行环境以生成与对源代码的提交记录相关联的非同质化通证的方法,所述方法包括:115、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;116、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;117、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;118、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;119、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;120、生成非同质化通证;以及121、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。122、本发明的该第三方面扩展到一种可信执行环境,该可信执行环境被配置用于生成与对源代码的提交记录相关联的非同质化通证,所述可信执行环境被配置用于:123、接收第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;124、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;125、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;126、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;127、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;128、生成非同质化通证;以及129、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。130、本发明的第三方面还扩展到一种非暂时性计算机可读介质,该非暂时性计算机可读介质包含指令,当所述指令由处理器执行时,使得所述处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:131、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;132、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;133、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;134、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;135、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;136、生成非同质化通证;以及137、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。138、本发明的第三方面还扩展到一种计算机软件产品,所述计算机软件产品包括指令,当所述指令由处理器执行时,使得处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:139、向所述可信执行环境供应第一源代码和第二源代码,所述第二源代码是所述第一源代码经受所述提交记录的结果;140、编译所述第一源代码和所述第二源代码,以相应地从中生成第一可执行代码和第二可执行代码;141、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;142、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;143、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;144、生成非同质化通证;以及145、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。146、申请人还意识到,当仅执行语义分析时,代码可以仅以可执行(即,二进制代码)的形式供应给tee。因此,从第四方面看,本发明的实施方式提供了一种操作可信执行环境以生成与对源代码的提交记录相关联的非同质化通证的方法,所述方法包括:147、向所述可信执行环境供应第一可执行代码和第二可执行代码,所述第一可执行代码和第二可执行代码是第一源代码和第二源代码的编译版本,所述第二源代码是所述第一源代码经受所述提交记录的结果;148、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;149、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;150、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;151、生成非同质化通证;以及152、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。153、本发明的该第四方面扩展到一种可信执行环境,该可信执行环境被配置用于生成与对源代码的提交记录相关联的非同质化通证,所述可信执行环境被配置用于:154、接收第一可执行代码和第二可执行代码,所述第一可执行代码和所述第二可执行代码是第一源代码和第二源代码的编译版本,所述第二源代码是所述第一源代码经受所述提交记录的结果;155、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;156、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;157、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;158、生成非同质化通证;以及159、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。160、本发明的第四方面还扩展到一种非暂时性计算机可读介质,该非暂时性计算机可读介质包含指令,当所述指令由处理器执行时,使得所述处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:161、向所述可信执行环境供应第一可执行代码和第二可执行代码,所述第一可执行代码和第二可执行代码是第一源代码和第二源代码的编译版本,所述第二源代码是所述第一源代码经受所述提交记录的结果;162、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;163、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;164、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;165、生成非同质化通证;以及166、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。167、本发明的第四方面还扩展到一种计算机软件产品,所述计算机软件产品包括指令,当所述指令由处理器执行时,使得处理器执行操作可信执行环境的方法,以生成与对源代码的提交记录相关联的非同质化通证,所述方法包括:168、向所述可信执行环境供应第一可执行代码和第二可执行代码,所述第一可执行代码和第二可执行代码是第一源代码和第二源代码的编译版本,所述第二源代码是所述第一源代码经受所述提交记录的结果;169、从所述第一可执行代码和所述第二可执行代码生成相应的第一控制流图和第二控制流图;170、执行所述第一控制流图和所述第二控制流图的符号执行,以生成相应的第一语义表示和第二语义表示;171、分析所述第一语义表示和所述第二语义表示,以确定与所述提交记录相关联的语义信息;172、生成非同质化通证;以及173、将所述非同质化通证与关联于所述提交记录的所述语义信息相关联。174、应当理解,上文关于本发明的第一方面描述的可选特征视情况同样适用于本发明的第二方面、第三方面和第四方面。当前第1页12当前第1页12