digraph { concentrate=true; overlap=scale; splines=true; subgraph cluster_iomt { root [label=<ξ>]; node [shape = plaintext]; node1 [label=<
IDX1 CTR1 NEXT_IDX
>]; node2 [label=<
IDX2 CTR2 NEXT_IDX
>]; noden [label=<
IDXn CTRn NEXT_IDX
>]; root -> { node1, node2, noden }; subgraph { rank=same; node1:nextidx -> node2:idx; node2:nextidx -> noden:idx; noden:nextidx -> node1:idx; } label="Main IOMT"; } subgraph cluster_filerecords { node [shape = plaintext]; table1 [ label=<
Index Counter Version FR Certificate Certificate HMAC ACL root
IDX1 CTR1 VER1 FRCert1 HMAC(FRCert1, χ) α1
IDX2 CTR2 VER2 FRCert2 HMAC(FRCert2, χ) α2
>]; label="FileRecords"; } subgraph cluster_module { moduleroot [label=ξ>]; modulesecret [label=χ>]; userkeys[label= κ1 ... κn>]; label=T>; }; /* node1:idx -> table1:idx1 [ ltail=cluster_iomt, lhead=cluster_filerecords ]; node2:idx -> table1:idx2 [ ltail=cluster_iomt, lhead=cluster_filerecords ]; root -> moduleroot [ltail=cluster_iomt, lhead=cluster_module]; */ }