WO2012053053A1 - 外部ブートデバイス及びネットワーク通信システム - Google Patents

外部ブートデバイス及びネットワーク通信システム Download PDF

Info

Publication number
WO2012053053A1
WO2012053053A1 PCT/JP2010/068346 JP2010068346W WO2012053053A1 WO 2012053053 A1 WO2012053053 A1 WO 2012053053A1 JP 2010068346 W JP2010068346 W JP 2010068346W WO 2012053053 A1 WO2012053053 A1 WO 2012053053A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
vector
cpu
interrupt
dummy code
Prior art date
Application number
PCT/JP2010/068346
Other languages
English (en)
French (fr)
Inventor
杉中順子
古川義久
Original Assignee
Suginaka Junko
Furukawa Yoshihisa
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 Suginaka Junko, Furukawa Yoshihisa filed Critical Suginaka Junko
Priority to PCT/JP2010/068346 priority Critical patent/WO2012053053A1/ja
Publication of WO2012053053A1 publication Critical patent/WO2012053053A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Definitions

  • the present invention relates to an external boot device and a network communication system that are mounted on an information processing apparatus including a CPU and externally boot the information processing apparatus.
  • Patent Document 1 describes an OS (Operation System) startup method stored in a hard disk of an information processing apparatus. More specifically, when power-on of the information processing apparatus is detected, a boot device that can be started is searched by booting the BIOS (Basic Input / Output system) stored in the flash memory, and the USB (Universal Serial Bus) ) Start the boot OS stored in the memory, and first display the password input screen on the display means. Next, an input of a password from the input means is accepted for this input screen. When the password is input, the input password and information unique to the USB memory are concatenated and converted into a hash value, and an unlock password for the hard disk to be activated is generated.
  • BIOS Basic Input / Output system
  • USB Universal Serial Bus
  • Patent Document 1 describes that the virus check of the hard disk can be performed by performing a virus check using a virus check function stored in the USB memory in a state where the hard disk is unlocked. Has been.
  • Patent Document 2 describes a method for executing a startup program. More specifically, in response to an initial read request from the personal computer to the hard disk, a temporary startup sector storing an arbitrary program such as security is read prior to the startup sector of the storage medium storing the startup program, and the arbitrary program is executed. It has an activation preprocessing step. Then, after execution of an arbitrary program such as security, the original boot program is executed to start the OS. As a result, it is possible to execute an arbitrary program such as security prior to OS startup without changing the BOIS of the personal computer or the startup sector (LBA0) of the storage medium.
  • Patent Document 1 is a mode in which a password is input on a password input screen, there is a risk of password theft. Therefore, an individual who creates a hash value by combining with unique information of a USB memory and uses it as unlock information Authentication technology. Patent Document 1 describes that a virus check of a hard disk can be performed by performing a virus check using a virus check function stored in a USB memory, but there is no specific description. .
  • Patent Document 2 even when an arbitrary program in the temporary startup sector in the hard disk is a virus check program, an illegal program having, for example, a Rootkit form is started before the program is executed. Since it is possible to conceal itself (unauthorized program) from the program, there is a certain limit to the reliability against virus checking. Patent Document 2 does not describe any specific method for monitoring a virus before the OS is started. Even if a hidden virus can be found before the power is turned on, no virus check is performed after the restart (OS startup), so that the virus that enters during the restart is still defenseless. Furthermore, since Patent Documents 1 and 2 are general modes for carrying out processing on the personal computer side, there is a limit to securing high reliability even in this respect.
  • USB memory boot method such as the start-up method described in Patent Document 1
  • the USB memory boot method when the USB memory is connected to the terminal and the terminal is turned on, the USB memory is preferentially designated from the BIOS, and the OS stored in the USB memory is booted.
  • This is a technology that allows a terminal to be used under its own PC environment.
  • a virus removal program is stored and activated preferentially so that latent viruses in the terminal can be removed.
  • An object of the present invention is to provide an external boot technology that suppresses the movement of malware such as viruses.
  • An external boot device is an external boot device that is attached to an information processing apparatus including a CPU and boots the information processing apparatus, and the information processing apparatus BIOS executes the information when the BIOS of the information processing apparatus is executed by the CPU.
  • a startup program that is set to be written to the startup memory area of the processing device, which is executed based on a single instruction from the CPU after writing and overwrites the interrupt vector table with a predetermined number of bits of dummy code
  • a start program comprising a second program for setting a normal reset program for normal reset processing executed as a result of the occurrence of the general protection exception as an interrupt handler Characterized by having a startup program storage section storing A.
  • the network communication system includes an external boot device and a plurality of the information processing terminals connected to the network so as to communicate with each other via the external boot device.
  • an information processing apparatus such as a personal computer (PC) is connected to an external boot device, for example, a USB (Universal Serial ⁇ Bus) memory
  • the information processing device is turned on.
  • the processing device is activated (booted) by a CPU or the like so as to be operable.
  • the external boot device stores a startup program having first and second programs, and this startup program is read by the information processing apparatus by the CPU that is started by turning on the power of the information processing apparatus.
  • the first program is for generating a general protection exception
  • the second program is for normally resetting the startup memory area. That is, after the power is turned on, the CPU is in a startable state, and first the BIOS program is executed.
  • the external boot device is preferentially selected by the BIOS POST (Power On Self Self Test) process, and the boot program stored in the boot program storage unit of the external boot device is read into the information processing apparatus side. It is written in a predetermined area in the startup memory area.
  • the CPU control is transferred from the BIOS to the startup program. Then, one instruction for executing the startup program is output from the CPU.
  • this instruction is issued, a dummy code for a predetermined number of bits is overwritten in the interrupt vector table set in a predetermined area of the activation memory area by the activation program.
  • the dummy code is written in advance in the external boot device, read out from the external boot device in accordance with the execution instruction of the startup program, and overwritten so as to overlap with part or all of the interrupt vector table in the startup memory area. This overwriting operation is performed so that a general protection exception set in a predetermined vector of the interrupt vector table occurs.
  • the general protection exception is generated when an inaccessible area is accessed, for example, when trying to fall below the address 0x0000.
  • a normal reset program for an interrupt handler set in a predetermined area is started. By executing the normal reset program, predetermined data is written to the startup memory area, and the startup memory area is normally reset.
  • the startup program is, for example, MBR (Master Boot Record).
  • the movement of malware can be suppressed by external boot.
  • FIG. 1 is a schematic diagram illustrating a network communication system to which an external boot device according to an embodiment of the present invention is applied. It is a block diagram which shows an example of the hardware constitutions of the external boot device shown in FIG. It is a block diagram which shows the function part relevant to the boot of a terminal and an external boot device. It is a memory map figure of a terminal. It is a figure explaining the relationship between the overwrite process to an interruption vector table, and the normal reset process based on a general protection exception. It is a flowchart explaining the procedure of the starting process of BIOS performed by CPU of a terminal. It is a flowchart explaining the procedure of the rewriting process of the dummy code performed by CPU of USB memory. It is a flowchart explaining the procedure of the execution process of MBR performed by CPU of a terminal.
  • FIG. 1 is a schematic diagram showing a network communication system to which an external boot device according to an embodiment of the present invention is applied.
  • FIG. 2 is a block diagram showing an example of a hardware configuration of the external boot device shown in FIG.
  • FIG. 3 is a block diagram showing functional units related to booting of the terminal and the external boot device.
  • FIG. 4 is a memory map diagram of the terminal.
  • the network communication system shown in FIG. 1 includes, for example, a terminal 1 that is an example of an information processing apparatus incorporating a personal computer, a USB (Universal Serial Bus) memory 2 that is an example of an external boot device connected to the terminal 1, And a network 3 such as the Internet.
  • the terminal 1 is connected to the network 3 via a provider (ISP) 4.
  • ISP provider
  • the terminal 1 is connected to the network 3 as it is, and when the USB memory 2 is attached, the terminal 1 is connected to the network 3 via the USB memory 2 as will be described later.
  • a plurality of ISPs 4 are arranged on the network 3, and each ISP 4 is connected to one or a plurality of terminals 1 and an unillustrated website that provides various types of information.
  • the USB memory 2 is provided, for example, when receiving registration as a member authorized to receive provision of a predetermined service through an operation from the terminal 1.
  • information for identifying a member and other information are recorded in an internal storage unit. The configuration and functions of the USB memory 2 will be described later.
  • the terminal 1 has a computer and, as shown in FIG. 3, has a CPU (Central Processing Unit) 10 as control means.
  • the CPU 10 is connected to a ROM (Read Only Memory) 11 and a RAM (Random Access Memory) 12.
  • the ROM 11 includes a flash ROM in which data can be rewritten.
  • the ROM 11 includes the flash ROM, CMOS (Complementary Metal Oxide Semiconductor), and the like, and BIOS (Basic Input / Output system) is written in the flash ROM 110 (see FIG. 4).
  • BIOS Basic Input / Output system
  • the CPU 10 is connected with an operation unit 13 including a numeric keypad and a mouse for inputting necessary commands and information by an operator, and a display unit 14 for displaying an image.
  • the display unit 14 is used for displaying input information and displaying communication contents.
  • the BIOS is set so that the USB memory 2 that is an external boot device is preferentially designated.
  • the RAM 12 includes, for example, a startup memory area 120 that is a work area at the time of startup, a work area for executing normal processing, and a hard disk (HDD) 121 that stores necessary programs and data.
  • the terminal 1 is provided with a chip set 15 as shown in FIG.
  • the chipset 15 is a main component that constitutes a mother board (not shown). Data of all components connected to the mother board, such as the CPU 10 and various memories, a hard disk (HDD 121, see FIG. 4), a CD-ROM (not shown), and the like. It controls communication.
  • the network 3 is connected to one or a predetermined number of member servers 5 and a plurality of customer terminals 6 via the ISP 4.
  • the member server 5 stores appropriate information related to members who own the terminal 1 or can control the operation, for example, member information such as a member's name, name, e-mail address, and address in units of members.
  • the supplier terminal 6 stores a transaction request information, a process for a transaction request from each terminal 1 as a client, for example, a process by electronic settlement, and manages information.
  • information that can be provided to the terminal 1 as necessary for example, processing software necessary for executing a service provided to the member, for example, required documents are created.
  • Transaction details and history information for each terminal 1 may be stored (stored and managed) in a document creation program or even in a large-capacity server.
  • the network communication system can employ the following modes as an example.
  • the terminal 1 may be a dedicated terminal that can be connected only to a dedicated network, or may be any general-purpose terminal that can be connected to another network by switching to the Internet.
  • a program file (referred to as general-purpose AP (application program)) for executing each of the general processes is stored.
  • the USB memory 2 stores a program file (referred to as a specific AP) that performs processing related to execution of specific application software.
  • the general-purpose AP is enabled by the OS read by the original MBR and loader in the terminal 1, and the specific AP is the MBR and loader (or MBR activated by the restart program) in the USB memory 2. It is made operable by the OS read by. More specifically, each terminal 1 such as a consumer, a store, or a company that is a member creates, as a specific AP, the creation of each document (related to so-called commercial transactions) related to buying and selling of goods and services, estimation or billing, and deposits and withdrawals. And software for performing communication and software for predetermined authentication processing as needed are loaded from the USB memory 2 after booting.
  • the terminal 1 uses a specific AP to make a settlement in a general commercial transaction, for example, issue and receive an invoice from a merchant store, and deposit from a buyer to an account of a contract financial institution that issues the invoice (ie, payment )
  • various electronic documents can be sent and received regardless of electronic payment.
  • the specific AP can create various documents as text-format or binary-format electronic files.
  • the electronic file is exchanged between the terminals 1 via the member server 5 (or in parallel), for example.
  • a specific AP that performs a payment instruction process (such as an instruction for a payment process between financial institutions) according to a financial payment document from the terminal 1 of a consumer or company is also installed in each financial institution terminal 1. .
  • the USB memory 2 in which unique information is written for each registered member is distributed.
  • the USB memory 2 is inserted into the USB port of the terminal 1, and at least USB authentication processing is preferably performed, preferably personal authentication (authentication of being a valid holder of the USB memory 2). ) Subject to processing.
  • the member server 5 includes a storage unit for storing each member's file transmission / reception history and its files for management.
  • the member server 5 may have an authentication function.
  • the authentication function browses a file exchanged between the member server 5 and the terminal 1, that is, a packet to check whether the member is valid or not. It is good also as a mode which performs authentication.
  • the received packet is returned to the original file, or the file to be sent is replaced with the packet.
  • the header of each packet to be transmitted includes the global IP address of the terminal 1 that is the transmission source, and the global IP addresses of other terminals that are the transmission destination and the member server.
  • the NIC (Network Interface Card) 28 shown in FIG. 2 is equipped with a router (not shown) or is connected serially to the router.
  • the address information indicating the transmission destination added to a predetermined position of each packet as a transmission signal or a reception signal is a global IP address based on the Internet protocol or the global IP address is attached.
  • Address information for identifying whether it is a predetermined local IP address (MAC address) according to, for example, Ethernet (registered trademark) for a dedicated network that is different from the private network (in a form that can be distinguished from a global IP address) (Routing table and arp (Address Resolution Protocol) table) are set.
  • the packet is checked against the table and transmitted only to the route with the matching address, so that the transmission path can be switched via the Internet or a dedicated network by software.
  • the USB memory 2 includes a mother board (not shown) in a substantially rectangular parallelepiped housing, and various circuit elements and semiconductor elements are mounted on the mother board.
  • the hub 20 is provided in the input / output unit of the USB memory 2 and is connected to the terminal 1 through the USB port of the terminal 1 so as to communicate and supply power.
  • the USB memory 2 has a predetermined number of, for example, three signal lines, and a USB controller 21 (211, 212, 213) is provided in each input / output unit.
  • the USB controller 21 performs input / output signal level and waveform shaping.
  • the CPU 22 is connected to the USB controller 211.
  • the CPU 22 executes external booting, and is connected to a ROM 23 for storing a predetermined processing program for that purpose and a RAM 24 for temporarily storing processing contents.
  • the CPU 22 is connected to a ROM, which is a flash ROM 25 in this embodiment.
  • the flash ROM 25 includes a dummy code storage unit 250 that stores data of a predetermined dummy code, an application program as the specific AP described above, a program called a driver that operates a peripheral device, and various file storage units 251 that store an OS.
  • a loader storage unit 252 that stores a loader as a program for loading the file storage unit 251 into the terminal 1.
  • the dummy code is read by the MBR master boot program and written in a predetermined area of the startup memory area 120 of the terminal 1, and the data structure will be described later.
  • the USB controller 212 is connected to a ROM, in this embodiment a flash ROM 26.
  • the flash ROM 26 has an MBR storage unit 261 that stores MBR.
  • a CPU 27 is connected to the USB controller 213.
  • the CPU 27 executes information processing when communicating with another terminal 1 or the like via the network 3, and a ROM 271 for storing a predetermined processing program for the information processing. And a RAM 272 for temporarily storing processing contents.
  • the NIC 28 that manages connection with the network 3 is connected to a public communication line up to the ISP 4 via a router (not shown), and performs communication control with respect to the network and the network 3.
  • the CPU 27 is connected to the flash ROM 26 and allows the contents of the MBR storage unit 261 to be periodically updated while the USB memory 2 is connected to the terminal 1. The update may be performed once every time the USB memory 2 is connected to the terminal 1 (regardless of before and after booting).
  • the CPU 27 transmits an MBR update request to the member server 5 and receives a new MBR from the member server 5 via the NIC 28 in response to the update request, the CPU 27 uses the MBR stored in the MBR storage unit 261 as the received content. I try to update it.
  • the encryption method may be changed for each request in addition to the content change. That is, the member server 5 has a plurality of encryption and decryption programs in advance, and encrypts each request according to a predetermined rule or a randomly selected encryption program, and the corresponding decryption programs are simultaneously or time-differenced. May be transmitted on the MBR storage unit 261 by decoding on the CPU 27 side. Thus, the MBR can be changed with high frequency by updating.
  • the CPU 10 of the terminal 1 executes a program stored in the ROM 11 and the RAM 12, thereby starting a BIOS processing unit 101 for starting up the BIOS, an MBR processing unit 102 for starting up the MBR and performing normal reset, and a loader.
  • Loader processing unit 103 to be activated I / O processing unit 104 to exchange information with the USB memory 2, use a specific AP after activation by external boot, and create a document by using a general-purpose AP after activation by normal boot It functions as an information processing unit 105 that executes various processes, and a network communication processing unit 106 that exchanges information with the other terminals 1, the member server 5, and the customer terminal 6 via the NIC or the network.
  • the BIOS processing unit 101 has a POST (Power-on-Self-Test) processing routine for checking the state of the memory and peripheral devices when the terminal 1 is turned on.
  • the USB memory 2 is given priority by this POST processing routine. Selected to start automatically.
  • the MBR master boot program bootstrap loader
  • the work area at the time of start-up is a start-up memory area 120 having a predetermined storage capacity, here an address line 20-bit specification, that is, about 1 MByte.
  • the MBR master boot program is written in the MBR area 1201, which is a predetermined location in the startup memory area 120.
  • An interrupt vector table 1202 is written in a preset area.
  • the interrupt vector table 1202 is set so that, for example, the start address of the vector 0 matches the minimum address of the RAM 12. If the USB memory 2 is not attached to the USB port, the BIOS processing unit 101 reads out the MBR program from the HDD 121, for example, in descending order of priority, thereby functioning as a general-purpose type terminal.
  • BIOS processing unit 101 passes control of the CPU 10 to the master boot program after writing the master boot program.
  • the MBR processing unit 102 executes the following two processes to suppress the movement of malware.
  • the first process is a process for normal reset, which is an EFLAGS initialization process, an interrupt vector table 1202 initialization process, a return process to the real mode, and an interrupt handler setting process. . More specifically, in the first process, by the written master boot program, (i) the trap flag (TF) in EFLAGS 152 which is one of the registers in the chipset 15 is cleared, the DF flag is set, Further, the protection mode IDTR (InterruptDescriptor Table Register: Interrupt Descriptor Table Register) in the chipset 15 is rewritten to a real mode table.
  • TF trap flag
  • DF is set
  • the protection mode IDTR InterruptDescriptor Table Register: Interrupt Descriptor Table Register
  • the vector 13 of the interrupt vector table (general protection exception) (General ProtectionFault), for example, an interrupt handler area 1203 (see FIG. 4) at an address on the activation memory area 120 that matches the address information overwritten at the address position corresponding to the address position corresponding to the inaccessible area. )
  • start-up menu In Li region 120, in which writing the pre overwriting dummy code having a predetermined data amount to the setting area of the interrupt vector table 1202 created by the BIOS (data) in a superimposed manner.
  • the interrupt vector table is stored in, for example, the flash ROM 110 and is read into the activation memory area 1202 by the operation of the BIOS.
  • the first process is repeated as a series of continuous operations by the CPU 10 based on a REP INS instruction, that is, one instruction from the CPU 10, thereby reading and overwriting a dummy code having a predetermined amount. Is to be executed. According to this, the CPU 10 does not accept other instructions during the execution of the first process. Therefore, even if the malware is hidden, the malware cannot intervene in the CPU 10 during the first process.
  • the program that executes the process (iii) is referred to as a first program, and the program that executes the process (ii) is referred to as a second program. Details of each content will be described later.
  • the second process is performed when a general protection exception is generated by the first process.
  • the general protection exception is to normally reset by activating an interrupt handler via the vector 13 and writing predetermined data in the activation memory area 120.
  • the general protection exception is generated when an inaccessible area is accessed, for example, when trying to fall below the address 0x0000.
  • predetermined data is written to the startup memory area 120, and the startup memory area 120 is normally reset.
  • the load process is a process of reading the loader from the loader storage unit 252 and writing it on the activation memory area 120 of the RAM 12.
  • the MBR processing unit 102 creates 1 Mbyte of information by mixing dummy data and the like in the loader for improving security, and reads this information into the activation memory area 120.
  • the MBR processing unit 102 passes control to the loader.
  • the loader processing unit 103 loads files such as drivers necessary for starting up the OS and the like from the various file storage units 251 to the startup memory area 120 of the RAM 12 by the loader.
  • kernels such as OS
  • the OS or the like is started, and then the specific AP is written into the RAM 12 by the loader to which control is transferred.
  • a routing setting for permitting communication between the member terminals 1 and the like is performed on the above-described router (not shown) by the written communication control program in the specific AP.
  • the specific AP loaded in the terminal 1 or the CPU 22 of the USB memory 2 periodically checks whether or not the USB memory 2 is mounted on the terminal 1, and the mounting is continued. It is preferable to maintain it for a while.
  • the terminal 1 may be treated as being attached until a signal indicating that the USB memory 2 is removed after activation is detected.
  • the CPU 22 executes a program stored in the ROM 23, thereby creating a different information for each boot, and an input / output process for processing information exchange with the terminal 1.
  • Unit 222 a network communication processing unit 223 that exchanges files created using a specific AP after activation by external boot with the NIC 28, the other terminal 1, the member server 5, and the customer terminal 6 via the network 3. Function as.
  • the data creation unit 221 creates the recorded content of the vector 13 describing the allocation address of the interrupt handler waiting on the startup memory area 120 at every boot. That is, the arrangement position of the interrupt handler may be fixed, but it is preferable from the viewpoint of security that it functions as a one-time password, for example, to be changed by a predetermined method at every boot.
  • a predetermined method at least one of a method of setting randomly using a random number from a random number generator, date and time information from a timer, member information stored in advance, etc. is used. It is possible to adopt a method of creating as more complicated variation information by combining with a predetermined rule.
  • the input / output processing unit 222 reads the dummy code data in a plurality of times, and obtains the number CX of each divided dummy code and the write position DI (or address (ES: DI)) on the startup memory area 120. However, ES indicates a segment.) Is stored in advance in the RAM 24 in association with each other, and processing for receiving and outputting a read request from the terminal 1 is performed.
  • the ROM 23 includes a processing program storage unit 231 that stores a processing program for executing processing in each of the units 221 to 223, and a member information storage unit 232 that stores information for identifying the above-described member.
  • the chip set 15 includes a CPU 10, various registers, for example, a general-purpose register 151 for temporarily storing processing data, an EFLAGS 152, which is a type of stakes register that is a value indicating the calculation state of the CPU 10, and other various registers not shown. It has a kind.
  • the boot memory area 120 includes an MBR master boot program development area (hereinafter referred to as an MBR development area) 1201 read from the USB memory 2, an interrupt vector table (interrupt vector table). 1202, an interrupt handler area 1203 in which a program for normal reset processing is recorded, and a program expansion area 1204 in which a loader and the like are expanded.
  • the interrupt vector table 1202 is a correspondence table in which the top address of a program to be processed when an interrupt occurs is stored, and processing corresponding to the interrupt is executed according to the contents of the table.
  • the interrupt vector table 1202 is configured to have a plurality of vectors (usually a predetermined number of about several tens to several tens), for example, a total of 32 bits, each of 16 bits (upper and lower). Each vector corresponds to each processing program. For example, vector 0 is INT0 for interrupting from the outside, vector 1 is also INT1, and vector 13 is general as described above. It is a protection exception.
  • the interrupt handler area 1203 is a program for writing predetermined data for normal reset in the activation memory area 120.
  • the predetermined information may simply be data of value “0” or “1”.
  • the program expansion area 1204 is a memory area that can be mapped by the loader.
  • FIG. 5 is a diagram for explaining the dummy code interrupt vector table overwriting process in the first process executed by the MBR processing unit 102 and the normal reset process based on the general protection exception in the second process. is there.
  • the process for reliably starting an interrupt handler for normal reset processing is to write the start address of the interrupt handler area 1203 to the vector 13 and to create a mechanism for generating a general protection exception as described later.
  • a mechanism for automatically shifting the processing from the vector 13 to the interrupt handler area 1203 is constructed. That is, (i) the flag DF of the EFLAGS 152 is set to 1 in order to read the write addresses of the dummy code in descending order, and (ii) the write address in descending order is less than the left end address “0x0000” of the interrupt vector table 1202 To cause a general protection exception. Furthermore, for (ii), it is necessary to generate write addresses in the direction from vector 1 to vector 0, that is, in descending order.
  • the number of bits of the dummy code is three vectors 0, 1, and 13, and at least 1 for generating unauthorized access. A bit is enough.
  • the vector 13, the vectors 1, 0, and the illegal access are discontinuous, and the overwrite position of the dummy code in the interrupt vector table tends to become clear. Therefore, as a more preferable aspect, in this embodiment, a dummy code having a data amount of at least one bit of vectors 13 to 0 and unauthorized access is created, and a write address is started from a predetermined vector of 13 or more. In order to finally cause unauthorized access, it is specified in descending order.
  • FIG. 5 shows this state, where the dummy code has a predetermined number of bits, here 512 bits (bit), and the start address is the 500th bit.
  • the data string having 512 bits is the amount of data that can be read by the USB memory 2 through a series of operations (REP INS). That is, when addresses are generated in descending order as indicated by an arrow (A), an illegal access occurs during the 501st access (assuming that each address is generated in this embodiment), and a general protection exception occurs. . When the general protection exception occurs, the CPU 10 moves to the vector 13 as indicated by an arrow (B).
  • the CPU 10 reads the stored contents of the vector 13, and moves to the address of the activation memory area 120 that matches the read contents, that is, the head address of the interrupt handler area 1203 as shown by the arrow (C). Then, the CPU 10 executes an interrupt handler to perform normal reset processing.
  • This dummy code overwriting process is performed in the REP INS process by one instruction from the CPU 10, and the normal reset process is performed by the interrupt handler in succession to the dummy code overwriting process.
  • the instruction has done both, so there is no opportunity for malware to intervene in the CPU 10 during that time.
  • the malware operates during the BIOS startup, sets the flag TF of the EFLAGS 152, and the vector of the interrupt vector table 1202 Assume that 1 is rewritten to an address where the malware body exists. It is assumed that a certain instruction is executed after the BIOS is started, typically during MBR startup, and then the control of the CPU 10 is taken over by the malware (a debug interrupt is generated by the malware). At this time, the control shifts to the address written in the vector 1, and the operation by malware (malware duplication, data falsification, destruction, etc.) is executed.
  • the contents of the vector necessary for normal reset among the vectors in the interrupt vector table are rewritten with a dummy code, so that the address information existing in the malware body is substantially deleted.
  • the startup memory area 120 is also normally reset, and the latent malware itself is deleted. In other words, even if the malware sets a behavior for the behavior during the BIOS startup, when the MBR is started, all the information for the behavior is deleted, and as a result, the subsequent behavior is suppressed. It will be.
  • the data of the dummy code is divided into a plurality of pieces, which is divided into 512 in this embodiment.
  • the division dummy code is read from the rear end toward the front end.
  • a dummy code data request (OUT AE) is output to the USB memory 2.
  • AE is the address of the USB2 dummy code storage unit 250 in which the dummy code is stored.
  • CX Count the number of acquisition times CX (IN CX).
  • CX needs to be set so that at least the value 501 is counted in this embodiment. By doing this, it is possible to specify addresses in descending order from the 500th bit to the 0th bit, and to specify the address 501th time (illegal access) below the 0th bit.
  • FIG. 6 is a flowchart for explaining the procedure of the BIOS activation process executed by the CPU 10 of the terminal 1.
  • step S1 the power of the terminal 1 is turned on
  • step S3 the device check of the memory and peripheral devices
  • Step S3 whether or not the USB memory 2 is attached to the USB port is confirmed, for example, by using a known handshake signal exchange.
  • the USB memory 2 is attached to the USB port of the terminal 1. That is, when the USB memory 2 is attached to the USB port, the MBR master boot program is written in the boot memory area 120 of the RAM 12 by the BIOS boot routine according to the priority order (step S5).
  • step S7 it is determined whether or not the reading of the MBR master boot program has been completed. If completed, the control is transferred to the MBR master boot program (step S9). On the other hand, if the MBR master boot program has not been written, the process returns to step S5 and the same processing is repeated.
  • FIG. 7 is a flowchart for explaining the procedure of the dummy code rewriting process executed by the CPU 22 of the USB memory 2.
  • step # 1 it is determined whether or not the USB memory 2 is activated upon receiving power supply via the USB port of the terminal 1 (step # 1). For example, this determination may be performed by detecting the generation of a clock pulse from a clock generator (not shown).
  • step # 3 If it is determined that the USB memory 2 has been activated, it is then determined whether or not there is an MBR read request from the terminal 1 (step # 3). When there is an MBR read request (Yes in Step # 3), the CPU 10 executes the MBR read. On the other hand, when there is an MBR read request, information on the bit position corresponding to the vector 13 in the interrupt vector table 1202 is generated randomly or according to a predetermined rule in the dummy code (step # 5). Next, the created information is set as an arrangement address of the interrupt handler (step # 7). Thereafter, the CPU 22 shifts to a standby state for a dummy code read request (step # 9). As a result, since the arrangement position of the interrupt handler area 1203 is changed at every boot, security is further improved.
  • FIG. 8 is a flowchart for explaining the procedure of the MBR execution process executed by the CPU 10 of the terminal 1.
  • the EFLAGS flag TF is reset and the flag DF is set (step S21).
  • the resetting of the flag TF is canceled in consideration of the possibility that the program execution procedure may be in the single step mode by malware.
  • a REP INS command is issued to execute a program having a REP INS process (corresponding to a part of the MBR master boot program) (step S23).
  • the dummy code is sequentially read from the USB memory 2 and written sequentially to the address (ES: DI) (step S25).
  • the addresses (ES: DI) are in descending order from the position of the 500th bit of the interrupt vector table 1202.
  • it is determined whether or not a general protection exception has occurred (step S27). If not, the process returns to step S25 and the dummy code reading process is repeated.
  • step S29 the stored content at the position corresponding to the vector 13 is read, and the process proceeds to the read address (step S29), and the stored content at the address is read. Since this address is the head address of the interrupt handler area 1203, execution of the interrupt handler program, that is, normal reset processing is started from this point (step S31). At the end of the normal reset process, an EFLAGS initialization process or an interrupt vector table setting process may be executed.
  • step S33 it is determined whether or not the normal reset process has been completed. If not completed, the process returns to step S31. On the other hand, if the normal reset process is completed, the loader load process is started (step S35). Then, after loading of the loader is finished, the control of the CPU 10 is transferred from the MBR to the loader (step S37). Therefore, the loader is deployed in an environment that has been normally reset.
  • USB is adopted as an external device, but the present invention is not limited to this, and any device including at least a CPU, a ROM, and a RAM may be used.
  • any device including at least a CPU, a ROM, and a RAM may be used.
  • it may be an IC card or may be a mode built in a portable communication device.
  • REP INS is used to transfer a predetermined amount of dummy code continuously to the activation memory area in a single command by the CPU 10, but instead of REP INS, A mode in which a dummy code is loaded into the activation memory area 120 using a DMAC (Direct Memory Access Controller) chip may be used.
  • the DMAC is a bus master type controller (circuit) that sends and receives information by managing the bus control between the terminal 1 and the USB memory 2 by issuing an execution instruction without being controlled by the CPU 10. is there.
  • the activation memory area 120 is normally reset by the interrupt handler.
  • the present invention is not limited to this range, and a normal reset process may be performed on the entire RAM 12.
  • the vector 0 of the interrupt vector table is aligned with the minimum address position of the RAM 12, and unauthorized access is generated by addressing in descending order.
  • the present invention is not limited to this mode.
  • the addresses are set in ascending order, and the vectors 1, 13 and one unauthorized access exceeding the maximum vector are stored.
  • the number of addresses and the dummy codes of vectors 1 and 13 are sufficient. In order to completely suppress the behavior of malware, it is more preferable to rewrite all vectors having the INT function with dummy codes.
  • the external boot device is an external boot device that is attached to an information processing apparatus including a CPU and boots the information processing apparatus, and the BIOS of the information processing apparatus is executed by the CPU.
  • Providing a startup program storage unit that stores startup programs consisting of programs It is an feature. According to this invention, the movement of malware such as viruses is suppressed.
  • the one instruction is a REP INS instruction
  • the first program is executed in response to the REP INS instruction.
  • REP INS is issued as an instruction from the activation program
  • the CPU repeatedly reads a predetermined amount of dummy code for each data amount from the external boot device and writes it in the activation memory area. That is, transfer of a dummy code having a certain amount of data from the external boot device to the startup memory area is executed with one instruction. Therefore, even if the malware is hidden or the like, the control of the CPU is not transferred to the malware during the transfer period of the dummy code for the predetermined number of bits.
  • the behavior (movement) of the malware is suppressed by rewriting the contents of a predetermined vector in the interrupt vector table that may have been rewritten by the malware with a dummy code for a predetermined number of bits. It becomes possible to make it.
  • the dummy code has a bit number corresponding to at least three vectors 0, 1, and 13 in the interrupt vector table
  • the boot program stores the dummy code At least in the vector 13 of the interrupt vector table and in the direction from at least the vector 1 to the vector 0, the predetermined number of bits is larger than the number of bits corresponding to the number of vectors to be overwritten,
  • the data overwritten on the vector 13 is preferably the start address of the interrupt handler.
  • the interrupt vector table is a correspondence table in which the top address of a program to be processed when an interrupt occurs is stored, and processing corresponding to the interrupt is executed according to the contents of the table.
  • the interrupt vector table is composed of, for example, a plurality of vectors each consisting of upper 16 bits and lower 16 bits, and is generally set at a predetermined location in the activation memory area (the start address of the vector 0 is 0).
  • Each vector corresponds to each processing program.
  • vectors 0 and 1 are INT0 and INT1 for interrupting from the outside
  • vector 13 is a general protection exception as described above.
  • In the vector area of the INT instruction an address that becomes a transition destination when an interrupt occurs, that is, a start address of an area in which a program to be executed is written.
  • the malware operates when the BIOS starts up, and the malware body exists in the vector 1 (INT1) of the interrupt vector table.
  • INT1 the vector 1 of the interrupt vector table.
  • the address is written. It is assumed that after the BIOS is started, a certain instruction is executed during startup of the startup program, typically the MBR, and then the control of the CPU has been taken over by the malware (a debug interrupt has occurred due to the malware). At this time, the control shifts to the address written in the vector 1, and the operation by malware (malware duplication, data falsification, destruction, etc.) is executed.
  • the first program is executed following the reading of the startup program.
  • the dummy code has a bit number corresponding to at least three vectors, and the write address is set so that these vectors are overwritten in the direction of vector 13 and vector 1 to vector 0. Is set.
  • the number of bits of the dummy code is set to be larger than the total number of bits of the vectors 13, 1, 0 when the number of vectors to be overwritten is 3, and therefore does not exist after the overwriting of the vector 0 is completed.
  • an address below the address of vector 0, that is, a negative address
  • the CPU shifts to the vector 13, reads the address recorded in the vector 13, and shifts to the address. Since this address is the start address of the interrupt handler, a rewrite process of the activation memory area by the interrupt handler program, that is, predetermined data for normal reset is executed. Therefore, even if data alteration or the like has been performed by malware, it is possible to suppress the behavior of the malware and to restore a clear environment by normal reset processing.
  • the predetermined number of bits of the dummy code is a number of bits n exceeding the number of bits from the vector 0 to the vector 13 of the interrupt vector table
  • the first program is The dummy code is read from a predetermined vector equal to or greater than vector 13 in the interrupt vector table in the direction of vector 0.
  • the read position to the interrupt vector table by the first program is the vector 0. To a position where the number of bits is less than n.
  • the dummy code is continuously overwritten from one vector above the vector 13 toward the vector 0. Accordingly, since the contents of the vector 13 and the vector 1 are rewritten, the address of the interrupt handler can be set in the vector 13 at every boot. Since vector 1 is also forcibly rewritten, even if malware latent position information is recorded, it is erased by overwriting the dummy code.
  • the external boot device preferably includes data creation means for setting the data to be overwritten on the vector 13 for each boot. According to this configuration, since the writing position of the interrupt handler is set every time booting, it becomes possible to change and set the address like a so-called one-time password, and tamper resistance is improved.
  • the normal reset program is to write predetermined data in the startup memory area.
  • the predetermined data is simple data, for example, data such as the value “0” or “1”, the amount of data can be suppressed and can be created each time. It is also possible to eliminate the work of recording in advance and reading every boot.
  • the external boot device includes a loader storage unit that stores a loader program that is written into a startup memory area of the information processing apparatus by the startup program and executed after the normal reset process.
  • the loader (the program for loading the OS and application) is read and expanded in the boot memory area after the normal reset by the boot program.
  • the loader can be expanded in a memory space where malware does not exist and cannot behave.

Abstract

 USBメモリ(2)は、端末(1)のBIOSがCPU(10)によって実行されることによって端末(1)の起動メモリ領域(120)に書き込まれるように設定された起動プログラムをMBR記憶部(261)に記憶している。起動プログラムは、CPU(10)からの一つの命令に基づいて実行され、500ビットのダミーコードを割込ベクタテーブル領域(1202)に上書きすると共に一般保護例外を発生させる第1のプログラム、及び一般的保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる。これにより、マルウエアの動きを抑止する外部ブートが提供できる。

Description

外部ブートデバイス及びネットワーク通信システム
 本発明は、CPUを備える情報処理装置に装着して前記情報処理装置を外部ブートする外部ブートデバイス及びネットワーク通信システムに関する。
 近年、インターネット等のネットワークに接続されたサーバや端末(パーソナルコンピュータ)等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限(アドレス制限)の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
 特許文献1には、情報処理装置のハードディスク内に格納されたOS(Operation System)起動方法が記載されている。より詳細には、情報処理装置の電源投入が検知されると、フラッシュメモリに記憶されているBIOS(Basic Input/Output system)を起動して起動可能なブートデバイスを検索し、USB(Universal Serial Bus)メモリに格納されているブートOSを起動して、まず表示手段にパスワードの入力画面を表示させる。次いで、この入力画面に対して入力手段からのパスワードの入力を受け付ける。パスワードが入力されると、入力パスワードとUSBメモリに固有な情報とを連結してハッシュ値に変換し、起動すべきハードディスクのロック解除パスワードを生成する。そして、起動するハードディスクがセキュリティ設定済みであると判断した場合には、前記ロック解除パスワードで前記ハードディスクのロック状態を解除する一方、前記ハードディスクがセキュリティ設定済みではないと判断した場合には、前記ハードディスクのセキュリティを設定し、ロック状態が解除された前記ハードディスクのMBR(Master Boot Record)を起動し、OSのブートローダを起動し、これによってOSを起動する方法である。これにより、OS起動時のセキュリティ認証が可能になる。また、特許文献1には、前記ハードディスクのロック状態が解除された状態で、USBメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されている。
 また、特許文献2には、起動プログラムの実行方法が記載されている。より詳細には、パーソナルコンピュータからハードディスクに対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタに先立ってセキュリティ等の任意プログラムを格納した仮起動セクタを読み出し、該任意プログラムを実行させる起動前処理ステップを有するようにしたものである。そして、このセキュリティ等の任意プログラムの実行後に本来の起動プログラムを実行してOSを起動させるものである。これにより、パーソナルコンピュータのBOISや記憶媒体の起動セクタ(LBA0)を変更することなく、OS起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
特開2007-66123号公報 特開2006-236193号公報
 特許文献1は、パスワード入力画面に対してパスワードを入力する態様であるためパスワードの盗難の虞があることから、USBメモリの固有情報と結合してハッシュ値を作成し、ロック解除情報とする個人認証技術である。また、特許文献1には、USBメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されているが、具体的な記載は一切ない。
 一方、特許文献2では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばRootkitの形態を有するような不正プログラムが起動され、任意プログラムから自身(不正プログラム)を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献2にはOS起動前にウイルスを監視する具体的な方法は一切記載されていない。電源投入前から潜伏していたウイルスを仮に発見し得るとしても、再起動(OS起動)後にはウイルスチェックは行われていないため、再起動中に侵入するウイルス対して依然として無防備の状態にある。さらに、特許文献1、2はパーソナルコンピュータ側で処理を担う一般的態様であるから、この点からしても高い信頼性を確保するには限界がある。
 また、近年、特許文献1に記載の起動方法のような、いわゆるUSBメモリブート方式が知られている。USBメモリブート方式は、USBメモリを端末に接続して端末の電源が投入された場合に、BIOSからUSBメモリが優先的に指定されて、その内部に記憶されたOSがブートされ、例えば職場の端末を自己のPC環境の元で使用し得るようにした技術である。このUSBメモリブート方式の別の態様として、ウイルス駆除プログラムを記憶しておき、優先的に起動させて、端末内の潜伏ウイルスを駆除可能にしたものも知られている。しかし、USBメモリ自身のウイルス感染の有無やウイルス駆除処理終了からOSの起動までの間でのウイルス侵入の有無については何等言及されていない。
 本発明の目的は、ウイルス等のマルウエアの動きを抑止する外部ブートの技術を提供することにある。
 本発明に係る外部ブートデバイスは、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のBIOSが前記CPUによって実行されることによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記CPUからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きすると共に一般保護例外を発生させる第1のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたことを特徴とするものである。
 また、本発明に係るネットワーク通信システムは、外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するものである。
 これらの発明によれば、パーソナルコンピュータ(PC)等の情報処理装置に、外部ブートデバイス、例えばUSB(Universal Serial Bus)メモリが装着された状態で、情報処理装置の電源が投入されると、情報処理装置は操作可能な状態になるようにCPU等によって起動(ブート)される。
 外部ブートデバイスには、第1、第2のプログラムを有する起動プログラムが記憶されており、この起動プログラムは情報処理装置の電源の投入によって起動されたCPUによって情報処理装置に読み出される。第1のプログラムは、一般保護例外を発生させるためのものであり、第2のプログラムは起動メモリ領域を正常リセットするためのものである。すなわち、情報処理装置は、電源投入後、CPUが起動可能状態になって、まずBIOSのプログラムが実行される。BIOSのPOST(Power On Self Test)処理によって、優先的に外部ブートデバイスが選定され、外部ブートデバイスの起動プログラム記憶部に記憶されている起動プログラムが情報処理装置側に読み込まれ、情報処理装置の起動メモリ領域内の所定域に書き込まれる。
 起動プログラムの書き込みが終了すると、CPUの制御がBIOSから起動プログラムに移される。そして、起動プログラムを実行する一つの命令がCPUから出力される。この命令が発せられると、起動プログラムによって、所定ビット数分のダミーコードが、起動メモリ領域の所定域に設定されている割込ベクタテーブルに上書きされる。ダミーコードは予め外部ブートデバイスに書き込まれており、起動プログラムの実行命令に従って外部ブートデバイスから読み出され、起動メモリ領域の割込ベクタテーブルの一部又は全部と重畳するように上書きされる。また、この上書き動作は、割込ベクタテーブルの所定のベクタに設定されている一般保護例外が発生するように行われる。一般保護例外とは、例えばアドレス0x0000を下回ろうとした場合のような、アクセスできない領域にアクセスした場合に発生するものである。一般保護例外が発生すると、所定域に設定される割込ハンドラの正常リセットプログラムが起動される。正常リセットプログラムの実行によって、所定のデータが起動メモリ領域に書き込まれ、これにより起動メモリ領域が正常リセットされた環境となる。なお、起動プログラムは、例えばMBR(Master Boot Record)などである。
 本発明によれば、外部ブートによってマルウエアの動きを抑止することができる。
本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。 図1に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。 端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。 端末のメモリマップ図である。 割込ベクタテーブルへの上書き処理と一般保護例外に基づく正常リセット処理との関係を説明する図である。 端末のCPUによって実行されるBIOSの起動処理の手順を説明するフローチャートである。 USBメモリのCPUによって実行されるダミーコードの書換処理の手順を説明するフローチャートである。 端末のCPUによって実行されるMBRの実行処理の手順を説明するフローチャートである。
 図1は、本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。図2は、図1に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。図3は、端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。図4は、端末のメモリマップ図である。
 図1に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末1と、この端末1に接続された外部ブートデバイスの一例であるUSB(Universal Serial Bus)メモリ2と、インターネット等のネットワーク3とを備えている。端末1はプロバイダ(ISP)4を介してネットワーク3と接続されている。本実施形態では、端末1はそのままネットワーク3に接続され、また、USBメモリ2が装着された状態では、後述するようにUSBメモリ2を経由してネットワーク3と接続される構成を有する。ネットワーク3上には複数のISP4が配設されており、各ISP4には、1又は複数の端末1や各種の情報を提供する図略のWebサイトが接続されている。USBメモリ2は、例えば、端末1からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。USBメモリ2は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。USBメモリ2の構成及び機能等に関しては後述する。
 端末1は、コンピュータを有しており、図3に示すように、制御手段としてのCPU(Central Processing Unit)10を有する。CPU10は、ROM(Read Only Memory)11とRAM(Random Access Memory)12とに接続されている。ROM11には、データが書き換え可能なフラッシュROMを含む。本実施形態では、ROM11は、このフラッシュROM、またCMOS(Complementary MetalOxide Semiconductor)等を備え、フラッシュROM110(図4参照)にBIOS(Basic Input/Output system)が書き込まれている。BIOSを書き換え可能にすることで、起動時におけるMBR(Master Boot Record)の記憶部に対する、読み出しの優先順位を設定可能にする態様としている。また、CPU10には、図3に示すように、操作者が必要な指令や情報を入力するテンキーやマウス等を備える操作部13及び画像を表示する表示部14が接続されている。表示部14は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、本実施形態では、BIOSは、外部ブートデバイスであるUSBメモリ2が優先的に指定されるように設定されている。RAM12は、例えば起動時のワークエリアである起動メモリ領域120、通常処理を実行する場合のワークエリア、及び必要なプログラムやデータ類が格納されるハードディスク(HDD)121等から構成されている。
 また、端末1には、図4に示すように、チップセット15が設けられている。チップセット15は、図略のマザーボードを構成する主要部品で、CPU10や各種メモリ、その他ハードディスク(HDD121、図4参照)や図略のCD-ROM等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。
 本ネットワーク3には、ISP4を介して、1又は所定数の会員サーバ5及び複数の取引先端末6が接続されている。会員サーバ5は、端末1を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末6は、クライアントである各端末1からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ5には、前記会員情報の他、必要に応じて端末1に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末1毎の取引内容及び履歴情報が記憶(保管及び管理)されていてもよい。
 なお、本発明におけるネットワーク通信システムは、以下の態様が一例として採用可能である。端末1は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末1内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル(汎用AP(application program)という)が格納されている。また、USBメモリ2内には、特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル(特定APという)が記憶されている。汎用APは、端末1内の元々のMBR、ローダによって読み出されるOSによって動作可能にされるものであり、特定APは、USBメモリ2内のMBR、ローダ(または再起動プログラムによって起動されたMBR)によって読み出されるOSによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末1には、特定APとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する(いわゆる商取引に関する)各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後にUSBメモリ2からロードされる。すなわち、端末1は、特定APによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金(すなわち支払い)指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定APは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。電子ファイルは、例えば会員サーバ5を中継して(あるいは並行して)端末1間で授受される。各金融機関の端末1には、消費者や企業の端末1からの金融的な決済書面に従った決済指示処理(金融機関間での決済処理の指令等)を行う特定APもインストールされている。登録会員毎に固有の情報が書き込まれたUSBメモリ2が配布される。会員はサービスの提供を受ける場合、このUSBメモリ2を端末1のUSBポートに差し込み、少なくともUSBの正当性の認証処理を、好ましくはさらに個人認証(USBメモリ2の正当所持者であることの認証)処理を受けた場合を条件としている。
 会員サーバ5は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ5は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ5と端末1との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
 また、本ネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的(民間含む)な機関である団体組織(国、自治体、協会、組合等含む)外にある端末1との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。
 なお、TCP/IP(transmission control protocol/internet protocol)規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末1のグローバルのIPアドレス、送信先である他の端末及び会員サーバのグローバルのIPアドレスが含まれる。
 図2に示すNIC(Network Interface Card)28には図略のルータが装備され、乃至はルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルIPアドレスか、このグローバルIPアドレスの付し方とは異なる(グローバルIPアドレスとは識別可能な形態である)専用ネットワーク用の、例えばイーサネット(登録商標)用等に準じた所定のローカルIPアドレス(MACアドレス)かを識別するためのアドレス情報(ルーティングテーブルやarp(Address Resolution Protocol)テーブル)の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
 図2において、USBメモリ2は、略直方体形状の筐体内にマザーボード(図略)を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。ハブ20は、USBメモリ2の入出力部に設けられ、端末1のUSBポートを介して端末1と通信、電源供給可能に接続するものである。USBメモリ2は、所定数の、例えば3系統の信号ラインを有し、入出力部にはそれぞれUSBコントローラ21(211,212,213)が設けられている。USBコントローラ21は、入出力される信号のレベルや波形成形を行うものである。
 USBコントローラ211には、CPU22が接続されている、CPU22は、外部ブートを実行させるもので、そのための所定の処理プログラムを記憶するROM23及び処理内容を一時的に格納するRAM24に接続されている。また、CPU22には、ROM、本実施形態ではフラッシュROM25が接続されている。フラッシュROM25は、所定のダミーコードのデータを記憶するダミーコード記憶部250と、前述した特定APとしてのアプリケーションプログラム、周辺装置を動作させるドライバというプログラム及びOSを格納する各種ファイル記憶部251と、各種ファイル記憶部251を端末1にロードさせるためのプログラムであるローダを記憶するローダ記憶部252とを有する。ダミーコードは、MBRのマスターブートプログラムによって読み出され、端末1の起動メモリ領域120の所定域に書き込まれるもので、データ構造は後述する。
 USBコントローラ212には、ROM、本実施形態ではフラッシュROM26が接続されている。フラッシュROM26は、MBRを記憶するMBR記憶部261を有する。
 USBコントローラ213には、CPU27が接続されている、CPU27は、ネットワーク3を介して他の端末1等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するROM271及び処理内容を一時的に格納するRAM272に接続されている。また、前述したように、ネットワーク3との接続を管理するNIC28は、図略のルータを介してISP4までの公衆通信回線と接続され、その網及びネットワーク3に対する通信制御を行うものである。CPU27は、フラッシュROM26と接続されており、USBメモリ2が端末1に接続された状態において、MBR記憶部261の内容を周期的に更新可能にしている。更新は、USBメモリ2が端末1に接続される都度の1回(ブートの前後を問わない)でもよい。CPU27は、会員サーバ5に対してMBRの更新要求を発信し、この更新要求を受けて会員サーバ5からNIC28を介して新たなMBRを受信すると、MBR記憶部261のMBRを、この受信内容に更新するようにしている。
 MBRの更新態様としては、内容の変更の他、要求毎に暗号方法が変更される態様としてもよい。すなわち、会員サーバ5は、予め複数の暗号及び復号プログラムを有しており、要求毎に、所定のルールにより又は無作為に選定した暗号化プログラムで暗号化し、対応する復号化プログラムを同時にあるいは時間差を置いて送信することで、CPU27側で復号して、MBR記憶部261に更新的に書き込むようにしてもよい。このように更新によってMBRを高い頻度で変更することができる。
 図3において、端末1のCPU10は、ROM11及びRAM12に記憶されたプログラムを実行することによって、BIOSを起動させるBIOS処理部101、MBRを起動させて正常リセットを行わせるMBR処理部102、ローダを起動させるローダ処理部103、USBメモリ2との間で情報の授受を行う入出力処理部104、外部ブートによる起動後に特定APを用いて、また通常ブートによる起動後に汎用APを用いて文書作成その他種々の処理を実行する情報処理部105、及びNICやネットワークを介して他の端末1、会員サーバ5及び取引先端末6との間で情報の授受を行うネットワーク通信処理部106として機能する。
 BIOS処理部101は、端末1の電源投入を受けて、メモリや周辺機器の状態をチェックするPOST(Power On Self Test)処理ルーチンを有しており、このPOST処理ルーチンによって、USBメモリ2が優先的に起動するように選択される。POST処理ルーチンによって、MBRのマスターブートプログラム(ブートストラップローダ)が、USBメモリ2のMBR記憶部261から読み出されて、RAM12の起動時のワークエリアに書き込まれる。起動時におけるワークエリアは、所定の記憶容量、ここではアドレスライン20ビット仕様、すなわち約1MByteを有する起動メモリ領域120である。MBRのマスターブートプログラムは起動メモリ領域120内の所定箇所であるMBR領域1201に書き込まれる。また、予め設定された領域には、割込ベクタテーブル1202が書き込まれる。割込ベクタテーブル1202は、例えばベクタ0の先頭アドレスがRAM12の最小アドレスに一致するように設定されている。なお、USBポートにUSBメモリ2が装着されていない場合には、BIOS処理部101によって、優先順位の降順に従って、例えばHDD121からMBRのプログラムが読み出され、これによって汎用タイプの端末として機能する。
 そして、BIOS処理部101は、正常であれば、マスターブートプログラムの書き込み後、CPU10の制御をマスターブートプログラムに渡すようにしている。
 MBR処理部102は、マルウエアの動きを抑止するために、以下の2つの処理を実行する。第1の処理は、正常リセットのための処理であって、EFLAGSの初期化処理、割込ベクタテーブル1202の初期化処理、リアルモードへの戻し処理及び割込ハンドラの設定処理を行う処理である。第1の処理は、より詳細には、書き込まれたマスターブートプログラムによって、(i)チップセット15内のレジスタの1つであるEFLAGS152内のトラップフラグ(TF)をクリア、DFフラグをセットし、さらにチップセット15内のプロテクトモード用のIDTR(InterruptDescriptor Table Register:割込ディスクリプタテーブルレジスタ)をリアルモード用のテーブルに書き換え、(ii)ダミーコードのうち、割込ベクタテーブルのベクタ13(一般保護例外(General ProtectionFault)、例えばアクセスできない領域にアクセスした場合に指定されるベクタ)に対応するアドレス位置に上書きされるアドレス情報に一致する起動メモリ領域120上のアドレスに割込ハンドラ領域1203(図4参照)を書き込み、(iii)起動メモリ領域120内において、予めBIOSによって作成された割込ベクタテーブル1202の設定領域に対して所定のデータ量を有する上書き用のダミーコード(データ)を重畳的に書き込むものである。なお、割込ベクタテーブルは、例えばフラッシュROM110に格納されており、BIOSの動作によって起動メモリ領域1202に読み出される。
 本実施形態では、この第1の処理は、REP INS命令、すなわちCPU10からの1つの命令に基づいて、当該CPU10によって一連の連続動作として繰り返されることで、所定量を有するダミーコードの読み出し及び上書きが実行されるようにしている。これによれば、CPU10は、第1の処理の実行中、他の命令を受付けないものとなる。従って、仮にマルウエアが潜伏していたとしても、そのマルウエアが、第1の処理の期間中にCPU10に介入することはできない。なお、前記(iii)の処理を実行するプログラムを第1のプログラムといい、前記(ii)の処理を実行するプログラムを第2のプログラムという。それぞれの内容の詳細は後述する。
 第2の処理は、第1の処理によって一般保護例外が発生することで行われる。一般保護例外は、ベクタ13を介して割込ハンドラを起動し、起動メモリ領域120に所定のデータを書き込むことで正常リセットするものである。一般保護例外とは、例えばアドレス0x0000を下回ろうとした場合のような、アクセスできない領域にアクセスした場合に発生するものである。一般保護例外が発生すると、所定のデータが起動メモリ領域120に書き込まれ、これにより起動メモリ領域120が正常リセットされた環境となる。
 第2の処理の後には、MBRのマスターブートプログラムによるロード処理が行われる。ロード処理は、ローダ記憶部252からローダを読み出して、RAM12の起動メモリ領域120上に書き込む処理である。MBR処理部102は、セキュリティ向上のため、ローダにダミーとなるデータ等を混在させて1Mbyte分の情報を作成し、この情報を起動メモリ領域120に読み出すようにしている。MBR処理部102は、マスターブートプログラムによるローダの書き込みが終了したら、ローダに制御を渡す。
 ローダ処理部103は、ローダによって、OS等の起動に必要なドライバ等のファイルを各種ファイル記憶部251からRAM12の起動メモリ領域120にロードするものである。なお、OS等を起動するための準備を行った上で、OS等のカーネルを起動する。こうしてOS等が起動することとなり、次いで、制御が移されたローダによって特定APがRAM12に書き込まれる。さらに、書き込まれた特定AP内の通信制御プログラムによって、前述したルータ(図略)に対して、会員の端末1等の間での通信を許可するルーティング設定が施される。なお、この状態は、端末1にロードされた特定APにより、あるいはUSBメモリ2のCPU22によって、端末1にUSBメモリ2が装着されているか否かを周期的にチェックし、装着が継続されている間、維持されるようにすることが好ましい。あるいは、端末1において、起動後にUSBメモリ2が抜かれたことを示す信号が検出されるまで、装着が継続されていると扱ってもよい。
 次に、図3において、CPU22は、ROM23に記憶されたプログラムを実行することによって、ブート毎に異なる情報を作成するデータ作成部221、端末1との間で情報の授受を処理する入出力処理部222、外部ブートによる起動後に特定APを用いて作成されたファイル等をNIC28、ネットワーク3を介して他の端末1、会員サーバ5及び取引先端末6との間で授受するネットワーク通信処理部223として機能する。
 データ作成部221は、本実施形態では、起動メモリ領域120上で待機する割込ハンドラの配置アドレスを記述するベクタ13の記録内容をブート毎に作成するものである。すなわち、割込ハンドラの配置位置は固定的でもよいが、例えばブート毎に、所定の方法で変更させることが、ワンタイムパスワードとして機能し、セキュリティ上、好ましい。所定の方法としては、乱数発生器からの乱数を利用した無作為に設定する方法や、タイマからの日時情報や予め格納されている会員情報等の少なくとも1つは変動する情報を用い、これらを所定のルールで合成等してより複雑な変動情報として作成する方法が採用可能である。
入出力処理部222は、ダミーコードのデータを複数回に分けて読み出すに際しての、分割された各ダミーコードの取得回数CX及び起動メモリ領域120上の書込位置DI(またはアドレス(ES:DI)。但し、ESはセグメントを示す。)を対応付けてRAM24に予め記憶する処理、及び端末1からの読み出し要求を受けて出力する処理を行うものである。
 ROM23は、各部221~223での処理を実行させるための処理プログラムを記憶する処理プログラム記憶部231、前述した会員を識別するための情報を記憶する会員情報記憶部232を備えている。
 続いて、図4について説明する。チップセット15は、CPU10、各種レジスタ、例えば、処理データを一時的に保管するための汎用レジスタ151、CPU10の演算状態を示す値であるステークスレジスタの一種であるEFLAGS152、その他図略の各種のレジスタ類を備えている。また、図4に示すように、起動メモリ領域120は、USBメモリ2から読み出されたMBRのマスターブートプログラムの展開領域(以下、MBR展開領域という)1201、割込ベクタテーブル(interrupt vector table)1202、及び正常リセット処理のプログラムが記録された割込ハンドラ領域1203、及びローダ等が展開されるプログラム展開領域1204を有する。
 割込ベクタテーブル1202とは、割込が発生した場合に処理するプログラムの先頭のアドレスが格納されている対応表をいい、テーブルの内容によって割込に対応した処理が実行される。割込ベクタテーブル1202は、例えば上位、下位各16ビット(bit)の計32ビットからなるベクタを複数(通常、数十程度~それ以上の所定数)有して構成されている。各ベクタは各処理プログラムに対応しており、例えば、ベクタ0は外部からの割込を行うためのINT0であり、ベクタ1も同様にINT1であり、さらに、ベクタ13は、前述したように一般保護例外である。
 割込ハンドラ領域1203は、起動メモリ領域120に正常リセットのための所定のデータを書き込むためのプログラムである。所定の情報とは、単に、値“0”とか“1”のデータでよい。プログラム展開領域1204は、ローダがマッピング可能なメモリ領域をいう。
 図5は、MBR処理部102が実行する第1の処理における、主にダミーコードの割込ベクタテーブルへの上書き処理、及び第2の処理における一般保護例外に基づく正常リセット処理を説明する図である。
 まず、ダミーコードを所定のベクタ、特にベクタ0,1,13に上書きする意義について説明する。BIOS動作中にCPU10の制御を一時的に奪ったマルウエアによって割込ベクタテーブルのデータが改竄、特にINT1を規定するベクタ1のデータが書き換えられて、マルウエアの潜伏位置を記述することが考えられる。また、BIOSの動作期間中に、起動メモリ領域120にマルウエアを起動させる異常プログラムが配置されることが考えられる。そこで、割込ベクタテーブルのベクタ1については、書き換えられた可能性のある内容を書き直してマルウエアの挙動を抑止する処理を行わせる必要がある。また、ベクタ13については、起動メモリ領域120上の前記異常プログラムを所定のデータの上書きによって消去するという、正常リセット処理のための割込ハンドラを確実に起動させる処理を行わせる必要がある。割込ハンドラを確実に起動させる処理は、ベクタ13に割込ハンドラ領域1203の先頭アドレスを書き込むこと、及び後述するような一般保護例外を発生させる仕組みを作ることである。
 すなわち、ベクタ13の一般保護例外を利用することで、ベクタ13から割込ハンドラ領域1203に自動的に処理が移行する仕組みを構築する。すなわち、(i)ダミーコードの書込アドレスを降順に読み出すためにEFLAGS152のフラグDFを1にセットし、(ii)降順の書込アドレスが割込ベクタテーブル1202の左端アドレス“0x0000”を下回る不正なアクセスを発生させて一般保護例外を引き起こすようにしている。さらに、(ii)のためには、ベクタ1からベクタ0の方向への、すなわち降順に書込アドレスを生成させる必要がある。そこで、ベクタ0,1,13を含み、かつ不正アクセス用のアドレスを生成させるためには、ダミーコードのビット数は、ベクタ0,1,13の3個のベクタ及び不正アクセスを発生させる少なくとも1ビット分で足りる。なお、ベクタ13とベクタ1,0及び不正アクセス分とは不連続であり、かつダミーコードの割込ベクタテーブルに対する上書き位置が明白となる傾向にある。そこで、より好ましい態様として、本実施形態では、ベクタ13~0及び不正アクセスの少なくとも1ビット分のデータ量を有するダミーコードを作成し、書込アドレスをベクタ13以上の所定のベクタからスタートさせて、最終的に不正アクセスが発生するように降順に指定するようにしている。
 図5は、この状態を示しており、ダミーコードは、所定のビット数、ここでは512ビット(bit)を有するものとし、スタートアドレスは500ビット目としている。なお、512ビットを有するデータ列は、USBメモリ2が一連の動作(REP INS)で読み出し可能なデータ量である。すなわち、矢印(A)で示すように降順にアドレスが生成されていくと、(本実施例では、1アドレスずつ生成するとして)501回目のアクセス時に不正アクセスが発生し、一般保護例外が発生する。一般保護例外が発生すると、CPU10は、矢印(B)に示すようにベクタ13に移動する。ここで、CPU10はベクタ13の記憶内容を読み取り、読み取った内容に一致する起動メモリ領域120のアドレス、すなわち矢印(C)に示すように割込ハンドラ領域1203の先頭アドレスに移動する。そして、CPU10は、割込ハンドラを実行して、正常リセット処理を行う。このダミーコードの上書き処理は、CPU10からの1つの命令によってREP INS処理で行われ、かつ正常リセット処理は、ダミーコードの上書き処理に連続して割り込みハンドラによって行われるため、CPU10からの1回の命令で両方の処理が済み、従って、その間、マルウエアがCPU10に介入する機会はない。
 今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動中にマルウエアが動作して、EFLAGS152のフラグTFをセットし、割込ベクタテーブル1202のベクタ1をマルウエア本体の存在するアドレスに書き換えた場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。その後、CPU10の制御がBIOSからMBRに渡されると、割込ベクタテーブルのベクタのうち、正常リセットに必要なベクタの内容をダミーコードで書き換えるので、マルウエア本体の存在するアドレス情報は実質削除される。さらに、一般保護例外によって、起動メモリ領域120も正常リセット処理され、仮に潜伏しているマルウエア自身も消去されることになる。すなわち、マルウエアは、BIOS起動中に挙動のための仕掛けをしたとしても、MBRが起動されると、その挙動のための情報が全て消去されることとなり、この結果、その後の挙動が抑止されることになる。
 次に、MBRのマスターブートプログラムのREP INSについて説明する。ダミーコードのデータは、複数に分割、本実施形態では512に分割されている。分割ダミーコードの読み出し方向は、ここでは後端から前端側に向けて行われる。
マスターブートプログラムを実行するCPU10は、
(1)USBメモリ2へ、ダミーコードのデータ要求(OUT AE)を出力する。なお、AEはダミーコードが記憶されたUSB2のダミーコード記憶部250のアドレスである。
(2)USBメモリ2から、分割されているダミーコードを取得する(IN DI)。なお、DIは書込アドレスである。
(3)取得回数CXをカウントする(IN CX)。CXは、一般保護例外を発生するためには、本実施形態においては、値501までは、少なくともカウントされるように設定されている必要がある。このようにしておけば、500ビット目から0ビット目に向かって降順にアドレスが指定でき、かつ0ビット目を下回る、501回目のアドレスの指定(不正アクセス)が可能となる。
(4)そして、繰り返し処理(REP INS ES:DI)によって(1)~(3)の処理がダミーコードのロードについて終了する(正しくは、一般保護例外が発生する)まで繰り返される。なお、ES:DIは起動メモリ領域120上の書込アドレスである。
 続いて、図6~図8により、CPU10、CPU22におけるブート処理を説明する。図6は、端末1のCPU10によって実行されるBIOSの起動処理の手順を説明するフローチャートである。まず、端末1の電源がオンされ(ステップS1)、すなわちマザーボード上のクロックジェネレータが電源供給を受けてクロックパルスを出力し始めると、メモリや周辺機器のデバイスのチェック(POST処理)が開始される(ステップS3)。次いで、USBポートにUSBメモリ2が装着されているか否かの判断が、例えば公知のハンドシェイク信号の授受を利用するなどして確認される。
 なお、以降においては、端末1のUSBポートにUSBメモリ2が装着されているという前提で述べる。すなわち、USBポートにUSBメモリ2が装着されていると、優先順位に従い、BIOS起動ルーチンによってMBRのマスターブートプログラムがRAM12の起動メモリ領域120に書き込まれる(ステップS5)。
 次いで、MBRのマスターブートプログラムの読み出しが終了したか否かが判断され(ステップS7)、終了したのであれば、MBRのマスターブートプログラムに制御が移される(ステップS9)。一方、MBRのマスターブートプログラムの書き込みが終了していないのであれば、ステップS5に戻って同様の処理が繰り返される。
 図7は、USBメモリ2のCPU22によって実行されるダミーコードの書換処理の手順を説明するフローチャートである。まず、端末1のUSBポートを介して電源供給を受けて、USBメモリ2が起動したか否かが判断される(ステップ#1)。この判断は、例えば図略のクロックジェネレータからのクロックパルスの発生を検出することで行う態様でもよい。
 USBメモリ2が起動したと判断されると、続いて、端末1からのMBRの読出要求の有無が判断される(ステップ#3)。MBRの読出要求があった場合(ステップ#3でYes)、CPU10によってMBRの読み出しが実行されることになる。一方、MBRの読出要求があると、ダミーコードのうち、割込ベクタテーブル1202のベクタ13に対応するビット位置の情報が、無作為にあるいは所定のルールに従って作成される(ステップ#5)。次いで、作成された情報が割込ハンドラの配置アドレスとして設定される(ステップ#7)。この後、CPU22は、ダミーコード読出要求の待機状態に移行する(ステップ#9)。この結果、ブートの毎に、割込ハンドラ領域1203の配置位置が変更されるので、セキュリティがより向上する。
 図8は、端末1のCPU10によって実行されるMBR実行処理の手順を説明するフローチャートである。まず、EFLAGSのフラグTFのリセット、フラグDFのセットが行われる(ステップS21)。なお、フラグTFのリセットは、プログラムの実行手順がマルウエアによってシングルステップモードになっている可能性があることを考慮して、これを解除するものである。
 次いで、REP INS処理を有するプログラム(MBRのマスターブートプログラムの一部に相当)を実行させるべく、REP INS命令が発行される(ステップS23)。そして、USBメモリ2から、順次ダミーコードが読み出され、アドレス(ES:DI)に順次書き込まれる(ステップS25)。アドレス(ES:DI)は、本実施形態では、割込ベクタテーブル1202の500ビット目の位置から降順である。次いで、一般保護例外が発生したか否かが判断される(ステップS27)。発生していなければ、ステップS25に戻って、ダミーコードの読出処理が繰り返される。
 一方、一般保護例外が発生したのであれば、ベクタ13に対応する位置の記憶内容が読み取られ、さらに読み取られたアドレスに移行して(ステップS29)、当該アドレスの記憶内容が読み取られる。このアドレスは割込ハンドラ領域1203の先頭アドレスであることから、この時点から割込ハンドラのプログラムの実行、すなわち正常リセット処理が開始される(ステップS31)。なお、正常リセット処理の終了時に、EFLAGSの初期化処理や割込ベクタテーブルの設定処理が実行されてもよい。
 次いで、正常リセット処理が終了したか否かが判断され(ステップS33)、終了していなければ、ステップS31に戻る。一方、正常リセット処理が終了したのであれば、ローダのロード処理が開始される(ステップS35)。そして、ローダのロードが終了した後、CPU10の制御がMBRからローダに渡される(ステップS37)。従って、ローダは、正常リセットされた環境で展開されることになる。
 なお、本発明は、以下の態様を採用することが可能である。
(1)本実施形態では、外部デバイスとしてUSBを採用したが、これに限定されず、少なくとも、CPU及びROM、RAMを内蔵するデバイスであればよい。例えばICカードでもよいし、携帯型の通信機器に内蔵された態様であってもよい。
(2)本実施形態では、REP INSを利用してCPU10による1回の命令で、所定量のダミーコードを連続して、いわば一括的に起動メモリ領域に転送したが、REP INSに代えて、DMAC(DirectMemory Access controller)チップを用いてダミーコードを起動メモリ領域120にロードする態様でもよい。DMACとは、CPU10の制御を受けることなく、実行命令が発行されることで、端末1とUSBメモリ2間のバスの制御を管理することによって情報の授受を行うバスマスタ方式のコントローラ(回路)である。
(3)本実施形態では、割込ハンドラによって、起動メモリ領域120を正常リセットしたが、この範囲に限定されず、RAM12の全体に対して正常リセット処理を施す態様としてもよい。
(4)本実施形態では、割込ベクタテーブルのベクタ0がRAM12の最小アドレス位置に合わされており、降順でアドレス指定するようにして不正アクセスを発生させるようにしたが、この態様に限定されない。例えば、本実施形態とは逆に、最大となるベクタの位置が、RAM12の最大アドレス一致している場合では、アドレスを昇順とし、ベクタ1,13及び最大ベクタを超えた不正アクセス1個分のアドレス数、及びベクタ1,13のダミーコードで足りる。また、マルウエアの挙動を完全に抑止するためには、INT機能を有するベクタの全てをダミーコードで書き換えることが、さらに好ましい。
 以上のとおり、本発明に係る外部ブートデバイスは、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のBIOSが前記CPUによって実行されることによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記CPUからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きすると共に一般保護例外を発生させる第1のプログラム、及び前記一般的保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたことを特徴とするものである。この発明によれば、ウイルス等のマルウエアの動きが抑止される。
 また、本発明に係る外部ブートデバイスにおいて、前記一つの命令は、REP INS命令であり、前記REP INS命令を受けて前記第1のプログラムが実行されることが好ましい。この構成によれば、起動プログラムからの命令としてREP INSが発令されると、CPUは、所定量のダミーコードをあるデータ量ずつ繰り返して外部ブートデバイスから読み出して、起動メモリ領域に書き込む。すなわち、外部ブートデバイスから起動メモリ領域へ、ある程度のデータ量のダミーコードの転送が1つの命令で実行される。従って、仮にマルウエアが潜伏等していたとしても、所定ビット数分のダミーコードの転送期間中は、マルウエアにCPUの制御が移ることがない。しかも、この期間中に、マルウエアによって書き換えられた可能性のある割込ベクタテーブル内の所定のベクタの内容を所定ビット数分のダミーコードによって再書き換えすることで、マルウエアの挙動(動き)を抑止させることが可能となる。
 また、本発明に係る外部ブートデバイスにおいて、前記ダミーコードは、前記割込ベクタテーブルのうち、少なくともベクタ0,1,13の3個分のビット数を有し、前記起動プログラムは、前記ダミーコードを少なくとも前記割込ベクタテーブルのベクタ13に、及び少なくともベクタ1からベクタ0の方向に向けて読み出すものであり、前記所定ビット数は、前記上書き対象のベクタの数に対応するビット数より大きく、前記ダミーコードのうちベクタ13に上書きされるデータは、前記割込ハンドラの先頭アドレスであることが好ましい。
 上記において、割込ベクタテーブルとは、割込が発生した場合に処理するプログラムの先頭のアドレスが格納されている対応表をいい、テーブルの内容によって割込に対応した処理が実行される。割込ベクタテーブルは、例えば上位、下位各16ビットからなるベクタを複数有して構成され、一般的には起動メモリ領域の所定箇所(ベクタ0の先頭アドレスが値0)に設定されている。各ベクタは各処理プログラムに対応しており、例えば、ベクタ0,1は外部からの割込を行うためのINT0、INT1であり、さらにベクタ13は前述したように一般保護例外である。INT命令のベクタ領域には、割込が発生した時に遷移先となるアドレス、すなわち実行するべきプログラムが書き込まれている領域の先頭アドレスが書き込まれている。
 今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動時にマルウエアが動作して、割込ベクタテーブルのベクタ1(INT1)にマルウエア本体の存在するアドレスが書き込まれている場合を想定する。BIOS起動後、起動プログラム、典型的にはMBR起動中に、ある命令が実行され、その後に、CPUの制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。
 そこで、本発明の構成によれば、起動プログラムの読み出しに続いて、第1のプログラムを実行させる。この場合に、ダミーコードは、少なくとも3個分のベクタに相当するビット数を有し、これらのベクタにベクタ13、さらにベクタ1からベクタ0の方向に向けて上書きが行われるように書き込みアドレスが設定される。しかも、ダミーコードのビット数は、上書き対象のベクタが3個とした場合、ベクタ13,1,0の合計ビット数より大きく設定されていることから、ベクタ0の上書きが終了した後に、存在しないアドレス(ベクタ0のアドレス以下、すなわち負のアドレス)を指定することになって、一般保護例外が発生する。一般保護例外が発生すると、CPUは、ベクタ13に移行し、ベクタ13に記録されているアドレスを読み取って、当該アドレスに移行する。このアドレスには、割込ハンドラの先頭アドレスであることから、割込ハンドラのプログラム、すなわち正常リセットのための所定のデータによる起動メモリ領域の書き換え処理が実行される。従って、仮に、マルウエアによるデータ改竄等が行われていたとしても、マルウエアの挙動を抑止する他、正常リセット処理によってクリアな環境を取り戻すことが可能となる。
 また、本発明に係る外部ブートデバイスにおいて、前記ダミーコードの所定ビット数は、前記割込ベクタテーブルのベクタ0からベクタ13までのビット数を超えるビット数nであり、前記第1のプログラムは、前記ダミーコードを前記割込ベクタテーブルのベクタ13以上の所定のベクタからベクタ0の方向に向けて読み出すものであり、前記第1のプログラムによる前記割込ベクタテーブルへの読み出し位置は、前記ベクタ0から前記ビット数n未満となる位置であることが好ましい。
 この構成によれば、ダミーコードはベクタ13より上のあるベクタからベクタ0に向けて連続して上書きされていく。従って、ベクタ13,ベクタ1の内容を書き換えるので、ベクタ13に割込ハンドラのアドレスを、ブート毎に設定することが可能となる。また、ベクタ1も強制的に書き換えられるので、仮にマルウエアの潜伏位置情報が記録されていたとしてもダミーコードの上書きによって消去されることになる。
 また、本発明に係る外部ブートデバイスにおいて、前記ベクタ13に上書きされるデータをブート毎に設定するデータ作成手段を備えることが好ましい。この構成によれば、ブートのたびに、割込ハンドラの書き込み位置が設定されるので、いわゆるワンタイムパスワード的にアドレスの変更設定が可能となり、耐タンパ性が向上する。
 また、本発明に係る外部ブートデバイスにおいて、前記正常リセットプログラムは、前記起動メモリ領域に所定のデータを書き込むものであることが好ましい。この構成によれば、所定データを単純なデータ、例えば値“0”とか“1”等のデータとすることで、データ量を抑制でき、また、その都度作成することができることから、外部ブートデバイスに予め記録しておいて、ブート毎に読み出すという作業を不要にすることも可能である。
 また、本発明に係る外部ブートデバイスにおいて、前記起動プログラムによって前記情報処理装置の起動メモリ領域に書き込まれ、前記正常リセット処理の後に実行されるローダプログラムが記憶されたローダ記憶部を備えたことが好ましい。この構成によれば、起動プログラムによって、正常リセット後の起動メモリ領域にローダ(OSやアプリケーションをロードするためのプログラム)が読み出されて展開される。この結果、ローダはマルウエアが存在せず、挙動もできないメモリ空間に展開可能となる。
 1 端末(情報処理装置)
 10,22 CPU
 11 ROM
 12 RAM
 101 BIOS処理部
 102 MBR処理部
 103 ローダ処理部
 104 入出力処理部
 110 フラッシュROM
 12 RAM
 120 起動メモリ領域
 1201 MBR展開領域
 1202 割込ベクタテーブル
 1203 割込ハンドラ領域
 15 チップセット
 2 USBメモリ(外部ブートデバイス)
 221 データ作成部(データ作成手段)
 222 入出力処理部
 250 ダミーコード記憶部
 261 MBR記憶部(起動プログラム記憶部)
 3 ネットワーク

Claims (8)

  1. CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、
     前記情報処理装置のBIOSが前記CPUによって実行されることによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記CPUからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きすると共に一般保護例外を発生させる第1のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたことを特徴とする外部ブートデバイス。
  2. 前記一つの命令は、REP INS命令であり、前記REP INS命令を受けて前記第1のプログラムが実行されることを特徴とする請求項1に記載の外部ブートデバイス。
  3. 前記ダミーコードは、前記割込ベクタテーブルのうち、少なくともベクタ0,1,13の3個分のビット数を有し、
     前記起動プログラムは、前記ダミーコードを少なくとも前記割込ベクタテーブルのベクタ13に、及び少なくともベクタ1からベクタ0の方向に向けて読み出すものであり、
     前記所定ビット数は、前記上書き対象のベクタの数に対応するビット数より大きく、
     前記ダミーコードのうちベクタ13に上書きされるデータは、前記割込ハンドラの先頭アドレスであることを特徴とする請求項1又は2に記載の外部ブートデバイス。
  4. 前記ダミーコードの所定ビット数は、前記割込ベクタテーブルのベクタ0からベクタ13までのビット数を超えるビット数nであり、
     前記第1のプログラムは、前記ダミーコードを前記割込ベクタテーブルのベクタ13以上の所定のベクタからベクタ0の方向に向けて読み出すものであり、
     前記第1のプログラムによる前記割込ベクタテーブルへの読み出し位置は、前記ベクタ0から前記ビット数n未満となる位置であることを特徴とする請求項3に記載の外部ブートデバイス。
  5. 前記ベクタ13に上書きされるデータをブート毎に設定するデータ作成手段を備えたことを特徴とする請求項3又は4に記載の外部ブートデバイス。
  6. 前記正常リセットプログラムは、前記起動メモリ領域に所定のデータを書き込むものであることを特徴とする請求項1~5のいずれかに記載の外部ブートデバイス。
  7. 前記起動プログラムによって前記情報処理装置の起動メモリ領域に書き込まれる、前記正常リセット処理の後に実行されるローダプログラムが記憶されたローダ記憶部を備えたことを特徴とする請求項1~6のいずれかに記載の外部ブートデバイス。
  8. 請求項1~7のいずれかに記載の外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するネットワーク通信システム。
PCT/JP2010/068346 2010-10-19 2010-10-19 外部ブートデバイス及びネットワーク通信システム WO2012053053A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/068346 WO2012053053A1 (ja) 2010-10-19 2010-10-19 外部ブートデバイス及びネットワーク通信システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/068346 WO2012053053A1 (ja) 2010-10-19 2010-10-19 外部ブートデバイス及びネットワーク通信システム

Publications (1)

Publication Number Publication Date
WO2012053053A1 true WO2012053053A1 (ja) 2012-04-26

Family

ID=45974791

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/068346 WO2012053053A1 (ja) 2010-10-19 2010-10-19 外部ブートデバイス及びネットワーク通信システム

Country Status (1)

Country Link
WO (1) WO2012053053A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016173744A (ja) * 2015-03-17 2016-09-29 日本電気株式会社 ブレードサーバ、ブレードシステム、bmc、チップセットおよびエンクロージャマネージャ
JP7383589B2 (ja) 2020-09-23 2023-11-20 株式会社東芝 情報処理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP2006236193A (ja) * 2005-02-28 2006-09-07 Fujitsu Ltd 起動プログラム実行方法、デバイス、記憶媒体及びプログラム
JP2007066123A (ja) * 2005-09-01 2007-03-15 Yokogawa Electric Corp Os起動方法及びこれを用いた装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP2006236193A (ja) * 2005-02-28 2006-09-07 Fujitsu Ltd 起動プログラム実行方法、デバイス、記憶媒体及びプログラム
JP2007066123A (ja) * 2005-09-01 2007-03-15 Yokogawa Electric Corp Os起動方法及びこれを用いた装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016173744A (ja) * 2015-03-17 2016-09-29 日本電気株式会社 ブレードサーバ、ブレードシステム、bmc、チップセットおよびエンクロージャマネージャ
JP7383589B2 (ja) 2020-09-23 2023-11-20 株式会社東芝 情報処理装置

Similar Documents

Publication Publication Date Title
KR102137773B1 (ko) 보안 애플리케이션을 통해 안전한 데이터를 전송하기 위한 시스템 및 그에 관한 방법
RU2385483C2 (ru) Система и способ использования гипервизора, чтобы управлять доступом к предоставляемой в аренду вычислительной машине
US6223284B1 (en) Method and apparatus for remote ROM flashing and security management for a computer system
WO2011145199A1 (ja) 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム
JP5114617B2 (ja) 秘密鍵を保護する、セキュア端末、プログラム、および方法
CN105122258B (zh) 对系统进行配置的方法、计算系统以及物品
US20050223220A1 (en) Secure virtual machine monitor to tear down a secure execution environment
CN103262092B (zh) 基于存储驱动器的防恶意软件方法和装置
US20070276969A1 (en) Method and device for controlling an access to peripherals
KR101081118B1 (ko) 보안되는 프로그램을 복원하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
TW201145041A (en) Provisioning, upgrading and/or changing of hardware
Kursawe et al. Analyzing trusted platform communication
NO20101464A1 (no) Sikkert databehandlingssystem
WO2011141997A1 (ja) 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム
WO2013069587A1 (ja) 情報処理空間管理方法、外部デバイス及び情報処理装置
WO2012053053A1 (ja) 外部ブートデバイス及びネットワーク通信システム
AU2006256601B2 (en) ITSO FVC2 application monitor
JP7438924B2 (ja) 情報処理装置、方法及びプログラム
WO2013061782A1 (ja) 外部ブートデバイス及び外部ブート方法
WO2013080848A1 (ja) ファイル通信処理方法及び外部デバイス
JP3039479B2 (ja) 拡張bios保護システム
JP2003150457A (ja) 著作権保護機能内蔵媒体を用いた不正利用防止電子データ配布方式対応機器
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C
JP2010286866A (ja) マイクロコントローラ装置
JP2002055725A (ja) コード管理biosチップとそのコード管理方法

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: 10858609

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 120813)

122 Ep: pct application non-entry in european phase

Ref document number: 10858609

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP