BIGV file format

Doug Simon doug.simon at oracle.com
Tue Jun 13 15:29:49 UTC 2017


Hi Alex,

Thanks for the background. Sounds like an interesting tool you are developing.

One suggestion is to use Graal as an analysis framework instead of relying on graph dumping output. We do this ourselves to check certain invariants in the Graal code base with the CheckgraalInvariants[1] unit test. This way you don't need to force the code you're interesting in analyzing to be compiled Graal but simply feed the relevant jars to the tool.

-Doug

[1] https://github.com/graalvm/graal/blob/1c5e3a5e544335e85dd271853161bceb635ac376/compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java

> On 13 Jun 2017, at 16:46, Alexander Senier <alexander.senier at tu-dresden.de> wrote:
> 
> Hi Doug,
> 
> sure, I'm happy to do that. We develop a toolset to partition security
> protocol implementations into interacting components. Based on the
> security guarantees (confidentiality, integrity) required by the
> elements of the protocol we divide it into partitions. The idea is that
> some partitions are untrusted and require no guarantees (e.g.
> networking) while others do (encryption). If components are isolated and
> interact over well-defined  interfaces only, errors in untrusted
> partitions don't affect security critical ones. If we could do this for
> large software automatically, this would greatly decrease the trusted
> code size.
> 
> This is where Graal comes into play. So far, our models are derived
> manually from a specification, which is tedious, error-prone and doesn't
> scale. The idea is that we use an existing implementation of a security
> protocol and build a sample app around it. For this application we
> perform a data flow analysis between subprograms. We may, however, need
> to analyze the control flow to identify security-critical branches  in
> some cases  (e.g. when checking whether a signature was correct).
> 
> As for the our needs wrt. to the output format, the information I see in
> IGV right now looks sufficient. I don't think we require any graph from
> the compile steps after parsing for our purpose, so a dump level 0 with
> only one graph per method would be nice. From the output, we need be
> able  to unambiguously identify the methods invoked so that we can
> annotate them (e.g. to mark the bounds of our model or map library
> functions to known primitives). In the future, we may also want to map
> back the log output to the source code to be able to create source code
> for the components we  have identified.
> 
> A standard binary format for which libraries exist would be great. I
> have no strong opinion on that - there are plenty of potential options
> (CBOR, BSON, XDR...). What is slightly annoying for integration into an
> automatic toolchain is the non-deterministic names of the log files. One
> single   file with a fixed name would be nice here. But I guess that's a
> multithreading issue and it's not super critical.
> 
> Hopefully I could make our intention clear. Thanks for asking! I'm
> interested in feedback if you see a better way to obtain the information
> we need.
> 
> Cheers,
> Alex
> 
> On 06/12/2017 02:50 PM, Doug Simon wrote:
>> Hi Alex,
>> 
>> Are you able to provide more information about the tool you are developing/using that reads the BIGV format? This may help guide us in terms of what's important.
>> 
>> -Doug
>> 
> 
> -- 
> Dipl.-Inf. Alexander Senier
> Scientific Assistant
> 
> TU Dresden
> Faculty of Computer Science
> Institute of System Architecture
> Chair of Privacy and Data Security
> 01062 Dresden
> 
> Tel.: +49 351 463-38719
> Fax : +49 351 463-38255



More information about the graal-dev mailing list