Method for encoding in a graph and tangible encoding object

WO2025061534A1PCT designated stage expired Publication Date: 2025-03-27INRIA INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/EP2024/075307
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-09-21
Filing Date
2024-09-11
Publication Date
2025-03-27

Smart Images

  • Figure EP2024075307_27032025_PF_FP_ABST
    Figure EP2024075307_27032025_PF_FP_ABST
Patent Text Reader

Abstract

The invention relates to a method for encoding a message in a graph and to a tangible object encoding the message, comprising: - selection (E0) of a root for a tree in the graph, - next, the message being considered to be a succession of units of information, a succession of additions to the tree each time a new edge of the graph connects the tree to a new node, the new node being the subject of a selection (E1), called the first selection, from nodes of the graph termed candidate nodes that, at the time of addition, are outside the tree and neighbouring the tree because separated from the tree by a single edge, these single edges forming candidate edges, the new edge for its part being the subject of a selection (E2), called the second selection, from the candidate edges, one of the selections encoding one or more successive units of information of the succession of units of information.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] DESCRIPTION

[0002] Title: Encoding process in a graph and encoding material object

[0003] Technical field

[0004] The invention falls within the field of computer-analyzable graphic codes.

[0005] Barcodes and QR codes (quick response codes) are well known. These codes are based on the identification, by an optical computer reading system, of two contrasting aspects. These can form a sequence in one-dimensional barcodes, or can be interlaced in complex patterns, particularly in QR codes. The contrast between two aspects allows for simple decoding, with the 'whites' and 'blacks' representing a binary code. Instead of white and black, other colors can be used, provided there is sufficient contrast.

[0006] Some industrial and commercial applications require codes to be physically robust (resistant) and intrinsically linked to the object that is to carry the code, and therefore manufactured in the mass of the object or permanently fixed by any process. In many cases, it is also important that the codes be manufactured at low cost while being unique. It is desired to be able to manufacture them in various materials, such as metal or plastic, and by versatile and accessible techniques, such as molding, or recently, additive manufacturing - or three-dimensional printing.

[0007] The need for contrasting aspects in complex spatial arrangements makes manufacturing tricky. It becomes necessary to combine two materials positioned side by side with precise and small interlacings, which leads to complex production, and therefore high costs and robustness that is difficult to achieve. In filament additive manufacturing, when small sizes are targeted, the numerous stops and restarts of the deposition make the process difficult to control and repeat identically.

[0008] In this context, the invention relates to a new form of codes, which allows not only simple and robust physical manufacturing with different manufacturing processes, but also simple and robust decoding via an image capture algorithm and computer analysis.

[0009] The invention therefore provides, from a message, the manufacture of a physical object, or material object, incorporating the code, which is put into circulation for the benefit of a receiver knowing a possible coding secret and capable of implementing the decoding method.

[0010] The invention therefore also relates to the process of decoding the message via an image capture and analysis algorithm by processor implemented on - for example - a smartphone.

[0011] Definition of the invention and associated advantages

[0012] The process of generating graph code is based on a selection of edges in a graph. Recall that a graph is a set of vertices and edges between vertices of the graph.

[0013] It consists of a process of encoding a message or a secret phrase in a graph possibly using a pre-established secret, comprising

[0014] - a choice of a root for a tree in the graph,

[0015] - then, the message or the secret phrase being considered as a succession of information units (generally elementary units or bits), a succession of additions in said tree each time of a new edge of the graph connecting the tree to a new node, the new node first being the subject of a choice, called first choice, among the nodes of the graph called candidate nodes which, at the time of the addition, are external to the tree and neighbors of the tree because distant from the tree by a single edge, such single edges constituting candidate edges, the new edge then being the subject of a choice, called second choice, among the candidate edges, the succession of additions encoding, in the first or second choice, a successive information unit of, respectively the succession of information units of the secret phrase or of the succession of information units of the message, the additions being further carried out, where appropriate,according to a rule that takes into account secrecy. Using this method, a two-color or two-aspect graphic code is generated, one of whose aspects is constructed from a single piece, and can therefore be handled in many very advantageous ways.

[0016] According to advantageous and optional features

[0017] - the first choice may be made by disfavoring for the purposes of said first choice neighboring nodes which have a lower number of different possibilities of connection to the tree by such a single edge than other neighboring nodes, including by excluding from the first choice neighboring nodes which have a number of possibilities of connection to the tree by a single edge which is less than the maximum in the group of candidate nodes;

[0018] - additions can be made by considering a pseudorandom sequence of the secret (a secret pseudorandom sequence), which is progressively reviewed during the additions of the succession of additions;

[0019] - the secret pseudorandom sequence can be used for both the first choice and the second choice;

[0020] - the first and second choices can be carried out by considering a predetermined order of nodes in the node graph - in particular, for the first choice, it is possible to simply follow the predetermined order of nodes;

[0021] - the succession of additions can be continued after exhaustion of the succession of information units, until the graph is completely covered by the tree, by adding to the end of the message or secret phrase any type of value, including a constant value;

[0022] - the graph can be a rectangular (or even square), triangular, hexagonal or radial plane grid, or can be a non-planar graph, developing in space, and thus constituting a network of points linked together in space, possibly with a cubic mesh;

[0023] - In one embodiment, a message is encoded in the second choices, a secret phrase being further encoded in the first choices, this secret phrase providing additional protection to the encoding of the message in the graph;

[0024] - the tree can be materialized by the manufacture of an object in metal or synthetic polymer, by additive synthesis or cutting or stamping of plate, the object being kept visible or conversely integrated hidden inside an object opaque to visible light. For the manufacture of the object, the tree is used to define manufacturing trajectories, or more generally a manufacturing plan, which is communicated to the manufacturing machine.

[0025] In one embodiment, a grid-type graph is used, the points of which are regularly spaced in a plane and form a generally regular square mesh grid, with edges between neighboring points only, in the two perpendicular dimensions. But a 3-dimensional graph can also be used.

[0026] The algorithm produces an edge selection such that up to all points of the graph are connected to the tree, and importantly the edge selection does not form any cycles.

[0027] The edge selection thus forms a spanning tree of the graph. The generation process includes choices to be made. Some of these choices are based on a secret necessary for encoding and decoding.

[0028] One such choice is the starting point, commonly called the root, of the tree, which is a point on the graph. In one embodiment, the graph is a square grid and the root is one of the four corners of the grid, although it is not trivial to determine which of these four corners constitutes the root.

[0029] Other choices are made during the generation of the graphic code. These choices allow the message to be encoded. These successive choices consist of connecting one point to another, therefore including one of the edges of the graph in the tree.

[0030] Thus, the invention also consists of a system for decrypting an encrypted message and providing said message in its decrypted form.

[0031] The decryption and supply system comprises an object comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume and a computer program for extracting a message from an image of said object, by analyzing the choices of edges of the object from a root of said object to successively discover information elements with which the decrypted message is formed. These discovered information elements are those of a message encoded by an encoding method according to the invention. In one embodiment, the set of edges is planar.

[0032] In one embodiment, the set of edges being planar, or three-dimensional, the object comprises a second material, the second material being of a different shade from the solid material and occupying a space separating edges of the set.

[0033] Depending on the implementation, the object is visible to the eye (under exposure to visible light waves, possibly by transparency thanks to visible light intense enough to pass through a layer of solid matter that does not absorb it completely) the object is therefore exposed to visible light - or conversely is hidden inside an object opaque to visible light, in which case it can be examined by tomography. In all cases, its image will be analyzed by computer.

[0034] The invention also provides a system for verifying the authenticity of an item, characterized in that the system comprises a computer program for encoding a secret phrase in a graph and indicating whether the graph obtained is identical to an object carried by the item and comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume.

[0035] List of figures

[0036] Figure 1A is a schematic of the algorithm used.

[0037] Figure 1B is an example of a spanning tree in a simple graph, according to an exemplary implementation of the invention.

[0038] Figure 2 is an example of manufacturing a physical object, or material object, incorporating a code according to the invention.

[0039] Figures 3 and 4 are views of such a physical object.

[0040] Figures 5 and 6 are views of a variant of the physical object incorporating the invention.

[0041] Figure 7 shows an example of application of the invention.

[0042] Figure 8 shows another variant of the material object incorporating the invention. Detailed description of an embodiment - existence of variants

[0043] Encoding

[0044] Starting elements

[0045] 1. The graph

[0046] The graph can be a square grid without diagonals, that is to say a square graph or equivalent, for which we consider that the neighbors of a node are its four neighbors along the sides of the elementary cell, a square grid with diagonals that is to say a square graph or equivalent, for which we consider that the neighbors of a vertex are its four neighbors along the sides of the cell and also the four nodes connected to two of the four previous neighbors, a hexagonal graph, or a triangular graph.

[0047] We thus have a graph, and we have chosen in this graph, a node which will serve as the root for the tree. We begin by including the root node in the tree S, which was previously empty.

[0048] The graph is denoted G and its M nodes are denoted n ; with o < i < M. The nodes have positions p t on a network. Edges connect the nodes. An edge is denoted e twith o < i < E ,, and each edge connects a pair of nodes. There are E edges in the graph.

[0049] 2. The pseudo-random sequence

[0050] We obtain a pseudo-random sequence which constitutes an element of secrecy.

[0051] A seed to define this pseudo-random sequence encrypts the message at the end of the process. Changing the seed produces a different code for the same data, and knowledge of the seed is necessary to decode the message.

[0052] With a suitable pseudo-random sequence algorithm, such as those used in cryptography, it is virtually impossible to find the seed even when knowing the code and the data due to the properties of robust pseudo-random sequences. The proposed method is therefore robust to attacks, and allows for example to protect the code data with a password, which is used as an encoding and decoding seed. Some steps of the method thus use a pseudo-random sequence R. The sequence generates a series of random numbers from a seed. Obtaining the next number is denoted r, R «- next(R)

[0053] This function returns the random integer r, and advances the sequence R to its next member. For the same seed, the sequence of r generated is always the same and therefore perfectly repeatable, in a deterministic way.

[0054] 3. Data to be encoded

[0055] The data to be encoded, called message, is defined as a number of bytes D noted dj with 0 < i < D.

[0056] We encode them in the form of a single large integer N.

[0057] 4. Generating a tree

[0058] 4.1 General concepts

[0059] [Fig. 1 A] The algorithm calculates a spanning tree, that is to say a connected graph without cycles which passes through all the nodes, without of course containing all the edges.

[0060] During an EO step, a special node, n root is designated as the root of the tree. This could be, for example, the lower left corner of the grid.

[0061] During the algorithm the tree is represented by the set of edges that compose it, and denoted S. We denote N(S) the nodes of the edges of the tree. The tree is spanning if all the nodes of G are in N(S).

[0062] For a node cew(S) we define the possible edge choices to connect c to S as:

[0063] ^Cc) c g -(5) = {Cc^D e E | nor e W(S)}

[0064] The set is empty if node c cannot be connected to S.

[0065] We define the candidate nodes as C(S) = {ne ^(S)| |7'(n)| > 0}

[0066] Where l^tn)! is the number of elements in (n) . c(s) is therefore the set of nodes that have at least one possible edge choice to be connected to the tree S.

[0067] 4.2 Iterations

[0068] As long as all the nodes of the graph are not in the tree S, we iteratively perform the following series of steps, this series constituting a loop:

[0069] Step E1 includes the following actions:

[0070] We define, or redefine if it had been defined previously, the set C(S) as the set of nodes neighboring the nodes of the tree S as it exists during this occurrence of the loop, that is to say which can, using an edge of the grid, be connected to a node of the tree S

[0071] C(S) = {set of neighboring nodes of tree S}

[0072] 4.2.1 Performance filter and choice of node to integrate (1 er choice)

[0073] We use a function udSuivant . The function NoeudSuivant(C(S)) chooses a node from C(S).

[0074] To do this, we extract from C(S) the more restricted set of nodes that offer the most possibilities of connection to the tree S as it exists during the current occurrence of the loop. Typically, during construction, the largest number of connection possibilities in a grid is 2, which therefore leads, to constitute the extract of interest from C(S), to exclude the nodes of C(S) that have only one possibility of connection to the tree S.

[0075] Thus, the Select function eliminates nodes that offer a single choice, if they exist and if there are nodes offering more choices, to increase the encoding capacity by avoiding using nodes offering only one choice, such nodes not allowing information to be encoded. This is a performance filter, from the encoding point of view. The nodes offering the most possible connection choices are ordered in a set T1 using the positions on the grid. The Sort function thus orders the nodes according to their global number, i.e. n k will be in front of nj in T1 if k < j.

[0076] At the same time, we pseudo-randomly choose a node c in the extract of interest of C(S), using the previously defined pseudo-random sequence. We take the following pseudo-random number r1 in the sequence R to choose a particular node among the nodes that have just been ordered:

[0077] T1 <-Sort(Select(C(S))) rl, R «- next(R)

[0078] Returns Tl[ rl % |T1| ]

[0079] Function . Node

[0080] Thus, one of the selected nodes in T is chosen using the pseudo-random function for the choice, by calculating the remainder of the Euclidean division (the modulo, denoted %) of r by the frequency of T1 . This random choice acts as an encryption tool, whose secret is the initial seed of R. However, in a variant, the choice is not random, and we simply take the first node in the order of the grid positions, using the global number.

[0081] The chosen node, in any case, is noted c.

[0082] Step E2 follows step E1 and includes the following elements.

[0083] 4.2.2 Choice of the edge or choice of the tree node which will be used to connect the new node (2 e choice)

[0084] If there is more than one connection possibility (at least two edges available to connect c), which then allows encoding information of at least one bit (an elementary unit of information), we choose one of the edges that can connect it to S, which amounts to choosing one of the nodes of the tree as it exists at this stage. We take the bits of the message to be encoded one after the other in order. If exactly two edges are available, we encode one bit of the message on the occasion of this occurrence of the loop whereas if more than two edges are possible, we always choose only one, but this choice in this favorable circumstance allows encoding more than one bit of the message.

[0085] If there is only one possible edge, no bits are encoded.

[0086] It is the function SelectionneArete, which will be described, which chooses an edge from P(c), thus encoding a piece of information (from N and therefore from the message) in this choice.

[0087] Again, we work on nodes sorted on the basis of their global number. This sorting is applied to the few nodes P(c) of the tree that are likely to define the edge with the node to be included and defines an ordered set T2. And in parallel, we take the next element r2 of the pseudorandom sequence and extract the remainder k (that is to say the modulo, noted %) of the Euclidean division of N by the frequency of P(c) (typically 0 or 1 if the grid is square).

[0088] We then choose the node in the set T2 which is defined by the remainder of the Euclidean division (the modulo, noted %) of the sum r2+k by the frequency of T2.

[0089] T2 <— Tri(T' c)) k «- N % IJ'(C)! r2, R «- next(R)

[0090] Returns T2[( r2 + k) % |T2| ]

[0091] .SelectedArete function

[0092] The calculation of k reveals the encoding, which depends on ^(c) | and therefore on the number of possible choices to link c to S. The use of the pseudo-random sequence R makes it possible to have no bias in the tree whatever N, in particular if N = 0, and as previously for the 1 er choice, acts as an encryption tool during the 2 e choice which is thus made.

[0093] Alternatively, however, one does not use a pseudorandom sequence, and r2 is constant, for example equal to 0.

[0094] We include the chosen edge in the tree.

[0095] We move on to the next elementary unit of information (or next bit) of the number N, that is to say of the message, by replacing N by the quotient of N by the number of P(c). We then move on to the next occurrence of the loop.

[0096] We therefore return to step E1.

[0097] 4.3 End of coding

[0098] In general, the information to be encoded runs out before all the nodes of the graph are included in the tree, and N becomes 0 at the end of one of the iterations, during the calculation of the quotient mentioned above. However, it is advantageous to physically cover the entire graph, so that all the codes look the same, and it is not possible to guess the length of the encoded data.

[0099] We therefore continue the inclusion of nodes, preferably using the pseudorandom sequence or with another secret element, or possibly without a secret element, until all the nodes are included in the tree, by performing occurrences of the loop until the nodes to be added are exhausted, and by coding any information, for example constant.

[0100] We then move on to step E3: the tree is finished.

[0101] [Fig. 1 B] We then interrupt the occurrences of the loop. The result of the algorithm is a spanning tree like the one shown in Figure 1 B, in the case of a graph that is a square planar grid of 11 nodes by 11 nodes (i.e. 121 nodes).

[0102] Manufacturing

[0103] [Fig. 2] A material object is then made using the tree. A skeleton 10 has been previously determined using the tree. This is a virtual curve with edges reproducing the tree at the dimensions planned for the object.

[0104] According to one embodiment, a body of the material object is constructed around the skeleton 10 by depositing, by additive manufacturing, a thick extruded wire of a first (solid) filling material 20 on each of the sides of the edges of the skeleton, as can be seen in FIG. 2, starting from one side, running along the skeleton on this side, reaching an end of the skeleton around which the extruded thick wire is placed to bypass the end, and then following the second side. Thus, a cyclic trajectory going around the skeleton and having exactly a given thickness called the solidification thickness, is produced, producing a total thickness around the skeleton equal to twice the thickness of the extruded thick wire. This allows a constant and regular deposition, without interruptions. The dotted arrow in the figure shows the direction of deposition of the thick material. The deposited solid material remains in place permanently.At corners in the shaft, corresponding to vertices between two edges, gaps may be present between the two thicknesses of the filler material 20 due to the curvature to be accommodated. These gaps are a consequence of the manufacturing method, and have no consequences on the decoding. In the embodiment that is presented, the thickness of the extruded thick wire is a quarter of the spacing between the parallel edges of the graph, such that there is between the filler material of two parallel edges included in the shaft a distance substantially equal to the width of the filler material of an edge (which is two widths of extruded wire).

[0105] [Fig. 3] Figure 3 shows a perspective close-up view of the material object thus produced. It can be placed on a surface that has a different color from which it will be easily distinguished, for subsequent computer processing, during decoding.

[0106] [Fig .4] Figure 4 still shows in perspective a complete view of such a material object, encoding up to 270 bits. It is specified that the surface on which it is placed can be the surface on which the additive manufacturing was carried out and to which it is glued due to the manufacturing process, or another surface on which the material object was subsequently glued, for example with a liquid glue that was applied between the two elements.

[0107] [Fig. 5] Figure 5 shows a variant in which the shaft is dark in color and the spaces between the edges of the shaft have been filled with a second filler material, which is light, and which has been deposited by extrusion of a thick wire also deposited in two parts, as was shown for the previous material deposited around the skeleton. The second filler material has been deposited for example around the first filler material, along the free surfaces of the latter, namely its flanks. At the corners in the material filling the space surrounding the shaft, gaps may again be present between the two thicknesses of the second filler material due to the curvature to be accommodated (these gaps are especially visible in Figure 6).

[0108] [Fig. 6] Figure 6 shows another variation of the two-color embodiment of Figure 5, in which the tree is light colored, which is the color of the first filler, and the space around it, filled with the second filler, is dark colored. A light color and a dark color in the case of observation by exposure to visible light can be replaced by the equivalent of a light shade and a dark shade in the case of observation by a computer using exposure to waves that are not light waves, especially in the case of examination of the object by tomography. Different solid materials give different reactions to the waves used, producing different shade equivalents on analysis.

[0109] [Fig. 7] As shown in Figure 7, the physical objects of Figures 2 to 6 can be manufactured on a first continuous layer, possibly printed by additive manufacturing, and then covered with another layer printed by additive manufacturing. This is made possible, as long as the dimensions chosen for the physical object are not too large in view of the additive manufacturing process (in particular the choice of material) by the load-bearing property of the physical object materializing the tree, since the tree runs along the entire surface and therefore constitutes a satisfactory support for overhanging material additions by additive manufacturing. Indeed, due to the fact that the codes densely cover an area of ​​a surface, generally flat, they offer load-bearing and therefore constitute a support allowing the reliable deposition of layers above, in particular for the case of deposition by extrusion - using a filament.

[0110] The material for translucent plastics offering the possibility of observing the shadow of dark matter by transmission and occultation of light, while forming a light and flat object.

[0111] It is also possible to print several layers of physical objects, each encoding a code, one on top of the other, due to this lift property. In the version of figures 3 and 4, the code, which is in one piece and whose sides have not been filled with a second filler, forms a channel into which a liquid element (a liquid metal, ink, powder, etc.) can be introduced or from which such a liquid element can be extracted by suction or blowing. This is possibly suitable for a molding operation.

[0112] Thus, the invention allows the production of the graphic code as a self-contained object in itself. The code or its complement being in one piece, it can be manufactured as an object, for example to be carried in a pocket of clothing or in a purse or handbag, and serving as a key, key ring, or badge holder.

[0113] The graphic codes generated according to the invention can be robustly manufactured in hardware because they are made of a single piece. The code can be made of a single material and contrasted against any background, preferably plain, during decoding.

[0114] It is therefore possible to produce codes in the form of metal plates (solid or hollow, using water cutting, laser cutting or a stamping process.

[0115] The codes according to the invention can also be deposited by spraying paint onto a single-piece mask (stencil), since the pattern corresponds to a single hole in the mask.

[0116] The codes according to the invention can be produced by additive manufacturing, the small code size allowing hundreds of them to be produced in a single production run of a selective laser sintering machine, for example. The manufacturing trajectories are obtained by contouring (rotating around) the covering shaft, which produces a single cycle, ideal for manufacturing.

[0117] The codes according to the invention can also be manufactured on additive manufacturing machines by filament extrusion (fused deposition modeling), with ABS - acrylonitrile butadiene styrene - polylactic acid PLA or thermoplastic polyurethane TPU or any other type of compatible material. They can also be manufactured by stereolithography using a thermosetting resin. The object can be manufactured using a filament additive manufacturing machine: manufacturing is very robust, fast and reliable, thanks to extrusion along a single trajectory. The 'spiral' mode (or 'vase' mode) is possible in this manufacturing mode.

[0118] The object can be manufactured using an SLS (selective laser sintering) additive manufacturing machine. The production of a very large number of codes, all unique, is possible in a single production tank, greatly reducing the cost per code. On an SLA stereolithography additive manufacturing machine, manufacturing is also possible, robust and inexpensive. On a multi-material, multi-nozzle filament additive manufacturing machine, a bi-material code can be manufactured with one material for the code and another for its complement. On a fiber filament additive manufacturing machine, since the code is composed of a single trajectory, a fiber can be co-extruded along its length to give it increased strength.

[0119] In one embodiment, a double-sided code is printed, followed by a second code located above. By changing the material (filament) between the last layer of the first code and the first of the second, the two codes can have different colors, making them easier to decode. Thanks to the lift property, both codes are printed with optimal quality.

[0120] In one embodiment, the codes are embedded on the surface of a part manufactured by 3D printing, for example on the bottom part of the part that is in contact with the platen in a filament print. The generation algorithm is inexpensive and can run on a simple microcontroller, an FPGA or a dedicated processor. The code can be generated directly in the manufacturing machine, by replacing the part trajectories in an area with those of the code. It is possible to mark the manufactured parts in a unique and robust way. Thanks to the load-bearing property, the layers above the code are manufactured reliably.

[0121] In one embodiment, the code is embedded in the volume of an object and hidden from view, by taking advantage of a sufficiently large and load-bearing area. Decoding can then only be done destructively (cutting the part), or by an advanced optical process such as the use of the transparency of a material under strong lighting, the use of X-rays in a single plane, or even a CT-scan-computed tomography scanner technique aiming at a three-dimensional reconstruction. Temperature-sensitive materials can also make it possible to make the code visible even when it is embedded in the volume of an object, the vacuum or the air surrounding the tree having a lower thermal conductivity than such temperature-sensitive materials.

[0122] In one embodiment, the manufactured codes are sized for insertion. Their thickness is easily adjustable, and it is possible to create codes intended to be inserted and fixed on, or in, an object. This can be combined with additive manufacturing: for example, codes are pre-printed, delivered, and inserted into the part being manufactured - an advantage over an extrusion process is that the code is naturally fused to the part being manufactured.

[0123] [Fig. 8] The complementary trajectories, that is, the part around the tree materializing the code, can also be easily produced, by extracting the part of the graph complementary to the tree and manufacturing it by three-dimensional printing on a support surface. Figure 8 shows such an object. The branches are not necessarily all of a single piece, but they are held together by the continuous layer of material on which they are deposited, and, in the view shown, also by a printed peripheral frame.

[0124] The material object is then put into circulation, and obtained by a person who was not involved in its manufacture.

[0125] Decoding

[0126] The information contained in the material object is then decoded.

[0127] To do this, an image is captured, usually a digital image, and this is analyzed by a processor running an algorithm. The algorithm searches the image for the longest closed contour, which, with some exceptions, is the contour of the code itself, given its particular shape: it is extremely unlikely that a natural image would contain a contour of such a length.

[0128] Furthermore, if we know the overall shape of the domain of G (for example, a rectangle or a disk), it is possible to use the convex hull of the contour to define a homography and straighten the image of the code. In more detail, from the contour, the decoding process exploits the fact that the orientation of the edges follows that of the graph used for encoding. In the case of a grid, this allows the contour to be straightened by homography in the image, by finding the shape of the grid. We then find the rotation that positions the root n_root in the right corner of the grid, if it is rectangular. The edges of the contour are straightened according to their most probable direction, the knowledge of the grid and its connectivity allowing a robust approach to acquisition noise.

[0129] The tree is the skeleton of the straightened contour, and it is reconstructed by a thinning algorithm. Once the straightening is done, it is possible to reconstruct the spanning tree that corresponds to the code. This reconstructed spanning tree is denoted A. A specialized variant for the case of a 2D graph in a regular four-neighbor grid consists of reconstructing the tree from a grid positioned on the straightened image, determining from the average of the pixel values ​​in each box whether it corresponds to the thickened tree or to the void surrounding it.

[0130] Once the tree is reconstructed, the decoding process is restarted. It starts at the root, which is known to the person performing the decoding, and is similar to the encoding algorithm, except that at each step, instead of making a choice based on the message, which is not available, the choice made during encoding is observed on the structure, allowing the bits of the message to be progressively decoded.

[0131] Thus, we reconstruct N, the integer representing the message, from the reconstructed spanning tree A. The algorithm is the same as the encoder except that instead of choosing an edge we observe the choice in the reconstructed spanning tree A. We therefore obtain the value of k, with which we update N

[0132] N <- ( N taking the positive modulo.

[0133] Additionally, the division of N at each iteration and the N = 0 test are removed, since they have no meaning during decoding.

[0134] At any time, it is possible to check that the tree S being constructed is indeed a strict subset of A, the tree observed in the image. If this is not the case, an error occurred during the extraction of A from the image, or the elements provided as secrets by the user for decoding are incorrect. Alternative in which the elementary units of information are encoded during the first choice

[0135] Coding

[0136] In another embodiment, the data to be encoded, or passphrase, is presented in the form of a single large integer M.

[0137] We again define C(S) = {set of neighboring nodes of the tree S} and we use the function NextNode which chooses a node from C(S). To do this we again extract from C(S), with a Select function, the set of nodes which offer the most possibilities of connection to the tree S as it exists during the current occurrence of the loop. The nodes offering the most possible connection choices are ordered in a set T'1 using the positions on the grid.

[0138] A function Selectionnenoeud chooses a node from the nodes extracted above from C(S) by encoding a piece of information (from M) in this choice. It performs this encoding taking into account, unless choosing to do without it, the secret offered by the pseudorandom sequence R.

[0139] T'1 <-Sort(Select(C(S))) r'l,R <- next(R) k' <- M %\T' 1|

[0140] Returns T'l[(r'1 + k') % |T1| ] function. NodeSelection

[0141] The chosen node is noted c'.

[0142] We move on to the next elementary unit of information (or next bit) of the number M, replacing M by the quotient of M by the number of T'1

[0143] A chosen edge is included in the tree to connect the chosen node. The chosen edge can be chosen by encoding or not encoding part of the passphrase, and by taking into account or not the pseudorandom sequence.

[0144] We then move on to the next occurrence of the loop. Usage

[0145] This method, when used alone, makes it possible to know whether the material object presented during a control situation is an authentic object, which was manufactured by a person knowing the secret phrase M. This can be used to authenticate an item, in particular a valuable item, which bears the code, the material object produced by three-dimensional printing having been affixed to, incorporated into or manufactured in an inseparable manner with the item.

[0146] To verify that the object presented is thus authentic, it is compared to an object generated using the same method, from the same secret phrase M known by the person wishing to know if the object is authentic.

[0147] Alternative in which elementary units of information of a secret phrase are encoded in the first choice and elementary units of information of a message are encoded in the 2 e choice.

[0148] Combined with a message N encoded in the second choices, encoding a passphrase in the first choices protects the decoding of N by requiring a passphrase M at decoding time, acting like a password. The message N and the passphrase M are separate items, and the message is encoded, progressively, in the second choices, while the passphrase is encoded, progressively also, in the first choices. The passphrase and the message are depleted during the construction of the tree, at rates that may be the same or different.

Claims

CLAIMS 1. Method for encoding a message or a secret phrase in a graph, comprising: a choice (E0) of a root for a tree in the graph, - then, the message (N) or the secret phrase (M) being considered as a succession of information units, a succession of additions in said tree each time of a new edge of the graph connecting the tree to a new node, the new node first being the subject of a choice (E1), called first choice, among the nodes of the graph called candidate nodes which, at the time of the addition, are external to the tree and neighbors of the tree because distant from the tree by a single edge, such single edges constituting candidate edges, the new edge then being the subject of a choice (E2), called second choice, among the candidate edges, the succession of additions encoding over the course of said additions, in the first choice (E1 ) or the second choice (E2), successive information of, respectively,the succession of information units of the secret phrase (M), or the succession of information units of the message (N)., 2. Method of encoding in a graph according to claim 1, characterized in that the first choice (E1) is carried out by disfavoring for the purposes of said first choice neighboring nodes which have a smaller number of different possibilities of connection to the tree by such a single edge than other neighboring nodes, including by excluding from the first choice neighboring nodes which have a number of possibilities of connection to the tree by a single edge which is lower than the maximum in the group of candidate nodes.

3. Method of encoding in a graph according to claim 1 or claim 2, characterized in that the additions are carried out by considering a secret pseudo-random sequence (R), which is reviewed progressively during the additions of the succession of additions.

4. Method of encoding in a graph according to claim 3, characterized in that the secret pseudorandom sequence (R) is used for both the first choice and the second choice.

5. Method of encoding in a graph according to one of claims 1 to 4, characterized in that the first choice (E1) and the second choice (E2) are carried out by considering a predetermined order of the nodes in the graph.

6. Method of encoding in a graph according to one of claims 1 to 5, characterized in that the succession of additions is continued after exhaustion of the succession of information units, until complete coverage of the graph by the tree, by adding to the end of the message (N) or of the secret phrase (M) any type of value, including a constant value.

7. Method of encoding in a graph according to one of claims 1 to 6, characterized in that the graph can be a rectangular, triangular, hexagonal or radial plane grid, or be a three-dimensional network.

8. Method of encoding in a graph according to one of claims 1 to 7, characterized in that the tree is used for the manufacture of an object made of metal or synthetic polymer, by additive synthesis or cutting or stamping of plate, said object being kept exposed to visible light or conversely integrated hidden inside an object opaque to visible light.

9. Method of encoding in a graph according to one of claims 1 to 8, characterized in that a message is encoded in the second choices (E2), a secret phrase being further encoded in the first choices (E1).

10. System for decrypting an encrypted message and providing said message in its decrypted form characterized in that the system comprises an object comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or volume and a computer program for extracting a message from an image of said object, by analyzing the choices of edges of the object from a root of said object to successively discover elements information of a message encoded by an encoding method according to one of claims 1 to 9, with which the decrypted message is formed.

11. System for decrypting an encrypted message according to claim 10, characterized in that the object further comprises a second material, the second material being of a different color from the solid material and occupying a space separating edges of the assembly.

12. System for decrypting an encrypted message according to claim 10 or claim 11, characterized in that it is exposed to visible light or conversely is hidden inside an object opaque to visible light.

13. System for verifying the authenticity of an item, characterized in that the system comprises a computer program for encoding a secret phrase in a graph according to a method of one of claims 1 to 9 and indicating whether the graph obtained is identical to an object carried by the item and comprising an integral continuity of a solid material forming a non-cyclic connected set of edges running through an entire surface or an entire volume.

Citation Information

Patent Citations

  • Bar code pattern and bar code group pattern formed by node matrix and node line, and generation and identification method thereof

    CN102081748A

  • Xml printer system with rfid capability

    US20060249566A1

  • System and method for product authentication

    US20190197562A1