WO1990010908A1 - Dispositif informatique assurant la securite des droits d'auteur - Google Patents

Dispositif informatique assurant la securite des droits d'auteur Download PDF

Info

Publication number
WO1990010908A1
WO1990010908A1 PCT/FR1990/000166 FR9000166W WO9010908A1 WO 1990010908 A1 WO1990010908 A1 WO 1990010908A1 FR 9000166 W FR9000166 W FR 9000166W WO 9010908 A1 WO9010908 A1 WO 9010908A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
bytes
block
decoding
blocks
Prior art date
Application number
PCT/FR1990/000166
Other languages
English (en)
Inventor
Goulven Jean Alain Vernois
Original Assignee
Vernois Goulven
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR8903081A external-priority patent/FR2644261B1/fr
Application filed by Vernois Goulven filed Critical Vernois Goulven
Publication of WO1990010908A1 publication Critical patent/WO1990010908A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices

Definitions

  • the present invention eliminates these drawbacks by associating several mP3 transfer-decoding circuits working in parallel with a time offset.
  • the device called transfer-decoding-coding module is made up of a microprocessor mP2 compatible with, or identical to the microprocessor mP1 of the computer, of specialized circuits mP3 allowing the transfer by blocks and the fast decoding of the parts of the program necessary at all times for mP2, from read only memories, ROM or EPROM, to store the master programs of mP2 and of mP3 and the various codes and of RAMs to temporarily store the decoded program blocks useful to mP2 each once mP2 takes over from mP1, and the various work data generated by mP2 and mP3, including the addresses of the coded blocks to be transferred and decrypted.
  • Part of the RAM module is at least made up of four independent RAM capacity equal to 2 * n bytes and in particular 256, each of these RAMs being able to be read or written alternately by mP2 and mP3, or simultaneously one written by m p3 and the other read by mP2, two of these RAMs receiving the decoded bytes of the program and the other two, called byte decoding blocks and receiving address decoding blocks, the first of the decoding bytes which combined with the coded bytes the clear bytes, and the other receiving the addresses of the RAM module to which the said decoded bytes must be housed.
  • Each module M has a particular secret code of neither bits, which is incorporated into a series of digits, nor also for example, which is known to the owner of the module and even carried on the module itself. It can also be carried on a card with optical or magnetic reading which will be read by the encoder.
  • the software supplier, or transmitter has a coding device C which involves a series of n2 bits, specific to each type of software, or to the particular coding which it wishes to do.
  • This coding device uses the algorithm (or coding function G ().
  • the module and the encoder have the same coding-decoding algorithms.
  • One of these algorithms, f (), generates, starting from a sequence of n bits, a numerical sequence of n * digits; conversely, from a sequence of n 'digits, the reverse algorithm f-1 () can reconstruct the sequence of n bits.
  • FIGS 6 and 7 show the dialogue procedures between the module M and the encoder C
  • the user gives the supplier the sequence of only 1 digits of his module; this sequence is decoded by the decoder which removes the essential ni bits therefrom. These ni bits are combined with the n2 coding bits of the software, by the function F (), and this combination gives a sequence of n3 bits.
  • This sequence n3 is transformed by a function g () into a digital sequence n'3 which is supplied to the module.
  • the module will extract from it by the function g-1 () the sequence n3 of bits which will be combined with the sequence neither specific to the module, by the function F-1 (), to restore the sequence n2 from the supplier.
  • Each n3 suite is specific to both the module and the software and can be incorporated into the diskette or ported to the card seen above.
  • the unique code of each module has internal control elements which make it recognized by the C coder as legitimate.
  • This module can be integrated into a single circuit which will constitute an improved microprocessor endowed with specific transfer-decryption functionalities.
  • fig (2) It can also be provided, fig (2), with one or more windows 4 transparent to UV. It communicates with the outside by a set of pins 2 or soldering connection lugs 3, constituting the end of its bus.
  • these blocks contain 2 ** n groups of n data bits, to which data bits can optionally be added one or more control bits.
  • n data bits of a group can always represent the different addresses from 0 to (2 ** n) -1, or from 1 to 2 ** n of a block of 2 ** n groups of n data bits.
  • the coder is a program or function G () calculating from an external encrypted code, and loading into memory, two sequences of 256 bytes, B1 and B2, containing, in an order determined by the external encrypted code, the 256 values , from 1 to 256, which can be taken by a byte.
  • the two suites can be the same or different.
  • the values of the first sequence are considered, FIG. 3, as numerical values and subtracted one by one from the 256 bytes of the program block. The result is replaced in the byte of the block which will therefore become a block with coded bytes, the coded bytes having retained the original order.
  • the second sequence of 256 bytes also contains the same sequence or a different sequence of the 256 values of a byte (fig 4).
  • These values are here the addresses of a block of 256 bytes.
  • the coder then successively assigns to each byte of the block being coded the address found in the corresponding byte of the second coder group of 256 addresses.
  • the coding can be simply the coding of the bytes or the coding of the addresses. We will describe the operations on the assumption that the two codings are used successively. generating inoperative code and decoding blocks.
  • blocks B1 and B2 can also be loaded in EPROM or written from the outset in ROM or EPROM, or be loaded from the computer keyboard.
  • FIG. 7 Another arrangement is shown diagrammatically in FIG. 7.
  • the coder according to the invention randomly generates, or receives from the outside, 2 coder blocks B1 and B2 with which it codes the data to be transmitted.
  • the coder C From the code ni received from the module M and its internal code n2, the coder C will manufacture a link code n3 which will allow the module to reconstruct the secret code n2.
  • This secret code n2 introduced in the function H-1 () will allow the latter to reconstitute the blocks B1 and B2 from the blocks B'1 and B'2. After inversion, these encoder blocks will decode the data.
  • each recipient with the coded data, with different public coding blocks B'1 and B'2, although the real coding blocks, B1 and B2, are identical for all the recipients of the same coded data.
  • the coding process according to the invention is the same in the coder 35 belonging to the supplier and in the coding-decoding module.
  • the description of the coding algorithm of the module according to the invention will clarify the description of the decoding algorithms.
  • the elementary coding algorithm, normally used in the supplier's coder, or by the user for coding his own files, is shown in fig 9.
  • HL is initiated by mP2 at the address of the start of reading.
  • A The content of A (first coded byte) is transferred to the address contained in the double DE register, the upper part of this address being initialized by mP2 so as to impose the origin of the coded block.
  • LD HL (nn). If B is zero, the coding of the first clear block of 256 bytes is complete. HL is optionally reset by the value contained at the address nn. This new address contained in nn will be the address of the first byte of a new block to be coded.
  • LD IX 0. LD B.256.
  • the reading of the encoder blocks is reset to zero and 3 the counter B is recharged to 256.
  • the instructions LD A, (IX + d1) and LD E, (IX + d2) can be reversed without modifying the result or the processing time.
  • the blocks B1 and B2 generated by the module are derived from those generated by the encoder so that the order of the addresses in the address decoding block and the order of bytes to be added to the byte decoding block are in an order such that decoding can do this by reading the blocks coded in ascending order of addresses.
  • the addresses in RAM module of the decoded bytes are then determined by the address decoding block. We follow in this way an algorithm parallel to that of coding.
  • FIG. 5 shows, according to the invention, the correspondence between the coding block and the decoding block. For the purposes of the demonstration, we will take blocks of eight bytes instead of blocks of 256 bytes.
  • the encoder block is read in ascending order. Each address contained in the encoder block becomes the containing address of the decoder block. At this containing address of the decoder block will be loaded the former containing address of the encoder block which will thus become the contained address of the decoder block (fig 4).
  • the clear and encoder blocks are read in ascending order of addresses. We see in the example that the first byte of the clear block is transferred to the address contained in the first byte of the encoder block, 5 here.
  • byte 5 of the decoder block contains the address 1 of the coder block.
  • the byte will have returned to its original place.
  • the byte decoding block is deduced from the address decoding block, each byte of the coding block being placed in the decoding block at the address given by the address coding block.
  • the reading order of the decoding bytes which must be added to the original bytes will therefore be the ascending order of the addresses.
  • the first byte of the decoding block therefore corresponds to the first byte of the coded block.
  • the B2 byte decoding block will be read in the same order and the first byte will be added to the byte previously found.
  • the original byte is found and is placed at the address of the decoded block contained in the first byte of the address decoder block.
  • the address contained in HL was initialized by the main microprocessor mP2 of the module.
  • the first byte of the byte decoding block is loaded into register A of mP3.
  • ADD A, C We add the content of C to the content of A.
  • the byte is decoded and is located at A.
  • the first byte of the address decoding block B2 is loaded into register E. This byte represents the lower part of the address where the decoded byte must be loaded in module RAM.
  • the first decoded byte is loaded at the first address of the receiver block with 256 bytes from the RAM module.
  • the address in the RAM module of this 256 byte receiver block is supplied initially by mP2.
  • the microprocessor mP2 can write instructions in different bytes of the module RAM. In a first byte at address qq, for example, it can set a determined bit b to 0 or 1. In a byte of pp address, it can put the upper part of the address in micro RAM of the new block of 256 bytes to be decoded. In an address byte nn it can put the upper part of the address in module RAM where this new block will be loaded after decoding.
  • the address mm of the module RAM is loaded into the HL register.
  • the address byte mm is loaded into the HL register and the bit b of the HL register is selected. JRNZ e. If bit b is 1, mP2 has deposited the start and end addresses of a new block to be decoded. We jump to the instruction LD HL, (nn).
  • the address of the new block to be decoded is loaded in HL.
  • D the upper part of the address in RAM module where to place the new decoded block.
  • LD IX, 0. We reset IX to 0.
  • LD B.256 We reset B to 256. or LD IX, (qq); we reset IX with the value found in qq. and LD BC, (rr); we reset B with the value found in rr.
  • This test loop is traversed according to the invention until mP2 has loaded the new start and end addresses of a new block to be decoded and set the bit b to 1.
  • mP3 requests from mP2 an interruption of its clock signal.
  • This request for interruption is transmitted by the command bus and MP2 responds by interrupting the clock signal of mP3.
  • This clock signal is returned to mP3 by mP2 when the latter has loaded to the addresses nn and pp the start and end addresses of a new block of 256 bytes to be decoded.
  • the microprocessor mP3 is according to the invention, consisting of several circuits operating in parallel.
  • FIGS. 1 and 11 there are in RAM module as many independent RAMs containing a block for decoding bytes B1, a block for decoding addresses B2 and initialization bytes INIT as there are mP3 circuits. These independent RAMs are called RAMCODE.
  • Each RAMCODE has its bus connected to a MUX2.i multiplexer which can make it communicate alternately, under the control of mP3 or mP2, to the general bus of the module, or to the particular bus of the circuit mP3.i.
  • the clock signal, the power supply and the refresh signals of the RAMCODEs can be independent of MUX2.I.
  • Each circuit of mP3 is therefore connected by its buses, to the multiplexer MUX1 making it communicate with the computer, to the multiplexer MUX4 making it communicate with the RAMs for loading the decoded blocks via its own BUSMUX4 bus, to a MUX2.i making it communicate with a RAMCODE and to MUX8 making it communicate by its control bus with mP2.
  • the independent RAMs for loading the RAMCHAR decoded bytes are connected to BUSMUX4 and to the general bus of the BUSMODULE module, by c multiplexers MUX4J which are made active by mP2 and / or mP3, in relation to the initialization addresses INIT.
  • pseudo-instructions MUX1, MUX2.i and MUX4 are placed in front of the instructions LD C, (HL), LD A, (IX + d1), LD E, (IX + d2) and LD (DE), A. These pseudo-instructions o activate the channels of the multiplexers corresponding to each circuit.
  • Each algorithm can be broken down into a main cycle and a test cycle.
  • the main cycle in our example has a duration of 32 machine cycles and each MUX1 is used for 5 machine cycles. According to the invention, therefore, 7 mP3 circuits are required to maximize the decoding transfer speed. 3 According to the invention, it is possible to use only 6 mP3 circuits, but with a loss of speed.
  • the decoding blocks B1 and B2 are unique. There are two multiplexers MUX2 and MUX3 which make it possible to connect each circuit alternately to block B1, then to block B2 and the initialization bytes.
  • the elementary circuits mP3 then have successive access to the computer's RAM through the multiplexer MUX1, to the RAMCHAR loading RAM through the multiplexer MUX4 and to the decoding blocks B1 and B2 through the multiplexers MUX2 and MUX3.
  • pseudo-instructions MUX1, MUX2 ,, MUX3 and MUX4 are placed respectively in front of LD C, (HL), LD A, (IX + d1), LD E, (IX + d2) and LD (DE), A. These instructions activate the channels of the multiplexers corresponding to each circuit.
  • each mP3 circuit traverses its own block of 256 bytes in micro RAM.
  • each circuit of mP3 traverses part of a single block of 256 bytes.
  • each mP3 traverses a part of several blocks of 256 bytes. Control and differentiation of sequences is purely software.
  • the microprocessor mP2 controls the activity of the mP3 by loading to the addresses imi, nini, pee, qiqi, riri of the RAM module the addresses of the bit b flag, of initialization of reading in micro RAM, of writing in RAM module , of reading in Decoding blocks B1 and B2 for each circuit mP3.i.
  • each circuit of mP3 traverses its block of 256 bytes in micro RAM.
  • the address h1h1 of the beginning of the block to be read which will be loaded in HL is set by mP2 in RAM module at address n1n1 for the first circuit mP3 which we will call mP3.1.
  • the write start address of the block decoded in module RAM which will be loaded in DE, is set by mP2 in module RAM at the address p1p1 for the circuit mP3.1, at the address p2p2 for mP3.2 and and so on .
  • the decoder blocks will be read in ascending order by each circuit successively. IX will be initialized at 0, d1 and d2 being the upper parts of the fixed addresses of the decoding blocks in the module RAM.
  • mP3 transfers and decodes simultaneously as many blocks of 256 bytes as there are mP3.i circuits.
  • Each circuit of mP3 transfers and decodes part of a single block of 256 bytes.
  • the circuits simultaneously transfer and decode a part of one of the blocks of 256 bytes chosen by mP2.
  • the address loaded in HL will be for the first circuit mP3.1, the address h1h1 of the block to be decoded in micro RAM.
  • the address loaded in HL will be for the second circuit, h1h1 + 32, and so on.
  • the write address in module RAM loaded in DE will, for the first circuit, the address e1e1 of the block to be written in module RAM.
  • the address for the second circuit will be e1e1 + 32, and so on.
  • the initialization of the IX by the instruction LD IX, (qq) will allow each circuit each to read the group of bytes of the decoding blocks corresponding to the group of bytes read in the coded block.
  • the first circuit mP3 is initialized according to the invention to 0, the second to 32, the third to 64 and so on, both for the byte decoding block and for the address decoding block.
  • DJNZ counter is loaded at 32 because after a reading of 32 bytes from the block of 256 bytes to be decoded, by each circuit, the 256 bytes will have been read by the 8 circuits of the example.
  • the first circuit will have transferred and decoded the first 32 bytes, the second circuit the following 32, and so on.
  • the multiple algorithm for decoding transfer according to the invention, by the n circuits of mP3 is represented in FIG. 13 and FIG. 14.
  • FIG. 13 the RAM memories and the multiplexers 1, 2, 3 and 4 appear diagrammatically.
  • FIGS. 14 and 15 the durations of the instructions in machine cycles have been reproduced to scale so as to highlight the conflicts of access to the multiplexers and the solutions provided according to the invention.
  • the first circuit of mP3 is activated by mP2, either directly by activation of the clock circuit, or by means of the bit b seen above, positioned by mP2 and read by mP3.1.
  • the different circuits of mP3 being driven by the same clock, the succession of instructions for each circuit is shifted from one circuit to another by the number of clock periods necessary for the activation of the multiplexer 1 and the execution of the transfer instruction LD C, HL.
  • the cycles necessary for the operation of the multiplexers are fixed at 3 and the corresponding clock periods at 10, and grouped arbitrarily before the instruction that must pass through these multiplexers.
  • MUX1.1 Connection of the first mP3.1 circuit on the micro RAM.
  • the instruction for loading the first byte of the block to be decoded is executed.
  • MUX2.1 The circuit then connects to the byte decoding block B1. Transfer of the decoder byte. Addition of this byte to the coded byte.
  • the circuit connects to the B2 address decoding block. The address where the decoded byte is transferred is loaded.
  • the circuit plugs into the RAM module.
  • the instruction LD (° E). Loads the decoded byte into RAM module.
  • Transfer-decoding of the first byte by the first circuit is complete
  • the following instructions increment HL and IX and test the various operating parameters specific to the first mP3.1 circuit.
  • the successive circuits are activated in the same way as the first with an offset corresponding to the number of cycles during which MUX1.1 will be used by the first circuit.
  • Each MUX instruction is followed by a register loading instruction. It is only when this instruction is executed that the multiplexer becomes free for the next circuit.
  • This offset is essential to avoid a conflict of access to the multiplexers
  • the instructions LD C, (HL) and LD (DE), A last 7 periods, (two cycles), while the instructions LD A, (IX + d1) and LD E, (IX + d2) last 19 periods ( 5 cycles).
  • the succession of MUX.1 instructions for connection to the computer conditions the speed of transfer from the computer to the module.
  • the instruction MUX1.2 of the circuit mP3.2 must therefore immediately follow, according to the invention, the transfer instruction LD C, (HL) of the circuit mP3.1 according to the instruction MUX1.1 of the said circuit mP3.1 .
  • the offset algorithms of the first two circuits then show, in FIG. 12, that the instruction MUX2.2 of the second circuit is launched before the instruction LD A, (IX + d1) of the first circuit is completed.
  • the instruction LD A, (IX + d1) lasts 12 clock periods longer than the instruction LD C, (HL).
  • the same offset exists between MUX3.2 and MUX3.1, while MUX4.2 and MUX4.1 are synchronized.
  • NOPs are added according to the invention before the instruction for starting the cycle MUX.1.
  • the number of NOPs added to the first circuit will be (n-1) 3, to the second circuit (n-2) 3 and so on.
  • a second solution according to the invention, (fig 15), consists in adding 3 NOPs to the instruction MUX1 so that all the instructions following the MUXs have the same duration.
  • FIGS. 14 and 17 A third solution, according to the invention, consists in doubling the multiplexers MUX2 and MUX3 as well as the decoding blocks B1 and B2 which are linked to them. According to the invention, the MUX2A multiplexer is then assigned to the
  • the duration of the MUX pseudo-instruction has been arbitrarily fixed at 10 periods.
  • tripling the multiplexers MUX2 and MUX3 is a solution, according to the invention, in the case where the duration of the MUX instruction is such that the doubling does not ensure the maximum use of the multiplexer MUX1 and therefore the speed of maximum transfer.
  • the third solution according to the invention, doubling or tripling of MUX2 and MUX3 allows maximum speed with a small number of mP3 circuits.
  • this number of circuits allowing the maximum speed depends on the duration of each main cycle of mP3 and must be equal to the duration of the main decoding transfer cycle, excluding the test cycle, divided by the duration of use of the MUX1 multiplexer. .
  • the duration of the main cycle is in the example 135 periods.
  • a fourth solution consists in replacing the instructions LD A, (IX + d1) and LD E, (IX + d2) of 19 periods by the instructions LD A, (nn) of 13 periods.
  • a circuit mP4 loads to fixed addresses nOnO and pOpO the successive bytes of the address block and of the byte decoding block.
  • the instruction LD A, (n0n0) is followed by the instruction LD D, A.
  • each circuit must perform readings in module RAM and therefore use multiplexers for which access conflicts can be resolved in the same way as for the main cycle.
  • the test cycle therefore begins when the last circuit mP3 has finished using the multiplexer MUX2 or. MUX2A in its main cycle.
  • the instructions MUX2 or MUX2A and MUX3 or MUX3A are preceded, according to the invention, by a certain number of waiting NOPs.
  • the course of the use of the multiplexers will then be done as for the main cycle.
  • the second solution according to the invention, consists in using in the test cycle, additional multiplexers, MUX9, MUX10, MUX11 having the same functions as MUX2 and MUX3.
  • NOP no additional NOP between the main cycle and the test cycle, but only NOPs as before during this test cycle.
  • NOPs In all the previous solutions to access conflicts, it is assumed that the circuits are synchronized and the conflicts are resolved rigidly using NOP.
  • Another type of solution to access conflicts consists in introducing flags, and instructions for testing these flags, in test cycles placed at the previous locations of the NOPs. In this way, the circuits will test themselves the availability of the conflicting multiplexers.
  • this RAM is made up, according to the invention, of elementary RAM of 2 ** n bytes, that is to say 256 bytes in our example, in the case where the transfer is made in blocks of 256 bytes.
  • Fig. 17 shows the schematic arrangement of the module, according to the invention, in the case of the existence of 7 decoding transfer multiplexers and an additional multiplexer MUX8 allowing mP2 to control the clock signal of the circuits mP3.
  • Each mP3 circuit is connected by its 3 buses to each of the multiplexers MUX1, MUX4, and by its control bus only to MUX.
  • the even circuits are connected to MUX2A and MUX3A, for example, and the odd ones to MUX2B, MUX3B and MUX5.
  • the module can receive, following the invention, time memories that we will call RAMTEMP, in which the blocks to be decoded will be transferred ( Figure 18).
  • RAMTEMP memories are loaded under the control of mP2 or mP3. They can possibly be loaded under the control of the main microprocessor mP1 of the computer but it is then necessary to move the reading prohibition devices of the module from the outside.
  • RAMTEMP memories will be placed, according to the invention, between the control means MUX1 of the inputs and outputs of the module, and the mP3 coding decoding transfer circuits, the term "between” meaning only that the data travels, according to the invention, from MUX1 to RAMTEMP r and from RAMTEMP to mP3, without going through the BUSMODULE bus, unless the lanes on this bus are specially reserved for this use.
  • the BUSMODULE bus is preferably left free for mP2, according to the invention, so that the loading of INIT blocks by mP2, the reading of RAMCHAR by mP2, and the connection of mP2 with the computer, do not interfere with transfer decoding of RAMTEMP data by mP3.
  • a means of selecting these RAMTEMPs by the mP3s in particular an MUX10 circuit of the input-output controller or multiplexer type, will be placed between the RAMTEMPs and the mP3s, and its pseudo activation instruction MUX10 will replace the pseudo instruction MUX1 in the decoding transfer algorithms seen previously.
  • a selection means in particular a MUX11 multiplexer, will control the links between mP2 and the RAMTEMP, via the BUSMODULE bus, which can be used directly by mP2.
  • RAMTEMP can be ignored by mP3, mP2 or mP3 establishing a permanent link between one of the inputs of MUX10 and one of the outputs of MUX1 (figure 19), or between all the inputs of MUX10 and the equivalent outputs of MUX1 (figure 20 ).
  • MUX10 replaces MUX1 as a means of controlling links with the computer.
  • active multiple permanent links between MUX10 and MUX10 In the case of active multiple permanent links between MUX10 and MUX10
  • each mP3 having its own connection, the MUX10 behaves like a transparent circuit thus restoring the initial diagram of FIG. 1.
  • the mP3 only use part of the main bus BUSOR of the computer.
  • RAMSTOCK RAMSTOCK
  • data channels data channels
  • control channels certain control channels.
  • the microprocessor mP2 not having to communicate with the RAM ⁇ STOCK at the same time as the mP3, will most often use only a different part of BUSOR.
  • MUX1 by means of a control, possibly a MUX12 multiplexer, which makes it possible to adequately isolate the said RAMSTOCK from the BUSOR bus.
  • This BUSTOCK bus can be set up independently of the BUSOR bus, or be placed next to the BUSOR bus, be integrated into the BUSOR bus in the form of additional lines, or even use lines without allocation of the BUSOR bus.
  • This BUSTOCK bus can be determined, according to the invention, for reasons of economy, as a function of the probability of using the channels of the main bus of the BUSOR computer, so as to minimize the number of channels of said BUSTOCK bus. , part of the BUSOR channels, of low probability of employment, being temporarily assigned to BUSTOCK.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

Dispositif pour ordinateur, enfermé dans une enceinte inviolable, et constitué d'un microprocesseur mP2, de plusieurs circuits spécialisés mP3 travaillant en parallèle avec un décalage temporel transferrant et décodant un fichier codé situé en mémoire de l'ordinateur, de mémoires mortes et vives, de contrôleurs d'entrées sorties et/ou multiplexeurs MUX, et de circuits interdisant la lecture du module à partir de l'ordinateur. Ce dispositif permet de transférer, décoder et traiter un programme codé de façon complexe, à grande vitesse grâce aux circuits spécialisés mP3 travaillant en parallèle avec un décalage temporel, et sans que l'utilisateur ait accès au programme décodé.

Description

DISPOSITIF INFORMATIQUE ASSURANT LA SECURITE
DES DROITS D'AUTEUR
On a déjà proposé , pour garantir les droits d'auteur ou la confidentialité d'un fichier , de faire traiter par un module inviolable contenant un microprocesseur , le décryptage et le traitement des instructions , sans que l'utilisateur ait accès aux éléments décryptés du fichier . Un inconvénient connu de ces systèmes est le retard introduit par le transfert , le décryptage , et la gestion par le microprocesseur de ce transfert et de ce décryptage .
En effet , quelque soit la rapidité des circuits spécialisés il est nécessaire d'établir un dialogue avec le microprocesseur qui détermine les séquences à transferrer et décrypter .
La présente invention supprime ces inconvénients en associant plusieurs circuits mP3 de transfert-décodage travaillant en parallèle avec un décalage temporel
Cette disposition permet de masquer totalement le dialogue avec le microprocesseur et maximise l'utilisation du bus d'accès au module . Le dispositif appelé module de transfert-décodage-codage , ou simplement module M , figure 1 , est contitué d'un microprocesseur mP2 compatible avec , ou identique au microprocesseur mP1 de l'ordinateur , de circuits spécialisés mP3 permettant le transfert par blocs et le décodage rapide des parties du programme nécessaires à chaque instant à mP2 , de mémoires mortes , ROM ou EPROM , pour stocker les programmes maîtres de mP2 et de mP3 et les différents codes et des RAM pour stocker temporairement les blocs de programme décodés utiles à mP2 chaque fois que mP2 prend le relais de mP1 , et les diverses données de travail générées par mP2 et mP3 , dont les adresses des blocs codés à transferrer et décrypter .. Une partie de la RAM module est au moins constituée de quatre RAM indépendantes d'une capacité égale à 2*n octets et en particulier 256 , chacune de ces RAM pouvant être lue ou écrite alternativement par mP2 et mP3 , ou simultanément l'une écrite par mp3 et l'autre lue par mP2 , deux de ces RAM recevant les octets décodés du programme et les deux autres , appelés blocs de décodage des octets et bloc de décodage des adresses recevant , la première des octets de décodage qui combinés aux octets codés redonneront les octets clairs , et l'autre recevant les adresses de la RAM module aux quelles doivent être logés les dits octets décodés .
Il est constitué également par des circuits logiques , multiplexeurs MUX , contrôleurs de RAM , contrôleurs d'entrées sorties et autres circuits logiques permettant , suivant les règles de l'art , le fonctionnement correct de l'ensemble et interdisant la lecture de la mémoire du module à partir de l'ordinateur . A la fin de la double opération , les 256 octets du blocs de programme sont mis dans l'ordre imposé par le codeur et chaque octet de ce bloc est individuellement codé . Figures 4 et 5 .
Pour parer à la fourniture frauduleuse d'une paire de blocs codé-décodé qui permettrait de décoder l'ensemble du fichier , on peut , suivant l'invention , placer dans un ou deux octets du bloc , un numéro d'ordre de 1 à 256 ou de 1 à 64k , qui sera lu par le codeur et lui fera modifier le codage , bloc par bloc . Les mêmes suites ne se retrouvent alors que tous les 256 ou 64k blocs . Dans ce dernier cas cela
• correspond à un fichier de 16 MO . Chaque module M possède un code particulier secret de ni bits , qui est incorporé à une suite de chiffres , ni également par exemple , qui est connue du propriétaire du module et même portée sur le module lui même . Elle peut également être portée sur une carte à lecture optique ou magnétique qui sera lue par le codeur .
Le fournisseur de logiciels , ou émetteur , possède un dispositif de codage C qui fait intervenir une suite de n2 bits , propre à chaque type de logiciel , ou au codage particulier qu'il désire faire . Ce dispositif de codage utilise l'algorythme ou fonction de codage G() .
Le module et lé codeur possèdent les mêmes algorythmes de codage-décodage . Un de ces algorythmes , f() , engendre , à partir d'une suite de n bits , une suite numérique de n* chiffres ; inversement , à partir d'une suite de n' chiffres , l'algorythme inverse f-1() peut reconstituer la suite de n bits .
On voit figures 6 et 7 les procédures de dialogue entre le module M et le codeur C
L'utilisateur donne au fournisseur la suite de n'1 chiffres de son module ; cette suite est décodée par le décodeur qui en retire les ni bits essentiels . Ces ni bits sont combinés avec les n2 bits de codage du logiciel , par la fonction F() , et cette combinaison donne une suite de n3 de bits .
Cette suite n3 est transformée par une fonction g() en une suite numérique n'3 qui est fournie au module . module en extraira par la fonction g-1() la suite n3 de bits qui sera combinée avec la suite ni propre au module , par la fonction F-1() , pour redonner la suite n2 du fournisseur .
Chaque suite n3 est propre à la fois au module et au logiciel et peut être incorporé à la disquette ou portée sur la carte vue plus haut . Le code unique ni de chaque module possède des éléments de contrôle interne qui le font reconnaître par le codeur C comme légitime .
En cas de fourniture d'un code ni illégitime , le codeur , après reconnaissance , fabrique un faux code de liaison n4 , éventuellement aléatoire , Ce module peut être intégré en un seul circuit qui constituera un microprocesseur perfectionné doté de fonctionnalités spécifiques de transfert -décryptage .
Il peut être également muni , fig(2) , d'une ou plusieurs fenêtres 4 transparentes aux UV . Il communique avec l'extérieur par un ensemble de broches 2 ou de pattes de liaison à souder 3 , constituant l'extrémité de son bus .
Nous considérons dans la suite que le programme entier est codé . Ceci garanti la sécurité absolue du programme et la lutte contre les virus implantés hors codage . En effet , dans ce cas , tout ce qui n'est pas codé peut être ignoré . L'algorythme de codage adopté , suppose l'écriture du programme en blocs élémentaires de 2**n octets , 256 par exemple , ce nombre correspondant simplement aux possibilités d'adressage d'un octet . Toute autre taille de bloc est possible mais présente moins d'intérêt .
De façon plus précise , ces blocs contiennent 2**n groupes de n bits de données , auxquels bits de données peuvent être éventuellement ajoutés un ou plusieurs bits de contrôle .
Les différentes valeurs pouvant être représentées par les n bits de données d'un groupe pourront toujours représenter les différentes adresses de 0 à (2**n)-1 , ou de 1 à 2**n d'un bloc de 2**n groupes de n bits de données . On suppose l'écriture par blocs de 256 octets dans tout ce qui suit , sans que cela soit limitatif de l'invention .
Le codeur est un programme ou fonction G() calculant à partir d'un code chiffré externe , et chargeant en mémoire , deux suites de 256 octets , B1 et B2 , contenant , dans un ordre déterminé par le code chiffré externe , les 256 valeurs , de 1 à 256 , pouvant être prises par un octet . Les deux suites peuvent être identiques ou différentes .
Les valeurs de la première suite sont considérées , figure 3 , comme des valeurs numériques et soustraites une à une des 256 octets du bloc de programme . Le résultat est replacé dans l'octet du bloc qui deviendra donc ainsi un bloc à octets codés , les octets codés ayant conservé l'ordre original .
La seconde suite de 256 octets contient également la même suite ou une suite différente des 256 valeurs d'un octet (fig 4).
Ces valeurs sont ici les adresses d'un bloc de 256 octets . Le codeur affecte alors successivement à chaque octet du bloc en voie de codage l'adresse trouvée dans l'octet correspondant du second groupe codeur de 256 adresses .
Le codage peut être , suivant l'invention , simplement le codage des octets ou le codage des adresses . Nous décrirons les opérations dans l'hypothèse où les deux codages sont employés successivement . engendrant un code et des blocs de décodage inopérants .
Les blocs B1 et B2 peuvent être également , suivant l'invention , chargés en EPROM ou inscrit dès l'origine en ROM ou en EPROM , ou être chargés à partir du clavier de l'ordinateur .
5 Une autre disposition est schématisée figure 7 .
Le codeur , suivant l'invention , engendre de façon aléatoire , ou reçoit de l'extérieur , 2 blocs codeurs B1 et B2 avec lesquels il code les données à transmettre .
Ces blocs B1 et B2 sont transformés par une fonction H() contrôlée par ^ 0 le code secret n2 déjà vu , en deux blocs B'1 et B'2 publics qui seront transmis au module M .
A partir du code ni reçu du module M et de son code interne n2 , le codeur C fabriquera un code de liaison n3 qui permettra au module de reconstituer le code secret n2 .
15 Ce code secret n2 introduit dans la fonction H-1() permettra à celle ci de reconstituer les blocs B1 et B2 à partir des blocs B'1 et B'2 . Apres inversion , ces blocs codeurs permettront de décoder les données .
Une variante de cette procédure est illustrée figure 8 .
Il peut être intéressant de fournir à chaque destinataire , avec les 20 données codées , des blocs de codage B'1 et B'2 publics différents , bien que les blocs de codage véritables , B1 et B2 , soient identiques pour tous les destinataires des mêmes données codées .
Ceci est obtenu dans le codeur C , suivant l'invention , par une fonction ou algorythme H'() , différent de H() , qui appliqué à ni propre au module M , à n2 20 propre au codeur C et à B1 et B2 , donnera des blocs codés publics B'1 et B'2 propres au module M .
La fonction ou algorythme H'-1() du module M appliqué à ni , n2 , B'1 et B'2 redonnera les blocs codeurs B1 et B2 .
Dans tout ce qui suit , instructions du microprocesseur Z80 de la firme 30 ZILOG , universellement connus , serviront à illustrer l'invention mais ne la limitent pas
. L'homme de l'art peut aisément , à partir des algorythmes et de ces codes- instructions , réaliser les dispositions décrites par l'invention à partir d'autres microprocesseurs .
Le processus de codage suivant l'invention est le même dans le codeur 35 appartenant au fournisseur et dans le module de codage-décodage .
La description de l'algorythme de codage du module suivant l'invention éclairera la description des algorythmes de décodage . L'algorythme élémentaire de codage , utilisé normalement dans le codeur du fournisseur , ou par l'utilisateur pour le codage de ses propres fichiers , est représenté fig 9 .
LD C,(HL) . On charge dans un registre C de mP3 , par l'instruction LD 5 C,(HL) , le contenu du premier octet d'un bloc de 256 octets du programme clair . HL est initiaiisé par mP2 à l'adresse du début de lecture .
LD A,(IX+d1) . On charge , par l'instruction LD A,(IX+d1) .dans un second registre A de mP3 , le contenu du premier octet du bloc de codage des octets dont l'adresse dans la mémoire du module est d1 .
10 SUB A,C . CPL .
INC A . On a soustrait A du contenu de C
LD E,(IX+d2) . On charge dans un registre E de mP3 l'adresse contenue dans le premier octet du bloc B2 dont l'adresse de ce premier octet dans la RAM module est d2 . On peut , suivant l'invention , avoir d1=d2 .
| κ LD (DE), A . On transfert le contenu de A (premier octet codé) à l'adresse contenue dans le registre double DE , la partie haute de cette adresse étant initialisée par mP2 de façon à imposer l'origine du bloc codé .
On a donc ainsi codé et transféré le premier octet du bloc de 256 octets clairs .
20 INC H . On incrόmente H .
INC IX . On incrémentθ IX .
DJNZ e . On teste la valeur du registre compteur B .
LD HL,(nn) . Si B est égal à zéro , le codage du premier bloc clair de 256 octets est terminé . On réinitialise éventuellement HL par la valeur contenue à 25 l'adresse nn . Cette nouvelle adresse contenue dans nn sera l'adresse du premier octet d'un nouveau bloc à coder .
LD DE,(pp) . On réinitialise alors la nouvelle adresse d'écriture du premier octet du nouveau bloc codé .
LD IX,0 . LD B.256 . On réinitialise à zéro la lecture des blocs codeurs et 3 on recharge à 256 le compteur B .
JP pq . On retourne au début du programme .
Si B n'est pas nul on saute à l'instruction de retour en début de programme .
On peut inverser les instructions LD A,(IX+d1) et LD E,(IX+d2) sans 35 modifier le résultat ni le temps de traitement .
Dans l'algorythme de décodage suivant l'invention , les blocs B1 et B2 engendrés par le module sont dérivés de ceux engendrés par le codeur de façon à ce que l'ordre des adresses du bloc de décodage des adresses et l'ordre des octets à additionner du bloc de décodage octets soient dans un ordre tel que le décodage puisse se faire en lisant les blocs codés dans l'ordre croissant des adresses . Les adresses en RAM module des octets décodés sont alors déterminées par le bloc de décodage des adresses . On suit de cette façon un algorythme parallèle à celui du codage .
Nous exposerons en détail l'algorythme de décodage suivant l'invention et ses diverses variantes imposées pour obtenir une rapidité de transfert-décodage maximale .
L'algorythme élémentaire de décodage suivant l'invention est représenté fig 10 . On se place , pour la démonstration , dans l'hypothèse élémentaire conforme à l'utilisation du Z80 , où le programme à décoder n'exède pas 64K .
La figure 5 montre , suivant l'invention , la correspondance entre le bloc de codage et le bloc de décodage . Pour les besoins de la démonstration , on prendra des blocs de huit octets au lieu de blocs de 256 octets .
On lit le bloc codeur dans l'ordre croissant . Chaque adresse contenue du bloc codeur , devient l'adresse contenante du bloc décodeur . A cette adresse contenante du bloc décodeur sera chargée l'ex adresse contenante du bloc codeur Qui deviendra ainsi l'adresse contenue du bloc décodeur (fig 4) .
Durant le codage , les blocs clair et codeurs sont lus dans l'ordre croissant des adresses . On voit sur l'exemple que le premier octet du bloc clair est transféré à l'adresse contenue dans le premier octet du bloc codeur , 5 ici .
Suivant la règle de correspondance entre les blocs codeur et décodeur , l'octet 5 du bloc décodeur contient l'adresse 1 du bloc codeur .
Lors du décodage , lorsque l'on arrivera à l'octet 5 du bloc décodeur on y trouvera l'adresse 1 du bloc codeur , qui est aussi l'adresse 1 du bloc clair , ou décodé , où l'on doit charger l'octet d'adresse 5 du bloc codé .
L'octet aura retrouvé sa place initiale . Le bloc de décodage des octets se déduit du bloc de décodage des adresses , chaque octet du bloc de codage se mettant dans le bloc de décodage à l'adresse donnée par le bloc de codage des adresses . L'ordre de lecture des octets de décodage qu'il faut additionner aux octets d'origine sera donc l'ordre croissant des adresses . Le premier octet du bloc de décodage correspond donc au premier octet du bloc codé .
Le bloc de décodage des octets B2 va être lu dans le même ordre et le premier octet va être ajouté à l'octet trouvé précédement . L'octet original est retrouvé et est placé à l'adresse du bloc décodé contenue dans le premier octet du bloc décodeur des adresses .
LD C,(HL) . on charge le premier octet du bloc codé dans le registre C . L'adresse contenue dans HL a été initialisée par le microprocesseur principal mP2 du module .
LD A,(IX+d1) . On charge dans le registre A de mP3 le premier octet du bloc de décodage des octets .
ADD A,C . On additionne le contenu de C au contenu de A . L'octet est décodé et se trouve en A . LD E,(IX+d2) . On charge dans le registre E le premier octet du bloc B2 de décodage des adresses . Cet octet représente la partie basse de l'adresse où l'on doit charger l'octet décodé en RAM module . La partie haute , initialisée par mP2 , a été chargée en D .
LD (DE), A . On charge à la première adresse du bloc récepteur de 256 octets de la RAM module ce premier octet décodé . L'adresse dans la RAM module de ce bloc récepteur de 256 octets est fourni initialement par mP2 .
Cet octet décodé occupe maintenant la place qu'il avait dans le bloc original clair .
INC HL . On incrémβntθ H . INC IX . On incrémente IX .
DJNZ e . On teste le registre compteur B .
Si B est différent de 0 , c'est à dire si la lecture des 256 octets n'est pas terminée on saute à l'instruction de saut JP pq .
JP pq . On saute à l'adresse pq qui est celle de la première instruction du programme et on recommence le cycle .
Si B=0 , c'est à dire si l'on a lu les 256 adresses du premier bloc à décoder , on opère une série de tests pour connaître les ordres du microprocesseur principal mP2 du module . Le microprocesseur mP2 peut inscrire , suivant l'invention , des instructions dans différents octets de la RAM module . Dans un premier octet à l'adresse qq , par exemple , il peut mettre à 0 ou 1 un bit déterminé b . Dans un octet d'adresse pp , il peut mettre la partie haute de l'adresse en RAM micro du nouveau bloc de 256 octets à décoder . Dans un octet d'adresse nn il peut mettre la partie haute de l'adresse en RAM module où ce nouveau bloc sera chargé après décodage .
LD HL.mm . On charge dans le registre HL l'adresse mm de la RAM module .
BIT b,(HL) . On charge l'octet d'adresse mm dans le registre HL et on sélectionne le bit b du registre HL . JRNZ e . Si le bit b est à 1 , mP2 a déposé les adresses de départ et d'arrivée d'un nouveau bloc à décoder . On saute à l'instruction LD HL,(nn) .
LD HL,(nn) . On charge en HL l'adresse du nouveau bloc à décoder . LD DE,(pp) . On charge en D la partie haute de l'adresse en RAM module où placer le nouveau bloc décodé . LD IX,0 . On réinitialise IX à 0 .
LD B.256 . On réinitialise B à 256 . ou LD IX,(qq) ; on réinitialise IX avec la valeur trouvée en qq . et LD BC,(rr) ; on réinitialise B avec la valeur trouvée en rr .
JP pq . On recommence un cycle de transfert-décodage de 256 octets . Si le bit b est à 0 on exécute l'instruction JP e suivant l'instruction JRNZ
JP e . On revient à l'instruction LD HL,(qq) et on recommence le test du bit b
Cette boucle de test est parcourue suivant l'invention jusqu'à ce que mP2 ait chargé les nouvelles adresses de départ et d'arrivée d'un nouveau bloc à décoder et mis le bit b à 1 .
Dans une autre disposition suivant l'invention , lorsque le bit b est mis à 0 , mP3 demande à mP2 une interruption de son signal d'horloge . Cette demande d'interruption est transmise par le bus de commande et MP2 répond en interrompant le signal d'horloge de mP3 . Ce signal d'horloge est rendu à mP3 par mP2 lorsque ce dernier a chargé aux adresses nn et pp les adresses de départ et d'arrivée d'un nouveau bloc de 256 octets à décoder.
Pour rendre la durée de transfert de blocs minimale , le microprocesseur mP3 est suivant l'invention , constitué de plusieurs circuits fonctionnant en parallèle . Dans une première configuration , suivant l'invention , figures 1 et 11 , on dispose en RAM module autant de RAM indépendantes contenant un bloc de décodage des octets B1 , un bloc de décodage des adresses B2 et d'octets d'initialisation INIT qu'il y a de circuits mP3 . On appelle ces RAM indépendantes RAMCODE . Chaque RAMCODE a son bus branché sur un multiplexeur MUX2.i qui peut le faire communiquer alternativement , sous le contrôle de mP3 ou mP2 , au bus général du module , ou au bus particulier du circuit mP3.i .
Le signal d'horloge , l'alimentation et les signaux de raffraichissement des RAMCODE peuvent être indépendants de MUX2.I . Chaque circuit de mP3 est donc relié par ses bus , au multiplexeur MUX1 le faisant communiquer avec l'ordinateur , au multiplexeur MUX4 le faisant communiquer avec les RAM de chargement des blocs décodés par l'intermédiaire de son bus propre BUSMUX4 , à un MUX2.i le faisant communiquer avec une RAMCODE et au MUX8 le faisant communiquer par son bus de commande avec mP2 .
Les RAM indépendantes de chargement des octets décodés RAMCHAR , sont reliées à BUSMUX4 et au bus général du module BUSMODULE , par des c multiplexeurs MUX4J qui sont rtendus actifs par mP2 et/ou mP3 , en relation avec les adresses d'initialisation INIT .
Dans les algorythmes de commande de chaque circuit mP3 , figure 11 , des pseudo-instructions MUX1 , MUX2.i et MUX4 sont placées devant les instructions LD C,(HL) , LD A,(IX+d1) , LD E,(IX+d2) et LD (DE),A . Ces pseudo- instructions o rendent actives les voies des multiplexeurs correspondants à chaque circuit .
Chaque algorythme peut être décomposé en un cycle principal et un cycle de tests . Le cycle principal a dans notre exemple une durée de 32 cycles machine et chaque MUX1 est utilisé durant 5 cycles machine . Il faut donc , suivant l'invention , 7 circuits mP3 pour maximaliser la vitesse de transfert décodage . 3 On peut , suivant l'invention n'utiliser que 6 circuits mP3 , mais avec une perte de vitesse .
On peut également utiliser 8 circuits pour simplifier le calcul des adresses , 256 étant divisible par 8 .
Dans une seconde configuration , suivant l'invention , figure 12 , les blocs de décodage B1 et B2 sont uniques . On dispose de deux multiplexeurs MUX2 et MUX3 qui permettent de brancher alternativement chaque circuit sur le bloc B1 , puis sur le bloc B2 et les octets d'initialisation .
Les circuits élémentaires mP3 ont alors successivement accès à la RAM de l'ordinateur à travers le multiplexeur MUX1 , aux RAM de chargement RAMCHAR à 5 travers le multiplexeur MUX4 et aux blocs de décodage B1 et B2 à travers les multiplexeurs MUX2 et MUX3 .
Dans l'algorythme de décodage de chaque circuit , des pseudo- instructions MUX1 , MUX2 ,, MUX3 et MUX4 sont placées respectivement devant LD C,(HL) , LD A,(IX+d1) , LD E,(IX+d2) et LD (DE),A . Ces instructions rendent actives les voies des multiplexeurs correspondant à chaque circuit .
Il y a , suivant l'invention , plusieurs séquences de lecture possibles de la RAM micro par les circuits mP3 .
Dans un premier séquencement possible , suivant l'invention , chaque circuit mP3 parcourt son bloc propre de 256 octets en RAM micro .
35 Dans un second séquencement , suivant l'invention , chaque circuit de mP3 parcourt une partie d'un bloc unique de 256 octets .
Dans un troisiemme séquencement , suivant l'invention , chaque mP3 parcourt une partie de plusieurs blocs de 256 octets . Le contrôle et la différentiation des séquences est purement logicielle .
En effet le microprocesseur mP2 contrôle l'activité des mP3 en chargeant aux adresses imi , nini , pipi , qiqi , riri de la RAM module les adresses du drapeau bit b , d'initialisation de lecture en RAM micro , d'écriture en RAM module , de lecture en Blocs de décodage B1 et B2 pour chaque circuit mP3.i .
Dans la première séquence de décodage suivant l'invention , chaque circuit de mP3 parcourt son bloc de 256 octets en RAM micro . L'adresse h1h1 du début de bloc à lire qui sera chargée en HL est mise par mP2 en RAM module à l'adresse n1n1 pour le premier circuit mP3 que nous appelerons mP3.1 . L'adresse h2h2 de la RAM micro en n2n2 de la RAM module pour le circuit mP3.2 et ainsi de suite .
L'adresse de début d'écriture du bloc décodé en RAM module , qui sera chargée en DE , est mise par mP2 en RAM module à l'adresse p1p1 pour le circuit mP3.1 , à l'adresse p2p2 pour mP3.2 et ainsi de suite . Les blocs décodeurs seront lus dans l'ordre croissant par chaque circuit successivement . IX sera initialisé à 0 , d1 et d2 étant les parties hautes des adresses fixes des blocs de décodage dans la RAM module .
B est initialisé à 256 .
Dans ce premier séquencement , suivant l'invention , mP3 transfère et décode simultanément autant de blocs de 256 octets qu'il y a de circuits mP3.i .
Dans le second séquencement suivant l'invention .chaque circuit de mP3 transfère et décode une partie d'un bloc unique de 256 octets .
Dans le troisiemme séquencement , suivant l'invention , les circuits transfèrent et décodent simultanément chacun une partie d'un des blocs de 256 octets choisis par mP2 .
L'adresse chargée en HL sera pour le premier circuit mP3.1 , l'adresse h1h1 du bloc à décoder en RAM micro .
L'adresse chargée en HL pour le second circuit dépendra du nombre de circuits mP3 . S'il y a 8 circuits , par exemple , chaque circuit lira 256/8=32 octets successifs . L'adresse chargée en HL sera pour le second circuit , h1h1+32 , et ainsi de suite .
L'adresse d'écriture en RAM module chargée en DE sera , pour le premier circuit , l'adresse e1e1 du bloc à écrire en RAM module . L'adresse pour le second circuit sera e1e1+32 , et ainsi de suite . Pour que le décodage se fasse correctement suivant l'invention , il faut que seules les parties adéquates des blocs de décodage B1 et B2 soient lues par chacun des circuits mP3 .
L'initialisation des IX par l'instruction LD IX,(qq) permettra à chaque circuit de lire chacun le groupe d'octets des blocs de décodage correspondant au groupe d'octets lus dans le bloc codé .
Le premier circuit mP3 est initalisé suivant l'invention à 0 , le second à 32 , le troisiemme à 64 et ainsi de suite , tant pour le bloc de décodage des octets que pour le bloc de décodage des adresses .
Le registre B , compteur de DJNZ est chargé à 32 car au bout d'une lecture de 32 octets du bloc de 256 octets à décoder , par chaque circuit , les 256 octets auront été lus par les 8 circuits de l'exemple .
Le premier circuit aura transféré et décodé les 32 premiers octets , le second circuit les 32 suivants , et ainsi de suite .
L'algorythme multiple de transfert décodage suivant l'invention , par les n circuits de mP3 est représenté figure 13 et fig 14 .
Sur la fig 13 apparaissent schématisés les mémoires RAM et les multiplexeurs 1 , 2, 3 et 4 . Sur les fig 14 et 15 , les durées des instructions en cycles machines ont été reproduites à l'échelle de façon à mettre en évidence les conflits d'accès aux multiplexeurs et les solutions apportées suivant l'invention .
Le premier circuit de mP3 est activé par mP2 , soit directement par activation du circuit horloge , soit par le biais du bit b vu plus haut , positionné par mP2 et lu par mP3.1 .
Les différents circuits de mP3 étant pilotés par la même horloge , la succession des instructions pour chaque circuit , est décalée d'un circuit à l'autre du nombre de périodes d'horloge nécessaires pour l'activation du multiplexeur 1 et l'exécution de l'instruction de transfert LD C,HL . Les cycles nécessaires au fonctionnement des multiplexeurs sont fixés à 3 et les périodes d'horloge correspondantes à 10 , et regroupés arbitrairement avant l'instruction devant transiter par ces multiplexeurs .
MUX1.1 . Branchement du premier circuit mP3.1 sur la RAM micro . L'instruction de chargement du premier octet du bloc à décoder est exécutée . MUX2.1 . Le circuit se branche ensuite sur le bloc de décodage des octets B1 . Transfert de l'octet décodeur . Addition de cet octet à l'octet codé .
MUX3.1 . Le circuit se branche sur le bloc de décodage des adresses B2 . La charge de l'adresse où transférer l'octet décodé est effectuée .
MUX4.1 . Le circuit se branche sur la RAM module . L'instruction LD (°E).A charge l'octet décodé en RAM module .
Le transfert-décodage du premier octet par le premier circuit est achevé Les instructions qui suivent incrémentent HL et IX et testent les différents paramètres de fonctionnement propres au premier circuit mP3.1 .
Les circuits successifs sont activés de la même mannière que le premier avec un décalage correspondant au nombre de cycles pendant lesquels MUX1.1 va être utilisé par le premier circuit .
Chaque instruction MUX est suivie d'une instruction de chargement d'un registre . Ce n'est que lorsque cette instruction est exécutée que le multiplexeur devient libre pour le circuit suivant .
Il doit donc y avoir nécessairement entre deux MUX identiques de deux circuits successifs un décalage correspondant à la durée de l'instruction suivant ces
MUX . Ce décalage est indispensable pour éviter un conflit d'accès aux multiplexeurs
Or les instructions LD C,(HL) et LD (DE), A durent 7 périodes , (deux cycles) , alors que les instructions LD A,(IX+d1) et LD E,(IX+d2) durent 19 périodes ( 5 cycles) . La succession des instructions MUX.1 de branchement à l'ordinateur conditionnent la vitesse de transfert de l'ordinateur vers le module .
L'instruction MUX1.2 du circuit mP3.2 doit donc suivre immédiatement , suivant l'invention , l'instruction de transfert LD C,(HL) du circuit mP3.1 suivant l'instruction MUX1.1 du dit circuit mP3.1 . Les algorythmes décalés des deux premiers circuits montrent alors , figure 12 , que l'instruction MUX2.2 du second circuit est lancée avant que l'instruction LD A,(IX+d1) du premier circuit soit terminée .
En effet , l'instruction LD A,(IX+d1) dure 12 périodes d'horloge de plus que l'instruction LD C,(HL) . Le même décalage existe entre MUX3.2 et MUX3.1 , alors que MUX4.2 et MUX4.1 sont synchronisées .
Une première solution , suivant l'invention , (fig 16) , consiste à placer avant MUX2.2 3 instructions NOP de 4 périodes , qui compensent le décalage de 12 T de façon à conserver la durée minimum d'utilisation du multiplexeur MUX.1 de 10+7=17 périodes pour chaque circuit . Les mêmes circonstances se produisant entre le troisièmme et le second circuit , il faudra ajouter 3 nouveaux NOP suivant l'invention , au programme du troisièmme circuit et ainsi de suite . Le circuit n doit donc recevoir avant l'instruction MUX2.n , (n-1)3 NOP .
Pour maintenir égales les durées des programmes des circuits , on ajoute , suivant l'invention , des NOP avant l'instruction de début de cycle MUX.1 .
Le nombre de NOP ajoutés au premier circuit sera (n-1)3 , au second circuit (n-2)3 et ainsi de suite . Une seconde solution suivant l'invention , (fig 15) , consiste à ajouter 3 NOP à l'instruction MUX1 de façon à ce que toutes les instructions suivant les MUX aient la même durée .
La durée d'utilisation de MUX1 devient alors 17+12=29 périodes pour 5 chaque circuit , et la vitesse de transfert-décodage est diminuée dans le rapport
17/29 .
Une troisièmme solution , suivant l'invention , figures 14 et 17 , consiste à doubler les multiplexeurs MUX2 et MUX3 ainsi que les blocs de décodage B1 et B2 qui leurs sont liés . On attribue alors , suivant l'invention , le multiplexeur MUX2A aux
1 o circuits impairs et MUX2B aux circuits pairs , par exemple , et de même pour les multiplexeurs MUX3A et MUX3B .
Entre deux utilisations du même multiplexeur MUX2A ou MUX2B , il y a deux utilisations du multiplexeur principal MUX1 , soit une durée de 17x2=34 périodes . Cette durée est supérieure à la durée d'utilisations des MUX2 et MUX3 de 19+10=29 ^ c périodes .
La durée de la pseudo-instruction MUX a été fixée arbitrairement à 10 périodes .
On peut montrer que le simple doublement des MUX2 et MUX3 suivant l'invention suffit en général à assurer la synchronisations des MUX même pour des 20 valeurs différentes de la durée des MUX . En effet , soit t cette durée de MUX ; on doit avoir (t+7)2 > t+19 , soit t > 5 périodes . Cette durée étant faible , il n'est pas intéressant dans la plus part des cas de tripler les MUX2 et MUX3 , le gain de vitesse en résultant étant très faible .
Mais le triplement des multiplexeurs MUX2 et MUX3 est une solution , 25 suivant l'invention , dans le cas où la durée de l'instruction MUX est telle que le doublement n'assure pas l'utilisation maximum du multiplexeur MUX1 et donc la vitesse de tansfert maximum .
La troisièmme solution , suivant l'invention , doublement ou triplement de MUX2 et MUX3 permet la vitesse maximum avec un nombre faible de circuits mP3 .
30 En effet ce nombre de circuits permettant la vitesse maximum dépend de la durée de chaque cycle principal de mP3 et doit être égal à la durée du cycle principal de transfert décodage , hors cycle de tests , divisée par la durée d'utilisation du multiplexeur MUX1 . La durée du cycle principal est dans l'exemple de 135 périodes .
35 Dans la première solution , suivant l'invention , où l'on ajoute des NOP aux cycles des circuits , il y aura une durée de base de 135 périodes + la durée des NOP égale à (n-1)x3x4=(n-1)12 périodes . la durée totale D est donc D=123+12n . La durée d'utilisation de MUX1 étant de 17 périodes , il faut n circuits tels que n=(123+12n)/17 , et n=123/5=24,6 soit 25 circuits , alors que le nombre minimum de circuits dans la solution 3 , suivant l'invention , est de 135/17=7,94 soit 8 circuits . Les nombres fractionnaires obtenus montrent qu'il faut ajouter dans les circuits des NOP de façon à obtenir des nombres entiers . On doit avoir 17x8=136 périodes . Il manque une période par cycle pour obtenir 8 circuits . Un NOP ayant une durée de 4 périodes , un NOP tous les 4 circuits apportera la correction suffisante .
Dans la solution 2 , où l'on ajoute 3 NOP à la durée d'utilisation de MUX1 , cette durée devient 17+12=29 , la durée du cycle principal 135+12=147 , et le nombre de circuits 147/29=5,06 soit 6 , mais avec une vitesse de transfert diminuée dans le rapport 17/29 . Une quatriemme solution , suivant l'invention , consiste à remplacer les instructions LD A,(IX+d1) et LD E,(IX+d2) de 19 périodes par les instructions LD A,(nn) de 13 périodes . Suivant l'invention , un circuit mP4 charge à des adresses fixes nOnO et pOpO les octets successifs du bloc d'adresses et du bloc de décodage des octets . L'instruction LD A,(n0n0) est suivie de l'instruction LD D,A . Les multiplexeurs MUX2 et MUX3 sont utilisés ainsi pendant 10+13=23 périodes au lieu de 10+19=29 périodes . Il y a un gain de 2x6=12 périodes et donc moins de NOP et moins de circuits .
On peut également , suivant l'invention , combiner les solutions précédentes suivant les impératifs de vitesse et de prix . Lorsque le cycle principal de chaque circuit a été effectué le nombre de fois voulues , c'est à dire lorsque le registre B est à 0 , le circuit effectue , suivant l'invention , un cycle de tests des instructions de mP2 microprocesseur principal du module .
Au cours de ce cycle de tests , chaque circuit doit effectuer des lectures en RAM module et donc utiliser des multiplexeurs pour lesquels les conflits d'accès peuvent être résolus de la même mannière que pour le cycle principal .
Il faut attendre d'abord que le dernier circuit ait libéré le multiplexeur MUX2 , ou MUX2A .
Le cycle de tests commence donc lorsque le dernier circuit mP3 a terminé l'utilisation du multiplexeur MUX2 ou. MUX2A dans son cycle principal . Suivant le nombre de circuits , on fait précéder , suivant l'invention , les instructions MUX2 ou MUX2A et MUX3 ou MUX3A d'un certain nombre de NOP d'attente . Le déroulement de l'utilisation des multiplexeurs se fera ensuite comme pour le cycle principal . La seconde solution , suivant l'invention , consiste à utiliser dans le cycle de tests , des multiplexeurs supplémentaires , MUX9 , MUX10 , MUX11 ayant les mêmes fonctions que MUX2 et MUX3 . Il n'y a pas de NOP supplémentaire entre le cycle principal et le cycle de tests , mais seulement des NOP comme précédament pendant ce cycle de tests . Dans toutes les solutions précédentes aux conflits d'accès on a supposé la synchronisation des circuits et réglé les conflits de façon rigide à l'aide de NOP .
Un autre type de solution aux conflits d'accès , suivant l'invention , consiste à introduire des drapeaux , et des instructions de test de ces drapeaux , dans des cycles de tests placés aux emplacements précédents des NOP . De cette façon , les circuits testeront eux même la disponibilité des multiplexeurs sources de conflits .
Pour pouvoir utiliser la RAM module avec le maximum de souplesse , une partie de cette RAM est constituée , suivant l'invention , de RAM élémentaires de 2**n octets , soit 256 octets dans notre exemple , dans le cas où le transfert se fait par blocs de 256 octets .
Ces RAM indépendantes reçoivent le programme décodé par mP3 et sont lues ensuite par mP2 . De cette façon chaque RAM élémentaire RAMCHAR sera alternativement écrite par mP3 et lue par mP2 suivant les besoins de mP2 . La partie de la RAM module consacrée au stockage des blocs de programme apparaitra donc comme simultanément lue et écrite grâce à sa décomposition partielle en blocs indépendants .
Des circuits spécialisés , suivant les règles de l'art , contrôleur de RAM , logiques de sélection , multiplexeurs , cette liste n'étant pas limitative , assurent le fonctionnement de l'ensemble sous le contrôle de mP2 et mP3 .
Les bus d'adresses et de données de l'ordinateur sont séparés avant leurs arrivées sur MUX1 afin de disposer sur le bus d'adresses des circuits interdisant de façon statique le fonctionnement du bus d'adresses de l'ordinateur vers le module , et permettant son fonctionnement du module vers l'ordinateur . La fig 17 montre la disposition schématique du module , suivant l'invention , dans le cas de l'existence de 7 multiplexeurs de transfert décodage et d'un multiplexeur supplémentaire MUX8 permettant à mP2 de contrôler le signal d'horloge des circuits mP3 .
Chaque circuit mP3 , suivant l'invention , est relié par ses 3 bus à chacun des multiplexeurs MUX1 , MUX4 , et par son bus de commande seulement à MUX .
Si les multiplexeurs MUX2 et MUX3 sont doubles et s'il existe un multiplexeur MUX5 , les circuits pairs sont reliés à MUX2A et MUX3A , par exemple , et les impairs à MUX2B , MUX3B et MUX5 .
On sait que certains microprocesseurs possèdent des mémoires internes rapides destinées au stockage de blocs de données dont l'ordinateur estime qu'il va avoir besoin dans un futur proche , et qui pourront être utilisées beaucoup plus rapidement que par un transfert direct à partir de la mémoire centrale ou de masse , au moment réel du besoin .
Le module , ou le microprocesseur perfectionné équivalent , peut recevoir .suivant l'invention , des mémoires tempons que nous appelerons RAMTEMP , dans lesquels seront transferrés les blocs à décoder (figure 18) .
En effet , il peut être avantageux de stocker le maximum de données dans le module , sans pour cela augmenter le nombre des RAMCHAR . Ces données sont alors stockées codées dans les RAMTEMP et non , décodées , dans les
RAMCHAR .
Ces mémoires RAMTEMP sont chargées sous le contrôle de mP2 ou des mP3 . Elles peuvent être éventuellement chargées sous le contrôle du microproces¬ seur principal mP1 de l'ordinateur mais il faut alors déplacer les dispositifs d'interdiction de lecture du module de l'extérieur .
Ces mémoires RAMTEMP seront placées , suivant l'invention , entre le moyen de contrôle MUX1 des entrées et sorties du module , et les circuits de transfert décodage codage mP3 , le terme "entre" signifiant seulement que les données cheminent , suivant l'invention , de MUX1 aux RAMTEMP r et des RAMTEMP aux mP3 , sans passer par le bus BUSMODULE , à moins que des voies de ce bus soient spécialement réservées à cet usage .
Le bus BUSMODULE est préférentiellement laissé libre pour mP2 , suivant l'invention , de façon à ce que le chargement des blocs INIT par mP2 , la lecture des RAMCHAR par mP2 , et la liaison de mP2 avec l'ordinateur , n'interfèrent pas avec le transfert décodage des données des RAMTEMP par les mP3 .
Un moyen de sélection de ces RAMTEMP par les mP3 , en particulier un circuit MUX10 du type contrôleur d'entrées sorties ou multiplexeur , sera placé entre les RAMTEMP et les mP3 , et sa pseudo instruction d'activation MUX10 remplacera la pseudo instruction MUX1 dans les algorythmes de transfert décodage vus précéde- ment .
Un moyen de sélection , en particulier un multiplexeur MUX11 , contrôlera les liaisons entre mP2 et les RAMTEMP , via le bus BUSMODULE , qui pourront être utilisées directement par mP2 .
Les RAMTEMP peuvent être ignorées par les mP3 , mP2 ou les mP3 établissant une liaison permanente entre une des entrées de MUX10 et une des sorties de MUX1 (figure 19) , ou entre toutes les entrées de MUX10 et les sorties équivalentes de MUX1 (figure 20) .
Dans le cas d'une liaison unique active entre MUX10 et MUX1 , MUX10 remplace MUX1 comme moyen de contrôle des liaisons avec l'ordinateur . Dans le cas de liaisons permanentes multiples actives entre MUX10 et
MUX1 , chaque mP3 ayant sa liaison propre , le MUX10 se comporte comme un circuit transparent rétablissant ainsi le schéma initial de la figure 1 .
On a vu que , dans le dispositif de transfert décodage décrit précédement , le transfert est limité aux moments de disponibilité de MUX1 utilisé par ailleurs par mP2 pour dialoguer avec l'ordinateur .
Il y a conflit entre les mP3 et mP2 dans l'utilisation de MUX1 .
Ce conflit peut en partie être éliminé en établissant , suivant l'invention ,une liaison directe entre les mP3 et les RAM de l'ordinateur où sont stockées les données à décoder destinées à mP2 , RAM que nous appelerons RAMSTOCK (figure
21) .
En effet , pour le transfert des données , les mP3 n'utilisent qu'une partie du bus principal BUSOR de l'ordinateur .
Ce sont les voies d'adressage des dites RAMSTOCK , des voies de données , et certaines voies de contrôle .
Le microprocesseur mP2 n'ayant pas à communiquer avec les RAM¬ STOCK en même temps que les mP3 , n'utilisera le plus souvent qu'une partie différente de BUSOR .
On peut donc envisager des relations simultannées des mP3 et de mP2 vers l'ordinateur , en sélectionnant à chaque instant à l'aide des moyens de contrôle existants , MUX1 et les moyens de contrôle normaux des circuits branchés sur le bus BUSOR et en particulier des RAMSTOCK , des voies réservées temporairement aux mP3 vers les RAMSTOCK et des voies réservées temporairement à mP2 vers le reste de l'ordinateur . Ce fonctionnement simultaπné , de et/ou vers l'ordinateur , est assuré de façon plus efficace en disposant , suivant l'invention , d'un moyen de liaison plus direct entre les RAMSTOCK , MUX1 et les mP3 , qu'une organisation particulière et temporaire du bus BUSOR et des moyens de sélection et de contrôle des circuits que ce bus BUSOR dessert . Ceci est obtenu préférentieliement , (figure 22) , suivant l'invention , par un bus BUSTOCK reliant les RAMSTOCK à une seconde entrée de
MUX1 , par le biais d'un moyen de contrôle , éventuellement un multiplexeur MUX12 , qui permet d'isoler de façon adéquate la dite RAMSTOCK du bus BUSOR .
Ce bus BUSTOCK peut être établi indépendement du bus BUSOR , ou être placé à coté du bus BUSOR , être intégré au bus BUSOR sous forme de lignes supplémentaires , ou encore utiliser des lignes sans affectation du bus BUSOR .
De cette façon , une fois réalisées les connexions entre les RAMSTOCK , MUX1 et les mP3 sous le contrôle de mP2 ou de mP1 , le transfert entre les RAMSTOCK et les mP3 , et le dialogue entre mP2 et le reste de l'ordinateur peuvent s'effectuer simultanément . Ce bus BUSTOCK peut être déterminé , suivant l'invention , pour des raisons d'économie , en fonction de la probabilité d'usage des voies du bus principal de l'ordinateur BUSOR , de façon à minimiser le nombre de voies du dit bus BUSTOCK , une partie des voies de BUSOR , de faible probabilité d'emploi , étant temporairement affectée à BUSTOCK.

Claims

Revendications
1 Dispositif appelé module de transfert décodage ou simplement module M , communiquant avec l'extérieur par des connecteurs et comportant dans une enveloppe inviolable des mémoires mortes et vives , un microprocesseurs mP2 identique à , ou compatible avec celui équipant l'ordinateur auquel est relié le dit module , des circuits annexes nécessaires au fonctionnement de l'ensemble , des clés secrètes et des programmes de décodage secrets ,
_ caractérisé en ce que des circuits spécialisé mP3 fonctionnant en parallèle avec un décalage temporel , adressent la mémoire de l'ordinateur , en transferrent vers le module , décodent et chargent en RAM module , à des adresses désignées par mP2 , des blocs de fichiers codés situés dans la dite mémoire de l'ordinateur . 2 Dispositif selon 1 , caractérisé en ce que les différents circuits du module , dont le microprocesseur mP2 , sont intégrés en un seul composant devenant un microprocesseur perfectionné doté de fonctionnalités de transfert décodage .
3 Dispositif selon 1 caractérisé en ce que existent dans les cycles communs contrôlant les mP3i des instructions d'attente NOP situées devant les pseudos instructions d'activation des multiplexeurs MUX , en nombre satisfaisant pour permettre les accès individuels successifs des divers mP3i aux divers multiplexeurs MUX , en maximisant les transferts à travers le multiplexeur principal MUX1 .
4 Dispositif selon 1 et 3 caractérisé en ce que des instructions NOP sont placées avant la pseudo instruction MUX1 , au nombre de (n-1)u au premier circuit mP31 , (n-2)u au second mP32 , et ainsi de suite , et , avant la pseudo instruction MUX2 , au nombre de (n-1)u pour le circuit n , (n-2)u , pour le circuit n-1 , et ainsi de suite , u étant le nombre d'instructions NOP nécessaires pour compenser la différence de durée entre la durée de l'instruction la plus courte suivant une pseudo instruction MUX , et l'instruction la plus longue suivant une autre pseudo instruction MUX .
5 Dispositif selon 1 et 3 caractérisé en ce que il y a des instructions d'attente NOP dans l'algorythme de décodage suivant la première solution aux conflits d'accès aux multiplexeurs , entre la fin du cycle principal du premier circuit et la pseudo instruction de branchement MUX2 du multiplexeur MUX2 du cycle de tests de ce premier circuit , le nombre de NOP correspondant au décalage existant entre la fin de l'utilisation de MUX2 dans le cycle principal du dernier circuit et le début de l'utilisation du même MUX2 dans le cycle de tests du premier circuit , et qu'il y a les mêmes NOP aux mêmes endroits dans les cycles de chaque circuit .
6 Dispositif selon 1 caractérisé en ce que le fonctionnement de mP3 est contrôlé par mP2 par l'intermédiaire d'adresses en mémoire micro de début de bloc à décoder , d'adresses de début d'écriture en RAM module du bloc décodé , d'adresses de début de lecture dans les biocs de décodage , adresses que mP2 charge en RAM module à des adresses connues de mP3 , et par l'intermédiaire d'un bit b d'adresse connue également de mP3 qui le lit périodiquement dans son cycle d'attente , et que mP2 met à 1 ou à 0 suivant la nécessité d'un nouveau transfert décodage d'un bloc de mémoire codé de l'ordinateur .
7 Dispositif selon 1 et 6 caractérisé en ce que lorsque que le bit b est mis à 0 par mP2 , mP3 demande à mP2 l'interruption de son signal d'horloge , cette demande d'interruption étant transmise par le bus de commande de mP3 , et mP2 y répondant en interrompant le dit signal d'horloge , et en ce que mP2 rend à mP3 son signal d'horloge lorsqu'il a chargé de nouvelles adresses et mis le bit b à une valeur prédéterminée .
8 Dispositif selon 1 et 3 caractérisé en ce que existent des drapeaux et que des instructions de test de ces drapeaux sont placés dans les programmes de cσntôle des mP3 aux emplacements des NOP . 9 Dispositif selon 1 caractérisé en ce que une ou plusieurs fenêtres 4 transparentes aux UV sont disposées dans la paroi du module .
10 Dispositif selon 1 caractérisé en ce que une partie de la RAM module est au moins constituée de quatre RAM indépendantes d'une capacité égale à une puissance de 2 , chacune de ces RAM pouvant être lue ou écrite alternativement par mP2 et mP3 , ou simultanément l'une écrite par mP3 et l'autre lue par mP2 , deux de ces RAM appelées RAMCHAR recevant les octets décodés du programme et les deux autres , appelées bloc de décodage B1 des octets et bloc de décodage B2 des adresses recevant , la première des octets de décodage qui combinés aux octets codés redonneront les octets clairs , et l'autre recevant les adresses de la RAM RAMCHAR aux quelles doivent doivent être logés les dits octets décodés .
11 Dispositif selon 1 et 10 caractérisé en ce que il y a autant de RAM indépendantes appellées RAMCODE comprenant le bloc de décodage des octets B1 , le bloc de décodage des adresses B2 et les octets d'initialisation INIT qu'il y a de circuits mP3 .
12 Dispositif selon 1 et 11 caractérisé en ce que il y a autant de
RAMCODE que de MUXA et MUXB et qu'il y a éventuellement une RAM INIT supplémentaire .
13 Dispositif selon 1 et 10 caractérisé en ce que il y a au moins autant de RAMCHAR qu'il y a de mP3i .
14 Dispositif selon 1 caractérisé en ce que un multiplexeur MUX1 est placé à l'entrée du module M , ce multiplexeur comprenant une porte unique sur le bus de l'ordinateur et au moins autant de portes vers le module qu'il en faut pour mP2 et les mP3 , une porte contrôlant partiellement ou en totalité un bus complet comprenant les voies d'adressage , de données et de commande . 15 Dispositif selon 1 et 11 caractérisé en ce que des multiplexeurs
MUX2i relient chaque RAMCODE , soit à un mP3 , soit au bus général BUSMODULE .
16 Dispositif selon 1 caractérisé en ce que on a ajouté aux circuits du module des mémoires RAM appelées RAMTEMP , destinées à stocker des données et chargées sous le contrôle de mP2 ou des mP3 .
17 Dispositif selon 1 et 16 caractérisé en ce que les RAMTEMP sont placées entre MUX1 et les mP3 .
18 Dispositif selon 1 et 16 caractérisé en ce que un moyen de contrôle
MUX10 situé entre les RAMTEMP et les mP3 permet de contrôler l'accès des différents mP3 aux différentes RAMTEMP .
19 Dispositif selon 1 et 16 caractérisé en ce que un moyen de sélection MUX11 permet la liaison de mP2 et des RAMTEMP .
20 Dispositif selon 1 caractérisé en ce que existent , dans l'ordinateur , des mémoires RAMSTOCK dans lesquelles sont stockées des données codées , et caractérisé également en ce que existent un moyen de liaison particulier BUSTOCK , reliant les dites RAMSTOCK au moyen de contrôle MUX1 du module , et pouvant éventuellement utiliser des lignes sans affectation du bus BUSOR de l'ordinateur , ou être intégré à ce bus BUSOR sous forme de lignes supplémentaires , et un moyen de contrôle MUX12 des RAMSTOCK permettant aux dites RAMSTOCK d'être reliées au bus BUSOR ou au bus BUSTOCK .
21 Dispositif selon 1 et 10 caractérisé en ce que un multiplexeur MUX4 est branché d'une part sur un bus de sortie BUSMUX4 desservant les multiplexeurs MUX4 contrôlant les accès aux RAM de chargement indépendantes RAMCHAR , et d'autre part sur chacun des circuits mP3 . 22 Dispositif selon 1 et 10 caractérisé en ce que des multiplexeurs
MUX4.i sont branchés , en entrée sur le bus général BUSMODULE et sur le bus BUSMUX4 du multiplexeur MUX4 , et en sortie sur une RAM de chargement indépendante RAMCHAR .
23 Dispositif selon 1 et 11 caractérisé en ce que des multiplexeurs MUX2A , MUX2B , MUX3A , MUX3B et MUX5 sont placés à la sortie d'une RAMCODE et que chacun de ces multiplexeurs permet l'accès de cette RAMCODE , soit au BUSMODULE , soit à certains circuits mP3i .
24 Dispositif selon 1 caractérisé en ce que un multiplexeur MUX8 est relié d'une part au bus de commande de chaque mP3i et d'autre part au bus de commande et d'adressage de mP2 .
25 Dispositif selon 1 , 10 et 11 caractérisé en ce que chaque circuit mP3 est relié par ses trois bus , au multiplexeur MUX1 assurant sa liaison avec l'ordinateur , au multiplexeur MUX4 assurant sa liaison avec les RAMCHAR , et à un multiplexeur MUX2.i assurant sa liaison avec une RAM RAMCODE indépendante contenant les blocs de décodage B1 et B2 et les octets d'initialisation , et par son seul bus de commande au multiplexeur MUX8 assurant la liaison de son bus de commande avec mP2 .
26 Dispositif selon 1 caractérisé en ce que chaque circuit mP3 est relié par ses trois bus à chacun des multiplexeurs MUX1 , MUX4 , et par son bus de commande à MUX8 , et que les circuits mP3 pairs sont reliés à MUX2A et MUX3A , et les impairs à MUX2B , MUX3B et MUX5 , ou inversement , dans le cas où les circuits MUX2 et MUX3 sont doublés .
27 Dispositif selon 1 caractérisé en ce que on dispose des multi- plexeurs supplémentaires MUX9 , MUX10 et MUX11 ayant les mêmes fontions que
MUX2 et MUX3 et contrôlés par les pseudo instructions MUX9 , MUX10 et MUX11 des cycles de tests des circuits mP3 .
28 Dispositif selon 1 caractérisé en ce que le bus d'adresses et le bus de données de l'ordinateur , s'il sont multiplexes , sont démultiplexés , et que sont placés dans le module entre les bornes de sortie et MUX1 , des circuits interdisant de façon définitive l'adressage de la mémoire du module à partir de l'ordinateur , mais autorisant l'adressage de la mémoire de l'ordinateur à partir du module .
29 Dispositif selon 1 agissant sur un fichier codé écrit en blocs élémentaires de 2**n octets , le codage étant effectué octets par octets dans l'ordre de lecture croissant , chaque octet clair étant combiné avec un des octets codeurs d'un bloc de codage B1 de 2**n octets lu également dans l'ordre croissant ,
_ caractérisé en ce que un second codage des blocs codés est effectué en redistribuant les octets de ces blocs à des adresses différentes , suivant les adresses contenues dans un bloc codeur de même taille que B1 , les blocs codeurs B1 θt B2 pouvant être identiques ou différents .
30 Dispositif suivant 1 et 29 caractérisé en ce que un ou deux octets des blocs codés de 2**n octets contiennent un numéro d'ordre de 1 à 256 ou de 1 à 65536 qui , interprété par mP2 , détermine une redistribution des octets des blocs B1 et B2 pour les rendre conformes à la distribution utilisée pour le codage et caractérisée par le numéro d'ordre , ces distributions se substituant ou se superposant aux distributions de codage initiales .
31 Dispositif selon 1 et 29 caractérisé en ce que les blocs de décodage B1 et B2 de 2**n octets sont chargés par mP2 des différentes valeurs possibles de 1 à 2**n , ces valeurs étant distribuées dans les blocs par un programme de codage réagissant à une suite de bits venant de l'extérieur du module , et cette distribution pouvant être la même ou différente pour les deux blocs , les octets du premier blocs étant considérés comme des nombres qui , combinés aux octets à décoder considérés également comme des nombres , fournissent les octets clairs , et les octets du second bloc étant les adresses aux quelles doivent être chargés en RAM module , les octets clairs précédement décodés et précédement lus en mémoire du ≥
micro dans l'ordre croissant des adresses , ordre dans lequel sont également lus les blocs de décodage B1 et B2 pour assurer la coïncidence des octets codés et des octets de décodage et d'adressage .
32 Dispositif selon 1 caractérisé en ce que les blocs codeurs B1 et B2 du codeur C sont engendrés de façon aléatoire par le codeur C , ou reçus de l'extérieur du codeur C , puis codés dans le codeur C en blocs B'1 et B'2 publics , par une fonction ou algorythme H() contrôlé par un code n2 .
33 Dispositif selon 1 et 32 caractérisé en ce que les blocs publics B'1 et B'2 seront décodés dans le module par une fonction ou algorythme H-1() contrôlé par le code n2 .
34 Dispositif selon 1 , 32 et 33 caractérisé en ce que une fonction ou algorythme H'() du codeur appliqué à m , n2 et aux blocs codeurs B1 et B2 donne des blocs codés publics B'1 et B'2 différents pour chaque module , et en ce que la fonction ou algorythme H'-1() du module M appliqué à ni , n2 , B'1 et B'2 redonne les blocs codeurs d'origine B1 et B2 .
35 Dispositif selon 1 et 34 caractérisé en ce que le code ni issu du module M possède un critère interne de légitimité , en ce que le codeur C possède une fonction ou algorythme de test de la légitimité du code ni , et en ce que , en cas d'illégitimité du code ni fourni au codeur C , le dit codeur engendre un code n4 ne permettant pas au module de décoder les blocs B'1 et B'2 .
36 Dispositif selon 1 caractérisé en ce que les blocs de codage B1 et
B2 et les blocs codés contiennent 2**n groupes de n bits de codes ou de données , auquels n bits s'ajoutent éventuellement un ou plusieurs bits de contrôle .
37 Dispositif selon 1 caractérisé en ce que si la réorganisation des adresses est effectuée avant le décodage des octets , le bloc de décodage des adresses se déduit du bloc de codage en ce que chaque adresse contenue du bloc codeur des adresses devient l'adresse contenante du bloc décodeur des adresses , à la quelle adresse contenante du bloc décodeur est chargé l'ex adresse contenante du bloc codeur qui devient ainsi l'adresse contenue du bloc décodeur , et en ce que chaque octet du bloc de décodage des octets se met , dans le bloc de décodage des octets , à l'adresse équivalente donnée par le bloc de codage des adresses .
38 Dispositif selon 1 caractérisé en ce que les blocs de décodage B1 et B2 sont écrits initialement en ROM ou en EPROM , chargés en EPROM ou entrés au clavier de l'ordinateur . 39 Dispositif selon 1 caractérisé en ce que le module de codage possède un code interne de ni bits choisi aléatoirement et que le dispositif de codage possède un code différent de n2 bits , choisis également aléatoirement .
40 Dispositif selon 1 caractérisé en ce que l'émetteur et le récepteur disposent d'un algorythme de codage f() qui à partir d'une suite de bits fournit une suite de chiffres et d'un algorythme inverse de décodage f-1() qui , à partir de cette suite de chiffres redonne la suite initiale de bits .
41 Dispositif selon 1 caractérisé en ce que le fournisseur possède un algorythme F() qui , à partir d'une première suite de bits ni propre au dit fournisseur , 5 et d'une seconde suite de bits n2 propre au module récepteur , engendre une troisièmme suite de bits n3 , et en ce que le module récepteur possède l'algorythme inverse F-1() , qui à partir de la seconde et de la troisièmme suites de bits retrouve la première suite de bits du fournisseur .
42 Dispositif selon 1 caractérisé en ce que le module possède une o fonction ou algorythme f() codant le code interne ni du module en code public n'1 , et en ce que le codeur C possède une fonction ou algorythme f-1() qui , appliquée au code n'1 redonne le code m , et également en ce que le codeur C possède une fonction ou algorythme g() qui appliquée au code n3 engendré par le codeur C donnera un code public n'3 , et en ce que le module M possède une fonction ou c algorythme g-1() qui , appliquée au code n'3 redonnera le code n3 .
PCT/FR1990/000166 1989-03-09 1990-03-09 Dispositif informatique assurant la securite des droits d'auteur WO1990010908A1 (fr)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
FR89/03081 1989-03-09
FR8903081A FR2644261B1 (fr) 1989-03-09 1989-03-09 Dispositif de transfert decodage codage de fichiers informatiques
FR89/12500 1989-09-22
FR8912500 1989-09-22

Publications (1)

Publication Number Publication Date
WO1990010908A1 true WO1990010908A1 (fr) 1990-09-20

Family

ID=26227204

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR1990/000166 WO1990010908A1 (fr) 1989-03-09 1990-03-09 Dispositif informatique assurant la securite des droits d'auteur

Country Status (1)

Country Link
WO (1) WO1990010908A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2716550A1 (fr) * 1994-02-24 1995-08-25 Bertin & Cie Mémoire de masse chiffrante du type embarquable et procédé de protection des informations enregistrées dans cette mémoire.
WO1996038724A1 (fr) * 1995-05-31 1996-12-05 Board Of Regents, The University Of Texas System Cations metalliques de lanthanides pour la detection et la separation simultanees lors de l'electrophorese capillaire

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2529000A1 (fr) * 1982-06-16 1983-12-23 Open Computer Services Ltd Procede et dispositif pour la protection de logiciels d'ordinateurs
EP0175487A2 (fr) * 1984-08-23 1986-03-26 Btg International Limited Dispositif de protection de logiciel
FR2608317A1 (fr) * 1986-12-15 1988-06-17 Dassault Electronique Circuit integre protege par une resine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2529000A1 (fr) * 1982-06-16 1983-12-23 Open Computer Services Ltd Procede et dispositif pour la protection de logiciels d'ordinateurs
EP0175487A2 (fr) * 1984-08-23 1986-03-26 Btg International Limited Dispositif de protection de logiciel
FR2608317A1 (fr) * 1986-12-15 1988-06-17 Dassault Electronique Circuit integre protege par une resine

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Communications of the ACM, Vol. 17, No. 8, Aout 1974, A. EVANS Jr. et al.: "A user Authentication Scheme not Requiring Secrecy in the Computer", pages 437-442 *
Electronics Week, Vol. 58, No. 6, 11 Fevrier 1985, (New York, US), S. ZOLLO: "IC Keeps Pirates Out", pages 73,76 *
Microprocessing and Microprogramming, Vol. 23, Nos 1-5 + index, Mars 1988, L. VIEIRA de SA et al.: "A Multiprocessing System for the TMS32020", pages 221-226 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2716550A1 (fr) * 1994-02-24 1995-08-25 Bertin & Cie Mémoire de masse chiffrante du type embarquable et procédé de protection des informations enregistrées dans cette mémoire.
WO1996038724A1 (fr) * 1995-05-31 1996-12-05 Board Of Regents, The University Of Texas System Cations metalliques de lanthanides pour la detection et la separation simultanees lors de l'electrophorese capillaire

Similar Documents

Publication Publication Date Title
EP0475837B1 (fr) Procédé de gestion d'un programme d'application chargé dans un support à microcircuit
EP0941525B1 (fr) Systeme d'authentification a carte a microcircuit
EP0282123B1 (fr) Système et procédé pour cryptographie avec application
EP0670063B1 (fr) Procede et circuit de cryptage et d'authentification pour carte a memoire synchrone
EP1064752B1 (fr) Procede de securisation de donnees mettant en oeuvre un algorithme cryptographique
EP0402210B1 (fr) Procédé pour vérifier l'intégrité d'un logiciel ou de données, et système pour la mise en oeuvre de ce procédé
EP0425053A1 (fr) Système de traitement de données comportant des moyens d'authentification d'une carte à mémoire, circuit électronique à utiliser dans ce système et procédé de mise en oeuvre de cette authentification
FR2726668A1 (fr) Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
WO1997033217A1 (fr) Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre
CH616251A5 (fr)
WO1991009381A1 (fr) Procede de generation d'un nombre aleatoire dans un systeme de traitement de donnees, et systeme mettant en ×uvre un tel procede
EP0063972A1 (fr) Procédé et dispositif d'allocation d'une ressource dans un système comportant des unités de traitement de données autonomes
FR3039948A1 (fr) Procede de securisation d’une transaction a partir d’un terminal non securise
FR3100631A1 (fr) Méthode d’authentification sélective d’un utilisateur de chaine de blocs auprès d’un contrat intelligent
EP0920660B1 (fr) Microprocesseur ou microcalculateur imprévisible
FR2762683A1 (fr) Circuit testable a faible nombre de broches
FR2536884A1 (fr) Reseau de transfert de donnees entre plusieurs processeurs et une memoire
EP0793165B1 (fr) Coprocesseur d'arithmétique modulaire permettant de réaliser rapidement des opération non modulaires
WO1990010908A1 (fr) Dispositif informatique assurant la securite des droits d'auteur
EP0718769A1 (fr) Dispositif de protection de l'accès à des mots mémoires
CA2234478C (fr) Perfectionnements aux cartes a memoire
EP1721246A2 (fr) Procede et dispositif pour accomplir une operation cryptographique
EP1591866B1 (fr) Contrôle de l'exécution d'un algorithme par un circuit intégré
FR2747488A1 (fr) Dispositif d'authentification d'un fichier de donnees
US6357009B1 (en) Secure enablement of a processing entity

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB IT LU NL SE