WO2013080848A1 - ファイル通信処理方法及び外部デバイス - Google Patents
ファイル通信処理方法及び外部デバイス Download PDFInfo
- Publication number
- WO2013080848A1 WO2013080848A1 PCT/JP2012/080137 JP2012080137W WO2013080848A1 WO 2013080848 A1 WO2013080848 A1 WO 2013080848A1 JP 2012080137 W JP2012080137 W JP 2012080137W WO 2013080848 A1 WO2013080848 A1 WO 2013080848A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- specific
- general
- external device
- nic
- area
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
Definitions
- the present invention relates to a file communication processing technique for performing file communication via a network.
- Patent Document 1 discloses two OSs of the same kind that can be selectively installed, one of which is executed by a communication application program such as a browser or mailer and the other is a stand-alone type.
- a communication application program such as a browser or mailer
- multi-bootable computers with security measures have been proposed.
- This multi-bootable computer has the advantage that security can be achieved as a whole without taking communication security measures for each OS.
- Patent Document 2 discloses a technique in which different OSs are stored in a plurality of non-volatile storage devices, and the non-volatile storage device is used to specify and switch to boot.
- the multi-boot method described in Patent Document 1 is a type in which a plurality of OSs are mounted on the same hard disk, and the selected OSs are expanded on the same RAM of a computer. For this reason, when the communication application program is used, if the hard disk is once contaminated with a computer virus, there is a possibility that an application operating on the other OS may be infected with the virus even when another OS is used.
- the boot method described in Patent Literature 2 can dynamically set and start an activation device and OS desired by a controller, avoiding an inadvertent system activation state at the time of booting and an unintended system activation. This is for the purpose and has no direct relation to the improvement of security.
- An object of the present invention is to provide a file communication processing method and an external device that realize communication with higher security in a specific OS environment than in a general-purpose OS environment.
- the file communication processing method sends a communication target file to a network in response to an instruction from a general-purpose application operating in a general-purpose OS environment read from a hard disk to a main memory when the information processing apparatus is booted.
- a general-purpose communication step performed via a device-side NIC provided in the information processing device, and a specific information read into the main memory by an external boot from an external device detachably connected to the information processing device A specific communication step performed via an external NIC provided in the external device is selected when a communication target file is transmitted to the network in response to an instruction from a specific application operating in an OS environment. It is characterized in that it is performed automatically.
- the present invention in a state where no external device is connected, communication to the network is possible via a device-side NIC by a general-purpose application, while booting (external boot) is performed while the external device is connected.
- communication to the network is possible via the external NIC provided in the external device by the specific application.
- the specific application since the specific application is read from the external device to the main memory of the information processing apparatus by external booting by the external device, the communication is further performed via the external NIC provided in the external device. Therefore, communication with higher security in a specific OS environment is possible compared to a general-purpose OS environment.
- the external device transmits the communication target file to the network in the external device detachably connected to the information processing apparatus including the device-side NIC that transmits the communication target file to the network.
- the external device NIC and a specific device driver that transfers the communication target file to the external NIC in response to an instruction from the application related to transmission of the communication target file among the specific applications can be read out to the main memory Driver storage means to be stored, and mapped I / O having an I / O register that instructs the external NIC to permit operation with a physical address obtained from the specific device driver through paging processing It is characterized by.
- the present invention it is possible to transmit / receive a file to / from a network from an external NIC provided in an external device using a specific application that is different from a device-side NIC based on a general-purpose application provided in the information processing apparatus. .
- an operation instruction of the external NIC is issued to the I / O register of the mapped I / O provided in the external device with a physical address obtained from the specific device driver through the paging process. Accordingly, since network communication is possible via the mapped application I / O provided in the external device and the external NIC by a specific application, the security is higher than when the information processing apparatus side NIC is used. Is secured.
- FIG. 1 is a schematic diagram showing an embodiment of a network communication system to which an external device according to the present invention is applied. It is a block diagram which shows an example of the hardware constitutions of the external device shown in FIG. It is a block diagram which shows an example of the function part relevant to the boot of a terminal and an external device. It is a figure which shows an example of the memory map of RAM of the terminal in the real mode by booting of a dedicated loader. It is a figure which shows an example of the memory map of RAM of a terminal in the protection mode in booting of a dedicated loader. It is a flowchart explaining the procedure of the starting process of the system BIOS performed by CPU of a terminal.
- step S3 It is a flowchart explaining the procedure of the POST process (step S3) of the system BIOS executed by the CPU of the terminal. It is a flowchart explaining the procedure of the monitoring process I performed by CPU of an external device. It is a flowchart explaining the procedure of the monitoring process II performed by CPU of an external device. It is a flowchart explaining the procedure of the expansion BIOS process performed by CPU of a terminal. It is explanatory drawing for demonstrating the procedure of the monitoring process III performed by CPU and expansion BIOS of an external device. It is a flowchart explaining the partial procedure of the monitoring process III performed by CPU of a terminal side. It is a flowchart explaining the partial procedure of the monitoring process III performed by CPU of the external device side.
- the OS loader 131 is created in a state where the contents of 0 MB to 1 MB (substantially the dedicated loader and the system BIOS newly loaded from the external device 2) are copied to the 100 MB to 101 MB area, and at a predetermined position in the same area. It is a memory map of a state.
- FIG. 1 is a schematic diagram showing an embodiment of a network communication system to which an external device according to the present invention is applied.
- FIG. 2 is a block diagram illustrating an example of a hardware configuration of the external device illustrated in FIG.
- FIG. 3 is a block diagram illustrating an example of functional units related to booting and management of terminals and external devices.
- FIG. 4 is a diagram showing an example of a memory map of the terminal RAM in the real mode when the dedicated loader is booted.
- FIG. 5 is a diagram illustrating an example of a memory map of the RAM of the terminal in the protect mode when the dedicated loader is booted.
- 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, an external device 2 of, for example, a PCI (Peripheral Component) Interconnect type that is connectable to the terminal 1, And a network 3 such as the Internet.
- the terminal 1 is connected to the network 3 via a NIC 16 (see FIG. 3) and a provider (ISP) 4.
- the PCI as an example of the external device 2 has a cassette-type casing having a predetermined size, an external I / O port for connecting to the terminal 1, and an internal CPU and expansion as will be described later.
- a storage unit that stores BIOS and the like and a NIC (Network Interface Card) that enables communication with the network 3 are provided.
- the terminal 1 is connected to the network 3 as it is, while the external device 2 is attached, the network 3 via the NIC 26 (see FIGS. 2 and 3) of the external device 2 as described later. It has the structure connected with.
- 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 external device 2 is provided, for example, when receiving registration as a member having authority 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 terminal 1 has a computer and, as shown in FIGS. 3, 4 and 5, 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 11A.
- the BIOS of the terminal 1 is hereinafter referred to as the system BIOS
- the BIOS of the external device 2 is referred to as the expansion BIOS. Distinguish between the two.
- the CPU 10 is connected with an operation unit 13 including a keyboard or a mouse having a numeric keypad for inputting necessary commands and information by an operator, a display unit 14 for displaying an image, and a NIC 16. Yes.
- the memory mapped I / O 17 and the memory mapped I / O 29 are linked to the RAM 12 in a state where data can be exchanged.
- the display unit 14 is used for displaying input information and displaying communication contents.
- the system BIOS is set to preferentially specify the external device 2 that is a device having an extended BIOS.
- the RAM 12 has a predetermined storage capacity, generally 4 GB (B: byte) in a 32-bit manner.
- a startup memory area 120 which is a work area in the real mode at the time of startup. It becomes. Further, in this embodiment, a predetermined area in which a management file (management program or the like) to be described later for OS management is expanded, in this embodiment, 1 MB to 100 MB, and the remaining areas perform normal processing after startup. This is the work area for execution.
- 0 MB to 100 MB are set as the first area, and 0 MB to 1 MB of the start memory area 120 is a part of the first area, and 100 MB to 4 GB is set as the second area.
- a hard disk (HD) 12A or the like in which various programs and data such as the system BIOS are stored.
- the terminal 1 is provided with a chip set 15 as shown in FIGS. 4 and 5, for example.
- the chipset 15 is a main component constituting the unillustrated motherboard, and controls data exchange between all components connected to the motherboard such as a CPU, various memories, a hard disk (HD), an unillustrated CD-ROM, and the like. Is. Details will be described later.
- 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 in FIG. 1 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 (hereinafter simply referred to as AP (application program)) for executing general processes such as transmission and reception is stored.
- the external device 2 stores a program file (referred to as a specific AP) that performs processing related to execution of specific application software as necessary.
- the general-purpose AP is made operable by the general-purpose OS read by the OS loader, and the specific AP is made operable by the specific OS read by the management file. 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 communicating with each other and, if necessary, software for predetermined authentication processing are loaded from the external device 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 purchaser to an account of a contract financial institution that issues the invoice (that is, 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. This electronic file is exchanged between the terminals 1 via the external device 2 via, for example, the member server 5 (or in parallel).
- 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 external device 2 in which unique information is written for each registered member is distributed.
- the member inserts the external device 2 into the port 1a of the terminal 1, and at least performs authentication processing of the validity of the external device 2, preferably further personal authentication (being a valid owner of the external device 2) )) 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.
- various other application examples can be considered for the network communication system shown in FIG.
- information communication with the terminal 1 outside a group organization (including country, local government, association, association, etc.) that is a public or quasi-public (including private sector) organization that creates and stores confidential information ⁇ Give examples of application to management systems.
- information communication with a terminal outside the organization for example, issuance of a certificate, shipping of an application form, and the like are assumed.
- the present invention can be similarly applied to a LAN system.
- 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 26 shown in FIG. 2 is equipped with a router (not shown) or is connected to the router serially.
- 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 external device 2 includes a mother board (not shown) in a housing, and various circuit elements and semiconductor elements are mounted on the mother board.
- the external device 2 includes a CPU 20 as control means.
- a ROM 21 and a RAM 22 are connected to the CPU 20.
- the CPU 20 is connected to an expansion BIOS storage unit 23 such as a ROM for storing the expansion BIOS and a DMAC (Direct Memory Access controller) 24 mounted on the motherboard, and further includes a ROM here, a flash ROM 25 and a NIC 26. It is connected.
- an expansion BIOS storage unit 23 such as a ROM for storing the expansion BIOS and a DMAC (Direct Memory Access controller) 24 mounted on the motherboard, and further includes a ROM here, a flash ROM 25 and a NIC 26. It is connected.
- the I / O interface 27 is provided in the input / output unit of the external device 2 and is configured to be attachable / detachable to / from the port 1a of the terminal 1, and can be communicated and supplied with power through a predetermined number of lines in the attached state.
- the extended BIOS storage unit 23 and the DMAC 24 are connected to the I / O interface 27, but can communicate with the CPU 20.
- the external device 2 is for loading a management file for monitoring the OS in the activated terminal 1 and monitoring the OS. Further, the extended BIOS may be stored in the flash ROM 25.
- the ROM 21 stores various processing programs to be executed as the external device 2 and a processing program storage unit 211 in which various processing programs to be executed as the external device are stored. Information for identifying at least a member And a reference time storage unit 213 for storing reference time information for monitoring the presence / absence of malware, which will be described later.
- the RAM 22 temporarily stores data being processed and transfer data.
- the CPU 20 reads and executes a necessary processing program from the ROM 21 when the terminal 1 is activated and operated.
- the CPU 10 starts up the system BIOS, executes necessary self-diagnosis processing, and then initializes available peripheral devices, which is processing performed before booting. Move on to execution of Self Test.
- the POST process it is searched whether or not there is an external device that stores a so-called extended BIOS. Then, when an external device storing the extended BIOS is searched, an expansion BIOS fetch process of the external device is performed.
- the extended BIOS is a program that is read into the terminal 1 and started after the control is transferred, and allows the external device 2 to take in predetermined information, in this embodiment, a dedicated loader described later.
- the DMAC 24 is a bus master type controller (circuit) that forcibly transfers information by managing the bus control between the terminal 1 and the external device 2 without being controlled by the CPU 10.
- the request from the CPU 10 and the operation status of the CPU 20 in the external device 2 are monitored, and the DMA transfer is performed between both devices according to the monitoring result.
- the flash ROM 25 stores various types of information read into the terminal 1.
- the dedicated loader storage unit 251 stores a dedicated loader (R) that is a program that is transferred by the DMAC 24 and read into the RAM 12 when the RAM 12 is in the real mode state, as will be described later.
- the dedicated loader storage unit 252 returns a dedicated loader (P), which is a program that is returned to the real mode and transferred by the DMAC 24 and read into the RAM 12 when the RAM 12 is in the protected mode as described later.
- P dedicated loader
- the interrupt ID table register IDTR InterruptDescriptor Table Register
- the interrupt vector table cannot be used.
- the extended BIOS is configured such that the real mode return process for rewriting the register IDTR to the real mode interrupt vector table is performed first.
- the dedicated loader (R) has an information amount of 1 MB and is expanded in the activation memory area 120.
- the dedicated loader (P) has an information amount of 4 GB, and is expanded on the entire RAM 12 by being overwritten.
- the program contents of the loader instruction portions of the dedicated loaders (R) and (P) are common, and the contents of the other information portions are information used for overwriting (resetting) the activation memory area 120 and the RAM 12, for example, Data “0” or the like.
- the information content of the dedicated loader (R) may be shared with the dedicated loader (P).
- the management file storage unit 253 stores a program for monitoring an illegal operation described later of an OS (or AP) contaminated with malware and invalidating the operation.
- the system table storage unit 254 stores IDT (Interrupt Descriptor Table), GDT (Global Descriptor Table), TSS (Task State Segment), etc., which are resources of the management file.
- IPL Intelligent Program Loader
- An IPL Initial Program Loader
- an OS loader storage unit 255 that stores an OS loader here, is a program for loading the OS from the HD 12A to the RAM 12.
- the system BIOS storage unit 256 is the same program as the system BIOS stored in the flash ROM 11A.
- the system BIOS stored in the system BIOS storage unit 256 is loaded into the startup memory area 120 after the dedicated loader is loaded because the system BIOS stored in the HD 12A may be contaminated with malware. belongs to.
- the specific OS / AP storage unit 257 stores an OS or the like (including an I / O control driver of each I / O device and a specific AP) as a program.
- the I / O information storage unit 258 stores the I / O control driver of each I / O device, and details will be described with reference to FIG.
- Each I / O device is a peripheral device such as an operation unit 13, a display unit 14, a NIC 16, and a printer (not shown).
- the dedicated loader (P) is provided with a 1 MB size file and logic for clearing 1 MB or more in the dedicated loader (P), and the CPU 10 of the terminal 1 is executed when the dedicated loader (P) is executed.
- a technique of performing a 1 MB read process and a clear process may be employed. According to this method, an improvement in performance can be expected as compared with the transfer of 4 GB.
- the NIC 26 performs information processing when communicating with another terminal 1 or the like via the network 3.
- the NIC 26 stores a ROM for storing a predetermined processing program and a RAM for temporarily storing processing contents (both shown in FIG. Abbreviation). Further, as described above, the NIC 26 that manages the 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 for the network and the network 3.
- the I / O interface 27 has a line for supplying power in addition to a line for exchanging information with the external device 2 via the port 1a.
- the terminal 1 has a power supply circuit (not shown).
- the external device 2 is attached to the terminal 1, the external device 2 is connected from the charging circuit via the port 1a and the I / O interface 27 of the external device 2.
- the power supply of the external device 2 is activated by supplying current to a charging circuit (not shown).
- the CPU 10 of the terminal 1 executes a processing program read from the ROM 11, the flash ROM 11 ⁇ / b> A, the HD 12 ⁇ / b> A, and the flash ROM 25 to the RAM 12, thereby executing a dedicated loader load processing unit that executes the extended BIOS from the start of the system BIOS. 101, a dedicated loader processing unit 102 for executing the loaded dedicated loader, a management file loaded by execution of the dedicated loader and a management file operating environment creating unit 103 for creating its operating environment, and an OS loader ( OS loader 104 for loading IPL), OS loader processor 105 for creating the loaded OS loader and its operating environment, and monitoring of the OS boot by the OS loader or the operation after the boot under the management file.
- OS loader 104 for loading IPL
- OS loader processor 105 for creating the loaded OS loader and its operating environment
- OS operation supervision Unit 106 information processing unit 107 that executes document creation and other various processes using a specific AP or general-purpose AP
- terminal 1 communicates with general terminal 1 or website server via network 3
- NIC 26 connects to network 3.
- a network communication processing unit 108 that exchanges information with other member's terminal 1, member server 5 and customer terminal 6 via the network, for example, a general-purpose OS according to a specific operation from the operation unit 13 It functions as an operating environment switching unit 109 that switches between an environment and a specific OS environment.
- the dedicated loader load processing unit 101 receives power on the terminal 1, executes self-diagnosis processing, and then checks the status of the memory and peripheral devices by POST processing. Next, the extended BIOS is activated from the device set in the BIOS, in this embodiment, the external device 2 in which the extended BIOS is stored.
- the dedicated loader load processing unit 101 performs processing for reading the extended BIOS read by the dedicated loader load processing unit 201 on the external device 2 side into a predetermined area in the activation memory area 120 of the RAM 12. If the external device 2 is not attached, an MBR (Master Boot Record) program is read from the ROM, for example, in order of priority, and control is then transferred to the read master boot program.
- MBR Master Boot Record
- the dedicated loader load processing unit 101 executes the extended BIOS after the extended BIOS is read into the activation memory area 120 of the RAM 12 and is given control by the system BIOS.
- the extended BIOS reads various instruction codes from the external device 2 to the activation memory area 120 of the RAM 12, and passes control to each instruction.
- a predetermined plurality of instruction codes are set. That is, an initialization process for a driver of a necessary device is executed in order to prepare an environment in which the specific AP can be executed in the terminal 1 using a certain instruction code.
- Necessary devices are a keyboard and a mouse constituting the display unit 14 and the operation unit 13. Further, the IRQ and interrupt vector table (INT) of the external device 2 are registered in the redirection table 1501 (see FIG.
- the I / O APIC 150 is an interrupt controller that can support multiprocessors, and can set the priority order of hardware interrupts in a redirection table 1501 for notifying the CPU 10 of received interrupts.
- IRQ is an interrupt request
- the interrupt number is rank information indicating the priority order when a hardware interrupt is generated at the same time.
- a certain instruction code causes the external device 2 to transmit a data transfer request signal for accepting data transfer using the DMAC 24.
- Data requested to be transferred by the data transfer request signal is a loader of about 1 MB (including an interrupt vector table).
- the dedicated loader load processing unit 101 is executed by an instruction command for setting to the real mode transmitted from the external device 2 as described later after the control is transferred to the expansion BIOS. For the setting to the real mode, which is issued when it is determined that the terminal 1 is set in the protect mode or it is determined that the terminal 1 is set in the real mode during the startup operation of the system BIOS. In response to the instruction command, the dedicated loader load processing unit 101 executes a part of the processing for setting the mode back to the real mode.
- the process of returning the register IDTR to the interrupt vector table in the real mode, the process of registering the IRQ and interrupt number of the external device 2 in the redirection table 1501 of the I / OAPIC 150, and the process of outputting the data transfer request signal It is.
- the mode determination process is executed on the external device 2 side as described later so as not to be affected by malware.
- the CPU 20 executes a program stored in the ROM 21, thereby loading the dedicated loader load processing unit 201 that reads the expansion BIOS for loading the dedicated loader to the terminal 1, and loading the dedicated loader.
- the monitoring unit 202 that monitors the operation and issues an instruction according to the monitoring content
- the management file load processing unit 203 that reads the management file to the terminal 1 side, and the terminal 1 from the external device 2 side that is part of the OS loader
- the OS loader load processing unit 204 for reading the load part to the file, the file created by using the specific AP after activation by the external device 2, and the like, the data processing circuit 28 to be described later, the encoding process, the decoding process, and the TCP / IP packet creation processing is performed, and the other terminal 1 and the group are connected via the NIC 26 and the network 3.
- Functions as the network communication processing section 205 for exchanging between the server 5 and the partner terminal 6.
- the monitoring unit 202 includes the following three monitoring methods, and checks the monitoring mode by the time measuring unit, the monitoring mode by the mode determination unit that determines the mode state of the real mode or the protected mode, and the mode. This is a monitoring mode by mode check means.
- the dedicated loader load processing unit 201 receives the read instruction by the POST process in the terminal 1 and executes the process of reading the extended BIOS to the RAM 12.
- the dedicated loader load processing unit 201 activates the DMAC 24 (instructs transfer) in order to transfer the loader (R) in the real mode state according to the monitoring contents of the monitoring unit 202, In order to transfer the loader (P) to the RAM 12 in the protected mode, the DMAC 24 is activated (transfer request (instruction) is performed).
- the timing means of the monitoring unit 202 starts timing from the time when the external device 2 reaches a level at which the external device 2 is activated by receiving power supply from the terminal 1, and the system BIOS of the terminal 1 passes control to the expansion BIOS and the instruction code is In response to being sent to the external device 2, the time measurement operation is stopped to measure the required time.
- the mode determining means of the monitoring unit 202 compares the time (time and short) of the time measured by the time measuring means with the reference time information stored in the reference time storage unit 213 of the ROM 21, and the time measured exceeds the reference time. If it is, the instruction code for resetting to the real mode (rewriting) is transmitted to the terminal 1 assuming that the mode is set to the protect mode by the malware.
- the reference time is set as follows. That is, first, power is turned on to the terminal 1, the system BIOS is activated, the POST process is executed, the expanded BIOS is expanded in the RAM 12, and further, the time required for the malware to operate is transferred to the expanded BIOS. If it is normal, the time is almost preset.
- the terminal 1 side directly determines the mode contents. Instead of the determination method, the determination is made on the external device 2 side.
- FIG. 4 shows the contents of the RAM 12 in the real mode
- FIG. 5 shows the contents of the RAM 12 in the protect mode
- the chip set 15 includes, in addition to the I / O APIC 150, a chip set including a register group 152 including various registers such as a local APIC 151, EFLAGS, and general-purpose registers for each CPU 10 in a mode in which there are a plurality of CPUs 10. 15a-15n.
- a boot memory area 120 of 0 MB to 1 MB is expanded with a system BIOS 121, an extended BIOS 122, a dedicated loader 123 including an interrupt vector table, and a temporary GDT 124.
- the dedicated loader 123 is expanded over the entire startup memory area 120, and appropriately includes a program part that functions as a loader, dummy data supplemented to create transfer data for 1 MB, and the like.
- the temporary GDT 124 is created by the dedicated loader 123, and is used for addressing for loading the management file from 1 MB to 100 MB in the unreal mode (Unreal mood) by the dedicated loader 123.
- the unreal mode means that only data access is 1 MB or more, that is, access to the outside of the startup memory area 120 by changing the access limit of the data segment register (not shown) in the chipset 15 to 4 GB in the real mode environment. Refers to a special state that has been made possible.
- the address of the interrupt descriptor table (IDT) is stored in the register group 152 and is referred to by the CPU 10 as a register IDTR (InterruptDescriptor Table).
- Register Interrupt descriptor table register.
- an interrupt vector table 123 ′, a system BIOS 121, and an extended BIOS 122 in a dedicated loader are expanded for an arbitrary area of the 4 GB RAM 12, and an IDT (Interrupt Descriptor Table) for configuring a protect mode in the arbitrary area.
- FIG. 5 shows the result of the environment setting for showing to the external device 2 created by malware as if the same space as in FIG. 4 exists in the RAM 12.
- the malware creates each program as shown in FIG. 5 and expands it to a suitable place on the RAM 12, and then expands the control. It will be passed to the BIOS. Furthermore, the malware main body program needs to be expanded in the RAM 12, and these data must be mainly acquired from the hard disk (HD 12A) which is an external medium. Therefore, the time required from the activation of the terminal 1 to the transfer of control to the extended BIOS 122 must be considerably longer than that in the case of FIG. Therefore, an appropriate time between the required time in the real mode in FIG. 4 and the required time in the protect mode in FIG. 5 is set as the reference time.
- HD 12A hard disk
- the mode check unit of the monitoring unit 202 is an embodiment that performs monitoring by a method different from the monitoring mode by the time measuring unit and the monitoring mode by the mode determination unit. That is, after the system BIOS passes control to the expansion BIOS, the external device 2 issues an instruction code. The DMAC 24 is activated by this instruction code, and reads all the contents of the RAM 12 by transfer and takes them into the external device 2 without being controlled by the CPU 10. The mode check means of the monitoring unit 202 checks the contents of the read RAM 12 and determines whether or not the protected mode environment is present.
- the determination method may use information unique to the protection mode in the data of the RAM 12, for example, the presence or absence of a management table such as GDT, IDT, or TSS described above. In this way, it is determined not on the terminal 1 side whether it is in the protected mode space but on the external device 2 side.
- a management table such as GDT, IDT, or TSS described above.
- the mode check means of the monitoring unit 202 sends an instruction code for resetting to the real mode to the terminal 1 when the mode is determined to be the protect mode by the malware.
- FIG. 6 is a flowchart for explaining the procedure of the system BIOS activation process executed by the CPU 10 of the terminal 1.
- the system BIOS is checked (step S1), and then the POST process is executed (step S3).
- FIG. 7 is a flowchart for explaining the procedure of the POST process (step S3) of the system BIOS executed by the CPU 10 of the terminal 1.
- a PCI is mounted as a device connected to the terminal 1 (step S11). If the PCI is not mounted, the system BIOS executes a normal startup process (step S13). . On the other hand, when the PCI is mounted, the BIOS of the device, that is, the extended BIOS is searched (step S15), and this extended BIOS is loaded into the RAM 12 (step S17). Next, when loading is completed, a load completion signal is output by the system BIOS (step S19).
- FIG. 8 is a flowchart for explaining the procedure of the monitoring process I executed by the CPU 20 of the external device 2.
- step # 1 it is determined whether or not the power of the external device 2 is turned on. If it is turned on (step # 1), the time measuring operation of the monitoring unit 202 is started (step # 3).
- step # 3 the time measuring operation of the monitoring unit 202 is started (step # 3).
- step # 5 the time measuring operation of the monitoring unit 202 is started.
- the timing operation is stopped (step # 7).
- step # 9 it is judged (compared) whether or not the measured time is shorter than the reference time (time time ⁇ reference time) (step # 9). If the measured time is shorter than the reference time, it is determined that the terminal 1 is not set to the protect mode environment, that is, the CPU 10 of the terminal 1 is not set to the protect mode by at least the malware, and this flow is exited. On the other hand, if the measured time is equal to or longer than the reference time, it is determined that the CPU 10 of the terminal 1 may be set in the protect mode environment, that is, the environment of the CPU 10 of the terminal 1 is set in the protect mode by at least malware. Since there is a possibility that the instruction code has been set, a command code for resetting the CPU 10 of the terminal 1 to the real mode is returned (step # 11), and the process exits from this flow.
- FIG. 9 is a flowchart for explaining the procedure of the monitoring process II executed by the CPU 20 of the external device 2.
- the control of the CPU 10 is transferred from the system BIOS to the expansion BIOS
- it is determined whether or not the above-described instruction code is received from the expansion BIOS (step # 21). If this instruction code is not received, this flow is passed.
- this instruction code is received, it is determined that the control of the terminal 1 is in the extended BIOS, and the DMAC 24 is activated and the RAM 12 to be transferred by the DMAC 24 is designated (step # 23).
- the contents of the RAM 12 are taken into the RAM 22 of the external device 2 via the DMAC 24. Even at this time, all the contents (4 GB in this case) of the RAM 12 are taken away from the control of the CPU 10 of the terminal 1 so as not to be affected at all by the mode of the CPU 10.
- step # 25 it is checked whether or not there is a content specific to the protect mode, specifically, a specific management table such as the IDT, GDT, or TSS described above with respect to the content of the fetched RAM 12 (step # 25). . If the RAM 12 does not contain the contents specific to the protect mode, it is determined that the real mode is set, and the present flow is exited.
- a content specific to the protect mode specifically, a specific management table such as the IDT, GDT, or TSS described above with respect to the content of the fetched RAM 12 (step # 25).
- the CPU 10 of the terminal 1 may be set in the protect mode environment, that is, at least the malware of the CPU 10 of the terminal 1 is set by malware. Assuming that there is a possibility that the environment is set to the protect mode, an instruction code for resetting the CPU 10 of the terminal 1 to the real mode is returned (step # 29), and this flow is exited.
- FIG. 10 is a flowchart for explaining the procedure of the extended BIOS process executed by the CPU 10 of the terminal 1.
- the extended BIOS to which the control of the CPU 10 is passed first determines whether or not an instruction code for resetting to the real mode has been received from the external device 2 (step S31). If this instruction code is not received within a predetermined time prepared for reception, initialization is performed for a predetermined device (the display unit 14, the keyboard, and the mouse described above) connected to the terminal 1. POST processing is performed (step S33). Next, an I / O APIC process (step S35) and a data transfer request signal output process (step S37) are executed.
- step S39 the loader (R) is transferred from the dedicated loader storage unit 251 to the terminal 1, and is overwritten on the activation memory area 120 of the RAM 12 (step S39).
- the transfer end signal whether the transfer is completed (Yes in step S41)
- a hardware interrupt is generated, the control of the CPU 10 is transferred to the loader (step S43), and this flow is exited. .
- step S31 when an instruction code for resetting to real mode is received in step S31, real mode return processing (step S45), I / OAPIC processing (step S47), data for rewriting the register IDTR to the interrupt vector table A transfer request signal output process (step S49) is executed. Subsequently, the DMAC 24 is activated, the loader (P) is transferred from the dedicated loader storage unit 252 to the terminal 1 side, and is overwritten on the entire area of the RAM 12 (step S51). Then, when it is confirmed by the transfer end signal whether the transfer is completed (Yes in step S53), a hardware interrupt is generated, the control of the CPU 10 is transferred to the loader (step S55), and this flow is exited.
- an appropriate system BIOS is overwritten from the system BIOS storage unit 256 to an area that does not affect the loader portion of the dedicated loader.
- the system BIOS of the system BIOS storage unit 256 is previously included in a part of the dedicated loaders (R) and (P), and the activation memory area 120 is overwritten by loading the dedicated loaders (R) and (P).
- An aspect may be sufficient. As will be described later, this system BIOS is used when the OS is loaded.
- FIG. 11 is an explanatory diagram for illustrating a procedure of the monitoring process III executed by the CPU 20 and the extended BIOS of the external device 2.
- FIG. 12 is a flowchart for explaining a partial procedure of the monitoring process III executed by the CPU 10 on the terminal 1 side.
- FIG. 13 shows a partial procedure of the monitoring process III executed by the CPU 20 on the external device 2 side. It is a flowchart explaining these.
- the external device 2 needs to have the following configuration.
- the ROM 21 or the flash ROM 25 of the CPU 20 functions as a storage unit that stores IOAPIC.
- the IO APIC 150 is registered on the terminal 1 side by the hardware interrupt IRQ set in the register of the external device 2 during the POST process, and an interrupt number associated with the IRQ number is automatically set.
- the ROM 21 or the flash ROM 25 of the CPU 20 functions as a storage unit that stores the interrupt vector table and the contents of the interrupt handler.
- the DMAC 24 performs processing for transferring the contents of the interrupt vector table 123 ′ and the interrupt handler 124 ′ to the terminal 1 side without the control of the CPU 10.
- the monitoring unit 206 has a function of monitoring the presence / absence of an execution result signal of an interrupt handler 124 ′ described later. Further, after the transfer request is issued, the monitoring unit 206 uses the DMAC 24 to generate an interrupt vector table 123 ′ and an interrupt handler 124 ′ corresponding to a predetermined vector in the interrupt vector table 123 ′ by the bus master method. And a function unit for determining the presence / absence of an execution result signal from the interrupt handler 124 ′.
- INT0 is set as the hardware interrupt (IRQ10).
- IRQ10 is used as the hardware interrupt, but the IRQ is not limited to “10” and may be any number that is associated in advance to specify a device.
- the interrupt handler 124 ' refers to a program waiting on a memory for executing interrupt processing. Furthermore, in INT0 of the interrupt vector table 123 ', the start address of the program that is the interrupt handler 124', the address 1000 in the example of FIG. 11, is set.
- step S61 it is first determined whether or not control has passed from the system BIOS to the extended BIOS (step S61). If control has not been passed to the extended BIOS, this flow is passed. On the other hand, if the control has passed to the extended BIOS, a request signal indicating that the control has passed to the extended BIOS is transmitted to the external device 2 (see step S63, arrow [1] in FIG. 11). Next, it is determined whether or not a hardware interrupt (IRQ10) instruction is issued (step S65).
- IRQ10 hardware interrupt
- a hardware interrupt (IRQ10) instruction is issued within a predetermined time from the time of transmission of the request signal
- INT0 is specified
- the INT0 instruction is issued
- the interrupt handler 124 'for the corresponding address is executed (see step S67, arrow [4] in FIG. 11).
- an execution result signal of the interrupt handler 124 ' is returned to the external device 2 (see step S69, arrow [5] in FIG. 11). It is more preferable from the point of secrecy to change the execution result signal of the interrupt handler 124 'every time.
- the execution result signal is created according to a predetermined rule using, for example, boot date / time information and member information in the member information storage unit 212 of the external device 2.
- step # 41 it is first determined whether or not a request signal has been received (step # 41). If no request signal has been received, this flow is passed. On the other hand, when the request signal is received, activation of the DMAC 24 and processing for specifying a storage area to be transferred are performed (see step # 43, arrow [2] in FIG. 11), and the information to be transferred is block transferred. Is transferred to the terminal 1 side without being controlled by the CPU 10.
- the information to be transferred is the contents of the IOAPIC 150 (the redirection table 1501), the interrupt vector table 123 ', and the interrupt handler 124'.
- step # 45 it is determined whether or not there is a transfer end signal output from the CPU 20 upon completion of the transfer operation.
- a hardware interrupt (IRQ10) instruction is issued, It is transmitted to the terminal 1 (see step # 47, arrow [3] in FIG. 11).
- step # 49 it is determined whether or not an interrupt handler execution result signal has been received within a predetermined time from the time when the hardware interrupt (IRQ10) instruction is issued (step # 49).
- the interrupt handler execution result signal is received as a result of the monitoring, the CPU 10 is in the real mode, and it is determined that the boot has been normally performed, and this flow is finished.
- the bus 10 transfer using the DMAC 24 causes the CPU 10 to set the INT0 address of the interrupt vector table 123 ′ and the start address of the interrupt handler 124 ′ before this transfer. Therefore, the address of INT0 set by the malware cannot be associated with the start address of the interrupt handler 124 ′.
- the contents of INT0 and the start address of the interrupt handler 124 ' may be set randomly according to a predetermined rule on the side of the external device 2 or by operating a random number generator for each boot process. preferable.
- the interrupt handler 124 ′ is not executed, and it is determined that there is a high possibility that the interrupt handler execution result signal is not generated as a result of monitoring, that is, the boot is not normally performed. Then, a command code for resetting the CPU 10 of the terminal 1 to the real mode is returned (step # 51), and this flow is exited. After exiting the process of FIG. 13, the terminal 1 performs the process of FIG.
- the activation of the DMAC 24 and the designation of the contents to be transferred may be managed by the CPU 10 hijacked by the malware (that is, even if a certain process is not performed, for example). Regardless, there is a process in which only a signal indicating that the process has been performed is generated and output in a pseudo manner), but by providing the DMAC 24 on the external device 2 side, it is possible to eliminate the control of the CPU 10. It becomes possible.
- FIG. 4 and FIGS. 14 to 17 are diagrams showing changes in the memory map of the RAM 12 from loading of the dedicated loader to OS operation monitoring.
- FIG. 4 shows the state of data creation from the loading of the dedicated loader 123 to the creation of the temporary GDT 124, that is, in the startup memory area 120, as described above. Since the system BIOS 121 is once erased by loading the dedicated loader 123, it is newly loaded from the external device 2 as described above. Alternatively, it may be included in the dedicated loader 123 in advance, and loaded simultaneously when the dedicated loader is loaded. This is because the dedicated loader 123 and the system BIOS 121 will be required later when loading the OS, as will be described later. In that sense, the extended BIOS 122 does not necessarily need to be reloaded. In FIG. 4, the loading of the system BIOS from the external device 2 may be overwritten on the dummy data portion in the dedicated loader 123.
- FIG. 14 is a memory map in a state where the management file 125, the management GDT 126, and the management IDT 127 are expanded in the area of 1 MB to 100 MB.
- the dedicated loader processing unit 102 in FIG. 3 is a loader process that is executed when the control of the CPU 10 is transferred to the dedicated loader 123 in response to the occurrence of a hardware interrupt from the external device 2 that has received a request from the extended BIOS 122. .
- the dedicated loader processing unit 102 stores the management file 125 in the management file storage unit 253 of the external device 2 read by the management file load processing unit 203 from 1 MB to 100 MB in the RAM 12 of the terminal 1. Processing to read at a predetermined position and processing related thereto are performed.
- the dedicated loader processing unit 102 first performs processing for enabling access to 1 MB to 100 MB of the RAM 12, for example, creation of a temporary GDT 124 as shown in FIG. 4, various registers in the chipset Set for.
- the temporary GDT 124 sets “0” (so-called ring “0”) to DPL (Description Privilege Level), which is a privilege level, for all (segment descriptors) of the programs and management tables constituting the management file 125.
- DPL Delivery Privilege Level
- the management file 125 can be loaded at the highest privilege level at a predetermined position of 1 MB to 100 MB, and all the information set in this area is loaded with DPL “0”.
- DPL describes the privilege level of the memory space, and there are four ranks from DPL “0” to DPL “3”.
- the lower the DPL value the higher the privilege level.
- a program that operates in a space described as a relatively large value of the DPL value cannot access the space side described as a value having a smaller DPL value. That is, in this case, a general protection exception (#GP) or page fault (#PF) described later is issued as a privilege level violation, and access is invalidated.
- a program operating in a space described as a relatively small value of the DPL value can access or browse the space side where the DPL value is described as a larger value. This makes it possible to determine in advance whether or not the access is inappropriate.
- the dedicated loader processing unit 102 sets a flag for the register CR0 of the management registers so as to access the 1 MB to 100 MB area in the protected mode, and separately in the real mode, the temporary GDT 124
- the segment limit is set to 1M or more, here 4G, thereby enabling operation in the unreal mode.
- the management file 125 and the interrupt handler 130 are loaded, then the management GDT 126 is loaded, and the management IDT (management interrupt vector table) 127 is loaded (see FIG. 14).
- Each segment descriptor of the management GDT 126 and the management IDT 127 is created in advance up to the table portion required at that time, and is loaded by the dedicated loader processing unit 102.
- the dedicated loader processing unit 102 passes (jumps) the control of the CPU 10 to the management file 125 after loading the necessary information.
- FIG. 15 is a memory map in a state where a TSS 128, a PTE (Page Table Entry) 129, and a management interrupt handler 130 are created in an area of 1 MB to 100 MB. Although not shown in the figure, an LDT (Local Descriptor Table) for each task is created as necessary.
- the management file operation environment creation unit 103 creates a TSS 128, a PTE (Page Table Entry) 129, a management interrupt handler 130, and a necessary LDT by the program of the management file 125.
- the TSS 128 and the PTE 129 operate in a management (protect) mode table for monitoring tasks (mainly OS loading from the HD 12A) that operate at 101 MB or more, and operate from 100 MB to 101 MB. And a table for VM8086 mode for monitoring the task to be performed.
- a management (protect) mode table for monitoring tasks (mainly OS loading from the HD 12A) that operate at 101 MB or more, and operate from 100 MB to 101 MB.
- a table for VM8086 mode for monitoring the task to be performed.
- the TSS 128 is created in association with each management program (task) in the management file 125. In other words, the TSS 128 can be restored to the current state by transferring the execution state to the necessary program by a task switch and contexting the processing contents of the immediately preceding program to the corresponding TSS in order to run the program according to the operation state. I have to.
- the PTE 129 is for converting a linear address created by the GDT 126 into a physical address, and is provided corresponding to each piece of information (each program code, each data, each stack).
- the address is determined using the segment value and the offset value, and, as is well known, a value obtained by shifting the segment value by 4 bits
- a maximum address (linear address) up to (1 MB + 64 KB) can be immediately calculated as a physical address.
- the protect mode is adopted for addresses higher than that, and for example, in the mode of operation with a 32-bit program, it is possible to specify addresses up to 4 GB. Since a virtual address space can be set by setting a different address for each piece of information (task), the information (task) can be stored separately for each required data amount.
- FIG. 18 corresponds to such an information storage mode, and shows an overall outline of the GDT 126 indicating the storage location of information.
- the GDT 126 is a list of segment descriptors for managing the storage location of each information in units of 8 bytes, for example.
- Each segment descriptor has four attributes.
- the attributes are “type” of information (program code, data, stack), “base address”, “limit”, and “DPL”.
- the “base address” indicates a storage reference (start) address of information in the RAM 12.
- “Limit” indicates an access range of information.
- DPL indicates the privilege level described above.
- the segment descriptor adopted in the addressing is selected via the information of the segment selector used for conversion from the linear address.
- Whether or not task access is permitted is determined by whether CPL (Current Privilege Level) and RPL (Requested Privilege) in one of the registers CS, DS, and SS written in the chipset at the time of access request. Level) and the corresponding segment descriptor of GDT 126 are determined.
- FIG. 19 shows a PTE memory map.
- Each page data is divided into a predetermined amount of data, for example, every 4 KB, and each page data is set with a physical address and an access attribute.
- Each page data includes program code, data, and stack type.
- the physical address is for moving the linear address to a predetermined position in the RAM 12.
- the access attribute corresponds to a privilege level, and has “supervisor” and “user”. “Supervisor” corresponds to privilege level DPL “0” to DPL “2”, and “user” corresponds to privilege level DPL “3”.
- NX-Bit Non eXecut Bit
- an exception interrupt general protection exception (#GP) is issued.
- a page fault (#PF) is issued. Is done. In either case, processing for invalidating access is executed via the interrupt handler 130.
- the invalidation of access includes a mode of shutting down access itself and a mode of rewriting a modified privilege level value to a correct value.
- FIG. 20 illustrates a conversion method for converting a linear address to a physical address.
- a linear address for accessing certain information created by the CPU 10 is converted into a physical address using the segment selector and base address of the GDT 126 and further the physical address of the PTE 129.
- FIG. 21 shows an example of the relationship between the linear address and the physical address in the protect mode.
- linear addresses 0 MB to 1 MB correspond to physical addresses 0 MB to 1 MB. This range is a 16-bit specification, and they are the same.
- the PTE 129 is prepared for management (area of 100 MB or less) and for VM8086 (area of 100 MB to 101 MB).
- the linear addresses 0 MB to 1 MB correspond to the physical addresses 100 MB to 101 MB.
- a predetermined value of 100 MB (or 101 MB) or more of the physical address is set in the physical address field of each task in the management side table in the PTE 129.
- all the tasks of PTE 129 typically OS loading or OS execution
- FIG. 16 shows a state where the contents of 0 MB to 1 MB (substantially the dedicated loader and the system BIOS newly loaded from the external device 2) are copied to the area of 100 MB to 101 MB, and the OS loader 131 at a predetermined position in the same area. Is a memory map in a state where is created. For example, the OS loader 131 may overwrite the position where the dummy data is written or the position where the extended BIOS is written.
- the information writing process to 100 MB to 101 MB is performed in the VM8086 mode. Note that the VM8086 mode means that if the process for switching to the real mode is performed during the execution of the protect mode, the efficiency will be reduced if the complexity of management is taken into consideration.
- the VM bit of the EFLAGS register is switched to perform the address calculation in the real mode. This makes it possible to execute a 16-bit program. During this period, access to information from 0 MB to 100 MB from the area is invalidated by paging.
- the OS loader load processing unit 104 loads the contents of 0 MB to 1 MB, which are copied by the OS loader load processing unit 204 on the external device 2 side and read to the terminal 1 side, into the 100 MB to 101 MB of the RAM 12, and loads the OS loader. Perform the process.
- the OS loader is created from the MBR read from the HD 12A and the boot program code to be described later read from the external device 2. More specifically, the OS loader load processing unit 104 is a program in the management file 125 for causing the OS to be loaded and started from the MBR partition table read from the 0th sector of the HD 12A. Read PBR (Partition Boot Record), which is a program, and OS storage address information in the HD 12A.
- Partition Boot Record Partition Boot Record
- the PBR includes a BPB (BIOS Parameter Block) and a boot program code.
- BPB BIOS Parameter Block
- boot program code prepared in advance in the external device 2 is loaded and used.
- the OS loader load processing unit 104 combines the BPB and the boot program code loaded from the external device 2 to create an OS loader (also referred to as IPL (Initial Program Loader)) 131.
- IPL Intelligent Program Loader
- FIG. 17 is a memory map showing a state in which the OS is loaded in an area of 101 MB or more.
- OS GDT 132 and OS IDT 133 indicated by broken lines indicate a situation in which the OS is trying to create a table for describing its own behavior.
- the OS loader processing unit 105 first sets the physical address in the control register CR3 in the state set in the VM8086 mode (that is, CPL “3”), starts the OS loader, and loads each program constituting the OS from the HD 12A.
- the RAM 12 is sequentially loaded into an area of 101 MB or more.
- the OS loaded from the HD 12A issues an LGDT request to rewrite the contents of the chip set register GDTR in order to create the OS GDT 132 describing its own motion.
- the OS operation monitoring unit 106 protects this access with general protection as an exception interrupt.
- An exception (#GP) is issued.
- the general protection exception is transferred to the interrupt handler in the management file 125 via the IDT 127.
- the OS operation monitoring unit 106 makes an illegal access request through the interrupt handler by referring to the register EIP indicating the storage location of the instruction (program) to be executed next by the CPU 10 using the program counter.
- the access of the program is specified, the rewriting of the register GDTR is prohibited, and an interrupt handler process such as rewriting the modified privilege level to the original value is executed for the unauthorized program.
- the OS operation monitoring unit 106 adds the unauthorized program as a new segment descriptor to the GDT 126, sets DPL “2” in the privilege level item, and sets a new paging table in the management table of the PTE 129.
- a predetermined address value of at least 101M (or 100M) or more is set as a physical address.
- the access right of GDT 126 is set to DPL “2”, so that access from 0 MB to 100 MB from the OS side is invalidated as an illegal access, and a physical address of 100 M or less from the OS by PTE129. Conversion is impossible.
- the management file 125 loads a specific AP stored in advance in the external device 2 with DPL “0” within 1 MB to 100 MB.
- the specific AP the device driver of the operation unit 13 and the device driver of the display unit 14 are controlled so that an information processing operation can be executed in a specific mode environment, and communication with a specific member is performed as necessary.
- the device driver of the NIC 26 of the external device 2 is controlled. In the case where the terminal 1 is a server, it is sufficient that the device driver of the NIC 26 of the external device 2 is at least executed.
- the information processing unit 107 switches the device driver to execute processing in the general-purpose AP mode and processing in the specific AP mode.
- the network communication processing unit 108 switches and controls communication from the terminal 1 and communication between members from the NIC 26 of the external device 2 and between specific servers using a device driver.
- the operating environment switching unit 109 switches between processing in a general-purpose OS environment and processing in a specific OS environment.
- the switching instruction can be performed by a specific operation on the terminal 1. For example, by pressing a specific key (one or more) on the keyboard, a mode switching instruction can be cyclically performed, or individually by separate operations. A mode in which each environment is indicated may be used.
- FIG. 22 is a flowchart showing the processing of the dedicated loader 123 executed by the CPU 10.
- step S101 it is determined whether or not there is a hardware interrupt corresponding to the end of loading of the dedicated loader 123 (step S101). If there is no hardware interrupt, this flow is exited. On the other hand, if there is a hardware interrupt, the register group is initialized and the control register CR0 is set to the real mode (step S103).
- the temporary GDT 124 is created by the dedicated loader 123 (step S105), and then the control register CR0 is set to the protect mode (step S107). Then, the contents of the distributor with the segment limit value of the temporary GDT 124 set to 4 GB are registered in the segment register of the chip set (step S109). As a result, an address of 1 MB or more can be designated. Subsequently, the control register CR0 is set to the real mode (step S111). That is, the control register CR0 is changed to the real mode, and the unreal mode in which 1 MB or more can be accessed in the real mode can be set corresponding to the fact that the segment limit value of the temporary GDT 124 is set to 4G.
- the management file 125 and the management interrupt handler (which may be included in the management file) are loaded from the external device 2 into the 1 MB to 100 MB area by the dedicated loader 123 (step S113). Thereafter, the management GDT 126 is loaded from the external device 2 (step S115).
- the CPU 10 sets the control register CR0 to the protect mode (step S117), jumps to the management file 125, and the management file 125 is activated.
- FIG. 23 is a flowchart showing the processing of the management file 125 executed by the CPU 10.
- GDT 126, IDT 127, and TSS 128 are created at predetermined positions of 1 MB to 100 MB at privilege level DPL “0” (step S131).
- the TSS 128 is created for management (area of 100 MB or more) and for VM8086 (area of 100 MB to 101 MB).
- the PTE 129 is created (step S133). As described above, the PTE 129 is created for management and for the VM8086.
- step S135 the contents of the 0 MB to 1 MB area are copied (copied) to 100 MB to 101 MB (step S135). Thereby, the system BIOS necessary for OS loading is loaded. Further, an OS loader is created at an appropriate place between 100 MB and 101 MB (step S137). Thereafter, the CPU 10 jumps to a program for processing (monitoring and managing) loading of the OS in the management file 125 (step S139).
- the MBR is loaded into a predetermined position of 100 MB to 101 MB from the head sector of the HD 12A (step S151).
- the storage address of the OS (each program constituting the OS) is acquired from the active partition table in the MBR (step S153).
- the PBR is loaded from 100 MB to 101 MB from the HD 12A (step S155), and then the boot program code portion of the PBR is rewritten with the boot program code loaded from the external device 2 (step S157), and the BPB of the PBR Are combined with the rewritten boot program code (step S159).
- an OS loader corresponds to a so-called IPL, and this IPL is for loading a loader program for loading the OS main body in real mode in advance as is well known.
- the OS main body is divided and loaded, for example, by the loader program for loading the OS main body.
- the OS loader sequentially loads the programs obtained by dividing the OS main body.
- FIG. 25 is a flowchart showing processing of the management file 125 after the OS loader is created, which is executed by the CPU 10.
- the management file 125 sets the VM 8086 mode for monitoring and managing the loading of the OS, that is, automatically sets the privilege level to DPL “3” (step S171). Therefore, information (in this case, the OS program to be loaded) accessed in an area of 101 MB or more in this state is handled at the privilege level CPL “3”.
- step S173 it is determined whether or not there is access to the chip set register GDTR or the like (GDTR rewrite request LGDT or the like) by the OS GDT, IDT, and PTE creation instructions (step S173). If there is an access to the register GDTR or the like, the legitimacy of the access right is checked against this access, but since it is an access from CPL “3”, a general protection exception is issued (step S175), A jump from the management IDT 127 to the interrupt handler 130 corresponding to the general protection exception is executed (step S177). As a result, the interrupt handler 130 executes processing for loading the next jump destination temporarily stored for the EIP (step S179). Also, by this task, access to the register GDTR and the like is denied, and so-called invalidation processing is executed.
- a segment descriptor corresponding to the OS program loaded this time is added to the management GDT 126 and the management PTE 129 (step S181). Further, the privilege level DPL “0” of the management GDT 126 and the management PTE 129 is rewritten to DPL “2”, and a predetermined value larger than 101M (or 100M) is set in the physical address of the management PTE 129. For example, the address received in the exception is set with a shift of 100 M (step S183).
- step S185 it is determined whether or not the next program constituting the OS has been loaded from the HD 12A (step S185), and if the next program constituting the OS is not loaded, the present flow is exited. On the other hand, if the next program constituting the OS has been loaded, the process returns to step S173, the same processing is repeated, and added as new segment descriptors to the management GDT 126 and the management PTE 129.
- step S189 if there is an access in step S189, the process proceeds to step S157, where a general protection exception is issued, and based on this, the interrupt handler as described above is executed (steps S159, S161).
- the AP program is loaded by the OS program, the same processing is performed. Since the AP is set to the privilege level DPL “3”, it is not necessary to rewrite the privilege level of the newly added segment descriptor, but the DPL “3” may be actively written. . Also for the AP to be loaded, a predetermined value larger than 101M (or 100M) is set in the physical address field of the management PTE 129 by the management file 125.
- FIG. 26 is a flowchart showing the processing of the management file 125 after the OS boot executed by the CPU 10.
- the management GDT 126 is accessed from the OS (or AP) program from 0 MB to 100 MB (step S201). If there is no access to the management GDT 126, this flow is exited. On the other hand, if the management GDT 126 is accessed, a general protection example is issued by collating the privilege level of the OS that has been accessed with the privilege level of the register GDTR (step S203). Then, a jump from the management IDT 127 to the interrupt handler 130 corresponding to the general protection exception is executed (step S205). As a result, the processing of the interrupt handler 130 is executed (step S207). The processing of the interrupt handler 130 here may be processing of rewriting to normal contents on the assumption that access to the management GDT 126 is denied or accessed.
- FIG. 27 is a flowchart showing processing environment switching processing executed by the CPU 10.
- Processing environment switching refers to switching between work in a general-purpose OS environment and work in a specific OS environment. While the terminal 1 is in operation, it is determined whether or not there is an instruction to switch to the specific OS environment (step S221), and if there is no switching instruction, the process proceeds to step S227. Note that step S221 may be an interrupt process in a permitted state. Then, in step S227, it is determined whether or not there is an instruction to switch to the general-purpose OS environment.
- step S221 if there is an instruction to switch to the specific OS environment in step S221, it is determined whether or not the current use environment is a general-purpose OS environment (step S223). Then, a process for switching to the specific OS environment is executed (step S225). As a result, operations for information processing and device driver control are performed in a specific OS environment within 0 MB to 100 MB. This distinguishes it from the general-purpose OS environment, and malware does not enter. On the other hand, if the current use environment is already the specific OS environment, the switching instruction is ignored and this flow ends.
- step S227 If there is an instruction to switch to the general-purpose OS environment in step S227, it is determined whether or not the current use environment is a specific OS environment (step S229). Then, a process for switching to the general-purpose OS environment is executed (step S231). On the other hand, if the current use environment is already a general-purpose OS environment, the switching instruction is ignored and this flow ends.
- the PCI is described as an external device.
- the present invention is not limited to this, and an embodiment in which DMAC is used as a loading method of a dedicated loader from 0 MB to 1 MB (the present inventor has already proposed).
- PCT / JP2010 / 58552 For example, a mode in which the dedicated loader is forcibly loaded into the startup memory area by applying the PCT / JP2009 / 57962, PCT / JP2010 / 68346, and Japanese Patent Application 2011-235386 already proposed by the present inventor may be used.
- PCT / JP2009 / 57962 discloses an external boot method that is mounted on an information processing apparatus including a CPU and boots the information processing apparatus with an external device such as a USB memory.
- the storage unit of the external device reads the loader set to be preferentially started by the BIOS of the information processing apparatus and maps it to the start memory area (0 MB to 1 MB) of the main memory of the information processing apparatus.
- an MBR having a program for positioning the stack area with a predetermined superposition relationship with respect to the interrupt vector table set in the activation memory area of the information processing apparatus is stored.
- the loader is divided into a predetermined number by the distributed processing means of the external device prior to starting the MBR, and mapping information at the time of loading each divided loader into the startup memory area is created. .
- FIG. 28 is a diagram illustrating a method of superimposing the stack area 1203 on the interrupt vector table 1202.
- EFLAG, CS, and IP related to the instruction content immediately before the interrupt are written from the base pointer BP. Therefore, the stack area 1203 is positioned so that the position of the base pointer BP coincides with the position of the upper bit of the vector 2 in the interrupt vector table 1202 as indicated by the arrow in the figure. Therefore, when EFLAG, CS, and IP are written to the stack area 1203, FLAG is written into the upper bits of the vector 2 of the interrupt vector table 1202, CS is written into the lower bits of the vector 1, and IP is written into the upper bits of the vector 1. It will be.
- vector 1 indicates an address to be an external interrupt destination
- CPU 10 refers to vector 1 and control shifts to a program at an address written in vector 1.
- EFLAG, CS, and IP which are the contents of the immediately preceding instruction, are saved and written in the stack area 1203. That is, IP and CS address information is written in the vector 1 of the interrupt vector table 1202. In vector 1, IP is written in the upper bits and CS is written in the lower bits. Therefore, the address is specifically IP ⁇ 16 + CS.
- malware operates when the BIOS starts up, sets the flag TF of the EFLAGS of the chipset, and generates an interrupt vector.
- the address where the virus body exists is written in the vector 1 of the table 1202. 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 information IP and CS indicating the previous instruction contents are written in the stack area 1203, that is, the vector 1 of the interruption vector table 1202. Therefore, the address indicating the storage location of the malware originally written in the vector 1 is rewritten and erased.
- the malware loses the latent address as soon as it operates once after the MBR is started in the state where the device is set up while the BIOS is started, and the subsequent operation is suppressed.
- the loader is mapped in the boot memory area 120 in the RAM 12 except for the areas 1202 and 1203 and the MBR area.
- the divided loaders are distributed and deployed as many as the number of divisions according to the mapping position information.
- an appropriate number of dummy data may be added to the split loader.
- the next mapping position information is written at the last bit position.
- the divided loaders are combined with the original loader after the loader. In this case, if information indicating that is written in the dummy data, it is possible to omit the process at the time of synthesis. In this way, the loader, that is, the dedicated loader in the present invention is properly loaded to 0 MB to 1 MB.
- PCT / JP2010 / 68346 describes an external device that is attached to an information processing apparatus including a CPU and boots the information processing apparatus.
- the external device is a startup program that is set so that the BIOS of the information processing apparatus is written into the startup memory area of the information processing apparatus by the CPU, and is based on one instruction from the CPU after writing.
- a first program that is executed and overwrites an interrupt vector table with a dummy code for a predetermined number of bits to generate a general protection exception, and a normal reset program for normal reset processing that is executed when the general protection exception occurs Is provided with a startup program storage unit in which a startup program consisting of a second program for setting as an interrupt handler is stored.
- FIG. 29 is a diagram for explaining the dummy code interrupt vector table overwriting process and the normal reset process based on the general protection exception.
- the significance of overwriting a dummy code to a predetermined vector, particularly vectors 0, 1, and 13 will be described. It is conceivable that the data in the interrupt vector table is falsified by the malware temporarily taking control of the CPU 10 during the BIOS operation, and in particular the vector 1 data defining INT1 is rewritten to describe the latent position of the malware. Further, it is conceivable that an abnormal program that activates the malware is arranged in the activation memory area 120 during the BIOS operation period.
- the vector 1 in the interrupt vector table it is necessary to rewrite the contents that may have been rewritten to perform a process of suppressing the behavior of the malware.
- the vector 13 it is necessary to perform a process for reliably starting an interrupt handler for normal reset processing, in which the abnormal program on the startup memory area 120 is erased by overwriting predetermined data.
- the process for reliably starting the interrupt handler is to write the start address of the interrupt handler area 12031 in 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 12031 is constructed. That is, (i) the flag DF of the EFLAGS of the chip set 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 the left end address “0x0000” of the interrupt vector table 12021 It causes a general protection exception by generating unauthorized access below. 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. 29 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 12031 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.
- both processes are completed with the instruction, so that there is no opportunity for malware to intervene in the CPU 10 during that time.
- the malware operates during the BIOS startup, sets the EFLAGS flag TF, and the vector of the interrupt vector table 12021 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.
- Japanese Patent Application No. 2011-235386 includes a CPU and a main memory in which a program executed by the CPU is expanded, and performs data communication by hardware between the main memory and the outside.
- An external device is described in which an information processing apparatus provided with a controller is activated by writing data required for activation into the main memory via the controller.
- This external device includes data transfer instruction information that is read preferentially to a bootable memory area that can be addressed and is a part of the main memory when the BIOS of the information processing apparatus is executed by the CPU.
- a first storage unit that stores a primary loader; and at least an interrupt vector table and a secondary loader that are read as division control data sequentially divided into the startup memory area in response to the data transfer instruction from the primary loader
- a second storage unit that stores predetermined control data including the address data to be a writing position when the division control data is written to the activation memory area; and the activation that is started after reading to the activation memory area
- the division control data corresponding to each of the division control data is sent from the second storage unit.
- a data transfer unit that sequentially reads out to the main memory via the controller in accordance with the address data, and the interrupt that has been read out of the hardware interrupt instruction signal into the startup memory area upon completion of the data transfer process
- a hardware interrupt instructing section for making a transition to a vector table and issuing a hardware interrupt to activate the secondary loader is provided.
- FIG. 30 briefly explains the flow of booting.
- the flow of information and the procedure at the time of booting are indicated by arrows in FIG.
- the CPU 10 activates the BIOS, and takes in the external MBR 1211 from the USB memory 2 by BIOS processing.
- the processing of the CPU 10 is passed to the external MBR 1211, and the master boot record of the external MBR 1211 functions as a primary loader.
- the first divided TD data table TD [1] 1212 is created (arrow (1) in FIG. 30).
- the external MBR 1211 issues an interrupt transfer start command (command) to the USB host controller (arrow (2) in FIG. 30).
- the address data in the first row of the divided TD data table TD [1] is acquired by the USB host controller, and the address data and the dummy data 1213 which is the divided data transferred first are MCH (Memory Controller Hub), It is sent to the RAM 12 via ICHICH (I / O Controller Hub) (arrow (3) in FIG. 30) and written to the address (arrow (4) in FIG. 30). Thereafter, the divided data can be sequentially fetched from the USB memory 2 between the USB host controller and the USB target controller without being controlled by the CPU 10, and the fifth row of the divided TD data table TD [1] is obtained.
- MCH Memory Controller Hub
- ICHICH I / O Controller Hub
- the address data is acquired by the USB host controller, and the address data and the divided TD data table TD [2] which is the fifth transferred data are sent to the RAM 12 via the MCH, and the address data outside the activation memory area 120 are sent. It is written at the address “0x40000” (arrow (5) in FIG. 30).
- the divided data corresponding to the address data of each row of the divided TD data table TD [2] is sequentially read from the USB memory 2 and developed in the activation memory area 120.
- the USB host controller Each time the divided TD data table TD is transferred, the USB host controller temporarily stores the address data contained in the divided TD data table, associates the address data with the divided control data to be transferred next, and sends it to the MCH. Like to do.
- the MCH acquires address data from the transferred data, and writes the division control data 1215 to this address.
- the interrupt vector table 1214 is read from the USB memory 2 and written corresponding to the address data in the first row of the divided TD data table TD [2] (arrow (6) in FIG. 30). Then, the divided TD data table TD [i] is developed sequentially (arrow (7) in FIG. 30), and the divided data corresponding to the address data in the bottom row of the last divided TD data table TD [n] is stored in the USB memory 2. Is loaded into the startup memory area 120, a hardware interrupt instruction signal is simultaneously transmitted to INT “XX” of the interrupt vector table via the MCH (without going through the CPU 10) (FIG. 30). (8)).
- the CPU 10 jumps the interrupt command to the reference address of the division control data (first) 1215 in which the first division data of the divided specific OS loader is expanded ( The arrow (9) in FIG. 30), thereby starting execution of the specific OS loader.
- the specific OS loader (control data) in this embodiment corresponds to the dedicated loader in the present invention.
- each dedicated loader is performed from an external device. Even if malware is hidden in the BIOS or MBR with respect to the boot memory area 120, it is possible to delete the malware and perform the process, thereby making the boot memory area 120 a clean environment.
- a dedicated loader (including a table necessary for loading the dedicated loader as necessary) can be loaded into the area 120 from an external device. Then, after the dedicated loader is loaded from the external device into the boot memory area 120, the highest privilege level or the relatively highest privilege level is set in the management file placement area loaded by the dedicated loader (set to the OS and AP load areas) The management file can be activated and maintained in a clean environment.
- FIG. 31 is a diagram for explaining the contents of each device driver, memory-mapped I / O, and the processing flow thereof when the general-purpose AP and the specific AP are executed.
- the general-purpose OS 134 the general-purpose APa 1341,..., The general-purpose NIC driver 1351,..., The specific OS 136, the specific APa 1361.
- the general-purpose APa 1341 The general-purpose NIC driver 1351..., The specific APa 1361...,
- the specific NIC driver 1371 are representative of the NICs 16 and 26 that are one of the I / O devices. O devices corresponding to the operation unit 13 and the display unit 14 are provided, and are further applied to a printer or the like (not shown).
- the general-purpose OS 134, the general-purpose APa 1341,..., And the general-purpose NIC driver 1351 are read from the HD 12A of the terminal 1 to a predetermined position of 101 MB to 4 GB of the RAM 12 with the privilege level DPL “3”.
- the specific OS 136, the specific APa 1361, and the specific NIC drivers 1371 are read from the specific OS, the AP storage unit 257, and the I / O information storage unit 258 of the external device 2 to predetermined positions in the 1 MB to 100 MB of the RAM 12.
- the memory mapped I / O 17 is provided on the terminal 1 side, and the memory mapped I / O 29 is provided on the external device 2 side.
- the I / O registers of the memory mapped I / O 17 and the memory mapped I / O 29 are associated with each address area of the RAM 12 of the terminal 1 by an unillustrated memory controller hub or the like for the addressing operation. It is treated as being mapped and equalized.
- the terminal 1 is operable in a general-purpose OS environment.
- the operating environment switching unit 109 can selectively switch between the general-purpose OS environment and the specific OS environment.
- Information processing using the general-purpose AP operating in the general-purpose OS environment and the specific AP operating in the specific OS environment is executed by the information processing unit 107.
- the memory mapped I / O refers to a method in which the CPU 10 handles an instruction for accessing an I / O device (input / output device) in the same address space as an instruction for accessing the RAM 12.
- the memory mapped I / O is composed of general-purpose device drivers for I / O devices and I / O registers corresponding to specific device drivers.
- the CPU 10 controls the corresponding I / O device by reading and writing information such as operation permission in the I / O register.
- the I / O device control method is not limited to the memory mapped I / O, and other mapped I / O methods may be used.
- the memory mapped I / O 17 corresponds to the operation unit 13, the display unit 14, the NIC 16, a printer (not shown), etc. as I / O devices in the general-purpose OS environment.
- each general-purpose device in the general-purpose OS environment Are divided into respective I / O registers 171, 172,... Corresponding to the drivers.
- the I / O register 171 corresponds to the general-purpose NIC driver 1351 of the NIC 16
- the I / O register 172 corresponds to the device driver of the operation unit 13.
- the memory mapped I / O 29 corresponds to the operation unit 13, the display unit 14, the NIC 26, a printer (not shown), and the like as an I / O device in a specific OS environment.
- the I / O register 291 corresponds to the specific NIC driver 1371 of the NIC 26
- the I / O register 292 corresponds to the device driver of the operation unit 13
- the I / O register 293 corresponds to the device driver of the display unit 14. Yes.
- the I / O register 291 is provided separately from the memory mapped I / O 29, but functions as an integral unit in addressing.
- Each I / O register of the memory mapped I / Os 17 and 29 can be specified by an address generated by the GDT 126 and the PTE 129. More specifically, in the PTE 129, physical addresses are set so that the addresses of the corresponding I / O registers can be designated for the respective tasks of the general-purpose AP and the specific AP. As a result, for example, for the general-purpose APa 1341, the operation of the NIC 16 can be controlled by generating the address of the I / O register 171 corresponding to the NIC driver 1351, while for the specific APa 1361, the NIC driver 1371 is controlled. It is possible to control the operation of the NIC 26 by generating the address of the I / O register 291 corresponding to. As described above, the memory mapped I / O 17 and the memory mapped I / O 29 can be individually specified by the physical address of the PTE 129 and their respective I / O registers can be designated.
- each I / O register of the memory mapped I / O 17 and 29 at the time of addressing for example, assuming a 32-bit CPU
- the maximum address is 4 GB.
- a link is set in a required range in the downward direction, for example, a range from 4 GB to 3 GB. That is, from the address range, it corresponds to the privilege level DPL “2” or “3”.
- the malware corresponds to the specific AP from the general-purpose OS environment.
- FIG. 31 show the flow of processing when a general-purpose APa 1341 e-mail transmission command is issued, and arrows (11) to (14) are e-mails of a specific APa 1361 The flow of processing when a command for transmission to a specific member is issued is shown.
- the general-purpose APa 1341 corresponds to a program for performing e-mail processing
- the general-purpose APa 1341 performs e-mail processing (task) on the general-purpose NIC driver 1351. It is instructed (see (1) in FIG. 31).
- the general-purpose NIC driver 1351 receives an e-mail processing task, the GDT 126 and the PTE 129 create an address to the address of the corresponding I / O register 171 of the memory mapped I / O 17, that is, a corresponding physical address (see FIG. 31 (2)).
- an operation permission signal or the like is written to the corresponding address of the I / O register 171 of the memory mapped I / O 17 (see (3) in FIG. 31).
- the NIC 16 side periodically accesses an address corresponding to the I / O register 171 of the memory mapped I / O 17 and repeats the process for checking whether or not the operation is permitted (see (4) in FIG. 31).
- the e-mail transmission target file is transferred to the NIC 16 via the I / O register 171 of the memory mapped I / O 17, subjected to predetermined encryption processing, etc. /
- a packet formed in accordance with the IP protocol is sent to the network 3.
- the predetermined encryption process and the packet conversion process to TCP / IP may be performed by the network communication processing unit 108 before being transferred to the NIC 16.
- the specific APa 1361 corresponds to a program for performing e-mail processing
- the specific APa 1361 performs e-mail processing ( (Task) is instructed (see (11) in FIG. 31).
- the GDT 126 and the PTE 129 create an address to the corresponding address of the memory mapped I / O 29, that is, a corresponding physical address (see (12) in FIG. 31).
- an operation permission signal is written to an address corresponding to the I / O register 291 of the memory mapped I / O 29 (see (13) and (13 ') in FIG. 31).
- the NIC 26 periodically accesses an address corresponding to the I / O register 291 of the memory mapped I / O 29 and repeats the process for checking whether or not the operation is permitted (see (14) in FIG. 31).
- the e-mail transmission target file is transferred to the external device 2 via the I / O register 291 of the memory mapped I / O 29, and a predetermined encoding process or the like as will be described later.
- a packet formed according to the TCP / IP protocol is sent to the network 3 via the NIC 26.
- the NIC 26 is communicably connected to the ISP 4 via a wired or wireless LAN.
- an IP address indicating the transmission source (that is, the IP address of NIC 16 in the case of general-purpose APa 1341, and the IP address of NIC 26 in the case of specific APa 1361) is set in the head area of the transmitted packet.
- the specific APa 1361 instructs to send an e-mail
- whether or not the designated transmission destination is a member is checked by the member server 5 in a mode in which all e-mails are sent via the member server 5. If the sending device has at least a collation function regarding the member regarding the destination, the external device 2 does not need to perform a monitoring process such as collation regarding the suitability of the destination, and does not have the member information.
- reception there are reception at the NIC 16 and reception at the NIC 26.
- a file is received by the NIC 16, it is processed in the same manner as before. That is, it is temporarily stored in the buffer (not shown) of the NIC 16 (or stored in the HD 12A), and the beginning of the file (after the TCP / IP format packet is restored to the original data and decrypted).
- Source information, theme or subject information, etc. are extracted from the information.
- the general-purpose APa 1341 the screen is switched to an e-mail screen and a reception list is displayed.
- the opening process is executed and the text is displayed on the display unit 14.
- the file when the file is received by the NIC 26, it is temporarily stored in the buffer of the NIC 26 (the TCP / IP format packet is returned to the original format data), the source information, the theme or the subject from the file start information. Information etc. are extracted.
- the reception list received by the NIC 26 is displayed in the specific OS environment (including a state where the general-purpose OS environment is switched to the specific OS environment) and the electronic mail is selected, the decryption process described later is performed. It has come to be.
- FIG. 32 is a circuit diagram showing an example of the data processing circuit 28 (see FIG. 3) configured by, for example, a logical expression: XOR (D, ONOR (G, S)).
- FIG. 32 is a circuit diagram for one bit showing an embodiment of the data processing circuit 28.
- the data processing circuit 28 includes a required number of logic circuits, for example, an exclusive OR circuit XOR.
- three XORs 282, 284, and 286 are employed to sequentially correspond to the three types of images G1, G2, and G3.
- circuits ONORs 281, 283, and 285 that negate an exclusive OR are connected to the preceding stages of the XORs 282, 284, and 286, respectively.
- the truth table of the circuit ONOR outputs “1” at the output terminal only when the value at one specific input terminal is “1” and the value at the other input terminal is “0”.
- the ONOR 281 has the adjustment value S1 input to its specific input terminal, the original data D0 of the target file input to the other input terminal, and the data D0 'output from the output terminal as intermediate data.
- the adjustment values S1 to S3 are created as predetermined values, for example, and give a later-described restriction to the value of the output data D3 from the final stage of the data processing circuit 28.
- intermediate data D0 'of the ONOR 281 is input to one input terminal, image data G1 is input to the other input terminal, and intermediate data D1 is output from the output terminal.
- the adjustment value S2 is input to the specific input terminal, the intermediate data D1 from the XOR 282 is input to the other input terminal, and the intermediate data D1 'is output from the output terminal.
- intermediate data D1 'of the ONOR 283 is input to one input terminal, image data G2 is input to the other input terminal, and intermediate data D2 is output from the output terminal.
- the adjustment value S3 is input to the specific input terminal, the intermediate data D2 from the XOR 284 is input to the other input terminal, and the intermediate data D2 'is output from the output terminal.
- intermediate data D2 'of the ONOR 285 is input to one input terminal, image data G3 is input to the other input terminal, and output data D3 is output from the output terminal. That is, the logic circuit of FIG. 32 can be expressed by a logical expression: XOR (D, ONOR (G, S)).
- D is a generic term for original data and intermediate data
- G is a generic term for density data of image data.
- the image data is stored in the external device 2 in advance, preferably by digitizing at least two or more different required numbers, for example, three types of images.
- three types of photographic images captured from an external memory or the like or captured by an imaging unit such as a camera, for example, three types (R (red), G (green), B (blue)) of colors. It is stored as image data for each pixel in the matrix direction of density for each component.
- the density of each color component is the same number of bits as the original data of the file data to be processed, here 8 bits.
- the range of the adjustment value S is “128” to “240” in the present embodiment in which the maximum value of the raw data is 8 bits.
- a logical expression: XOR (OR (D, S), OR (G, S)) may be used.
- a logical expression: XOR (ONOR (D, S), OR (G, S)) may be used.
- the logical expression (final stage): XOR (D, OR (G, S)) is used for the final stage.
- the data processing circuit 28 includes a decryption (decompression) of the received file, and an inverse circuit of the circuit constituted by these logical expressions is employed.
- FIG. 33 is an explanatory diagram showing a specific example of the embedding process.
- “input characters”, “binary (SJIS)”, “Bit”, and “raw data” are illustrated in order from the top.
- the table on the left side of FIG. 33 shows the color component value data of the corresponding pixels of the three pieces of image data, here the color component density data.
- Ps start pixels
- the raw data will be described.
- the file data is text data and each character is code data defined by 2 bytes
- the code data is divided into 1 byte on the upper side and 1 byte on the lower side.
- each 1 byte is divided into upper and lower 4 bits (divided processing). 4 bits are added to the upper side of each 4 bits (bit addition processing) to generate 8-bit raw data.
- the 2-byte code data representing the input character “ ⁇ ” is “10001100 11000011”
- the raw data is “00001000”, “00001001”, “000001100”, “00001100”, “00001100”, “00001100”, “00001100”, “00001100”, “00001100” "00000011”.
- the raw data is replaced with numerical values, “8”, “12”, “12”, and “3” are obtained. Note that the maximum value that can be taken by the raw data is “15”, which is 4 bits in this embodiment.
- Tables (A) and (B) are shown in the center of FIG.
- the table (A) is when data D0 is embedded, and the table (B) is when dummy code is embedded.
- RGB color components each corresponding logic circuit
- the contents of data D1, D2, D3 (see FIG. 33), which are the logical results of
- G (1,1) of Ps (1,1) of the image data G1 is “210”
- G (Ps (1,1) of the image data G2 is G ( 1, 1) is “30”
- G (1,1) of Ps (1,1) of the image data G3 is “67”
- the intermediate data D1 is “14”
- the intermediate data D2 is “0”.
- the output data D3 is" 3 ".
- B (1,1) of Ps (1,1) of the image data G1 is “34”
- B (1 of Ps (1,1) of the image data G2 ( 1, 1) is “0”
- B (1,1) of Ps (1,1) of the image data G3 is “89”
- the intermediate data D1 is “14”
- the intermediate data D2 is “14”.
- the output data D3 is" 7 ".
- the data D1 is “18”, the intermediate data D2 is “26”, and the output data D3 is “17”. It becomes.
- the data D1 is “20”, the intermediate data D2 is “26”, and the output data D3 is “25”.
- the data D1 is “19”, the intermediate data D2 is “19”, and the output data D3 is “26”.
- the dummy data itself and the output data D3 are set to a value exceeding “16”.
- the image data G1 is output data from the data processing circuit 28 when R (1,1) is “136”, G (1,1) is “210”, and B (1,1) is “34”. Since D3 is “3”, G-corresponding is “3”, and B-corresponding is “7” as in table (A), the resulting image consisting of output data D3 has density data. small.
- the resulting image composed of the output data D3 is the image data G1 to G1.
- the density data is small compared to G3. Therefore, the image has a characteristic that it becomes a dark image with low brightness on the screen, and is printed out on the recording paper in a color close to black and almost undecipherable.
- PCI Peripheral Component Interconnect
- ROM read-only memory
- RAM Random Access Memory
- Any device having a DMAC may be used.
- a USB (Universal Serial Bus) memory chip and an improved IC card may be supported, or a mode incorporated in a portable communication device may be used.
- the secure area (privilege level DPL “0”) for storing the management file 125 and the like is set to 1 MB to 100 MB.
- the present invention is not limited to this, and the management file 125 and other necessary files It is sufficient if there is a memory capacity capable of storing the management table or the like.
- the memory capacity may be 1 MB to several MB.
- the areas 0 MB to 1 MB are also set as secure areas (privilege level DPL “0”), 0 MB to 100 MB can be handled as homogeneous secure areas.
- the NICs 16 and 26 are employed as devices that communicate with the network 3, but in the present invention, the NIC is treated as a generic term for I / O devices that perform network communication processing.
- the specific NIC driver 1371 and the memory mapped I / O 29 are provided in the external device 2 together with the specific OS and the specific AP in this embodiment, the specific OS and the specific AP, the specific NIC driver 1371 and the memory mapped I / O 29 are provided. / O29 may be provided in another external device. In this case, for example, the specific NIC driver 1371 can be read after the specific OS and the specific AP are started up on the terminal 1 side.
- the file communication processing method receives an instruction from a general-purpose application operating in a general-purpose OS environment read from a hard disk to a main memory when the information processing apparatus is booted.
- the main memory step is performed by an external boot from an external device detachably connected to the information processing apparatus, and a general communication step performed via a device-side NIC provided in the information processing apparatus
- the specification performed via the external NIC provided in the external device is preferably performed alternatively.
- the specific application is read from the external device to the main memory of the information processing apparatus by external booting by the external device, and further, the specific application is transmitted via the external NIC provided in the external device. Because of communication, communication with higher security in a specific OS environment is possible compared to a general-purpose OS environment.
- a switching step of accepting an external switching operation and selectively switching between the environment of the general-purpose OS and the environment of the specific OS is preferable to provide.
- the general-purpose OS environment and the specific OS environment can be selectively selected. Therefore, the general-purpose communication step and the specific communication step can be selectively used. The trouble of rebooting is eliminated.
- the main memory is divided into a first area and a second area, the specific OS and the specific application are read into the first area, It is preferable that the general-purpose OS and the general-purpose application are read in the second area, and a privilege protection level relatively higher than that of the second area is set in the first area. According to this configuration, even if there is an unauthorized access for the purpose of falsification or the like from the general-purpose OS or general-purpose application infected with the malware to the first area from which the specific OS and specific application are read. Such access is hooked as a general protection exception and is invalidated.
- the specific communication step is expanded in the second area from the specific device driver that controls the operation of the external NIC, which is expanded in the first area. And accessing the corresponding I / O register of the mapped I / O that instructs the external NIC to permit operation with a physical address obtained through paging processing, and the general-purpose communication step includes the second communication step.
- the mapped I / O that instructs the device-side NIC, which is expanded in the second area from a general-purpose device driver that controls the operation of the apparatus-side NIC, which is expanded in the area It is preferable to access the corresponding I / O register with a physical address obtained through the paging process.
- the paging process is performed to access the corresponding I / O register of the mapped I / O through the specific device driver in the specific communication step and the general device driver in the general communication step, respectively. Therefore, each communication step can be suitably executed.
- the specific device driver and the paging processing part are provided in the first area, the contents thereof are not tampered with by unauthorized access from the second area. Further, since it is possible to prevent the contents of the paging, particularly the data at the physical address, from being altered, the I / O register of the mapped I / O cannot be accessed, and the contents cannot be altered.
- the external device transmits the communication target file to the network in the external device detachably connected to the information processing apparatus including the device-side NIC that transmits the communication target file to the network.
- the external device NIC and a specific device driver that transfers the communication target file to the external NIC in response to an instruction from the application related to transmission of the communication target file among the specific applications can be read out to the main memory Driver storage means to be stored, and mapped I / O having an I / O register that instructs the external NIC to permit operation with a physical address obtained from the specific device driver through paging processing Is preferred.
- network communication is possible via a mapped application I / O provided in an external device and an external NIC by a specific application, which is compared with the case of using an apparatus NIC on the information processing apparatus side. High security is ensured.
- the external device includes a specific OS that is read from the hard disk of the information processing apparatus and a specific application that operates in the environment of the specific OS and a specific application that operates in the environment of the specific OS.
- first storage means that is readable and stored in the main memory of the information processing apparatus at the time of external boot.
- the external device preferably includes a load unit that reads the contents of the first storage unit and the driver storage unit into the main memory when the information processing apparatus is activated.
- the specific OS stored in each storage unit, the specific application, and the specific device driver that instructs network communication are read out to the main memory at the time of external boot, so that high security is ensured.
- the main memory is divided into a first area and a second area, and the loading means reads the specific OS and the specific application in the first area,
- the general-purpose OS and the general-purpose application are read out to the second area, and a privilege processing file for setting a higher privilege protection level in the first area than in the second area is stored in the first storage unit. Preferably it is stored. According to this configuration, even if there is an unauthorized access for the purpose of falsification or the like from the general-purpose OS or general-purpose application infected with the malware to the first area from which the specific OS and specific application are read. Such access is hooked as a general protection exception and is invalidated.
- the loading means reads out a specific device driver for operating the external NIC to the first area. According to this configuration, the specific device driver is maintained with high security.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
Abstract
端末(1)のブート時にHD(12A)からRAM(12)に読み出された汎用OS(134)の環境で動作する汎用APa(1341)からの指示を受けてネットワーク(3)に通信対象ファイルの送出を行う場合に、端末(1)に設けられているNIC(16)を経由して行う汎用通信ステップと、端末(1)に着脱可能に接続された外部デバイス(2)から外部ブートによってRAM(12)に読み出された特定OS(136)の環境で動作する特定APa(1361)からの指示を受けてネットワーク(3)に通信対象ファイルの送出を行う場合に、外部デバイス(2)に設けられているNIC(26)を経由して行う特定通信ステップとを、メモリマップドI/O(17,29)を用いてそれぞれ実行する。これにより、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現する。
Description
本発明は、ネットワークを介してファイル通信を行うファイル通信処理技術に関する。
近年、インターネット等のネットワークに接続されたサーバや端末(パーソナルコンピュータ)等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限(アドレス制限)の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
特許文献1には、選択的にインストール可能な同種の2つのOSであって、一方についてはブラウザやメーラ等の通信アプリケーションプログラムを実行させ、他方についてはスタンドアロンタイプとすることによって、当該一方のOSについてのみ、セキュリティー対策を施すようにしたマルチブート可能なコンピュータが提案されている。このマルチブート可能なコンピュータによれば、各OSに対して通信セキュリティー対策を施すことなく、全体としてセキュリティーが図れるという利点がある。また、特許文献2には、複数の不揮発性記憶装置にそれぞれ異なるOSが格納されており、どの不揮発性記憶装置を用いてブートするかを指定して切り換える手法が開示されている。
特許文献1に記載されたマルチブート方法は、複数のOSが同一のハードディスクに搭載されたタイプであり、かつ、選択されたOSをコンピュータの同一のRAM上に展開するものである。このため、通信アプリケーションプログラムを使用した際にハードディスクが一旦コンピュータウイルスに汚染されると、他のOS使用時においても、当該他のOSで作動するアプリケーションについてもウイルス感染する虞があった。また、特許文献2に記載されたブート方法は、制御者が望む起動装置とOSを動的に設定して起動でき、ブート時の不用意なシステム起動不可状態や、目的外のシステム起動を避けることを目的としたものであり、セキュリティーの向上とは直接関係がない。
本発明の目的は、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現するファイル通信処理方法及び外部デバイスを提供することにある。
本発明に係るファイル通信処理方法は、情報処理装置のブート時にハードディスクから主メモリに読み出された汎用OSの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側NICを経由して行う汎用通信ステップと、前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定OSの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側NICを経由して行う特定通信ステップとを択一的に行うことを特徴とするものである。
本発明によれば、外部デバイスが接続されていない状態では、汎用アプリケーションによって装置側NICを介してネットワークへの通信が可能となり、一方、外部デバイスが接続された状態でブート(外部ブート)された場合は、特定アプリケーションによって外部デバイスに設けられている外部側NICを介してネットワークへの通信が可能となる。また、特定アプリケーションは外部デバイスによる外部ブートによって外部デバイスから情報処理装置の主メモリに読み出されたものであることから、さらに、外部デバイスに設けられた外部側NICを経由しての通信であるため、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信が可能となる。
また、本発明に係る外部デバイスは、ネットワークに通信対象ファイルの送出を行う装置側NICを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、通信対象ファイルの前記ネットワークへの送出を行うための外部側NICと、特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側NICに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側NICに対して動作許可を指示するI/Oレジスタを有するマップドI/Oとを含むことを特徴とするものである。
本発明によれば、情報処理装置に備えられた汎用アプリケーションに基づく装置側NICとは異なる特定アプリケーションを利用して、外部デバイスに設けられている外部側NICからネットワークへのファイル送受信が可能となる。この場合、特定デバイスドライバからページング処理を介して得られる物理アドレスで外部デバイスに設けられているマップドI/OのI/Oレジスタに外部側NICの動作指示が行われる。従って、特定アプリケーションによって外部デバイスに設けられているマップドI/O及び外部側NICを経由してネットワーク通信が可能となるので、情報処理装置側の装置側NICを使用する場合に比して高いセキュリティーが確保される。
本発明によれば、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現することができる。
図1は、本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。図2は、図1に示す外部デバイスのハードウエア構成の一例を示すブロック図である。図3は、端末及び外部デバイスのブート及び管理に関連する機能部の一例を示すブロック図である。図4は、専用ローダのブートでのリアルモードにおける端末のRAMのメモリマップの一例を示す図である。図5は、専用ローダのブートでのプロテクトモードにおける端末のRAMのメモリマップの一例を示す図である。
図1に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末1と、この端末1に接続可能にされた、例えばPCI(Peripheral Component Interconnect)タイプの外部デバイス2と、インターネット等のネットワーク3とを備えている。端末1はNIC16(図3参照)及びプロバイダ(ISP)4を介してネットワーク3と接続されている。外部デバイス2の一例としてのPCIは、所定サイズからなるカセット型の筐体を有し、外部に端末1と接続するためのI/Oポートを有し、内部に、後述するようにCPU、拡張BIOS等を記憶する記憶部及びネットワーク3との通信を可能にするNIC(Network Interface Card)を備えている。本実施形態では、端末1はそのままネットワーク3に接続される一方、外部デバイス2が装着された状態では、後述するように外部デバイス2のNIC26(図2、図3参照)を経由してネットワーク3と接続される構成を有する。ネットワーク3上には複数のISP4が配設されており、各ISP4には、1又は複数の端末1や各種の情報を提供する図略のWebサイトが接続されている。外部デバイス2は、例えば、端末1からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。外部デバイス2は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。
端末1は、コンピュータを有しており、図3,図4及び図5に示すように、制御手段としてのCPU(Central Processing Unit)10を有する。CPU10は、ROM(Read Only Memory)11とRAM(Random Access Memory)12とに接続されている。ROM11には、データが書き換え可能なフラッシュROMを含む。本実施形態では、ROM11は、このフラッシュROM、またCMOS(Complementary Metal OxideSemiconductor)等を備え、フラッシュROM11Aには、BIOS(Basic Input/Output System)が書き込まれている。なお、本実施形態では、外部デバイス2にも後述するようにBIOSを格納していることから、以後、端末1のBIOSをシステムBIOSと呼称し、外部デバイス2のBIOSを拡張BIOSと呼称して、両者を区別する。
また、CPU10には、図3に示すように、操作者が必要な指令や情報を入力するテンキーを有するキーボードやマウス等を備える操作部13、画像を表示する表示部14及びNIC16が接続されている。メモリマップドI/O17及びメモリマップドI/O29はRAM12とデータの授受が可能な状態でリンクされている。表示部14は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、システムBIOSは、拡張BIOSを有するデバイスである外部デバイス2を優先的に指定するように設定されている。RAM12は、所定の記憶容量、一般的には32ビット態様で4GB(B:byte)の記憶容量を有する。4GBを有するRAM12のうち、例えば16ビット態様の1MB(正確には1MB+64KBであるが、説明の便宜上、1MBと表記する。)分は、起動時のリアルモードでのワークエリアである起動メモリ領域120となる。また、本実施形態では、OSの管理のための後述する管理ファイル(管理プログラム等)が展開される所定の領域、本実施形態では1MB~100MB、そして、残りの領域が起動後の通常処理を実行する場合のワークエリアとなる。本実施形態では、0MB~100MBを第1領域とし、そのうちの0MB~1MBの起動メモリ領域120を第1領域の一部とし、100MB~4GBを第2領域としている。更に、別のメモリ部分として、システムBIOS他の種々のプログラムやデータ類が格納されるハードディスク(HD)12A等を有する。
また、端末1には、例えば図4、図5に示すように、チップセット15が設けられている。チップセット15は、図略のマザーボードを構成する主要部品で、CPUや各種メモリ、その他ハードディスク(HD)や図略のCD-ROM等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。詳細は、後述する。
本ネットワーク3には、ISP4を介して、1又は所定数の会員サーバ5及び複数の取引先端末6が接続されている。会員サーバ5は、端末1を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末6は、クライアントである各端末1からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ5には、前記会員情報の他、必要に応じて端末1に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末1毎の取引内容及び履歴情報が記憶(保管及び管理)されていてもよい。
なお、図1のネットワーク通信システムは、以下の態様が一例として採用可能である。端末1は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末1のHD12A内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル(以下、単にAP(application program)という)が格納されている。また、外部デバイス2内には、必要に応じて特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル(特定APという)が記憶されている。汎用のAPは、OSローダによって読み込まれる汎用OSによって動作可能にされるものであり、特定APは、管理ファイルによって読み込まれる特定OSによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末1には、特定APとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する(いわゆる商取引に関する)各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後に外部デバイス2からロードされる。すなわち、端末1は、特定APによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金(すなわち支払い)指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定APは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。この電子ファイルは、例えば会員サーバ5を中継して(あるいは並行して)外部デバイス2経由で端末1間で授受される。各金融機関の端末1には、消費者や企業の端末1からの金融的な決済書面に従った決済指示処理(金融機関間での決済処理の指令等)を行う特定APもインストールされている。登録会員毎に固有の情報が書き込まれた外部デバイス2が配布される。会員はサービスの提供を受ける場合、この外部デバイス2を端末1のポート1aに差し込み、少なくとも外部デバイス2の正当性の認証処理を、好ましくはさらに個人認証(外部デバイス2の正当所持者であることの認証)処理を受けた場合を条件としている。
会員サーバ5は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ5は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ5と端末1との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
また、図1に示すネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的(民間含む)な機関である団体組織(国、自治体、協会、組合等含む)外にある端末1との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。また、LANシステムにも同様に適用可能である。
なお、TCP/IP(transmission control protocol/internet protocol)規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末1のグローバルのIPアドレス、送信先である他の端末及び会員サーバのグローバルのIPアドレスが含まれる。
図2に示すNIC26には図略のルータが装備され、乃至ルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルIPアドレスか、このグローバルIPアドレスの付し方とは異なる(グローバルIPアドレスとは識別可能な形態である)専用ネットワーク用の、例えばイーサネット(登録商標)用等に準じた所定のローカルIPアドレス(MACアドレス)かを識別するためのアドレス情報(ルーティングテーブルやarp(Address Resolution Protocol)テーブル)の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
図2において、外部デバイス2は、筐体内にマザーボード(図略)を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。外部デバイス2は、制御手段であるCPU20を備える。CPU20には、ROM21及びRAM22が接続されている。また、CPU20には、マザーボード上に搭載された、拡張BIOSを記憶するROM等の拡張BIOS記憶部23及びDMAC(Direct Memory Access controller)24が接続され、更に、ROMここではフラッシュROM25、及びNIC26が接続されている。I/Oインターフェース27は、外部デバイス2の入出力部に設けられ、端末1のポート1aと装着脱可能に構成され、装着された状態で、所定数のラインを介して通信、電源供給が可能にされている。なお、I/Oインターフェース27には拡張BIOS記憶部23及びDMAC24が接続されているが、CPU20との間で通信可能とされている。外部デバイス2は、起動された端末1におけるOSの監視を行う管理ファイルのロード及びOSの監視を行うためのものである。また、拡張BIOSはフラッシュROM25に格納された態様でもよい。
図3に示すように、ROM21は、外部デバイス2として実行するべき各種の処理プログラム及び外部デバイスとして実行するべき各種の処理プログラムが格納される処理プログラム記憶部211、少なくとも会員を識別するための情報を記憶する会員情報記憶部212、及び後述するマルウエア有無監視のための基準時間情報を記憶する基準時間記憶部213を備えている。RAM22は、処理途中のデータや転送データを一時的に格納するものである。
CPU20は、端末1の起動時及び操作時に、ROM21から必要な処理プログラムを読み出して実行するものである。CPU10は、電源が投入されると、システムBIOSを起動し、必要な自己診断処理を実行した後、ブートの前に行われる処理である、利用可能な周辺機器の初期化を行うPOST(Power On Self Test)処理の実行に移行する。POST処理では、接続されている外部デバイスに対して、いわゆる拡張BIOSを格納したものがあるか否かが検索される。そして、拡張BIOSを格納した外部デバイスが検索されると、当該外部デバイスの拡張BIOSの取り込み処理が行われる。
拡張BIOSは、端末1に読み込まれ、制御が渡された後に起動し、外部デバイス2との間で所定の情報、本実施形態では、後述する専用ローダの取り込みを行わせるプログラムである。
DMAC24は、CPU10の制御を受けることなく、端末1と外部デバイス2間のバスの制御を管理することによって情報の授受を強制的に行うバスマスタ方式のコントローラ(回路)をいう。ここでは、CPU10のからの要求、外部デバイス2内のCPU20の動作状況を監視し、監視結果に応じて、両デバイス間で前記DMA転送を行うものである。
図2において、フラッシュROM25は、端末1に読み込まれる各種の情報を格納している。専用ローダ記憶部251は、後述するようにRAM12がリアルモードの状態にあるときに、DMAC24によって転送されてRAM12に読み込まれるプログラムである専用ローダ(R)を格納するものである。専用ローダ記憶部252は、後述するようにRAM12がプロテクトモードの状態にあるときに、後述するようにリアルモードに戻してDMAC24によって転送されてRAM12に読み込まれる、プログラムである専用ローダ(P)を格納するものである。専用ローダ(P)の読み込み時点で割込ベクタテーブルのレジスタIDTR(InterruptDescriptor Table Register)がプロテクトモード用になっているので、リアルモードに戻さないまま専用ローダ(P)を展開した場合、リアルモード時の割込ベクタテーブルが使用できなくなる。そこで、拡張BIOSは、レジスタIDTRをリアルモード用の割込ベクタテーブルに書き換えるリアルモード戻し処理が先に行われるようになっている。
なお、専用ローダ(R)は1MBの情報量を有するもので、起動メモリ領域120に展開される。専用ローダ(P)は、4GBの情報量を有するもので、RAM12の全体に上書きで展開される。専用ローダ(R)、(P)のローダ命令部分のプログラム内容は共通しており、その他の情報部分の内容は、起動メモリ領域120、RAM12を上書き(リセット)するために使用される情報、例えばデータ“0”等である。なお、専用ローダ(R)の情報内容を専用ローダ(P)と共通にしてもよい。
管理ファイル記憶部253は、マルウエアに汚染されたOS(乃至はAP)の後述する不正な動作を監視し、その動作を無効にするプログラムを記憶するものである。システムテーブル記憶部254は、管理ファイルの資源となるIDT(InterruptDescriptor Table)、GDT(Global Descriptor Table)、TSS(Task State Segment)等を記憶するものである。IPL(Initial Program Loader)すなわちここではOSローダを記憶するOSローダ記憶部255は、HD12AからOSをRAM12にロードするためのプログラムである。システムBIOS記憶部256は、フラッシュROM11Aに格納されているシステムBIOSと同一のプログラムである。システムBIOS記憶部256に記憶されたシステムBIOSは、HD12Aに格納されているシステムBIOSがマルウエアに汚染される可能性があることから、専用ローダがロードされた後に、起動メモリ領域120にロードするためのものである。特定OS,AP記憶部257は、プログラムであるOS等(各I/OデバイスのI/O制御ドライバ、特定APを含む)を格納するものである。I/O情報記憶部258は、各I/OデバイスのI/O制御ドライバを記憶するもので、詳細は図31で説明する。各I/Oデバイスは、例えば操作部13、表示部14、NIC16、図略のプリンタ等の周辺機器である。
また、専用ローダ(P)を、1MBのサイズのファイルと、その専用ローダ(P)内で1MB以上をクリアするロジックとを備えたものとし、専用ローダ(P)の実行時に、端末1のCPU10で、1MBの読み込み処理と、クリア処理とを行わせる態様という手法を採用してもよい。この方法によれば、4GBの転送に比してパフォーマンス面の向上が期待できる。
NIC26は、ネットワーク3を介して他の端末1等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するROM及び処理内容を一時的に格納するRAM(共に図略)を有する。また、前述したように、ネットワーク3との接続を管理するNIC26は、図略のルータを介してISP4までの公衆通信回線と接続され、その網及びネットワーク3に対する通信制御を行うものである。
I/Oインターフェース27は、ポート1aを介して外部デバイス2との間で情報の授受を行うラインの他、電源供給を行うラインも有する。端末1は図略の電源回路を有しており、外部デバイス2が端末1に装着されると、この充電回路からポート1a、外部デバイス2のI/Oインターフェース27を経由して、外部デバイス2内の図略の充電回路に電流が供給されることで外部デバイス2の電源起動が行われる。
図3において、端末1のCPU10は、ROM11、フラッシュROM11A、HD12A及びフラッシュROM25からRAM12に読み出された処理プログラムを実行することによって、システムBIOSの起動から拡張BIOSの実行を行う専用ローダロード処理部101、ロードされた専用ローダを実行させる専用ローダ処理部102、専用ローダの実行によってロードされる管理ファイル及びその動作環境を作成する管理ファイル動作環境作成部103、管理ファイルの準備終了後にOSローダ(IPL)をロードするOSローダロード処理部104、ロードされたOSローダ及びその動作環境を作成するOSローダ処理部105、管理ファイルの下にOSローダによるOSのブート乃至ブート後の動作の監視を行うOS動作監視部106、特定APあるいは汎用APを用いて文書作成その他種々の処理を実行する情報処理部107、端末1からネットワーク3を介して一般の端末1やウエブサイトサーバと通信し、またNIC26からネットワーク3を介して他の会員の端末1、会員サーバ5及び取引先端末6との間で情報の授受を行うネットワーク通信処理部108、例えば操作部13からの特定の操作に応じて動作環境を汎用OS環境と特定OS環境との間で切り替える動作環境切替部109として機能する。
専用ローダロード処理部101は、端末1の電源投入を受けて、自己診断処理を実行し、次いで、POST処理によってメモリや周辺機器の状態をチェックするものである。次いで、BIOSに設定されたデバイス、本実施形態では拡張BIOSが格納されている外部デバイス2から、この拡張BIOSを起動するようになっている。
専用ローダロード処理部101は、外部デバイス2側の専用ローダロード処理部201によって読み出される拡張BIOSをRAM12の起動メモリ領域120内の所定の領域に読み込む処理を行うものである。なお、外部デバイス2が装着されていない場合には、優先順位の順に、例えばROMからMBR(マスターブートレコード)のプログラムが読み出され、次いで読み込まれたマスターブートプログラムに制御が渡される。
専用ローダロード処理部101は、拡張BIOSがRAM12の起動メモリ領域120に読み込まれ、システムBIOSによって制御を渡された後に、拡張BIOSを実行するものである。拡張BIOSは、各種の命令コードを外部デバイス2からRAM12の起動メモリ領域120に読み出して各命令に制御を渡すようにしている。命令コードとしては、ここでは、所定の複数が設定されている。すなわち、ある命令コードによって、端末1内に特定APが実行可能な環境を準備するべく、必要なデバイスのドライバに対する初期化処理を実行する。必要なデバイスとしては、表示部14、操作部13を構成するキーボードやマウスである。また、ある命令コードによって、I/OAPIC150のリダイレクションテーブル1501(図4参照)に外部デバイス2のIRQと割込ベクタテーブル(INT)とを登録する。なお、この登録時のIRQの番号を割込番号として言い換えている。また、I/OAPIC150は、マルチプロセッサ対応可能で、受け取った割込をCPU10に通知するためのリダイレクションテーブル1501でハードウエア割り込みでの優先順位が設定可能な割込コントローラである。ここに、IRQとは割込要求であり、割込番号とは同時にハードウエア割り込みが発生した時の優先順を指す順位情報である。
また、ある命令コードは、外部デバイス2に対して、DMAC24を使用してデータ転送を受け付けるためのデータ転送要求信号を送信させるものである。このデータ転送要求信号によって転送が要求されるデータは、略1MBのローダ等(割込ベクタテーブルを含む)である。拡張BIOSによって実行される専用ローダのローダ処理に、DMAバスマスタ転送方式を採用して少なくともCPU10の関与を外すことで、仮にこの間、CPU10がマルウエアに乗っ取られていたとしても、データの転送自体を正常に行わせることができる。従って、専用ローダ(R)をRAM12の起動メモリ領域120に強制的(CPU10の制御を受けることなく)に、直前のデータを消しながら、すなわち上書きすることで、マルウエアによって起動メモリ領域120内にウイルス等が複製されたとしても、これらを確実に消去することが可能となる。なお、必要に応じて、SMRAM制御レジスタのD_LCKビットをセットして、SMRAMを書き込み禁止(アクセス禁止)させる命令コードを採用する態様であってもよい。このように、アクセス禁止のためのロックをかけることで、全てのメモリに自由にアクセスできる最上位権限であるSMM(システムマネージメントモード)という特権モードを悪用させないようにすることが可能となる。
ところで、システムBIOSから立ち上がる起動の間に、プロテクトモードの動作状態にあることが検知されると、マルウエアが存在する可能性が高いと見なして、起動動作を中止することが考えられる。この場合には、システムBIOSを書き換えたり、ワクチンによってシステムBIOS内に潜伏するウイルスを駆除する対処方法が考えられる。これによって、マルウエアが存在する環境下で情報処理を行うことによる危険は回避される。一方、このように起動を中断すれば、対処するまでの間、一律に端末1の立ち上げができず、特定APの使用環境を円滑に会員に提供できないといった不便さがあり、問題がないではない。そこで、プロテクトモードによる異常が発生した場合には、リセット処理を実行させて、リアルモードに設定し直すようにしている。
専用ローダロード処理部101は、拡張BIOSに制御が移行された後に、後述するように外部デバイス2から送信されてくる、リアルモードへの設定のための命令コマンドによって、実行されるものである。システムBIOSの起動動作中に、端末1がプロテクトモードに設定されていると判断、あるいはリアルモードに設定されていることが疑わしいと判断された場合に発せられる、前記リアルモードへの設定のための命令コマンドを受けて、専用ローダロード処理部101は、モードをリアルモードに設置し直すための処理の一部を実行するものである。本実施例では、前述のレジスタIDTRをリアルモードの割込ベクタテーブルに戻す処理、I/OAPIC150のリダイレクションテーブル1501に外部デバイス2のIRQと割込番号を登録する処理、データ転送要求信号の出力処理である。かかるモード判断処理は、マルウエアの影響を受けないようにするべく、後述するように外部デバイス2側で実行される。
次に、図3において、CPU20は、ROM21に記憶されたプログラムを実行することによって、専用ローダをロードするための拡張BIOSの端末1への読み出しを行う専用ローダロード処理部201、専用ローダのロード動作を監視し、監視内容に応じた指示を発する監視部202、管理ファイルの端末1側への読み出しを行わせる管理ファイルロード処理部203、OSローダの一部である外部デバイス2側から端末1へのロード部分の読み出し行わせるOSローダロード処理部204、及び外部デバイス2による起動後に特定APを用いて作成されたファイル等に、後述するデータ処理回路28による符号化、復号化処理、またTCP/IPへのパケット作成処理を施し、NIC26及びネットワーク3を介して他の端末1、会員サーバ5及び取引先端末6との間で授受するネットワーク通信処理部205として機能する。
監視部202は、ここでは後述の3態様の監視方法が含まれており、計時手段による監視態様、リアルモードかプロテクトモードかのモード状態を判断するモード判断手段による監視態様、及びモードをチェックするモードチェック手段による監視態様である。
専用ローダロード処理部201は、端末1でのPOST処理によって読み出し指示を受けてRAM12へ拡張BIOSの読み出し処理を実行するものである。また、専用ローダロード処理部201は、監視部202の監視内容に応じて、リアルモードの状態においてローダ(R)を転送するべく、DMAC24を起動する(転送指示を行う)ものであり、一方、プロテクトモードの状態においてローダ(P)をRAM12に転送するべく、DMAC24を起動する(転送要求(指示)を行う)ものである。
監視部202の計時手段は、端末1からの電源供給を受けて外部デバイス2が起動するレベルに達した時点から計時をスタートし、端末1のシステムBIOSが拡張BIOSに制御を渡して命令コードが外部デバイス2に送出されたことを受けて計時動作をストップすることで、その間の所要時間を計測するものである。
監視部202のモード判断手段は、計時手段で計時された時間と、ROM21の基準時間記憶部213に記憶されている基準時間情報との大小(長短)を比較し、計時時間が基準時間を超えている場合には、マルウエアによってモードがプロテクトモードになっていると見なしてリアルモードへの設定し直し(書き換え)のための命令コードを端末1に送出するものである。なお、基準時間とは、以下のようにして設定されている。すなわち、まず、端末1に電源が投入され、システムBIOSが起動してPOST処理が実行され、RAM12に拡張BIOSが展開され、さらに、拡張BIOSに制御が渡されるまでに要する時間は、マルウエアが動作せず正常の場合、ほぼ予め設定された時間となる。
一方、システムBIOSにマルウエアが潜伏しており、あるいはシステムBIOS起動中にマルウエアが侵入してきて、RAM12上にプロテクトモード環境を構築する場合には、前記の正常な場合での設定時間に比してより大きな時間を要することとなる。そこで、端末1の起動、すなわち外部デバイス2の起動から拡張BIOSへの制御移管までの経過時間によってRAM12がリアルモード空間にあるか、プロテクトモード空間にあるかを、端末1側で直接モード内容を判断する方法ではなく、外部デバイス2側で判断するようにしている。
図4は、リアルモードにおけるRAM12の内容であり、図5はプロテクトモードにおけるRAM12の内容である。図4に示すように、チップセット15は、I/OAPIC150の他、CPU10が複数ある態様では、CPU10毎に、ローカルAPIC151、EFLAGSや汎用レジスタ等の各種のレジスタからなるレジスタ群152を含むチップセット15a~15nを有する。また、RAM12のうち、0MB~1MBの起動メモリ領域120には、システムBIOS121、拡張BIOS122、割込ベクタテーブルを含む専用ローダ123、一時的GDT124が展開されている。なお、専用ローダ123は起動メモリ領域120の全域に展開されるもので、ローダとして機能するプログラム部分と、1MB分の転送データを作成するために補充されたダミーデータ等を適宜含む。なお、一時的GDT124は専用ローダ123によって作成されたもので、専用ローダ123によって1MB~100MBに管理ファイルをアンリアルモード(Unreal mood)でロードするためのアドレッシング用である。ここにアンリアルモードとは、リアルモード環境においてチップセット15内の図略のデータセグメントレジスタのアクセスリミットを4GBに変更することによって、データアクセスのみ1MB以上、すなわち起動メモリ領域120外に対してアクセスを可能にした特殊な状態を指す。
一方、プロテクトモードでは、図5に示すように、各チップセット15a~15nには、レジスタ群152に、割込ディスクリプタテーブル(IDT)のアドレスが格納され、CPU10によって参照されるレジスタIDTR(InterruptDescriptor Table Register:割込ディスクリプタテーブルレジスタ)も含まれている。また、4GBのRAM12の任意の領域について、専用ローダ内の割込ベクタテーブル123’、システムBIOS121、拡張BIOS122が展開され、さらに任意の領域にはプロテクトモードを構成するための、IDT(InterruptDescriptor Table)、GDT(Global Descriptor Table)、さらにPGM(Program)1~i及びPGM1~i毎のTSS(Task State Segment)の各管理テーブル(但し、PGMは除く)が形式的に作成されている。すなわち、図5は、RAM12に、あたかも図4と同様な空間が存在するかのように、マルウエアによって作成された、外部デバイス2に見せるための環境設定の結果である。
マルウエアは、システムBIOSの動作中に、プロテクトモードの環境をRAM12上に展開するために、図5に示すようなそれぞれのプログラムを作成し、RAM12上の適所に展開し、その後に、制御を拡張BIOSに渡すことになる。さらに、マルウエアの本体プログラムをRAM12内に展開する必要があり、これらのデータは外部媒体である、ハードディスク(HD12A)から主に取得しなければならない。従って、端末1の起動から拡張BIOS122に制御を渡すまでの所要時間は、図4の場合に比してかなり大きな時間にならざるを得ないことになる。そこで、図4のリアルモードにおける場合の所要時間と、図5のプロテクトモードにおける場合の所要時間との間の適当な時間を基準時間として設定している。
図3に戻って、監視部202のモードチェック手段について説明する。監視部202のモードチェック手段は、計時手段による監視態様やモード判断手段による監視態様とは別の方法で監視を行う実施態様である。すなわち、システムBIOSが拡張BIOSに制御を渡した後、外部デバイス2が命令コードを発するようにしている。DMAC24はこの命令コードによって起動され、RAM12の内容を、CPU10の制御を受けることなく、全て転送によって読み取り、外部デバイス2に取り込む。監視部202のモードチェック手段は、読み込まれたRAM12の内容をチェックして、プロテクトモード環境にあるか否かの判断を行う。判断手法は、RAM12のデータ中に、プロテクトモードに固有の情報、例えば前述したGDT,IDT又はTSS等の管理テーブルの有無を判断材料としてもよい。このように、プロテクトモード空間にあるかを、端末1側で判断する方法ではなく、外部デバイス2側で判断するようにしている。
さらに、監視部202のモードチェック手段は、マルウエアによってモードがプロテクトモードになっている判断すると、リアルモードへの設定し直しのための命令コードを端末1に送出するものである。
続いて、図6~図10により、CPU10、CPU20におけるブート処理を説明する。図6は、端末1のCPU10によって実行されるシステムBIOSの起動処理の手順を説明するフローチャートである。まず、端末1の電源投入後、システムBIOSのチェックが行われ(ステップS1)、次いでPOST処理が実行される(ステップS3)。そして、POST処理によって外部デバイス2から拡張BIOSの読み込みが終了したか否かが判断される(ステップS5)。拡張BIOSの読み込みが終了していなければ読み取りが継続され、読み取りが終了したのであれば、拡張BIOSへ制御が渡される(ステップS7)。
なお、以降においては、端末1のポート1aに外部デバイス2の一例としてPCIが装着されているという前提で述べる。すなわち、端末1のポート1aにPCIである外部デバイス2が装着されていると、POST処理によって、システムBIOSの起動ルーチンによって拡張BIOSがRAM12に読み込まれる。
図7は、端末1のCPU10によって実行されるシステムBIOSのPOST処理(ステップS3)の手順を説明するフローチャートである。まず、端末1に接続されているデバイスとしてPCIが装着されているか否かが判断され(ステップS11)、PCIが装着されていなければ、システムBIOSは通常の起動処理が実行される(ステップS13)。一方、PCIが装着されていると、デバイスのBIOS、すなわち拡張BIOSが検索されて(ステップS15)、この拡張BIOSがRAM12にロードされる(ステップS17)。次いで、ロードが終了すると、システムBIOSによってロード終了信号が出力される(ステップS19)。
図8は、外部デバイス2のCPU20によって実行される監視処理Iの手順を説明するフローチャートである。まず、外部デバイス2の電源がオンしたか否かが判断され、オンしたのであれば(ステップ#1)、監視部202の計時手段によって計時動作がスタートされる(ステップ#3)。次いで、システムBIOSから命令コードが受信されるまで待機し(ステップ#5でNo)、命令コードが受信されると、計時動作がストップされる(ステップ#7)。
次いで、計測した計時時間が基準時間より短い(計時時間<基準時間)か否かが判断(比較)され(ステップ#9)。計時時間が基準時間より短ければ、端末1はプロテクトモード環境に設定されていないと判断し、すなわち少なくともマルウエアによって端末1のCPU10がプロテクトモードに設定されていないとして、本フローを抜ける。一方、計時時間が基準時間と等しいか長ければ、端末1のCPU10はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末1のCPU10の環境がプロテクトモードに設定されている可能性があるとして、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信して(ステップ#11)、本フローを抜ける。
図9は、外部デバイス2のCPU20によって実行される監視処理IIの手順を説明するフローチャートである。まず、(端末1側において、システムBIOSから拡張BIOSにCPU10の制御が渡されて)、拡張BIOSから前述した命令コードが受信されたか否かが判断される(ステップ#21)。この命令コードが受信されていなければ、本フローをスルーする。一方、この命令コードが受信されたのであれば、端末1の制御が拡張BIOSにあると判断して、DMAC24の起動及びDMAC24による転送対象であるRAM12の指定を行う(ステップ#23)。これによりDMAC24を介してRAM12の内容が外部デバイス2のRAM22に取り込まれる。この時点においても、端末1のCPU10の制御から離れてRAM12の全ての内容(ここでは4GB)を取り込むようにして、CPU10のモードの如何による影響を全く受けないようにしている。
次いで、取り込んだRAM12の内容に対して、プロテクトモードに固有の内容、具体的には前述したIDT、GDT、TSS等の固有の管理テーブルが存在するか否かがチェックされる(ステップ#25)。RAM12内にプロテクトモード固有の内容が含まれていなければ、リアルモードであると判断して、本フローを抜ける。
一方、RAM12内にプロテクトモード固有の内容が含まれている場合には、端末1のCPU10はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末1のCPU10の環境がプロテクトモードに設定されている可能性があるとして、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信して(ステップ#29)、本フローを抜ける。
図10は、端末1のCPU10によって実行される拡張BIOS処理の手順を説明するフローチャートである。CPU10の制御が渡された拡張BIOSは、まず、外部デバイス2からリアルモードへの設定し直しのための命令コードが受信されたか否かが判断される(ステップS31)。受信のために準備された所定の時間内に、この命令コードが受信されなければ、端末1に接続されている所定のデバイス(前述した表示部14、キーボード、マウス)に対して初期化のためのPOST処理が施される(ステップS33)。次いで、I/OAPIC処理(ステップS35)、データ転送要求信号出力処理(ステップS37)が実行される。続いて、DMAC24が起動されて、専用ローダ記憶部251からローダ(R)が端末1側に転送され、RAM12の起動メモリ領域120に上書きされる(ステップS39)。そして、転送が終了したかどうかが転送終了信号によって確認されると(ステップS41でYes)、ハードウエア割込が発生され、CPU10の制御がローダに渡されて(ステップS43)、本フローを抜ける。
一方、ステップS31で、リアルモードへの設定し直しの命令コードが受信されると、レジスタIDTRを割込ベクタテーブルに書き換えるリアルモード戻し処理(ステップS45)、I/OAPIC処理(ステップS47)、データ転送要求信号出力処理(ステップS49)が実行される。続いて、DMAC24が起動されて、専用ローダ記憶部252からローダ(P)が端末1側に転送され、RAM12の全域に上書きされる(ステップS51)。そして、転送が終了したかどうかが転送終了信号によって確認されると(ステップS53でYes)、ハードウエア割り込みが発生され、CPU10の制御がローダに渡されて(ステップS55)、本フローを抜ける。なお、専用ローダ(R),(P)のロードの終了に引き続いて、システムBIOS記憶部256から適正なシステムBIOSを専用ローダのローダ部分に影響しない領域に上書きするようにしている。あるいは、専用ローダ(R),(P)の一部にシステムBIOS記憶部256のシステムBIOSを予め含めておいて、専用ローダ(R),(P)のロードで起動メモリ領域120に上書きされる態様でもよい。このシステムBIOSは後述するように、OSのローダの際に用いられる。
また、専用ローダのロード処理に関しては、監視処理I、IIに代えて、図11~図13に示す態様を採用したものでもよい。図11は、外部デバイス2のCPU20及び拡張BIOSによって実行される監視処理IIIの手順を示すための説明図である。また、図12は、端末1側のCPU10によって実行される監視処理IIIの一部手順を説明するフローチャートであり、図13は、外部デバイス2側のCPU20によって実行される監視処理IIIの一部手順を説明するフローチャートである。
図11に示す監視処理IIIを実行するためには、外部デバイス2は以下の構成を備えている必要がある。CPU20のROM21又はフラッシュROM25は、IOAPICを記憶する記憶手段として機能する。このIO APIC150は、POST処理時に、外部デバイス2のレジスタに設定されたハードウエア割込IRQにて端末1側に登録されて、当該IRQの番号に紐付く割込番号が自動設定される。同様にCPU20のROM21又はフラッシュROM25は、割込ベクタテーブル、及び割込ハンドラの内容を記憶する記憶手段として機能する。また、DMAC24は、割込ベクタテーブル123’、及び割込ハンドラ124’の内容をCPU10の制御抜きで、端末1側に転送する処理を行う。また、監視部206は、後述する割込ハンドラ124’の実行結果信号の有無を監視する機能を備える。また、この監視部206は、前記転送要求が発せられた後、DMAC24により、バスマスタ方式で割込ベクタテーブル123’と前記割込ベクタテーブル123’の所定のベクタに対応する割込ハンドラ124’との前記起動メモリ領域への転送を行い、さらに割込ハンドラ124’からの実行結果信号の有無を判断する機能部を備えている。
そして、拡張BIOSは、以下の手順を実行する。なお、IOAPIC150のリダイレクションテーブル1501内には、ハードウエア割込(IRQ10)に、例えばINT0が設定されている。また、ここでは、ハードウエア割込としてIRQ10としたが、IRQは“10”に限定されず、デバイスを指定するべく予め対応付けされた番号であればよい。また、割込ハンドラ124’とは、割り込み処理を実行するためのメモリ上に待機しているプログラムをいう。さらに、割込ベクタテーブル123’のINT0には、割込ハンドラ124’であるプログラムの先頭アドレス、図11の例ではアドレス1000が設定されている。
次に、図12において、まず、システムBIOSから拡張BIOSに制御が渡ったか否かが判断され(ステップS61)、拡張BIOSに制御が渡っていなければ、本フローをスルーする。一方、拡張BIOSに制御が渡ったのであれば、拡張BIOSに制御が渡った旨のリクエスト信号が外部デバイス2に送信される(ステップS63、図11の矢印[1]参照)。次いで、ハードウエア割込(IRQ10)命令の発行の有無が判断され(ステップS65)、例えばリクエスト信号の送信時点から所定時間内に、ハードウエア割込(IRQ10)命令の発行が確認されると、INT0が指定されてINT0命令が発行され、該当アドレスの割込ハンドラ124’が実行される(ステップS67、図11の矢印[4]参照)。そして、割込ハンドラ124’の実行結果信号が外部デバイス2へ返信される(ステップS69、図11の矢印[5]参照)。なお、割込ハンドラ124’の実行結果信号を毎回変更することが秘匿性の点からはより好ましい。実行結果信号は、例えば、ブートの日時情報や外部デバイス2の会員情報記憶部212の会員情報を用いて所定のルールに従って作成される。
図13においては、まず、リクエスト信号の受信の有無が判断され(ステップ#41)、リクエスト信号が受信されていなければ、本フローをスルーする。一方、リクエスト信号が受信されていると、DMAC24の起動及び転送対象となる記憶領域の指定処理が行われて(ステップ#43、図11の矢印[2]参照)、転送対象の情報がブロック転送によってCPU10の制御を受けない状態で、端末1側に転送される。ここに、転送対象の情報とは、IOAPIC150(のリダイレクションテーブル1501)、割込ベクタテーブル123’及び割込ハンドラ124’の各内容である。
次いで、転送動作の終了を受けてCPU20から出力される転送終了信号の有無が判断され(ステップ#45)、転送終了信号が確認されると、ハードウエア割込(IRQ10)命令が発行されて、端末1に送信される(ステップ#47、図11の矢印[3]参照)。次いで、監視処理として、ハードウエア割込(IRQ10)命令の発行時点から所定時間内に、割込ハンドラ実行結果信号の受信の有無が判断される(ステップ#49)。監視の結果、割込ハンドラ実行結果信号が受信されると、CPU10はリアルモードの状態にあって、ブートが正常に行われたと判断されて、本フローを終了する。
一方、CPU10がマルウエアによってプロテクトモードの状態にされた場合、DMAC24を利用したバスマスタ転送によって、この転送前に、CPU10は割込ベクタテーブル123’のINT0のアドレスと割込ハンドラ124’の先頭アドレスとを知ることはできないから、マルウエアによって設定されるINT0のアドレスと割込ハンドラ124’の先頭アドレスとを対応させることはできない。特に、INT0の内容と割込ハンドラ124’の先頭アドレスの設定を、ブート処理毎に外部デバイス2側で所定のルールによって、あるいは乱数発生部を作動させて無作為に設定するようにすることが好ましい。
従って、プロテクトモードの状態にある場合、割込ハンドラ124’は実行されず、監視の結果、割込ハンドラ実行結果信号が生成されない、すなわちブートが正常に行われていない可能性が高いと判断して、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信し(ステップ#51)、本フローを抜ける。図13の処理を抜けて、端末1は、図10の処理を行う。
このように、DMACを端末1側に設けた場合には、DMAC24の起動や転送対象内容の指定が、マルウエアに乗っ取られたCPU10によって管理される虞(すなわち、例えばある処理を行っていないにも拘わらず、処理を行った旨の信号のみを擬似的に生成して出力するような処理)があるが、DMAC24を外部デバイス2側に設けることで、CPU10の制御を受けることを排除することが可能となる。
次に、図4、図14~図17は、専用ローダのロードからOSの動作監視までのRAM12のメモリマップの変遷を示す図である。図4は、前述したように、専用ローダ123のロードから一時的GDT124の作成まで、すなわち起動メモリ領域120内に対するデータ作成状態を示している。なお、システムBIOS121は専用ローダ123のロードによって一旦消去されるので、前述したように外部デバイス2から新たにロードされる。あるいは専用ローダ123内に予め含めておき、専用ローダのロード時に同時にロードされるようにしてもよい。これは、専用ローダ123及びシステムBIOS121は後述するように、後にOSのロードにおいて必要となるからである。その意味では、拡張BIOS122は必ずしも再度ロードする必要はない。また、図4において、外部デバイス2からのシステムBIOSのロードは専用ローダ123内のダミーデータ部分に上書きするようにすればよい。
図14は、1MB~100MBの領域に管理ファイル125、管理用GDT126及び管理用IDT127が展開された状態のメモリマップである。図3の専用ローダ処理部102は、拡張BIOS122のリクエストを受けた外部デバイス2からのハードウエア割込の発生に応じて専用ローダ123にCPU10の制御が移されることによって実行されるローダ処理である。専用ローダ処理部102は、図14に示すように、管理ファイルロード処理部203によって読み出された、外部デバイス2の管理ファイル記憶部253内の管理ファイル125を端末1のRAM12の1MB~100MBの所定位置に読み込む処理及びこれに関連する処理を行う。より詳細には、専用ローダ処理部102は、まず、RAM12の1MB~100MBへのアクセスを可能にするための処理、例えば図4で示したような一時的GDT124の作成、チップセット内の各種レジスタに対する設定を行う。一時的GDT124は、管理ファイル125を構成するプログラムや管理テーブルの全て(のセグメントディスプリクタ)に対して特権レベルであるDPL(Description Privilege Level)に“0”(いわゆるリング“0”)を設定することによって、管理ファイル125を1MB~100MBの所定位置に最も高い特権レベルでロード可能にしている他、この領域に設定される情報に対して全てDPL“0”でのロードを実現している。DPLとは、公知のように、メモリ空間の特権レベルを記述するもので、DPL“0”からDPL“3”までの4ランクがある。DPL値が相対的に小さい程、特権のレベルが高い。例えば、DPL値の相対的に大きい値として記述された空間で動作するプログラムはDPL値がそれより小さい値で記述された空間側にアクセスすることはできない。すなわち、この場合は特権レベル違反として、後述する一般保護例外(#GP)あるいはページフォルト(#PF)が発行され、アクセスは無効とされる。一方、DPL値の相対的に小さい値として記述された空間で動作するプログラムはDPL値がそれより大きい値で記述された空間側にアクセスしたり閲覧したりすることができる。これによって、不適当なアクセスか否かの判断が事前に可能となる。
また、専用ローダ処理部102は、管理レジスタのうちのレジスタCR0に対してフラグを設定することで、1MB~100MBの領域へのアクセスをプロテクトモードで行う他、別途、リアルモードにおいて、一時的GDT124のセグメントリミットを1M以上、ここでは4Gに設定したことで、アンリアルモードでの動作を可能としている。このアンリアルモードで、管理ファイル125及び割込ハンドラ130がロードされ、次いで管理用GDT126がロードされ、また管理用IDT(管理用割込ベクタテーブル)127がロードされる(図14参照)。管理用GDT126、管理用IDT127の各セグメントディスクリプタは、当該時点で必要なテーブル部分までが予め作成されており、専用ローダ処理部102によってロードされる。専用ローダ処理部102は、これら必要な情報のロード後、CPU10の制御を管理ファイル125に渡す(ジャンプする)。
図15は、1MB~100MBの領域にTSS128、PTE(Page Table Entry)129及び管理用割込ハンドラ130が作成された状態のメモリマップである。また、図には示していないが、必要に応じてタスク毎のLDT(Local Descriptor Table)が作成される。管理ファイル動作環境作成部103は、管理ファイル125のプログラムによって、TSS128、PTE(Page Table Entry)129、管理用割込ハンドラ130及び必要なLDTを作成する。なお、TSS128及びPTE129は、後述するように、101MB以上で動作するタスク(主に、HD12AからのOSのロード)を監視するための管理用(プロテクト)モード用のテーブルと、100MB~101MBで動作するタスクを監視するVM8086モード用のテーブルとを備えている。モードを図略のタスクスイッチで適宜切り替えることで、OSを構成する各プログラムのロードと当該OSの各プログラムのセグメントディスプリクタを管理用GDT,IDTにそれぞれ追加する処理が可能となる。
TSS128は、管理ファイル125内の各管理用のプログラム(タスク)の各々に対応付けて作成されている。すなわち、TSS128は動作状態に応じたプログラムを稼働させるべく、タスクスイッチによって必要なプログラムに実行状態を移し、かつ直前のプログラムの処理内容を対応する個々のTSSにコンテキストすることで、現状復帰を可能にしている。PTE129は、GDT126で作成されたリニアアドレスを物理アドレスに変換するためのもので、各情報(各プログラムコード、各データ、各スタック)について対応して設けられている。
ここで、図18~図21を用いて、GDT126及びPTE129と、リニアアドレスから物理アドレスへの変換との関係を説明する。まず、端末1が起動する際のモードである16ビットのプログラムで動作するリアルモードでは、セグメント値とオフセット値とを用いてアドレスが決定され、公知のように、セグメント値を4ビットずらした値(16倍した値)にオフセット値を加算することで、最大、(1MB+64KB)までのアドレス(リニアアドレス)が直ちに物理アドレスとして算出できる。一方、それ以上のアドレスに対しては、プロテクトモードが採用されており、例えば32ビットのプログラムで動作する態様では、4GBまでアドレス指定が可能となる。なお、それぞれの情報(タスク)毎に、異なるアドレスを設定することで、仮想アドレス空間が設定できることから、情報(タスク)を所要データ量ずつに分けて、格納することが可能である。
図18は、かかる情報格納態様に対応するもので、情報の格納箇所を示すGDT126の全体概要を示している。GDT126は、例えば8バイト単位で各情報の格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、4つの属性を有している。属性は、情報の「種別」(プログラムコード、データ、スタック)と、「ベースアドレス」と、「リミット」と、「DPL」である。「ベースアドレス」は、情報のRAM12内における格納基準(スタート)アドレスを示している。「リミット」は、情報のアクセス範囲を示す。DPLは、前述した特権レベルを示す。アドレッシングにおいて採用されるセグメントディスクリプタは、リニアアドレスからの変換に際して使用されるセグメントセレクタの情報を介して選択される。また、タスクのアクセスが許可されるものか否かは、アクセス要求時に、チップセット内に書き込まれたレジスタCS,DS,SSのいずれかのレジスタ内のCPL(Current Privilege Level)及びRPL(Requested Privilege Level)と、GDT126の対応するセグメントディスクリプタとを照合することで決定される。
図19は、PTEのメモリマップを示す。各ページデータは所定のデータ量、例えば4KB毎に分割されており、各ページデータは、物理アドレスとアクセス属性とが設定されている。各ページデータは、プログラムコード、データ、スタックの種類が含まれる。物理アドレスは、リニアアドレスをRAM12内の所定の位置に移動させるためのものである。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。「スーパーバイザー」は特権レベルDPL“0”~DPL“2”に該当し、「ユーザ」は特権レベルDPL“3”に該当する。また、データに該当するページにNX-Bit(Non eXecute Bit)を保有し、当該ページからCPU10に命令コードが発行できなくする。そして、CPU10からのアクセスが特権レベル違反となる場合には、例外割込の一般保護例外(#GP)が発行され、一方、アクセス属性違反となる場合には、ページフォルト(#PF)が発行される。いずれの場合にも、割込ハンドラ130を経てアクセスを無効とする処理が実行される。なお、アクセスの無効とは、アクセス自体をシャットダウンする態様、改変された特権レベル値を正しい値に書き直す態様を含む。
図20は、リニアアドレスから物理アドレスに変換する変換方法を図で示したものである。CPU10で作成された、ある情報をアクセスするためのリニアアドレスは、GDT126のセグメントセレクタとベースアドレス、さらにPTE129の物理アドレスとを用いて物理アドレスに変換されることとなる。図21は、プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示すものである。まず、リアルモードでは、リニアアドレスの0MB~1MBは、物理アドレスの0MB~1MBに対応する。この範囲は16ビット仕様であり、両者は一致する。ところで、PTE129は、後述するように管理用(100MB以下の領域)とVM8086用(100MB~101MBの領域)とが準備される。ここでは、プロテクトモードにおける管理用のアドレッシングについて説明する。すなわち、リニアアドレスの0MB~1MBを、物理アドレスの100MB~101MBに対応するようにしている。このように、物理アドレスの100MB(あるいは101MBでもよい)以上の所定の値をPTE129内の管理用側のテーブルの各タスクの物理アドレスの項に設定するようにしている。この物理アドレスの設定により、PTE129のタスク(代表的にはOSのロード、あるいはOSの実行)は、全て100MB(あるいは101MB)以上の設定アドレスにロード、あるいは展開されることになる。換言すれば、PTE129によって100MB(あるいは101MB)以上のあるアドレスにページングされる結果、管理ファイル125及びGDT126、IDT127,TSS128、PTE129、割込ハンドラ130が配置されている100MB以下にアクセスされることはなく、従って、GDT126その他のテーブル内の内容の改変はできず、かつそもそも100MB以下は見えない(存在しない)ことと等価となる。
図16は、100MB~101MBの領域に0MB~1MBの内容(実質的に専用ローダと外部デバイス2から新たにロードされたシステムBIOS)がコピーされた状態、及び同領域の所定位置にOSローダ131が作成された状態のメモリマップである。OSローダ131は、例えばダミーデータが書き込まれている位置に、あるいは拡張BIOSが書き込まれている位置に上書きする態様でよい。この100MB~101MBへの情報の書込処理はVM8086モードで行われる。なお、VM8086モードとは、プロテクトモード実行中に、リアルモードに切り替える処理を行うと管理の煩雑さ等を考慮すれば効率が低下することから、EFLAGSレジスタのVMビットを切り替えてリアルモードのアドレス演算を行うようにし、16ビット用のプログラムを実行可能にするものである。この期間において、当該領域から0MB~100MBの情報へのアクセスをページングによって無効にしている。
OSローダロード処理部104は、外部デバイス2側のOSローダロード処理部204によってコピーされ、端末1側に読み出される0MB~1MBの内容をRAM12の100MB~101MBにロードする処理、及びOSローダをロードする処理を行う。OSローダは、HD12Aから読み取ったMBRと、外部デバイス2から読み取った、後述するブートプログラムコードとから作成される。より具体的には、OSローダロード処理部104は、管理ファイル125内のプログラムであって、HD12Aの0セクタ目から読み出されたMBRのパーティションテーブルから、OSのロード及び起動を行わせるためのプログラムであるPBR(Partition Boot Record)、及びHD12A内のOSの格納アドレス情報を読み取る。また、PBRは、BPB(BIOS Parameter Block)とブートプログラムコードとを含んでいる。この内、BPBはHD12AからOSを読み出すための情報であることから、改変される可能性はなく、そのまま利用する一方、ブートプログラムコートは、固定的で共通であり、また改変の可能性があることから、予め外部デバイス2に準備しているブートプログラムコードをロードして用いるようにしている。そして、OSローダロード処理部104は、BPBと外部デバイス2からロードされたブートプログラムコードとを結合してOSローダ(IPL(Initial Program Loader)とも言う。)131を作成する。この後、専用ローダ処理部102は、CPU10の制御をOSローダ処理部105に渡す(ジャンプする)。
図17は、101MB以上の領域にOSがロードされる状態を示すメモリマップである。なお、図17中、破線で示すOS用GDT132、OS用IDT133は、OSが自己の挙動を記述するためのテーブルを作成しようとしている状況を示している。
OSローダ処理部105は、まず、VM8086モード(すなわちCPL“3”)に設定した状態で、制御レジスタCR3に物理アドレスを設定して、OSローダを起動させてHD12AからOSを構成する各プログラムを順次RAM12の101MB以上の領域にロードするものである。HD12AからロードされてきたOSは、自己の動きを記述するOS用GDT132を作成するべく、チップセットのレジスタGDTRの内容を書き換えようとするLGDT要求を出す。一方、チップセットのレジスタGDTRへのアクセス(書き替え要求)はCPL“0”でのみ許可されるものであるから、OS動作監視部106は、このアクセスに対して、例外割込としての一般保護例外(#GP)を発行する。そして、この一般保護例外は、IDT127を介して、管理ファイル125内の割込ハンドラに移行する。OS動作監視部106は、割込ハンドラを介して、プログラムカウンタを用いてCPU10が次に実行するべき命令(プログラム)の格納場所を指すレジスタEIPを参照して、不当なアクセス要求をしているプログラムのアクセスを特定し、レジスタGDTRの書き替えを禁止すると共に、当該不当なプログラムに対し、改変された特権レベルを元の値に書き直す等の割込ハンドラ処理を実行する。また、OS動作監視部106は、この不当なプログラムをGDT126に新たなセグメントディスクリプタとして追加し、特権レベルの項目にDPL“2”を設定し、かつPTE129の管理用のテーブルに新たなページングテーブルとして追加し、物理アドレスとして少なくとも101M(あるいは100M)以上の所定のアドレス値を設定する。これにより、GDT126のアクセス権にDPL“2”に設定されることで、以後、OS側から0MB~100MB内へのアクセスは不当アクセスとして無効にされ、かつPTE129によってOSからは100M以下の物理アドレス変換が不可能となる。
なお、管理ファイル125は、外部デバイス2が予め格納している特定APを1MB~100MB内にDPL“0”でロードするようにしている。特定APとしては、操作部13のデバイスドライバ、表示部14のデバイスドライバを制御して特定モード環境で情報処理操作を実行可能にすると共に、必要に応じて特定の会員に対して通信を行うべく外部デバイス2のNIC26のデバイスドライバを制御する。なお、端末1がサーバの場合、外部デバイス2のNIC26のデバイスドライバが少なくとも実行される態様であればよい。
情報処理部107は、前記デバイスドライバを切り替えて汎用のAPモードでの処理と特定APモードでの処理を実行させるものである。ネットワーク通信処理部108は、端末1からの通信と外部デバイス2のNIC26からの会員間、特定サーバ間との通信とをデバイスドライバを用いて切り替制御するものである。動作環境切替部109は、汎用OS環境での処理と特定OS環境での処理とを切り替えるものである。切替指示は、端末1に対する特定操作で行うことができ、例えばキーボード上の特定キー(1又は複数)を押下することで、サイクリックにモード切替指示が可能であり、あるいは個別に別々の操作で各環境を指示する態様でもよい。
続いて、図22~図27を用いて、端末1の処理手順について説明する。図22は、CPU10によって実行される専用ローダ123の処理を示すフローチャートである。まず、専用ローダ123のロード終了に応じたハードウエア割込の有無が判断され(ステップS101)、ハードウエア割込がなければ、本フローを抜ける。一方、ハードウエア割込があれば、レジスタ群の初期化が行われ、かつ制御レジスタCR0がリアルモードに設定される(ステップS103)。
そして、まず、専用ローダ123によって一時的GDT124が作成され(ステップS105)、次いで、制御レジスタCR0がプロテクトモードに設定される(ステップS107)。そして、一時的GDT124のセグメントリミット値を4GBにしたディスプリクタの内容がチップセットのセグメントレジスタに登録される(ステップS109)。これにより、1MB以上のアドレスが指定可能な状態にされる。続いて、制御レジスタCR0がリアルモードに設定される(ステップS111)。すなわち、制御レジスタCR0をリアルモードに変更すると共に、一時的GDT124のセグメントリミット値を4Gとしたことに対応させてリアルモードの中で1MB以上をアクセス可能にするアンリアルモードが設定できる。
そして、専用ローダ123によって、管理ファイル125、管理用割込ハンドラ(管理ファイル内に含まれている態様でよい)が外部デバイス2から1MB~100MBの領域にロードされる(ステップS113)。この後、管理用GDT126が外部デバイス2からロードされる(ステップS115)。かかる処理が終了すると、CPU10は制御レジスタCR0をプロテクトモードに設定して(ステップS117)、管理ファイル125にジャンプし、管理ファイル125が起動する。
図23は、CPU10によって実行される管理ファイル125の処理を示すフローチャートである。まず、特権レベルDPL“0”で1MB~100MBの所定位置に、GDT126、IDT127、TSS128が作成される(ステップS131)。前述したように、TSS128は管理用(100MB以上の領域)とVM8086用(100MB~101MBの領域)とが作成される。次いで、PTE129が作成される(ステップS133)。PTE129も前述したように、管理用とVM8086用とが作成される。
続いて、0MB~1MBの領域の内容が100MB~101MBに複製(コピー)される(ステップS135)。これにより、OSロードに必要なシステムBIOSがロードされる。さらに、100MB~101MBの適所にOS用ローダが作成される(ステップS137)。この後、CPU10は、管理ファイル125内のOSのロードを処理(監視及び管理)するプログラムにジャンプする(ステップS139)。
図24は、HD12Aの先頭セクタからMBRが100MB~101MBの所定位置にロードされる(ステップS151)。次いで、MBR内のアクティブなパーティションテーブルからOS(OSを構成する各プログラム)の格納アドレスが取得される(ステップS153)。
そして、HD12AからPBRが100MB~101MBへロードされ(ステップS155)、次いで、PBRのブートプログラムコードの部分が外部デバイス2からロードされてきたブートプログラムコードと書き替えられ(ステップS157)、PBRのBPBと、書き替えられたブートプログラムコードとが結合される(ステップS159)。このようにして、OSローダが作成される。なお、OSローダは所謂IPLに相当し、このIPLは、周知のようにOS本体をロードする部分のローダプログラムを事前にリアルモードでロードするためのものである。そして、このOS本体をロードするローダプログラムによってOS本体が、例えば分割等されてロードされるが、ここでは、OSローダがOS本体を分割したプログラムを順次ロードするものとして説明する。
図25は、CPU10によって実行される、OSローダ作成後における管理ファイル125の処理を示すフローチャートである。管理ファイル125は、OSローダが作成されると、直ちにOSのロードを監視及び管理するVM8086モードに設定、すなわち特権レベルをDPL“3”に自動的に設定する(ステップS171)。従って、この状態で101MB以上の領域にアクセスされる情報(ここではロードされるOSのプログラム)は、特権レベルCPL“3”で扱われる。
次いで、OS用GDT、IDT及びPTEの作成命令による、チップセットのレジスタGDTR等へのアクセス(GDTRの書き替え要求LGDT等)の有無が判断される(ステップS173)。レジスタGDTR等へのアクセスがあれば、かかるアクセスに対して、アクセス権の正当性が照合されるが、CPL“3”からのアクセスであることから、一般保護例外が発行され(ステップS175)、管理用IDT127から一般保護例外に対応する割込ハンドラ130へのジャンプが実行される(ステップS177)。その結果、割込ハンドラ130でEIPに対して、一時保管された次のジャンプ先がロードされる処理が実行される(ステップS179)。また、このタスクによって、前記レジスタGDTR等へのアクセスが拒否され、いわゆる無効処理が実行される。
続いて、管理用GDT126、管理用PTE129に、今回ロードされてきたOSのプログラムに対応するセグメントディスクリプタが追加される(ステップS181)。さらに、管理用GDT126及び管理用PTE129の特権レベルDPL“0”がDPL“2”に書き替えられ、また、管理用PTE129の物理アドレスの項に101M(あるいは100M)より大きな所定の値が設定、例えば当該例外で受け取ったアドレスを100Mずらして設定される(ステップS183)。
続いて、HD12AからOSを構成する次のプログラムがロードされてきたか否かが判断され(ステップS185)、OSを構成する次のプログラムのロードがなければ、本フローを抜ける。一方、OSを構成する次のプログラムがロードされてきたのであれば、ステップS173に戻って、同様な処理が繰り返され、新しいセグメントディスクリプタとして、管理用GDT126、管理用PTE129に追加される。
一方、ステップS189で、アクセスがあれば、ステップS157に進んで、一般保護例外が発行され、これに基づいて、前述したような割込ハンドラが実行される(ステップS159,S161)。なお、同様に、OSのプログラムによって、APのプログラムがロードされる場合にも同様に処理される。なお、APは特権レベルDPL“3”に設定されているから、新たに追加されるセグメントディスクリプタの特権レベルは、書き替える必要はないが、DPL“3”を積極的に書き込むようにしてもよい。また、ロードされるAPについても、管理ファイル125によって、管理用PTE129の物理アドレスの項に101M(あるいは100M)より大きな所定の値が設定される。
図26は、CPU10によって実行される、OSブート後における管理ファイル125の処理を示すフローチャートである。まず、0MB~100MBにOS(あるいはAP)のプログラムから管理用GDT126にアクセスがなされたか否かが判断される(ステップS201)。管理用GDT126にアクセスがなければ、本フローを抜ける。一方、管理用GDT126にアクセスがあれば、アクセスしてきたOSの特権レベルとレジスタGDTRの特権レベルとの照合によって一般保護例が発行される(ステップS203)。そして、管理用IDT127から一般保護例外に対応する割込ハンドラ130へのジャンプが実行される(ステップS205)。その結果、割込ハンドラ130の処理が実行される(ステップS207)。ここでの割込ハンドラ130の処理は、管理用GDT126へのアクセスの拒否、あるいはアクセスされたことを想定して、正常な内容に書き直す処理を行うようにしてもよい。
図27は、CPU10によって実行される、処理環境の切替処理を示すフローチャートである。処理環境の切替とは、汎用OS環境での作業と特定OS環境での作業との間の切替をいう。端末1の稼働中において、特定OS環境への切替指示の有無が判断され(ステップS221)、切替指示がなければ、ステップS227に進む。なお、ステップS221は、許可された状態での割込処理としてもよい。そして、ステップS227で、汎用OS環境への切替指示の有無が判断され、切替指示がなければ、本フローを抜ける。
一方、ステップS221で、特定OS環境への切替指示があったのであれば、現在の使用環境が汎用OS環境か否かが判断され(ステップS223)、現在の使用環境が汎用OS環境であれば、特定OS環境に切り替える処理が実行される(ステップS225)。これによって、0MB~100MB内において特定OS環境の下での情報処理のための操作及びデバイスドライバの制御が行われる。これによって汎用OS環境と区別され、マルウエアが侵入することはない。逆に、現在の使用環境が既に特定OS環境であれば、切替指示は無視されて、本フローが終了する。
また、ステップS227で、汎用OS環境への切替指示のあったのでれば、現在の使用環境が特定OS環境か否かが判断され(ステップS229)、現在の使用環境が特定OS環境であれば、汎用OS環境に切り替える処理が実行される(ステップS231)。逆に、現在の使用環境が既に汎用OS環境であれば、切替指示は無視されて、本フローが終了する。
本実施形態では、外部デバイスとしてPCIで説明したが、本発明は、これに限定されず、また、0MB~1MBへの専用ローダのロード方式もDMACを採用する実施形態(本発明者が既に提案したPCT/JP2010/58552)に限定されない。例えば、本発明者が既に提案した、PCT/JP2009/57962、PCT/JP2010/68346、日本特許出願2011-235386を適用して専用ローダを強制的に起動メモリ領域にロードする態様でもよい。
上記のうち、PCT/JP2009/57962には、CPUを備える情報処理装置に装着して前記情報処理装置をUSBメモリ等の外部デバイスによってブートする外部ブート方法を開示している。この方法は、外部デバイスの記憶手段に、情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して情報処理装置の主メモリの起動メモリ領域(0MB~1MB)にマッピングさせるためのMBRであって、情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶されている。そして、ローダは、外部デバイスの分散処理手段によって、MBRの起動に先立って予め設定された個数に分割されていると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報が作成される。
例えば図28を用いて説明すると、図28は、スタック領域1203を割込ベクタテーブル1202に重畳する方法を説明する図である。スタック領域1203には、割込直前の命令内容に関するEFLAG,CS,IPがベースポインタBPから書き込まれる。そこで、このベースポインタBPの位置を、図の矢印で示すように、割込ベクタテーブル1202のベクタ2の上位ビットの位置に一致するように、スタック領域1203を位置設定する。従って、スタック領域1203へのEFLAG,CS,IPの書き込みは、割込ベクタテーブル1202のベクタ2の上位ビットにFLAGが、ベクタ1の下位ビットにCSが、ベクタ1の上位ビットにIPが書き込まれることになる。一方、ベクタ1は、外部割込先となるアドレスを示すものであるから、割込が発生してCPU10がベクタ1を参照し、制御が、ベクタ1に書き込まれているアドレスのプログラムに移行すると、スタック領域1203にその直前の命令内容であるEFLAG,CS,IPが退避して書き込まれる。すなわち、割込ベクタテーブル1202のベクタ1には、IP,CSのアドレス情報が書き込まれることになる。ベクタ1には、その上位ビットにIPが、下位ビットにCSが書き込まれることになる。従って、そのアドレスは、具体的には、IP×16+CSとなる。
すなわち、今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動時にマルウエアが動作して、チップセットのEFLAGSのフラグTFをセットし、割込ベクタテーブル1202のベクタ1にウイルス本体の存在するアドレスが書き込まれている場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。一方、マルウエアの割込によって、スタック領域1203すなわち割込ベクタテーブル1202のベクタ1には、直前の命令内容を示す内の、情報IP,CSが書き込まれることになる。従って、ベクタ1に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。かかる方法によれば、マルウエアは、BIOS起動中に仕掛けをした状態において、MBR起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。次いで、RAM12内の起動メモリ領域120内であって、前記領域1202,1203及びMBR領域を除いた領域にローダがマッピングされる。分割されたローダは、マッピング位置情報に従って、分割数だけ分散配置(展開)される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。各分割ローダは、例えば最終ビット位置に、次のマッピング位置情報が書き込まれており、このマッピング位置情報を順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。このようにして、ローダ、すなわち本発明における専用ローダが適正に0MB~1MBにロードされる。
また、PCT/JP2010/68346には、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部デバイスを記載している。この外部デバイスは、前記情報処理装置のBIOSが前記CPUによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記CPUからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きして一般保護例外を発生させる第1のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたものでる。
例えば図29は、ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。まず、ダミーコードを所定のベクタ、特にベクタ0,1,13に上書きする意義について説明する。BIOS動作中にCPU10の制御を一時的に奪ったマルウエアによって割込ベクタテーブルのデータが改竄、特にINT1を規定するベクタ1のデータが書き換えられて、マルウエアの潜伏位置を記述することが考えられる。また、BIOSの動作期間中に、起動メモリ領域120にマルウエアを起動させる異常プログラムが配置されることが考えられる。そこで、割込ベクタテーブルのベクタ1については、書き換えられた可能性のある内容を書き直してマルウエアの挙動を抑止する処理を行わせる必要がある。また、ベクタ13については、起動メモリ領域120上の前記異常プログラムを所定のデータの上書きによって消去するという、正常リセット処理のための割込ハンドラを確実に起動させる処理を行わせる必要がある。割込ハンドラを確実に起動させる処理は、ベクタ13に割込ハンドラ領域12031の先頭アドレスを書き込むこと、及び後述するような一般保護例外を発生させる仕組みを作ることである。
すなわち、ベクタ13の一般保護例外を利用することで、ベクタ13から割込ハンドラ領域12031に自動的に処理が移行する仕組みを構築する。すなわち、(i)ダミーコードの書込アドレスを降順に読み出すためにチップセットのEFLAGSのフラグDFを1にセットし、(ii)降順の書込アドレスが割込ベクタテーブル12021の左端アドレス“0x0000”を下回る不正なアクセスを発生させて一般保護例外を引き起こすようにしている。さらに、(ii)のためには、ベクタ1からベクタ0の方向への、すなわち降順に書込アドレスを生成させる必要がある。そこで、ベクタ0,1,13を含み、かつ不正アクセス用のアドレスを生成させるためには、ダミーコードのビット数は、ベクタ0,1,13の3個のベクタ及び不正アクセスを発生させる少なくとも1ビット分で足りる。なお、ベクタ13とベクタ1,0及び不正アクセス分とは不連続であり、かつダミーコードの割込ベクタテーブルに対する上書き位置が明白となる傾向にある。そこで、より好ましい態様として、本実施形態では、ベクタ13~0及び不正アクセスの少なくとも1ビット分のデータ量を有するダミーコードを作成し、書込アドレスをベクタ13以上の所定のベクタからスタートさせて、最終的に不正アクセスが発生するように降順に指定するようにしている。
図29は、この状態を示しており、ダミーコードは、所定のビット数、ここでは512ビット(bit)を有するものとし、スタートアドレスは500ビット目としている。なお、512ビットを有するデータ列は、USBメモリ2が一連の動作(REP INS)で読み出し可能なデータ量である。すなわち、矢印(A)で示すように降順にアドレスが生成されていくと、(本実施例では、1アドレスずつ生成するとして)501回目のアクセス時に不正アクセスが発生し、一般保護例外が発生する。一般保護例外が発生すると、CPU10は、矢印(B)に示すようにベクタ13に移動する。ここで、CPU10はベクタ13の記憶内容を読み取り、読み取った内容に一致する起動メモリ領域120のアドレス、すなわち矢印(C)に示すように割込ハンドラ領域12031の先頭アドレスに移動する。そして、CPU10は、割込ハンドラを実行して、正常リセット処理を行う。このダミーコードの上書き処理は、CPU10からの1つの命令によってREP INS処理で行われ、かつ正常リセット処理は、ダミーコードの上書き処理に連続して割込ハンドラによって行われるため、CPU10からの1回の命令で両方の処理が済み、従って、その間、マルウエアがCPU10に介入する機会はない。
今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動中にマルウエアが動作して、EFLAGSのフラグTFをセットし、割込ベクタテーブル12021のベクタ1をマルウエア本体の存在するアドレスに書き換えた場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。その後、CPU10の制御がBIOSからMBRに渡されると、割込ベクタテーブルのベクタのうち、正常リセットに必要なベクタの内容をダミーコードで書き換えるので、マルウエア本体の存在するアドレス情報は実質削除される。さらに、一般保護例外によって、起動メモリ領域120も正常リセット処理され、仮に潜伏しているマルウエア自身も消去されることになる。すなわち、マルウエアは、BIOS起動中に挙動のための仕掛けをしたとしても、MBRが起動されると、その挙動のための情報が全て消去されることとなり、この結果、その後の挙動が抑止されることになる。
また、日本特許出願2011-235386には、CPU及び前記CPUが実行するプログラムが展開される主メモリを備えると共に、前記主メモリと外部との間でハードウエアによるデータ通信を行う、チップセット内のコントローラを備えた情報処理装置を、前記コントローラを経由して起動に要するデータを前記主メモリに書き込んで起動させる外部デバイスを記載している。
この外部デバイスは、前記情報処理装置のBIOSが前記CPUによって実行されることによって前記主メモリの一部であるアドレス指定が可能な起動メモリ領域に優先して読み出される、データ転送の指示情報を含む1次ローダを記憶する第1の記憶部と、前記1次ローダによる前記データ転送指示を受けて前記起動メモリ領域に順次分割された分割制御データとして読み出される少なくとも割込ベクタテーブル及び2次ローダを含む所定の制御データと前記分割制御データが前記起動メモリ領域に書き込まれる際の書込位置となるアドレスデータとを記憶する第2の記憶部と、前記起動メモリ領域への読出後に起動される前記1次ローダから前記データ転送の指示を受けて、前記第2の記憶部から前記各分割制御データを対応する前記アドレスデータに従って前記コントローラを経由して前記主メモリに順番に読み出すデータ転送部と、前記データ転送処理の終了を受けて前記ハードウエア割込指示信号を前記起動メモリ領域に読み出された前記割込ベクタテーブルに遷移し、前記2次ローダを起動させるべくハードウエア割込を発行させるハードウエア割込指示部とを備えたものである。
例えば図30は、ブートの流れを簡単に説明する。ブート時における情報の流れ及びその手順は、図30中に矢印で示されている。まず、情報処理装置(端末)1の電源投入を受けて、CPU10は、BIOSを起動し、BIOSの処理によってUSBメモリ2から外部MBR1211を取り込む。外部MBR1211の取込が終了すると、CPU10の処理が外部MBR1211に渡されて、外部MBR1211のマスターブートレコードが1次ローダとして機能する。まず、1番目の分割TDデータテーブルTD[1]1212が作成される(図30の矢印(1))。次に、外部MBR1211は、USBホストコントローラに対してインターラプト転送の開始指示(コマンド)を行う(図30の矢印(2))。まず、分割TDデータテーブルTD[1]の1行目のアドレスデータがUSBホストコントローラで取得され、当該アドレスデータと1番目に転送される分割データであるダミーデータ1213とがMCH(MemoryController Hub)、ICHICH(I/O Controller Hub)を経てRAM12に送られて(図30の矢印(3))、当該アドレスに書き込まれる(図30の矢印(4))。以後、CPU10の制御を受けることなく、USBホストコントローラとUSBターゲットコントローラとの間で、USBメモリ2から、分割データを順次取り込むことが可能となり、分割TDデータテーブルTD[1]の5行目のアドレスデータがUSBホストコントローラで取得され、当該アドレスデータと5番目に転送される分割データである分割TDデータテーブルTD[2]とがMCHを経てRAM12に送られて、起動メモリ領域120外の当該アドレス“0x40000”に書き込まれる(図30の矢印(5))。
この分割TDデータテーブルTD[2]の各行のアドレスデータに対応する分割データがUSBメモリ2から順次読み込まれて、起動メモリ領域120に展開される。USBホストコントローラは、分割TDデータテーブルTDが転送される毎に、その分割TDデータテーブルに含まれるアドレスデータを一時保管し、次に転送される分割制御データにアドレスデータを対応付けてMCHに送出するようにしている。MCHは、転送されてきたデータからアドレスデータを取得し、このアドレスに分割制御データ1215を書き込ませる。
ここでは、分割TDデータテーブルTD[2]の1行目のアドレスデータに対応して割込ベクタテーブル1214がUSBメモリ2から読み取られて書き込まれる(図30の矢印(6))。そして、順次、分割TDデータテーブルTD[i]が展開され(図30の矢印(7))、最後の分割TDデータテーブルTD[n]の最下行のアドレスデータに対応する分割データがUSBメモリ2から読み込まれ、起動メモリ領域120に展開されると、同時にMCH経由(CPU10を経由することなく)で、ハードウエア割込指示信号が割込ベクタテーブルのINT“XX”に送信される(図30の矢印(8))。CPU10は、このハードウエア割込指示信号を受けて、割込のコマンドを、分割された特定OSローダの先頭の分割データが展開されている分割制御データ(先頭)1215の基準アドレスにジャンプし(図30の矢印(9))、これによって特定OSローダの実行が開始される。以上の処理によって、インターラプト転送前の起動メモリ領域120に存在するマルウエア等は全て消去される。なお、この実施例における特定OSローダ(制御データ)が、本発明における専用ローダに相当する。
以上の各専用ローダのロード方法は、外部デバイスから行われるものである。そして、起動メモリ領域120に対して、BIOSやMBR内に仮にマルウエアが潜伏していても、かかるマルウエアを消去して行うことを可能にするもので、これによって起動メモリ領域120をクリーンな環境とし、かつこの領域120に外部デバイスから専用ローダ(必要に応じて専用ローダをロードするために必要なテーブル等を含む)をロードすることができる。そして、外部デバイスから起動メモリ領域120に専用ローダがロードされた後、この専用ローダによってロードされる管理ファイルの配置領域に特権レベルの最高乃至は相対的に最高(OS、APのロード領域に設定される特権レベルと比較した場合)を設定することで、管理ファイルをクリーンな環境で起動及び稼働維持させることが可能となる。
次に、図31は、汎用AP及び特定APの実行時における各デバイスドライバ、メモリマップドI/Oの内容及びそれらの処理の流れを説明する図である。
まず、端末1の起動中において、汎用OS134、汎用APa1341…、汎用NICドライバ1351…、特定OS136、特定APa1361…、特定NICドライバ1371…のRAM12への読み出しについて説明する。なお、汎用APa1341…、汎用NICドライバ1351…、及び特定APa1361…、特定NICドライバ1371…は、I/Oデバイスの一つであるNIC16,26を代表して示したものであり、他のI/Oデバイスとして操作部13や表示部14に対応するものが設けられており、さらに図略のプリンタ等にも適用される。
前述したように、汎用OS134、汎用APa1341…、汎用NICドライバ1351…は、端末1のHD12AからRAM12の101MB~4GBの所定位置に、特権レベルDPL“3”で読み出される。一方、特定OS136、特定APa1361…、特定NICドライバ1371…は、外部デバイス2の特定OS,AP記憶部257及びI/O情報記憶部258からRAM12の1MB~100MB内の所定位置に読み出される。
本実施形態では、物理的には、メモリマップドI/O17は端末1側にあり、メモリマップドI/O29は外部デバイス2側に設けられている。なお、図31に示すように、メモリマップドI/O17及びメモリマップドI/O29のI/Oレジスタはアドレッシング動作に関しては、図略のメモリコントローラハブ等によって端末1のRAM12の各アドレス域にマッピングされているのと等化に扱われる。
端末1が立ち上がった状態では、本実施形態では、前述したように端末1は汎用OSの環境で動作可能な状態にある。そして、動作環境切替部109によって汎用OS環境と特定OS環境とが択一的に切り替え可能になる。汎用OS環境で動作する汎用AP、及び特定OS環境で動作する特定APを利用しての情報処理は、情報処理部107によって実行される。
ここに、メモリマップドI/Oとは、CPU10がI/Oデバイス(入出力機器)にアクセスするための命令を、RAM12へアクセスするための命令と同一のアドレス空間で扱う方式をいう。メモリマップドI/Oは、I/Oデバイスに対する汎用デバイスドライバ及び特定デバイスドライバに対応するI/Oレジスタで構成されている。CPU10は、かかるI/Oレジスタに動作許可等の情報の読み書きをすることで、対応するI/Oデバイスの制御を行うようにしている。なお、I/Oデバイス制御方法は、メモリマップドI/Oに限定されず、他のマップドI/O方式でもよい。
メモリマップドI/O17は、汎用OS環境でのI/Oデバイスとしての、操作部13、表示部14、NIC16、図略のプリンタ等に対応するもので、例えば、汎用OS環境における各汎用デバイスドライバに対応するそれぞれのI/Oレジスタ171,172,…に分けられている。例えば、I/Oレジスタ171はNIC16の汎用NICドライバ1351に対応し、I/Oレジスタ172は操作部13のデバイスドライバに対応している。
一方、メモリマップドI/O29は、特定OS環境でのI/Oデバイスとしての、操作部13、表示部14、NIC26、図略のプリンタ等に対応するもので、例えば、特定OS環境における各特定デバイスドライバに対応するそれぞれのI/Oレジスタ291,292,293,…に分けられている。例えば、I/Oレジスタ291はNIC26の特定NICドライバ1371に対応し、I/Oレジスタ292は操作部13のデバイスドライバに対応し、I/Oレジスタ293は表示部14のデバイスドライバに対応している。なお、図31において、I/Oレジスタ291がメモリマップドI/O29と分かれて設けられているが、アドレッシングにおいては一体的として機能している。
メモリマップドI/O17,29の各I/Oレジスタは、GDT126及びPTE129によって生成されるアドレスで指定可能にされている。より詳細には、PTE129は、かかる汎用AP及び特定APの個々のタスクに対して、対応するI/Oレジスタのアドレスを指定し得るように、物理アドレスがそれぞれ設定されている。この結果、例えば、汎用APa1341に対しては、NICドライバ1351に対応するI/Oレジスタ171のアドレスを生成することでNIC16の動作制御が可能となり、一方、特定APa1361に対しては、NICドライバ1371に対応するI/Oレジスタ291のアドレスを生成することでNIC26の動作制御が可能となる。このように、PTE129の物理アドレスによって、メモリマップドI/O17、メモリマップドI/O29が個別に、かつそれらの各I/Oレジスタが指定できる。
ところで、本実施形態では、アドレッシングの際におけるメモリマップドI/O17,29の各I/Oレジスタのアドレスとして、例えば32ビットのCPUを想定した場合、最大アドレスが4GBとなることから、4GBから降方向に所要の範囲、例えば4GBから3GBまでの範囲にリンクを設定している。すなわち、アドレス範囲からは、特権レベルDPL“2”又は“3”の範囲に該当する。しかし、メモリマップドI/O17,29の各I/Oレジスタは、前述のようにPTE129に設定されている物理アドレスによって指定されるものであるから、仮に汎用OS環境からマルウエアが特定APに対応するI/Oレジスタの内容を改竄し、マルウエアの意図する状態で電子メールの送信(例えば、別ファイルの送信とか他の送信先の設定)を行わせることは不可能となる。すなわち、汎用OS環境の101MB~4GBから、特権レベルDPL“0”の1MB~100MB内のPTE129へのアクセスは、前述したように、一般保護例外としてフックされ、割込ハンドラ130を介して無効とされる。
情報処理部107として、例えば作成したファイルをネットワーク3へ(電子メールで)送出し、指定した送信先に送信する場合を考える。図31に示す矢印(1)~(4)は、汎用APa1341の電子メール送信の命令が発行された場合の処理の流れを示し、矢印(11)~(14)は、特定APa1361の電子メールによる特定会員への送信の命令が発行された場合の処理の流れを示している。
汎用APa1341が電子メール処理を行うプログラムに該当するものであるとして、操作部13を介して電子メールの指示(タスク要求)があると、汎用APa1341は汎用NICドライバ1351に電子メール処理(タスク)が指示される(図31の(1)参照)。汎用NICドライバ1351は、電子メール処理のタスクを受けると、GDT126及びPTE129によってメモリマップドI/O17の対応するI/Oレジスタ171のアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される(図31の(2)参照)。そして、メモリマップドI/O17のI/Oレジスタ171の対応するアドレスに対して、動作許可の信号等が書き込まれる(図31の(3)参照)。一方、NIC16側はメモリマップドI/O17のI/Oレジスタ171に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している(図31の(4)参照)。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドI/O17のI/Oレジスタ171を経由してNIC16に転送され、所定の暗号化処理等が施され、更にTCP/IP規約に沿って形成されたパケットがネットワーク3に送出される。なお、所定の暗号化処理及びTCP/IPへのパケット変換処理は、NIC16へ転送される前にネットワーク通信処理部108で行われてもよい。
次に、特定APa1361が電子メール処理を行うプログラムに該当するものであるとして、操作部13を介して電子メールの指示(タスク要求)があると、特定APa1361は特定NICドライバ1371に電子メール処理(タスク)が指示される(図31の(11)参照)。特定NICドライバ1371は、電子メール処理のタスクを受けると、GDT126及びPTE129によってメモリマップドI/O29の対応するアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される(図31の(12)参照)。そして、メモリマップドI/O29のI/Oレジスタ291に対応するアドレスに対して、動作許可の信号が書き込まれる(図31の(13)(13’)参照)。一方、NIC26側はメモリマップドI/O29のI/Oレジスタ291に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している(図31の(14)参照)。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドI/O29のI/Oレジスタ291を経由して外部デバイス2に転送され、後述するような所定の符号化処理等が施され、更にTCP/IP規約に沿って形成されたパケットがNIC26を介してネットワーク3に送出される。なお、NIC26は有線、あるいは無線LAN等によってISP4と通信可能に接続されている。また、送信されるパケットの先頭領域には、送信元を示すIPアドレス(すなわち、汎用APa1341の場合にはNIC16のIPアドレス、また特定APa1361の場合にはNIC26のIPアドレス)が設定される。
上記において、特定APa1361で電子メール送信を指示する場合に、指定した送信先が会員であるか否かのチェックは、全ての電子メールが会員サーバ5を介して行われる態様では、会員サーバ5に送、少なくとも信先についての会員に関する照合機能を持たせておけば、外部デバイス2に送信先の適性に関して照合等の監視処理が不要となり、会員情報を持たなくて済むこととなる。
次に、受信の場合、NIC16における受信と、NIC26における受信とがある。NIC16でファイルが受信された場合、従来同様の方法で処理される。すなわち、NIC16のバッファ(図略)に一時的に保管され(あるいはHD12Aに格納され)、(TCP/IP形式のパケットが元のデータに戻され、かつ復号化処理が施されて)ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、汎用APa1341が選択されると、電子メール画面に切り替わって受信リストが表示され、当該電子メールが選択されると、その開封処理が実行されて表示部14に本文が表示される。
一方、NIC26でファイルが受信された場合、NIC26のバッファに一時的に保管され、(TCP/IP形式のパケットが元の形式のデータに戻され)ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、特定OS環境(汎用OS環境から特定OS環境に切り替えられた状態も含む)で、NIC26で受信された受信リストが表示され、当該電子メールが選択されると、後述の復号化処理が施されるようになっている。
以下、特定APでの電子メールの対象となるファイルに施されるデータ処理(符号化、復号化)について簡単に説明しておく。データ処理(符号化、復号化)については、例えば、本発明者が既に提案した(PCT/JP2010/67756)技術が採用可能である。すなわち、送信対象となるファイルをデータ処理回路28を利用して3枚の画像の情報に埋め込む符号化処理を行うもので、可及的に情報を白黒の一方側に変換するものである。
図32は、例えば論理式:XOR(D,ONOR(G,S))で構成されるデータ処理回路28(図3参照)の一例を示す回路図である。図32は、データ処理回路28の一実施形態を示す1ビット分の回路図である。データ処理回路28は、所要数の論理回路、例えば排他的論理和回路XORを備えている。ここでは、3種類の画像G1,G2,G3に順次対応させるべく、3個のXOR282,284,286が採用されている。また、本実施形態では、XOR282,284,286の各前段に排他的論理和を否定する回路ONOR281,283,285が接続されている。回路ONORの真理値表は、特定の一方入力端の値が“1”で、他方入力端の値が“0”の状態にあるときのみ、出力端に“1”を出力するものである。
図32では、ONOR281は、その特定入力端に調整値S1が入力され、他方入力端に対象ファイルの原データD0が入力され、そして出力端からデータD0’が中間データとして出力されている。調整値S1~S3は例えば所定値として作成されるもので、データ処理回路28の最終段からの出力データD3の値に後述する制限を付与するものである。XOR282は、その一方入力端にONOR281の中間データD0’が入力され、他方入力端に画像データG1が入力され、出力端から中間データD1が出力されている。ONOR283は、その特定入力端に調整値S2が入力され、他方入力端にXOR282からの中間データD1が入力され、出力端から中間データD1’が出力されている。XOR284は、その一方入力端にONOR283の中間データD1’が入力され、他方入力端に画像データG2が入力され、出力端から中間データD2が出力されている。ONOR285は、その特定入力端に調整値S3が入力され、他方入力端にXOR284からの中間データD2が入力され、出力端から中間データD2’が出力されている。XOR286は、その一方入力端にONOR285の中間データD2’が入力され、他方入力端に画像データG3が入力され、出力端から出力データD3が出力されている。すなわち、図32の論理回路は、論理式:XOR(D,ONOR(G,S))で表現できる。ここに、Dは原データ及び中間データの総称、Gは画像データの濃度データの総称である。
なお、画像データは、互いに異なる少なくとも2種以上の所要枚数、例えば3種の画像が電子化されて、好ましくは予め外部デバイス2内に記憶されている。本実施形態では、外部メモリ等から取り込んだり、カメラ等の撮像手段で撮像されたりした3種類の写真画像で、例えば3種類(R(赤),G(緑),B(青))の色成分毎の濃度の行列方向のピクセル毎の画像データとして記憶されている。各色成分の濃度は、処理対象のファイルデータの前記素データと同一ビット数、ここでは8ビットである。また、調整値Sの範囲は、8ビットかつ素データの最大値が16である本実施形態の場合、“128”~“240”となる。
なお、データ処理回路28としては、他に、論理式:XOR(OR(D,S),OR(G,S))を利用したものでもよい。また、論理式:XOR(ONOR(D,S),OR(G,S))を利用したものでもよい。なお、後者の場合、最終段については、論理式(最終段):XOR(D,OR(G,S))を使用する。また、データ処理回路28は受信ファイルの復号化用(解凍用)を含み、これらの論理式で構成される回路の逆回路が採用されている。
図33は、埋込処理の具体例を示す説明図である。図33の上側には、上から順に「入力文字」、「バイナリ(SJIS)」、「Bit」、「素データ」が例示されている。図33の中央左側のテーブルは、3枚の画像データの対応するピクセルの色成分値データ、ここでは色成分濃度データを示している。ここでは、説明の便宜上、3色の全ての開始ピクセルPsをPs(1,1)とする。ここで、素データについて説明する。ファイルデータがテキストデータであって、各文字が2byteで規定されるコードデータである場合で説明すると、コードデータを上位側の1byteと下位側の1byteとに分割する。さらに、これらの各1byteをそれぞれ上位、下位の4ビットに分割(以上、分割処理)する。各4ビットの上位側に4ビットを追加して(ビット追加処理)、8ビットの素データを生成する。例えば、図32において、入力文字“○”を表す2byteのコードデータが「10001100 11000011」である場合、素データは、上記方法に従って作成すれば、「00001000」、「00001100」、「00001100」、「00000011」の4個となる。そして、かかる素データを数値に置換すると、“8”,“12”,“12”,“3”となる。なお、素データの取り得る最大値は、本実施形態では4ビットである“15”とする。
図33の中央には、テーブル(A)、(B)が記載されている。テーブル(A)はデータD0が埋め込まれる場合であり、テーブル(B)はダミーコードが埋め込まれる場合である。テーブル(A)、(B)は、横方向にRGB色成分(に対応する各論理回路)が設定され、縦方向に画像データG1,G2,G3のPs(1,1)の色成分濃度データとの論理結果であるデータD1,D2,D3(図33参照)の内容を示している。
例えば、テーブル(A)において、調整値Sが“240”の場合、データD0の先頭データ“8”に対して、画像データG1のPs(1,1)のR(1,1)が“136”、画像データG2のPs(1,1)のR(1,1)が“56”、画像データG3のPs(1,1)のR(1,1)が“251”としたとき、中間データD1は“0”となり、さらに中間データD2は“8”となり、そして、出力データD3は“3”となる。同様に、2番目のデータ“12”に対しては、画像データG1のPs(1,1)のG(1,1)が“210”、画像データG2のPs(1,1)のG(1,1)が“30”、画像データG3のPs(1,1)のG(1,1)が“67”としたとき、中間データD1は“14”となり、さらに中間データD2は“0”となり、そして、出力データD3は“3”となる。同様に、3番目のデータ“12”に対しては、画像データG1のPs(1,1)のB(1,1)が“34”、画像データG2のPs(1,1)のB(1,1)が“0”、画像データG3のPs(1,1)のB(1,1)が“89”としたとき、中間データD1は“14”となり、さらに中間データD2は“14”となり、そして、出力データD3は“7”となる。
一方、テーブル(B)では、色成分Rに対応するダミーデータ“26”に対して、データD1は“18”となり、さらに中間データD2は“26”となり、そして、出力データD3は“17”となる。同様に、色成分Gに対応するダミーデータ“22”に対して、データD1は“20”となり、さらに中間データD2は“26”となり、そして、出力データD3は“25”となる。同様に、色成分Bに対応するダミーデータ“17”に対して、データD1は“19”となり、さらに中間データD2は“19”となり、そして、出力データD3は“26”となる。
上記によれば、ダミーデータは、それ自体及び出力データD3が“16”を超える値となるようにしている。また、画像データG1は、R(1,1)が“136”、G(1,1)が“210”、B(1,1)が“34”であるところ、データ処理回路28の出力データD3は、テーブル(A)のように、R対応分が“3”、G対応分が“3”、B対応分が“7”であるから、出力データD3からなる結果の画像は濃度データが小さい。同様に、テーブル(B)でも、R対応分が“17”、G対応分が“25”、B対応分が“26”であるから、出力データD3からなる結果の画像は、画像データG1~G3に比して濃度データが小さい。従って、画面上では輝度の低い暗い画像となり、また記録紙に黒色に近い色でプリントアウトされてほとんど解読ができないものとなるという特徴を有する。
なお、本発明は、以下の態様を採用することが可能である。
(1)本実施形態では、外部デバイスとしてPCIを想定したもので説明したが、これに限定されず、少なくとも、CPU及びROM、RAMを内蔵したものであればよい。また、DMACを備えているデバイスであればよい。例えばUSB(Universal Serial Bus)メモリチップ、ICカードを改良した対応でもよいし、携帯型の通信機器に内蔵された態様であってもよい。
(2)本実施形態では、管理ファイル125等を格納するためのセキュア領域(特権レベルDPL“0”)を1MB~100MBと設定したが、これに限定されず、管理ファイル125及び他の必要な管理テーブル等の格納が可能なメモリ容量分があればよく、例えば1MB~数MBのメモリ容量であってもよい。また、領域0MB~1MBについてもセキュア領域(特権レベルDPL“0”)としたことで、0MB~100MBを同質のセキュア領域として扱うことができる。
(3)本実施形態ではネットワーク3と通信するものとしてNIC16,26を採用したが、本発明においてはNICをネットワーク通信処理を行うI/Oデバイスの総称として扱っている。
(4)本実施形態では、外部デバイス2に特定OS及び特定APと共に特定NICドライバ1371やメモリマップドI/O29を設けたが、特定OS及び特定APと、特定NICドライバ1371やメモリマップドI/O29とを別の外部デバイスに設ける態様としてもよい。この場合、例えば、特定OS及び特定APが端末1側に立ち上がった後、特定NICドライバ1371が読み込ませる態様とすることができる。
以上説明したように、本発明に係るファイル通信処理方法は、情報処理装置のブート時にハードディスクから主メモリに読み出された汎用OSの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側NICを経由して行う汎用通信ステップと、前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定OSの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側NICを経由して行う特定通信ステップとを択一的に行うことが好ましい。
本発明によれば、特定アプリケーションは外部デバイスによる外部ブートによって外部デバイスから情報処理装置の主メモリに読み出されたものであること、さらに、外部デバイスに設けられた外部側NICを経由しての通信であるため、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信が可能となる。
また、本発明に係るファイル通信処理方法は、前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用OSの環境と、前記特定OSの環境とを択一的に切り替える切替ステップを備えることが好ましい。この構成によれば、外部ブート後において、汎用OS環境と特定OS環境とが択一的に選択可能となり、従って、汎用通信ステップと特定通信ステップとは選択的に利用可能となり、利用の都度、リブートするといったような煩雑さはなくなる。
また、本発明に係るファイル通信処理方法は、前記主メモリが、第1の領域と第2の領域とに区分され、前記第1の領域に前記特定OS及び前記特定アプリケーションが読み出され、前記第2の領域に前記汎用OS及び前記汎用アプリケーションが読み出され、前記第1の領域に前記第2の領域より相対的に高い特権保護レベルが設定されていることが好ましい。この構成によれば、特定OS及び特定アプリケーションが読み出された第1の領域に対して、仮にマルウエアに感染した汎用OS及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
また、本発明に係るファイル通信処理方法は、前記特定通信ステップが、前記第1の領域に展開されている、前記外部側NICの動作を制御する特定デバイスドライバから、前記第2の領域に展開されている、前記外部側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップが、前記第2の領域に展開されている、前記装置側NICの動作を制御する汎用デバイスドライバから、前記第2の領域に展開されている、前記装置側NICに対して動作許可を指示する前記マップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスするようにすることが好ましい。この構成によれば、特定通信ステップでは特定デバイスドライバを介して、汎用通信ステップでは汎用デバイスドライバを介して、それぞれマップドI/Oの対応するI/Oレジスタにアクセスするようにページング処理されて個々の物理アドレスで指定されるので、各通信ステップが好適に実行可能となる。また、特定デバイスドライバ及びページング処理の部分が第1の領域に設けられているので、これらの内容が、第2の領域からの不当なアクセス等によって改竄等されることはない。また、ページングの内容、特に物理アドレスのデータが改竄されることが防止できるので、マップドI/OのI/Oレジスタにアクセスできず、その内容を改竄等することはできない。
また、本発明に係る外部デバイスは、ネットワークに通信対象ファイルの送出を行う装置側NICを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、通信対象ファイルの前記ネットワークへの送出を行うための外部側NICと、特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側NICに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側NICに対して動作許可を指示するI/Oレジスタを有するマップドI/Oとを含むことが好ましい。
本発明によれば、特定アプリケーションによって外部デバイスに設けられているマップドI/O及び外部側NICを経由してネットワーク通信が可能となるので、情報処理装置側の装置側NICを使用する場合に比して高いセキュリティーが確保される。
また、本発明に係る外部デバイスは、前記情報処理装置のハードディスクから読み出された汎用OS及び前記汎用OSの環境で動作する汎用アプリケーションとは異なる特定OS及び前記特定OSの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第1の記憶手段を備えることが好ましい。この構成によれば、外部デバイスが情報処理装置に接続された状態で、外部ブートが行われた場合、外部デバイスに記憶されていた特定OS及び特定アプリケーションによって外部デバイスに設けられている外部側NICを経由してネットワーク通信が可能となるので、情報処理装置側のNICを使用する場合に比して高いセキュリティーが確保される。
また、本発明に係る外部デバイスは、前記情報処理装置の起動時に、前記第1の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことが好ましい。この構成によれば、各記憶手段に記憶されている特定OS、特定アプリケーション及びネットワーク通信の指示を行う特定デバイスドライバが外部ブート時に主メモリに読み出されるようにしたので、高いセキュリティーが確保される。
また、本発明に係る外部デバイスは、前記主メモリは、第1の領域と第2の領域とに区分され、前記ロード手段は、前記第1の領域に前記特定OS及び前記特定アプリケーションを読み出し、前記第2の領域に前記汎用OS及び前記汎用アプリケーションを読み出すもので、前記第1の記憶手段には、前記第1の領域に前記第2の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されていることが好ましい。この構成によれば、特定OS及び特定アプリケーションが読み出された第1の領域に対して、仮にマルウエアに感染した汎用OS及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
また、本発明に係る外部デバイスは、前記ロード手段が、前記外部側NICを動作させる特定デバイスドライバを前記第1の領域に読み出すものであることが好ましい。この構成によれば、特定デバイスドライバが高いセキュリティーで維持される。
1 端末(情報処理装置)
10,20 CPU
107 情報処理部
108 ネットワーク通信処理部
12 RAM(主メモリ)
12A ハードディスク(HD)
120 起動メモリ領域
1351 汎用NICドライバ
1371 特定NICドライバ
16 NIC(装置側NIC)
17,29 メモリマップドI/O
171,172 I/Oレジスタ
291,292,293 I/Oレジスタ
2 外部デバイス
253 管理ファイル記憶部(第1の記憶手段の一部)
254 システムテーブル記憶部(第1の記憶手段の一部)
257 特定OS,AP記憶部(第1の記憶手段)
258 I/O情報記憶部(ドライバ記憶手段)
26 NIC(外部側NIC)
28 データ処理回路
10,20 CPU
107 情報処理部
108 ネットワーク通信処理部
12 RAM(主メモリ)
12A ハードディスク(HD)
120 起動メモリ領域
1351 汎用NICドライバ
1371 特定NICドライバ
16 NIC(装置側NIC)
17,29 メモリマップドI/O
171,172 I/Oレジスタ
291,292,293 I/Oレジスタ
2 外部デバイス
253 管理ファイル記憶部(第1の記憶手段の一部)
254 システムテーブル記憶部(第1の記憶手段の一部)
257 特定OS,AP記憶部(第1の記憶手段)
258 I/O情報記憶部(ドライバ記憶手段)
26 NIC(外部側NIC)
28 データ処理回路
Claims (9)
- 情報処理装置のブート時にハードディスクから主メモリに読み出された汎用OSの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側NICを経由して行う汎用通信ステップと、
前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定OSの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側NICを経由して行う特定通信ステップとを択一的に行うことを特徴とするファイル通信処理方法。 - 前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用OSの環境と、前記特定OSの環境とを択一的に切り替える切替ステップを備えることを特徴とする請求項1記載のファイル通信処理方法。
- 前記主メモリは、第1の領域と第2の領域とに区分され、前記第1の領域に前記特定OS及び前記特定アプリケーションが読み出され、前記第2の領域に前記汎用OS及び前記汎用アプリケーションが読み出され、前記第1の領域に前記第2の領域より相対的に高い特権保護レベルが設定されていることを特徴とする請求項1又は2に記載のファイル通信処理方法。
- 前記特定通信ステップは、前記第1の領域に展開されている、前記外部側NICの動作を制御する特定デバイスドライバから、前記外部側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップは、前記第2の領域に展開されている、前記装置側NICの動作を制御する汎用デバイスドライバから、前記装置側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスすることを特徴とする請求項3記載のファイル通信処理方法。
- ネットワークに通信対象ファイルの送出を行う装置側NICを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、
通信対象ファイルの前記ネットワークへの送出を行うための外部側NICと、
特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側NICに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、
前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側NICに対して動作許可を指示するI/Oレジスタを有するマップドI/Oとを含むことを特徴とする外部デバイス。 - 前記情報処理装置のハードディスクから読み出された汎用OS及び前記汎用OSの環境で動作する汎用アプリケーションとは異なる特定OS及び前記特定OSの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第1の記憶手段を備えることを特徴とする請求項5に記載の外部デバイス。
- 前記情報処理装置の起動時に、前記第1の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことを特徴とする請求項6に記載の外部デバイス。
- 前記主メモリは、第1の領域と第2の領域とに区分され、
前記ロード手段は、前記第1の領域に前記特定OS及び前記特定アプリケーションを読み出し、前記第2の領域に前記汎用OS及び前記汎用アプリケーションを読み出すもので、
前記第1の記憶手段には、さらに、前記第1の領域に前記第2の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されていることを特徴とする請求項7に記載の外部デバイス。 - 前記ロード手段は、前記外部側NICを動作させる特定デバイスドライバを前記第1の領域に読み出すものであることを特徴とする請求項8に記載の外部デバイス。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011258482A JP2013114367A (ja) | 2011-11-28 | 2011-11-28 | ファイル通信処理方法及び外部デバイス |
JP2011-258482 | 2011-11-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013080848A1 true WO2013080848A1 (ja) | 2013-06-06 |
Family
ID=48535309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2012/080137 WO2013080848A1 (ja) | 2011-11-28 | 2012-11-21 | ファイル通信処理方法及び外部デバイス |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013114367A (ja) |
WO (1) | WO2013080848A1 (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005072759A (ja) * | 2003-08-21 | 2005-03-17 | Sony Corp | 送信装置および方法、受信装置および方法、通信装置および方法、並びにプログラム |
JP2008052714A (ja) * | 2006-07-25 | 2008-03-06 | Ntt Docomo Inc | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
JP2008158710A (ja) * | 2006-12-22 | 2008-07-10 | Hitachi Ltd | 計算機システム |
JP2009000889A (ja) * | 2007-06-21 | 2009-01-08 | Kyocera Mita Corp | セキュリティ管理方法、画像形成装置及び認証方法 |
WO2009028007A1 (ja) * | 2007-08-24 | 2009-03-05 | Fujitsu Limited | Pciデバイスのi/o空間要求抑止方法 |
WO2009107330A1 (ja) * | 2008-02-25 | 2009-09-03 | パナソニック株式会社 | 情報処理装置及びその制御方法 |
WO2011145199A1 (ja) * | 2010-05-20 | 2011-11-24 | Suginaka Junko | 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム |
-
2011
- 2011-11-28 JP JP2011258482A patent/JP2013114367A/ja active Pending
-
2012
- 2012-11-21 WO PCT/JP2012/080137 patent/WO2013080848A1/ja active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005072759A (ja) * | 2003-08-21 | 2005-03-17 | Sony Corp | 送信装置および方法、受信装置および方法、通信装置および方法、並びにプログラム |
JP2008052714A (ja) * | 2006-07-25 | 2008-03-06 | Ntt Docomo Inc | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
JP2008158710A (ja) * | 2006-12-22 | 2008-07-10 | Hitachi Ltd | 計算機システム |
JP2009000889A (ja) * | 2007-06-21 | 2009-01-08 | Kyocera Mita Corp | セキュリティ管理方法、画像形成装置及び認証方法 |
WO2009028007A1 (ja) * | 2007-08-24 | 2009-03-05 | Fujitsu Limited | Pciデバイスのi/o空間要求抑止方法 |
WO2009107330A1 (ja) * | 2008-02-25 | 2009-09-03 | パナソニック株式会社 | 情報処理装置及びその制御方法 |
WO2011145199A1 (ja) * | 2010-05-20 | 2011-11-24 | Suginaka Junko | 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム |
Also Published As
Publication number | Publication date |
---|---|
JP2013114367A (ja) | 2013-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5512610B2 (ja) | 非ファームウェアエージェントからメモリへのアクセスを許可または阻止する方法、システム、および機械可読記憶媒体 | |
JP4498735B2 (ja) | オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム | |
TWI431533B (zh) | 微處理器系統及用以初始化安全操作之方法與處理器 | |
JP4486288B2 (ja) | コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ | |
JP5153887B2 (ja) | プロセッサから周辺機器へのセキュア動作モードアクセス特権の譲渡のための方法及び装置 | |
WO2011145199A1 (ja) | 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム | |
US20070276969A1 (en) | Method and device for controlling an access to peripherals | |
US20080034350A1 (en) | System and Method for Checking the Integrity of Computer Program Code | |
US20090063865A1 (en) | Configurable Signature for Authenticating Data or Program Code | |
JP5394441B2 (ja) | セキュリティ・コプロセッサにおけるn進の局所性のためのシステム及び方法 | |
WO2003085498A2 (en) | System and method for resetting a platform configuration register | |
KR20120099472A (ko) | 보안 애플리케이션 실행을 제공하는 방법 및 장치 | |
CN117349818A (zh) | 用于多核处理器的远程认证 | |
WO2013069587A1 (ja) | 情報処理空間管理方法、外部デバイス及び情報処理装置 | |
WO2011141997A1 (ja) | 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム | |
EP1843250B1 (en) | System and method for checking the integrity of computer program code | |
CN113268447A (zh) | 计算机架构及其内的访问控制、数据交互及安全启动方法 | |
WO2013080848A1 (ja) | ファイル通信処理方法及び外部デバイス | |
WO2012053053A1 (ja) | 外部ブートデバイス及びネットワーク通信システム | |
WO2013061782A1 (ja) | 外部ブートデバイス及び外部ブート方法 | |
CN118427147B (zh) | 基于eSPI的服务器主板的安全启动方法及相关设备 | |
JP6480403B2 (ja) | 装置 | |
JP2024513716A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
JP2024515450A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
JP2010286866A (ja) | マイクロコントローラ装置 |
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: 12852783 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 190914) |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12852783 Country of ref document: EP Kind code of ref document: A1 |