KR20070120094A - 하드웨어 보안 모듈의 다이나믹 로딩 - Google Patents

하드웨어 보안 모듈의 다이나믹 로딩 Download PDF

Info

Publication number
KR20070120094A
KR20070120094A KR1020077019871A KR20077019871A KR20070120094A KR 20070120094 A KR20070120094 A KR 20070120094A KR 1020077019871 A KR1020077019871 A KR 1020077019871A KR 20077019871 A KR20077019871 A KR 20077019871A KR 20070120094 A KR20070120094 A KR 20070120094A
Authority
KR
South Korea
Prior art keywords
cryptographic
request
batch
level process
key
Prior art date
Application number
KR1020077019871A
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 KR20070120094A publication Critical patent/KR20070120094A/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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • 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
    • 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/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터를 부호화시키기 위한 시스템은, 하드웨어 암호 모듈 상에서, 암호 활동(cryptographic activity)에 대한 복수의 요청들을 포함하는 배취(batch)를 수신하는 단계; 상기 배취 내의 각 요청들에 대하여, 상기 요청들의 결과들을 연쇄시켜, 상기 요청된 암호 활동을 수행하는 단계; 및 상기 연쇄된 결과들을 출력으로써 제공하는 단계를 포함한다.
데이터 부호화, 암호 모듈, 복호화

Description

하드웨어 보안 모듈의 다이나믹 로딩{DYNAMIC LOADING OF HARDWARE SECURITY MODULES}
본 발명은 데이터를 부호화하기 위한 소프트웨어 및 하드웨어, 특히, 하드웨어 보안 모듈의 다이나믹 로딩에 관한 것이다.
많은 보안 표준은 하드웨어 보안 모듈의 사용을 요구한다. 그러한 모듈은 종종 그들이 작은 데이터 유닛 상에 있는 것보다 큰 데이터 유닛 상에서 아주 더 빠르게 오퍼레이션(operation)을 실행할 수 있다. 예를 들어, 일반적인 하드웨어 보안 모듈은 큰 데이터 유닛 상에서 20 megabytes/second 이상으로 트리플(Triple) DES(Data Encryption Standard)와 외부 보안 블럭 체이닝(outer cipher block chaining)을 실행할 수 있다.
부호화된 데이터베이스 테이블에 대한 접근은, 짧은 데이터 유닛(예를 들어, 8-80 bytes) 상에서 데이터 필드의 복호화 및 DES 오퍼레이션의 실행을 종종 요구한다. 짧은 데이터 유닛 상에서 DES 오퍼레이션을 위해, 상용의 하드웨어 보안 모듈은 2 kilobytes/second 보다 작게 종종 벤치마크(benchmarked)된다.
지난 몇 년 동안, 팀들은 암호 임베디드 시스템(cryptographic embedded systems)에 기초한 상용의 오퍼링(offerings)과 같은 높은 성능의 프로그래머블 보 안 코프로세서(coprocessor)의 운영에 관해 작업하였다. 그러한 시스템들은 그들 상에 설치된 어플리케이션 프로그램들에 따라, 다른 성질을 가질 수 있다. 이들 장치들 중 몇몇은 모듈 수학(modular math) 및 DES에 대한 하드웨어 암호 서포트의 특징을 이룬다.
앞선 노력들은 보안 코프로세싱(coprocessing)에 집중되었다. 이들 노력들은, 키(keys) 및 결정(decisions)이 낮은 보안 호스트가 아닌 제3신뢰기관(trusted third party)의 제어하에 있는 경우에서 DES를 가속시키기 위해 시도하였다. 그러한 시나리오(scenario)의 일 예는, 루트(root) 및 데이터베이스 관리자 공격에 더욱 반하여 프라이버시를 보장하기 위해 보호된 하드웨어의 데이터베이스 서버들 상에서의 재부호화(re-encrytion)이다.
일반적으로, 첫 번째 양상에서, 데이터를 부호화시키기 위한 시스템은, 하드웨어 암호 모듈(hardware crytography module) 상에서, 암호 활동(cryptographic activity)에 대한 복수의 요청들을 포함하는 배취(batch)를 수신하는 단계; 배취 내의 각 요청들에 대하여, 요청들의 결과들을 연쇄시켜, 요청된 암호 활동을 수행하는 단계; 및 연쇄된 결과들을 출력으로써 제공하는 단계를 포함한다.
몇몇 작업들은 다음 특징들 중 하나 이상을 포함한다. 배취는 부호화 키를 포함하며, 요청된 암호 활동을 수행하는 단계는, 어플리케이션 레벨의 프로세스(application-level process)에서, 키 및 복수의 요청들을 시스템 레벨의 프로세스(system-level process)에 대한 입력으로써 제공하는 단계; 및 시스템 레벨의 프로세스에서, 키를 가진 암호 장치를 초기화시키는 단계; 배취 내의 각 요청을 실행하기 위해 암호 장치를 사용하는 단계; 및 결과들의 체이닝(chaining)을 브레이크(breaking)시키는 단계를 포함한다. 결과들의 연쇄는 시스템 레벨의 프로세스에 의해 수행된다. 요청된 암호 활동을 수행하는 단계는, 어플리케이션 레벨의 프로세스에서, 배취를 시스템 레벨의 프로세스에 대한 입력으로써 제공하는 단계; 및 배취 내의 각 요청들에 대하여, 시스템 레벨의 프로세스에서, 암호 장치를 리셋(resetting)시키는 단계; 및 요청을 실행하기 위해 암호 장치를 사용하는 단계를 포함한다.
결과들의 연쇄는 시스템 레벨의 프로세스에 의해 수행된다. 배취 내의 각 요청은 키 테이블(key table) 내에 인덱스(index)를 포함하며, 요청된 암호 활동을 수행하는 단계는, 어플리케이션 레벨의 프로세스에서, 키 테이블을 메모리 내로 로딩(loading)하는 단계, 및 시스템 레벨의 프로세스에 대해 이용가능한 키 테이블을 만드는 단계; 및 시스템 레벨의 프로세스에서, 암호 장치를 리셋시키는 단계, 입력 큐(input queue)로부터 파라미터들(parameters)을 리딩(reading)하는 단계, 암호 장치 내로 파라미터들을 로딩하는 단계, 및 배취 내의 각 요청에 대하여, 인덱스를 리딩하는 단계, 인덱스에 기초한 메모리 내에서 키 테이블로부터 키를 리딩하는 단계, 키를 암호 장치 내로 로딩하는 단계, 입력 큐로부터 데이터 길이를 리딩하는 단계, 암호 장치에 대한 데이터 길이와 동일한 데이터의 양을 송신하기 위해 입력 큐에 명령(instructing)하는 단계, 및 요청을 실행하고 출력 큐(output queue)로 결과들을 송신하기 위해 암호 장치에 명령하는 단계를 포함한다. 배취는, 각 요청에 대한 데이터 길이를 포함하여, 요청들에 관련된 복수의 파라미터들도 포함하며, 요청된 암호 활동을 수행하는 단계는, 시스템 레벨의 프로세스에서, 맵핑된 메모리의 오퍼레이션(memory-mapped operation)을 통해 메모리 내로 파라미터들을 송신하기 위해 입력 큐에 명령하는 단계, 메모리로부터 상기 배취된(batched) 파라미터들을 리딩하는 단계, 파라미터들에 기초한 암호 장치에 대한 요청들 각각의 데이터 길이들과 동일한 데이터의 양을 송신하기 위해 입력 큐에 명령하는 단계, 및 요청을 실행하고 출력 큐에 대한 결과들을 송신하기 위해 암호 장치에 명령하는 단계를 포함한다.
다른 일반적인 양상들은 전술된 양상들 및 특성들, 및 방법, 장치, 시스템, 프로그램 제품, 및 다른 방법으로 표현되는 다른 양상들 및 특성들의 다른 조합들을 포함한다.
본 발명의 하나 이상의 일 실시예들의 상세는, 아래 참조 도면들 및 상세한 설명에서 설명된다. 본 발명의 다른 특징, 목적, 및 장점들은 상세한 설명 및 도면들, 및 청구항들로부터 명백해 질 것이다.
시스템 셋업 구성
도 1은 호스트 컴퓨터(100)와 통신하는 테스트 장치(102)를 도시한다. 도 1에 도시된 바와 같이, 테스트 장치(102)는 PCI 카드 내에 포장된 멀티-칩 임베디드 모듈을 포함한다. 모듈은 암호칩(104), 탬퍼 탐지 및 응답에 대한 회로(106), DRAM 모듈(108), 내부 ROM(112)으로부터 로딩된 소프트웨어를 실행하는 486급 CPU(110)와 같은 일반적인 용도의 컴퓨팅 환경, 및 플래시 메모리(114)를 포함한다. 테스트 장치(102)는 호스트 컴퓨터의 PCI 버스 내에서 대응하는 PCI 입력 및 PCI 출력 FIFO 대기열(120 및 122)과 통신하는 장치 입력 FIFO 대기열(116) 및 장치 출력 FIFO 대기열(118)을 포함하고, 다음에는 호스트 CPU(124)와 통신한다.
도 2에 도시된 바와 같이, 테스트 장치(102)의 다중-레이어 소프트웨어 아키텍쳐는 기본적인 보안 제어, 관리자 레벨의 시스템 소프트웨어, 및 유저 레벨의 어플리케이션 소프트웨어를 포함한다. 호스트 측 어플리케이션이 카드 측 어플리케이션에 의해 제공되는 서비스를 이용하기를 원하는 경우, 호스트 측 장치 드라이버에 콜(call)을 발한다. 장치 드라이버는 그 다음, 테스트 장치(102) 상에서 시스템 소프트웨어로 요청을 개방한다.
하드웨어
테스트 장치(102)의 DES 성능은 대략 1.5 kiobytes/second로 초기에 벤치마크(benchmarked)되었다. 이 수는 상용의 하드웨어 보안 모듈을 사용하여, 호스트 측의 어플리케이션으로부터 측정되었다. 벤치마크 테스팅(testing)을 위해 선택된 DES 오퍼레이션은, 8 내지 80 bytes 사이의 임의로 균일하게 분포된 데이터 크기를 가진, CBC-부호화 및 CBC-복호화이다. 키들은 장치의 내부에 저장된 마스터 키로 트리플-DES(TDES) 부호화되었다. 초기화 벡터(Initialization Vectors) 및 키들은 각 오퍼레이션으로 변경된다.
도 3에 도시된 바와 같이, 키(306), 초기화 벡터(308), 및 오퍼레이션 파라미터(310)를 포함하는 보조적인 데이터는, 각 오퍼레이션으로 호스트(302)에서 HSM(304)으로 테스트 데이터(312)와 함께 송신되었다. 이 보조적인 데이터는 데이터 처리량을 평가하는 중에는 무시되었다. 비록 키는 각 오퍼레이션으로 변할 수 있을지라도, 키의 총 수(우리의 샘플 어플리케이션, 및 우리가 조사한 다른 것들 내에서)는 요청의 수에 비례하여, 아주 상당히 작았다.
도 4에 도시된 바와 같이, 초기의 베이스라인 수행(initial baseline implementation)은 짧은-DES의 요청들(암호키(cipherkey), 초기화 벡터, 데이터)의 시퀀스(sequences)를 발생시키고(단계 404), 하드웨어 보안 모듈(400) 상에서 작동하는 카드 측의 어플리케이션(420)으로 그들을 송신하는(단계 406) 호스트 어플리케이션(402)을 포함한다. 카드 측의 어플리케이션(420)은, 각 요청을 캐쉬에 저장하고(단계 408), 키를 해제(unpack)하고(단계 409), 데이터, 키, 및 초기화 벡터를 부호화 엔진(422)으로 송신한다(단계 410). 부호화 엔진(422)은 요청을 처리하고(단계 412), 결과를 카드 측 어플리케이션(420)으로 반송한다(단계 414). 카드 측 어플리케이션(420)은 그 다음, 이들 결과를 호스트 어플리케이션(402)으로 되돌려 전송한다(단계 416).
몇몇 해법들은 데이터의 작은 블럭들의 부호화 속도를 증가시키는 것으로 발견되었다.
호스트-카드 상호 작용의 감소
도 5에 도시된 바와 같이, 호스트-카드 상호 작용의 수를 감소시키기 위해(평균적으로, 데이터의 각 44 bytes 당 한 세트로부터), 호스트 측 어플리케이션(402)은 짧은 DES의 요청들의 시퀀스를 배취(batch)하기 위해(단계 502), 하나의 요청으로 수정되고, 그 다음 하드웨어 보안 모듈(400)로 송신된다(단계504). 카드 측 어플리케이션(420)은 하나의 단계 506에서 호스트 측 어플리케이션으로부터 시퀀스를 수신하고, 반복되는 단계 508에서 부호화 엔진(422)으로 각 짧은 DES 요청을 송신하기 위해, 대응하여 수정된다. 부호화 엔진(422)은 도 4와 관련하여 도시된 바와 같이, 각 요청을 처리하고(단계 412), 카드 측 어플리케이션(420)으로 대응하는 결과를 반송한다(단계 414). 연쇄(concatenation) 단계 510 후, 카드 측 어플리케이션(420)은 다음 요청을 위해 단계 508로 돌아가거나, 단일의 단계 512에서 호스트로 모든 완료된 요청들을 되돌려 송신한다.
하나의 칩 내로 배취
몇몇 실시예들에서, 암호칩(104)은 각 오퍼레이션에 대해 리셋된다(다시, 평균적으로, 44 bytes 당 한번). 이들 리셋들을 제거하는 것은 몇 가지 향상을 가져온다. 도 6에 도시된 바와 같이, 리셋 단계에 대한 요구를 제거하기 위해 짧은 DES 오퍼레이션 요청의 시퀀스가 발생되고(단계 604), 이들 전부는 동일한 사전 발생된 키 및 동일한 예정된 초기화 벡터를 사용하며, 이들 전부는 동일한 요청("복호화" 또는 "부호화")을 만든다. 단일 키 및 모든 배취된 요청들은 오퍼레이션 시퀀스로써 하드웨어 보안 모듈(400)로 함께 송신된다(단계 606). 카드 측 어플리케이션(420)은 오퍼레이션 시퀀스를 수신하고(단계 608), 시스템 소프트웨어(626)로 시퀀스를 송신한다. 시스템 소프트웨어(626), 예를 들어, DES 하드웨어를 제어하는 DES 매니저(DES Manager)는 첫 번째 단계 610에서 제공되는 키 및 초기화 벡터를 가진 암호 장치(628)를 셋업하고, 두 번째 단계 614에서 암호 장치(628)를 통해 데이터를 송신하기 위해 수정된다. 암호 장치(628)는 그 다음 오퍼레이션 요청을 실행한다(단계 616). 암호 장치(628)는 한번 키를 수신(단계 612)하기 위해 단지 요구만 한다. 각 오퍼레이션의 끝에서, 암호 장치(628)는 시스템 소프트웨어(626)로 결과들을 반송하고(단계 618), 체이닝을 브레이크 하기 위해 XOR을 실행한다(단계 620). 특히, 암호 장치(628)가 보통 실행하는 XOR을 상쇄(cancel out)시키기 위해, 부호화에 대해, 시스템 소프트웨어(626)는 다음 오퍼레이션에 대한 평문(plaintext)의 첫 번째 블럭을 가지는 앞선 오퍼레이션으로부터 암호문(ciphertext)의 마지막 블럭을 수동으로 XOR을 실행한다. 시스템 소프트웨어는 그 다음, 카드 측 어플리케이션(420)으로 결과들을 반송하고(단계 622), 호스트 어플리케이션(402)으로 그들을 전송한다(단계 512).
다중 칩 내로 배취
다른 중요한 보틀넥(bottleneck)은 콘텍스트 스위치들(context switches)의 수이다. 도 7에 도시된 바와 같이, 콘텍스트 스위치들의 수를 감소시키기 위해, 도 5와 관련하여 검토된 다중 키의 논제로-초기화 벡터(nonzero-initialization vector) 예는 반복되지만, 시스템 소프트웨어(626)으로 배취된 요청들을 송신(단계 702)하기 위해 지금 구성되고 있는 카드 측 어플리케이션(420)을 가진다. 시스템 소프트웨어(626)는 요청을 수신하고(단계 704), 차례대로 각각을 얻고(단계 706), 암호 장치(628)를 리셋시킨다(단계 714). 그 다음, 키, 초기화 벡터, 및 데이터를 현재 요청으로부터 요청이 처리되는(단계 616) 암호 장치(628)로 송신한다(단계 708). 결과들은 그들이 연쇄되는(단계 712) 시스템 소프트웨어(626)로 반송된다(단계 618). 만일 여분의 요청들이 남으면, 처리는 반복하고, 그렇지 않으면, 결과들은 호스트(402)로 결과들을 전송하는(단계 512) 카드 측 어플리케이션(420)으로 반송된다(단계 710).
데이터 전송의 감소
각 짧은 DES 오퍼레이션은, 암호칩을 셋업하기 위해, 초기화 벡터 및 키들을 얻고 암호칩으로 그들을 전송하기 위해, 및 그 다음 칩을 통해 데이터를 구동시키거나 FIFO 상태 머신(state machine)를 완전히 펌프(pump)시키도록 하기 위해, I/O 오퍼레이션들의 최소 수를 요구한다.
키, 초기화 벡터, 및 데이터의 각 바이트(byte)는 여러 번 취급된다. 예를 들어, 도 8에 도시된 바와 같이, 바이트들은 PCI 입력 FIFO(120) 및 장치 입력 FIFO(116)를 경유하여 들어오고, 초기화 요청 버퍼 전송과 함께 DRAM(108) 내로 DMA을 경유하여 들어온다; CPU(110)는 그 다음, DRAM(108)으로부터 바이트들을 얻고, 암호칩(104) 내로 그들을 전송한다; CPU(110)는 그 다음, 암호칩(104)으로부터 데이터를 얻고, DRAM(108) 내로 데이터를 되돌려 전송한다; CPU(110)는 마지막으로 장치 및 PCI 출력 FIFO(118 및 122)를 통해, 각각 호스트로 데이터를 되돌려 송신한다.
그런데, 이론에서, 각 파라미터(키, 초기화 벡터, 및 방향)는 단 하나의 전송을 요구할 것이고, CPU(110)는 장치 입력 FIFO(116)로부터 파라미터를 리딩(reading)하고 적합한 절차를 실행한다. 만일 FIFO 상태 머신이 직접 암호칩(104)을 통해 데이터 바이트들을 펌프시키면, 그 다음 CPU(110)는 결코 조금도 데이터 바이트들을 취급할 필요가 없다. 예를 들어, 키를 해제(unpacking) 하는 것은 제거될 수 있다. 그 대신에, 각 어플리케이션 내에서, "초기화" 단계는 장치 DRAM(108) 내에 평문 키-테이블을 위치시킬 것이다.
도 9에 도시된 바와 같이, 호스트 어플리케이션은 요청의 시퀀스들을 발생시키기 위해 수정되고, 이들 각각은 암호키의 대신으로, 내부 키 테이블(902) 내로 인덱스(index)를 포함시킨다. PCI 입력 FIFO(116)로부터 DRAM(108) 내로 요청 시퀀스를 즉시 발생시키는 것보다, 카드 측 어플리케이션은 수정된 시스템 소프트웨어를 불러내고, 키 테이블을 그것이 가능하도록 만든다. 각 오퍼레이션에 대해, 수정된 시스템 소프트웨어는 그 다음, 암호칩(104)을 리셋시키고; 장치 입력 FIFO(116)로부터 초기화 벡터 및 다른 파라미터(904)를 직접 리딩하고 암호칩(104) 내로 그들을 로드(load)한다; 키 인덱스의 인테그리티(integrity)를 리딩하고 확인하며, DRAM(108) 내의 키 테이블(902) 내에서 키를 찾으며, 칩(104)으로 키를 로드한다; 이 오퍼레이션에 대한 데이터 길이를 리딩한다; 입력 장치 입력 FIFO(116)를 통해 암호칩(104) 내로 대응하는 바이트들(906)의 수를 운반하기 위해 FIFO 내에서 상태 머신을 셋업하고, 그 다음 장치 출력 FIFO(118)을 후퇴시킨다.
메모리 맵핑된 I/O의 사용
많은 경우에서, I/O 오퍼레이션 속도는 코프로세서의 내부 ISA 버스까지 제한되고, 이것은 8 메가바이트/초의 유효한 전송 속도를 가진다. 각 오퍼레이션(데이터 길이와 관계없이)과 관련된 꺼내지고 저장되는(fetch-and-store) 전송들의 수가 주어지면, 느린 ISA 속도는 잠재적으로 다른 보틀넥이다.
오퍼레이션 파라미터들의 배취
앞선 예의 접근은 PCI 입력 FIFO로부터 느린 ISA I/O를 경유하여 사전 오퍼레이션 파라미터들을 리딩하는 단계를 포함한다. 그러나, 만일 파라미터들이 함께 배취된다면, 그들은 메모리 맵핑된 오퍼레이션들을 통해 리딩할 수 있고, FIFO 구성은 변경될 수 있고, 데이터는 처리될 수 있다.
예를 들어, 도 11에 도시된 바와 같이, 호스트 어플리케이션은 입력 데이터(1104)에 대해 앞서 미결된(prepended) 단일 그룹 내로 모든 사전 오퍼레이션 파라미터들(1102)을 배취하기 위해 수정된다. HSM(102) 상의 수정된 시스템 소프트웨어는 그 다음, 암호칩(104)을 우회하여(by-passing), 배취된 파라미터(1102)를 리딩하기 위해 장치 입력 FIFO(116) 및 상태 머신을 셋업시킨다; 장치 입력 FIFO(116)로부터 DRAM(108)내에 까지 메모리 맵핑된 오퍼레이션들을 경유하여 배취된 파라미터들을 리딩하는다; FIFO들을 재구성(reconfigure)한다; 및 버퍼링된 파라미터(1102)를 사용하여, 입력 FIFO(116)로부터 칩(104)을 통해 각 오퍼레이션의 데이터(1104)를 펌프시키기 위해 상태 머신 및 암호칩(104)을 셋업시키고, 그 다음 출력 FIFO들을 후퇴시킨다.
부호화 효율을 증가시키기 위한 다른 기술들
배취 당 오버헤드(overhead)를 증가시킴
몇몇 실시예들에서, 1000 오퍼레이션보다 약간 적게, 속도는 배취 당 오버헤드의 비율로 여전히 지배된다. 그러한 경우에서, 하나는, 여분의 데이터가 전송할 준비가 되었을 때를 지시하기 위한 몇몇 추가적인 폴링(polling) 또는 시그널링(signaling)과 함께, 불명확한 요청들을 가능하게 하기 위해 호스트에서 장치로의 드라이버 상호작용을 수정함으로써 배취 당 오버헤드를 완전히 제거할 수 있다.
API 접근
오퍼레이션에 대해 파라미터 전송의 수를 최소화함으로써 오퍼레이션에 대한 오버헤드를 감소시키는 다양한 방법들이 있다. 예를 들어, 호스트 어플리케이션은, 오퍼레이션의 배취 내에서, 예를 들어 다음 N 오퍼레이션 모두가 특정 키를 사용한다는 것을 단언하는 "파라미터 블럭들"을 인터리브(interleave)할 수 있다. 이것은 반복되는 키 인덱스와의 상호작용을 제거한다. 다른 실시예에서, 호스트 어플리케이션 자신은 적절하게 카드로 데이터를 전송하기 전 또는 후에 초기화 벡터들을 처리할 수 있다. 이 경우에서, 호스트 어플리케이션이 초기화 벡터들을 제공하는데에 이미 기대된다면, 보안에 대해 어떤 타협도 없다. DES 칩이 리셋 후 영의 디폴트 초기화 벡터를 가지기 때문에, 이것은 초기화 벡터들을 발생시키는 것을 제거하며, 또한 초기화 벡터들을 로딩하는 것을 제거한다.
하드웨어 접근
오퍼레이션 당 오버헤드를 감소시키는 다른 방법(avenue)은 FIFO들 및 상태 머신을 변경하는 것이다. 현재 이용가능한 하드웨어는 데이터를 이동시키는 방법을 제공하지만, 엔진을 통해 매우 빠르게 오퍼레이셔날(operational) 파라미터들을 이동시키는 방법은 제공하지 않는다. 예를 들어, DES 엔진이 데이터와 인터리브된 파라미터들을 포함하는(예를 들어, "키 #7 및 이것의 초기화 벡터를 가진 다음의 40 bytes를 포함하는") 입력된 데이터를 기대하면, 그 다음 오퍼레이션 당 오버헤드는 바이트당 오버헤드에 접근할 수 있다. 상태 머신은, 출력 바이트의 수가 입력 바이트의 수보다 작을 수 있다는 사실(후자가 파라미터들을 포함하기 때문에)을 취급하기 위해 수정될 것이다. 동일한 접근은 동일한 방법으로 구동되고 있는 다른 알고리즘 엔진들을 위해 작동하거나, 또는 엔진을 통해 데이터를 구동시키기 위한 다른 시스템들과 함께 작동할 것이다.
몇몇 실시예들에서, 어쩌면 외부적으로 선택되는 파라미터들은, 엔진 오퍼레이션들의 클래스(class)를 제어하거나 제한하기 위해 CPU에 대해 유익할 수도 있다는 것을 넘는 범위로 분포한다는 것이 허락된다. 예를 들어, 외부적인 실재(entity)는 부호화 오퍼레이션의 일정한 타입들을 선택하기 위해서만 허락될 수 있고, 또한 CPU는 외부적인 실재가 선택하는 파라미터들 및 엔진이 보는 파라미터들 상에서 인디렉션(indirection)을 삽입하기를 희망할 수 있다. 일 실시예에서, 외부적인 실재는 앞선 실시예들에서 논의된 바와 같이, 내부 테이블 내로 인덱스를 제공한다.
어플리케이션
데이터의 작은 블럭들에 대한 DES 오퍼레이션 속도를 증가시키기 위해 개시된 다양한 기술들은, 부호화된 데이터베이스의 성능을 향상시키기 위해 사용될 수 있다. 일정한 데이터베이스 트랜섹션(transaction)은, 응답 시간 통계치들(response time statistics)에 기초하여, 짧은 데이터 블럭들을 포함하는 것으로 확인될 수 있다. 일단 확인되면, 그러한 트랜섹션은 짧은 데이터 블럭들을 복호화하기 위해 최적화된 복호화 프로세스로 방향이 고쳐진다.
이렇게 수정된 데이터베이스 시스템은 데이터베이스 서버 및 하드웨어 보안 모듈로부터 분리된 서버 상에서 실행하는 다이나믹 HSM 로더 클라이언트(dynamic HSM loader client)를 가지는 다이나믹 HSM 로더, 및 하드웨어 보안 모듈 상에서 실행하는 다이나믹 HSM 로더 서버를 포함한다.
그러한 시스템의 오퍼레이션 동안, 응답 시간 통계치들은 먼저, 짧은 데이터 필드의 복호화를 요구하는 부호화된 데이터베이스 테이블들을 처리하는 트랜섹션들을 관찰하는 것으로부터 수집된다. 그 다음, 크리티컬한(critical) 트랜섹션들은 다이나믹하게 방향이 고쳐진다. 이들 크리티컬한 트랜섹션들은 특히 짧은 응답 시간을 요구하는 것들이다.
다이나믹 HSM 로더는 먼저 메모리 내의 데이터 배열체 및 보안 속성들을 만든다. 그 다음, 데이터베이스 서버는 데이터베이스 트랜섹션들 및 암호 오퍼레이션을 다이나믹 HSM 로더 클라이언트로 내려놓고(off-load), 분리된 병렬의 서버 클러스터들(clusters) 상에서 작동한다. 다이나믹 HSM 로더 클라이언트는 어플리케이션 데이터를 유지시키고, SQL 명령어들의 한정된 설정으로 작동한다.
다이나믹 HSM 로더는 분리된 병렬의 하드웨어 보안 모듈 클러스터들 상에서 작동하는 하드웨어 보안 모듈로 암호 오퍼레이션들을 내려놓는다. 그 다음, 다이나믹 HSM 로더 배취는 다이나믹 HSM 로더 클라이언트로부터 다이나믹 HSM 로더 서버까지 많은 수의 데이터 요소들, 초기화 벡터들, 부호화 키 라벨들(labels), 및 알고리즘 속성들을 공급한다. 하드웨어 보안 모듈의 프로그래머빌리티(programmability)는 다이나믹 HSM 로더 서버 프로세스가 하드웨어 보안 모듈 상에서 작동할 수 있도록 한다.
본 발명의 많은 실시예들이 개시되었다. 그럼에도 불구하고, 본 발명의 사상 및 범위로부터 벗어나지 않고 다양한 수정들이 만들어질 수 있다는 것이 이해될 것이다. 예를 들어, 키들은 외부 소스(source)로부터 로드될 수 있고; 높은 속도의 짧은 DES 어플리케이션들은, 신뢰되지 않는 호스트 측 실재가 선택할 수 있는 모드들(modes) 또는 키들(keys) 또는 초기화 벡터들 또는 다른 그러한 파라미터들을 크게 제한하는 능력이 제공될 수 있다. 실시예들에서 논의된 기술들은 TDES, SHA-1, DES-MAC, 및 다른 알고리즘들의 능률을 올릴 수도 있다. 입력 또는 출력되는 파라미터들 중 어떤 것은, 시스템에 대한 외부보다 오히려 내부의 성분들(components)로부터 발생할 수 있거나, 지향될 수 있다. 오퍼레이션들은 속도 성능을 돕기 위해 실행 전에 다양한 방법들로 저장될 수 있다. 따라서, 다른 실시예들은 다음 청구항들의 범위내에 있다.
도 1 및 8-10은 하드웨어 보안 모듈의 블럭도이다.
도 2 및 3은 장치와 호스트 사이의 통신의 블럭도이다.
도 4-7은 흐름도이다.
각각의 도면들에서 동일한 참조 부호들은 동일한 구성요소들을 지시한다.

Claims (7)

  1. 데이터를 부호화(encrypting)시키는 방법에 있어서,
    하드웨어 암호 모듈(hardware crytography module) 상에서,
    암호 활동(cryptographic activity)에 대한 복수의 요청들(requests)을 포함하는 배취(batch)를 수신하는 단계;
    상기 배취 내의 각 요청들에 대하여, 상기 요청들의 결과들(results)을 연쇄(concatenating)시켜, 상기 요청된 암호 활동을 수행하는 단계; 및
    상기 연쇄된 결과들을 출력(output)으로써 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 배취는 부호화 키(key)를 포함하며,
    상기 요청된 암호 활동을 수행하는 단계는,
    어플리케이션 레벨의 프로세스(application-level process)에서,
    상기 키 및 상기 복수의 요청들을 시스템 레벨의 프로세스(system-level process)에 대한 입력으로써 제공하는 단계; 및
    상기 시스템 레벨의 프로세스에서,
    상기 키를 가진 암호 장치를 초기화시키는 단계;
    상기 배취 내의 각 요청을 실행하기 위해 암호 장치를 사용하는 단계; 및
    상기 결과들의 체이닝(chaining)을 브레이크(breaking)시키는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서,
    상기 결과들의 연쇄는 상기 시스템 레벨의 프로세스에 의해 수행되는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 요청된 암호 활동을 수행하는 단계는,
    어플리케이션 레벨의 프로세스에서,
    상기 배취를 시스템 레벨의 프로세스에 대한 입력으로써 제공하는 단계; 및
    상기 배취 내의 각 요청들에 대하여, 상기 시스템 레벨의 프로세스에서,
    암호 장치를 리셋(resetting)시키는 단계; 및
    상기 요청을 실행하기 위해 상기 암호 장치를 사용하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 결과들의 연쇄는 상기 시스템 레벨의 프로세스에 의해 수행되는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 배취 내의 각 요청은 키 테이블(key table) 내에 인덱스(index)를 포함하며,
    상기 요청된 암호 활동을 수행하는 단계는,
    어플리케이션 레벨의 프로세스에서,
    상기 키 테이블을 메모리 내로 로딩(loading)하는 단계, 및
    시스템 레벨의 프로세스에 대해 이용가능한 상기 키 테이블을 만드는 단계; 및
    상기 시스템 레벨의 프로세스에서,
    암호 장치를 리셋시키는 단계,
    입력 큐(input queue)로부터 파라미터들(parameters)을 리딩(reading)하는 단계,
    상기 암호 장치 내로 상기 파라미터들을 로딩하는 단계, 및
    상기 배취 내의 각 요청에 대하여,
    상기 인덱스를 리딩하는 단계,
    상기 인덱스에 기초한 상기 메모리 내에서 키 테이블로부터 키를 리딩하는 단계,
    상기 키를 상기 암호 장치 내로 로딩하는 단계,
    상기 입력 큐로부터 데이터 길이를 리딩하는 단계,
    상기 암호 장치에 대한 상기 데이터 길이와 동일한 데이터의 양을 송신하기 위해 상기 입력 큐에 명령(instructing)하는 단계, 및
    상기 요청을 실행하고 출력 큐(output queue)로 상기 결과들을 송신하기 위해 상기 암호 장치에 명령하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 배취는, 각 요청에 대한 데이터 길이를 포함하여, 상기 요청들에 관련된 복수의 파라미터들도 포함하며,
    상기 요청된 암호 활동을 수행하는 단계는,
    시스템 레벨의 프로세스에서,
    맵핑된 메모리의 오퍼레이션(memory-mapped operation)을 통해 메모리 내로 파라미터들을 송신하기 위해 입력 큐에 명령하는 단계,
    상기 메모리로부터 상기 배취된(batched) 파라미터들을 리딩하는 단계,
    상기 파라미터들에 기초한 암호 장치에 대한 상기 요청들 각각의 상기 데이터 길이들과 동일한 데이터의 양을 송신하기 위해 상기 입력 큐에 명령하는 단계, 및
    상기 요청을 실행하고 출력 큐에 대한 상기 결과들을 송신하기 위해 상기 암호 장치에 명령하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020077019871A 2005-02-18 2006-02-21 하드웨어 보안 모듈의 다이나믹 로딩 KR20070120094A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US65414505P 2005-02-18 2005-02-18
US65461405P 2005-02-18 2005-02-18
US60/654,614 2005-02-18
US60/654,145 2005-02-18

Publications (1)

Publication Number Publication Date
KR20070120094A true KR20070120094A (ko) 2007-12-21

Family

ID=36917161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077019871A KR20070120094A (ko) 2005-02-18 2006-02-21 하드웨어 보안 모듈의 다이나믹 로딩

Country Status (4)

Country Link
US (1) US20070180228A1 (ko)
KR (1) KR20070120094A (ko)
GB (1) GB2438134A (ko)
WO (1) WO2006089278A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080002681A1 (en) * 2006-06-30 2008-01-03 Symbol Technologies, Inc. Network wireless/RFID switch architecture for multi-core hardware platforms using a multi-core abstraction layer (MCAL)
EP3032453B1 (en) * 2014-12-08 2019-11-13 eperi GmbH Storing data in a server computer with deployable encryption/decryption infrastructure
US10296765B2 (en) 2015-09-30 2019-05-21 International Business Machines Corporation Multi-level security enforcement
US10360393B2 (en) * 2017-04-28 2019-07-23 International Business Machines Corporation Synchronizing write operations
US10915463B2 (en) 2017-04-28 2021-02-09 International Business Machines Corporation Synchronizing requests to access computing resources
US10909250B2 (en) * 2018-05-02 2021-02-02 Amazon Technologies, Inc. Key management and hardware security integration
DE102018208066A1 (de) * 2018-05-23 2019-11-28 Robert Bosch Gmbh Datenverarbeitungseinrichtung und Betriebsverfahren hierfür
US11630921B2 (en) * 2020-03-10 2023-04-18 Google Llc Batch cryptography for hardware security modules

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596718A (en) * 1992-07-10 1997-01-21 Secure Computing Corporation Secure computer network using trusted path subsystem which encrypts/decrypts and communicates with user through local workstation user I/O devices without utilizing workstation processor
US5268962A (en) * 1992-07-21 1993-12-07 Digital Equipment Corporation Computer network with modified host-to-host encryption keys
US6938269B2 (en) * 1999-12-02 2005-08-30 Matsushita Electric Industrial Co., Ltd Video file providing apparatus, video receiving/reproducing apparatus, internet broadcast system, and computer-readable recording medium
US6701528B1 (en) * 2000-01-26 2004-03-02 Hughes Electronics Corporation Virtual video on demand using multiple encrypted video segments
US20020039420A1 (en) * 2000-06-12 2002-04-04 Hovav Shacham Method and apparatus for batched network security protection server performance
US7409094B2 (en) * 2001-05-04 2008-08-05 Hewlett-Packard Development Company, L.P. Methods and systems for packetizing encoded data
US7730154B2 (en) * 2001-12-19 2010-06-01 International Business Machines Corporation Method and system for fragment linking and fragment caching
US7318160B2 (en) * 2002-02-01 2008-01-08 Hewlett-Packard Development Company, L.P. Cryptographic key setup in queued cryptographic systems

Also Published As

Publication number Publication date
GB0716648D0 (en) 2007-10-10
GB2438134A (en) 2007-11-14
WO2006089278A2 (en) 2006-08-24
WO2006089278B1 (en) 2007-01-25
US20070180228A1 (en) 2007-08-02
WO2006089278A3 (en) 2006-12-14

Similar Documents

Publication Publication Date Title
KR20070120094A (ko) 하드웨어 보안 모듈의 다이나믹 로딩
US8374343B2 (en) DES hardware throughput for short operations
CN100487715C (zh) 一种数据安全存储系统和装置及方法
US11216570B2 (en) Reducing compromise of sensitive data in virtual machine
US20150379276A1 (en) System on a chip, controller and method for securing data
CN103765395A (zh) 用于将逻辑地址转换成物理地址的设备和方法
US20120311348A1 (en) Method and System for Embedded High Performance Reconfigurable Firmware Cipher
US8938072B2 (en) Cryptographic key derivation device and method therefor
CN116070240B (zh) 多芯片调用机制的数据加密处理方法及装置
Zhong et al. SAED: A self-adaptive encryption and decryption architecture
TW561752B (en) Processor assembly for security-relevant applications and method for performing security-relevant applications
CN112560086A (zh) 一种用于密码协处理器的配置方法、装置、cpu及电子设备
CN100449451C (zh) 计算机加密装置及其加密方法
CN115516454B (zh) 硬件安全模块和系统
Liu et al. The implementation of video encryption network card
CN116894277A (zh) 用于处理与安全模块关联的数据的方法和设备
CN118199986A (zh) 明文流量获取方法和装置
CN118193119A (zh) 使用存储在加速器存储器的元数据的数据变换加速
CN118193120A (zh) 数据变换加速
CN117992378A (zh) 使用dpa的可编程的用户定义的外围总线设备实现
CN116579000A (zh) 安全信息保护方法、电子设备及存储介质
Richter Optimierung des Merkle-Signaturverfahrens auf System z

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application