KR100745430B1 - 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체 - Google Patents

인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체 Download PDF

Info

Publication number
KR100745430B1
KR100745430B1 KR1020057018960A KR20057018960A KR100745430B1 KR 100745430 B1 KR100745430 B1 KR 100745430B1 KR 1020057018960 A KR1020057018960 A KR 1020057018960A KR 20057018960 A KR20057018960 A KR 20057018960A KR 100745430 B1 KR100745430 B1 KR 100745430B1
Authority
KR
South Korea
Prior art keywords
bit
instruction
operand
delete delete
deciphering
Prior art date
Application number
KR1020057018960A
Other languages
English (en)
Other versions
KR20060009247A (ko
Inventor
샤운 룬드발
로날드 스미스
필 치-청 예
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20060009247A publication Critical patent/KR20060009247A/ko
Application granted granted Critical
Publication of KR100745430B1 publication Critical patent/KR100745430B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)
  • Telephone Function (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Peptides Or Proteins (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

인스트럭션을 통해서, 인사이퍼링 또는 디사이퍼링될 저장 장치의 유닛을 지정함으로써, 컴퓨팅 환경의 저장 장치를 인사이퍼링 또는 디사이퍼링하는 방법, 시스템 및 프로그램 제품이 개시된다.

Description

인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체{INSTRUCTIONS TO ASSIST THE PROCESSING OF A CIPHER MESSAGE}
본 발명은 컴퓨터 시스템 아키텍처에 관한 것이고, 특히 IBM z/아키텍처로 시작되며, 다른 아키텍처에 의해 에뮬레이트될 수 있는 새로운 인스트럭션의 처리에 관한 것이다.
본 발명에 앞서서, IBM에서는 1960년대부터 지금까지 수많은 유능한 기술자를 동원해서 IBM 시스템 360이라는 머신을 시작으로 특별한 아키텍처를 만들었으며, 이 아키텍처는 컴퓨팅 시스템에 기본적인 성능을 갖고 있기 때문에 "메인 프레임"이라고 알려지게 되었다. 이 메인 프레임의 동작 원리는 IBM 발명자들에 의해 개발된 인스트럭션을 "메인 프레임"에 구현할 때 수행될 수 있는 인스트럭션을 기술함으로써 머신의 아키텍처를 제시하며, 이는 수년 동안 제시되어 온 IBM의 동작 원리에 포함시킴으로써 "메인 프레임"이라고 표현되는 컴퓨팅 머신의 상태를 개선하는 데 크게 기여했기 때문에 채택되었다. 2000년 12월에 발표된 z/아키텍처 동작 원리의 제 1 판은 SA22-7832-00와 같은 표준 공표 기준이 되었다.
우리는 여기 설명되는 바와 같이, 더 새로운 인스트럭션이 당업자를 도울 것이며, z/아키텍처 머신에 포함될 수 있고, 더 간단한 머신에서 다른 머신에 의해 에뮬레이트될 수 있다고 판단했다.
본 발명은 청구항 1항에 개시된 방법을 제공한다.
첨부된 도면과 함께, 이어지는 본 발명의 상세한 설명으로부터 본 발명의 바람직한 실시예의 특성이 당업자에게는 자명할 것이다.
도 1은 RRE 인스트럭션 형식의 사이퍼 메시지(KM:Cipher Message) 인스트럭션을 도시하는 도면,
도 2는 RRE 인스트럭션 형식의 KMC(Cipher Message with Chaining) 인스트럭션을 도시하는 도면,
도 3은 도 1의 사이퍼 메시지 인스트럭션의 기능 코드를 나타내는 표,
도 4는 도 2의 KMC의 기능 코드를 도시하는 표,
도 5는 KM 및 KMC 인스트럭션의 제네럴 레지스터 할당을 나타내는 도면,
도 6은 비트마다의 배타적-or의 기호를 나타내는 도면,
도 7은 DEA 암호화 및 암호 해독의 기호를 나타내는 도면,
도 8은 KM 퀴리의 파라미터 블록의 형식을 나타내는 도면,
도 9는 KM-DEA의 파라미터 블록을 나타내는 도면,
도 10은 KM-DEA 인사이퍼(Encipher) 동작을 도시하는 도면,
도 11은 KM-DEA 디사이퍼(Decipher) 동작을 도시하는 도면,
도 12는 KM-TDA-128의 파라미터 블록의 형식을 도시하는 도면,
도 13은 KM-TDEA-128 인사이퍼 동작을 도시하는 도면,
도 14는 KM-TDEA-128 디사이퍼 동작을 도시하는 도면,
도 15는 KM-TDEA-192의 파라미터 블록의 형식을 도시하는 도면,
도 16은 KM-TDEA-192 인사이퍼 동작을 도시하는 도면,
도 17은 KM-TDEA-192 디사이퍼 동작을 도시하는 도면,
도 18은 KMC-퀴리의 파라미터 블록의 형식을 도시하는 도면,
도 19는 KMC-DEA의 파라미터 블록의 형식을 도시하는 도면,
도 20은 KMC-DEA 인사이퍼 동작을 도시하는 도면,
도 21은 KMC-DEA 디사이퍼 동작을 도시하는 도면,
도 22는 KMC-TDEA-128의 파라미터 블록의 형식을 도시하는 도면,
도 23은 KMC-TDEA-128 인사이퍼 동작을 도시하는 도면,
도 24는 KMC-TDEA-128 디사이퍼 동작을 도시하는 도면,
도 25는 KMC-TDEA-128의 파라미터 블록의 형식을 도시하는 도면,
도 26은 KMC-TDEA-192 인사이퍼 동작을 도시하는 도면,
도 27은 KMC-TDEA-192 디사이퍼 동작을 도시하는 도면,
도 28은 KM 및 KMC 수행의 우선 순위를 나타내는 표,
도 29는 본 발명의 암호화 코프로세서를 도시하는 도면,
도 30은 바람직한 실시예 및 데이터에 따른 인스트럭션은 물론, 이들 아키텍처화된 인스트럭션을 사용하는 컴퓨터 시스템 상에서 혹은 이들 아키텍처화된 인스트럭션의 에뮬레이션에 사용될 때 이들 인스트럭션을 페치하고, 디코딩하며 수행하는 메커니즘을 포함하는 컴퓨터 메모리 저장 장치의 일반적인 바람직한 실시예를 도시하는 도면.
CIPHER MESSAGE(KM) 인스트럭션 및 CIPHER MESSAGE WITH CHAINING(KMC) 인스트럭션이 설명될 것이며, 이들 인스트럭션을 수행하는 바람직한 컴퓨터 시스템에 대한 설명이 이어진다. 다른 방안으로, 이들 인스트럭션을 수행하는 다른 컴퓨터 시스템을 에뮬레이트하는 제 2 바람직한 컴퓨터 시스템이 설명될 것이다.
CIPHER MESSAGE(KM)
도 1은 RRE 인스트럭션 형식의 사이퍼 메시지(KM) 인스트럭션을 도시하는 도면이다.
CIPHER MESSAGE WITH CHAINING( KMC )
도 2는 RRE 인스트럭션 형식의 KMC(Cipher Message with Chaining) 인스트럭션을 도시하는 도면이다.
제네럴 레지스터 0의 기능 코드에 의해 표시되는 기능이 수행된다.
인스트럭션의 비트 16-23은 무시된다. 제네럴 레지스터 0의 비트 위치 57-63은 기능 코드를 포함한다. 도 3 및 도 4는 각각 할당된 CIPHER MESSAGE 및 CIPHER MESSAGE WITH CHAINING의 기능 코드를 도시하고 있다. 다른 모든 기능 코드는 할당되지 않는다. 사이퍼 기능의 경우에, 비트 56은 암호화 또는 암호 해독 동작이 수행되어야 하는 지를 나타내는 변경자(modifier) 비트이다. 변경자 비트는 모든 다른 기능에서는 무시된다. 제네럴 레지스터 0의 모든 다른 비트는 무시된다. 제네럴 레지스터 1은 저장 장치의 파라미터 블록의 가장 왼쪽의 바이트의 논리 어드레스를 포함한다. 24비트 어드레싱 모드에서, 제네럴 레지스터 1의 비트 위치 40-63의 컨텐츠는 어드레스를 이루고, 비트 위치 0-39의 컨텐츠는 무시된다. 31 비트 어드레싱 모드에서, 제네럴 레지스터 1의 비트 위치 33-63의 컨텐츠가 어드레스를 구성하고, 비트 위치 0-32의 컨텐츠는 무시된다.
64 비트 어드레싱 모드에서, 제네럴 레지스터 1의 비트 위치 0-63의 컨텐츠는 어드레스를 구성한다.
CIPHER MESSAGE의 기능 코드가 도 3에 도시된다.
CIPHER MESSAGE WITH CHAINING의 기능 코드가 도 4에 도시된다.
모든 다른 기능 코드는 할당되지 않는다. 퀴리 기능은 다른 기능의 사용가능성을 나타내는 수단을 제공한다. 퀴리 기능에 대해서 제네럴 레지스터 R1, R2 및 R1+1의 컨텐츠는 무시된다.
모든 다른 기능에 대해서, 제 2 오퍼랜드는 파라미터 블록의 암호화 키를 사 용해서 기능 코드에 의해 나타내어지는 바에 따라서 사이퍼링되며, 그 결과가 제 1 오퍼랜드 위치에 위치된다. CIPHER MESSAGE WITH CHAINING의 경우에, 사이퍼링은 파라미터 블록의 초기 체이닝 값도 사용하며, 이 체이닝 값은 동작의 일부로서 업데이트된다.
R1 필드가 제네럴 레지스터를 지정하며, 짝수 레지스터를 지정해야 하며, 그렇지 않은 경우, 특정한 예외가 인식된다.
R2 필드는 제네럴 레지스터의 짝수-홀수 쌍을 지정하며, 짝수 레지스터를 지정해야 하며, 그렇지 않은 경우에, 특정한 예외가 인식된다.
제 1 및 제 2 오퍼랜드의 가장 왼쪽의 바이트의 위치는 R1 및 R2 제네럴 레지스터의 컨텐츠로 각각 지정되어 있다. 제 2 오퍼랜드 위치의 바이트의 수는 제네럴 레지스터 R2+1에 지정된다. 제 1 오퍼랜드의 길이는 제 2 오퍼랜드와 같다.
동작의 일부로서, 제네럴 레지스터 R1 및 R2의 어드레스는 처리되는 바이트의 수만큼 증가되고, 제네럴 레지스터 R2+1의 길이는 같은 수만큼 감소된다. 어드레스 및 길이의 형성 및 업데이트는 어드레싱 모드에 따라서 달라진다.
24 비트 어드레싱 모드에서, 제네럴 레지스터 R1 및 R2의 비트 위치 40-63의 컨텐츠는 각각 제 1 및 제 2 오퍼랜드의 어드레스를 구성하고, 비트 위치 0-39의 컨텐츠는 무시된다. 갱신된 어드레스의 비트 40-63은 제네럴 레지스터 R1 및 R2의 대응 비트를 대치하고, 갱신된 어드레스의 비트 위치 40의 수행은 무시되며, 제네럴 레지스터 R1 및 R2의 비트 위치 32-39의 컨텐츠는 0으로 설정된다. 31비트 어드레싱 모드에서, 제네럴 레지스터 R1 및 R2의 비트 위치 33-63의 컨텐츠는 각각 제 1 및 제 2 오퍼랜드의 어드레스를 구성하고, 비트 위치 0-32의 컨텐츠는 무시된다. 갱신된 어드레스의 비트 33-63은 제네럴 레지스터 R1 및 R2의 대응 비트를 대치하고, 갱신된 어드레스의 비트 위치 33의 수행은 무시되며, 제네럴 레지스터 R1 및 R2의 비트 위치 32의 컨텐츠는 0으로 설정된다. 64 비트 어드레싱 모드에서, 제네럴 레지스터 R1 및 R2의 비트 위치 0-63의 컨텐츠는 각각 제 1 및 제 2 오퍼랜드의 어드레스를 구성한다. 갱신된 어드레스의 비트 0-63는 제네럴 레지스터 R1 및 R2의 컨텐츠를 대치하고, 비트 위치 0의 수행은 무시된다.
24 비트 어드레싱 모드와 31비트 어드레싱 모드 모두에서, 제네럴 레지스터 R2+1의 비트 위치 32-63의 컨텐츠는 제 1 및 제 2 오퍼랜드의 바이트 수를 나타내는 32비트의 서명되지 않은(unsigned) 2진 정수를 형성하고, 비트 위치 0-31의 컨텐츠는 무시된다. 갱신된 값의 비트 32-63은 제네럴 레지스터 R2+1의 대응 비트를 대치한다. 64비트 어드레싱 모드에서, 제네럴 레지스터 R2+1의 비트 위치 0-63의 컨텐츠는 제 1 및 제 2 오퍼랜드의 바이트 수를 나타내는 64비트의 서명되지 않은 2진 정수를 형성하고, 갱신된 값은 제네럴 레지스터 R2+1의 컨텐츠를 대치한다.
24비트 또는 31비트 어드레싱 모드에서, 제네럴 레지스터 R1, R2 및 R2+1의 비트 위치 0-31의 컨텐츠는 항상 변하지 않고 유지된다. 도 5는 간단하게 설명되는 제네럴 레지스터의 컨텐츠를 도시한다.
액세스 레지스터 모드에서, 액세스 레지스터 1, R2 및 R2는 파라미터 블록, 제 1 및 제 2 오퍼랜드 각각을 포함하는 어드레싱 공간을 나타낸다.
제 1 및 제 2 오퍼랜드 모두의 제일 왼쪽에서 처리가 시작해서, 우측으로 블 록 단위로 계속되면서 결과가 획득된다. 제네럴 레지스터 R2+1에 나타난 제 2 오퍼랜드의 바이트 수가 처리되어서 제 1 오퍼랜드 위치에 위치될 때 끝나거나(정상 종료(normal completion)라고도 함), 제 2 오퍼랜드의 길이보다 더 짧은 CPU 결정된 블록이 처리되었을 때 끝난다(부분 종료라고도 함). CPU 결정되는 블록의 수는 모델에 따라 달라지며, 인스트럭션이 수행될 때마다 다른 수가 될 수 있다. CPU 결정되는 블록의 수는 통상이 0이 아니다. 어떤 통상적이지 않은 상황에서는, 이 수가 0이 될 수 있으며, 프로그레스 없이 상태 코드 3이 설정될 수 있다. 그러나, CPU는 이 프로그레스의 경우의 무한정 재반복에 대해 보호된다.
제 1 오퍼랜드 위치와 체이닝 값 필드의 결과는 다음 상황이 발생한 경우에는 예측할 수 없다.
1. 암호화 키 필드가 제 1 오퍼랜드의 일부와 중첩되는 상황.
2. 체이닝 값 필드가 제 1 오퍼랜드 또는 제 2 오퍼랜드 중 일부와 중첩되는 상황.
3. 제 1 및 제 2 오퍼랜드가 파괴적으로 중첩되는 상황. 파괴적으로 중첩된다는 것은 처리가 왼쪽에서 오른쪽으로 한번에 1바이트씩 수행된다고 가정할 때, 제 1 오퍼랜드가 데이터가 이동할 소스로서 사용되는 경우에 사용된다.
동작이 정상 종료로 종료하면, 상태 코드 0이 설정되고 R2+1의 결과값은 0이다. 동작이 부분 종료로 종료하면, 상태 코드 3이 설정되고, R2+1의 결과값은 0이 아니다.
저장 변경 PER 이벤트(a storage-alteration PER event)가 인식되면, 이벤트 가 보고되기 전에 4K 미만의 추가 바이트가 제 1 오퍼랜드 위치에 저장된다.
처음에 제 2 오퍼랜드 길이가 0이면, 파라미터 블록, 제 1 및 제 2 오퍼랜드는 액세스되지 않고, 제네럴 레지스터 R1, R2 및 R2+1은 변하지 않으며, 상태 코드 0이 설정된다.
R1 및 R2 필드의 컨텐츠가 같으면, 지정된 레지스터의 컨텐츠는 처리된 바이트 수의 2배가 아닌 처리된 바이트 수만큼만 증가된다.
다른 CPU 및 채널 프로그램에 의해 관찰되는 바에 따라서, 파라미터 블록 및 저장 오퍼랜드에 대한 참조는 다중 액세스 참조가 될 수 있고, 이들 저장 위치에 대한 액세스가 반드시 블록-콘커런드(block-concurrent)는 아니며, 이들 액세스 또는 참조의 순서는 정의되지 않는다.
어떤 특수한 상황에서, 인스트럭션 수행은 처리된 제 1 및 제 2 오퍼랜드의 최종 유닛을 반영하기 위해서 레지스터 및 체이닝 값을 갱신하지 않고도 상태 코드 3을 설정함으로써 완료될 수 있다. 이 경우 처리된 유닛의 크기는 상황 및 모델에 따라 달라지지만, 처리되었지만 보고되지 않은 제 1 및 제 2 오퍼랜드의 일부가 저장 장치에서 중첩되지 않도록 제한된다. 모든 경우에, 변화 비트가 설정되고, PER 저장 변경 이벤트가 보고되며, 적용가능하다면, 모든 제 1 오퍼랜드 위치에 대해 처리된다.
인스트럭션의 한번의 수행에서 처리되는 것보다 더 큰 오퍼랜드의 부분에 대해서 액세스 예외(access exceptions)가 보고될 수 있다. 그러나 액세스 예외는 하나의 오퍼랜드 길이를 초과하는 위치에서 혹은 처리되는 현재 위치를 4K 바이트 이상 초과하는 위치에서 인식되지 않는다.
기능 설명에 사용되는 기호
다음 기호가 후속하는 CIPHER MESSAGE 및 CIPHER MESSAGE WITH CHAINING 기능의 설명에서 사용된다. 데이터 암호화 알고리즘(DEA) 기능에서, DEA 키의 각각의 바이트의 DEA 키 패리티 비트는 무시되고, 동작은 그 키의 DEA 키 패리티에 관계없이 정상적으로 진행한다. 데이터 암호화 알고리즘의 추가적인 설명은 미국 표준 협회 ANSI-X3.92.1981의 Data Encryption Algorithm에 나타나 있다.
도 6은 비트 마다의 배타적 or의 기호를 나타내고, 도 7은 DEA 암호화 및 암호 해독의 기호를 나타내고 있다.
KM 큐리(KM 기능 코드 0)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치는 도 5에 도시된 바와 같다.
기능 KM 퀴리에 사용되는 파라미터 블록은 도 8에 도시된 블록을 갖는다.
128 비트 상태 워드는 파라미터 블록에 저장된다. 이 필드의 비트 0-127는 CIPHER MESSAGE 인스트럭션의 각각 기능 코드 0-127에 각각 대응한다. 비트가 1일 때, 대응하는 기능이 인스톨되고, 1이 아니면 기능은 인스톨되지 않는다.
KM 퀴리 기능의 수행이 완료되면 상태 코드 0이 설정되고, 상태 코드 3은 이 기능에 적용할 수 없다.
KM- DEA (KM 기능 코드 1)
이 인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
기능 KM-DEA에 사용되는 파라미터 블록은 도 9에 도시된 형식을 갖는다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8 바이트 암호화 원문(plaintext) 블록(P1, P2...Pn)은 파라미터 블록의 64비트 암호화 키를 가진 DEA 알고리즘을 사용해서 인사이퍼된다. 각각의 암호화 원문 블록은 독립적으로 인사이퍼되고, 즉 인사이퍼 동작은 체이닝없이 수행된다. 사이퍼텍스트 블록(C1, C2,..., Cn)이 오퍼랜드 1에 저장된다. 동작은 도 10에 도시된다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 64 비트 암호화 키를 가진 DEA 알고리즘을 사용해서 디사이퍼된다. 각각의 사이퍼텍스트 블록은 독립적으로 디사이퍼된다. 즉 체이닝 없이 디사이퍼 동작이 수행된다. 암호화 원문 블록(P1, P2,..., Pn)은 오퍼랜드 1에 저장된다. KM-DEA 디사이퍼 동작이 도 11에 도시되어 있다.
KM- TDEA -128(KM 기능 코드 2)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다. KM-TDEA-128 기능에 사용되는 파라미터 블록이 도 12에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 암호화 원문 블록(P1, P2,..., Pn)은 파라미터 블록의 2개의 64 비트 암호화 키를 가진 TDEA(트리플 DEA) 알고리즘을 사용해서 인사이퍼된다. 각각의 암호화 원문 블록이 독립적으로 인사이퍼된다. 즉 체이닝 없이 인사이퍼 동작이 수행된다. 사이퍼텍스트 블록(C1, C2,..., Cn)은 오퍼랜드 1에 저장된다. KM-TDEA-128 인사이퍼 동작이 도 13에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 2개의 64 비트 암호화 키를 가진 TDEA 알고리즘을 사용해서 디사이퍼된다. 각각의 사이퍼텍스트 블록이 독립적으로 디사이퍼된다. 즉 체이닝 없이 디사이퍼 동작이 수행된다. 암호화 원문 블록(P1, P2,..., Pn)은 오퍼랜드 1에 저장된다. KM-TDEA-128 디사이퍼 동작이 도 14에 도시되어 있다.
KM- TDEA -192 (KM 기능 코드 3)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
KM-TDEA-192 기능에 사용되는 파라미터 블록이 도 15에 도시된 형식을 갖는다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 암호화 원문 블록(P1, P2,..., Pn)은 파라미터 블록의 3개의 64 비트 암호화 키를 가진 TDEA 알고리즘을 사용해서 인사이퍼된다. 각각의 암호화 원문 블록이 독립적으로 인사이퍼된다. 즉 체이닝 없이 인사이퍼 동작이 수행된다. 사이퍼텍스트 블록(C1, C2,..., Cn)은 오퍼랜드 1에 저장된다. KM-TDEA-192 인사이퍼 동작이 도 16에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 3개의 64 비트 암호화 키를 가진 TDEA 알고리즘을 사용해서 디사이퍼된다. 각각의 사이퍼텍스트 블록이 독립적으로 디사이퍼된다. 즉 체이닝 없이 디사이퍼 동작이 수행된다. 암호화 원문 블록(P1, P2,..., Pn)은 오퍼랜드 1에 저장된다. KM-TDEA-192 디사이퍼 동작이 도 17에 도시되어 있다.
KMC -퀴리( KMC 기능 코드 0)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
KMC 퀴리 기능에 사용되는 파라미터 블록은 도 18에 도시된 형식을 갖는다.
128 비트 상태 워드는 파라미터 블록에 저장된다. 이 필드의 비트 0-127는 CIPHER MESSAGE WITH CHAINING 인스트럭션의 각각 기능 코드 0-127에 각각 대응한다. 비트가 1일 때, 대응하는 기능이 인스톨되고, 1이 아니면 기능은 인스톨되지 않는다.
KM 퀴리 기능의 수행이 완료되면 상태 코드 0이 설정되고, 상태 코드 3은 이 기능에 적용할 수 없다.
KMC - DEA ( KMC 기능 코드 1)
이 인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
기능 KMC-DEA에 사용되는 파라미터 블록은 도 19에 도시된 형식을 갖는다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 암호화 원문 블록(P1, P2,..., Pn)은 파라미터 블록의 64비트 암호화 키 및 64 비트 체이닝 값을 가진 DEA 알고리즘을 사용해서 인사이퍼된다.
제 1 사이퍼 텍스트 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내의 체이닝 값이고, 각각의 후속하는 사이퍼 텍스트 블록을 유도하는 체이닝 값은 대응하는 이전 사이퍼 텍스트 블록이다. 사이퍼 텍스트 블록(C1, C2,...Cn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-DEA 인사이퍼 동작이 도 20에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 64 비트 암호화 키 및 64비트 체이닝 값을 가진 DEA 알고리즘을 사용해서 디사이퍼된다.
제 1 암호화 원문 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내에 있고, 각각의 후속하는 암호화 원문 블록을 유도하 는 체이닝 값은 대응하는 이전 암호화 원문 블록이다. 암호화 원문 블록(P1, P2,...Pn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-DEA 디사이퍼 동작이 도 21에 도시되어 있다.
KMC - TDEA -128( KMC 기능 코드 2)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
KMC-TDEA-128 기능에 사용되는 파라미터 블록은 도 22에 도시된 형식을 갖는다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 암호화 원문 블록(P1, P2,..., Pn)은 파라미터 블록의 2개의 64비트 암호화 키 및 64 비트 체이닝 값을 가진 TDEA 알고리즘을 사용해서 인사이퍼된다.
제 1 사이퍼 텍스트 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내의 체이닝 값이고, 각각의 후속하는 사이퍼 텍스트 블록을 유도하는 체이닝 값은 대응하는 이전 사이퍼 텍스트 블록이다. 사이퍼 텍스트 블록(C1, C2,...Cn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-TDEA-128 인사이퍼 동작이 도 23에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 2개의 64 비트 암호화 키 및 64비트 체이닝 값을 가진 TDEA 알고리즘을 사용해서 디사이퍼된다.
제 1 암호화 원문 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내에 있고, 각각의 후속하는 암호화 원문 블록을 유도하는 체이닝 값은 대응하는 이전 암호화 원문 블록이다. 암호화 원문 블록(P1, P2,...Pn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-TDEA-128 디사이퍼 동작이 도 24에 도시되어 있다.
KMC - TDEA -192( KMC 기능 코드 3)
인스트럭션에 의해 사용되는 오퍼랜드 및 어드레스의 위치가 도 5에 도시되어 있다.
KMC-TDEA-192 기능에 사용되는 파라미터 블록은 도 25에 도시된 형식을 갖는다.
제네럴 레지스터 0의 변경자 비트가 0이면, 인사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 암호화 원문 블록(P1, P2,..., Pn)은 파라미터 블록의 3개의 64비트 암호화 키 및 64 비트 체이닝 값을 가진 TDEA 알고리즘을 사용해서 인사이퍼된다.
제 1 사이퍼 텍스트 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내의 체이닝 값이고, 각각의 후속하는 사이퍼 텍스트 블록을 유도하는 체이닝 값은 대응하는 이전 사이퍼 텍스트 블록이다. 사이퍼 텍스트 블록(C1, C2,...Cn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-TDEA-192 인사이퍼 동작이 도 26에 도시되어 있다.
제네럴 레지스터 0의 변경자 비트가 1이면, 디사이퍼 동작이 수행된다. 오퍼랜드 2의 8바이트 사이퍼텍스트 블록(C1, C2,..., Cn)은 파라미터 블록의 3개의 64 비트 암호화 키 및 64 비트 체이닝 값을 가진 TDEA 알고리즘을 사용해서 디사이퍼된다.
제 1 암호화 원문 블록을 유도하기 위한 초기 체이닝 값(ICV)이라 불리는 체이닝 값은 파라미터 블록 내에 있고, 각각의 후속하는 암호화 원문 블록을 유도하는 체이닝 값은 대응하는 이전 암호화 원문 블록이다. 암호화 원문 블록(P1, P2,...Pn)은 오퍼랜드 1에 저장된다. 마지막 사이퍼 텍스트 블록은 출력 체이닝 값(OCV)이고, 이는 파라미터 블록의 체이닝 값 필드에 저장된다. KMC-TDEA-192 디사이퍼 동작이 도 27에 도시되어 있다.
KM 및 KMC 의 특정 상태
다음과 같은 상황이 발생하면, 특정한 예외가 인식되고 다른 액션이 취해지지 않는다.
1. 제네럴 레지스터 0의 비트 57-63가 할당되지 않거나 인스톨되지 않은 기능 코드를 나타낸다.
2. R1 또는 R2 필드가 홀수 레지스터 또는 제네럴 레지스터 0을 지정한다.
3. 제 2 오퍼랜드 길이가 지정된 기능의 데이터 블록 크기의 배수가 아니다(7-35페이지의 도 7-3을 참조해서 CIPHER MESSAGE 기능의 데이터 블록 크기를 결정하고; 페이지 7-35의 도 7-4를 참조해서 CIPHER MESSAGE WITH CHAINING 기능의 데이터 블록 크기를 결정한다). 이 특정 예외 상태는 퀴리 기능에는 적용하지 않는다.
최종 상태 코드
0 정상 종료
1 - -
2 - -
3 부분 종료
프로그램 예외
액세스(페치, 오퍼랜드 2 및 암호화 키; 저장, 오퍼랜드 1; 페치 및 저장 체이닝 값)
연산(if 메시지 보안 어시스트가 인스톨되지 않으면)
설명
도 28은 KM 및 KMC의 수행의 우선순위를 도시하는 표이다.
프로그램 주의
1. 상태 코드 3이 설정되면, 오퍼랜드 어드레스 및 길이를 포함하는 제네럴 레지스터가, CIPHER MESSAGE WITH CHAINING의 경우에는 파라미터 블록의 체이닝 값이 통상적으로 연산을 계속하기 위해서 프로그램이 인스트럭션으로 간단하게 브랜치 백(branch back)시킬 수 있도록 갱신된다.
특별한 상황에서는 CPU는 재처리될 제 1 및 제 2 오퍼랜드의 일부가 저장 장치 내에서 중첩될 때 프로그레스가 아닌 케이스가 무한정 재발생하는 것을 방지하고, 상태 코드 3으로 설정하는 것을 방지한다. 따라서, 프로그램은 상태 코드 3이 설정될 때마다, 무한 루프에 노출되는 일 없이, 그리고 인스트럭션을 부정확하게 재시도하는 것에 노출되는 일 없이 인스트럭션으로 안전하게 브랜치 백할 수 있다.
2. 제 2 오퍼랜드의 길이가 처음에 0이 아닌 값이고, 상태 코드 0이 설정되면, 레지스터는 상태 코드 3과 같은 방식으로 갱신된다. CIPHER MESSAGE WITH CHAINING의 경우에, 이 경우의 체이닝 값은 추가 오퍼랜드가 같은 체인의 일부인 것처럼 처리될 수 있도록 된다.
3. 저장 장치를 절감하기 위해서 제 1 및 제 2 오퍼랜드가 정확하게 중첩될 수 있으며, 제 1 오퍼랜드의 개시 지점은 제 2 오퍼랜드의 개시 지점의 좌측이 될 수 있다. 어떤 경우든 중첩은 파괴적이지 않다.
암호화 코프로세서
바람직한 실시예는 여기 설명된 인스트럭션과 함께 사용될 수 있으며, 사이버 메시지를 수행하고 적절한 인스트럭션의 체이닝되고 암호화된 사용을 위해서 이용될 수 있는 다양한 체이닝 메시지 태스크를 돕는데 사용될 수 있는 암호화 코프로세서를 제공한다.
도 29는 다수의 수행 파이프라인을 갖고 있으며, 다목적 마이크로프로세서 상의 모든 내부 수행 유닛에 공통인 데이터 경로에 직접 부착된 본 발명의 암호화 코프로세서를 도시하고 있다. 마이크로프로세서 내부 버스(1)는 암호화 제어 유닛(2)에 부착된 모든 다른 수행 유닛에 공통이고, 제어 유닛은 수행할 프로세서 인스트럭션용 버스를 감시한다.
암호화 제어 유닛은 다목적 마이크로프로세서의 중앙 처리 장치의 모든 내부 실행 유닛에 공통인 데이터 경로에 직접 부착된 암호화 코프로세서를 제공함으로써, 중앙 처리 장치에 모든 사용가능한 하드웨어(이 실시예에서 다수의 실행 파이프라인을 가진 E0,...En, 또는 이들의 조합)를 제공한다. 암호화 인스트럭션이 커맨드 레지스터(3)에서 마주치면, 제어 유닛(2)은 사용가능한 하드웨어로부터 적절한 알고리즘을 호출한다. 오퍼랜드 데이터는 입력 FIFO 레지스터(4)를 통해서 같은 내부 마이크로프로세서 상으로 전달된다. 동작이 종료되면 플래그는 상태 레지스터(6)에 설정되고, 그 결과는 출력 FIFO 레지스터(5)로부터 판독될 수 있다.
본 발명의 바람직한 실시예는 시스템의 수행 목적에 따른 특정한 실시가 요 구하는 만큼의 하드웨어 엔진을 포함하도록 확장될 수 있게 설계된다. 입출력 레지스터(7)로의 데이터 경로는 모든 엔진에 대해서 공통이다.
본 발명의 바람직한 실시예는 암호화 기능이 CPU의 수행 유닛 하드웨어에서 구현되고, 이러한 구현을 통해서 암호 해독 동작을 호출해서 수행할 때의 지연을 낮추고 효율을 증가시킬 수 있다.
이와 같은 낮은 지연은 많은 암호 해독 동작을 자주 행하는 시스템에서 시스템의 다목적 프로세서의 성능을 크게 강화시키며, 특히 적은 양의 데이터만이 포함되는 경우에 그렇다. 이로써 보안 전자 상거래를 행할 때 포함되는 처리를 크게 가속시킬 수 있는 구현을 가능하게 한다. 보안 전자 상거래의 가장 공통되는 목적은 3개의 알고리즘의 세트를 포함한다. 다른 동작이 세션의 모든 거래에서 호출되는 반면에 제 1 알고리즘은 하나의 세션에서 한번만 사용되고, 하드웨어 또는 소프트웨어로 구현될 수 있어서, 외부 하드웨어를 호출할 때에 드는 비용 및 소프트웨어의 알고리즘을 수행할 때의 시간 비용 모두가 본 발명에 따라서 감소된다.
도 30에서, 바람직한 실시예에서, 인스트럭션이 프로그램, 근래 통상적으로 "C" 프로그램에 의해 사용되는 장기간 변위(long displacement) 장치 컴퓨터 아키텍처화된 인스트럭션 형태의 상업적 구현에서, IBM에서 실험적으로 입증한 바에 따라서, 효율적으로 사용될 수 있는 위에 설명된 마이크로프로세서를 구비한 메인프레임 컴퓨터에 무엇을 어떻게 구현했는지 개념적으로 도시한다. 저장 매체에 저장된 이들 인스트럭션 형태는 기본적으로 z/아키텍처 IBM 서버에서 수행되지만, 다른 방안으로 다른 아키텍처를 수행하는 머신에서 수행될 수 있다. 이들은 현재의 그리고 미래의 IBM 메인프레임 서버에서 그리고 IBM의 다른 머신에서 에뮬레이트될 수 있다(예컨대, pSeries 서버(RTM) 및 xSeries 서버(RTM)). 이들은 IBM, Intel, AMD, 선마이크로시스템즈 등에 의해 제조된 하드웨어를 사용해서 폭넓은 머신에서 리눅스를 수행하는 머신에서 수행될 수 있다. z/아키텍처하의 하드웨어에서 수행하는 것외에, 리눅스가 허큘리스, UMX, FXI 또는 플랫폼 솔루션에 의해 에뮬레이트를 사용하는 머신 및 리눅스가 사용될 수 있으며, 여기서 일반적으로 수행은 에뮬레이션 모드이다. 에뮬레이션 모드에서 에뮬레이트되는 특정 인스트럭션은 디코딩되고, "C" 서브루틴 또는 드라이버에서와 같은 개개의 인스트럭션을 구현하도록 만들어진 서브루틴 또는 특정 하드웨어용 드라이버를 제공하는 다른 방법은 바람직한 실시예의 설명을 이해한 이후에 당업자가 알고 있는 방법과 같다. 이에 한정하는 것은 아니지만, US5551013, US6009261, US5574873, US6308255, US6463582 및 US5790825를 포함하는 다양한 소프트웨어 및 하드웨어 에뮬레이션 특허는 이들이 사용하는 시판되는 소프트웨어 기술은 물론 당업자가 입수할 수 있는 타겟 머신의 다양한 다른 머신용으로 구성된 인스트럭션 형식의 에뮬레이션을 수행하는 여러가지 기존 방식을 나타낸다.
바람직한 실시예에서, 비(non) 슈퍼 스칼라 현재의 위의 장기간 변위 인스트럭션 형식은 베이스 레지스터의 합산에 의해 오퍼랜드 저장 어드레스를 형성한다. 12비트의 서명되지 않은 변위 및 새로운 장기간 변위 인스트럭션 형식은 베이스 레지스터와 20비트 서명된 변위의 합산 또는 베이스 레지스터, 인덱스 레지스터 및 20비트 서명된 변위의 합산에 의해 오퍼랜드 저장 어드레스를 형성한다.
도 30에 도시된 바와 같이, 이들 인스트럭션은 프로세서에 의해 또는 다른 네이티브 인스트럭션 세트를 가진 컴퓨터에서 수행되는 소프트웨어에 의한 이 인스트럭션 세트의 에뮬레이션에 의해 하드웨어에서 수행된다.
도 30에서, 501은 인스트럭션 및 데이터를 포함하는 컴퓨터 메모리 저장 장치를 나타낸다. 본 발명에서 설명되는 장기간 변위 인스트럭션은 처음에 이 컴퓨터에 저장될 것이다. 502는 컴퓨터 메모리로부터의 인스트럭션을 페치하는 메커니즘을 도시하고 있으며, 페치한 이들 인스트럭션의 로컬 버퍼링도 포함할 수 있다. 원래의 인스트럭션은 인스트럭션 디코더(503)로 전송되고, 여기서 어떤 타입의 인스트럭션이 페치되는지 결정한다. 504는 인스트럭션을 수행하는 메커니즘을 도시한다. 이는 데이터를 메모리(501)로부터 레지스터로 로딩하는 것, 데이터를 레지스터로부터 메모리로 다시 저장시키거나, 일부 산술 연산 또는 논리 연산의 타입을 수행하는 것을 포함할 수 있다. 수행될 연산의 정확한 타입은 인스트럭션 디코더에 의해 미리 결정된다. 본 발명에서 설명되는 장기간 변위 인스트럭션이 컴퓨터 시스템에서 네이티브하게 수행되는 경우에, 이 도면은 위에 설명되는 바와 같이 완료된다. 그러나, 장기간 변위 인스트럭션을 포함하는 인스트럭션 세트 아키텍처가 다른 컴퓨터에서 에뮬레이트되는 경우에, 위의 처리는 호스트 컴퓨터(505)의 소프트웨어에서 수행될 것이다. 이 경우에, 위에 언급된 메커니즘은 에뮬레이터 소프트웨어 내의 하나 이상의 소프트웨어 서브루틴으로서 구현되는 것이 전형적이다. 두 경우 모두에, 인스트럭션은 페치되고, 디코딩되고, 수행된다.
더 상세하게, 이렇게 구성된 인스트럭션은, 오퍼랜드 저장 어드레스를 형성 하는 데 사용되는 12비트 서명되지 않은 변위를 가진 현재의 인스트럭션 형식 및 오퍼랜드 저장 장치 어드레스를 형성하는 데 사용되는 확장 서명된 변위를 포함하는 추가적인 변위 비트, 바람직하게는 12 비트를 제공하는 추가 인스트럭션 형식을 가진 컴퓨터 아키텍처와 함께 사용될 수 있다. 이들 컴퓨터 구성된 인스트럭션은 컴퓨터 저장 매체에 저장된 컴퓨터 소프트웨어를 포함하며, 이는 컴퓨터 소프트웨어를 사용하는 프로세서의 코드 수행을 초래하고, 컴퓨터 저장 매체(501)에 저장된 컴파일러 또는 에뮬레이터/인터프레터에 의해 사용되는 인스트럭션 코드를 포함하되, 여기서 이 인스트럭션 코드의 제 1 부분은 수행된 연산을 지정하는 연산 코드를 포함하고, 그 제 2 부분은 참여할 오퍼랜드를 지정한다. 장기간 변위 인스트럭션은 추가 어드레스가 장기간 변위 장치 인스트럭션의 사용과 함께 직접 어드레싱되게 한다.
도 30에 도시된 바와 같이, 이들 인스트럭션은 프로세서에 의해 또는 다른 네이티브 인스트럭션 세트를 가진 컴퓨터에서 수행되는 소프트웨어에 의한 이 인스트럭션 세트의 에뮬레이션에 의해 하드웨어에서 수행된다.
바람직한 실시예의 컴퓨터 아키텍처에 따라서, 변위 필드는 2개의 부분이 되도록 형성되며, 중요성이 적은 부분은 오퍼랜드 1용 DL, DL1 또는 오퍼랜드 2용 DL2의 12비트가 되고, 가장 중요한 부분은 오퍼랜드 1용 DH, DH1 또는 오퍼랜드 2용 DH2의 8비트가 된다.
또한, 바람직한 컴퓨터 아키텍처는 오피코드가 비트 위치 0 내지 7 및 40 내지 47에 있고, R1이라 불리는 타겟 레지스터가 비트 위치 8 내지 11에 있으며, X2 라 불리는 인덱스 레지스트가 비트 위치 12 내지 15에 있고, B2라 불리는 베이스 레지스터가 비트 위치 16 내지 19에 있되, 변위는 비트 위치 20 내지 31 에 있는 DL2라 불리는 제 1 부분 및 비트 위치 32 내지 39에 있는 DH2라 불리는 제 2 부분으로 이루어지도록 된 인스트럭션 형식을 갖고 있다.
이 컴퓨터 아키텍처는 오피코드가 비트 위치 0 내지 7 및 40 내지 47에 있고, R1이라 불리는 타겟 레지스터가 비트 위치 8 내지 11에 있으며, R3라 불리는 소스 레지스트가 비트 위치 12 내지 15에 있고, B2라 불리는 베이스 레지스터가 비트 위치 16 내지 19에 있되, 변위는 비트 위치 20 내지 31에 있는 DL2라 불리는 제 1 부분 및 비트 위치 32 내지 39에 있는 DH2라 불리는 제 2 부분으로 이루어지도록 된 인스트럭션 형식을 갖고 있다.
또한, 장기간 변위 장치를 가진 본 발명의 컴퓨터 아키텍처 인스트럭션은 오피코드가 비트 위치 0 내지 7 및 40 내지 47에 있고, R1이라 불리는 타겟 레지스터가 비트 위치 8 내지 11에 있으며, M3라 불리는 마스크 값이 비트 위치 12 내지 15에 있고, B2라 불리는 베이스 레지스터가 비트 위치 16 내지 19에 있되, 변위는 비트 위치 20 내지 31에 있는 DL2라 불리는 제 1 부분 및 비트 위치 32 내지 39에 있는 DH2라 불리는 제 2 부분으로 이루어지도록 된 인스트럭션 형식을 갖고 있다.
설명된 바와 같이, 장기간 변위 장치를 가진 본 발명의 컴퓨터 아키텍처는 오피코드가 비트 위치 0 내지 7 및 40 내지 47에 있고, I2이라 불리는 중간값이 비트 위치 8 내지 15에 있으며, B2라 불리는 베이스 레지스터가 비트 위치 16 내지 19에 있되, 변위는 비트 위치 20 내지 31에 있는 DL1라 불리는 제 1 부분 및 비트 위치 32 내지 39에 있는 DH1라 불리는 제 2 부분으로 이루어지도록 된 인스트럭션 형식을 갖고 있다.
본 발명의 장기간 변위 장치 컴퓨터 아키텍처는 새로운 20비트 서명되지 않은 변위를 가진 인스트럭션 형식만을 사용해서 생성되는 새로운 인스트럭션을 사용할 때 효율적으로 동작한다.
본 발명의 컴퓨터 아키텍처의 특정 실시예는 12비트 서명되지 않은 변위만을 가지며, 새로운 인스트럭션 형식이 되도록 형성되는 인스트럭션 형식을 가진 현재의 인스트럭션을 사용해서, 필드 DH인 변위의 상위 8비트가 모두 0이면 현재의 12비트 서명되지 않은 변위값을 가지고, 혹은 DH인 변위의 상위 8비트가 모두 0이 아니면 20비트 서명된 값을 갖게 된다.
삭제
삭제
삭제
삭제

Claims (18)

  1. 컴퓨팅 환경의 저장 장치를 인사이퍼링(enciphering) 또는 디사이퍼링(deciphering)하는 방법에 있어서,
    마이크로프로세서 인스트럭션을 통해서 인사이퍼링되거나 디사이퍼링될 저장 장치의 유닛을 지정하는 단계와,
    상기 저장 장치의 유닛을 인사이퍼링 또는 디사이퍼링하는 단계
    를 포함하되,
    상기 인스트럭션은 기능 코드 값(function code value)을 식별하는 필드 및 변경자 비트 값(modifier bit value)을 식별하는 다른 필드와 관련되고, 상기 인스트럭션을 수행하는 프로세서는 상기 기능 코드 값 및 상기 변경자 비트 값에 기초해서 인사이퍼 또는 디사이퍼 동작을 수행할지 여부를 인식하며,
    하나의 추가 기능 코드 값이 상태 워드가 파라미터 블록에 저장되게 하는 퀴리 동작에 대응하며, 상기 상태 워드는 복수의 비트를 구비하되, 상기 상태 워드의 하나의 비트가 이진값 "1"을 가지면 상기 비트는 인스톨된 기능에 대응하는 기능 코드 값에 대응하고, 상기 상태 워드의 하나의 비트가 이진값 "0"을 가지면 상기 비트는 언인스톨된 기능에 대응하는 기능 코드 값에 대응하는
    인사이퍼링 또는 디사이퍼링 방법.
  2. 제 1 항에 있어서,
    상기 인스트럭션은 상기 프로세서에 의해 수행될 때, 상기 인사이퍼링 또는 디사이퍼링 결과를 제 1 오퍼랜드에 저장하는
    인사이퍼링 또는 디사이퍼링 방법.
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 기능 코드 값은 퀴리 동작에 대응하고,
    상기 인스트럭션은 오피코드를 포함하고 다른 필드는 포함하지 않는
    인사이퍼링 또는 디사이퍼링 방법.
  6. 제 1 항에 있어서,
    상기 기능 코드 값은 KM-퀴리 동작, KM-DEA 64 비트 키 암호화 동작, KM-트리플 DEA 2개의 64 비트 키 암호화 동작 또는 KM-트리플 DEA 3개의 64 비트 키 암호화 동작 중 임의의 하나에 대응하는
    인사이퍼링 또는 디사이퍼링 방법.
  7. 제 1 항에 있어서,
    상기 인스트럭션은 상기 프로세서의 상기 인스트럭션 아키텍쳐의 본래의 형식인
    인사이퍼링 또는 디사이퍼링 방법.
  8. 제 1, 2, 5 내지 7 항 중 어느 한 항에 따른 방법의 각각의 단계를 수행하는 컴퓨터 프로그램을 구비한 컴퓨터 판독 가능 기록 매체.
  9. 제 1, 2, 5 내지 7 항 중 어느 한 항에 따른 방법의 각각의 단계를 수행하는 각각의 수단을 포함하는, 컴퓨팅 환경의 저장 장치를 인사이퍼링 또는 디사이퍼링하는 장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
KR1020057018960A 2003-05-12 2004-05-04 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체 KR100745430B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/435,916 2003-05-12
US10/435,916 US7257718B2 (en) 2003-05-12 2003-05-12 Cipher message assist instructions

Publications (2)

Publication Number Publication Date
KR20060009247A KR20060009247A (ko) 2006-01-31
KR100745430B1 true KR100745430B1 (ko) 2007-08-02

Family

ID=33417043

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057018960A KR100745430B1 (ko) 2003-05-12 2004-05-04 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체

Country Status (15)

Country Link
US (6) US7257718B2 (ko)
EP (1) EP1623294B1 (ko)
KR (1) KR100745430B1 (ko)
CN (1) CN100394348C (ko)
AT (1) ATE355552T1 (ko)
AU (1) AU2004236861A1 (ko)
CA (1) CA2523241C (ko)
DE (1) DE602004005025T2 (ko)
ES (1) ES2279366T3 (ko)
GB (1) GB2413878B (ko)
IL (1) IL171906A (ko)
PL (1) PL1623294T3 (ko)
RU (1) RU2334268C2 (ko)
TW (1) TWI279692B (ko)
WO (1) WO2004099950A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802108B1 (en) * 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US20040230813A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Cryptographic coprocessor on a general purpose microprocessor
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
KR101123742B1 (ko) * 2005-12-23 2012-03-16 삼성전자주식회사 사용자 인터페이스와 소프트웨어 간의 신뢰 경로 설정 방법및 장치
US20100169637A1 (en) * 2008-06-28 2010-07-01 Visisoft, Llc Palette for real-time display of previously accessed documents
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US9179303B2 (en) * 2010-11-17 2015-11-03 Qualcomm Incorporated Methods and apparatus for transmitting and receiving secure and non-secure data
US8737604B2 (en) 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US20150234750A1 (en) * 2014-02-18 2015-08-20 Aspeed Technology Inc. Method and apparatus for addressing a memory containing different bit-length field variables
US10642987B2 (en) * 2017-01-19 2020-05-05 Ebay Inc. Cryptography based fraud tracking
US11121856B2 (en) * 2018-06-15 2021-09-14 Intel Corporation Unified AES-SMS4—Camellia symmetric key block cipher acceleration
US11706039B2 (en) 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
EP4020182A1 (en) * 2020-12-26 2022-06-29 Intel Corporation Isa accessible physical unclonable function
US11700135B2 (en) 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
JPS56121138A (en) 1980-02-28 1981-09-22 Nippon Telegr & Teleph Corp <Ntt> Buffer memory controlling system
JPS56149645A (en) * 1980-04-21 1981-11-19 Nec Corp Instruction word deciphering device of information processor
US4578530A (en) * 1981-06-26 1986-03-25 Visa U.S.A., Inc. End-to-end encryption system and method of operation
DE68926200T2 (de) 1988-08-11 1996-10-17 Ibm Geheime Datenübertragung mittels Steuervektoren
US5058164A (en) * 1990-05-03 1991-10-15 National Semiconductor Corp. Encryption of streams of addressed information to be used for program code protection
JP3086507B2 (ja) 1991-10-02 2000-09-11 旭化成工業株式会社 熱可塑性合成樹脂成形品
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5673319A (en) 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
US5765030A (en) * 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5787302A (en) 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US20010025337A1 (en) 1996-06-10 2001-09-27 Frank Worrell Microprocessor including a mode detector for setting compression mode
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
JPH11249873A (ja) 1998-03-02 1999-09-17 Mitsubishi Electric Corp ドライバ機能の動的管理方式及び動的管理方法
ATE370490T1 (de) * 1998-06-03 2007-09-15 Cryptography Res Inc Ausgewogene kryptographische rechenmethode und apparat zur schlupfminimierung in smartcards und anderen kryptosystemen
AU6381799A (en) * 1998-06-03 2000-01-10 Cryptography Research, Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
KR20020026370A (ko) 1999-08-09 2002-04-09 러셀 비. 밀러 메시지 인증 코드를 발생시키기 위한 방법 및 장치
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
US7278016B1 (en) * 1999-10-26 2007-10-02 International Business Machines Corporation Encryption/decryption of stored data using non-accessible, unique encryption key
US6542981B1 (en) * 1999-12-28 2003-04-01 Intel Corporation Microcode upgrade and special function support by executing RISC instruction to invoke resident microcode
CA2305078A1 (en) * 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
JP4098478B2 (ja) * 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7360076B2 (en) * 2001-06-13 2008-04-15 Itt Manufacturing Enterprises, Inc. Security association data cache and structure
US7266703B2 (en) * 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US20030002666A1 (en) 2001-06-13 2003-01-02 Takahashi Richard J. Method and apparatus for creating a message digest using a parallel, one-way hash algorithm
US20030028765A1 (en) 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US6996725B2 (en) * 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
US6765030B2 (en) 2002-03-22 2004-07-20 The University Of North Carolina At Chapel Hill Methods of forming polymeric structures using carbon dioxide and polymeric structures formed therapy
US7254696B2 (en) * 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
CN100539289C (zh) 2006-05-23 2009-09-09 索尼株式会社 电池

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IBM PCI Cryptographic Coprocessor CCA Basic Services Reference and Guide for IBM 4758 Models 002 and 023 with Release 2.40

Also Published As

Publication number Publication date
US20120254628A1 (en) 2012-10-04
US8103860B2 (en) 2012-01-24
EP1623294B1 (en) 2007-02-28
CA2523241C (en) 2011-09-20
DE602004005025T2 (de) 2007-08-09
RU2005121915A (ru) 2007-06-20
IL171906A0 (en) 2006-04-10
KR20060009247A (ko) 2006-01-31
CA2523241A1 (en) 2004-11-18
US8661231B2 (en) 2014-02-25
CN100394348C (zh) 2008-06-11
GB2413878B (en) 2006-04-05
US8261048B2 (en) 2012-09-04
DE602004005025D1 (de) 2007-04-12
GB0516236D0 (en) 2005-09-14
IL171906A (en) 2010-11-30
US7720220B2 (en) 2010-05-18
CN1764881A (zh) 2006-04-26
AU2004236861A1 (en) 2004-11-18
US9424055B2 (en) 2016-08-23
RU2334268C2 (ru) 2008-09-20
WO2004099950A1 (en) 2004-11-18
TW200511040A (en) 2005-03-16
US20140114641A1 (en) 2014-04-24
ATE355552T1 (de) 2006-03-15
ES2279366T3 (es) 2007-08-16
US7257718B2 (en) 2007-08-14
US20120096283A1 (en) 2012-04-19
TWI279692B (en) 2007-04-21
PL1623294T3 (pl) 2007-07-31
GB2413878A (en) 2005-11-09
US20080201554A1 (en) 2008-08-21
US20090164803A1 (en) 2009-06-25
US20040230816A1 (en) 2004-11-18
EP1623294A1 (en) 2006-02-08

Similar Documents

Publication Publication Date Title
KR100745430B1 (ko) 인사이퍼링 또는 디사이퍼링 방법, 장치 및 컴퓨터 판독 가능 기록 매체
JP4817185B2 (ja) 埋め込み符号を持ったコンピュータ命令値フィールド
US7770024B2 (en) Security message authentication instruction
EP1684167A2 (en) Method of processing signed displacement computer instruction

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130627

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150625

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170628

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 12