WO2021038769A1 - 通信装置、メモリモジュール、及びプログラム - Google Patents

通信装置、メモリモジュール、及びプログラム Download PDF

Info

Publication number
WO2021038769A1
WO2021038769A1 PCT/JP2019/033778 JP2019033778W WO2021038769A1 WO 2021038769 A1 WO2021038769 A1 WO 2021038769A1 JP 2019033778 W JP2019033778 W JP 2019033778W WO 2021038769 A1 WO2021038769 A1 WO 2021038769A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
seed value
address
value
receiving side
Prior art date
Application number
PCT/JP2019/033778
Other languages
English (en)
French (fr)
Inventor
中原 茂
彰 藪
梶谷 一彦
Original Assignee
ウルトラメモリ株式会社
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
Application filed by ウルトラメモリ株式会社 filed Critical ウルトラメモリ株式会社
Priority to PCT/JP2019/033778 priority Critical patent/WO2021038769A1/ja
Publication of WO2021038769A1 publication Critical patent/WO2021038769A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory

Definitions

  • the present invention relates to a communication device, a memory module, and a program.
  • a volatile memory such as DRAM (Dynamic Random Access Memory) has been known as a storage device.
  • the DRAM can hold data transmitted from an arithmetic unit such as an MPU (Micro Processing Unit).
  • the DRAM receives, for example, an address and a command from an arithmetic unit. Based on the received address (memory address) and the command, the DRAM accesses the corresponding address and executes the operation indicated by the command.
  • the DRAM further receives the actual data from the arithmetic unit, for example, accesses the position indicated by the address, and holds the actual data based on the store instruction (write instruction) indicated by the command.
  • Patent Document 1 the processing module generates an encrypted memory address.
  • the processing module sends the generated memory address to the memory module.
  • the memory module accesses the decrypted address.
  • communication between the processing module and the memory module can be secured.
  • Patent Document 1 since the memory access path is subjected to encryption and decryption processing, the access latency becomes long. Therefore, Patent Document 1 has a problem that it is not suitable for high-speed operation of the processing module and the memory module. Therefore, it is preferable to establish secure communication in order to conceal the address while operating the arithmetic unit and the memory module at high speed. Further, it is also preferable if secure communication can be established while operating at high speed not only in the communication between the arithmetic unit and the memory module but also in a general device.
  • An object of the present invention is to provide a communication device, a memory module, and a program capable of establishing secure communication in order to conceal an address while operating the device at high speed.
  • the present invention is a communication device that transmits and receives at least an encoded address, and includes a host unit that transmits the encoded address and a memory unit that receives the encoded address from the host unit.
  • the host unit includes a transmission side seed value generation unit that generates a predetermined seed value as a transmission side seed value, and a coding unit that encodes the address using the transmission side seed value.
  • the memory unit includes a receiving-side seed value generating unit that generates the same seed value as the transmitting-side seed value as a receiving-side seed value, a decoding unit that decodes the address encoded using the receiving-side seed value, and a decoding unit.
  • the sender seed value generator executes a one-way function operation from an arbitrary value, a sender secret key, and a public key, which is a set of an arbitrary value and an arbitrary prime number, to transmit.
  • the sender seed value is calculated based on the sender intermediate value calculation unit that calculates the side intermediate value and the receiver intermediate value that is the calculation result of the one-way function executed by the receiver seed value generation unit.
  • the receiving side seed value generating unit includes a transmitting side seed value calculating unit, and the receiving side seed value generating unit executes an operation of a one-way function from the receiving side private key and the public key, which are arbitrary values, to perform the operation of the receiving side.
  • the transmission side seed value calculation unit and the transmission side intermediate value calculation unit may be configured by separate arithmetic circuits. Further, the transmission side seed value calculation unit and the transmission side intermediate value calculation unit may be configured by sharing the same arithmetic circuit. Similarly, the receiving side seed value calculation unit and the receiving side intermediate value calculation unit may be configured by separate arithmetic circuits. Further, the receiving side seed value calculation unit and the receiving side intermediate value calculation unit may be configured by sharing the same arithmetic circuit.
  • the present invention is a communication device that transmits / receives at least an encoded address, is a host unit that transmits the encoded address, and uses a transmission side seed value that is a predetermined seed value.
  • a host unit including an encoding unit that encodes an address and a memory unit that receives the address encoded from the host unit using a receiving-side seed value that is the same seed value as the transmitting-side seed value.
  • the present invention relates to a communication device including a memory unit including a decoding unit that decodes the coded address.
  • the memory unit further includes a receiving side seed value reading key storage unit for reading the receiving side seed value and a receiving side seed value reading unit, and the host unit further includes the receiving side seed value reading key. It is preferable to further include a transmitting side seed value writing control unit for using the receiving side seed value acquired in the same manner as the same seed value.
  • the host unit further includes a transmission side seed value generation unit that generates a predetermined seed value as a transmission side seed value, and the memory unit generates the same seed value as the transmission side seed value as a reception side seed value. It is preferable to further include a receiving-side seed value generating unit.
  • the coding unit is a code that executes coding of the address by using a transmission side random number generation unit that generates a random number based on the transmission side seed value and a random number generated by the transmission side random number generation unit.
  • the decoding unit includes a conversion execution unit, and the decoding unit is generated by a reception-side random number generation unit that generates random numbers in synchronization with the transmission-side random number generation unit based on the reception-side seed value, and a reception-side random number generation unit. It is preferable to include a decoding execution unit that executes decoding of the address encoded by using the random numbers.
  • the encoding unit further includes a transmitting side bit swap unit that changes the bit position of the random number generated based on the transmitting side seed value, and the decoding unit is generated based on the receiving side seed value.
  • a receiving side bit swap unit that changes the bit position of the random number in the same manner as the transmitting side bit swap unit is further provided, and the coding execution unit uses a random number having a bit position changed by the transmitting side bit swap unit. It is preferable that the encoding of the address is executed, and the decoding execution unit executes decoding of the address using a random number having a bit position changed by the receiving side bit swap unit.
  • the coding execution unit bit-inverts the address based on the random number generated by the transmission side random number generation unit, and the decoding execution unit is based on the random number generated by the reception side random number generation unit. Therefore, it is preferable to bit-invert the encoded address.
  • the host unit includes a plurality of coding units having different types of transmission-side random number generation units, a transmission-side selection unit that selects one of the coding units among the plurality of coding units, and a transmission-side selection unit.
  • the memory unit is the same as a plurality of decoding units each having a different type of receiving-side random number generating unit, and the coding unit selected by the transmitting-side selecting unit among the plurality of decoding units.
  • a receiving side selection unit for selecting the type of decoding unit may be further provided.
  • the host unit may include a plurality of combinations of bit inversion devices that perform bit inversion of the random number generation unit and the address generation unit, instead of providing a plurality of coding units and their selection functions. By selecting the combination of the transmission side selection units, it is possible to further complicate the coding and decoding functions in order to improve the confidentiality. Further, the memory unit may include a plurality of combinations of the decoding execution unit and the bit inversion device.
  • the transmitting side selection unit changes the encoding unit according to the issuing timing of the refresh instruction
  • the receiving side selecting unit changes the decoding unit according to the issuing timing of the refresh instruction
  • the present invention is a memory module that receives an address encoded using a seed value on the transmitting side from a host unit and decodes the encoded address, and is the same as the seed value used for encoding.
  • the present invention relates to a memory module including a decoding unit that decodes the address encoded by using the receiving side seed value which is a seed value.
  • the present invention is a communication device that transmits and receives at least an encoded address, and includes a transmitting unit that transmits the encoded address and a receiving unit that receives the encoded address from the transmitting unit.
  • the transmitting unit includes a transmitting side seed value generating unit that generates a predetermined seed value as a transmitting side seed value, and a coding unit that encodes the address using the transmitting side seed value.
  • the receiving unit generates a receiving-side seed value generating unit that generates the same seed value as the transmitting-side seed value as a receiving-side seed value, and a decoding unit that decodes the address encoded using the receiving-side seed value.
  • the sender seed value generator executes a one-way function operation from a sender private key which is an arbitrary value and a public key which is a set of an arbitrary value and an arbitrary prime number. Based on the sender intermediate value calculation unit that calculates the sender intermediate value and the receiver intermediate value that is the calculation result of the one-way function executed by the receiver seed value generator, the sender seed value is calculated.
  • the transmitting side seed value calculating unit for calculating is provided, and the receiving side seed value generating unit executes an operation of a one-way function from the receiving side private key and the public key, which are arbitrary values, to perform the calculation.
  • a receiving-side intermediate value calculation unit that calculates a receiving-side intermediate value
  • a receiving-side seed value calculating unit that calculates a receiving-side seed value based on the transmitting-side intermediate value calculated by the transmitting-side intermediate value calculating unit, With respect to a communication device comprising.
  • the present invention is a program that causes a computer to function as a communication device that transmits and receives at least a coded address, and is a host unit that transmits the coded address to the computer and has a predetermined seed value.
  • a host unit including a coding unit that encodes the address using the transmission side seed value, and a memory unit that receives the coded address from the host unit, which are the same as the transmission side seed value.
  • the present invention relates to a program that functions as a memory unit including a decoding unit that decodes the address encoded by using a seed value on the receiving side, which is a seed value.
  • the present invention it is possible to provide a communication device, a memory module, and a program capable of establishing secure communication in order to conceal an address while operating the device at high speed.
  • the communication device 1, the memory module, and the program according to each embodiment of the present invention will be described with reference to FIGS. 1 to 15. First, an outline of the communication device 1 according to each embodiment will be described.
  • the communication device 1 is, for example, a physical server or a computer.
  • the communication device 1 includes an arithmetic unit (not shown) and a memory module (not shown).
  • the communication device 1 executes various processes by communicating between the arithmetic unit and the memory module.
  • the communication device 1 communicates, for example, from the arithmetic unit with the access destination address (memory address), a command indicating an operation for the address, and storage data to be stored in the memory module toward the memory module. ..
  • the communication device 1 according to each of the following embodiments transmits and receives at least an encoded address. As a result, the communication device 1 realizes secure communication in which the address transmitted from the arithmetic unit is concealed.
  • the host unit 10 will be described as an example of a device including an arithmetic unit.
  • the memory unit 20 will be described as an example of a device including a memory module.
  • the communication device 1 includes a host unit 10 and a memory unit 20.
  • the host unit 10 is, for example, an arithmetic unit such as an MPU.
  • the host unit 10 transmits the encoded address.
  • the host unit 10 includes a data processing unit 101, an address generation unit 11, a transmission side seed value storage unit 12, a transmission side seed value acquisition unit 13, and an encoding unit 14.
  • the data processing unit 101 is configured to be capable of data communication with the memory unit 20.
  • the data processing unit 101 outputs, for example, actual data which is actual data stored in the memory unit 20. Further, the data processing unit 101 acquires, for example, the actual data stored in the memory unit 20.
  • the address generation unit 11 generates an access destination address. In addition, the address generation unit 11 generates a command indicating an operation for the access destination address. The address generation unit 11 generates commands such as a store instruction (write instruction) and a load instruction (read instruction) for the access destination address, for example.
  • the address generation unit 11 When the address generation unit 11 generates a store instruction (write instruction), the data processing unit 101 transmits actual data to the memory array 25 of the memory unit 20 via the data bus 40 of the host unit 10. Then, the data processing unit 101 writes the actual data to the memory address of the memory array 25 shown by the access processing unit 24 described later.
  • the address generation unit 11 When the address generation unit 11 generates a load instruction (read instruction), the data of the memory array 25 read from the memory address indicated by the access processing unit 24 is sent to the data processing unit 101 via the data bus 40. .. Unlike a general memory, the address generation unit 11 also executes various controls necessary for coding, such as the timing of random number generation on the transmitting side, the acquisition of seed values, and the timing of coding execution.
  • the transmission side seed value storage unit 12 is, for example, a volatile storage element such as a flip-flop, a latch, or an electric fuse, or a non-volatile storage element.
  • the transmission side seed value storage unit 12 stores the seed value used for coding as the transmission side seed value.
  • the transmitting side seed value storage unit 12 stores, for example, a predetermined numerical value as a transmitting side seed value.
  • the sender seed value acquisition unit 13 acquires the sender seed value stored in the sender seed value storage unit 12.
  • the transmission side seed value acquisition unit 13 acquires the transmission side seed value, for example, at the time of the refresh operation of the memory unit 20, at a predetermined period determined in advance, or at a predetermined timing explicitly specified by the program.
  • the coding unit 14 is an address scrambler.
  • the coding unit 14 encodes the address using the transmitting side seed value which is a predetermined seed value.
  • the coding unit 14 transmits the coded address to the memory unit 20 via the address bus 30.
  • the coding unit 14 acquires, for example, the address generated by the address generation unit 11. Further, the coding unit 14 acquires the transmission side seed value from the transmission side seed value acquisition unit 13.
  • the coding unit 14 includes a transmission-side random number generation unit 141 and a coding execution unit 142.
  • the transmission side random number generation unit 141 is, for example, a linear feedback shift register (LFSR, linear feedback shift register).
  • LFSR linear feedback shift register
  • the transmission side random number generation unit 141 generates a random number based on the transmission side seed value. Further, the transmission side random number generation unit 141 generates a random number at a predetermined timing.
  • the transmission side random number generation unit 141 generates random numbers at predetermined timings using, for example, a clock signal.
  • the transmission side random number generation unit 141 is a 31-bit Galois LFSR as shown in FIG. 2, and is represented by a generation polynomial of x ⁇ 31 + x ⁇ 28 + 1.
  • the transmission side random number generation unit 141 may be configured by a non-linear feedback shift register or a combination thereof for the purpose of improving security.
  • the coding execution unit 142 acquires the address generated by the address generation unit 11. Further, the coding execution unit 142 acquires the random numbers generated by the transmission side random number generation unit 141. The coding execution unit 142 executes the coding of the acquired address by using the acquired random number.
  • the coding execution unit 142 is, for example, a bit inversion device and is represented by an XOR circuit. In this embodiment, the command generated by the address generation unit 11 is also encoded. It is preferable that the coding execution unit 142 executes coding after the power is turned on and after the power is stabilized. Further, it is preferable that the coding execution unit 142 executes the coding after the seed value is taken into the transmission side random number generation unit 141. When the timing of executing the coding is controlled due to other system reasons, the address generation unit 11 also executes the control of the coding timing.
  • the memory unit 20 is a so-called memory module.
  • the memory unit 20 is, for example, a DRAM.
  • the memory unit 20 receives the coded address from the host unit 10.
  • the memory unit 20 includes a reception-side seed value storage unit 21, a reception-side seed value acquisition unit 22, a decoding unit 23, an access processing unit 24, and a memory array 25.
  • the receiving side seed value storage unit 21 is, for example, a volatile storage element such as a flip-flop, a latch, or an electric fuse, or a non-volatile storage element.
  • the receiving side seed value storage unit 21 stores the seed value used for decoding as the receiving side seed value.
  • the receiving side seed value storage unit 21 stores the receiving side seed value which is the same value as the transmitting side seed value.
  • the transmitting side seed value storage unit 12 may store the transmitting side seed value which is the same value as the receiving side seed value stored in the receiving side seed value storage unit 21.
  • Specific methods for making the transmitting side seed value and the receiving side seed value the same while avoiding eavesdropping by a third party are the second embodiment, the fifth embodiment, the sixth embodiment, the eighth embodiment, and the third embodiment. 9 is shown in the embodiment.
  • the receiving side seed value acquisition unit 22 acquires the receiving side seed value stored in the receiving side seed value storage unit 21.
  • the receiving side seed value acquisition unit 22 acquires the receiving side seed value, for example, at the time of the refresh operation of the memory array 25, at regular intervals determined in advance, or at a predetermined timing explicitly specified by the program.
  • the receiving side seed value acquisition unit 22 acquires the receiving side seed value at the acquisition timing on the receiving side, which is determined by the command sent from the host unit 10. For example, when the acquisition timing is the refresh operation, the receiving side seed value acquisition unit 22 acquires the seed value based on the detection of the refresh command in the access processing unit 24.
  • the decryption unit 23 is, for example, an address descrambler.
  • the decoding unit 23 decodes the encoded address sent from the host unit 10 via the address bus 30.
  • the decoding unit 23 decodes the coded address using the receiving side seed value. Specifically, the decoding unit 23 decodes the coded address using the receiving side seed value which is the same seed value as the transmitting side seed value.
  • the decoding unit 23 includes a receiving-side random number generation unit 231 and a decoding execution unit 232.
  • the receiving-side random number generating unit 231 is, for example, a linear feedback shift register having the same configuration as the transmitting-side random number generating unit 141.
  • the receiving side random number generation unit 231 generates a random number in synchronization with the transmitting side random number generation unit 141 based on the receiving side seed value.
  • the receiving-side random number generation unit 231 generates random numbers in synchronization with, for example, the transmitting-side random number generation unit 141 by a clock signal. That is, the receiving-side random number generation unit 231 synchronizes with the transmitting-side random number generation unit 141 to generate random numbers of the same value.
  • the transmission side random number generation unit 141 is a specific command sent from the coding execution unit 142 to the decoding execution unit 232, for example, a refresh command. Or a specially prepared synchronization command is used as a trigger.
  • the transmission side random number generation unit 141 may start random number generation after a certain cycle has elapsed (for example, after 30 cycles) after the command is issued.
  • the receiving side random number generation unit 231 may start random number generation after a certain cycle has elapsed (for example, after 30 cycles) after receiving the command. It is preferable that the address generation unit 11 does not issue another command to the memory unit 20 during the period from the command issuance or reception to the random number generation.
  • the decoding execution unit 232 decodes the coded address using the random numbers generated by the receiving side random number generation unit 231. Specifically, the decoding execution unit 232 receives the coded address from the coding execution unit 142. Further, the decoding execution unit 232 acquires a random number generated from the receiving side random number generation unit 231. That is, the decoding execution unit 232 acquires the same random number as the encoded random number from the receiving side random number generation unit 231. The decoding execution unit 232 decodes the encoded address by using the acquired random number.
  • the decoding execution unit 232 is, for example, a bit inversion device and is represented by an XOR circuit. In this embodiment, the decoding execution unit 232 also decodes the command encoded by the coding execution unit 142.
  • the decoding execution unit 232 executes the decoding at the timing after the power supply is stabilized after the power supply of the memory unit 20 is turned on as the decoding timing.
  • the decoding execution unit 232 executes decoding after fetching the seed value into the receiving side random number generation unit 231. Further, when the timing control becomes necessary for other system reasons, the access processing unit 24 controls the decoding timing.
  • the access processing unit 24 accesses the decrypted address. Further, the access processing unit 24 processes the instruction indicated by the command. The access processing unit 24 accesses the decrypted address based on, for example, a store instruction (write instruction) and stores the actual data transmitted from the host side. In addition, the access processing unit 24 executes various controls necessary for decoding, such as the timing of random number generation on the receiving side, the acquisition of seed values, and the timing of decoding execution.
  • the memory array 25 is a storage area.
  • the memory array 25 stores storage data.
  • the address generation unit 11 generates an access destination address and a command.
  • the address generation unit 11 sends the generated address and the command to the coding execution unit 142.
  • the transmission side seed value acquisition unit 13 acquires the transmission side seed value from the transmission side seed value storage unit 12 and sends it to the transmission side random number generation unit 141.
  • the transmission side random number generation unit 141 takes in the seed value at a timing controlled by the address generation unit 11.
  • the receiving side seed value acquisition unit 22 acquires the receiving side seed value from the receiving side seed value storage unit 21 and sends it to the receiving side random number generation unit 231.
  • the receiving-side random number generation unit 231 takes in the seed value at a timing controlled by the access processing unit 24.
  • the transmission side random number generation unit 141 generates a random number at a predetermined timing with reference to the transmission side seed value.
  • the transmission side random number generation unit 141 sends the generated random number to the coding execution unit 142.
  • the transmission side random number generation unit 141 generates a random number at a timing controlled by the address generation unit 11.
  • the coding execution unit 142 encodes the generated address and the command with the generated random number.
  • the coding execution unit 142 sends the coded address and the command to the memory unit 20.
  • the coding execution unit 142 executes coding at a timing controlled by the address generation unit 11.
  • the receiving-side random number generation unit 231 generates random numbers in synchronization with the transmitting-side random number generation unit 141 by the method described above with reference to the receiving-side seed value.
  • the receiving side random number generation unit 231 sends the generated random number to the decoding execution unit 232.
  • the receiving side random number generation unit 231 generates a random number at a timing controlled by the access processing unit 24.
  • the decoding execution unit 232 decodes the encoded address and command using the random numbers generated by the receiving side random number generation unit 231.
  • the access processing unit 24 accesses the decrypted address and executes processing on the memory array 25 based on the command.
  • the decoding execution unit 232 executes coding at a timing controlled by the access processing unit 24.
  • Each configuration included in the communication device 1 can be realized by hardware, software, or a combination thereof.
  • what is realized by software means that it is realized by a computer reading and executing a program.
  • Non-temporary computer-readable media include various types of tangible storage media. Examples of non-temporary computer-readable media include magnetic recording media (eg, flexible disks, magnetic tapes, hard disk drives), magneto-optical recording media (eg, magneto-optical disks), CD-ROMs (Read Only Memory), CD- Includes R, CD-R / W, semiconductor memory (for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable PROM), flash ROM, SSD (Solid State Drive), RAM (random access memory)).
  • the program may also be supplied to the computer by various types of temporary computer readable media. Examples of temporary computer-readable media include electrical, optical, and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the computer via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.
  • a communication device 1 that transmits and receives at least an encoded address, and a host unit 10 that transmits an encoded address, and the address is coded using a transmission-side seed value that is a predetermined seed value.
  • the host unit 10 including the encoding unit 14 to be encoded and the memory unit 20 for receiving the encoded address from the host unit 10 are coded using the receiving side seed value which is the same seed value as the transmitting side seed value.
  • a memory unit 20 including a decoding unit 23 that decodes the converted address is provided.
  • a decoding unit 23 for decoding an address encoded using a certain receiving side seed value is provided.
  • the coding execution unit 142 bit-inverts the address based on the random number generated by the transmission side random number generation unit 141, and the decoding execution unit 232 is based on the random number generated by the reception side random number generation unit 231.
  • the encoded address is bit-inverted. Since encoding and decoding can be performed only by bit inversion, the address can be encrypted by another means in the host unit 10 and operated at a higher speed than in the case where the memory unit 20 decodes the address.
  • the communication device 1, the memory module, and the program according to the second embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the second embodiment are different from the first embodiment in that the host unit 10 includes a transmission side coil 15 for transmitting a seed value.
  • the memory unit 20 receives the transmission side seed value transmitted from the host unit 10 instead of the reception side seed value storage unit 21. It differs from the first embodiment in that it includes a side coil 26.
  • the receiving side seed value acquisition unit 22 acquires the transmitting side seed value transmitted from the host unit 10 instead of the receiving side seed value. It differs from the first embodiment in that.
  • the transmission side coil 15 transmits the transmission side seed value acquired by the transmission side seed value acquisition unit 13 to the memory side.
  • the transmitting coil 15 transmits a transmitting seed value using magnetic field communication.
  • the receiving coil 26 receives the transmitting seed value transmitted from the transmitting coil 15. Specifically, the receiving side coil 26 receives the transmitting side seed value transmitted from the transmitting side coil 15 by using magnetic field communication.
  • the communication device 1, the memory module, and the program according to the present embodiment have the following effects.
  • the transmitting coil 15 transmits the transmitting seed value using magnetic field communication
  • the receiving coil 26 receives the transmitting seed value transmitted from the transmitting coil 15 using magnetic field communication. I did.
  • the transmission side seed value can be transmitted to the memory unit 20, so that the transmission side seed value of the host unit 10 can be shared with the memory unit 20. Since it is said that eavesdropping of magnetic field communication between adjacent coils is relatively difficult, secure communication can be realized even if the memory unit 20 does not have a seed value on the receiving side. For example, it becomes easy to use the host unit 10 in combination with another memory unit 20.
  • the communication device 1, the memory module, and the program according to the third embodiment of the present invention are the first and second embodiments in that the host unit 10 includes a plurality of coding units 14 each having a different type of transmission side random number generation unit 141. Different from the form. Further, the communication device 1, the memory module, and the program according to the third embodiment further include a transmission side selection unit 16 in which the host unit 10 selects one coding unit 14 among the plurality of coding units 14.
  • the communication device 1, the memory module, and the program according to the third embodiment are the first and the second in that the memory unit 20 includes a plurality of decoding units 23 each having a different type of receiving side random number generating unit 231. Different from the embodiment. Further, the communication device 1, the memory module, and the program according to the third embodiment select the decoding unit 23 of the same type as the coding unit 14 selected by the transmitting side selection unit 16 from among the plurality of decoding units 23. It is different from the first and second embodiments in that the receiving side selection unit 27 is further provided.
  • Each of the plurality of coding units 14 has, for example, a sender random number generation unit 141 having a different generation polynomial.
  • Each of the plurality of decoding units 23 has, for example, a receiving-side random number generation unit 231 having a different generation polynomial.
  • the transmitting side selection unit 16 selects one coding unit 14 to be used for coding.
  • the transmitting side selection unit 16 selects a new coding unit 14 in order to change the coding unit 14 in accordance with the issuance timing of the refresh instruction of the memory unit 20, for example.
  • the transmitting side selection unit 16 may use a self-refresh instruction, a power-down instruction, a power-down return instruction, or a dedicated additional instruction not provided in the conventional DRAM as the selection timing of the coding unit 14. It can be the issue timing.
  • Refreshing is a DRAM-specific operation. In refresh, all memory addresses are accessed evenly at regular intervals so that the stored information in the memory array is not lost. As a result, the charge of the DRAM memory cell is replenished.
  • the receiving side selection unit 27 selects one decoding unit 23 to be used for decoding.
  • the receiving side selection unit 27 selects the decoding unit 23 including the receiving side random number generation unit 231 having the same generation polynomial as the generation polynomial of the transmission side random number generation unit 141 of the coding unit 14 selected by the transmission side selection unit 16. To do.
  • the receiving side selection unit 27 also uses the same command as the command for determining the change timing of the coding unit 14 in the transmitting side selection unit 16 in the receiving side selection unit 27. As a result, the receiving side selection unit 27 can synchronize the coding unit 14 and the decoding unit 23 at the time of selection.
  • the receiving side selection unit 27 receives, for example, information for identifying the transmitting side random number generation unit 141 of the selected coding unit 14 from the transmitting side selection unit 16 and determines the decoding unit 23 to be selected.
  • the access processing unit 24 may execute this processing. More specifically, the access processing unit 24 assigns the same number to the coding unit 14 and the decoding unit 23 having the same generation polynomial in advance. The access processing unit 24 inserts the assigned number into the command used for the change timing of the coding unit 14 and the decoding unit 23. As a result, the receiving side selection unit 27 can specify the decoding unit 23 having the same generation polynomial as the coding unit 14 used in the transmitting side selection unit 16.
  • the access processing unit 24 determines the order of the pair of the coding unit 14 to be selected and the decoding unit 23 having the same generation polynomial as the coding unit between the transmitting side selection unit 16 and the receiving side selection unit 27. Keep it.
  • the receiving side selection unit 27 changes the coding unit 14 and the decoding unit 23 according to the order each time the command for determining the change timing is issued, so that the coding unit 14 and the decoding unit having the same polynomial are used. 23 may be selected.
  • the host unit 10 is a transmission side selection unit that selects one coding unit 14 from a plurality of coding units 14 having different types of transmission side random number generation units 141 and a plurality of coding units 14.
  • the memory unit 20 further includes 16 and a plurality of decoding units 23 having different types of receiving-side random number generating units 231 and a code selected by the transmitting-side selecting unit 16 among the plurality of decoding units 23. It further includes a receiving side selection unit 27 that selects the decoding unit 23 of the same type as the conversion unit 14.
  • the coding unit 14 and the decoding unit 23 used for coding and decoding are changed, so that the security of communication can be improved. Further, the selection of the coding unit 14 and the decoding unit 23 starts execution in accordance with the issuance of the refresh instruction and is completed during the refresh operation period. As a result, the coding and decoding of the host unit 10 and the memory unit 20 are synchronized, and in addition, the security function can be improved without loss of performance as compared with the conventional DRAM.
  • the communication device 1, the memory module, and the program according to the fourth embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the fourth embodiment are different from the first to third embodiments in that the coding unit 14 has the transmitting side bit swap unit 143. Further, the communication device 1, the memory module, and the program according to the fourth embodiment are different from the first to third embodiments in that the decoding unit 23 further includes the receiving side bit swap unit 233.
  • the coding unit 14 has a transmitting side bit swap unit 143 that changes the bit position of the random number generated based on the transmitting side seed value.
  • the function of the transmission side bit swap unit 143 will be described with reference to FIG.
  • the first line of FIG. 10 shows the input bit position of the transmission side bit swap unit 143.
  • the second to fifth lines represent the output bit position of the transmission side bit swap unit 143.
  • the output of the transmission side bit swap unit 143 is 20 bits, and there are a total of 4 patterns of combinations of the input bit position and the output bit position.
  • the input to the 27-bit position of the transmitting side bit swap unit 143 is output to the 9-bit position of the transmitting side bit swap unit 143.
  • the coding execution unit 142 executes the coding of the address by using the random number having the bit position changed by the transmission side bit swap unit 143.
  • the decoding unit 23 has a receiving side bit swap unit 233 that changes the bit position of the random number generated based on the receiving side seed value in the same manner as the transmitting side bit swap unit 143.
  • the function of the receiving side bit swap unit 233 is the same as that of the transmitting side bit swap unit 143.
  • the transmitting bit swap section 143 and the receiving bit swap section 233 are synchronized so as to use the same combination pattern of the input bit position and the output bit position.
  • the decoding execution unit 232 decodes the address using a random number having a bit position changed by the receiving side bit swap unit 233.
  • the method of selecting the combination pattern and the determination of the change timing of the input bit position and the output bit position of the transmitting side bit swap unit 143 and the input bit position and the output bit position of the receiving side bit swap unit 233 are determined in the third embodiment. This is executed in the same manner as the selection method and timing change method of the plurality of coding units 14 and decoding units 23. That is, the combination pattern of the input bit position and the output bit position is changed according to the timing of issuing or receiving some command, for example, the refresh command.
  • the pattern to be used is embedded in the refresh command or switched each time the refresh command is issued according to a predetermined order of patterns to be used.
  • the host unit 10 includes an encoding unit 14 having a transmitting side bit swap unit 143 that changes the input bit position and the output bit position, and the memory unit 20 receives the input bit position and the output bit position that are changed.
  • a decoding unit 23 having a side bit swap unit 233 is provided.
  • the bit position of the random number used for coding and decoding changes without preparing multiple decoding units and decoding units, so communication security is improved by simply adding a relatively simple circuit. can do.
  • the selection of the coding unit 14 and the decoding unit 23 starts execution in accordance with the issuance of the refresh instruction, and is completed during the refresh operation period.
  • the coding and decoding of the host unit 10 and the memory unit 20 are synchronized with each other, and in addition, the security function can be improved without loss of performance as compared with the conventional DRAM.
  • the communication device 1, the memory module, and the program according to the fifth embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the fifth embodiment are different from the first to fourth embodiments in that they include a transmitting side secret key generation unit 18 and a public key output unit 17.
  • the host unit 10 has a transmission side seed value generation unit 19 instead of the transmission side seed value storage unit 12, from the first. It is different from the fourth embodiment.
  • the memory unit 20 has the receiving side seed value generating unit 29 instead of the receiving side seed value storing unit 21 from the first. It is different from the fourth embodiment. Further, the communication device 1, the memory module, and the program according to the fifth embodiment are different from the first to third embodiments in that the memory unit 20 includes the receiving side secret key generation unit 28. Further, FIG. 12 shows a flowchart for generating a seed value according to the fifth embodiment.
  • the transmitting side secret key generation unit 18 outputs an arbitrary value as the transmitting side secret key.
  • the transmitting side secret key generation unit 18 generates a transmitting side secret key by using the transmitting side random number generator 181.
  • the transmitting side secret key generation unit 18 generates the value "Y" as the transmitting side secret key.
  • the transmitting side random number generator 181 is not a pseudo-random number generator using the linear feedback shift register LFSR used in the transmitting side random number generator 141 and the receiving side random number generator 231 but a true random number generator using a physical phenomenon. Is desirable.
  • FIG. 11 is an example of a latch circuit in a so-called floating state in which the input signal is not connected to a fixed potential level.
  • the input signal when the reset signal is transitioned from the HIGH potential to the LOW potential, the input signal is not fixed. Therefore, there are variations in the manufacture of the epitaxial transistor elements and NMOS transistor elements that make up the latch circuit, and the physical characteristics of this latch circuit.
  • the output signal has a HIGH potential or a LOW potential due to the influence of noise that wraps around from other circuits or metal wirings that are adjacent to each other via the parasitic element.
  • This output signal is not definite, such as the physical position of the semiconductor chip on which this circuit is mounted in the semiconductor wafer, the physical position of this circuit in the semiconductor chip, the timing of transitioning the reset signal from the HIGH potential to the LOW potential, etc.
  • the transmitting side random number generator 181 has this latch circuit as many as the number of bits of the secret key “Y”. Further, in the fifth embodiment, the output of the differentiating circuit that has detected the issuance of the refresh command is used as the reset signal of the latch circuit.
  • the public key output unit 17 outputs a set of an arbitrary value and an arbitrary prime number as a public key.
  • the public key output unit 17 sends the public key to the memory unit 20.
  • the public key output unit 17 transmits, for example, via a data pin or by embedding a public key in an address to the memory unit 20.
  • the public key output unit 17 transmits an arbitrary value “g” and an arbitrary prime number value “p” to the memory unit 20.
  • the function of the public key output unit 17 can be replaced by a function built into the data processing unit 101, and the public key output unit 17 can be deleted.
  • the sender seed value generation unit 19 generates a predetermined seed value as the sender seed value.
  • the transmission side seed value generation unit 19 includes a transmission side intermediate value calculation unit 191 and a transmission side seed value calculation unit 192.
  • the transmission side intermediate value calculation unit 191 and the transmission side seed value calculation unit 192 have a function for calculating a one-way function.
  • the sender intermediate value calculation unit 191 executes a one-way function operation from the sender secret key which is an arbitrary value and the public key which is a set of an arbitrary value and an arbitrary prime number, and executes the operation of the one-way function to execute the sender intermediate value. Is calculated.
  • the transmission side intermediate value calculation unit 191 sends the transmission side intermediate value B to the memory unit 20.
  • the modulo operation is used as the one-way function for realizing the secret communication, but another one-way function may be substituted.
  • the transmitting side seed value calculation unit 192 performs further modulo operation based on the receiving side intermediate value which is the operation result of the modular exponentiation operation executed in the receiving side seed value generating unit 29 described later, and performs the transmitting side seed value. Is calculated. The operation of the transmission side seed value calculation unit 192 will be described later.
  • the remainder calculation circuit to be used by the transmission side seed value calculation unit 192 can be shared with the remainder calculation circuit to be used by the transmission side intermediate value calculation unit 191.
  • the receiving side secret key generation unit 28 outputs an arbitrary value as the receiving side secret key.
  • the receiving side secret key generation unit 28 generates the receiving side secret key by using, for example, the receiving side random number generator 281.
  • the receiving side secret key generation unit 28 generates, for example, the value "X" as the receiving side secret key.
  • An example of the receiving-side random number generator 281 is as described in the transmitting-side random number generator 181 and FIG.
  • the receiving side seed value generation unit 29 generates the same seed value as the transmitting side seed value as the receiving side seed value.
  • the receiving side seed value generating unit 29 includes a receiving side intermediate value calculating unit 291 and a receiving side seed value calculating unit 292.
  • the receiving side intermediate value calculation unit 291 and the receiving side seed value calculation unit 292 have a function for calculating a one-way function.
  • the receiving side intermediate value calculation unit 291 calculates the receiving side intermediate value by executing a modulo operation from the receiving side private key which is an arbitrary value and the public key which is a set of an arbitrary value and an arbitrary prime number. ..
  • the receiving side intermediate value calculation unit 291 sends the receiving side intermediate value A to the host unit 10.
  • the modulo operation as a one-way function for realizing the secret communication is used, but another one-way function may be substituted.
  • the receiving side seed value calculation unit 292 calculates the receiving side seed value based on the transmitting side intermediate value calculated by the transmitting side intermediate value calculation unit 191. The operation of the receiving side seed value calculation unit 292 will be described later.
  • the remainder calculation circuit to be used by the receiving side seed value calculation unit 292 can be shared with the remainder calculation circuit to be used by the receiving side intermediate value calculation unit 291.
  • the address generation unit 11 uses the transmission side secret key generation unit 18 and the built-in transmission side random number generator 181 at the same time as the refresh command (REF) issuance timing to generate the transmission side secret key "Y". .. Further, the access processing unit 24 that has received the REF command via the decoding unit 23 generates the receiving side secret key "X" by using the receiving side secret key generation unit 28 and the built-in receiving side random number generator 281. .. After issuing the REF, the address generation unit 11 issues a public key sending command (sendP).
  • sendP public key sending command
  • the public key output unit 17 controlled by the address generation unit 11 transmits the public keys "g” and "p” to the transmission side seed value generation unit 19.
  • the public key output unit 17 transmits the public keys "g” and "p” to the receiving side seed value generating unit 29 via the transmitting side transmitting data selection unit 109 and the data bus 40.
  • the access processing unit 24 that has received the sendP command controls the receiving side seed value generation unit 29 to receive the public keys "g” and "p". If the public keys "g” and "p" have already been sent in the previous sequence, the transmission and reception of sendP may be skipped.
  • the transmitting side intermediate value calculation unit 191 that has acquired the public keys “g” and “p” and the generated private key “Y” executes a power remainder operation to calculate the transmitting side intermediate value "B".
  • the address generation unit 11 issues a host-side intermediate value transmission command (sendB), controls the transmission-side intermediate value calculation unit 191 and the transmission-side transmission data selection unit 109, and calculates the transmission-side intermediate value "B". It is sent to the receiving side seed value generation unit 29 via the data bus 40.
  • the receiving side intermediate value calculation unit 291 that has acquired the public keys “g” and “p” and the generated private key “X” executes a power remainder calculation to calculate the receiving side intermediate value "A”.
  • the address generation unit 11 issues a memory-side intermediate value request command (reqA).
  • the access processing unit 24 that has received reqA controls the receiving side intermediate value calculation unit 291 and the receiving side transmission data selection unit 209, and the calculated receiving side intermediate value "A" is seeded on the transmitting side via the data bus 40. It is sent to the value generation unit 19.
  • the transmitting side seed value calculation unit 192 is based on the receiving side intermediate value "A".
  • a ⁇ Y mod p g ⁇ XY mod p Is calculated.
  • the transmission side seed value calculation unit 192 uses the calculated value as the transmission side seed value.
  • the receiving side seed value calculation unit 292 is based on the transmitting side intermediate value "B".
  • B ⁇ X mod P g ⁇ XY mod p Is calculated.
  • the receiving side seed value calculation unit 292 uses the calculated value as the receiving side seed value.
  • sendP, sendB, and reqA are commands dedicated to the present embodiment, which are not found in the conventional DRAM. Instead of providing a dedicated command, these functions write or read to a specific memory address, or a specific register in a register defined by the DRAM standard, such as a mode register (MR) or a multipurpose register (MPR). It can be implemented so that the operation described above is performed when an access occurs to a specific bit of.
  • MR mode register
  • MPR multipurpose register
  • the refresh command (REF) is used as a trigger for generating the private keys "Y" and "X”, but a command other than the REF or a command provided exclusively for this function is used. You may.
  • Modular exponentiation requires a huge amount of operation time and may not be completed during the refresh period.
  • seed value generation may be executed in the background during normal operations such as a store instruction (write instruction) and a load instruction (read instruction).
  • the access processing unit 24 After the seed value generation is completed, the access processing unit 24 starts generating the private keys "Y" and "X" again by using the REF command as a trigger. As a result, deterioration of system performance is suppressed.
  • An example of this circuit is shown in FIG. This circuit is composed of an SR latch, an AND circuit for a differentiating circuit, and an inverter chain.
  • the transmission side secret key generation unit 18 receives a background seed value generation completion notification from the transmission side seed value generation unit 19.
  • the transmitting side secret key generation unit 18 generates a reset signal of the transmitting side random number generator 181 after detecting the issuance or reception of the refresh command immediately after.
  • the receiving side seed value generating unit 29 receives the background seed value generation completion notification from the receiving side seed value generating unit 29.
  • the receiving side seed value generation unit 29 generates a reset signal of the receiving side random number generator 281 after detecting the issuance or reception of the refresh command immediately after. This background seed value generation is described in the sixth embodiment with reference to the time chart of FIG.
  • the host unit 10 includes a transmitting side seed value generating unit 19 that generates a predetermined seed value as a transmitting side seed value, and a coding unit 14 that encodes an address using the transmitting side seed value, and has a memory.
  • the unit 20 includes a receiving-side seed value generating unit 29 that generates the same seed value as the transmitting-side seed value as a receiving-side seed value, and a decoding unit 23 that decodes the address encoded by using the receiving-side seed value.
  • the sender seed value generator 19 executes a one-way function operation from the sender secret key, which is an arbitrary value, and the public key, which is a set of an arbitrary value and an arbitrary prime number, on the sender side.
  • the sender seed value is calculated based on the receiver intermediate value which is the calculation result of the one-way function executed by the sender intermediate value calculation unit 191 for calculating the intermediate value and the receiver seed value generation unit 29.
  • a sender-side seed value calculation unit 192 and a receiver-side seed value generation unit 29 include a receiver-side seed value generation unit 29, which executes a one-way function calculation from a receiver-side private key and a public key, which are arbitrary values, to perform a one-way function calculation. It includes a receiving side intermediate value calculation unit 291 that calculates a value, and a receiving side seed value calculating unit 292 that calculates a receiving side seed value based on the transmitting side intermediate value calculated by the transmitting side intermediate value calculation unit 191. .. As a result, each of the host unit 10 and the memory unit 20 generates the same seed value, so that it is not necessary to exchange seed values between the host unit 10 and the memory unit 20.
  • the communication device 1, the memory module, and the program according to the sixth embodiment of the present invention will be described with reference to FIG. 7.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the sixth embodiment have the transmitting side bit swap unit 143 and the receiving side described in the fourth embodiment with respect to the coding unit 14 and the decoding unit 23 of the fifth embodiment. It differs in that it has a bit swap portion 233.
  • the operation of the communication device 1, the memory module, and the program of the present embodiment will be described with reference to the time chart of the memory section of FIG.
  • the operation of the present embodiment is different in that the combination pattern of the receiving side bit swap unit 233 is changed and the seed value is generated in parallel.
  • an example of generating a seed value in the background in the communication device 1 will be described.
  • the access processing unit 24 changes the combination pattern of the receiving side bit swap unit 233 and generates the private key "X" at the same time.
  • the receiving side seed value acquiring unit 22 acquires the seed value from the receiving side seed value generating unit 29.
  • the receiving side seed value acquisition unit 22 updates the LFSR value of the receiving side random number generation unit 231 to the acquired seed value.
  • the receiving side seed value generation unit 29 acquires the public keys "g" and "p” from the data bus 40.
  • the receiving side seed value generation unit 29 starts the calculation of the intermediate value “A” by using the power remainder operation.
  • the access processing unit 24 When the generation of a new seed value using the updated private key or public key is not completed, for example, when the REF command is input at time T2, the access processing unit 24 combines the receiving side bit swap unit 233. Perform only pattern changes.
  • the receiving side seed value generating unit 29 acquires the transmitting side intermediate value "B" from the data bus 40.
  • the receiving side seed value generation unit 29 acquires "B”
  • the receiving side seed value generation unit 29 starts the calculation of the seed value by using the power remainder operation.
  • the receiving-side seed value generating unit 29 sends a memory unit to the transmitting-side seed value generating unit 19 via the data bus 40 in response to the reception of the reqA command by the decoding unit 23 after the seed value is calculated or during the calculation time T4.
  • the intermediate value "A" is transmitted.
  • the transmitting side seed value generation unit 19 receives "A"
  • the seed value calculation is started.
  • the access processing unit 24 In the process of calculating the seed value in the background, even if the access processing unit 24 receives a normal write command (WR) at time T5, for example, the access processing unit 24 performs the memory data writing operation without any problem.
  • the access processing unit 24 receives the REF command at time T6 after the completion of the seed value calculation in the background, the access processing unit 24 updates the generated seed value and recreates the private key "X", that is, Start new seed value generation in the background.
  • the access processing unit 24 executes the update of the seed value and the generation of a new seed value in parallel with the change of the combination pattern of the receiving side bit swap unit 233.
  • the host unit 10 has a transmission side seed value generation unit 19 that generates a predetermined seed value as a transmission side seed value, and a transmission side bit swap unit 143, and encodes an address using the transmission side seed value.
  • the memory unit 20 includes a conversion unit 14, a receiving side seed value generating unit 29 that generates the same seed value as the transmitting side seed value as a receiving side seed value, and a receiving side bit swap unit 233.
  • a decoding unit 23 that decodes an address encoded using a value is provided, and a transmitting side seed value generating unit 19 includes a transmitting side private key that is an arbitrary value, an arbitrary value, and an arbitrary set of prime numbers.
  • Received which is the calculation result of the modulo operation executed by the transmitting side intermediate value calculation unit 191 and the receiving side seed value generating unit 29, which execute the power remainder operation to calculate the transmitting side intermediate value from a certain public key.
  • a sender seed value calculation unit 192 that calculates a sender seed value based on a side intermediate value is provided, and a receiver seed value generation unit 29 is composed of a receiver private key and a public key that are arbitrary values.
  • the receiving side seed value is calculated based on the receiving side intermediate value calculation unit 291 that executes the power remainder calculation to calculate the receiving side intermediate value and the transmitting side intermediate value calculated by the transmitting side intermediate value calculation unit 191. It includes a receiving side seed value calculation unit 292.
  • the host unit 10 and the memory unit 20 each generate the same seed value, so that the exchange of seed values between the host unit 10 and the memory unit 20 is not required.
  • the function of the transmission side bit swap unit 143 changes the bit position of the random number used for coding and decoding, so that the security can be further improved. Therefore, more secure communication can be established between the host unit 10 and the memory unit 20.
  • the communication device 1, the memory module, and the program according to the seventh embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the seventh embodiment are different from the first to sixth embodiments in that the host unit 10 has a transmission side data coding unit 107 and a transmission side data decoding unit 108. ..
  • the communication device 1, the memory module, and the program according to the seventh embodiment are different from the first to sixth embodiments in that the memory unit 20 includes the receiving side data coding unit 207 and the receiving side data decoding unit 208. ..
  • the transmission side data coding unit 107 of the host unit 10 has the same configuration as the coding unit 14, and acquires the same seed value as the coding unit 14 from the transmission side seed value acquisition unit 13. However, the transmitting side data coding unit 107 receives the input of the coding execution unit 142 contained therein from the data processing unit 101. Further, the transmission side data coding unit 107 transmits the output to the data bus 40.
  • the transmitting side data decoding unit 108 of the host unit 10 has the same configuration as the coding unit 14. The transmitting side data decoding unit 108 acquires the same seed value as the coding unit 14 from the transmitting side seed value acquiring unit 13. However, the transmitting side data decoding unit 108 receives the input of the decoding execution unit 232 that it has inside from the data bus 40. The transmitting side data decoding unit 108 transmits the output to the data processing unit 101.
  • the receiving side data coding unit 207 of the memory unit 20 has the same configuration as the decoding unit 23.
  • the receiving side data coding unit 207 acquires the same seed value as the decoding unit 23 from the receiving side seed value acquiring unit 22. However, the receiving side data coding unit 207 receives the input of the decoding execution unit 232 contained therein from the memory array 25.
  • the receiving side data coding unit 207 transmits to the output file bus 40.
  • the receiving side data decoding unit 208 of the memory unit 20 has the same configuration as the decoding unit 23.
  • the receiving side data decoding unit 208 acquires the same seed value as the decoding unit 23 from the receiving side seed value acquiring unit 22. However, the receiving side data decoding unit 208 receives the input of the decoding execution unit 232 contained therein from the data bus 40. Further, the receiving side data decoding unit 208 transmits the output to the memory array 25.
  • the coding unit 14, the transmitting side data coding unit 107, and the transmitting side data decoding unit 108 are configured to have different transmission side random number generation units 141, but a single transmission side random number generation unit 141. Can be shared.
  • the decoding unit 23, the receiving side data coding unit 207, and the receiving side data decoding unit 208 are configured to have different receiving side random number generating units 231 but share a single receiving side random number generating unit 231. be able to.
  • the host unit 10 includes a coding unit 14, a transmitting side data coding unit 107, and a transmitting side data decoding unit 108, and the memory unit 20 includes a decoding unit 23, a receiving side data coding unit 207, and a receiving side data.
  • a decoding unit 208 is provided.
  • the communication device 1, the memory module, and the program according to the eighth embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the eighth embodiment are different from the first to seventh embodiments in that the memory unit 20 has the receiving side seed value writing control unit 201.
  • the communication device 1, the memory module, and the program according to the eighth embodiment are limited to applying the non-volatile memory to the receiving side seed value storage unit 21 of the memory unit 20, and the writing power supply for writing the non-volatile memory. It differs from the first to seventh embodiments in that it includes 50.
  • the memory unit 20 has a receiving side seed value writing control unit 201.
  • the receiving-side seed value writing control unit 201 can write the same value as the seed value stored in the transmitting-side seed value storage unit sent from the host unit to the receiving-side seed value storage unit 21.
  • the receiving-side seed value storage unit 21 includes a non-volatile memory such as an electric fuse (eFUSE), and is connected to the non-volatile memory writing power source 50.
  • eFUSE electric fuse
  • PPR Post Package Report
  • JEDEC JEDEC standard of DDR4.
  • PPR is a function provided for the host chip to replace the address of a defective memory cell in a memory array with the address of a redundant memory cell after the DRAM chip is mounted in a package. Not only the bad address of the memory cell but also any other information can be written to the DRAM chip.
  • the receiving side seed value writing control unit 201 By providing the receiving side seed value writing control unit 201 with a mechanism defined by this PPR or a mechanism similar thereto, the seed value information stored in the transmitting side seed value storage unit is stored in the receiving side seed value storage unit 21. Can be memorized.
  • the host unit 10 uses this mechanism to store its own seed value in the receiving side seed value storage unit 21 when the communication device 1 incorporating the host unit 10 and the memory unit 20 is shipped.
  • the memory unit 20 already has a power supply terminal having the same power supply level in the non-volatile memory write power supply 50 and can be shared with the non-volatile memory write power supply 50, this can be deleted.
  • the memory unit 20 includes a receiving-side seed value writing control unit 201, a receiving-side seed value storage unit 21 composed of a non-volatile memory, and a non-volatile memory writing power supply 50.
  • the same seed value as the transmission side seed value of the host unit 10 can be stored in the reception side seed value storage unit of the memory unit 20.
  • the seed value on the transmitting side is transferred on the address bus 30 or the data bus 40, and the risk of eavesdropping is exposed.
  • the seed value transfer is a communication incorporating the host unit 10 and the memory unit 20.
  • the device 1 Since the device 1 is shipped only once and is performed in the environment of the shipping vendor, the possibility of leakage to a third party is extremely low.
  • the mechanism for writing to the non-volatile memory has already been defined by the JEDEC standard of DDR4 and the like, and is an existing technology. That is, the advantage of this embodiment is that the system can be constructed relatively easily while using known technology, and secure communication can be effectively established.
  • the communication device 1, the memory module, and the program according to the ninth embodiment of the present invention will be described with reference to FIG.
  • the same components as those in the above-described embodiment are designated by the same reference numerals, and the description thereof will be omitted or simplified.
  • the communication device 1, the memory module, and the program according to the ninth embodiment are different from the first to eighth embodiments in that the host unit 10 has the transmitting side seed value writing control unit 106. Further, in the communication device 1, the memory module, and the program according to the ninth embodiment, the memory unit 20 has the receiving side seed value reading key control unit 205, the receiving side seed value reading key storage unit 206, and the receiving side seed value reading unit.
  • the communication device 1, the memory module, and the program according to the ninth embodiment have the first to eighth embodiments in that only the memory unit 20 has a receiving side transmission data selection unit 209 for selecting transmission data. Different from the form. Further, the communication device 1, the memory module, and the program according to the ninth embodiment are different from the first to eighth embodiments in that the transmission side transmission data selection unit 109 does not exist in the host unit 10.
  • the memory unit 20 has a receiving side seed value reading key control unit 205.
  • the receiving side seed value reading key control unit 205 can write the receiving side seed value reading key of an arbitrary value sent from the host unit 10 to the receiving side seed value reading key storage unit 206.
  • the receiving side seed value reading key storage unit 206 includes a non-volatile memory such as an electric fuse (eFUSE).
  • the receiving side seed value reading key storage unit 206 is connected to the non-volatile memory writing power supply 50.
  • the specific procedure for writing the receiving side seed value reading key from the host unit 10 to the electric fuse of the receiving side seed value reading key storage unit 206 is described in, for example, the section of the JEDEC standard Post Package Repeat (PPR) of DDR4. Described in.
  • the PPR is a function provided for performing replacement by the host chip with the address of the defective memory cell of the memory array as the address of the redundant memory cell after the DRAM chip is mounted on the package. On the other hand, by using this function, not only the defective address of the memory cell but also any other information can be written to the DRAM chip.
  • the receiving side seed value reading key control unit 205 includes a mechanism defined by this PPR or a mechanism similar thereto. As a result, the receiving side seed value reading key control unit 205 can store an arbitrary value sent from the host unit 10 as the receiving side seed value reading key in the receiving side seed value reading key storage unit 206.
  • the host unit 10 uses this mechanism to store the receiving side seed value reading key in the receiving side seed value reading key storage unit 206 when the communication device 1 incorporating the host unit 10 and the memory unit 20 is shipped.
  • the receiving side seed value may be a random value different for each memory unit, or a random value different for each power-on or reset.
  • the memory unit 20 includes a receiving side seed value reading unit 204.
  • the host unit 10 includes a transmission side seed value writing control unit 106.
  • the host unit 10 and the memory unit 20 predetermine a procedure for reading the receiving side seed value reading key, and according to the procedure, the receiving side seed value reading unit 204 sends the transmitting side seed value writing control unit 106 to the receiving side. Send the seed value.
  • a dedicated command for reading the seed value read key on the receiving side is determined in advance by the host unit 10 and the memory unit 20.
  • a comparison key is embedded in this dedicated command for comparison with the receiving seed value read key.
  • the address generation unit 11 sends this dedicated command to the decoding unit 23 via the coding unit 14 and the address bus 30.
  • the access processing unit 24 detects the dedicated command received from the decoding unit 23, the access processing unit 24 compares the comparison key embedded in the dedicated command with the value stored in the receiving side seed value reading key storage unit 206. When the two match, the access processing unit 24 sets the receiving side seed value stored in the receiving side seed value storage unit 21 as the transmitting side seed value via the receiving side transmission data selection unit 209 and the data bus 40. It is sent to the write control unit 106.
  • the transmitting side seed value writing control unit 106 that has acquired the receiving side seed value writes to the transmitting side seed value storage unit 12. According to the above procedure, the same value can be used for the transmitting side seed value and the receiving side seed value.
  • the data written in the memory address or the register is preferably a comparison key to be compared with the value stored in the receiving side seed value reading key storage unit 206.
  • the memory unit 20 already has a power supply terminal having the same power supply level in the non-volatile memory write power supply 50 and can be shared with the non-volatile memory write power supply 50, this can be deleted.
  • the host unit 10 includes a transmission side seed value writing control unit 106. Further, the memory unit 20 includes a receiving side seed value reading key control unit 205, a receiving side seed value reading key storage unit 206 composed of a non-volatile memory, a non-volatile memory writing power supply 50, and a receiving side reading unit 204. It includes a receiving side transmission data selection unit 209. As a result, an arbitrary value sent from the host unit 10 can be stored in advance in the receiving side seed value reading key storage unit 206 of the memory unit 20 as a receiving side seed value reading key.
  • a command for reading the receiving side seed value from the host unit 10 is transmitted to the memory unit 20 together with a comparison key for comparing with the receiving side seed value reading key.
  • the comparison key and the receiving side seed value reading key are compared by the receiving side seed value reading unit 204, and when they match, the receiving side seed value is set to the transmitting side seed via the transmitting side seed value writing control unit 106. It is written to the value storage unit 104.
  • the seed value can be set to a random value, and the security can be further enhanced.
  • the present invention is not limited to the above-described embodiments and can be appropriately modified.
  • communication between the arithmetic unit and DRAM has been described as an example, but the present invention is not limited thereto.
  • the configuration of the above embodiment may be applied to general communication such as network communication.
  • the configuration of the above embodiment may be applied to network communication or the like with the host unit 10 as the transmission unit and the memory unit 20 as the reception unit.
  • the transmitting side and the receiving side may be configured to switch and communicate depending on the situation.
  • the transmission side intermediate value calculation unit 191 executes a modular exponentiation operation
  • the present invention is not limited to this.
  • the receiving side intermediate value calculation unit 291 executes a modular exponentiation operation
  • the transmitting side intermediate value calculation unit 191 and the receiving side intermediate value calculation unit 291 may execute an operation such as a remainder operation using elliptic addition as another example of the one-way function including the power remainder operation. Even when the one-way function is used, the process can be executed in the same manner as the modulo operation.
  • Communication device Host unit 11 Address generation unit 12 Transmission side seed value storage unit 13 Transmission side seed value acquisition unit 14 Encoding unit 15 Transmission side coil 16 Transmission side selection unit 17 Public key output unit 18 Transmission side secret key generation unit 19 Sender seed value generator 20 Memory unit 21 Receiving side seed value storage unit 22 Receiving side seed value acquisition unit 23 Decoding unit 24 Access processing unit 25 Memory array 26 Receiving side coil 27 Receiving side selection unit 28 Receiving side secret key generation unit 29 Receiving side seed value generator 30 Address bus 40 Data bus 50 Non-volatile memory write power supply 101 Data processing unit 106 Sending side seed value writing control unit 107 Sending side data coding unit 108 Sending side data decoding unit 109 Sending side transmitting data selection unit 141 Transmitter random number generator 142 Coding execution unit 143 Transmitter bit swap unit 181 Transmitter random number generator 191 Transmitter intermediate value calculation unit 192 Transmitter seed value calculation unit 201 Receiver seed value write control unit 204 Receiver seed value Read unit 205 Receiving side seed value read key write control unit 206 Receiving side seed value

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

装置を高速動作させつつ、アドレスを秘匿すべくセキュアな通信を確立可能な通信装置、メモリモジュール、及びプログラムを提供すること。 送信側シード値生成部は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部と、受信側シード値生成部において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部と、を備え、受信側シード値生成部は、任意の値である受信側秘密鍵と、公開鍵とから、一方向性関数の演算を実行して受信側中間値を算出する受信側中間値算出部と、送信側中間値算出部において算出された送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部と、を備える。

Description

通信装置、メモリモジュール、及びプログラム
 本発明は、通信装置、メモリモジュール、及びプログラムに関する。
 従来より、記憶装置としてDRAM(Dynamic Random Access Memory)等の揮発性メモリ(RAM)が知られている。DRAMは、MPU(Micro Processing Unit)等の演算装置から送信されるデータを保持することができる。DRAMは、例えば、アドレス及びコマンドを演算装置から受信する。DRAMは、受信したアドレス(メモリアドレス)及びコマンドに基づいて、該当するアドレスをアクセスして、コマンドで示される動作を実行する。DRAMは、例えば、演算装置から実データをさらに受信して、アドレスで示される位置にアクセスして、コマンドによって示されるストア命令(ライト命令)に基づいて実データを保持する。
 昨今では、セキュリティ向上の観点から、演算装置とDRAMとの間のセキュアな通信に対する要望がある。例えば、演算装置とDRAMとの間の通信を暗号化通信とすることで、セキュアな通信を実現することが考えられる。このようなセキュアな通信を実現するシステムとして、処理モジュールとメモリモジュールとの間の通信を暗号化通信とするシステムが提案されている(例えば、特許文献1参照)。
特表2019-502211号公報
 特許文献1では、処理モジュールが暗号化されたメモリアドレスを生成する。処理モジュールは、生成されたメモリアドレスをメモリモジュールに送信する。メモリモジュールは、復号したアドレスにアクセスする。これにより、特許文献1では、処理モジュールとメモリモジュールとの間の通信をセキュアとすることができる。一方で、特許文献1では、メモリアクセスパスに暗号化及び復号の処理が入るため、アクセスレイテンシが長くなる。そのため、特許文献1では、処理モジュール及びメモリモジュールの高速動作に向かないという課題がある。そこで、演算装置及びメモリモジュールを高速動作させつつ、アドレスを秘匿すべくセキュアな通信を確立することが好適である。また、演算装置及びメモリモジュールの間の通信に限らず、一般的な装置においても高速動作させつつ、セキュアな通信を確立できればこれもまた好適である。
 本発明は、装置を高速動作させつつ、アドレスを秘匿すべくセキュアな通信を確立可能な通信装置、メモリモジュール、及びプログラムを提供することを目的とする。
 本発明は、少なくとも符号化されたアドレスを送受信する通信装置であって、符号化された前記アドレスを送信するホスト部と、前記ホスト部から符号化された前記アドレスを受信するメモリ部と、を備え、前記ホスト部は、所定のシード値を送信側シード値として生成する送信側シード値生成部と、前記送信側シード値を用いて前記アドレスを符号化する符号化部と、を備え、前記メモリ部は、前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部と、前記受信側シード値を用いて符号化された前記アドレスを復号する復号部と、を備え、前記送信側シード値生成部は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部と、前記受信側シード値生成部において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部と、を備え、前記受信側シード値生成部は、任意の値である受信側秘密鍵と、前記公開鍵とから、一方向性関数の演算を実行して前記受信側中間値を算出する受信側中間値算出部と、前記送信側中間値算出部において算出された前記送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部と、を備える通信装置に関する。
 なお、送信側シード値算出部と送信側中間値算出部は、別々の演算回路で構成されても良い。また、送信側シード値算出部と送信側中間値算出部は、同一の演算回路を共有して構成されても良い。同様に、受信側シード値算出部と受信側中間値算出部は、別々の演算回路で構成されても良い。また、受信側シード値算出部と受信側中間値算出部は、同一の演算回路を共有して構成されても良い。
 また、本発明は、少なくとも符号化されたアドレスを送受信する通信装置であって、符号化された前記アドレスを送信するホスト部であって、所定のシード値である送信側シード値を用いて前記アドレスを符号化する符号化部を備えるホスト部と、前記ホスト部から符号化された前記アドレスを受信するメモリ部であって、前記送信側シード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリ部と、を備える通信装置に関する。
 また、前記メモリ部は、受信側シード値を読み出すための受信側シード値読み出し鍵格納部と、受信側シード値読み出し部と、をさらに備え、前記ホスト部は、前記受信側シード値読み出し鍵を用いて取得した受信側シード値を、同じシード値として使用するための、送信側シード値書込み制御部を、さらに備えるのが好ましい。
 また、前記ホスト部は、所定のシード値を送信側シード値として生成する送信側シード値生成部をさらに備え、前記メモリ部は、前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部をさらに備えるのが好ましい。
 また、前記符号化部は、前記送信側シード値に基づいて乱数を生成する送信側乱数生成部と、前記送信側乱数生成部によって生成された乱数を用いて前記アドレスの符号化を実行する符号化実行部と、を備え、前記復号部は、前記受信側シード値に基づいて前記送信側乱数生成部と同期して乱数を生成する受信側乱数生成部と、前記受信側乱数生成部によって生成された乱数を用いて符号化された前記アドレスの復号を実行する復号実行部と、を備えるのが好ましい。
 また、前記符号化部は、前記送信側シード値に基づいて生成された乱数のビット位置を変更する送信側ビットスワップ部をさらに備え、前記復号部は、前記受信側シード値に基づいて生成された乱数のビット位置を前記送信側ビットスワップ部と同様に変更する受信側ビットスワップ部をさらに備え、前記符号化実行部は、前記送信側ビットスワップ部によって変更されたビット位置を有する乱数を用いて前記アドレスの符号化を実行し、前記復号実行部は、前記受信側ビットスワップ部によって変更されたビット位置を有する乱数を用いて前記アドレスの復号を実行するのが好ましい。
 また、前記符号化実行部は、前記送信側乱数生成部によって生成された乱数に基づいて、前記アドレスをビット反転し、前記復号実行部は、前記受信側乱数生成部によって生成された乱数に基づいて、符号化された前記アドレスをビット反転するのが好ましい。
 また、前記ホスト部は、種類の異なる前記送信側乱数生成部をそれぞれ有する複数の符号化部と、複数の前記符号化部のうち、1つの前記符号化部を選択する送信側選択部と、をさらに備え、前記メモリ部は、種類の異なる前記受信側乱数生成部をそれぞれ有する複数の復号部と、複数の前記復号部のうち、前記送信側選択部によって選択された前記符号化部と同じ種類の前記復号部を選択する受信側選択部と、をさらに備えてもよい。
 前記ホスト部は、複数の符号化部及びその選択機能を備える代わりに、乱数生成部とアドレス生成部のビット反転を行うビット反転器同士の組み合わせを複数備えても良い。前記送信側選択部は、その組み合わせを選択する事により、秘匿性向上のため符号化及び復号化の機能をより複雑化する事も可能である。また、メモリ部は、復号実行部とビット反転器同士の組み合わせを複数備えても良い。
 また、前記送信側選択部は、リフレッシュの命令の発行タイミングに合わせて符号化部を変更し、前記受信側選択部は、リフレッシュの命令の発行タイミングに合わせて復号部を変更するのが好ましい。
 また、本発明は、送信側シード値を用いて符号化されたアドレスをホスト部から受信して、符号化されたアドレスを復号するメモリモジュールであって、符号化に用いられたシード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリモジュールに関する。
 また、本発明は、少なくとも符号化されたアドレスを送受信する通信装置であって、符号化された前記アドレスを送信する送信部と、前記送信部から符号化された前記アドレスを受信する受信部と、を備え、前記送信部は、所定のシード値を送信側シード値として生成する送信側シード値生成部と、前記送信側シード値を用いて前記アドレスを符号化する符号化部と、を備え、前記受信部は、前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部と、前記受信側シード値を用いて符号化された前記アドレスを復号する復号部と、を備え、前記送信側シード値生成部は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部と、前記受信側シード値生成部において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部と、を備え、前記受信側シード値生成部は、任意の値である受信側秘密鍵と、前記公開鍵とから、一方向性関数の演算を実行して前記受信側中間値を算出する受信側中間値算出部と、前記送信側中間値算出部において算出された前記送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部と、を備える通信装置に関する。
 また、本発明は、少なくとも符号化されたアドレスを送受信する通信装置としてコンピュータを機能させるプログラムであって、前記コンピュータを、符号化された前記アドレスを送信するホスト部であって、所定のシード値である送信側シード値を用いて前記アドレスを符号化する符号化部を備えるホスト部と、前記ホスト部から符号化された前記アドレスを受信するメモリ部であって、前記送信側シード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリ部、として機能させるプログラムに関する。
 本発明によれば、装置を高速動作させつつ、アドレスを秘匿すべくセキュアな通信を確立可能な通信装置、メモリモジュール、及びプログラムを提供することができる。
本発明の第1実施形態に係る通信装置を示すブロック図である。 第1実施形態の通信装置の送信側乱数生成部の一例を示す概略構成図である。 本発明の第2実施形態に係る通信装置を示すブロック図である。 本発明の第3実施形態に係る通信装置を示すブロック図である。 本発明の第4実施形態に係る通信装置を示すブロック図である。 本発明の第5実施形態に係る通信装置を示すブロック図である。 本発明の第6実施形態に係る通信装置を示すブロック図である。 本発明の第7実施形態に係る通信装置を示すブロック図である。 本発明の第8実施形態に係る通信装置を示すブロック図である。 第4、第6実施形態のビットスワップ部のスワップ仕様例である。 第5、第6実施形態の乱数生成器の一例を示す回路図である。 第5、第6実施形態のシード値生成のフローチャートである 第6実施形態のメモリ部のタイミングチャート図である。 第5、第6実施形態の乱数生成器用リセット信号生成回路図である。 本発明の第9実施形態に係る通信装置を示すブロック図である。
 以下、本発明の各実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図1から図15を参照して説明する。
 まず、各実施形態に係る通信装置1の概要について説明する。
 各実施形態に係る通信装置1は、例えば、物理サーバや、電子計算機である。通信装置1は、演算装置(図示せず)と、メモリモジュール(図示せず)と、を備える。通信装置1は、演算装置と、メモリモジュールとの間で通信を行うことで各種処理を実行する。通信装置1は、例えば、演算装置から、アクセス先のアドレス(メモリアドレス)と、当該アドレスに対する動作を示すコマンドと、メモリモジュールに格納するための格納用データと、をメモリモジュールに向けて通信する。以下の各実施形態に係る通信装置1は、少なくとも符号化されたアドレスを送受信する。これにより、通信装置1は、演算装置から送信されるアドレスを秘匿したセキュア通信を実現する。また、以下の説明では、ホスト部10は、演算装置を含む装置の一例として説明される。また、以下の説明では、メモリ部20は、メモリモジュールを含む装置の一例として説明される。
[第1実施形態]
 次に、本発明の第1実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図1及び図2を参照して説明する。
 本実施形態に係る通信装置1は、ホスト部10と、メモリ部20と、を備える。
 ホスト部10は、例えば、MPU等の演算装置である。ホスト部10は、符号化されたアドレスを送信する。ホスト部10は、データ処理部101と、アドレス生成部11と、送信側シード値格納部12と、送信側シード値取得部13と、符号化部14と、を備える。
 データ処理部101は、メモリ部20とデータ通信可能に構成される。データ処理部101は、例えば、メモリ部20に格納する実際のデータである実データを出力する。また、データ処理部101は、例えば、メモリ部20に格納されている実データを取得する。
 アドレス生成部11は、アクセス先のアドレスを生成する。また、アドレス生成部11は、アクセス先のアドレスに対する動作を示すコマンドを生成する。アドレス生成部11は、例えば、アクセス先のアドレスに対して、ストア命令(ライト命令)や、ロード命令(リード命令)等のコマンドを生成する。アドレス生成部11がストア命令(ライト命令)を生成する場合、データ処理部101は、ホスト部10のデータバス40を介して、メモリ部20のメモリアレイ25に実データを送信する。そして、データ処理部101は、後述するアクセス処理部24で示されたメモリアレイ25のメモリアドレスに実データを書き込む。アドレス生成部11がロード命令(リード命令)を生成する場合、アクセス処理部24によって示されるメモリアドレスから読み出されたメモリアレイ25のデータが、データバス40を介してデータ処理部101に送られる。一般的なメモリと異なり、アドレス生成部11は、送信側の乱数生成のタイミングやシード値の取り込み、符号化実行のタイミング等、符号化に必要な各種制御も実行する。
 送信側シード値格納部12は、例えば、フリップフロップ、ラッチ、電気フューズ等の揮発性記憶素子あるいは不揮発性記憶素子である。送信側シード値格納部12は、符号化に用いられるシード値を送信側シード値として格納する。送信側シード値格納部12は、例えば、所定の1つの数値を送信側シード値として格納する。
 送信側シード値取得部13は、送信側シード値格納部12に格納されている送信側シード値を取得する。送信側シード値取得部13は、例えば、メモリ部20のリフレッシュ動作時、事前に取り決めした一定期間毎、あるいはプログラムにより明示的に指定された所定のタイミングで送信側シード値を取得する。
 符号化部14は、アドレスのスクランブラである。符号化部14は、所定のシード値である送信側シード値を用いてアドレスを符号化する。符号化部14は、アドレスバス30を介して、符号化されたアドレスをメモリ部20に送信する。符号化部14は、例えば、アドレス生成部11によって生成されたアドレスを取得する。また、符号化部14は、送信側シード値取得部13から送信側シード値を取得する。符号化部14は、送信側乱数生成部141と、符号化実行部142と、を備える。
 送信側乱数生成部141は、例えば、線形帰還シフトレジスタ(LFSR、linear feedback shift register)である。送信側乱数生成部141は、送信側シード値に基づいて乱数を生成する。また、送信側乱数生成部141は、所定のタイミングで乱数を生成する。送信側乱数生成部141は、例えば、クロック信号を用いて所定のタイミングで乱数を生成する。送信側乱数生成部141は、一例として、図2に示すような、31ビットガロアLFSRであり、x^31+x^28+1の生成多項式で表される。送信側乱数生成部141は、セキュリティ向上のため、非線形の帰還シフトレジスタもしくはその組み合わせで構成されても良い。
 符号化実行部142は、アドレス生成部11によって生成されたアドレスを取得する。また、符号化実行部142は、送信側乱数生成部141によって生成された乱数を取得する。符号化実行部142は、取得した乱数を用いて、取得したアドレスの符号化を実行する。符号化実行部142は、例えば、ビット反転器であり、XOR回路で表される。なお、本実施形態では、アドレス生成部11によって生成されるコマンドについても符号化する。符号化実行部142は、電源投入後であって、電源の安定後に符号化を実行するのが好ましい。また、符号化実行部142は、送信側乱数生成部141にシード値が取り込まれた後に符号化を実行するのが好ましい。なお、他のシステム上の理由により符号化を実行するタイミングの制御が生じる場合、アドレス生成部11は、これら符号化タイミングの制御についても実行する。
 メモリ部20は、いわゆるメモリモジュールである。メモリ部20は、例えば、DRAMである。メモリ部20は、ホスト部10から符号化されたアドレスを受信する。メモリ部20は、受信側シード値格納部21と、受信側シード値取得部22と、復号部23と、アクセス処理部24と、メモリアレイ25と、を備える。
 受信側シード値格納部21は、例えば、フリップフロップ、ラッチ、電気フューズ等の揮発性記憶素子あるいは不揮発性記憶素子である。受信側シード値格納部21は、復号に用いられるシード値を受信側シード値として格納する。受信側シード値格納部21は、送信側シード値と同じ値である受信側シード値を格納する。あるいは、送信側シード値格納部12は、受信側シード値格納部21に格納された受信側シード値と、同じ値である送信側シード値を格納しても良い。第3者による盗聴を回避しながら、送信側シード値と受信側シード値を同一にする具体的な方法は、第2実施形態、第5実施形態、第6実施形態、第8実施形態、第9実施形態で示される。
 受信側シード値取得部22は、受信側シード値格納部21に格納されている受信側シード値を取得する。受信側シード値取得部22は、例えば、メモリアレイ25のリフレッシュ動作時、事前に取り決めした一定期間毎、あるいはプログラムにより明示的に指定された所定のタイミングで受信側シード値を取得する。受信側シード値取得部22は、ホスト部10から送られるコマンドにより決定される、受信側での取得タイミングで受信側シード値を取得する。例えば、取得タイミングがリフレッシュ動作である場合、受信側シード値取得部22は、アクセス処理部24におけるリフレッシュコマンドの検知に基づいて、シード値を取得する。
 復号部23は、例えば、アドレスのデスクランブラである。復号部23は、アドレスバス30を介してホスト部10から送付される符号化されたアドレスを復号する。復号部23は、受信側シード値を用いて符号化されたアドレスを復号する。具体的には、復号部23は、送信側シード値と同じシード値である受信側シード値を用いて符号化されたアドレスを復号する。復号部23は、受信側乱数生成部231と、復号実行部232と、を備える。
 受信側乱数生成部231は、例えば、送信側乱数生成部141と同じ構成の線形帰還シフトレジスタである。受信側乱数生成部231は、受信側シード値に基づいて送信側乱数生成部141と同期して乱数を生成する。受信側乱数生成部231は、例えば、送信側乱数生成部141とクロック信号で同期して乱数を生成する。すなわち、受信側乱数生成部231は、送信側乱数生成部141と同期して、同じ値の乱数を生成する。
 送信側乱数生成部141と受信側乱数生成部231の具体的な同期方法として、送信側乱数生成部141は、符号化実行部142から復号実行部232へ送付される特定のコマンド、例えばリフレッシュコマンドや専用に用意した同期用コマンドをトリガとする。送信側乱数生成部141は、当該コマンド発行後の一定サイクル経過後(例えば30サイクル後)に、乱数生成を開始すれば良い。また、受信側乱数生成部231は、当該コマンド受信後の一定サイクル経過後(例えば30サイクル後)に、乱数生成を開始すれば良い。なお、アドレス生成部11は、当該コマンド発行もしくは受信から乱数生成までの期間において、メモリ部20に対して、他のコマンドを発行しないのが好ましい。
 復号実行部232は、受信側乱数生成部231によって生成された乱数を用いて符号化されたアドレスの復号を実行する。具体的には、復号実行部232は、符号化実行部142から符号化されたアドレスを受信する。また、復号実行部232は、受信側乱数生成部231から生成された乱数を取得する。すなわち、復号実行部232は、符号化された乱数と同じ乱数を受信側乱数生成部231から取得する。復号実行部232は、取得した乱数を用いて、符号化されたアドレスを復号する。復号実行部232は、例えば、ビット反転器であり、XOR回路で表される。なお、本実施形態では、復号実行部232は、符号化実行部142によって符号化されたコマンドについても復号する。復号実行部232は、復号化のタイミングとして、メモリ部20の電源投入後における電源の安定後のタイミングで復号化を実行するのが好ましい。復号実行部232は、受信側乱数生成部231にシード値を取り込んだ後に復号化を実行する。また他のシステム上の理由により、タイミング制御の必要が生じる場合、アクセス処理部24は、これら復号化タイミングの制御を実行する。
 アクセス処理部24は、復号されたアドレスにアクセスする。また、アクセス処理部24は、コマンドによって示される命令を処理する。アクセス処理部24は、例えば、ストア命令(ライト命令)に基づいて、復号されたアドレスにアクセスして、ホスト側から送信される実データをストアする。また、アクセス処理部24は、受信側の乱数生成のタイミングやシード値の取り込み、復号化実行のタイミング等、復号化に必要な各種制御を実行する。
 メモリアレイ25は、記憶領域である。メモリアレイ25は、格納用データを格納する。
 次に、本実施形態の通信装置1の動作について説明する。
 まず、アドレス生成部11は、アクセス先のアドレスと、コマンドと、を生成する。アドレス生成部11は、生成したアドレスと、コマンドと、を符号化実行部142に送る。また、送信側シード値取得部13は、送信側シード値を送信側シード値格納部12から取得して、送信側乱数生成部141に送る。送信側乱数生成部141は、アドレス生成部11により制御されるタイミングでシード値を取り込む。また、受信側シード値取得部22は、受信側シード値を受信側シード値格納部21から取得して、受信側乱数生成部231に送る。受信側乱数生成部231は、アクセス処理部24により制御されるタイミングでシード値を取り込む。
 送信側乱数生成部141は、送信側シード値を基準として、所定のタイミングで乱数を生成する。送信側乱数生成部141は、生成した乱数を符号化実行部142に送る。送信側乱数生成部141は、アドレス生成部11により制御されるタイミングで乱数を生成する。
 符号化実行部142は、生成されたアドレスとコマンドとを生成された乱数で符号化する。符号化実行部142は、符号化したアドレス及びコマンドをメモリ部20に送る。符号化実行部142は、アドレス生成部11により制御されるタイミングで符号化を実行する。
 受信側乱数生成部231は、受信側シード値を基準として、送信側乱数生成部141と、前述した方法により同期して乱数を生成する。受信側乱数生成部231は、生成した乱数を復号実行部232に送る。受信側乱数生成部231は、アクセス処理部24により制御されるタイミングで乱数を生成する。
 復号実行部232は、符号化されたアドレス及びコマンドについて、受信側乱数生成部231によって生成された乱数を用いて復号する。アクセス処理部24は、復号されたアドレスにアクセスするとともに、コマンドに基づいてメモリアレイ25に対する処理を実行する。復号実行部232は、アクセス処理部24により制御されるタイミングで符号化を実行する。
 次に、本実施形態に係るプログラムについて説明する。
 通信装置1に含まれる各構成は、ハードウェア、ソフトウェア又はこれらの組み合わせによりそれぞれ実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
 プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、SSD(Solid State Drive)、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(1)少なくとも符号化されたアドレスを送受信する通信装置1であって、符号化されたアドレスを送信するホスト部10であって、所定のシード値である送信側シード値を用いてアドレスを符号化する符号化部14を備えるホスト部10と、ホスト部10から符号化されたアドレスを受信するメモリ部20であって、送信側シード値と同じシード値である受信側シード値を用いて符号化されたアドレスを復号する復号部23を備えるメモリ部20と、を備える。また、送信側シード値を用いて符号化されたアドレスをホスト部10から受信して、符号化されたアドレスを復号するメモリモジュールであって、符号化に用いられたシード値と同じシード値である受信側シード値を用いて符号化されたアドレスを復号する復号部23を備える。これにより、アドレスのみを符号化することが可能になるので、アドレスを符号化及び復号する際に、実データまで符号化及び復号することによるオーバーヘッドの発生を抑制できる。したがって、装置を高速動作させつつ、アドレスを秘匿すべくセキュアな通信を確立することができる。
(2)符号化実行部142は、送信側乱数生成部141によって生成された乱数に基づいて、アドレスをビット反転し、復号実行部232は、受信側乱数生成部231によって生成された乱数に基づいて、符号化されたアドレスをビット反転する。ビット反転のみで符号化及び復号することができるので、ホスト部10にて別の手段でアドレスを暗号化し、メモリ部20にて復号する場合に比べ、高速に動作させることができる。
[第2実施形態]
 次に、本発明の第2実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図3を参照して説明する。第2実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第2実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が、シード値を送信するための送信側コイル15を備える点で第1実施形態と異なる。また、第2実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が、受信側シード値格納部21に代えて、ホスト部10から送信される送信側シード値を受信する受信側コイル26を備える点で、第1実施形態と異なる。また、第2実施形態に係る通信装置1、メモリモジュール、及びプログラムは、受信側シード値取得部22が、受信側シード値に代えて、ホスト部10から送信された送信側シード値を取得する点で第1実施形態と異なる。
 送信側コイル15は、送信側シード値取得部13によって取得された送信側シード値をメモリ側に送信する。送信側コイル15は、磁界通信を用いて、送信側シード値を送信する。
 受信側コイル26は、送信側コイル15から送信された送信側シード値を受信する。具体的には、受信側コイル26は、磁界通信を用いて、送信側コイル15から送信された送信側シード値を受信する。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(3)送信側コイル15は、磁界通信を用いて、送信側シード値を送信し、受信側コイル26は、磁界通信を用いて、送信側コイル15から送信された送信側シード値を受信するようにした。これにより、送信側シード値をメモリ部20に送信することができるので、ホスト部10の送信側シード値をメモリ部20と共有することができる。近接したコイル間の磁界通信の盗聴は比較的困難と言われているので、メモリ部20が受信側シード値を有していなくても、セキュアな通信を実現することができる。例えば、ホスト部10に対して別のメモリ部20と組み合わせて用いることが容易になる。
[第3実施形態]
 次に、本発明の第3実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図4を参照して説明する。第3実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第3実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が種類の異なる送信側乱数生成部141をそれぞれ有する複数の符号化部14を備える点で、第1及び第2実施形態と異なる。また、第3実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が複数の符号化部14のうち、1つの符号化部14を選択する送信側選択部16をさらに備える点で第1及び第2実施形態と異なる。また、第3実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が種類の異なる受信側乱数生成部231をそれぞれ有する複数の復号部23を備える点で、第1及び第2実施形態と異なる。また、第3実施形態に係る通信装置1、メモリモジュール、及びプログラムは、複数の復号部23のうち、前記送信側選択部16によって選択された符号化部14と同じ種類の復号部23を選択する受信側選択部27をさらに備える点で、第1及び第2実施形態と異なる。
 複数の符号化部14のそれぞれは、例えば、生成多項式の異なる送信側乱数生成部141を有する。複数の復号部23のそれぞれは、例えば、生成多項式の異なる受信側乱数生成部231を有する。
 送信側選択部16は、符号化に用いる1つの符号化部14を選択する。送信側選択部16は、例えば、メモリ部20のリフレッシュの命令の発行タイミングに合わせて符号化部14を変更すべく、新たな符号化部14を選択する。送信側選択部16は、リフレッシュ命令以外に、符号化部14の選択タイミングとして、セルフリフレッシュ命令、パワーダウン命令、パワーダウン復帰命令、あるいは従来のDRAMに具備されていない専用の追加された命令の発行タイミングとする事ができる。なお、リフレッシュは、DRAM特有の動作である。リフレッシュでは、メモリアレイの記憶情報が消失しない様に、一定期間毎に全てのメモリアドレスに対して均等にアクセスが実行される。これにより、DRAMメモリセルの電荷が補充される。通信動作の観点では、このリフレッシュ動作の期間中は、有効なデータの送受信が行われない通信性能の損失に見える。すなわち、送信側選択部16がこのリフレッシュ動作期間中に新しい符号化部14を選択する事で、従来のDRAMと比べて性能損失なくセキュリティ性の向上が可能になる。
 受信側選択部27は、復号に用いる1つの復号部23を選択する。受信側選択部27は、送信側選択部16によって選択された符号化部14の送信側乱数生成部141の生成多項式と同じ生成多項式を有する、受信側乱数生成部231を含む復号部23を選択する。なお、受信側選択部27は、選択に際し、前記の送信側選択部16における符号化部14の変更タイミングを決めるためのコマンドと同じコマンドを受信側選択部27でも使用する。これにより、受信側選択部27は、選択に際し、符号化部14と復号部23の同期をとる事ができる。受信側選択部27は、例えば、送信側選択部16から、選択された符号化部14の送信側乱数生成部141を特定するための情報を受信して、選択する復号部23を決定する。なお、アクセス処理部24がこの処理を実行しても良い。
 より具体的には、アクセス処理部24は、同じ生成多項式を有する符号化部14と復号部23に同じ番号を予め付与する。アクセス処理部24は、付与した番号を、前記の符号化部14と復号部23の変更タイミングに使用するコマンド内に入れ込む。これにより、受信側選択部27は、送信側選択部16で使用する符号化部14と同じ生成多項式を有する復号部23を特定する事ができる。
 あるいは、アクセス処理部24は、送信側選択部16と受信側選択部27の間で、選択する符号化部14と、その符号化部と同じ生成多項式を有する復号部23のペアの順番を定めておく。受信側選択部27は、前記の変更タイミングを決めるコマンドの発行の度に、その順番に応じて符号化部14と復号部23を変更する事で、同じ多項式を有する符号化部14と復号部23を選択しても良い。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(4)ホスト部10は、種類の異なる送信側乱数生成部141をそれぞれ有する複数の符号化部14と、複数の符号化部14のうち、1つの符号化部14を選択する送信側選択部16と、をさらに備え、メモリ部20は、種類の異なる受信側乱数生成部231をそれぞれ有する複数の復号部23と、複数の復号部23のうち、前記送信側選択部16によって選択された符号化部14と同じ種類の復号部23を選択する受信側選択部27と、をさらに備える。これにより、符号化及び復号に用いられる符号化部14及び復号部23が変化するので、通信のセキュリティ性を向上することができる。
 また、この符号化部14と復号部23の選択は、リフレッシュ命令の発行に合わせて実行を開始するとともに、リフレッシュ動作期間中に完了される。これにより、ホスト部10とメモリ部20の符号化と復号の同期が行われ、加えて従来のDRAMと比べて性能損失する事無くセキュリティ機能の向上が実現できる。
[第4実施形態]
 次に、本発明の第4実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図5を参照して説明する。第4実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第4実施形態に係る通信装置1、メモリモジュール、及びプログラムは、符号化部14が送信側ビットスワップ部143を有する点で、第1から第3実施形態と異なる。また、第4実施形態に係る通信装置1、メモリモジュール、及びプログラムは、復号部23が受信側ビットスワップ部233をさらに備える点で第1から第3実施形態と異なる。
 符号化部14は、送信側シード値に基づいて生成された乱数のビット位置を変更する送信側ビットスワップ部143を有する。送信側ビットスワップ部143の機能について、図10を用いて説明する。図10の第1行目は、送信側ビットスワップ部143の入力ビット位置を示す。第2行目から第5行目は、送信側ビットスワップ部143の出力ビット位置を表す。図の例では、送信側ビットスワップ部143の出力は20ビットであり、入力ビット位置と出力ビット位置の組み合わせは計4パタンが存在する。例えばパタン4の場合、送信側ビットスワップ部143の27ビット位置への入力は、送信側ビットスワップ部143の9ビット位置へ出力される。なお、本実施形態において、符号化実行部142は、送信側ビットスワップ部143によって変更されたビット位置を有する乱数を用いてアドレスの符号化を実行する。
 復号部23は、受信側シード値に基づいて生成された乱数のビット位置を送信側ビットスワップ部143と同様に変更する受信側ビットスワップ部233を有する。受信側ビットスワップ部233の機能は、送信側ビットスワップ部143と同様である。送信側ビットスワップ部143と受信側ビットスワップ部233は、同じ入力ビット位置と出力ビット位置の組み合わせパタンを使用する様に、同期される。なお、本実施形態において、復号実行部232は、受信側ビットスワップ部233によって変更されたビット位置を有する乱数を用いてアドレスの復号を実行する。
 送信側ビットスワップ部143の入力ビット位置及び出力ビット位置と、受信側ビットスワップ部233の入力ビット位置及び出力ビット位置との、組み合わせパタンの選択方法と変更タイミングの決定は、第3実施形態での複数の符号化部14と復号部23の選択方法とタイミング変更方法と同様に実行される。すなわち何らかのコマンド、例えばリフレッシュコマンドの発行もしくは受信のタイミングに合わせて、入力ビット位置と出力ビット位置の組み合わせパタンが変更される。使用するパタンは、リフレッシュコマンド内に埋め込まれるか、あるいは事前に決められた使用するパタンの順序に従い、リフレッシュコマンドの発行の度に切り替えられる。これらの方法により、符号化部14の送信側ビットスワップ部143と復号部23の受信側ビットスワップ部233とは、同期しながら同じ組み合わせパタンを使用することができる。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(5)ホスト部10は、入力ビット位置と出力ビット位置を変更する送信側ビットスワップ部143を有する符号化部14とを備え、メモリ部20は、入力ビット位置と出力ビット位置を変更する受信側ビットスワップ部233を有する復号部23を備える。これにより、複数の復号化部や復号部を用意しなくても、符号化及び復号に用いられる乱数のビット位置が変化するので、比較的簡単な回路の追加だけで、通信のセキュリティ性を向上することができる。
 また、この符号化部14と復号部23の選択は、リフレッシュ命令の発行に合わせて実行を開始され、リフレッシュ動作期間中に完了される。これにより、ホスト部10とメモリ部20の符号化と復号の同期が実行され、加えて従来のDRAMと比べて性能損失する事無くセキュリティ機能の向上が実現できる。
[第5実施形態]
 次に、本発明の第5実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図6を参照して説明する。第5実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第5実施形態に係る通信装置1、メモリモジュール、及びプログラムは、送信側秘密鍵生成部18と、公開鍵出力部17と、を備える点で、第1から第4実施形態と異なる。また、第5実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が、送信側シード値格納部12に代えて、送信側シード値生成部19を有する点で、第1から第4実施形態と異なる。また、第5実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が、受信側シード値格納部21に代えて、受信側シード値生成部29を有する点で、第1から第4実施形態と異なる。また、第5実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が、受信側秘密鍵生成部28を備える点で、第1から第3実施形態と異なる。
 また図12に第5実施形態のシード値生成フローチャートを示す。
 送信側秘密鍵生成部18は、任意の値を送信側秘密鍵として出力する。送信側秘密鍵生成部18は、送信側乱数発生器181を用いて送信側秘密鍵を生成する。本実施形態において、送信側秘密鍵生成部18は、値「Y」を送信側秘密鍵として生成する。
 送信側乱数発生器181は、送信側乱数生成部141や受信側乱数生成部231で使用される線形帰還シフトレジスタLFSRを用いた疑似乱数発器ではなく、物理現象を利用した真の乱数発生器が望ましい。図11は、入力信号を確定した電位レベルに接続しない、いわゆるフローティング状態としたラッチ回路の例である。
 本回路において、リセット信号をHIGH電位からLOW電位に遷移させた場合、入力信号が確定していない事から、ラッチ回路を構成するPMOSトランジスタ素子、NMOSトランジスタ素子の製造バラツキや、本ラッチ回路に物理的に隣接した他の回路やメタル配線から寄生素子を介して回り込むノイズの影響により、出力信号はHIGH電位もしくはLOW電位となる。この出力信号は確定的ではなく、本回路を搭載した半導体チップの半導体ウエハ内の物理的位置、半導体チップ内での本回路の物理的位置、リセット信号をHIGH電位からLOW電位に遷移させるタイミング等で総合的に決まるので、空間的・時間的に再現性の乏しい乱数を発生させることができる。
 送信側乱数発生器181は、本ラッチ回路を秘密鍵「Y」のビット数と同じ数だけ有する。また第5実施形態においては、ラッチ回路のリセット信号に、リフレッシュコマンドの発行を検知した微分回路の出力を使用する。
 公開鍵出力部17は、任意の値及び任意の素数の組を公開鍵として出力する。公開鍵出力部17は、公開鍵をメモリ部20に送る。公開鍵出力部17は、例えば、データピン経由、又はアドレスに公開鍵を埋め込んでメモリ部20に送信する。本実施形態において、公開鍵出力部17は、任意の値「g」及び任意の素数の値「p」をメモリ部20に送信する。
 公開鍵「g」,「p」は、第3者に傍受されてもセキュリティ的に問題はない。ホスト部10からメモリ部20に格納する他のデータと同様、プログラムから指定する事もできる。この場合、公開鍵出力部17の機能はデータ処理部101に内蔵する機能で代用が可能であり、公開鍵出力部17は削除できる。
 送信側シード値生成部19は、所定のシード値を送信側シード値として生成する。送信側シード値生成部19は、送信側中間値算出部191と、送信側シード値算出部192と、を備える。送信側中間値算出部191と送信側シード値算出部192は、一方向性関数の計算を行うための機能を備える。
 送信側中間値算出部191は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する。送信側中間値算出部191は、例えば、
 送信側中間値B=g^Y mod p
を算出する。送信側中間値算出部191は、送信側中間値Bをメモリ部20に送る。
 なお本実施例では、秘匿通信を実現させるための一方向性関数としてべき剰余演算を使用するが、他の一方向性関数が代用されても良い。
 送信側シード値算出部192は、後述する受信側シード値生成部29において実行される、べき剰余演算の演算結果である受信側中間値に基づいて更なるべき剰余演算を行い、送信側シード値を算出する。送信側シード値算出部192の動作について後述する。なお送信側シード値算出部192で使用するべき剰余演算回路は、送信側中間値算出部191で使用するべき剰余演算回路と共有できる。
 受信側秘密鍵生成部28は、任意の値を受信側秘密鍵として出力する。受信側秘密鍵生成部28は、例えば、受信側乱数発生器281を用いて受信側秘密鍵を生成する。本実施形態において、受信側秘密鍵生成部28は、例えば、値「X」を受信側秘密鍵として生成する。受信側乱数発生器281の一例は、前記の送信側乱数発生器181と図11の説明の通りである。
 受信側シード値生成部29は、送信側シード値と同じシード値を受信側シード値として生成する。受信側シード値生成部29は、受信側中間値算出部291と、受信側シード値算出部292と、を備える。受信側中間値算出部291と受信側シード値算出部292は、一方向性関数の計算を行うための機能を備える。
 受信側中間値算出部291は、任意の値である受信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、べき剰余演算を実行して受信側中間値を算出する。受信側中間値算出部291は、例えば、
 受信側中間値A=g^X mod p
を算出する。受信側中間値算出部291は、受信側中間値Aをホスト部10に送る。なお本実施例では、秘匿通信を実現させるための一方向性関数としてべき剰余演算を使用するが、他の一方向性関数を代用しても良い。
 受信側シード値算出部292は、送信側中間値算出部191において算出された送信側中間値に基づいて、受信側シード値を算出する。受信側シード値算出部292の動作については後述する。なお受信側シード値算出部292で使用するべき剰余演算回路は、受信側中間値算出部291で使用するべき剰余演算回路と共有できる。
 次に、本実施形態の通信装置1、メモリモジュール、及びプログラムの動作について説明する。この一連の過程は、図12のシード値生成フローチャートで説明される。
 まず、アドレス生成部11は、リフレッシュコマンド(REF)発行のタイミングと合わせて、送信側秘密鍵生成部18と内蔵の送信側乱数発生器181を使用し、送信側秘密鍵「Y」を生成する。また復号部23を介して、REFコマンドを受信したアクセス処理部24は、受信側秘密鍵生成部28と内蔵の受信側乱数発生器281を使用して、受信側秘密鍵「X」を生成する。
REF発行後、アドレス生成部11は公開鍵送付コマンド(sendP)を発行する。sendP送信後、アドレス生成部11に制御された公開鍵出力部17は、公開鍵「g」及び「p」を、送信側シード値生成部19に送信する。同時に公開鍵出力部17は公開鍵「g」及び「p」を、送信側送信データ選択部109とデータバス40を介して、受信側シード値生成部29にも送信する。sendPコマンドを受信したアクセス処理部24は、受信側シード値生成部29を制御して、公開鍵「g」及び「p」を受信する。なお公開鍵「g」及び「p」を、以前のシーケンスで既に送付済みの場合は、sendPの送信と受信はスキップしても構わない。
 公開鍵「g」及び「p」と生成された秘密鍵「Y」を取得した送信側中間値算出部191は、べき剰余演算を実行して、送信側中間値「B」を算出する。アドレス生成部11は、ホスト側中間値送付コマンド(sendB)を発行し、送信側中間値算出部191と送信側送信データ選択部109を制御して、算出した送信側中間値「B」を、データバス40を介して受信側シード値生成部29に送る。
 公開鍵「g」及び「p」と生成された秘密鍵「X」を取得した受信側中間値算出部291は、べき剰余演算を実行して、受信側中間値「A」を算出する。アドレス生成部11は、メモリ側中間値要求コマンド(reqA)を発行する。reqAを受信したアクセス処理部24は、受信側中間値算出部291と受信側送信データ選択部209を制御して、算出した受信側中間値「A」を、データバス40を介して送信側シード値生成部19に送る。
 送信側シード値算出部192は、受信側中間値「A」に基づいて、
 A^Y mod p=g^XY mod p
を算出する。送信側シード値算出部192は、算出された値を送信側シード値とする。
 受信側シード値算出部292は、送信側中間値「B」に基づいて、
 B^X mod P=g^XY mod p
を算出する。受信側シード値算出部292は、算出された値を受信側シード値とする。
 ここで、A^Y mod pの値は、B^X mod pの値と同じである。したがって、送信側シード値算出部192及び受信側シード値算出部292は、同じシード値を共有することができる。
 上記実施例で説明したコマンドのうち、sendP、sendB、reqAは、従来のDRAMには無い、本実施形態専用のコマンドである。これらの機能は、専用のコマンドを設ける代わりに、特定のメモリアドレスへの書込みもしくは読出し、もしくはDRAMの規格で定義されたレジスタ、例えばモードレジスタ(MR)やマルチパーパスレジスタ(MPR)中の特定レジスタの特定ビットへアクセスが発生した際に、上記で説明した動作が行われる様に実装され得る。
 上記実施例では、秘密鍵「Y」,「X」生成のトリガとして、リフレッシュコマンド(REF)が使用されたが、REF以外のコマンド、あるいは本機能のために専用に設けられたコマンドが使用されても良い。
 べき剰余演算(一方向性関数の演算)は膨大な演算時間を必要とし、リフレッシュ期間中に終了しない可能性がある。この場合、ストア命令(ライト命令)やロード命令(リード命令)等の通常のオペレーションの実行中に、バックグラウンドでシード値生成が実行されても良い。シード値生成の完了後、アクセス処理部24は、改めてREFコマンドをトリガとして秘密鍵「Y」及び「X」の生成を開始する。これにより、システム性能の劣化が抑制される。この回路例が図14に示される。この回路は、SRラッチと微分回路用のAND回路とインバータチェインを用いて構成される。この回路が送信側秘密鍵生成部18の場合、送信側秘密鍵生成部18は、送信側シード値生成部19からバックグランドのシード値生成完了通知を受け取る。送信側秘密鍵生成部18は、直後のリフレッシュコマンド発行もしくは受信を検知した後、送信側乱数発生器181のリセット信号を生成する。また、この回路が受信側シード値生成部29の場合、受信側シード値生成部29は、受信側シード値生成部29から、バックグランドのシード値生成完了通知を受け取る。受信側シード値生成部29は、直後のリフレッシュコマンド発行もしくは受信を検知した後、受信側乱数発生器281のリセット信号を生成する。このバックグラウンドのシード値生成は、第6実施形態において、図13のタイムチャートを用いて説明される。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(6)少なくとも符号化されたアドレスを送受信する通信装置1であって、符号化されたアドレスを送信するホスト部10と、ホスト部10から符号化されたアドレスを受信するメモリ部20と、を備え、ホスト部10は、所定のシード値を送信側シード値として生成する送信側シード値生成部19と、送信側シード値を用いてアドレスを符号化する符号化部14と、を備え、メモリ部20は、送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部29と、受信側シード値を用いて符号化されたアドレスを復号する復号部23と、を備え、送信側シード値生成部19は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部191と、受信側シード値生成部29において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部192と、を備え、受信側シード値生成部29は、任意の値である受信側秘密鍵と、公開鍵とから、一方向性関数の演算を実行して受信側中間値を算出する受信側中間値算出部291と、送信側中間値算出部191において算出された送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部292と、を備える。これにより、ホスト部10及びメモリ部20のそれぞれが、同じシード値を生成するので、ホスト部10及びメモリ部20の間でシード値のやり取りする必要がない。また、べき剰余演算の一方向性関数の性質から、公開鍵と中間値がアドレスバス30もしくはデータバス40上で第3者に盗聴されても、シード値を再現する事は不可能である。したがって、ホスト部10及びメモリ部20の間によりセキュアの高い通信を確立することができる。
[第6実施形態]
 次に、本発明の第6実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図7を参照して説明する。第6実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第6実施形態に係る通信装置1、メモリモジュール、及びプログラムは、第5実施形態の符号化部14と復号部23に対して、第4実施形態で説明した送信側ビットスワップ部143と受信側ビットスワップ部233を有する点で異なる。
 送信側ビットスワップ部143と受信側ビットスワップ部233を有する符号化部14と復号部23の構成の説明は、第4実施形態の通りである。
 次に、本実施形態の通信装置1、メモリモジュール、及びプログラムの動作について、図13のメモリ部のタイムチャートを参照しながら説明する。第5実施形態に比べ、本実施形態の動作は、受信側ビットスワップ部233の組み合わせパタンの変更とシード値生成が並列で実行される点において異なる。本実施形態では、通信装置1において、バックグラウンドでシード値を生成する例が説明される。
 復号部23が時間T0でリフレッシュコマンド(REF)を受信すると、アクセス処理部24は、受信側ビットスワップ部233の組み合わせパタンの変更と、秘密鍵「X」の生成を同時に実行する。前回のバックグラウンドのシード値生成が完了している場合、受信側シード値取得部22は、受信側シード値生成部29からシード値を取得する。受信側シード値取得部22は、受信側乱数生成部231のLFSRの値を取得したシード値へと更新する。
 次に、復号部23が時間T1でsendPコマンドを受信すると、受信側シード値生成部29は、データバス40から公開鍵「g」と「p」を取得する。受信側シード値生成部29は、べき剰余演算を用いて中間値「A」の算出を開始する。
 更新された秘密鍵や公開鍵を用いた新たなシード値生成が完了していない場合、例えば時間T2でREFコマンドが入力された場合は、アクセス処理部24は、受信側ビットスワップ部233の組み合わせパタンの変更のみを実行する。
 復号部23が、時間T3にてsendBコマンドを受信すると、受信側シード値生成部29は、データバス40から送信側中間値「B」を取得する。受信側シード値生成部29は、「B」を取得すると、べき剰余演算を用いてシード値の算出を開始する。受信側シード値生成部29は、このシード値算出後、あるいは算出中の時間T4における復号部23によるreqAコマンドの受信に応じて、データバス40経由で、送信側シード値生成部19にメモリ部中間値「A」を送信する。送信側シード値生成部19は、「A」を受信すると、シード値算出を開始する。
 このバックグラウンドでのシード値算出過程において、アクセス処理部24が、例えば時間T5で通常のライトコマンド(WR)を受信した場合でも、アクセス処理部24は、メモリデータの書込み動作を問題なく行う。バックグランドでのシード値算出の完了後、アクセス処理部24が時間T6でREFコマンドを受信した場合、アクセス処理部24は、生成したシード値の更新と、秘密鍵「X」の再作成、すなわち新たなシード値生成とをバックグランドで開始する。アクセス処理部24は、シード値の更新と、新たなシード値の生成とについて、受信側ビットスワップ部233の組み合わせパタンの変更と並行して実行する。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(7)少なくとも符号化されたアドレスを送受信する通信装置1であって、符号化されたアドレスを送信するホスト部10と、ホスト部10から符号化されたアドレスを受信するメモリ部20と、を備え、ホスト部10は、所定のシード値を送信側シード値として生成する送信側シード値生成部19と、送信側ビットスワップ部143を有する、送信側シード値を用いてアドレスを符号化する符号化部14と、を備え、メモリ部20は、送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部29と、受信側ビットスワップ部233を有する、受信側シード値を用いて符号化されたアドレスを復号する復号部23と、を備え、送信側シード値生成部19は、任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、べき剰余演算を実行して送信側中間値を算出する送信側中間値算出部191と、受信側シード値生成部29において実行される、べき剰余演算の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部192と、を備え、受信側シード値生成部29は、任意の値である受信側秘密鍵と、公開鍵とから、べき剰余演算を実行して受信側中間値を算出する受信側中間値算出部291と、送信側中間値算出部191において算出された送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部292と、を備える。これにより、ホスト部10及びメモリ部20のそれぞれが同じシード値を生成するので、ホスト部10及びメモリ部20の間でシード値のやり取りは必要とされない。また、べき剰余演算の一方向性関数の性質から、公開鍵と中間値がアドレスバス30もしくはデータバス40上で第3者に盗聴されても、シード値を再現する事は不可能である。加えて、送信側ビットスワップ部143の機能により、符号化及び復号に用いられる乱数のビット位置が変化するので、さらにセキュリティ性を向上することができる。したがって、ホスト部10及びメモリ部20の間によりセキュアの高い通信を確立することができる。
[第7実施形態]
 次に、本発明の第7実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図8を参照して説明する。第7実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第7実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が送信側データ符号化部107と送信側データ復号部108を有する点で、第1から第6の実施形態と異なる。第7実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が受信側データ符号化部207と受信側データ復号部208を有する点で、第1から第6の実施形態と異なる。
 ホスト部10の送信側データ符号化部107は、符号化部14と同じ構成を有し、送信側シード値取得部13から、符号化部14と同じシード値を取得する。ただし、送信側データ符号化部107は、内部に有する符号化実行部142の入力をデータ処理部101から受信する。また、送信側データ符号化部107は、出力をデータバス40に送信する。ホスト部10の送信側データ復号部108は、符号化部14と同じ構成を有する。送信側データ復号部108は、送信側シード値取得部13から、符号化部14と同じシード値を取得する。ただし、送信側データ復号部108は、内部に有する復号実行部232の入力をデータバス40から受信する。送信側データ復号部108は、出力をデータ処理部101に送信する。
 メモリ部20の受信側データ符号化部207は、復号部23と同じ構成を有する。受信側データ符号化部207は、受信側シード値取得部22から、復号部23と同じシード値を取得する。ただし、受信側データ符号化部207は、内部に有する復号実行部232の入力はメモリアレイ25から受信する。受信側データ符号化部207は、出力うぃデータバス40に送信する。メモリ部20の受信側データ復号部208は、復号部23と同じ構成を有する。受信側データ復号部208は、受信側シード値取得部22から、復号部23と同じシード値を取得する。ただし、受信側データ復号部208は、内部に有する復号実行部232の入力をデータバス40から受信する。また、受信側データ復号部208は、出力をメモリアレイ25に送信する。
 本実施形態では、符号化部14、送信側データ符号化部107、送信側データ復号部108は、それぞれ異なる送信側乱数生成部141を有する構成としたが、単一の送信側乱数生成部141を共有することができる。同様に、復号部23、受信側データ符号化部207、受信側データ復号部208は、それぞれ異なる受信側乱数生成部231を有する構成としたが、単一の受信側乱数生成部231を共有することができる。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(8)ホスト部10は、符号化部14と送信側データ符号化部107と送信側データ復号部108を備え、メモリ部20は、復号部23と受信側データ符号化部207と受信側データ復号部208を備える。これにより、送信側シード値取得部13及び受信側シード値取得部22のシード値を用い、同様の機構でアドレスとデータを秘匿する事ができるので、ホスト部10にて別の手段でデータを暗号化する方法と比べ、より少ない回路でセキュアな通信を確立する事が可能となる。
[第8実施形態]
 次に、本発明の第8実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図9を参照して説明する。第8実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第8実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が受信側シード値書込み制御部201を有する点で、第1から第7の実施形態と異なる。第8実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20の受信側シード値格納部21に不揮発メモリを適用する事に限定されている点と、不揮発メモリ書込み用に書込み電源50を備える点において、第1から第7の実施形態と異なる。
 メモリ部20は受信側シード値書込み制御部201を有する。受信側シード値書込み制御部201は、ホスト部から送付される送信側シード値格納部に格納されたシード値と同じ値を、受信側シード値格納部21に書き込む事ができる。受信側シード値格納部21は、電気フューズ(eFUSE)等の不揮発性メモリを備え、不揮発性メモリ書込み電源50に接続される。
 ホスト部10から、受信側シード値格納部21の電気フューズに送信側シード値を書き込むための具体的な手順については、例えばDDR4のJEDECスタンダードのPost Package Repair(PPR)の項に記載される。PPRは、DRAMチップがパッケージに実装された後に、メモリアレイの不良メモリセルのアドレスを冗長メモリセルのアドレスに、ホストチップが置換するために設けられた機能であるが、本機能を用いると、メモリセルの不良アドレスだけでなく、その他任意の情報もDRAMチップに書き込む事ができる。このPPRで定義された機構、もしくはそれに類する機構を受信側シード値書込み制御部201に備える事で、送信側シード値格納部に格納されたシード値の情報は、受信側シード値格納部21に記憶させる事ができる。
 ホスト部10は本機構を用い、ホスト部10とメモリ部20を組み込んだ通信装置1を出荷する際に、自身のシード値を受信側シード値格納部21に記憶させる。
 不揮発性メモリ書込み電源50は、同じ電源レベルの電源端子を既にメモリ部20が有しており、不揮発性メモリ書込み電源50と共有が可能な場合、これを削除することができる。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(9)メモリ部20は、受信側シード値書込み制御部201と、不揮発性メモリで構成された受信側シード値格納部21と、不揮発性メモリ書込み電源50、とを備える。これにより、ホスト部10の送信側シード値と同じシード値を、メモリ部20の受信側シード値格納部に記憶させることができる。この過程において、送信側シード値がアドレスバス30もしくはデータバス40上で転送され、盗聴の危険性に晒される事になるが、シード値の転送は、ホスト部10とメモリ部20を組み込んだ通信装置1の出荷時の1回のみで、かつ出荷ベンダの環境下で行われるので、第3者への漏洩の可能性は極めて低い。また不揮発性メモリへの書込みの機構は、DDR4のJEDECスタンダード等で既に規定されており、既存の技術である。すなわち本実施形態の利点は、既知の技術を用いながら比較的容易にシステムが構成でき、かつ実効的にセキュアな通信が確立できる点である。
[第9実施形態]
 次に、本発明の第9実施形態に係る通信装置1、メモリモジュール、及びプログラムについて、図15を参照して説明する。第9実施形態の説明にあたって、前述の実施形態と同一の構成要件については同一符号を付し、その説明を省略もしくは簡略化する。
 第9実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10が送信側シード値書込み制御部106を有する点で、第1から第8の実施形態と異なる。また、第9実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20が、受信側シード値読み出し鍵制御部205、受信側シード値読み出し鍵格納部206、及び受信側シード値読み出し部204を有する点で、第1から第8の実施形態と異なる。また、第9実施形態に係る通信装置1、メモリモジュール、及びプログラムは、メモリ部20にのみ、送信データを選択するための受信側送信データ選択部209を有する点で、第1から第8実施形態と異なる。また、第9実施形態に係る通信装置1、メモリモジュール、及びプログラムは、ホスト部10に、送信側送信データ選択部109が存在しない点で、第1から第8の実施形態と異なる。
 メモリ部20は、受信側シード値読み出し鍵制御部205を有する。受信側シード値読み出し鍵制御部205は、ホスト部10から送付される任意の値の受信側シード値読み出し鍵を、受信側シード値読み出し鍵格納部206に書き込む事ができる。受信側シード値読み出し鍵格納部206は、電気フューズ(eFUSE)等の不揮発性メモリを備える。受信側シード値読み出し鍵格納部206は、不揮発性メモリ書込み電源50に接続される。
 ホスト部10から、受信側シード値読み出し鍵格納部206の電気フューズに、受信側シード値読み出し鍵を書き込むための具体的な手順については、例えばDDR4のJEDECスタンダードのPost Package Repair(PPR)の項に記載される。PPRは、DRAMチップがパッケージに実装された後に、メモリアレイの不良メモリセルのアドレスを冗長メモリセルのアドレスに、ホストチップによる置換の実行用に設けられた機能である。一方、本機能を用いることで、メモリセルの不良アドレスだけでなく、その他任意の情報もDRAMチップに書き込む事ができる。受信側シード値読み出し鍵制御部205は、このPPRで定義された機構、もしくはそれに類する機構を備える。これにより、受信側シード値読み出し鍵制御部205は、受信側シード値読み出し鍵としてホスト部10から送付される任意の値を受信側シード値読み出し鍵格納部206に記憶させる事ができる。
 ホスト部10は本機構を用い、ホスト部10とメモリ部20を組み込んだ通信装置1を出荷する際に、受信側シード値読み出し鍵を受信側シード値読み出し鍵格納部206に記憶させる。また第8実施形態と異なり、受信側シード値は、メモリ部毎に異なるランダムな値、あるいは電源投入やリセット毎に異なるランダムな値でも良い。
 メモリ部20は、受信側シード値読み出し部204を備える。ホスト部10は、送信側シード値書込み制御部106を備える。ホスト部10とメモリ部20は、受信側シード値読み出し鍵を読み出すための手順を予め定めておき、その手順に従って、受信側シード値読み出し部204から送信側シード値書込み制御部106に、受信側シード値を送信する。
 この手順の具体例としては、まず受信側シード値読み出し鍵を読み出すための専用のコマンドが、予めホスト部10とメモリ部20で決められる。この専用のコマンドには、受信側シード値読み出し鍵と比較するための、比較鍵が埋め込まれる。アドレス生成部11は、この専用のコマンドを符号化部14とアドレスバス30を介して、復号部23に送付する。アクセス処理部24は、復号部23から受け取った専用のコマンドを検知すると、専用のコマンド内に埋め込まれた比較鍵を、受信側シード値読み出し鍵格納部206に記憶された値と比較する。両者が一致していた場合に、アクセス処理部24は、受信側送信データ選択部209とデータバス40を介して、受信側シード値格納部21に格納された受信側シード値を送信側シード値書込み制御部106に送付する。
 受信側シード値を取得した送信側シード値書込み制御部106は、送信側シード値格納部12に書き込む。以上の手順により、送信側シード値と受信側シード値には、同一の値を用いることができる。
 これらの機能は、専用のコマンドを設ける代わりに、特定のメモリアドレスへの書込み、もしくはDRAMの規格で定義されたレジスタ、例えばマルチパーパスレジスタ(MPR)中の特定レジスタへの書込みが発生した際に、上記で説明した動作が行われる様に実装されることもできる。この場合、メモリアドレスもしくはレジスタに書き込まれるデータは、受信側シード値読み出し鍵格納部206に記憶された値と比較される、比較鍵とされることが好ましい。
 不揮発性メモリ書込み電源50は、同じ電源レベルの電源端子を既にメモリ部20が有しており、不揮発性メモリ書込み電源50と共有が可能な場合、これを削除することができる。
 以上、本実施形態に係る通信装置1、メモリモジュール、及びプログラムは、以下の効果を奏する。
(10)ホスト部10は、送信側シード値書込み制御部106を備える。またメモリ部20は、受信側シード値読み出し鍵制御部205と、不揮発性メモリで構成された受信側シード値読み出し鍵格納部206と、不揮発性メモリ書込み電源50と、受信側読み出し部204と、受信側送信データ選択部209、とを備える。これにより、ホスト部10から送付される任意の値を、受信側シード値読み出し鍵として、メモリ部20の受信側シード値読み出し鍵格納部206に予め記憶させることができる。暗号化が必要な通信を行う際、ホスト部10から受信側シード値を読み出すためのコマンドを、受信側シード値読み出し鍵と比較するための比較鍵とともに、メモリ部20に送信する。比較鍵と受信側シード値読み出し鍵は、受信側シード値読み出し部204で比較され、両者が一致した際に、受信側シード値は、送信側シード値書込み制御部106を介して、送信側シード値格納部104に書き込まれる。これにより、受信側シード値読み出し鍵を知るホスト部10だけが、受信側シード値と同一の値を送信側シード値として用いることができ、セキュアな通信が確立できる。また第8実施形態と比べ、シード値をランダムな値にすることができ、よりセキュリティ性を強化することができる。
 以上、本発明の通信装置、メモリモジュール、及びプログラムの好ましい各実施形態につき説明したが、本発明は、上述の実施形態に制限されるものではなく、適宜変更が可能である。
 例えば、上記実施形態において、演算装置及びDRAMの間の通信を一例として説明したが、これに制限されない。例えば、ネットワーク通信等の通信全般に、上記実施形態の構成が適用されてもよい。例えば、ホスト部10を送信部、メモリ部20を受信部として、ネットワーク通信等に、上記実施形態の構成が適用されてもよい。なお、この場合、送信側と受信側とが状況に応じて入れ替わって通信するように構成されてもよい。
 
 また、上記実施形態において、コマンドも符号化する例を説明したが、これに制限されない。例えば、アドレスのみが符号化されてもよい。
 上記で説明した各実施形態は、記載した実施形態以外の組み合わせも可能である。例えば実施形態4、実施形態7、実施形態8の組み合わせも可能である。
 また、上記実施形態では、送信側中間値算出部191がべき剰余演算を実行する例を説明したが、これに制限されない。また、上記実施形態では、受信側中間値算出部291がべき剰余演算を実行する例を説明したが、これに制限されない。送信側中間値算出部191及び受信側中間値算出部291は、べき剰余演算を含む一方向性関数の他の例として、楕円加算を用いた剰余演算等の演算を実行してもよい。なお、一方向性関数が用いられた場合であっても、処理は、べき剰余演算と同様に実行され得る。
 1 通信装置
 10 ホスト部
 11 アドレス生成部
 12 送信側シード値格納部
 13 送信側シード値取得部
 14 符号化部
 15 送信側コイル
 16 送信側選択部
 17 公開鍵出力部
 18 送信側秘密鍵生成部
 19 送信側シード値生成部
 20 メモリ部
 21 受信側シード値格納部
 22 受信側シード値取得部
 23 復号部
 24 アクセス処理部
 25 メモリアレイ
 26 受信側コイル
 27 受信側選択部
 28 受信側秘密鍵生成部
 29 受信側シード値生成部
 30 アドレスバス
 40 データバス
 50 不揮発性メモリ書込み電源
 101 データ処理部
 106 送信側シード値書込み制御部
 107 送信側データ符号化部
 108 送信側データ復号部
 109 送信側送信データ選択部
 141 送信側乱数生成部
 142 符号化実行部
 143 送信側ビットスワップ部
 181 送信側乱数発生器
 191 送信側中間値算出部
 192 送信側シード値算出部
 201 受信側シード値書込み制御部
 204 受信側シード値読み出し部
 205 受信側シード値読み出し鍵書込み制御部
 206 受信側シード値読み出し鍵格納部
 207 受信側データ符号化部
 208 受信側データ復号部
 209 受信側送信データ選択部
 231 受信側乱数生成部
 232 復号実行部
 233 受信側ビットスワップ部
 281 受信側乱数発生器
 291 受信側中間値算出部
 292 受信側シード値算出部

Claims (12)

  1.  少なくとも符号化されたアドレスを送受信する通信装置であって、
     符号化された前記アドレスを送信するホスト部と、
     前記ホスト部から符号化された前記アドレスを受信するメモリ部と、
    を備え、
     前記ホスト部は、
     所定のシード値を送信側シード値として生成する送信側シード値生成部と、
     前記送信側シード値を用いて前記アドレスを符号化する符号化部と、
    を備え、
     前記メモリ部は、
     前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部と、
     前記受信側シード値を用いて符号化された前記アドレスを復号する復号部と、
    を備え、
     前記送信側シード値生成部は、
     任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部と、
     前記受信側シード値生成部において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部と、
    を備え、
     前記受信側シード値生成部は、
     任意の値である受信側秘密鍵と、前記公開鍵とから、一方向性関数の演算を実行して前記受信側中間値を算出する受信側中間値算出部と、
     前記送信側中間値算出部において算出された前記送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部と、
    を備える通信装置。
  2.  少なくとも符号化されたアドレスを送受信する通信装置であって、
     符号化された前記アドレスを送信するホスト部であって、所定のシード値である送信側シード値を用いて前記アドレスを符号化する符号化部を備えるホスト部と、
     前記ホスト部から符号化された前記アドレスを受信するメモリ部であって、前記送信側シード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリ部と、
    を備える通信装置。
  3.  前記メモリ部は、
     受信側シード値を読み出すための受信側シード値読み出し鍵格納部と、
     受信側シード値読み出し部と、
     をさらに備え、
     前記ホスト部は、前記受信側シード値読み出し鍵を用いて取得した受信側シード値を、同じシード値として使用するための、送信側シード値書込み制御部を、さらに備える請求項2に記載の通信装置。
  4.  前記ホスト部は、所定のシード値を送信側シード値として生成する送信側シード値生成部をさらに備え、
     前記メモリ部は、前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部をさらに備える請求項2に記載の通信装置。
  5.  前記符号化部は、
     前記送信側シード値に基づいて乱数を生成する送信側乱数生成部と、
     前記送信側乱数生成部によって生成された乱数を用いて前記アドレスの符号化を実行する符号化実行部と、
    を備え、
     前記復号部は、
     前記受信側シード値に基づいて前記送信側乱数生成部と同期して乱数を生成する受信側乱数生成部と、
     前記受信側乱数生成部によって生成された乱数を用いて符号化された前記アドレスの復号を実行する復号実行部と、
    を備える請求項2から4のいずれかに記載の通信装置。
  6.  前記符号化部は、前記送信側シード値に基づいて生成された乱数のビット位置を変更する送信側ビットスワップ部をさらに備え、
     前記復号部は、前記受信側シード値に基づいて生成された乱数のビット位置を前記送信側ビットスワップ部と同様に変更する受信側ビットスワップ部をさらに備え、
     前記符号化実行部は、前記送信側ビットスワップ部によって変更されたビット位置を有する乱数を用いて前記アドレスの符号化を実行し、
     前記復号実行部は、前記受信側ビットスワップ部によって変更されたビット位置を有する乱数を用いて前記アドレスの復号を実行する請求項5に記載の通信装置。
  7.  前記符号化実行部は、前記送信側乱数生成部によって生成された乱数に基づいて、前記アドレスをビット反転し、
     前記復号実行部は、前記受信側乱数生成部によって生成された乱数に基づいて、符号化された前記アドレスをビット反転する請求項5に記載の通信装置。
  8.  前記ホスト部は、
     種類の異なる前記送信側乱数生成部をそれぞれ有する複数の符号化部と、
     複数の前記符号化部のうち、1つの前記符号化部を選択する送信側選択部と、
    をさらに備え、
     前記メモリ部は、
     種類の異なる前記受信側乱数生成部をそれぞれ有する複数の復号部と、
     複数の前記復号部のうち、前記送信側選択部によって選択された前記符号化部と同じ種類の前記復号部を選択する受信側選択部と、
    をさらに備える請求項5に記載の通信装置。
  9.  前記送信側選択部は、リフレッシュの命令の発行タイミングに合わせて符号化部を変更し、
     前記受信側選択部は、リフレッシュの命令の発行タイミングに合わせて復号部を変更する請求項8に記載の通信装置。
  10.  送信側シード値を用いて符号化されたアドレスをホスト部から受信して、符号化されたアドレスを復号するメモリモジュールであって、
     符号化に用いられたシード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリモジュール。
  11.  少なくとも符号化されたアドレスを送受信する通信装置であって、
     符号化された前記アドレスを送信する送信部と、
     前記送信部から符号化された前記アドレスを受信する受信部と、
    を備え、
     前記送信部は、
     所定のシード値を送信側シード値として生成する送信側シード値生成部と、
     前記送信側シード値を用いて前記アドレスを符号化する符号化部と、
    を備え、
     前記受信部は、
     前記送信側シード値と同じシード値を受信側シード値として生成する受信側シード値生成部と、
     前記受信側シード値を用いて符号化された前記アドレスを復号する復号部と、
    を備え、
     前記送信側シード値生成部は、
     任意の値である送信側秘密鍵と、任意の値及び任意の素数の組である公開鍵とから、一方向性関数の演算を実行して送信側中間値を算出する送信側中間値算出部と、
     前記受信側シード値生成部において実行される、一方向性関数の演算結果である受信側中間値に基づいて、送信側シード値を算出する送信側シード値算出部と、
    を備え、
     前記受信側シード値生成部は、
     任意の値である受信側秘密鍵と、前記公開鍵とから、一方向性関数の演算を実行して前記受信側中間値を算出する受信側中間値算出部と、
     前記送信側中間値算出部において算出された前記送信側中間値に基づいて、受信側シード値を算出する受信側シード値算出部と、
    を備える通信装置。
  12.  少なくとも符号化されたアドレスを送受信する通信装置としてコンピュータを機能させるプログラムであって、
     前記コンピュータを、
     符号化された前記アドレスを送信するホスト部であって、所定のシード値である送信側シード値を用いて前記アドレスを符号化する符号化部を備えるホスト部と、
     前記ホスト部から符号化された前記アドレスを受信するメモリ部であって、前記送信側シード値と同じシード値である受信側シード値を用いて符号化された前記アドレスを復号する復号部を備えるメモリ部、
    として機能させるプログラム。
PCT/JP2019/033778 2019-08-28 2019-08-28 通信装置、メモリモジュール、及びプログラム WO2021038769A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/033778 WO2021038769A1 (ja) 2019-08-28 2019-08-28 通信装置、メモリモジュール、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/033778 WO2021038769A1 (ja) 2019-08-28 2019-08-28 通信装置、メモリモジュール、及びプログラム

Publications (1)

Publication Number Publication Date
WO2021038769A1 true WO2021038769A1 (ja) 2021-03-04

Family

ID=74685350

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/033778 WO2021038769A1 (ja) 2019-08-28 2019-08-28 通信装置、メモリモジュール、及びプログラム

Country Status (1)

Country Link
WO (1) WO2021038769A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10303882A (ja) * 1997-04-24 1998-11-13 Fuji Xerox Co Ltd 暗号化方法
JP2006277411A (ja) * 2005-03-29 2006-10-12 Toshiba Corp プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
JP2009031853A (ja) * 2007-07-24 2009-02-12 Nsk Ltd 車載用擬似乱数生成装置
JP2011524099A (ja) * 2008-04-07 2011-08-25 インターデイジタル パテント ホールディングス インコーポレイテッド セキュリティ保護されたセッション鍵生成
JP2014222420A (ja) * 2013-05-13 2014-11-27 株式会社メガチップス 半導体記憶装置及びデータ処理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10303882A (ja) * 1997-04-24 1998-11-13 Fuji Xerox Co Ltd 暗号化方法
JP2006277411A (ja) * 2005-03-29 2006-10-12 Toshiba Corp プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
JP2009031853A (ja) * 2007-07-24 2009-02-12 Nsk Ltd 車載用擬似乱数生成装置
JP2011524099A (ja) * 2008-04-07 2011-08-25 インターデイジタル パテント ホールディングス インコーポレイテッド セキュリティ保護されたセッション鍵生成
JP2014222420A (ja) * 2013-05-13 2014-11-27 株式会社メガチップス 半導体記憶装置及びデータ処理システム

Similar Documents

Publication Publication Date Title
US9910790B2 (en) Using a memory address to form a tweak key to use to encrypt and decrypt data
KR102512361B1 (ko) 향상된 신호 무결성을 갖는 저-전력 스크램블링
US10313128B2 (en) Address-dependent key generator by XOR tree
JP5167374B2 (ja) データ暗号化装置、及び、メモリカード
US20190384938A1 (en) Storage apparatus and method for address scrambling
US10496552B2 (en) Trusted computing system with enhanced memory
KR20150064148A (ko) 물리적 복제방지 기능으로서 이용되는 메모리로부터 암호 키를 생성하기 위한 시스템
EP2715524A2 (en) Semiconductor memory device
US8908859B2 (en) Cryptographic apparatus and memory system
WO2012172832A2 (en) Authenticator, authenticatee and authentication method
US20110314301A1 (en) Systems and methods for hardware key encryption
CN111082925A (zh) 基于aes算法和puf技术的嵌入式系统加密保护装置和方法
US20150331810A1 (en) Randomized memory access
GB2532836A (en) Address-dependent key generation with substitution-permutation network
CN104902138A (zh) 加密/解密系统及其控制方法
CN112887077A (zh) 一种ssd主控芯片随机缓存保密方法和电路
CN213876729U (zh) 一种ssd主控芯片随机缓存保密电路
CN103020549A (zh) 存储器的保护装置以及存储装置
JPWO2018066506A1 (ja) 通信装置、通信方法、通信システム及び記録媒体
JP2011187153A (ja) 半導体装置およびメモリ装置
US9152801B2 (en) Cryptographic system of symmetric-key encryption using large permutation vector keys
WO2021038769A1 (ja) 通信装置、メモリモジュール、及びプログラム
US11797717B2 (en) Bus encryption for non-volatile memories
JP2016157055A (ja) 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法
US10892903B2 (en) Communication system capable of preserving a chip-to-chip integrity

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19943240

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19943240

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP