KR20110132204A - 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스 - Google Patents

암호 하드웨어 서비스를 위한 암호 독립적 인터페이스 Download PDF

Info

Publication number
KR20110132204A
KR20110132204A KR1020107022302A KR20107022302A KR20110132204A KR 20110132204 A KR20110132204 A KR 20110132204A KR 1020107022302 A KR1020107022302 A KR 1020107022302A KR 20107022302 A KR20107022302 A KR 20107022302A KR 20110132204 A KR20110132204 A KR 20110132204A
Authority
KR
South Korea
Prior art keywords
cryptographic
transactions
hardware
independent
wrapped
Prior art date
Application number
KR1020107022302A
Other languages
English (en)
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 KR20110132204A publication Critical patent/KR20110132204A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Bus Control (AREA)

Abstract

암호 독립적 암호 하드웨어 서비스가 개시되어 있다. 암호 독립적 트랜잭션들이 입력 슬롯들 내로 수신된다(202). 입력 슬롯들은 상기 트랜잭션들을 유지하기 위하여 FIFO들을 포함한다. 상기 트랜잭션들은 암호 독립적 형태로부터 암호 종속적 형태로 변환되고(206), 그 타이밍에, FIFO들로부터 제거된다. 암호 특정 하드웨어에 의한 암호 프로세싱 이후에, 결과들이 FIFO들로 송신된다(212). 다수의 FIFO들 및 암호 하드웨어가 사용되어, 다수의 암호 기능들이 병렬적이고 동시적으로 수행될 수 있다.

Description

암호 하드웨어 서비스를 위한 암호 독립적 인터페이스{CIPHER INDEPENDENT INTERFACE FOR CRYPTOGRAPHIC HARDWARE SERVICE}
관련 출원과의 상호-참조
본 출원은 전문이 본원이 개시하고 제시하는 모든 것에 대하여 명확하게 참조로 통합되어 있는 2009년 2월 26일자로 출원되고, 명칭이 "Cipher Independent Interface for Cryptocraphic Hardware Service"인 미국 가출원 번호 제61/155,864호를 기반으로 하고 미국 가출원 번호 제61/155,864호의 이점을 주장한다.
본 발명은 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스에 관한 것이다.
현대의 애플리케이션-특정 집적 회로(Application-Specific Integrated Circuit: ASIC)들은 점점 더 큰 기능을 통합한다. 이러한 소위 SoC(System-on-a-Chip)는 컴퓨터(computer) 또는 다른 전자 시스템의 많은 구성요소들을 단일 집적 회로 내로 통합한다. SoC 설계들의 하나의 장점은 상기 설계들이 통상적으로 더 적은 전력을 소모하고 상기 설계들이 대체할 다중칩 시스템보다 더 적은 비용을 갖는다는 것이다. 더욱이, SoC는 주어진 시스템 내에 더 적은 패키지(package)들이 존재하기 때문에 전체 시스템 제조 비용을 감소시키는 것을 돕는다.
SoC 내로 통합된 기능들 중 일부는 그래픽(graphic)들, 이더넷 매체 액세스 제어 계층(MAC), 유니버설 시리얼 버스(Universal Serial Bus: USB), 메모리 제어기들, 및 다른 애플리케이션-특정 논리를 포함한다. ASIC 내로 통합될 수 있는 또 다른 계산 집약적 기능은 하드웨어 암호 기능 블록들이다. 암호 모듈(crpytography module)들은 다양한 애플리케이션들에 대해 현대의 ASIC들에서 점점 더 유비쿼터스(ubiquitous)화 된다.
전형적으로, 이러한 암호 모듈들은 상이한 표준들을 지원한다. 상기 암호 모듈들은 전형적으로 상이한 인터페이스들을 사용한다. 특히, 이러한 암호 모듈들은 종종 입력/출력 정보에 대해 매우 구체적이고 정확한 타이밍 스케줄(timing schedule)을 필요로 할 수 있다.
본 발명의 목적은 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스를 제공하는 것이다.
그러므로, 본 발명의 실시예는 암호 독립적 암호 트랜잭션(cipher independent crytographic transaction)들을 수신하는 다수의 입력 슬롯(input slot)들; 암호 독립적 암호 트랜잭션들을 수신하고, 제 1 암호 종속적 트랜잭션들을 상기 제 1 암호 하드웨어로 송신하는, 제 1 암호 하드웨어를 포함하는 제 1 랩핑된 암호 블록으로서, 상기 제 1 랩핑된 암호 블록은 상기 암호 독립적 암호 트랜잭션들을 상기 제 1 암호 종속적 트랜잭션들로 변환하고 상기 제 1 암호 하드웨어로부터 수신된 제 1 암호 종속적 결과 트랜잭션들을 암호 독립적인 결과 트랜잭션들로 변환하는, 상기 제 1 랩핑된 암호 블록(wrapped cipher block); 및 상기 제 1 랩핑된 암호 블록과 연관된 상기 암호 독립적 결과 트랜잭션들을 수신하는 복수의 슬롯들을 갖는 제 1 출력 FIFO를 포함하는 암호 하드웨어 시스템을 포함할 수 있다.
그러므로, 본 발명의 실시예는 암호 독립적 암호 트랜잭션들을 수신하는 단계; 제 1 암호 하드웨어를 포함하는 제 1 랩핑된 암호 블록 내로 상기 암호 독립적 암호 트랜잭션들을 수신하는 단계; 상기 암호 독립적 암호 트랜잭션들을 제 1 암호 종속적 트랜잭션들로 변환하는 단계; 제 1 암호 종속적 트랜잭션들을 상기 제 1 암호 하드웨어로 송신하는 단계; 상기 제 1 암호 하드웨어로부터 수신된 제 1 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환하는 단계; 및 제 1 출력 FIFO 내로 상기 암호 독립적 결과 트랜잭션들을 수신시키는 단계를 포함하는 암호 서비스들을 제공하는 방법을 포함할 수 있다.
본 발명에 의하면, 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스가 제공된다.
도 1은 암호 하드웨어 시스템의 블록도.
도 2는 암호 하드웨어 서비스들을 제공하는 방법의 흐름도.
도 3은 암호 하드웨어 시스템을 동작시키는 방법의 흐름도.
도 4는 암호 특정 트랜잭션 포맷 및 타이밍으로부터 수퍼 랭귀지(Super Language)에서의 타이밍 독립적 트랜잭션을 도출하는 도면.
도 5는 입력 FIFO들에 대한 예시적인 수퍼 랭귀지 비트 레벨 기술(Super Language bit level description)을 도시한 도면.
도 6은 출력 FIFO들에 대한 예시적인 수퍼 랭귀지 비트 레벨 기술을 도시한 도면.
도 1은 암호 하드웨어 시스템의 블록도이다. 암호 하드웨어(100)는 입력 슬롯(110), 입력 슬롯(111), 입력 슬롯(112), 입력 스위치(115), 디스패치(dispatch)(120), 랩핑된 암호 블록(130), 랩핑된 암호 블록(131), 출력 스위치(140), 출력 FIFO(150), 출력 FIFO(151), 및 출력 FIFO(152)를 포함한다. 랩핑된 암호 블록(130)은 입력 변환기(130-1), 암호 하드웨어(130-2), 출력 변환기(130-3), 및 제어부(130-4)를 포함한다. 랩핑된 암호 블록(131)은 입력 변환기(131-1), 암호 하드웨어(131-2), 출력 변환기(131-3), 및 제어부(131-4)를 포함한다. 암호 하드웨어(100)의 요소들 각각은 암호 하드웨어(100)의 다른 요소들 각각에 동작적으로 결합된다.
도 1에 도시된 바와 같이, 입력 슬롯들(110 내지 112)은 명령들 및 데이터를 수신하기 위하여 시스템에 동작적으로 결합된다. 입력 슬롯들(110 내지 112)은 디스패치(120)에 동작적으로 결합된다. 입력 슬롯들(110 내지 112)은 입력 스위치(115)에 동작적으로 결합된다. 입력 스위치(115)는 디스패치(120)에 동작적으로 결합된다. 입력 스위치(115)는 랩핑된 암호 블록(130) 및 랩핑된 암호 블록(131)에 동작적으로 결합된다. 특히, 입력 스위치(115)는 입력 변환기(130-1) 및 입력 변환기(131-1)에 동작적으로 결합된다. 따라서, 입력 슬롯들(110 내지 112)에서 발생되는 암호 트랜잭션들은 랩핑된 암호 블록(130), 랩핑된 암호 블록(131), 또는 추가적인 랩핑된 암호 블록들(도시되지 않음)로 라우팅(routing)될 수 있다. 실시예에서, 입력 스위치(115)는 크로스포인트 스위치(crosspoint switch) 또는 다른 N×M 포트 라우팅 디바이스일 수 있고, 여기서 N은 입력 포트들의 수이고, M은 출력 포트들의 수이다. N은 전형적으로 입력 슬롯들(110 내지 112)의 수에 대응할 것이다. M은 전형적으로 랩핑된 암호 블록들(130 및 131)의 수에 대응할 것이다.
출력 FIFO들(150 내지 152)은 결과들 및/또는 다른 메시지들을 송신하기 위하여 시스템에 동작적으로 결합된다. 출력 FIFO들(150 내지 152)은 출력 스위치(140)에 동작적으로 결합된다. 출력 FIFO들(150 내지 152)은 디스패치(120)에 동작적으로 결합된다. 출력 스위치(140)는 디스패치(120)에 동작적으로 결합된다. 랩핑된 암호 블록들(130 및 131)은 출력 스위치(140)에 동작적으로 결합된다. 특히, 출력 스위치(140)는 출력 변환기(130-3) 및 출력 변환기(131-3)에 동작적으로 결합된다. 따라서, 랩핑된 암호 블록(130 및 131)에 의해 생성된 암호 결과 트랜잭션들이 출력 FIFO들(150 내지 152) 중 어느 하나로 라우팅될 수 있다. 실시예에서, 출력 스위치(140)는 크로스포인트 스위치 또는 다른 M×Q 포트 라우팅 디바이스일 수 있고, 여기서, M은 입력 포트들의 수이고, Q는 출력 포트들의 수이다. M은 전형적으로 랩핑된 암호 블록들(130 및 131)의 수에 대응할 것이다. Q는 전형적으로 출력 FIFO들(150 내지 152)의 수에 대응할 것이다.
입력 변환기(130-1)는 암호 하드웨어(130-2)에 동작적으로 결합된다. 암호 하드웨어(130-2)는 출력 변환기(130-3)에 동작적으로 결합된다. 입력 변환기(130-1), 암호 하드웨어(130-2), 및 출력 변환기(130-3)는 모두 제어부(130-4)에 동작적으로 결합된다. 따라서, 제어부(130-4)는 입력 변환기(130-1), 암호 하드웨어(130-2), 및 출력 변환기(130-3)의 동작 및 데이터 입력과 출력을 관리할 수 있다. 제어부(130-4) 및 입력 변환기(130-1)는 암호 종속적 트랜잭션들을 암호 종속적 타이밍을 사용하여 암호 하드웨어(130-2)로 송신하도록 협동할 수 있다. 즉, 제어부(130-4) 및 입력 변환기(130-1)는 암호 하드웨어(130-2)가 필요로 하는 형태 및 타이밍으로 데이터 및 제어 신호들을 암호 하드웨어(130-2)로 송신하도록 협동할 수 있다.
입력 변환기(131-1)는 암호 하드웨어(131-2)에 동작적으로 결합된다. 암호 하드웨어(131-2)는 출력 변환기(131-3)에 동작적으로 결합된다. 입력 변환기(131-1), 암호 하드웨어(131-2), 및 출력 변환기(131-3)는 모두 제어부(131-4)에 동작적으로 결합된다. 따라서, 제어부(131-4)는 입력 변환기(131-1), 암호 하드웨어(131-2), 및 출력 변환기(131-3)의 동작 및 데이터 입력과 출력을 관리할 수 있다. 제어부(131-4) 및 입력 변환기(131-1)는 암호 종속적 트랜잭션들을 암호 종속적 타이밍을 사용하여 암호 하드웨어(131-2)로 송신하도록 협동할 수 있다. 즉, 제어부(131-4) 및 입력 변환기(131-1)는 암호 하드웨어(131-2)가 필요로 하는 형태 및 타이밍으로 데이터 및 제어 신호들을 암호 하드웨어(131-2)로 송신하도록 협동할 수 있다.
실시예에서, 입력 슬롯들(110 내지 112)은 입력 FIFO들을 포함할 수 있다. 이러한 입력 FIFO들은 시스템으로부터 암호 독립적 암호 트랜잭션들을 수신할 수 있다. 게다가, 입력 슬롯들(110 내지 112)은 아직 시작되지 않은 암호 트랜잭션들에 대한 우선순위를 수신 및/또는 계산할 수 있다. 복수의 입력 슬롯들(110 내지 112)이 존재하기 때문에, 다수의 랩핑된 암호 블록들(130 및 131)이 병렬적이고 독립적으로 액세스될 수 있다. 병렬적이고 독립적으로 수행될 수 있는 다수의 트랜잭션들의 수는 입력 슬롯들(110 내지 112)에서의 FIFO들의 수 및 랩핑된 암호 블록들(130 및 131)의 수에 의해 제한된다. 따라서, 랩핑된 암호 블록(131)이 입력 슬롯(112)으로부터 암호 독립적 암호 트랜잭션들을 수신 및 프로세싱하고 있는 동시에, 랩핑된 암호 블록(130)이 입력 슬롯(110)으로부터 암호 독립적 암호 트랜잭션들을 수신 및 프로세싱할 수 있다.
디스패치(120)는 어느 랩핑된 암호 블록들(130 및 131) 및 어느 출력 FIFO들(150 내지 152)이 사용중인지를 인식할 수 있다. 디스패치(120)는 입력 슬롯들(110 내지 112), 랩핑된 암호 블록들(130 및 131), 및 출력 FIFO들(150 내지 152) 사이의 대응성(correspondence)을 인식할 수 있다. 따라서, 디스패치(120)는 입력 스위치(115) 및 출력 스위치(140)를 제어할 수 있다. 디스패치(120)는 시작할 암호 트랜잭션들을 선택하기 위하여 입력 슬롯들(110 내지 112)을 관측할 수 있고, 또한 암호 결과 트랜잭션들을 수신하기 위하여 출력 FIFO들(150 내지 152)을 할당할 수 있다.
입력 스위치(115)는 입력 슬롯들(110 내지 112) 및 랩핑된 암호 블록(130 및 131) 사이의 접속들을 제공한다. 입력 스위치(115)는 또한 랩핑된 암호 블록들(130 및 131)로부터 상태 신호들을 수신할 수 있다. 예를 들어, 입력 스위치(115)는 제어부(130-4) 및 제어부(131-4)로부터 트랜잭션 완료 표시자(transaction complete indicator)들을 수신할 수 있다. 응답으로, 입력 스위치(115)는 입력 슬롯들(110 내지 112)이 재사용될 수 있다는 표시자들을 디스패치(120)로 송신할 수 있다.
랩핑된 암호 블록들(130 및 131)은 각각의 특정 암호 하드웨어(130-2 및 131-2)에 대해 개별적으로 전개될 수 있다. 랩핑된 암호 블록들(130 및 131)은 균등한 데이터 및 신호 인터페이스를 제공한다. 이 균등한 데이터 및 신호 인터페이스는 입력 및 출력 둘 모두 상에서 표준 FIFO-형 인터페이스들을 포함할 수 있다. 표준 인터페이스들은 랩핑된 암호 블록(130 및 131)에 의해 수행되는 암호 기능(예를 들어, 암호 코드)을 결정하는 근원적인 암호 하드웨어(130-2 및 131-2)에 관계없이, 암호 독립적 암호 트랜잭션들이 입력 슬롯들(110 내지 112)에서 발생되도록 하고, 랩핑된 암호 블록들(130 및 131)로 라우팅되도록 한다.
실시예에서, 근원적인 암호 하드웨어(130-2 및 131-2)는 상이한 암호들 및 동일한 암호를 구현할 수 있다. 게다가, 암호 하드웨어(130-2 및 131-2)는 상이한 타이밍 요건들을 가질 수 있다. 그러나, 입력 슬롯들(110 내지 112)에서의 FIFO들 및 출력 FIFO들(150 내지 152)은 암호 하드웨어(130-2 및 131-2)의 입력 및 타이밍 요건들에 관계없이, 암호 독립적 암호 트랜잭션들 및 암호 독립적 결과 트랜잭션들이 각각 입력 슬롯들(110 내지 112) 및 출력 FIFO들(150 내지 152)로 기록되도록 하고, 입력 슬롯들(110 내지 112) 및 출력 FIFO들(150 내지 152)로부터 판독되도록 한다.
제어부(130-4 및 131-4)는 암호 하드웨어(130-2 및 131-2)를 각각 제어한다. 제어부(130-4 및 131-4)는 또한 암호 하드웨어(130-2 및 131-2)가 이해할 수 있는 형태 및 타이밍으로 암호 독립적 암호 트랜잭션을 프로세싱하도록 입력 변환기들(130-1 및 131-1)을 제어한다. 제어부(130-4 및 131-4)는 또한 암호 하드웨어(130-2 및 131-2)로부터 수신된 암호 종속적 결과들을 출력 FIFO들(150 내지 152) 및 나머지 시스템이 이해할 수 있는 암호 독립적 형태 및 타이밍으로 프로세싱하도록 출력 변환기들(130-3 및 131-3)을 제어한다.
입력 스위치(115)는 출력 FIFO들(150 내지 152) 및 랩핑된 암호 블록들(130 및 131) 사이의 접속들을 제공한다. 출력 FIFO들(150 내지 152)은 랩핑된 암호 블록들(130 및 131)로부터 출력 스위치(140)를 통하여 암호 독립적 결과 트랜잭션들을 수용한다. 출력 FIFO들(150 내지 152)은 또한 자신들이 가득 찼다는 또는 거의 가득 찼다는 표시를 제공할 수 있다. 이 표시는 출력 스위치(140)에 의해 랩핑된 암호 블록들(130 및 131)로 중계될 수 있다. 이 표시는 암호 하드웨어(130-2 및 131-2)가 실행되는 것을 중단시킬 수 있다. 암호 하드웨어(130-2 및 131-2)를 중단시킴으로써, 출력 FIFO들(150 내지 152)이 오버플로잉(overflowing)되지 않게 된다.
상술된 암호 하드웨어(100)는 다수의 암호 트랜잭션들을 동시적으로 실행시킬 수 있는 다수의 I/O 채널들을 제공한다. 암호 독립적 암호 트랜잭션들을 수신하는 FIFO-기반 입력 슬롯들(110 내지 112)을 사용함으로써, 상세한 시간 스케줄링 및 데이터 포맷팅이 필요하지 않다. 암호 독립적 암호 트랜잭션들은 모든 암호들 및 암호 하드웨어(130-2 및 131-2)에 균등한 인터페이스를 제공한다. 따라서, 입력 슬롯(110)이 랩핑된 암호 블록(130)에 암호 독립적 암호 트랜잭션들을 제공하고 있고 결과들이 출력 FIFO(150)에서 발생되고 있는 동안, 동시적으로, 입력 슬롯(111)은 랩핑된 암호 블록(131)에 암호 독립적 암호 트랜잭션들을 제공하고 있고 결과들이 출력 FIFO(152)에서 발생될 수 있다. 실시예에서, 상기 균등한 인터페이스는 8-비트의 제어 및 64-비트의 데이터를 포함할 수 있다.
암호 하드웨어(100)는 첨부된 암호 블록들의 세트, 각각의 개별적인 암호의 파라미터(parameter)들, 입력/출력 채널들의 수, FIFO들의 크기들, 및 암호들 및 FIFO들 사이의 토폴로지(topology)(즉, 전용/공유/혼합 접속들)에 걸쳐 균등한 인터페이스를 제공한다. 게다가, 암호 독립적 암호 트랜잭션들은 이진 또는 니모닉 랭귀지(binary or mnemonic language)들 중 하나로 표현될 수 있다. 제안된 아키텍처(architecture) 및 기술적 해결책은 매우 편리하고 유연하다고 가정되고, 또한 통합이 용이하다.
산업계에서 이용 가능한 하드웨어에서 충분히 결합된 암호 서비스를 제공하는 단지 몇 개의 이와 같은 암호 모듈들이 존재한다는 점이 주의되어야 한다. 매우 경쟁적인 암호 라이브러리 블록(crypto library block)들과 함께, 암호 하드웨어(100)는 기존 및 개발되도록 계획된 다양한 애플리케이션들에 대한 보안 요구들 및 성장하는 데이터 보호 시장 성공들에 대한 모멘텀(momentum)이 획득되도록 한다.
암호 하드웨어(100)의 아키텍처는 암호 블록들에서 드롭-인 해결책(drop-in solution)을 지원한다. 디스패처(120)는 동시 트랜잭션들을 위한 유연한 다중 스트림 입력/출력 채널(multi stream input/output channel)들을 허용한다. 디스패처(120)는 트랜잭션 우선순위들, 데드락 핸들링(deadlock handling), 멀티쓰레딩(multithreading), 및 취소를 지원 및 취급한다.
암호 하드웨어(100)의 복잡한 구조의 개발은 포괄적인 디버깅 및 테스팅 시스템(debugging and testing system)의 정교화(elaborating)를 필요로 할 수 있다. 따라서, 빌트-인 테스팅(built-in testing), 디버깅 지원, 에러 검출, 및 에러 복구 능력들이 제공된다.
제안된 암호 하드웨어(100)의 아키텍처 및 하드웨어 구현예는 다양한 하드웨어 및/또는 펌웨어 애플리케이션들/프로토콜들에 대한 다수이고 결합된 암호 서비스를 제공한다. 지원된 암호 서비스들은 소위 플레잉 카드(Playing card)들에 의해 통합된 수퍼 랭귀지로 편리하고 용이하게 표현될 수 있다. 플레잉 카드들은 암호 직무 기술(crypto job description)들에 대한 본질적으로 편리한 템플릿(templete)들이다.
GCM(Galois Counter Mode) 모드에서 AES 암호를 구현하는 암호 하드웨어(100)를 구동시키는데 사용될 수 있는 암호 독립적 암호 트랜잭션들의 예가 표 1에서 제공된다. 이것은 입력 변환기들(130-1 및 131-1)에 의해 수신될 수 있는 예이다. 표 1에서, 각각의 세미콜론(";")이 클록 사이클(clock cycle)을 나타낸다는 점을 주의하라. 따라서, BEGIN_TRANS 및 제 1 SEND_KEY_0 트랜잭션 사이에, 1 클록 사이클만이 존재한다.
Figure pct00001
GCM 모드에서 AES 암호를 구현하는 암호 하드웨어를 구동시키는 (니모닉 형태의) 암호 종속적 암호 트랜잭션들의 예가 표 2에서 제공된다. 이것은 암호 독립적 암호 트랜잭션들이 입력 변환기들(130-1 및 131-1)에 의해 변환된 이후에 암호 하드웨어(130-2 및 131-2)에 의해 수신될 수 있는 데이터의 예이다. 표 2에서, 각각의 세미콜론(";")이 클록 사이클을 나타낸다는 점을 주의하라. 따라서, 예를 들어, save_key 및 제 1 make_mask 트랜잭션 사이에, 15개의 클록 사이클들이 존재한다. 따라서, 입력 변환기들(130-1 및 131-1)에 의해 수행된 변환은 비트 포맷 및 시간 둘 모두에서 변환하도록 동작한다. 마찬가지로, 출력 변환기들(130-3 및 131-3)은 비트 포맷 및 시간 둘 모두에서 암호 하드웨어(130-2 및 131-2)의 출력들을 변환하도록 동작할 수 있다.
Figure pct00002
도 2는 하드웨어 암호 서비스들을 제공하는 방법의 흐름도이다. 도 2에 도시된 단계들은 암호 하드웨어(100)의 하나 이상의 요소들에 의해 수행될 수 있다. 암호 독립적 암호 트랜잭션들이 수신된다(202). 예를 들어, 입력 슬롯(110)이 암호 독립적 암호 트랜잭션들을 수신할 수 있다. 입력 슬롯(110)은 암호 독립적 암호 트랜잭션들을 FIFO 내로 수신할 수 있다. 암호 독립적 암호 트랜잭션들은 암호 하드웨어를 포함하는 랩핑된 암호 블록 내로 수신된다(204). 예를 들어, 랩핑된 암호 블록(130)은 입력 스위치(115)를 통하여 입력 슬롯(110)으로부터 암호 독립적 암호 트랜잭션들을 수신할 수 있다. 랩핑된 암호 블록(130)은 암호 하드웨어(130-2)를 포함할 수 있다.
암호 독립적 암호 트랜잭션들이 암호 종속적 트랜잭션들로 변환된다(206). 예를 들어, 입력 변환기(130-1)가 암호 독립적 암호 트랜잭션들을 암호 하드웨어(130-2)에 적합한 암호 종속적 트랜잭션들로 변환하도록 한다. 실시예에서, 암호 독립적 암호 트랜잭션들로부터 암호 종속적 암호 트랜잭션들로의 이 변환은 형태, 포맷, 비트-정렬(bit-ordering), 명령 시퀀스, 및/또는 타이밍의 변환을 포함할 수 있다. 즉, 입력 변환기(130-1)는 입력 슬롯(110)에 저장되거나 입력 슬롯(110)으로부터 수신된 암호 독립적 암호 트랜잭션들을 암호 하드웨어(130-2)를 구동시키는데 적합한 데이터 및 제어 신호들로 변환하기 위하여 임의의 형태의 상태 기계 또는 다른 논리를 구현한다.
암호 종속적 트랜잭션들이 암호 하드웨어로 송신된다(208). 예를 들어, 입력변환기(130-1)로부터의 암호 종속적 트랜잭션들 및 제어부(130-4)로부터의 제어 신호들이 암호 하드웨어(130-2)로 송신될 수 있다. 이러한 암호 종속적 트랜잭션들 및 제어 신호들은 암호 하드웨어로 하여금 자신의 암호 기능들을 수행하도록 할 수 있다. 이러한 암호 기능들은 암호 하드웨어로 하여금 암호 종속적 결과들을 생성하도록 할 수 있다. 이러한 암호 종속적 결과들은 암호 종속적 결과 트랜잭션들 및/또는 제어 신호들을 포함하거나 암호 종속적 결과 트랜잭션들 및/또는 제어 신호들일 수 있다.
암호 하드웨어로부터 수신된 암호 종속적 결과 트랜잭션들이 암호 독립적 결과 트랜잭션들로 변환된다(210). 예를 들어, 출력 변환기(130-3)는 암호 하드웨어(130-2)로부터 수신된 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환할 수 있다. 암호 독립적 결과 트랜잭션들이 출력 FIFO 내로 수신된다(212). 예를 들어, 출력 FIFO(150)이 출력 스위치(140)를 통하여 출력 변환기(130-3)로부터 암호 독립적 결과 트랜잭션들을 수신할 수 있다.
도 3은 암호 하드웨어 시스템을 동작시키는 방법의 흐름도이다. 도 3에 도시된 단계들은 암호 하드웨어(100)의 하나 이상의 요소들에 의해 수행될 수 있다. 직무 요청이 입력 슬롯 내로 발생된다(302). 예를 들어, 암호 독립적 직무 요청이 입력 슬롯(110) 내로 발생될 수 있다. 디스패치 유닛은 시작 라벨 및 현재 우선순위를 수신한다(304). 예를 들어, 디스패치(120)는 입력 슬롯(110)으로부터 우선순위의 표시 및 시작 신호를 수신할 수 있다.
디스패치 유닛은 입력 및 출력 스위치들을 구성한다(306). 예를 들어, 디스패치(120)는 암호 독립적 암호 트랜잭션들을 입력 슬롯(110)으로부터 랩핑된 암호 블록(130)으로 라우팅하도록 입력 스위치(115)를 구성할 수 있다. 디스패치(120)는 암호 독립적 결과 트랜잭션들을 랩핑된 암호 블록(130)으로부터 출력 FIFO(150)로 라우팅하도록 출력 스위치(140)를 구성할 수 있다.
랩핑된 암호 블록 제어부가 시작 신호를 수신한다(308). 예를 들어, 제어부(130-4)가 자신이 시작 신호로서 해석할 "시작" 트랜잭션을 수신할 수 있다. 입력 변환기는 수신된 암호 독립적 트랜잭션들을 암호 종속적 트랜잭션들로 변환하고, 암호 종속적 트랜잭션들을 암호 하드웨어로 송신한다(310). 예를 들어, 제어부(130-4)가 판독 요청들을 입력 슬롯(110)으로 송신할 수 있다. 이것은 암호 독립적 암호 트랜잭션들로 하여금 입력 슬롯(110)으로부터 입력 변환기(130-1)로 송신되도록 할 수 있다. 입력 변환기(130-1)는 이어서, 수신된 암호 독립적 트랜잭션들을 암호 종속적 트랜잭션들로 변환한다. 암호 종속적 트랜잭션들 및/또는 제어 신호들이 암호 하드웨어(130-2)로 송신될 수 있다.
암호 하드웨어는 암호 기능을 수행한다(312). 예를 들어, 암호 하드웨어(130-2)가 암호 기능을 수행할 수 있다. 예에서, 암호 하드웨어는 AES, TDES, Kasumi, SHA, RSA/ECC 또는 또 다른 암호 기능을 수행할 수 있다. 출력 변환기는 수신된 암호 종속적 트랜잭션들을 암호 독립적 트랜잭션들로 변환하고, 암호 독립적 트랜잭션들을 출력 FIFO로 송신한다(314). 예를 들어, 출력 변환기(130-3)가 암호 하드웨어(130-2)로부터 수신된 제어 신호들 및/또는 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환할 수 있다. 이러한 암호 독립적 결과 트랜잭션들이 출력 스위치(140)를 통하여 출력 FIFO(150)로 송신될 수 있다.
암호 하드웨어는 완료 신호(done signal)를 송신한다(316). 예를 들어, 암호 하드웨어(130-2)가 암호 종속적 트랜잭션 또는 이것이 완료된 것을 나타내는 제어 신호를 송신할 수 있다. 디스패치 유닛은 입력 및 출력 스위치들을 분리한다(318). 예를 들어, 디스패치(120)가 입력 슬롯(110)을 랩핑된 암호 블록(130)으로부터 분리하도록 입력 스위치(115)에 명령할 수 있다. 디스패치(120)는 또한 랩핑된 암호 블록(130)을 출력 FIFO(150)로부터 분리하도록 출력 스위치(140)에 명령할 수 있다. 실시예에서, 디스패치(120)로 송신된 2개의 표시자들이 존재할 수 있다. 제 1 표시자는 암호 독립적 암호 트랜잭션들 중 최종 트랜잭션이 입력 변환기로 송신될 때 송신될 것이다. 그 포인트에서, 디스패치(120)는 더 많은 암호 독립적 암호 트랜잭션들을 수신하도록 입력 슬롯을 릴리스(release)할 수 있다. 제 2 표시자는 최종적인 암호 독립적 결과 트랜잭션들이 출력 변환기를 빠져나갈 때 송신될 것이다.
실시예에서, 특정 암호/해셔(Hasher)와 관련된 트랜잭션들은 지원된 플레잉 카드를 따른다. 미스매칭은 에러를 초래한다. 즉, 제어부(130-4 또는 131-4)는 에러 상태(ERR)로 진행할 것이며, ERROR 출력 신호가 발행될 수 있다. 에러 상태로부터 기능을 재개하기 위하여, CANCEL 입력 신호가 송신될 필요가 있다. 이것은 암호 하드웨어(100)로 하여금 다음: (1) 입력 슬롯(110 내지 112)에서의 입력 FIFO로부터 현재의 트랜잭션 데이터의 나머지를 제거하는 것; (2) "중단/취소" 조합(예를 들어, ENABLE-1, VALID=0, START=1)을 랩핑된 암호 블록(130 및 131)으로 송신하는 것을 행하도록 한다. 랩핑된 암호 블록(130 및 131)은 (1) ERR_END_TRANS 블록을 출력 FIFO(150 내지 152) 내로 송신하고 DONE_WRITE 신호를 발행하고; (2) 암호 하드웨어(130-2 및 131-2)를 새로운 트랜잭션들을 프로세싱하기 시작할 준비가 된 초기 상태로 설정하고; (3) 제어부(130-4 및 131-4)의 내부 상태를 자신의 초기 상태로 변화시킨다.
개별적인 암호 하드웨어 유닛들은 매우 복잡한 I/O 인터페이스 포맷들 및 타이밍 스케줄들을 사용할 수 있다. 이의 예가 표 3의 제 1 컬럼(column)에서 제공된다. 실시예에서, 데이터 흐름은 타이밍 스케줄 없이 FIFO들을 통하여 송신된 64-비트 블록들에 의해 기술된다. 이들은 opcode들 및 몇 개의 플레그(flag)들(예를 들어, last={0,1} 또는 size={1,...,8})을 포함하는 8-비트 제어 신호들을 통하여 마크업 랭귀지(markup language)로 포맷될 수 있다. 입력 및 출력 FIFO들에 대한 이 마크업의 예들이 표 3의 제 2 및 제 3 컬럼들에서 제공된다.
Figure pct00003
표 3에서, BEGIN_TRANS 및 END_TRANS(및 이들의 에러 변형들)은 트랜잭션을 "랩핑"하고 이를 일반적인 용어로 정의하는 2개의 특수한 명령들이다. 이러한 트랜잭션들은 다음의 인자(argument)들: (1) ID--특정 트랜잭션과 연관된 사용자-정의된 정수; (2) 우선순위--트랜잭션으로 할당된 사용자-정의된 정수; (3) 시나리오(scenario)--암호를 규정하는 미리규정된 정수; (4) 파라미터들--암호의 특정 모드(예를 들어, 암호화 대 복호화 모드, TAG가 발생되어야 하는 것, 등)를 지정하는 미리규정된 정수(또는 제어 비트들의 세트)를 가질 수 있다.
실시예에서, 모든 유형들의 암호의 입력 데이터는 64-비트 블록들로 분할된다. 이러한 블록들은 3개의 유형들의 섹션들: (1) SEND_KEY 섹션들; (2) SEND_IV 섹션들; (3) SEND_DATA 섹션들로 구성될 수 있다. 각각의 유형은 4개의 개별적인 변형들에 의해 표현될 수 있다. 이들은 예를 들어, 마스터 키(master key) 및 2차 키(secondary key)를 지정할 때 사용될 수 있다. 예를 들어, 이러한 변형들의 예들은: (1) SEND_KEY_0 섹션; (2) SEND_KEY_1 섹션; (3) SEND_KEY_2 섹션; 및 (4) SEND_KEY_3 섹션이다.
이러한 섹션들/변형들을 인코딩하기 위하여, 8-비트 명령어 버스의 4개의 최하위 비트(least significant bit)들을 사용한다: opcode=COMMAND[3:0](BEGIN_TRANS 및 END_TRANS에 대한 코드들이 동일한 코드 공간을 공유할 수 있다). 섹션들의 세트들 및 섹션들의 순서는 시나리오에 따른다. 전형적으로, 시나리오는 사용된 섹션들의 세트 및 순서 둘 모두를 엄격하게 지정한다. 각각의 섹션에서의 최종 명령은 "last=1"로서 특수 플레그에 의해 마킹(marking)될 수 있는 반면, 모든 다른 명령들은 "last=0"을 가져야 한다. "last" 비트는 COMMAND[4]이다. "aux"(aux=COMMAND[7:5])라고 칭해지는 3개의 최상위 비트(most significant bit)들이 길이를 코딩하는데 사용될 수 있다. 예를 들어, 바이트 입도(byte granularity)에서 불완전한 데이터 블록들을 송신할 때, 0은 완전한 8-바이트 데이터를 의미하고, n(여기서, n=1,2,...,7)은 n-바이트 불완전한 데이터를 의미한다. 디폴트(default)에 의하여, 이들은 최상위 바이트(most significant byte)들일 수 있다.
도 4는 암호 특정 트랜잭션 포맷 및 타이밍으로부터 수퍼 랭귀지에서의 타이밍 독립적 트랜잭션을 도출하는 도면이다. 도 4에서, 명령어 흐름 상태도는 암호 특정 트랜잭션 포맷 및 타이밍으로부터 도출된다. 제어 상태도는 명령 흐름 상태도로부터 도출된다. 최종적으로, 수퍼 랭귀지("플레잉 카드")에서의 타이밍 독립적 트랜잭션은 흐름 상태도로부터 도출된다.
도 5는 입력 슬롯들(110 내지 112)의 FIFO들에 대한 예시적인 수퍼 랭귀지 비트 레벨 기술을 도시한다. 도 5에서, BEGIN_ERR_TRAN 및 BEGIN_TRAN에 대하여, XXX로 표기되는 3개의 최하위 비트(LSB)들은 사용되지 않는다. E로 표기되는 최상위 비트는 BEGIN_ERR_TRAN에 대해 1로 설정된다. BEGIN_ERR_TRAN 및 BEGIN_TRAN에 대한 opcode는 0001이다. SEND_KEY_NN, SEND_IV_NN, 및 SEND_DATA_NN에 대한 opcode는 각각 01NN, 10NN, 및 11NN이다. NN은 이진수에서 0, 1, 2, 또는 3을 나타낸다. 따라서, 예를 들어, SEND_DATA_01은 1101일 것이다. L 비트는 "최종" 플레그를 나타낸다. SSS는 불완전한 데이터 길이 인코딩에 사용될 수 있는 3 비트를 나타낸다. END_TRAN, 및 END_ERR_TRAN에 대한 opcode는 0010이다. E 비트(에러 플레그)는 END_TRAN에 대해 0으로, 그리고 END_ERR_TRAN에 대해 1로 설정된다.
도 6은 출력 FIFO들(150 내지 152)에 대한 예시적인 수퍼 랭귀지 비트 레벨 기술을 도시한다. 도 6에서, BEGIN_ERR_TRAN 및 BEGIN_TRAN에 대하여, XXX로 표기되는 3개의 최하위 비트(LSB)들은 사용되지 않는다. E로 표기되는 최상위 비트는 BEGIN_ERR_TRAN에 대해 1로 설정된다. BEGIN_ERR_TRAN 및 BEGIN_TRAN에 대한 opcode는 0001이다. RESULT 및 TAG에 대한 opcode들은 각각 11ZZ 및 10ZZ이다. ZZ는 이진수의 0, 1, 2, 또는 3을 나타낸다. opcode의 처음 2 비트와 함께, ZZ 비트는 블록 유형(예를 들어, 결과, 태그, 해시, 등)을 나타낸다. L 비트는 "최종" 플레그를 나타낸다. SSS는 불완전한 데이터 길이 인코딩에 사용될 수 있는 3 비트를 나타낸다. END_TRAN, 및 END_ERR_TRAN에 대한 opcode는 0010이다. E 비트(에러 플레그)는 END_TRAN에 대해 0으로, 그리고 END_ERR_TRAN에 대해 1로 설정된다.
수퍼 랭귀지, 플레잉 카드들, 및 암호 하드웨어(100)의 동작의 개념들을 부가적으로 설명하기 위하여, 다음은 3개의 상이한 형태들: (a) "수학적" 랭귀지, 즉, GCM-AES 표준; (b) GCM-AES 코어에 대한 프로토콜의 "네이티브(native)" 니모닉 포맷; (c) GCM-AES 암호 기능 유닛(Cryptographic Function Unit: CFU)에 대한 대응하는 트랜잭션의 수퍼 랭귀지 니모닉 포맷에서 샘플 GCM-AES 트랜잭션을 제공한다. 이러한 트랜잭션들이 각각 표들 4, 5, 및 6에서 제시되어 있다. (b) 및 (c) 사이에서 주목할 차이는 (b)에서, 프로토콜이 클록-아큐레이트(clock-accurate)이고, ";"이 "새로운 클록 사이클"을 표시한다는 것이다. 즉, 제 1 MAKE_MASK는 SAVE_KEY의 정확히 15 클록 사이클들 이후에 송신되어야 한다. (c)에서, ";"는 단지 데이터 블록들의 분리기이고, 데이터 블록들은 랜덤 클록 사이클(random block cycle)들에서 FIFO-형 인터페이스들로 푸시(push)/FIFO-형 인터페이스들로부터 팝핑(popping)될 수 있다. 이 차이가 또한 도 5 및 표 3에 도시되어 있다.
GCM-AES 암호의 예시적 입력 파라미터 및 변수들이 표 4에서 제공된다.
Figure pct00004
GCM-AES 코어 프로토콜로서 구성되는 "네이티브" 니모닉 포맷에서의 동일한 정보가 표 5에서 제시되어 있다.
Figure pct00005
수퍼 랭귀지 니모닉 포맷에서 GCM-AES CFU 트랜잭션으로서 구성되는 동일한 정보가 표 6에서 제시되어 있다.
Figure pct00006
표 7은 GCM-AES/GMAC에 대한 예시적인 플레잉 카드를 제공한다.
Figure pct00007
Figure pct00008
Figure pct00009
Figure pct00010
Figure pct00011
Figure pct00012
Figure pct00013
본 발명의 상기의 설명은 설명 및 기술을 위하여 제공되었다. 상기의 설명은 소모적이거나 본 발명을 개시된 정확한 형태로 제한하고자 하는 것이 아니며, 다른 변형들 및 변화들이 상기의 내용들에 비추어서 가능할 수 있다. 실시예는 본 발명의 원리들 및 이의 실제적인 애플리케이션을 가장 양호하게 설명함으로써, 당업자들이 고려되는 특정 용도에 적합한 바와 같이 다양한 실시예들 및 다양한 변경들에서 본 발명을 가장 양호하게 사용할 수 있도록 하기 위하여 선택 및 기술되었다. 첨부된 청구항들이 종래 기술에 의해 제한되는 것과 같은 것을 제외하고는 본 발명의 다른 대안적인 실시예들을 포함하도록 해석되도록 의도된다.

Claims (17)

  1. 암호 하드웨어 시스템에 있어서:
    암호 독립적 암호 트랜잭션들을 수신하는 다수의 입력 슬롯들;
    암호 독립적 암호 트랜잭션들을 수신하고, 제 1 암호 종속적 트랜잭션들을 제 1 암호 하드웨어로 송신하는, 제 1 암호 하드웨어를 포함하는 제 1 랩핑된 암호 블록으로서, 상기 제 1 랩핑된 암호 블록은 상기 암호 독립적 암호 트랜잭션들을 상기 제 1 암호 종속적 트랜잭션들로 변환하고 상기 제 1 암호 하드웨어로부터 수신된 제 1 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환하는, 상기 제 1 랩핑된 암호 블록; 및
    상기 제 1 랩핑된 암호 블록과 연관된 상기 암호 독립적 결과 트랜잭션들을 수신하는 복수의 슬롯들을 갖는 제 1 출력 FIFO를 포함하는, 암호 하드웨어 시스템.
  2. 제 1 항에 있어서, 상기 랩핑된 암호 블록은 암호 종속적 타이밍을 사용하여 상기 제 1 암호 하드웨어로 상기 제 1 암호 종속적 트랜잭션들을 송신하는, 암호 하드웨어 시스템.
  3. 제 1 항에 있어서, 암호 독립적 암호 트랜잭션들을 수신하고, 제 2 암호 종속적 트랜잭션들을 제 2 암호 하드웨어로 송신하는, 상기 제 2 암호 하드웨어를 포함하는 제 2 랩핑된 암호 블록으로서, 상기 제 2 랩핑된 암호 블록은 상기 암호 독립적 암호 트랜잭션들을 상기 제 2 암호 종속적 트랜잭션들로 변환하고 상기 제 2 암호 하드웨어로부터 수신된 제 2 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환하는, 상기 제 2 랩핑된 암호 블록을 더 포함하는, 암호 하드웨어 시스템.
  4. 제 3 항에 있어서, 암호 독립적 암호 트랜잭션들을 수신하고 암호 독립적 암호 트랜잭션들을 상기 제 1 랩핑된 암호 블록 및 상기 제 2 랩핑된 암호 블록으로 송신하는 입력 스위치를 더 포함하는, 암호 하드웨어 시스템.
  5. 제 4 항에 있어서, 상기 제 1 랩핑된 암호 블록으로부터 암호 독립적 결과 트랜잭션들을 수신하고, 상기 제 1 랩핑된 암호 블록과 연관된 암호 독립적 결과 트랜잭션들을 상기 제 1 출력 FIFO로 송신하고 상기 제 2 랩핑된 암호 블록과 연관된 암호 독립적 결과 트랜잭션들을 제 2 출력 FIFO로 송신하는 출력 스위치를 더 포함하는, 암호 하드웨어 시스템.
  6. 제 5 항에 있어서, 상기 입력 스위치 및 상기 출력 스위치를 제어하는 디스패치 유닛을 더 포함하는, 암호 하드웨어 시스템.
  7. 제 6 항에 있어서, 상기 디스패치 유닛은 상기 입력 스위치, 상기 출력 스위치, 상기 제 1 랩핑된 암호 블록, 및 상기 제 2 랩핑된 암호 블록을 제어하여, 상기 제 1 암호 하드웨어 및 상기 제 2 암호 하드웨어가 병렬적으로 암호 기능들을 수행하도록 하는, 암호 하드웨어 시스템.
  8. 제 3 항에 있어서, 상기 제 1 암호 하드웨어 및 상기 제 2 암호 하드웨어는 제 1 암호를 구현하는, 암호 하드웨어 시스템.
  9. 제 3 항에 있어서, 상기 제 1 암호 하드웨어는 제 1 암호를 구현하고, 상기 제 2 암호 하드웨어는 제 2 암호를 구현하는, 암호 하드웨어 시스템.
  10. 암호 서비스들을 제공하는 방법에 있어서:
    암호 독립적 암호 트랜잭션들을 수신하는 단계;
    제 1 암호 하드웨어를 포함하는 제 1 랩핑된 암호 블록 내로 상기 암호 독립적 암호 트랜잭션들을 수신하는 단계;
    상기 암호 독립적 암호 트랜잭션들을 제 1 암호 종속적 트랜잭션들로 변환하는 단계;
    제 1 암호 종속적 트랜잭션들을 상기 제 1 암호 하드웨어로 송신하는 단계;
    상기 제 1 암호 하드웨어로부터 수신된 제 1 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환하는 단계; 및
    제 1 출력 FIFO 내로 상기 암호 독립적 결과 트랜잭션들을 수신시키는 단계를 포함하는, 암호 서비스 제공 방법.
  11. 제 10 항에 있어서, 제 1 암호 종속적 트랜잭션들을 송신하는 상기 단계는 암호 종속적 타이밍을 사용하여 상기 제 1 암호 종속적 트랜잭션들을 상기 제 1 암호 하드웨어로 송신하는, 암호 서비스 제공 방법.
  12. 제 10 항에 있어서, 제 2 암호 하드웨어를 포함하는 제 2 랩핑된 암호 블록 내로 암호 독립적 암호 트랜잭션들을 수신하는 단계;
    상기 암호 독립적 암호 트랜잭션들을 제 2 암호 종속적 트랜잭션들로 변환하는 단계;
    제 2 암호 종속적 트랜잭션들을 상기 제 2 암호 하드웨어로 송신하는 단계; 및
    상기 제 2 암호 하드웨어로부터 수신된 제 2 암호 종속적 결과 트랜잭션들을 암호 독립적 결과 트랜잭션들로 변환하는 단계를 더 포함하는, 암호 서비스 제공 방법.
  13. 제 12 항에 있어서, 상기 제 1 암호 하드웨어 및 상기 제 2 암호 하드웨어는 병렬적으로 암호 기능들을 수행하는, 암호 서비스 제공 방법.
  14. 제 10 항에 있어서, 상기 암호 독립적 암호 트랜잭션들은 타이밍 정보 없이 지정되는, 암호 서비스 제공 방법.
  15. 제 12 항에 있어서, 상기 제 1 암호 하드웨어 및 상기 제 2 암호 하드웨어는 제 1 암호를 구현하는, 암호 서비스 제공 방법.
  16. 제 12 항에 있어서, 상기 제 1 암호 하드웨어는 제 1 암호를 구현하고, 상기 제 2 암호 하드웨어는 제 2 암호를 구현하는, 암호 서비스 제공 방법.
  17. 제 16 항에 있어서, 상기 제 1 암호 하드웨어 및 상기 제 2 암호 하드웨어는 상이한 타이밍 요건들을 가지는, 암호 서비스 제공 방법.
KR1020107022302A 2009-02-26 2009-04-10 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스 KR20110132204A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15586409P 2009-02-26 2009-02-26
US61/155,864 2009-02-26

Publications (1)

Publication Number Publication Date
KR20110132204A true KR20110132204A (ko) 2011-12-07

Family

ID=42665793

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107022302A KR20110132204A (ko) 2009-02-26 2009-04-10 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스

Country Status (7)

Country Link
US (1) US8654969B2 (ko)
EP (1) EP2250760A1 (ko)
JP (1) JP2012519414A (ko)
KR (1) KR20110132204A (ko)
CN (1) CN101919203A (ko)
TW (1) TWI396423B (ko)
WO (1) WO2010098778A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8831221B2 (en) * 2010-09-28 2014-09-09 Lsi Corporation Unified architecture for crypto functional units
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
CN112233007B (zh) * 2020-10-15 2024-03-29 中山大学 一种云计算环境下的加密图像水印嵌入方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5796836A (en) 1995-04-17 1998-08-18 Secure Computing Corporation Scalable key agile cryptography
JPH0918469A (ja) * 1995-06-30 1997-01-17 Canon Inc 暗号通信装置、システム及び暗号装置
JPH09269727A (ja) * 1996-03-29 1997-10-14 Toshiba Corp 暗号化方法および暗号化装置
JPH10215243A (ja) * 1996-11-28 1998-08-11 Fujitsu Ltd エージェントを用いた暗号化通信方法およびモーバイルコード記憶媒体
JP2000022775A (ja) * 1998-06-30 2000-01-21 Canon Inc 送信装置、受信装置、通信装置、通信システム、送信方法、受信方法、通信方法、及び記憶媒体
US6973187B2 (en) * 2000-01-31 2005-12-06 Vdg, Inc. Block encryption method and schemes for data confidentiality and integrity protection
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US20020048364A1 (en) * 2000-08-24 2002-04-25 Vdg, Inc. Parallel block encryption method and modes for data confidentiality and integrity protection
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
US7360076B2 (en) * 2001-06-13 2008-04-15 Itt Manufacturing Enterprises, Inc. Security association data cache and structure
JP3998178B2 (ja) * 2002-04-24 2007-10-24 日本放送協会 コンテンツ著作権保護装置及びそのプログラム
JP2004088505A (ja) * 2002-08-27 2004-03-18 Matsushita Electric Ind Co Ltd 並列ストリーム暗復号装置及びその方法並びに並列ストリーム暗復号プログラム
KR100546375B1 (ko) * 2003-08-29 2006-01-26 삼성전자주식회사 자체 오류 감지 기능을 강화한 상호 의존적 병렬 연산방식의 하드웨어 암호화 장치 및 그 하드웨어 암호화 방법
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
TWI244299B (en) * 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
US7697681B2 (en) * 2004-02-06 2010-04-13 Nortel Networks Limited Parallelizable integrity-aware encryption technique
JP4254758B2 (ja) * 2005-07-25 2009-04-15 ソニー株式会社 ストリーム暗号化装置、ストリーム暗号化方法、ストリーム復号化装置、ストリーム復号化方法
CA2627136A1 (en) * 2005-11-04 2007-05-10 Nec Corporation Message authentication device, message authentication method, message authentication program and storage medium therefor
US8068541B2 (en) 2006-01-30 2011-11-29 Jan Harding Thomsen Systems and methods for transcoding bit streams
US20080049930A1 (en) * 2006-08-25 2008-02-28 Samsung Electronics Co., Ltd. Method and apparatus for encrypting data
JP4279317B2 (ja) * 2007-01-31 2009-06-17 株式会社日立製作所 データ処理方法及びデータ処理装置
US8190553B2 (en) * 2007-12-20 2012-05-29 Routt Thomas J Methods and systems for quantum search, computation and memory

Also Published As

Publication number Publication date
CN101919203A (zh) 2010-12-15
TW201032560A (en) 2010-09-01
TWI396423B (zh) 2013-05-11
JP2012519414A (ja) 2012-08-23
EP2250760A1 (en) 2010-11-17
US8654969B2 (en) 2014-02-18
US20120121079A1 (en) 2012-05-17
WO2010098778A1 (en) 2010-09-02

Similar Documents

Publication Publication Date Title
JP7332300B2 (ja) ハードウェアオフロードを有するアクセラレートされたquicパケット処理のための技術
US5961626A (en) Method and processing interface for transferring data between host systems and a packetized processing system
TW490968B (en) Apparatus for encrypting data and cipher system
US8918646B2 (en) Data processing apparatus
US8831221B2 (en) Unified architecture for crypto functional units
EP3707880A1 (en) Nic with programmable pipeline
US9003202B2 (en) Memory control device, semiconductor memory device, memory system, and memory control method
JPH10320191A (ja) プログラム可能暗号処理システムおよび方法
US9461815B2 (en) Virtualized AES computational engine
CN102411694A (zh) 加密装置及存储器系统
CN113498596B (zh) 一种基于PCIe的数据传输方法及装置
KR20110132204A (ko) 암호 하드웨어 서비스를 위한 암호 독립적 인터페이스
Ferozpuri et al. Hardware api for post-quantum public key cryptosystems
US20120290823A1 (en) Core abstraction layer interface
CN116204911B (zh) 加解密系统、加解密控制方法、计算机设备及存储介质
Homsirikamol et al. Implementer’s Guide to the CAESAR Hardware API
US20200019734A1 (en) Secure external soc debugging
CN103309831A (zh) 数据传输装置和数据传输方法
Kaps et al. A comprehensive framework for fair and efficient benchmarking of hardware implementations of lightweight cryptography
US8060333B2 (en) Test apparatus and test method
EP3803610B1 (en) Direct memory access controller
Ren et al. 3DES implementation based on FPGA
JP2007323470A (ja) 装置間の接続方式および接続装置
US9128914B2 (en) Semiconductor integrated circuit
JP2015005924A (ja) 送信装置及び情報伝送システム

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