KR20060132514A - 데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체 - Google Patents

데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR20060132514A
KR20060132514A KR1020060054913A KR20060054913A KR20060132514A KR 20060132514 A KR20060132514 A KR 20060132514A KR 1020060054913 A KR1020060054913 A KR 1020060054913A KR 20060054913 A KR20060054913 A KR 20060054913A KR 20060132514 A KR20060132514 A KR 20060132514A
Authority
KR
South Korea
Prior art keywords
data
bit vector
data words
control
vector
Prior art date
Application number
KR1020060054913A
Other languages
English (en)
Other versions
KR100887003B1 (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 KR20060132514A publication Critical patent/KR20060132514A/ko
Application granted granted Critical
Publication of KR100887003B1 publication Critical patent/KR100887003B1/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

외부 메모리에 저장할 데이터를 암호화하고 해독하는 암호화 수단으로부터 업스트림방향으로 리던던시 수단 및 제어 수단을 배열함으로써, 리던던시 수단에 의해 리던던시 정보 생성을 실현할 때 그리고 데이터의 임의의 변경을 가리키는 신드롬 비트 벡터의 생성이 제어 수단에 의해 구현될 때 제어 데이터의 무결성을 보장할 수 있다. 멱등 희박 순환 정사각 서브 행렬들로만 구성된 제어 행렬이 바람직하다. 리던던시 및 제어 수단을 암호화/해독 수단으로부터 업스트림 방향으로 배열함으로써, 암호화된 데이터의 에러 및 암호화되지 않은 데이터의 에러 모두를, 이들이 리던던시/제어 수단 및 암호화/해독 수단 사이의 데이터 경로에서 발생하였음을 조건으로 할 때, 증명할 수 있다.

Description

데이터의 무결성을 보호하는 장치 및 방법{APPARATUS AND METHOD FOR PROTECTING THE INTEGRITY OF DATA}
도 1은 데이터의 무결성을 보고하는 장치,
도 2는 기록 동작에서의 데이터 워드들의 상태를 설명하는 상태도,
도 3은 판독 동작동안 데이터 워드들의 상태를 설명하는 상태도,
도 4a 내지 4d는 멱등 희박 순환 정사각 행렬들을 도시하는 도면,
도 5는 제품 코드를 생성하는 코드 필드.
도면의 주요 부분에 대한 부호 설명
2 : 메인 프로세서 4 : 메모리 시스템
6 : 데이터 레지스터 8 : 중앙 프로세서
10 : 계산 유닛 12 : 리던던시 유닛
14 : 제어 유닛 16 : 캐시
18 : 내부 메모리 20 : 암호화/해독 유닛
22 : 대용량 메모리 24 : 제 1 데이터 접속부
26 : 제 2 데이터 접속부 28 : 제 1 양방향 데이터 접속부
30 : 제 2 양방향 데이터 접속부 32 : 제 3 양방향 데이터 접속부
34 : 제 4 양방향 데이터 접속부 36 : 미암호화 데이터 세트
38 : 데이터 비트 벡터 40 : 제어 비트 벡터
42 : 전체 비트 벡터 44 : 암호화된 전체 비트 벡터
46 : 리던던시 정보 48 : 전체 비트 벡터 생성
50 : 암호화 단계 52 : 암호화된 데이터 세트
54 : 암호화된 전체 비트 벡터 56 : 해독된 전체 비트 벡터
58 : 신드롬 비트 벡터
60a 내지 60e : 해독된 데이터 워드 벡터
62a 내지 62e : 해독된 치환 데이터 워드 벡터
64a 내지 64e : 암호화된 치환 데이터 워드 벡터
66 : 암호화 단계 68 : 판독 전달 단계
69 : 확인 단계 70 : 치환 단계
72 : 검증 단계 74 : 비교 단계
76 : 재구성 단계 78 : 에러 단계
100 : 제 1 행렬 행 102 : 제 2 행렬 행
200 : 데이터 비트 블록 202 : 제 1 체크 비트 벡터
204 : 제 2 체크 비트 벡터 206 : 데이터 워드
208 : 제어 영역
본 발명은 데이터의 무결성을 보호하는 장치 및 방법에 관한 것으로서, 예를 들어 마이크로콘트롤러 의해 처리 및 저장되는 데이터의 무결성을 보호하는 장치 및 방법에 관한 것이다.
많은 응용 시나리오에 있어서, 저장된 데이터를 미인가인(unauthorized person)에 의해 액세스되지 않도록 보호하는 것이 바람직하며, 이것이 바로 데이터를 암호화된 형태로 메모리에 저장하는 이유이다. 여기서, 데이터는, 버스 시스템을 통한 전달동안 또는 메모리에서의 드웰(dwell) 시간동안 임의적으로 발생하는 에러들, 장애들로 인해 변경될 수 있으며, 예를 들어, 개별 비트가 토글된다. 장애 공격을 이용하여 시스템 보안을 위태롭게 하는 공격자는, 대부분의 경우 장애 공격에서 변경되는 버스를 통해 저장되거나 송신되는 데이터 패킷의 1비트를 초과할 정도로 저장된 데이터를 고의적으로 변경한다. 따라서, 데이터를 암호화하여 저장하는 것에 더하여, 임의적으로 또는 고의적으로 야기되는 그 데이터의 임의의 변경을 인식할 수 있는 장치도 필요하다.
일반적으로 시스템상의 공격을 인식하려면, 일부 장소에서 센서들을 이용한다. 이 센서들은, 예를 들어, 시스템내로 고의적으로 공급되는 과전압을 측정하는 전압 측정 기구일 수 있다. 또한, 온도 및 광 센서들을 이용하여 예를 들어 오픈되거나 접지 오픈된 하우징을 인식한다.
다른 가능성있는 보호는, 데이터 워드들이 사용되기 전에 데이터 워드들에게 리더던시 정보를 제공하는 것이며, 이 리던던시 정보는 디지털로 저장된 데이터 워드의 비트들의 변경을 검출할 수 있게 하고, 리던던시 정보의 특성에 의존하여 변경을 정정할 수 있게 한다. 여기서, 리던던시 정보는, 외부 메모리 영역에서 암호화된 데이터의 변경을 인식하도록 전형적으로 암호화된 후 데이터에 부가된다. 독일 특허출원 10 2005 001953.6은 여러 개의 데이터 워드들로 구성된 데이터 세트를 검증하는 방법을 추가로 설명하고 있으며, 여기서 리던던시 데이터 워드는 암호화 전에 모든 데이터 워드들을 "XOR" 논리 연산하고, 그 데이터 세트는 워드 단위로 암호화되며 리던던시 정보 후에 저장된다.
센서들을 이용한 공격 검출은 포화, 즉, 포괄적인 장애 공격 검출을 활성화하지 않으며, 예를 들어 완전히 디지털 회로보다 상당히 높은 비용을 야기한다. 여기서, 포화란, 데이터 생성 순간으로부터 물리적 센서들로 전체 데이터 경로를 감시할 수 없음을 의미한다. 데이터를 암호화한 후 리던던시 정보를 부가하는 것은, 이러한 방식으로 외부 메모리에서 발생하는 에러들만이 증명될 수 있다는 큰 이점을 갖고 있다. 계산 유닛과 암호화 유닛 사이의 데이터에 있어서 공격으로 인해 또는 임의적으로 발생하는 데이터 에러들을 인식할 수 없다. 암호화전에 데이터를 XOR 논리 연산함으로써 XOR 의 단순한 수학 연산으로 인해 데이터 세트의 홀수개의 데이터 비트들을 공격에 의해 변경한 경우에만 공격을 발견할 수 있다는 단점이 발생한다.
본 발명의 목적은 암호화 전 데이터 변경 및 암호화된 데이터 변경을 증명할 수 있는 장치 및 방법을 제공하는 것이다.
이러한 목적은 청구항 제 1 항, 청구항 제 9 항, 청구항 제 11 항중 어느 한 항에 기재된 장치에 의해, 또는 청구항 제 13 항, 청구항 제 14 항, 청구항 제 15 항중 어느 한 항에 기재된 방법에 의해 달성된다.
본 발명의 핵심은, 리던던시 수단 및 제어 수단을 암호화 수단으로부터 업스트림 방향으로 배열하고, 이것은 외부 메모리에 저장할 데이터를 암호화 및 해독하고, 리던던시 수단에 의한 리던던시 정보 생성 및 데이터의 임의의 변경을 가리키는 신드롬 비트 벡터의 제어 수단에 의한 생성을 실현하는 경우 데이터의 무결성을 보장할 수 있다는 것이다. 제어 행렬은, 멱등, 희박, 순환 정사각(idempotent, thinly populated, circulant square) 서브 행렬들로부터만 구축되는 것이 바람직하다. 리던던시 및 제어 수단을 암호화/해독 수단으로부터 업스트림 방향으로 배치함으로써, 암호화된 데이터 및 비암호화된 데이터 모두에서의 에러들이, 리던던시/제어 수단 및 암호화/해독 수단 사이의 데이터 경로에서 발생하는 한 증명될 수 있다. 멱등 희박 순환 정사각 서브 행렬들로 특정하게 설계된 제어 행렬은 바람직하게 장애 공격으로부터의 보호를 위한 선형 코드를 나타내며, 컴퓨터 하드웨어에서의 수단 및/또는 방법을 구현할 수 있게 하고, 이 경우 단지 작은 실리콘 영역이 필요하며, 그 구현을 위한 전류 소모는 매우 적다.
본 발명의 특정 실시예에서, 리던던시 및 제어 수단은 데이터 프로세서와 동일한 컴퓨터 칩내에 배치되며, 저장할 데이터 워드들이 데이터 프로세서에 의해 생성된 후 바로 이 데이터 워드들에 리던던시 정보가 제공된다. 데이터를 외부 메모리에 저장되기 전에, 이 데이터를 레지스터 및 래치를 통해 암호화 유닛으로 전달하며 이 암호화 유닛은 그 데이터를 암호화하여 암호화된 데이터를 외부 메모리에 저장한다. 이러한 배치에 의하면, 전체 과정동안 시스템에 의해 데이터 프로세서의 데이터가 보호되며, 이에 따라 데이터를 암호화하기 전 및 암호화한 후 모두의 경우에 시스템상에서의 공격 및/또는 데이터의 임의의 변경을 증명할 수 있는 큰 장점이 있다.
본 발명의 다른 실시예에서, 리던던시 수단은, 세트로 되어 있는 데이터 블록의 여러 개의 데이터 워드들을 위한 리던던시 정보의 생성이 데이터 워드들의 개별 비트들로부터 형성된 데이터 비트 벡터에 의한 생성기 행렬의 행렬 승산을 포함하는 방식으로 구성된다. 생성기 행렬은, 제 2 데이터 비트 벡터가 선행하는 제 1 데이터 비트 벡터와 하나의 차이 비트 벡터만큼 다를 때 제 2 데이터 비트 벡터의 리던던시 정보의 제 2 부분이 간단하게 형성될 수 있는 방식으로 선택된다. 이후, 차이 비트 벡터가 생성기 행렬로 승산될 때 그리고 그 결과 차이 리던던시 비트 벡터에 제 1 리던던시 비트 벡터가 부가될 때, 리던던시 정보의 제 1 부분으로부터 리던던시 정보의 제 2 부분을 형성할 수 있다. 2개의 연속하는 데이터 비트 벡터들이 단지 몇 비트만큼 상이하다면, 리던던시 생성이 하드웨어에서 구현될 때, 행 렬의 이러한 특성으로 인해 상당한 에너지를 세이브할 수 있으며, 그 이유는 몇 개의 변경 비트만 승산 연산을 받으면 되기 때문이다.
본 발명의 또다른 실시예에서, 외부 메모리로부터 판독한 데이터가 해독 유닛에 의해 해독되면 그 데이터의 무결성을 체크한다. 해독된 데이터에 적절한 제어 행렬을 승산함으로써 리던던시 수단에 의해 신드롬 비트 벡터를 생성한다. 이 신드롬 비트 벡터가 제로 벡터이면, 저장동안 또는 암호화/해독화동안 데이터가 변경되지 않았다고 결론내릴 수 있다. 따라서, 판독한 데이터는 비조작(non-manipulated)되어 있다고 가정한다. 신드롬 비트 벡터가 제로 벡터와 다르면, 암호화 전에 리던던시 정보가 데이터에 부가되었다는 사실로 인해 그 데이터에서의 비트 에러를 항상 정정할 수 있다. 이것은 데이터 암호화가 상당히 비선형적인 연산이기 때문에 큰 장점이며, 이에 따라 하나의 비트 위치에서만 변경된 암호화된 데이터 워드가, 해독 후, 여러 비트 위치들에서 원래의 데이터 워드와 상이한 데이터 워드를 발생한다. 본 발명의 장치는, 특히, 랜덤 1비트 에러만큼 데이터가 변경되었는지 여부 또는 시스템상의 공격에 의해 여러 비트 위치들에서 그 데이터가 변경되었는지 여부를 구별하게 하는 가능성을 제공한다.
본 발명의 또다른 실시예에서, 4개의 32비트 워드들로 구성된 각 메시지 블록에는 그 메시지 블록으로부터 계산된 추가 정보(제어 워드)가 제공되고, 관련된 제어 워드도 32비트 길이를 갖는다. 신드롬을 4개의 메시지 워드들 및 제어 워드로부터 계산한다는 점에서 데이터의 무결성을 검증한다. 이후, 신드롬은 추가 32비트 워드이다. 어떠한 에러도 발생하지 않았다면, 신드롬은 제로 워드(또는 32개 의 제로들로 구성된 제로 벡터)이다. 역으로, "신드롬 = 제로 벡터"라는 사실을 해석해보면 어떠한 에러도 발생하지 않았음을 의미한다. 이 역 결론이 정확할 확률은, 임의의 에러가 발생할 수 있다는 가정하에(전체 160비트들중 임의의 개수가 장애 공격에서 변경되었다는 가정하에) 1 - 1/232이다. 그러나, 광, 레이저 또는 스파이크 공격으로 인해 버스를 통한 메시지의 전달동안 발생한 제한된 에러들을 갖는, 또는 개별적 버스 라인을 강제함으로써 야기된 에러들을 갖는 일부 공격 시나리오에서는, 역 결론이 절대적으로 정확하다. 이것은, 이러한 공격들이 항상 인식된다는 것을 의미한다. 본 발명의 장점은, 절대적으로 객관적인 확신으로 시스템상의 공격을 증명할 수 있으며, 본 발명의 2비트 워드들을 처리하기 위한 리던던시 및 제어 수단의 구성은 데이터의 무결성을 보호하는 장치를 기존의 32비트 프로세서 아키텍쳐내로 어떠한 문제없이 집적하는 확률을 제공한다는 것이다.
이하, 본 발명의 바람직한 실시예들을 첨부 도면을 참조하여 상세히 설명한다.
도 1은 본 발명에 따라 데이터의 무결성을 보호하기 위한 장치를 개략적으로 도시한다. 메인 프로세서(2) 및 메모리 시스템(4)이 도시되어 있다. 메인 프로세서(2)는, 데이터 워드들을 송수신하는 데이터 레지스터(6)와, 계산 유닛(10), 리던던시 유닛(12), 제어 유닛(14)으로 구성되는 중앙 프로세서(8)를 포함한다. 메모리 시스템(4)은 패스트 임시 메모리(16)인 소위 캐시와, 내부 메모리(18)와, 암호화/해독 유닛(20)과, 대용량 메모리(22)를 포함한다. 리던던시 유닛(12)은 제 1 데이터 접속부(24)에 의해 데이터 레지스터(6)에 접속되어 데이터 워드들을 데이터 레지스터로 송신한다. 데이터 레지스터(6)는 데이터 레지스터(6)로부터 제어 유닛(14)으로 데이터 워드들을 송신하도록 제 2 데이터 접속부(26)에 의해 제어 유닛(14)에 접속된다. 데이터 레지스터(6)는 데이터 레지스터(6)와 캐시(16) 간에 데이터 워드들을 교환할 수 있도록 제 1 양방향 데이터 접속부(28)를 통해 캐시(16)에 접속된다. 동일한 용도로, 데이터 레지스터(6)는 제 2 양방향 데이터 접속부(30)를 통해 내부 메모리(18)에 접속된다. 제 3 양방향 데이터 접속부(32)를 통해, 캐시(16)가 암호화/해독 유닛(20)에 접속되고, 이 유닛은 다시 제 4 양방향 데이터 접속부(34)를 통해 대용량 메모리(22)에 접속된다.
다음으로, 도 1의 실시예의 연산 모드를 간략히 설명한다. 판독 및 기록동안 송신되는 데이터 워드들상에 수행되는 처리 단계들의 상세한 설명에 대해서는, 도 2 및 도 3을 참조하기 바란다.
계산 유닛(10)에 의해 계산되는 데이터 워드들은 리던던시 유닛(12)에 의해 계산된 리던던시 데이터 워드를 갖는 리던던시 유닛(12)에 의해 링크되고, 이에 따라 데이터 워드들 및 리던던시 데이터 워드가 제 1 데이터 접속부(24)를 통해 데이터 레지스터(6)내로 송신된다. 데이터 레지스터(6)는, 필요한 저장 지속 기간에 의존하여 데이터 워드들 및 리던던시 데이터 워드를, 양방향 데이터 접속부(30)를 통해 내부 메모리(18)내로 송신할 수 있는 반면 양방향 데이터 접속부(28)를 통해 캐시(16)내로 송신할 수 있다. 데이터 워드들 및 리던던시 데이터 워드를 양방향 데이터 접속부(32)를 통해 캐시(16)로부터 암호화/해독 유닛(20)으로 송신하며, 여 기서 데이터 워드들 및 리던던시 데이터 워드를 암호화/해독 유닛(20)에 의해 암호화된 데이터 워드들 및 암호화된 리던던시 데이터 워드로 변환하고, 그 데이터 워드들의 각각을 암호화된 데이터 워드로 개별적으로 변환한다. 이후, 암호화된 데이터 워드들 및 암호화된 리던던시 데이터 워드를 양방향 데이터 접속부(34)를 통해 대용량 메모리내로 송신한 후, 그 메모리에 저장한다.
판독 동작동안, 암호화된 데이터 워드들 및 암호화된 리던던시 데이터 워드를 양방향 데이터 접속부(34)를 통해 대용량 메모리(22)로부터 암호화/해독 유닛(20)으로 함께 송신하고, 이 유닛에서 워드 단위로 해독된다. 해독된 데이터 워드들 및 해독된 리던던시 데이터 워드를 양방향 데이터 접속부(32)를 통해 캐시(16)로 송신하고, 여기서 해독된 데이터 워드들 및 해독된 리던던시 데이터 워드를 양방향 데이터 접속부(28)를 통해 데이터 레지스터(6)내로 송신한다. 데이터 레지스터(6)로부터, 해독된 데이터 워드들 및 해독된 리던던시 데이터 워드를 데이터 접속부(26)를 통해 제어 유닛(16)으로 송신하고, 이 제어 유닛은, 메모리 시스템(4)을 통한 전달동안 데이터 워드들이 변경되었는지 여부에 대하여 결정을 내릴 수 있는 신드롬 비트 벡터에 의해 데이터 워드들 및 리던던시 데이터 워드로부터 신드롬 비트 벡터를 계산한다.
도 1 및 도 2의 상태도를 참조하여 데이터의 저장동안 발생하는 프로세스들을 상세히 설명한다. 도 2는 데이터 워드들(m0 내지 m3)로 구성된 비암호화된 데이터 세트(36)를 나타내고, 데이터 워드들(m0 내지 m3)은 각각의 경우에 32비트 워드 들이며, 이것은 32개의 연속 비트들의 벡터로서 표현될 수 있다. 데이터 세트(36)는 하나의 벡터에서 각각 개별적인 데이터 워드들(m0 내지 m3)의 32비트들을 연속적으로 배열함으로써 형성되는 데이터 비트 벡터(38)에 의해 표현된다. 제어 비트 벡터(40), 전체 비트 벡터(42), 및 암호화된 전체 비트 벡터(44)도 도시되어 있다. 기록 동작동안, 계산 유닛(10)에 의해 데이터 워드들을 계산하고 리던던시 유닛(12)에 데이터 비트 벡터(38)로서 송신된다. 리던던시 유닛(12)은 리던던시 형성 단계(46)에서 데이터 비트 벡터(38)를 생성기 행렬로 승산함으로써 제어 비트 벡터(40)를 생성한다. 전체 비트 벡터 생성(48)동안, 리던던시 유닛(12)은 전체 비트 벡터(42)에서 제어 비트 벡터(40) 및 데이터 비트 벡터(38)를 결합하고, 이를 위해 제어 비트 벡터(40)는 데이터 비트 벡터(38)에 추가되는 전체 비트 벡터(42)의 최종 32비트들이다. 암호화 단계(50)동안, 전체 비트 벡터(42)는 데이터 레지스터(6) 및 캐시(16)를 통해 암호화/해독 유닛(20)으로 송신되고, 이 유닛에서 전체 비트 벡터가 워드 단위로 암호화되며, 이에 따라 암호화/해독 유닛(20)의 출력에서, 암호화된 전체 비트 벡터(44)가 이용가능하며, 이것은 외부 메모리(22)에 저장된다. 워드 단위로 암호화를 수행하기 때문에, 암호화된 전체 비트 벡터(44)는, 암호화된 워드들(m0 내지 m3)과 암호화된 제어 비트 벡터가 한 줄로 정렬된 비트 표현으로 구성된다.
이하, 도 3을 참조하여 대용량 메모리(22)로부터 판독되는 데이터 세트의 데이터 워드들의 개별 상태들을 설명하며, 증명할 수 있는, 저장된 데이터의 변경을 정정할 수 있는 방안도 언급한다. 도 3은, 암호화된 전체 비트 벡터(54)에 의해 표현되는 암호화되고 저장된 데이터 세트(52), 해독된 전체 비트 벡터(56), 신드롬 비트 벡터(58), 해독된 데이터 워드 벡터들(60a 내지 60e), 치환된 데이터 워드 벡터들(62a 내지 62e), 및 암호화된 치환 데이터 워드 벡터들(64a 내지 64e)을 도시한다. 대용량 메모리(22)는 암호화된 전체 비트 벡터(54)를 내부에 저장하고 있으며, 이것은 해독 단계(66)에서 암호화/해독 유닛(20)에 의해 워드 단위로 해독되며, 이에 따라 해독 후, 해독된 전체 비트 벡터(56)가 이용가능하며, 이 벡터는 해독된 데이터 워드 벡터들(60a 내지 60e)로 구성되며 판독 전달 단계(68)에서 암호화/해독 유닛(20)으로부터 제어 유닛(14)으로 캐시(16) 및 데이터 레지스터(6)를 통해 송신된다. 해독된 전체 비트 벡터(56)를 이진 제어 행렬로 승산함으로써, 제어 유닛(14)은, 해독된 전체 비트 벡터(56)로부터, 해독된 전체 비트 벡터(56)의 무결성을 검증할 수 있음으로써 신드롬 비트 벡터(58)를 형성한다. 신드롬 비트 벡터(58)가 제로 벡터이면, 즉, 이 벡터의 모든 32비트들이 0이면, 데이터가 대용량 메모리(22)에서 전혀 변경되지 않았거나 판독 전달 단계(68)동안 전혀 변경되지 않았다는 것을 확인 단계(69)에서 추론하고, 해독된 전체 비트 벡터(56)가 기록 동작동안 생성된 전체 비트 벡터(42)에 대응한다고 가정한다.
신드롬 비트 벡터가 제로 벡터와 동일하지 않다면, 데이터는 변경되었으며 그 이유는 기록 동작동안의 제어 비트 벡터가 생성되었기 때문이다. 여기서, 초기에 가정하는 것은, 데이터 워드들중 하나의 비트가 대용량 메모리(22)에서의 데이터의 드웰 시간동안 우연히 변경되었다는 점이다. 해독 단계(66)동안 암호화/해독 유닛(20)의 상당히 비선형적인 해독 연산에 의해, 해독된 데이터 워드 벡터의 복수의 변경된 비트들에서, 데이터 워드 벡터의 해독 전에, 개별적으로 변경된 비트가 스스로 나타나게 되며, 즉, 이러한 해독된 데이터 워드 벡터가 복수의 비트들에서 그 데이터 워드 벡터의 기저 데이터 비트 벡터와 상이하다. 그럼에도 불구하고, 본 발명의 장치에 따라, 암호화된 데이터 워드 벡터들중 하나에서 일 비트 에러를 인식할 수 있고 이를 정정할 수 있다. 이것은 기록동안 비암호화된 데이터 세트에 부가된 리던던시 정보때문에 가능하며, 이를 후술한다.
신드롬 비트 벡터(58)가 제로 벡터와 동일하지 않으면, 제어 유닛(14)에 의해 치환 단계(70)에서 치환 데이터 워드 벡터들(62a 내지 62e)을 먼저 형성하고, 이 치환 데이터 워드 벡터들(62a 내지 62e)은 해독된 데이터 워드 벡터들(60a 내지 60e)에 의존하여 형성되며, 이것은 추가 리던던시 정보로 인해 가능하다. 암호화된 전체 비트 벡터(54)의 데이터 워드들의 개별적인 워드중 하나만이 비트 에러에 의해 영향을 받는다는 가정의 결과로, 하나의 정밀하게 치환된 데이터 워드 벡터(62a 내지 62e)가 존재할 것이며, 이것은 에러 없는 방식으로 해독된 데이터 워드 벡터들(60a 내지 60e)의 4개의 데이터 워드들에만 의존한다.
검증 단계(72)에서, 치환된 데이터 워드 벡터들(62a 내지 62e)은 암호화/해독 유닛(20)에 의해 워드 단위로 암호화되고, 이에 따라 암호화되고 치환된 데이터 워드 벡터들(64a 내지 64e)이 발생한다. 비교 단계(74)에서, 제어 유닛(14)은, 암호화된 전체 비트 벡터(54)의 데이터 워드들로부터 암호화되고 치환된 데이터 워드 벡터들(64a 내지 64e)의 해밍 거리를 형성하며, 이 데이터 워드들은 암호화되고 치 환된 데이터 워드 벡터들과 관련되어 있다. 암호화된 전체 비트 벡터(54)의 데이터 워드에서 에러가 개별적인 비트 에러로 인해 야기되었다면, 암호화되고 치환된 파트너로부터 관련된 데이터 워드의 해밍 거리는 정밀하게 1일 것이며, 해독된 전체 비트 벡터(56)는 재구축 단계(76)에서 완전히 에러 없는 방식으로 구축될 수 있다. 암호화된 데이터 세트(52)의 데이터 워드들중 어떠한 것도 자신과 관련되어 있는 암호화되고 치환된 데이터 워드 벡터로부터 1인 해밍 거리를 갖지 않는다면, 에러 단계(78)에서 암호화된 데이터 세트(52)의 1비트 초과가 공격에 의해 변경되었다고 가정하며, 이에 따라 적절한 조취를 취하여 그 공격을 처리할 수 있다.
본 발명의 또다른 실시예에서, 장애 공격으로부터의 보호용 선형 코드를 특정하게 설계한 제어 행렬에 의해 규정하며 그리고/또는 구현한다. 이하, 본 발명에 따른 데이터 무결성을 보호하기 위한 장치를 설계하는데 필요한 기본적 고려사항을 간략히 설명한다. 시스템용으로 에러 검출(EDC) 또는 에러 정정 코드(ECC)를 개발하기 위한 기본적인 필요 조건은 장애 모델을 이용하는 것이다. 장애 모델은 잠재적 에러들의 수학적 요약이다. 이 경우, 장애 모델은 시스템에 대한 잠재적 공격의 영향을 고려해야 한다. 마이크로콘트롤러가 매우 복잡한 시스템이기 때문에, 시스템은 초기에 작은 서브 시스템들로 분할되고, 그 작용은 모델링하기 쉽다. 마지막으로 고려할 사항으로, 전체 시스템의 일반적인 장애 모델을 다시 서브 시스템들의 개별적인 기능성 블록들로부터 종합해야 한다. 본 실시예는, 도 1에서 알 수 있듯이, 데이터 경로에 위치하는 데이터 레지스터(6), 캐시(16), 및 대용량 메모리(22)를 고려한다.
이하, 본 발명을 설명하고자 공격 시나리오에 대한 가정을 간략히 설명한다.
많은 종류의 로컬 캐릭터 공격이 존재하며, 즉, 공격자가 개별적인 비트들을 변경할 가능성이 있다. 전문적 공격자는 제어 방식으로(예를 들어, 포커싱된 레이저 빔을 이용하여) 개별적인 비트들을 변경하거나 마이크로 샘플들을 이용할 가능성이 있다. 다른 종류의 공격들은 비트 그룹들 또는 개별적 비트들을 임의적으로 변경한다. 예를 들어, 공격자가 개별적인 비트 그룹들을 선택하고자 애퍼처 장치와 함께 이온화 방사를 이용하면, 공격자는 임의적으로 개별적인 비트 그룹들을 변경하는 위치에 있을 것이다. 방사 강도의 조절은 에러 벡터의 가중이 최대화된다는 취지로 그 공격을 세분화할 수 있다. 여기서, 에러 벡터는, 변경된 비트들의 위치에서 1을 나타내고 나머지 위치들에서 0을 나타내는 이진 수들의 벡터이다. 반감기가 짧은 과전압 또는 강력한 로컬 과열(예를 들어, 온도 유도 전압 변화)을 이용한 공격으로 인해 임의적 비트 에러들이 발생할 수 있다. 광을 이용하는 시스템의 방사와 같이 덜 정교한 (그럼에도 불구하고 매우 효율적인) 공격 (플래시 광 공격) 또는 회로로 인해 "버스트" 에러들이 발생할 수 있으며, 즉, 비교적 많은 비트들을 동일한 논리 상태, 즉, 1 또는 0으로 만든다. 버스트 에러들을 야기하는 환경 또는 특징에 대하여 사실에 입각한 이해를 구할 수는 없지만, 이러한 많은 공격에 있어서 이웃 비트들이 동일한 상태로 전환할 확률이 높다는 여러 지시가 존재한다. 따라서, 향후 고려 사항으로서, 1 내지 160의 가중을 갖는 모든 에러들이 균등하게 발생가능하다는, 즉, 공격 후 길이 160비트의 데이터 비트 벡터의 임의의 비트 조합이 동일한 발생 확률을 갖는다는 상상할 수 있는 최악의 경우를 가정한 다.
이러한 가정하에, 효율적인 에러 검출 및 에러 정정을 위한 보안 요구 사항을 설명한다. 먼저, 공격자가 자동화 공격을 수행하고, 초당 10개의 장애 공격을 수행하며 그 공격이 한 달이라는 기간에 걸쳐 연속적으로 진행되게 할 수 있다고 가정하면, 전체 공격 수는 10 * 30 * 24 * 3600 = 2,59 * 107 < 225이다. 개별 공격이 검출되지 않는 확률은 1:232이다. 따라서, 한 달내에 공격을 발견하지 못할 확률은, 상술한 공격 시나리오를 고려할 때 1%보다 적어진다.
이하, 에러 정정 방법을 구현하는 여러 가능성들을 간략히 설명한다. 먼저, 선형 에러 코드들을 상세히 고려한다. 규칙적 코드를 이용하여, k개의 정보 비트들(a1a2,...ak)은 길이 n의 코드 워드(c = a1a2,...an)를 형성하도록 n - k 제어 또는 체크 비트들(ak+1ak+2...an)에 의해 강화된다. 따라서,
Figure 112006042741110-PAT00001
모든 코드 워드들의 세트(C)는
Figure 112006042741110-PAT00002
의 서브세트이고, 여기서 IF2 = {0,1}는 이진 수들의 세트이다.
Figure 112006042741110-PAT00003
가 k 차원을 갖는
Figure 112006042741110-PAT00004
의 서브스페이스이면, (이진 규칙적) 선형 (n, k) 코드라 할 수 있다. 다음으로, n = 160 이고 k = 128인 이러한 코드들만을 다룬다. 예시용으로, 간략한 n = 7 및 k = 4인 선형 (n, k) 코드도 이용한다. 선형 (n, k) 코드는 자신의 패러티 체크 행렬(H)에 의해 독특하게 설명될 수 있다. 패러티 체크 행렬(H)은 n - k의 계수를 갖는 이진 (n - k) x n 행렬이 다. 이것은 H = (A, In-k)형태를 갖고, 여기서 In-k는 (n - k) x (n - k) 단위 행렬이다. 행 벡터(
Figure 112006042741110-PAT00005
)는
Figure 112006042741110-PAT00006
일 때에만 코드 워드이다.
여기서, cT는 c의 전치를 의미한다. c가 행 벡터이면, cT는 열 벡터이다.
이하, 아래와 같은 패러티 체크 행렬에 의해 규정되는 선형 (7, 4) 코드를 예로 든다.
Figure 112006042741110-PAT00007
H의 제 1 4개 열들은 행렬(A)을 형성하는 한편 최종 3개의 열들은 단위 행렬(I3)을 형성한다는 것을 알 수 있다. HcT = (0,0,0)T이기 때문에 c = (1,1,0,0,1,0,0)이 코드 워드라는 것을 검증하는 것은 쉬우며, 이것은 선행 연산 결과가 제로 벡터라는 것을 의미한다.
이하, 리던던시 워드를 형성하는 연산, 즉, 소위 인코딩을 상세히 설명한다. H = (A, In-k)가 이진 선형 (n, k) 코드의 패러티 체크 행렬이면, k x n 행렬인
Figure 112006042741110-PAT00008
는 정규 생성기 행렬로 알려져 있다. 데이터 워드(a = a1a2,...ak)를 대응하는 코드 워드(c = a1a2,.akak +1...an)로 인코딩하는 것은 행렬 승산에 의해 수행된다.
Figure 112006042741110-PAT00009
이것은
Figure 112006042741110-PAT00010
과 동일하다.
선행 예를 다시 참조하면, 그 예의 패러티 체크 행렬(H)을 위해, 대응하는 정규 생성기 행렬(G)은 4 x 7 행렬이다.
Figure 112006042741110-PAT00011
따라서, 데이터 워드
Figure 112006042741110-PAT00012
는 아래 연산에 의해 코드 워드로 인코딩된다.
Figure 112006042741110-PAT00013
이것은, 정보 비트(a1a2a3a4)로부터 대응하는 제어 비트들을 아래 연산에 따라 계산한다는 것을 의미한다.
Figure 112006042741110-PAT00014
주목:
패러티 체크 행렬(H)은 3개 행들의 각각에서 유사한 개수를 갖는다는 점에 주목하길 바란다. 이러한 특성은 인코딩 절차의 효율적인 하드웨어 구현용으로 바람직하다. 이후, 정확하게 그리고 특정하게 (n - k) 제어 비트들의 각각을 계산하려면 동일한 수의 XOR 연산이 필요하며, 즉, 동일한 논리 깊이를 갖는다. 다른 바람직한 특성은 H가 희박해야 한다는 것이며, 이진 행렬(H)은 상대적으로 몇 개 되 지 않는 수를 갖는다면 희박으로 언급된다.
이하, 도 1의 실시예에서의 제어 수단(14)에 의해 수행되는, 임의의 변경에 대하여 검증할 데이터 워드를 디코딩하는, 즉, 검증하는 프로세스를 더 상세히 설명한다.
x, y는 다음의 고려 사항에 대하여 2개의 이진 벡터이다. x와 y사이의 해밍 거리(d(x,y))는 x와 t가 상이한 좌표들의 수이다.
x의 해밍 가중(w(x))은 0이 아닌 벡터(x)의 좌표들의 수이다. 결국, w(x) = d(x,0) 및 d(x,y) = w(x - y)이다.
C가 코드를 지정하면,
Figure 112006042741110-PAT00015
은 C의 최소 거리라 칭한다.
선형 코드(C)의 최소 거리는 0이 아닌 각 코드 워드의 최소 가중(해밍 가중)이다. 따라서,
Figure 112006042741110-PAT00016
H가 선형 코드의 패러티 체크 행렬이면, (이러한 조건에서만) 그 코드는, H의 모든 d-1 열들이 선형 독립적이고 모든 d 열들이 선형 종속적인 경우 최소 거리(d)를 갖는다.
이진 코드의 경우, 이것은 상술한 바와 같이 최소 거리(d)의 규정에 등가이다. 이러한 특성들을 상술한 예에 적용하고, 패러티 체크 행렬(H)을 고려한다. H의 3개 열들의 임의의 조합은 선형 독립적이며, 4개의 열들은 선형 종속적이다. 따라서, 행렬(H)에 대응하는 선형 코드는 최소 거리(d= 4)를 갖는다.
짝수인 최소 거리(d)를 갖는 선형 코드는 (d-2)/2 에러들을 정정하고 동시에 d/2 에러들을 검출할 수 있다.
메시지(
Figure 112006042741110-PAT00017
)가 코드 워드(
Figure 112006042741110-PAT00018
)로 코딩되었으며 이후 잡음성 채널을 통해 송신되었다고 (또는 대용량 메모리에 저장되었다고) 가정한다. 벡터(
Figure 112006042741110-PAT00019
)를 수신하게 된다. 송신동안 (또는 저장동안) (d-1)/2 에러들보다 적은 에러가 발생하면, 정확한 코드 워드(c)는 수신기측상의 y로부터 구축될 수 있다. 이를 달성하기 위해, 소위 신드롬이 필요하다.
신드롬은 다음과 같이 정의된다. 즉, H는 선형 (n,k) 코드(C)의 패러티 체크 행렬이다. 길이(n-k)의 열 벡터(
Figure 112006042741110-PAT00020
)는
Figure 112006042741110-PAT00021
의 신드롬이라 칭한다.
패러티 체크 행렬(H)의 정의로 인해,
Figure 112006042741110-PAT00022
는 S(y)가 제로 벡터일 때에만 코드 워드이다.
이에 따라, 이진 코드에 대하여 신드롬이 에러들이 발생한 패러티 체크 행렬(H)의 열들의 합과 동일하게 된다. 또한, 이것은, 신드롬이 에러들의 징후를 가리키기 때문에 S(y) 신드롬의 명칭을 설명해 준다.
이러한 이해를 일예로 아래와 같은 패러티 체크 행렬에 의해 규정되는 선형 코드에 적용한다.
Figure 112006042741110-PAT00023
이를 위해, 먼저 벡터(y = 1,0,1,0,0,0,1)를 수신한다고 가정한다. 신드롬 을 계산하게 되면 다음과 같은 결과가 발생한다.
Figure 112006042741110-PAT00024
신드롬(S(y))은 행렬(H)의 제 2 열 벡터와 매칭하며, 이것은 y의 제 2 좌표가 결함있음을 가리킨다.
또한, 정확한 코드 워드는 c=(1,1,1,0,0,0,1)이고, 정보를 전달하는 비트들은 1110이다.
본 발명의 실시예에서 추가로 설명할 코드에서, 선형 코드의 패러티 체크 행렬을 형성하는 서브 행렬들은 순환 행렬들에 의해 형성되고, 이것이 본 발명과 관련된 순환 행렬들의 특성들을 간략히 설명하는 이유이다.
차수(n)의 순환 행렬은 자신의 제 1 행에 의해 전적으로 결정되는 정사각의 n x n 행렬이다. 제 1 행에 후속하는 각 행에서, 개별 행렬 원소들을 우측으로 하나의 위치만큼씩 정밀하게 시프트하고, 우측 방향으로 그 행렬로부터 벗어나 이동하게 되는 이 행렬 원소들은 좌측의 행으로 재삽입된다. 따라서, 예를 들어,
Figure 112006042741110-PAT00025
는 차수 5의 순환 행렬이다. 이 행렬에서도, Z=[a,b,c,d,e]라는 표기를 사용한다.
A 및 B가 n 차수의 2개의 순환 행렬이면, 곱(C = AB)은 n 차수의 순환 행렬이다.
모든 비단수형(non-singular) (즉, 가역) 이진 n x n 행렬들의 세트는 행렬 승산하에 그룹, 일반적인 선형 그룹(GL(n,IF2))을 형성한다. 모든 이진 비단수형 순환 행렬들의 세트는 GL(n,IF2)의 서브세트이다. A가 비단수형 이진 순환 n x n 행렬이면, 적어도 하나의 양의 정수(e)가 존재하며, 이에 따라
Figure 112006042741110-PAT00026
이며, 여기서 In은 n x n 단위 행렬을 지정한다. 그 결과 Ae -1은 행렬(A)의 역이어야 하며, 이것은 A- 1라고도 칭한다.
순환 행렬들의 한 가지 특성은 비단수형 순환 행렬의 역이 다시 순환 행렬이라는 것이다. 순환 행렬(A)과 열 벡터(u)의 곱의 계산은 공간 및 전류를 세이브하는 방식으로 논리 회로에 의해 하드웨어에서 구현될 수 있다. Au = x가 적용될 수 있으며, 즉, 아래와 같다.
Figure 112006042741110-PAT00027
이것은
Figure 112006042741110-PAT00028
과 동일하다.
하드웨어에서 상술한 연산들을 구현하려면, u의 좌표들의 엔트리를 포함하는 n개의 플립플롭을 갖는 레지스터가 필요하다. 각 플립플롭은 일정 승산기에 접속된 출력을 갖는다. 이 일정 승산기는 입력을 구비하며 연산 결과로서 입력과 이진 상수(ai)와의 곱을 제공한다. 모든 n개 일정 승산기들의 출력들은 단일 공통 결과를 생성하도록 서로 XOR 연산을 거치게 된다.
상술한 바와 같이 표현된 행렬 연산의 시작시, 레지스터는 데이터 비트들(u1,u2,...,un)로 채워진다. 따라서, 상술한 하드웨어에 의해 설명되는 생성 결과는 x1이다. 다음 단계에서, 플립 플롭의 콘텐츠는 하나의 위치만큼 좌측으로 회전되고, 이에 따라 레지스터는 이제 이진 수들(u2,u3,...,un,u1)을 포함하게 된다.
이 단계에서, 상술한 하드웨어 구성의 결과가 x2로 된다. 이 프로세스는 모든 좌표들(x1,x2,...,xn)이 계산되는 시간동안 반복된다.
다음으로, 본 발명의 특정 실시예로서 리던던시 유닛(12) 및 제어 유닛(14)내에 적용된 특정하게 구축된 코드를 설명한다. 임의의 설계가 중점을 둘 수 있는 특정 영역들은 리던던시 유닛(12) 및 제어 유닛(14)의 구현시 코드를 하드웨어내로 효율적으로 집적하고 가능한 적은 전류 소모를 야기하는 가능성이었다. 이러한 특정 요구 사항의 구현은 필요시 상세히 다룬다.
본 발명의 코드(ECC 160)는 특정한 규칙적 선형 (160, 128, 4) 코드이다. 따라서, 이것은, 정보를 전달하는 128 비트들이 전체 길이 160의 코드 워드를 형성하도록 자신들과 관련된 32개의 제어 비트들을 갖는다는 것을 의미한다. 개별 코 드 워드들 간의 해밍 거리는 적어도 4이다. 패러티 체크 행렬(H = (A, I32))은 32 x 160 행렬이고, I32는 32 x32 단위 행렬을 가리킨다. H도 32개 행들과 160개 열들을 갖는다. 32 x 128 행렬(A)의 형태는 A = (A0, A1, A2, A3)이고, 각 j = 0, 1, 2, 3에 대하여, 서브 행렬(A3)은 비단수형 희박 순환 32 x 32 이진 행렬이고 이것은
Figure 112006042741110-PAT00029
라는 특성을 갖는다. 이 특성은, Aj가 자신의 역(
Figure 112006042741110-PAT00030
)과 동일(멱등)하다는 것을 의미한다. 행렬들(Aj)은 아래와 같다.
Figure 112006042741110-PAT00031
여기서, 상술한 바와 같이 순환 행렬들이 자신들의 제 1 행들로 명확하게 표현될 수 있다는 약정을 이용하고 있다. 여기서, 행렬들(Aj)은 도 4a 내지 4d에 나타낸 바와 같이 멱등 순환 행렬들(Pi, 0≤i≤14)로부터 선택된다.
도 4a 내지 4d는, 멱등 특성을 갖는 15개의 가능성있는 순환 비단수형 희박 32 x 32 이진 행렬들을 나타낸다. 행렬의 제 2 행(102) 및 행렬(P0)의 제 1 행(100)에 대하여 알 수 있듯이, 제 1 행을 뒤따르는 행렬의 행(102)은, 제 1 행렬 행(100)의 엔트리들과 비교할 때 각 경우마다 제 2 행렬 행(102)의 엔트리들이 오른쪽으로 하나의 위치만큼 시프트된다는 점에서 생성된다. 다음의 행렬들은 본 발명의 코드용으로 가능성있는 행렬로부터 선택된다.
Figure 112006042741110-PAT00032
다음의 수학적 고려 사항으로서, 표기에 관한 다음에 따른 약정을 이용한다. v=(v0,v1,...,vn-1)가 행 벡터이면, 전치(vT)는 v에 대응하는 열 벡터이다.
Figure 112006042741110-PAT00033
양측 경우에 대하여,
Figure 112006042741110-PAT00034
Figure 112006042741110-PAT00035
이다. 또한, A가 m x n 행렬이면, A의 전치, 즉 AT는 n x m 행렬이며, 이것의 j번째 열은 A의 j번째 행의 전치이며, 여기서 1 ≤ j ≤ m이다.
이것은 다음의 예를 이용하여 예시될 수 있다.
Figure 112006042741110-PAT00036
이하, ECC(160)를 이용하여 리던던시 유닛(12) 및 제어 유닛(14)에 의해 수행되는 기본적인 처리 단계들을 설명한다.
먼저, 제어 유닛(14)에 의해 메시지를 인코딩하는 것이, 리던던시 형성(46) 및 전체 비트 벡터의 후속 생성(48)에 의해 도 2의 상태도로서 개략적으로 도시되어 있다. 메시지(
Figure 112006042741110-PAT00037
)는 4개의 32비트 워드들로 구성되며, 일예로 아래와 같이 기능한다.
Figure 112006042741110-PAT00038
여기서, 인코딩은 추가 32비트 워드(r)가 계산되며, 이 워드는 리던던시 워드 및/또는 제어 비트 벡터(40)라고 칭하며, 리던던시 워드는 전체 비트 벡터(42)를 형성하도록 메시지(m) (및/또는 데이터 비트 벡터(38))에 후속하여 링크된다는 것을 의미한다. 160비트 행 벡터(
Figure 112006042741110-PAT00039
)는 코드 워드라 칭한다. 메시지(m)의 리던던시 워드(r)는 다음의 공식에 따라 계산한다.
Figure 112006042741110-PAT00040
이 수학식은, 다른 방법으로 아래와 같이 표현될 수 있다.
Figure 112006042741110-PAT00041
이하, 160 비트 길이의 수신 메시지가 코드 워드인지 여부를 리던던시 유닛(12)이 검증하는 방식에 대하여 설명한다. 어떠한 임의의 비트 에러들도 없고 에러를 고의적으로 야기하는 공격자도 없는 이상적인 경우에는, 마이크로콘트롤러내에서 발생하는 모든 데이터 워드들은 코드 워드들이다. 리던던시 유닛(12)에 의해 인코딩된 또는 암호화/해독 유닛(20)에서 암호화된 데이터 워드의 임의의 위치에서 1비트 에러가 발생하거나 예를 들어 캐시(16)에서 메시지(y)의 160비트중 임의의 비트에서 1비트 에러가 발생하면, 이 에러는 코드 ECC(160)에 의해 검출되고 정정된다. 1:232의 확률로 (예를 들어 마이크로프로브, 광 또는 과전압 공격 등에 의해 야기되는) 더 많은 에러가 검출된다.
다음으로, 160비트 정보(y), 행 벡터, 즉
Figure 112006042741110-PAT00042
을 가정한다.
y가 코드 워드인지 여부를 검증하기 위해, 제어 유닛(14)은 y의 신드롬(S(y)), 또는 32비트 열 벡터인 신드롬 비트 벡터(58)를 계산한다. 벡터(y)는 S(y)가 제로 벡터인 경우 정밀하게 코드 워드이다. 여기서, 신드롬(S(y))은 다음의 계산에 따라 형성된다.
Figure 112006042741110-PAT00043
H는 상술한 바와 같이 패러티 체크 행렬이다. 따라서, 아래와 같은 식이 적용된다.
Figure 112006042741110-PAT00044
시스템상의 공격을 코드에 의해 증명할 수 있는 확률을 더 잘 이해하기 위해, 시스템내로 도입된 에러 벡터가 시스템에 끼치는 영향을 간략히 설명한다. 이를 위해, 먼저 코드 워드(
Figure 112006042741110-PAT00045
)를 가정한다.
Figure 112006042741110-PAT00046
에서 c가 외부 공격으로 인해 변경되면, 그 변경, 즉, 공격은 에러 벡터(
Figure 112006042741110-PAT00047
)가 코드 워드(c = 비트와이즈 XORing)에 부가된 것이라 설명될 수 있다. 공격 종류에 따라, 에러 벡터(e)는 임의의 벡터일 수 있다. 따라서, y = c + e이고, 신드롬을 형성시, 아래와 같은 식을 얻는다.
Figure 112006042741110-PAT00048
결국, 장애 공격은, 에러 벡터(e)가 코드 워드일 때에만 무시된다. e가 임의의 160비트 벡터이면, e가 코드 워드일 확률은 1:232이다.
본 발명의 실시예에 따라 특정 코드가 나타내는 추가 특성은 1비트 에러를 효율적이면서 빠르게 정정할 수 있는 확률이다. 암호화/해독 유닛(20)과 제어 유닛(14) 사이의 임의의 위치에서 메시지(y)의 160비트 내에서 1비트 에러가 발생하면, 이 에러는 본 발명의 코드(ECC 160)에 의해 하나 또는 두 개의 계산 단계내에서 정정될 수 있다.
이것을 간략히 설명하며, 여기서 먼저
Figure 112006042741110-PAT00049
이다. y를 검증하려면, 신드롬(
Figure 112006042741110-PAT00050
)을 먼저 형성한다. 신드롬이 제로 벡터와 동일하지 않으면, 그리고 S(y)가 패러티 체크 행렬의 160개 열 벡터들중 하나와 동일하면,
Figure 112006042741110-PAT00051
예를 들어, S(y) = hj는 참이라고 전제하면, y = (y0, y1,...,y159)의 좌표(yj)가 결함있다고 추론할 수 있다. 에러를 정정하기 위해, 유일하게 행해야 할 것은 yj를 yj+1로 대체하는 것이다. 패러티 체크 행렬(H)의 특정 형태로 인해, 에러의 경우, 신드롬(S(y))이 행렬(H)의 160개 열들중 하나에 대응하는 특성을 얻게 된다. 특정 로직이 하드웨어내로 추가로 집적되면 이러한 특정 열을 하나 또는 두 개의 계산 단계내에 배치할 수 있다.
대용량 메모리(22)에서 발생하는 1비트 에러들의 정정에 대하여 참조하며, 이러한 1비트 에러들은 제어 유닛(14)에 의해 정정된다.
코드 워드(
Figure 112006042741110-PAT00052
)는 다음 고려 사항들에 대한 기본으로서 가정된다. 암호화된 버전의 코드 워드는 비휘발성 메모리(22; NVM, RAM 또는 ROM)에 저장되고, 그 코드 워드는 암호화/해독 유닛(20; MED)에 의해 암호화되어 있다. 그 뒤 고려 사항으로, 암호화는
Figure 112006042741110-PAT00053
의 스페이스를 자신 상으로 이미징하는 것이며, 이것은 아래와 같은 식을 의미한다.
Figure 112006042741110-PAT00054
여기서, MED-1은 이제부터 암호화용으로 사용되는 암호화/해독 유닛(20)의 역 연산을 지정하는 것이다. MED가 독립 변수(
Figure 112006042741110-PAT00055
)에 적용되는 연산을 암호화라 칭한다. 따라서, 그 연산의 역 연산, 즉, MED-1을 독립 변수(
Figure 112006042741110-PAT00056
)에 적용하는 연산을 해독이라 한다.
여기서, MED의 명백한 보안 관련 특징을 소위 애벌런시 효과라 한다. 즉, 2개의 독립 변수(a, a')가 자신들의 비트 위치들중 하나에 대해서만 상이하면, MED(a) 및 MED(a')는 자신들의 비트들중 절반에 대하여 상이하다. 마찬가지로, MED-1(b) 및 MED- 1(b')는, b 및 b'가 1비트에 대하여
Figure 112006042741110-PAT00057
와 상이하면, 일반적으로 평균 16인 비트 수에 대하여 상이하다.
코드 워드(
Figure 112006042741110-PAT00058
, m4=r)는 MED 함수를 개별적 워드(
Figure 112006042741110-PAT00059
) 각각에 별도로 적용함으로써 암호화된다. 이에 따라, 전체 비트 벡터(42)는 전달 단계(50)동안 암호화된 전체 비트 벡터(44)로 변환된다. 따라서, 다음의 데이터 벡터는 비휘발성 메모리에 저장된다.
Figure 112006042741110-PAT00060
때때로 임의의 1비트 에러, 소위, "이동 비트 에러"가 발생한다. 이것은 매 우 드문 경우이기 때문에, 대부분의 이러한 경우에 저장된 정보의 160비트들의 개별 비트만이 변경된다고 가정할 수 있다. 다음으로, 상술한 수학식으로부터의 하나의 워드가 1비트 에러를 나타내는 한편 나머지 4개 워드들은 정확하다고 가정한다. 상술한 160비트 행 벡터를 판독하면, 이것은 MED에 의해 해독되고, 제어 유닛(14)은 다음의 160비트 벡터를 해독된 전체 비트 벡터(56)로서 얻는다.
Figure 112006042741110-PAT00061
지수들(j∈{0,1,2,3,4})중 약 4개에 대하여, 원래의 데이터 워드들은 판독되고 해독된 데이터 워드들에 대응한다고 할 수 있으며, 즉, yj = mj, 그러나, yj ≠ mj에 대한 지수(j)가 존재한다. 상술한 애벌런시 효과로 인해, yj 및 mj는 1비트 위치 초과에 대하여 상이하다.
제어 유닛(14)에 의한 검증용으로, 먼저 y가 전체 비트 벡터(56)이고 판독 동작후에, 암호화/해독 유닛(20)으로부터 해독되어 출력된다고 가정한다. 신드롬(S(y))을 먼저 계산한다. S(y)=0이면, 어떠한 에러도, 특히, 어떠한 이동 비트 에러도 발생하지 않았다고 가정한다. S(y)≠0이면, 원칙적으로 2가지 가능성이 있다.
i) 이동 비트 에러가 발생하였다.
ii) 대개는, 시스템 공격으로 인해 여러 개의 에러들이 발생하였다.
어느 경우에 해당하는지를 결정하기 위해, 그리고 i)의 경우 이동 비트 에러를 정정하기 위해, 본 발명의 장치는 후술하는 바와 같이 진행한다. 먼저, 이동 비트 에러가 저장된 워드(MED(r))에서 발생하였다는 가정하에 동작한다. 이에 따르면, y4≠r 이지만, 모든 j=0,1,2,3에 대하여 yj=mj이다.
따라서, 본 발명의 장치는 비트 단위로 다음의 알고리즘을 통해 동작한다.
1.
Figure 112006042741110-PAT00062
를 계산한다.
2. MED(x4) 및 MED(y4)를 계산한다.
3. d = dist(MED(x4), MED(y4))를 계산한다.
(
Figure 112006042741110-PAT00063
에 대하여, dist(u,v)는 u와 v간의 해밍 거리를 가리킨다).
d=1이면, 상술한 전제가 확증된다. 이 경우, y4는 코드 워드(
Figure 112006042741110-PAT00064
)를 얻고자 x4로 대체된다.
이후, 정정되고, 이에 따라 이동 비트 에러도 정정되었다.
d≠0이면, 상술한 전제를 무시해야 한다. 다음 전제로서, 이동 비트 에러가 MED(m0)에서 발생하였다고 가정하고, 이에 따라 모든 j=1,2,3,4에 대하여 y0≠m0 이고 yj=mj이다.
적용되는 알고리즘은 다음과 같다.
1. (y0,y1,y2,y3)에서, y0을 제로 워드(
Figure 112006042741110-PAT00065
)로 대체하고,
Figure 112006042741110-PAT00066
를 계산한다.
2. b = q + r를 계산하고, 여기서 r = y4이다.
(여기서, "+" 부호는 비트와이즈 더하기 모듈로 2, 즉, 비트와이즈 XORing를 나타낸다.
3.
Figure 112006042741110-PAT00067
를 계산하고, 여기서 A0은 패러티 체크 행렬(H)로부터의 32 x 32 서브 행렬이다.
4. MED(x0) 및 MED(y0)를 계산한다.
5. d= dist(MED(x0),MED(y0))를 계산한다.
d=1이면, 전제가 확증된다. 이 경우, 데이터 워드(y0)는 x0로 대체되고,
Figure 112006042741110-PAT00068
를 재구축된 160비트 행 벡터로서 얻는다.
따라서, c[0]는 코드 워드이고, 이동 비트 에러는 정정되었다. d≠1이면, 전제를 포기해야 한다.
필요하다면, 모든 j=1,2,3에 대하여 상술한 알고리즘을 수행하고, 이것은 조절을 명백히 필요로 한다. 예를 들어, j=1의 경우, 이동 비트 에러가 MED(m1)에서 발생하였다고 전제한다. 상술한 알고리즘의 제 1 단계에서, y1은 워드(y0,y1,y2,y3)내의 제로 워드(0)로 대체된다. 제 3 단계에서, (A0 대신에) 서브 행렬(A1)을 사용하고, 이로부터 계산되는 벡터는 x1이다.
그 전제를 확인하는 것이 가능하지 않다면, 유사한 j=2 및 j=3에 대한 전제를 검증한다. 모든 (5) 전제들이 결함있다면, 멀티 비트 에러, 즉, 저장된 여러 데이터 비트들의 동시 변경이 발생하였다고 추론하고, 이것은 공격 결과일 가능성이 매우 높다.
본 발명의 코드는 서로 인접하는 여러 비트들의 변경을 신뢰성있게 인식할 수 있는 중요한 특성을 추가로 갖는다.
이를 검증하기 위해, 32 x 160 패러티 체크 행렬(H = (A,I32) = (h0,h1,...,h159))을 먼저 고려하며, 이것은 상술한 바와 같은 이론적 가정에 따라 코드(ECC 160)를 완전히 설명한다. 행렬(H)의 k ≤ 32 연속하는 열 벡터들(hj)의 임의의 조합은 선형 독립적임을 알 수 있다. 다시 말하면, 이것은 각 0 ≤ i ≤ 159에 대하여 그리고 각 1 ≤ k ≤ 32에 대하여, (지수 모듈로 160을 갖는) 열 벡터들의 세트({hi,hi+1,...,hi+k-1})가, 제로 벡터에 더해지는 열 벡터들의 세트를 전혀 포함하지 않는다는 것을 의미한다.
패러티 체크 행렬(H)의 이러한 상당한 특성은, ECC(160)가 길이≤32의 각 버스트 에러를 확실히 인식할 수 있다는 것을 의미한다. 이것은, 다시 말하면, k≤32 비트들의 최대값이 코드 워드(c=(c0,c1,...,c159)에서 결함있다면, 그리고 제 1 및 최종 결함있는 비트들이 32개 위치들 이하로 이격된다면,
Figure 112006042741110-PAT00069
의 존재를 확실하게 인식하게 된다. 이 경우, 신드롬(y=c+e의 S(y))은 0이 아니다.
버스트 에러들을 검출하는 기능은 코드의 필수 특징이다. 이를 예시하고자, 코드 워드(
Figure 112006042741110-PAT00070
)를 고려하며, 이것은 32개 데이터 경로들로 구성되는 데이터 버스를 통해 전송된다. 여기서, 데이터 워드들(
Figure 112006042741110-PAT00071
) 및 리던던시 워드(
Figure 112006042741110-PAT00072
)를 연속적으로 송신한다. 개별적인 하나의 워드가 광, 레이저, 또는 과전압 공격에 의해 임의의 방식으로 변경되는 동안 나머지 4개의 워드들이 변경되지 않으면, 그 공격은 다음에 따르는 신드롬 테스트를 이용하여 인식될 수 있다.
다른 시나리오에서, 캐시(16) 또는 버퍼 메모리를 고려하며, 여기서 코드 워드들은 필수적으로 선형 방식으로 저장되고, 즉, 연속 논리 비트들이 연속 물리 비트들에 대응한다. 광 또는 레이저 공격에 의해, 소위 클러스트들에 있는 비트들, 즉, 나란히 배열된 메모리 비트들의 그룹들이 변경된다. 클러스터의 크기가 최대 32비트 길이로 제한되는 한, 이 공격도 확실히 인식될 수 있다.
또한, 본 발명의 코드는 소위 델타 특성을 갖고, 이것은 하드웨어에서 그 코드의 전류 세이브 구현에 대한 주요 이점이며, 이를 간략히 설명한다. 이를 위해, 코드 워드(
Figure 112006042741110-PAT00073
)를 고려한다. 메시지(
Figure 112006042741110-PAT00074
)가 개별적인 바이트들(
Figure 112006042741110-PAT00075
)로 분리되면, 코드 워드는 아래와 같이 표현할 수도 있다.
Figure 112006042741110-PAT00076
자주 발생하는 경우는, 메시지(m)의 바이트(bj)가 상이한 바이트(
Figure 112006042741110-PAT00077
)에 의해 대체된다. 완전히 새로운 메시지 블록을 인코딩하면(
Figure 112006042741110-PAT00078
), 새로운 코드 워드가 제공된다(
Figure 112006042741110-PAT00079
).
달성해야 하는 과제는 리던던시 워드(r')가 전류를 덜 소모하는 방식으로 계산될 수 있는 방식을 찾는 것이다.
먼저,
Figure 112006042741110-PAT00080
Figure 112006042741110-PAT00081
이다.
따라서,
Figure 112006042741110-PAT00082
여기서,
Figure 112006042741110-PAT00083
이고,
Figure 112006042741110-PAT00084
는 구 바이트 및 신 바이트 간의 차이(또는, 합, 즉, 비트와이즈 XORing)이다.
ECC 160 코드의 델타 특성을 본 발명의 하드웨어 내로 알고리즘의 형태로 구현하는 방식을 설명한다.
여기서, 기본으로서 사용하는 것은 코드 워드(c=(m,r))이고, 메시지 블록(m)의 j번째 바이트(bj)는 바이트(
Figure 112006042741110-PAT00085
)로 대체되고, 이에 따라 리던던시 워드를 갱신하게 된다. 이것은 아래와 같은 단계들을 필요로 한다.
1.
Figure 112006042741110-PAT00086
를 계산한다.
2.
Figure 112006042741110-PAT00087
을 계산한다.
3.
Figure 112006042741110-PAT00088
를 계산한다.
데이터 워드(r')는 바로 갱신된 리던던시 워드일 것이다.
수학적 용어로 볼 때, 이것은 다르게 표현될 수 있다. 이를 위해, 패러티 체크 행렬(H)에서 32 x 32 행렬들(A0,A1,A2,A3)은 아래와 같이 32 x 8 서브 행렬 들(Bj)로 나누어진다.
Figure 112006042741110-PAT00089
이것은 아래와 같이 표현될 수도 있다.
Figure 112006042741110-PAT00090
여기서,
Figure 112006042741110-PAT00091
는 8 x 32 행렬들이다. 델타 특성의 구현에 필요한 벡터(
Figure 112006042741110-PAT00092
)는 아래와 같이 계산할 수 있다.
ECC 160 코드를 개발하는데 중요한 설계 기준은, 하드웨어에서 코드를 구현시 칩상에서 작은 영역을 차지하는 것이고, 그 코드가 동작중에 적은 전류만을 소모한다는 것이다. 실제로, 칩 영역을 덜 차지하거나(즉, 패러티 체크 행렬이 몇 개만을 포함하거나) 그 동작(인코딩 및 신드롬 계산 동작)이 전류를 덜 소모하는 구현에서 최소 해밍 거리(d = 4m)를 갖는 선형 코드(160, 128)는 존재하지 않는다. 그러나, ECC 160 코드보다 전류를 덜 소모하며 더 작은 칩 영역상에 구현될 수 있는 최소 해밍 거리(d=2)를 갖는 선형(160, 128) 코드가 존재한다. 이 코드는 다음에 따르는 패러티 체크 행렬에 의해 규정된다.
H = (I32, I32, I32, I32, I32), 여기서 I32는 32 x 32 단위 행렬을 지정한다. 이러한 특정 코드를 위해, 리던던시 워드(
Figure 112006042741110-PAT00094
)는 4개의 데이터 워드 들(m0,...m3)을 XOR 논리연산함으로써 얻어진다. 즉,
Figure 112006042741110-PAT00095
.
그러나, 이 코드는 개별 버스 라인들이 간섭되며 그리고/또는 변경되는(강제되는) 공격으로부터 매우 적은 보호를 제공한다. 예를 들어, 공격자가 데이터 라인을 변경하는 동안 코드 워드가 송신되는 경우, 2개 또는 4개 비트를 변경한다면 그 공격을 검출할 수 없다. 1, 3, 또는 5개 비트를 변경한다면, 후속 신드롬 테스트는 이 코드를 이용하여 공격을 증명할 수 있다. 따라서, 이러한 공격을 단지 3/5 = 60%의 확률로 검출하게 된다. 대조적으로, ECC 160 코드는 신드롬 테스트를 이용하여 상술한 공격을 확실히 증명할 수 있다(ECC 160 코드를 규정하는 패러티 행렬(H=(h0,h1,...,h159)의 특정 구조로 인해, 0≤j≤31에서의 형태(
Figure 112006042741110-PAT00096
)의 모든 서브세트들은 선형 독립적이다).
본 발명의 코드를 구축할 때 주의할 기준을 하드웨어 구현에 대하여 상세히 설명한다.
에러 정정 코드의 주요 특징은 코드 차원(k), 코드 길이(m), 코드 거리(dmin), 에러 정정 기능(t), 코드 효율(r), 및 에러를 검출하지 못할 확률(pu)이다. 체크 비트들의 수(m)는 m = n - k로서 계산된다.
코드 효율은 체크 비트들의 수 대 메시지 비트들의 수의 비로서 계산되며, 즉, 보호로 인해 발생하는 총비용의 측정값이다. 코드에 대한 제 1 요구 사항은 이 코드가 규칙적 형태로 설명될 수 있다는 것이다. 이것은, 각각의 개별적인 코드 워드(c)가 형태(c=(m,p))내로 분리될 수 있어야 한다는 것을 의미하며, 여기서 m은 메시지 비트 벡터이고 p는 정정 비트 벡터이다.
게다가, 코드가 F2의 원소들로 구성된다고 가정한다. 일반적으로, 효율적인 하드웨어 구현용으로 이진 코드들이 바람직하며, 그 이유는 다른 기저 데이터 양들에 기초하는 코드들이 흔히 비싼 갈루아 필드 연산을 구현하기 때문이다. 동일한 이유로 선형 코드들이 바람직하다.
패러티 체크 행렬(H)의 각각의 개별적인 행에서의 1의 전체 수는 하나의 하드웨어 구현에 있어서 사용되는 회로의 논리 깊이에 직접 연관되어 관심 대상인 행의 제어 비트 또는 신드롬 비트를 형성하게 된다. ei가 i번째 행에서의 1의 전체 수이면, 체크 비트를 계산하는 회로의 논리 깊이는 아래의 공식에 의해 주어진다.
Figure 112006042741110-PAT00097
이후, 신드롬 비트 회로의 논리 깊이는 아래의 식에 의해 주어진다.
Figure 112006042741110-PAT00098
여기서, p는 하드웨어 구현에서 사용되는 XOR 셀들의 입력들의 수(예를 들어, 2 또는 3)를 나타낸다.
패러티 체크 행렬(H)의 하드웨어 구현에 대해서는, 패러티 체크 행렬의 각 행에서 1의 수를 최소화함으로써 최소 하드웨어 비용, 최소 전류 소모, 및 최소 작업처리(work-through) 시간을 얻을 수 있다.
제 2 요구 사항은 각 행의 1의 수를 가능한 행당 1의 평균 수에 가깝게 하는 것이다. 이러한 균등한 1의 분배는, 길고도 중요한 작업처리 경로가 인코딩 회로 에서 또는 신드롬 비트를 계산하는 회로에서 발생하지 않는 것을 보장한다.
일반적인 규칙으로는, C가 관련된 패러티 체크 행렬(H)를 갖는 선형 코드이면, C의 해밍 거리는 H의 열들의 최소 수와 동일하며, 이것이 제로 벡터로 더해진다.
H의 각 열이 홀수개의 1을 포함하는 경우, 상술한 바에 따라 코드의 해밍 거리는 적어도 4이어야 한다. 상술한 3가지 원리들(1의 최소 수, 행렬(H)의 각 행에서 짝수개의 1, 행렬(H)의 각 열에서 홀수개의 1)을 따르는 코드를 Hsiao 코드라 칭한다. 따라서, 이러한 종류의 코드는 컴퓨터 하드웨어내로의 집적에 있어서 최적의 효율을 보장한다.
또다른 결론으로는, 일반적으로 코드의 해밍 거리가 길어질수록 (엄격한 수학적 결합이 없더라도) 패러티 체크 행렬에서 더 많은 개수의 1이 발생한다는 것이다.
본 발명의 코드는 상술한 원리들에 부합하며 델타 특성을 추가로 갖고 있으며, 또한 안전 콘트롤러에서 전류 효율적 및 공간 효율적 구현에 필수인 MED 호환가능한 특성을 갖는다.
ECC 160의 코드 효율성(r)은 r=25%이다. 이로부터 발생하는 총비용이 계획한 임의의 응용에 대해서 너무 크면, r=12.5%의 코드 효율을 갖는 코드를 본 발명의 코드 군으로부터 추가로 구현할 수 있으며, 도 4a 내지 4e에 도시한 순환 행렬들중 8개가 행렬(H)을 구축하는데 사용되어야 한다. 이에 따라, 에러 검출, 신드롬 계산, 델타 특성 구현, 및 에러 정정을 위한 회로들을 알기 쉽도록 조절해야 한 다.
이하, 본 발명의 에러 코드(ECC 160)를 특별히 하드웨어 효율적 방식으로 구현할 수 있다는 사실을 간략히 설명한다.
수학식 1에서 행렬 승산의 구현에는 2개의 입력을 갖는 32 x 16 = 512 XOR 게이트들을 필요로 하고, 4인 논리 깊이를 갖는다. 2개의 입력을 갖는 XOR 게이트들을 3개의 입력을 갖는 XOR 게이트들과 혼합하게 되면, 32 x 9 = 288개의 게이트들이 필요하며, 논리 깊이는 3으로 감소한다.
여기서, 각 경우 동일 하드웨어에 의해 신드롬을 계산할 수 있으며, 연결 관계의 정확한 유도를 위해 상술한 단락들을 참조한다.
델타 특성 및 이를 구현하기 위한 알고리즘도 동일한 하드웨어에 의해 실행될 수 있다. 이 경우, 행렬의 이웃하는 8개의 행들의 그룹만을 변경된 바이트로 승산하면 된다. 전류 밸런스에 관한 이유로, 미변경 바이트들과 관련된 회로의 일부는 미정의된 상태로 되지 않는다는 점에 주의해야 한다. 이를 보장할 수 있다면, 하나의 바이트의 갱신의 전류 소모는, 델타 특성을 활용하면, 전체 메시지 블록을 인코딩할 때 발생하는 전류 소모의 겨우 약 10%이다.
이전의 식들에서, 행렬 및 그 행렬에 전치된 행렬 모두를 사용하였다. 이것은, 본 발명의 선형 코드의 설명에서, 관련된 행렬들의 표현에 대한 표준 약정을 가능한 고수하였기 때문이다. 전형적인 응용에 있어서, 행렬(M)을 하나의 위치에서 사용하고, 전치 행렬(MT)을 다른 위치에서 사용한다. (예를 들어 하드웨어 설명 언어 VHDL에서) 코드의 효율적인 구현을 보장하기 위해, 본 발명의 바람직한 실시예에서만 M 및 MT 모두를 사용하는 것을 자제할 수 있다. 모든 행렬들의 전치를 활용하는 것은 (이것이 행 및 열 벡터들 모두에 대하여 계산하는 노력을 추가로 필요로 하지만) 실제로 다음의 규칙들을 따름으로써 완전히 회피될 수 있다.
Figure 112006042741110-PAT00099
Figure 112006042741110-PAT00100
위 등식들을 이용하면, 인코딩 및 신드롬 테스트를 설명하는 공식을 다음과 같이 변환할 수 있다.
Figure 112006042741110-PAT00101
Figure 112006042741110-PAT00102
본 발명의 다른 특정 실시예에서는, 바로 설명한 ECC 160 코드를 수정한다. 이 수정예에서는, 약간 증가한 하드웨어 영향을 희생하는 대신 그 코드를 이용하여 더 빠르게 에러 정정을 행할 수 있다. 이하에서는, 이 코드의 변형에 대하여, 자기 역(self inverse)이 아니지만 쌍의 방식으로 서로 역인 2개의 행렬을 각각 이용하는 4개의 희박 순환 행렬들로부터 패러티 체크 행렬(H)을 구축하는 것이 더 바람직함을 나타낸다.
다음의 고려 사항에서, m은 k=128비트인 차원의 메시지로서, 32비트 길이의 워드들로 구성된다. 코드 워드의 길이는 n=160비트이고, 이에 따라 체크 비트 벡터의 길이는 n - k = 32비트이다.
Figure 112006042741110-PAT00103
이 규칙적 선형 코드의 정규 생성기 행렬은 아래와 같이 주어진다.
Figure 112006042741110-PAT00104
여기서, p는 128 x 32 행렬이고, Pi는 32 x 32 행렬들이다. 체크 비트 벡터(p)는 p = m·P로부터 계산되고, 코드 워드는 u = m·G = (m,p)이다.
따라서, 패러티 체크 행렬(H)은
Figure 112006042741110-PAT00105
이다.
생성기 행렬(G)은 패러티 체크 행렬의 제로 스페이스, 즉, G·HT = 0이다.
변경된 가능성있는 코드 워드를 v = u + e로 참조하며, 여기서 e는 에러 벡터이다. 신드롬 벡터(s)는 다음의 공식에 따라 계산된다.
Figure 112006042741110-PAT00106
에러 비트 벡터가 없다면, 신드롬 비트 벡터는 제로 벡터(0)이다. 다음의 표기에서, 많은 벡터들((0,1)32)로부터 ρ를 사용하여 임의의 벡터를 지정하며, 항상 동일한 벡터는 아니다.
본 발명의 코드를 예시하고자, 먼저 리던던시 유닛(12)에 의해 계산되고, 암호화/해독 수단(20)에 의해 저장되고 암호화되는 리던던시 정보를 단계적으로 설명한다.
1. 체크 비트 벡터를 계산한다.
Figure 112006042741110-PAT00107
2. 코드 워드를 형성한다.
Figure 112006042741110-PAT00108
3. MED 및/또는 암호화/해독 수단(20)을 이용하여 코드 워드를 암호화한다. 다음으로, ek(x)는 MED의 암호화 동작을 지정하는 것이고, 32비트 워드(x)는 키(k)로 암호화된다. 따라서, 워드 단위의 암호화를 아래와 같이 기록할 수 있다.
Figure 112006042741110-PAT00109
4. 암호화된 코드 벡터를 형성한다.
Figure 112006042741110-PAT00110
5. 암호화된 코드 벡터(ue)를 예를 들어 대용량 메모리(22)에 저장한다.
메모리로부터의 판독 및 제어 유닛(14)에 의해 결함있는 비트의 재구축 프로 세스도 단계적으로 설명한다.
여기서, 대용량 메모리(22)와 같은 비휘발성 메모리에서 정정가능한 1비트 에러의 경우, 예를 들어, 이동 비트 에러의 경우를 먼저 다룬다. 일반적으로, 1비트 에러가 제 2 32비트 워드에서의 위치(f)에 위치하고 있다고 가정한다. 메모리로부터 판독되는 암호화된 코드 벡터 또는 암호화된 전체 비트 벡터(54)는 v로 지정된다. v = ue + e이며 여기서
Figure 112006042741110-PAT00111
이고
Figure 112006042741110-PAT00112
이다.
1. 메모리로부터 암호화된 메시지(v)를 판독한다.
Figure 112006042741110-PAT00113
MED에 의해 해독 단계(66)에서 메시지를 해독한다. 상술한 경우와 유사하게, dk(x)는 키(k)에 의한 32비트 워드(x)의 MED 해독을 지정한다. 따라서, 다음의 계산을 해독 동작에서 실행한다.
Figure 112006042741110-PAT00114
상술한 에러 경우에서는, 그 동작 결과가 특히 아래와 같다.
Figure 112006042741110-PAT00115
MED 알고리즘의 일부상에서 인접하는 비트들의 완벽한 비상관(decorrelation)으로 인해,
Figure 112006042741110-PAT00116
는 32비트 길이의 임의의 비트 벡터이다.
3. 신드롬 비트 벡터(58)를 아래와 같이 계산한다.
Figure 112006042741110-PAT00117
신드롬 비트 벡터가 제로 벡터와 동일한 확률은
Figure 112006042741110-PAT00118
이다. 따라서, 비트 에러를 검출하지 못할 확률이
Figure 112006042741110-PAT00119
이다.
4. 결함있는 워드를 찾는다.
주요 단계로서 결함있는 워드를 찾고 그 에러를 정정하며, 그 이유는 알려져 있듯이 에러 정정 코드가 암호화전에 적용되기 때문이다. 패러티 체크 등식(s = vㆍH = 0)을 고려할 때, 이 등식은 메시지의 32비트 워드들의 각각에 대하여 풀 수 있다.
Figure 112006042741110-PAT00120
치환 단계(70)에서, 상술한 해독되고 치환된 데이터 워드 벡터들(62a 내지 62e)을 형성한다. 5개의 데이터 워드들중 4개를 알고 있는 상황에서, 나머지 제 5 데이터 워드를 재구축할 수 있다. 재구축된 워드들은 아포스트로피로 표시된다.
고려하는 예에 있어서, 제 1 32비트 워드로서 다음을 얻을 수 있다.
Figure 112006042741110-PAT00121
이제, 재구축된 그리고/또는 치환된 워드가 암호화되며(
Figure 112006042741110-PAT00122
), 메모리로부터 초기에 판독한 워드(v0)로부터의 해밍 거리(
Figure 112006042741110-PAT00123
)를 형성하였다.
Figure 112006042741110-PAT00124
예시적인 경우에, d0 = d(ρ,v0)을 얻는 확률은
Figure 112006042741110-PAT00125
이고, 여기서 d0 > 1이다.
d0은 1이 아니기 때문에, v0이 비트 에러를 포함하는 워드가 아니라고 추론된다.
다음 단계에서, 동일한 절차를 제 2 데이터 워드에 적용한다.
Figure 112006042741110-PAT00126
이제, 재구축된 워드를 다시 암호화하고(
Figure 112006042741110-PAT00127
), 메모리로부터 초기에 판독한 데이터 워드(v1)로부터의 해밍 거리(
Figure 112006042741110-PAT00128
)를 아래와 같이 계산한다.
Figure 112006042741110-PAT00129
5. 에러를 정정한다.
d1= 1이기 때문에, 1비트 에러가 제 2 데이터 워드에 위치하고 있으며 결국 정정된 워드(
Figure 112006042741110-PAT00130
)를 v1의 메모리 위치에 기록할 수 있다고 알려져 있다.
일반적인 경우, 데이터 워드들의 재구축은 치환 단계(70)에서 m0,m1,m2,m3,m4에 대하여 연속적으로 수행된다. 1인 해밍 거리의 제 1 발생에서, 에러 위치를 결정하고, 프로세스를 중단한다. 1인 해밍 거리를 찾을 수 없는 경우, 여러 비트들이 동시에 변경된 에러가 발생하였으며, 시스템이 공격받는다.
ECC 160 코드가 수정되는 본 발명의 실시예의 특정한 이점은, 결함있는 데이터의 정정을 더 빠른 처리 속도로 실행할 수 있다는 것이며, 이것이 바로 하드웨어 구현의 복잡성을 방금 설명한 본 발명의 실시예에 대하여 별도로 한번 더 다루는 이유이다.
일견상, 암호화되고 치환된 데이터 워드 벡터들을 설명하는 수학식 2의 구현은 여기서 발생하는 역 행렬들로 인해 복잡하게 보인다.
다음으로, 신드롬 비트 벡터의 계산 구현보다 비용이 더 들지 않는 구현을 예시한다. 도 4a 내지 4e에 나타낸 바와 같이 계수 32의 순환 행렬들은, 그 행렬들을 구성하는 열 벡터들에서 자기 역이며 3개의 1을 나타내는 특성을 각각 갖는다. 이것은, 행렬들의 역이 그렇게 타이트(leak-tight)하지 않고, 즉, 행렬에 많은 1이 존재한다는 것을 의미하며, 임의로 선택된 희박 행렬의 역에서 예상할 수 있다. 이러한 행렬들에 대하여,
Figure 112006042741110-PAT00131
도 희박하다. 특히, 5밴드 순환 곱 행렬들의 가중은 160이다(원래의 행렬들(Pi)에 대해서는, 가중이 96이다).
전체적으로, 6개의 곱 행렬들(
Figure 112006042741110-PAT00132
)이 존재하고, 각 곱 행렬은 5개 의 밴드, 즉, 각 행에서 5개의 1을 나타낸다. 따라서, 하드웨어에서의 구현 복잡성은 대략
Figure 112006042741110-PAT00133
이다. 논리 깊이는 3이다.
쌍의 방식으로 역인 행렬들(Pi)을 이용하면 다른 개선도 가능하다. 이 경우, 단지 4개의 행렬 곱들만이 존재하며,
Figure 112006042741110-PAT00134
의 복잡성을 얻을 수 있다. 논리 깊이가 역시 3이다. 본 발명의 특정 실시예에 대하여,
Figure 112006042741110-PAT00135
Figure 112006042741110-PAT00136
을 선택한다.
데이터의 무결성을 체크하기 위한 본 발명의 장치를 구현하기 위해, 원칙적으로 순환 코드, 특히, BCH 코드 및 곱 코드와 같이 다른 에러 코드들도 가능하다.
곱 코드들이 관련되어 있는 한, 소위 곱 코드들을 생성한다는 면에서 더 작은 해밍 거리를 갖는 코드들로부터 더 긴 해밍 거리를 갖는 강력한 코드들을 형성할 수 있다. C1이 선형 (n1,k1) 코드이면, C2는 선형 (n2,k2) 코드이고, 이에 따라 도 5에 도시한 바와 같이 (n1n2, k1k2) 코드를 형성할 수 있으며, 이 코드들은 규칙적이라고 가정한다.
도 5는 제 1 체크 비트 벡터(202) 및 제 2 체크 비트 벡터(204)뿐만 아니라 데이터 비트 블록(200)을 나타낸다. 하나의 데이터 워드가 데이터 비트 블록(m)의 하나의 행을 형성하는 방식으로 데이터 비트 블록(200)에서 길이 k2의 데이터 워드들의 수(k1)를 배열하고, 개략적으로 도시한 데이터 워드(206)에 의해 k1개의 상이한 데이터 워드들을 데이터 비트 블록(200)내의 나머지 바로 아래에 배열하며, 도 5에서 알 수 있다. 2개의 선형 코드들(C1, C2)은, 각 행이 C1에서 n1 길이의 코드 워드인 방식으로 그리고 각 열이 C2에서 n2 길이의 코드 워드인 방식으로 데이터 블록(200)에 적용된다. 도 5a의 직사각형 제어 영역(208)은 체크 비트들을 포함하고 그 결과 C1가 C2의 체크 비트들에 적용되고, 그 반대로도 가능하다. 이러한 곱 코드의 최소 해밍 거리는
Figure 112006042741110-PAT00137
이다.
따라서, 코드는
Figure 112006042741110-PAT00138
에러들을 정정할 수 있다. 곱 코드의 편차는 도 5에 도시되어 있듯이 d소위 불완전한 곱 코드이다. 도 5b는 제어 영역(208)이 생략되어 있다는 점에서 도 5a와 상이하고, 그 결과 (k1n2 + k2n1 - k1k2,k1k2) 선형 곱 코드가 더 약하며 단지
Figure 112006042741110-PAT00139
의 최소 해밍 거리를 갖는다.
불완전한 곱 코드를 선형 합 코드라고도 칭한다.
산업 RAM 설계에서 그리고 마이크로프로세서에서, 예를 들어, 레지스터를 설계시, 2개의 단일 패러티 코드(SPC)의 불완전한 곱 코드를 널리 사용한다. 이 코드들은 또한 흔히 수평 및 수직 패러티 코드들이라 칭한다. 2개의 SPC의 완전한 곱 코드가 형성되면, 최소 해밍 거리는 dmin = 4이다.
불완전한 곱 코드들을 구현하기 위한 예로서 상이한 DRAM 설계들을 이용할 수 있다. 크로스 패러티에 의한 확장으로서, SUN 스파크 레지스터 파일도 언급한다.
특정 경우에, 복수의 제어 비트들을 갖는 2개의 선형 코드들은 에러 미발견에 관한 코드에 대한 높은 요구를 충족할 필요가 있다. 128 또는 256 비트의 데이터 블록 크기가 비교적 작기 때문에, 이러한 코드는 상당한 추가 비용을 야기한다. 이를 예시하고자, 데이터 블록 크기(k=256)를 가정한다. 8개의 행 및 32개의 열의 필드(즉, 32비트 워드)에서 데이터 블록(200)을 배열한다. 해밍 제한(
Figure 112006042741110-PAT00140
)을 고려하는 한편 dmin≥3의 해밍 거리를 허용하는 32비트 데이터 워드용 최소 선형 블록 코드는 선형 (38, 32) 코드이다. 최소 가능성 H냐매코드는 (39,32)코드라는 것을 알 수 있다. 행들에 적용되는 (39,32) Hsiao 코드를 열들에 적용되는 (9,8) SPC 코드와 결합하면, (351, 256) 곱 코드를 얻게 된다. 이 코드는 dmin = 4 x 2 = 8 및 r = 73%라는 특징을 갖고, 미검출 에러 확률은
Figure 112006042741110-PAT00141
의 차수에 있다.
(39, 32) Hsiao 코드용 패러티 체크 행렬은 아래와 같다.
Figure 112006042741110-PAT00142
이러한 곱 코드는 필요로 하는 효율적인 하드웨어 구현용으로 적합하지 않으며, 그 이유는 r=73%에서 상당한 추가 비용을 발생하기 때문이다.
데이터의 무결성을 검증하는 장치내로 코드를 구현하는 다른 방안으로서, BCH 코드를 간략히 설명한다.
미검출 에러의 작은 확률을 갖는 BCH 코드는 생성기 다항식에 의해 형성된다.
Figure 112006042741110-PAT00143
이것은 3개의 원식 다항식의 곱이다.
Figure 112006042741110-PAT00144
이 코드는 최소 해밍 거리(dmin=7), 길이(n=511), 차원(k=484), 및 m = n-k = 27 체크 비트들을 갖는다. 미검출 에러 확률에 대하여, Pu≤227은 상한으로서 표시될 수 있다. BCH 코드들은 순환 구조를 갖는다. 이 특성은 에러 검증의 빠른 실행에는 필요하지 않으며, 선형 시프트 레지스터로서 신드롬의 생성 및 인코딩을 구현할 수 있다. 회로에서 빠르며 완전히 평행한 구현이 필요하다면, 이 회로는 매우 클 것이며, 그 이유는 결과적` 패러티 체크 행렬이 행렬들의 약 50%를 규칙적 형태로 나타내기 때문이다. 또한, 시프트 레지스터 구현에는 코드의 필요한 델타 특성이 상당한 추가 하드웨어 비용에 의해서만 가능하다는 단점이 있으며, 이것은 일반적으로 모든 순환 코드들에 적용된다. 따라서, 이 코드는 본 발명의 효율적이며 빠른 하드웨어 구현에 적절하지 않다.
따라서, 본 발명의 실시예들의 이점은, 장애 공격으로부터의 보호용 선형 코드가 특별히 설계된 행렬에 의해 규정되며 그리고/또는 실현된다는 것이다. 이 제 어 행렬은 멱등 희박 순환 정사각 서브 행렬들로부터 구축된다. 희박이란, 이 행렬들이 몇 개의 1을 구비하며 대부분 제로를 갖는다는 것을 의미한다. 그 코드의 하드웨어 구현에 있어서, 이것은 작은 실리콘 영역에 대응하며, 동작시, 저 전류 소모에 대응한다.
순환 행렬들은 이미 자신의 제 1 행에 의해 명확하게 규정되어 있는 정사각 행렬들이다. 다음의 행들은 이 제 1 행을 순환 방식으로 시프트함으로써 발생한다. 순환 행렬들로부터만 제어 행렬을 구축함으로써, 특히, 제어 행렬의 각 행이 동일한 개수의 1을 갖는다.
이것은, 신드롬의 또는 제어 워드의 개별 비트들을 계산시, 동일한 게이트 깊이를 각각 전달할 수 있음을 의미한다. 이것은 효율적인 하드웨어 구현에 있어서 중요하다. 정사각 행렬은 가역일 때 그리고 역 행렬이 원래의 행렬과 일치할 때 멱등 행렬(이 행렬을 자기 역 행렬임)이라 칭한다. 본 발명의 코드의 사용되는 서브 행렬들의 멱등은, 제어 워드 플러스 다른 (결함없는) 워드들로부터 데이터 블록으로부터의 결함있는 워드의 재구축을 하드웨어 효율 방식으로 허용한다. 이러한 특징은, 1비트 에러들이 EEPROM에서 때때로 발생하기 때문에, 1비트 에러들(소위 이동 비트 에러들)을 정정할 필요가 있다. 특히, EEPROM으로부터의 판독시, 저장된 값에서의 이러한 1비트 에러를 해독한다. 이 해독 장치는 소위 애벌런치 효과를 갖는다. 즉, 32비트 워드를 암호화하거나 해독할 때, 1비트 에러로 인해 멀티 비트 에러(전형적으로, 10 내지 20비트 에러들)가 발생한다. 판독 후, 선형 코드를 채용한다. 신드롬은 0(메모리에서 장애 공격이 발생하였거나 이동 비트 에러 가 발생하였음을 가리킴)과 다르다. 이후, 해독된 데이터 블록의 나머지 (결함없는) 워드들로부터 결함있는 워드를 재구축해야 한다. 본 발명의 코드 클래스의 특정 실시예에서는, 32의 워드 폭에 대하여 선행하는 단락들에서 160 길이의 선형 코드를 상세히 설명하였으며, 이 코드는 ECC 160이라 칭한다.
도 1에 나타낸 본 발명의 실시예일지라도, 리던던시 수단(12) 및 제어 수단(14)이 프로세서 및/또는 계산 유닛(10)내로 직접 통합되고 있으며, 본 발명에 따라 암호화/해독 수단(20)으로부터 업스트림 방향으로 데이터 경로를 따른 임의의 위치에 리던던시 수단(12) 및 제어 수단(14)을 배열할 수 있다. 본 발명의 리던던시 수단(12) 및 제어 수단(14)은 필요한 보호 범위에 의해 결정되는 데이터 경로의 위치에 유연성있게 장착할 수 있다. 보호를 원한다면, 예를 들어, 대용량 메모리로의 전달만을 원한다면, 캐시(16) 및 암호화/해독 수단(20) 사이에 리던던시 수단(12) 및 제어 수단(14)을 배열할 수 있고, 이 캐시를 감시할 수 있다면, 데이터 레지스터(6) 및 캐시(16) 사이의 배치도 쉽게 구현할 수 있다.
상황에 따라, 본 발명의 데이터 무결성을 보고하는 방법은 하드웨어나 소프트웨어에서 구현될 수 있다. 이 구현은 디지털 저장 매체상에서 행해질 수 있으며 특히 전기적으로 판독가능한 제어 신호들을 갖는 디스크 또는 CD에서 행해질 수 있고, 이것은 데이터 무결성을 보호하는 본 발명의 방법을 수행하는 것처럼 프로그래밍가능 컴퓨터 시스템과 협력할 수 있다. 따라서, 일반적으로, 본 발명은, 컴퓨터상에서 실행되며, 기계로 판독가능한 캐리어상에 저장되는 프로그램 코드를 구비하는 컴퓨터 프로그램 제품으로 구성된다. 따라서, 다시 말하면, 본 발명을, 컴퓨터 프로그램이 컴퓨터 상에서 실행될 때 그 방법을 수행하기 위한 프로그램 코드를 갖는 컴퓨터 프로그램으로서 구현할 수 있다.
본 발명에 따르면, 결함있는 데이터의 정정을 더 빠른 처리 속도로 실행할 수 있다.

Claims (15)

  1. 데이터 무결성을 보호하는 장치로서,
    데이터 블록(36)의 복수의 데이터 워드로부터 데이터 비트 벡터(38)를 형성하고, 상기 데이터 벡터(38)를 이진 생성기 행렬로 승산함으로써 제어 비트 벡터(40)를 생성하는 리던던시 수단(12)과,
    상기 데이터 워드 각각을 암호화하여 암호화된 데이터 워드들을 얻고, 상기 제어 비트 벡터를 암호화하여 암호화된 제어 비트 벡터를 얻으며, 상기 암호화된 데이터 워드들 각각을 해독하여 해독된 데이터 워드들(60a 내지 60d)을 얻고, 상기 암호화된 제어 비트 벡터를 해독하여 해독된 제어 비트 벡터(60e)를 얻는 암호화/해독 수단(20)과,
    상기 해독된 데이터 워드들(60a 내지 60d)로부터 또는 상기 해독된 데이터 워드들(60a 내지 60d)과 상기 해독된 제어 비트 벡터(60e)로부터 비트 벡터(56)를 형성하며, 이진 제어 행렬을 상기 전체 비트 벡터(56)로 승산함으로써 신드롬 비트 벡터(58)를 생성하며, 이에 따라 상기 신드롬 비트 벡터(58)를 이용하여 상기 전체 비트 벡터(56)의 무결성을 검증할 수 있는, 제어 수단(14)
    을 포함하는 장치.
  2. 제 1 항에 있어서,
    상기 리던던시 수단(12)은 정사각 순환성 서브 행렬들을 포함하는 생성기 행렬을 사용하도록 구성되며,
    상기 제어 수단(14)은 정사각 순환성 서브 행렬들을 포함하는 제어 행렬을 사용하도록 구성되는 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 리던던시 수단(12)은 멱등 서브 행렬들을 구비하는 생성기 행렬을 사용하도록 구성되는 장치.
  4. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 리던던시 수단(12)은 2, 4, 8, 또는 16개의 정사각 순환성 서브 행렬들을 포함하는 생성기 행렬을 사용하고 2, 4, 8, 또는 16개의 데이터 워드들을 처리하도록 구성되고,
    상기 제어 수단(14)은 2, 4, 8, 또는 16개의 정사각 순환성 서브 행렬들을 포함하는 제어 행렬을 사용하고 2, 4, 8, 또는 16개의 데이터 워드들을 처리하도록 구성되는 장치.
  5. 제 4 항에 있어서,
    상기 리던던시 수단(12)은 4개 서브 행렬들중 2개의 제 1 및 제 2 쌍 각각이 쌍의 방식으로 서로 역인 서브 행렬들을 포함하는 생성기 행렬을 사용하도록 구성되고,
    상기 제어 수단(14)은 짝수개의 서브 행렬들중 2개로 이루어진 쌍들 각각이 쌍의 방식으로 서로 역인 서브 행렬들을 포함하는 제어 행렬을 사용하도록 구성되는 장치.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 리던던시 수단(12)은 4개의 정사각 32 x 32 행렬들을 서브 행렬들로서 포함하는 생성기 행렬 및 32비트 길이의 데이터 워드들을 사용하도록 구성되고,
    상기 제어 수단(14)은 4개의 정사각 32 x 32 행렬들을 서브 행렬들로서 포함하는 제어 행렬 및 32비트 길이의 데이터 워드들을 사용하도록 구성되는 장치.
  7. 제 1 항 내지 제 6 항중 어느 한 항에 있어서,
    상기 신드롬 비트 벡터(58)의 제로들을 카운팅하여 제로들의 수가 소정의 임계값보다 클 때 알람 액션을 트리거하는 신드롬 비트 벡터 감시 수단을 더 포함하 는 장치.
  8. 제 7 항에 있어서,
    상기 신드롬 비트 벡터 감시 수단은,
    상기 해독된 데이터 워드들로부터 새로운 데이터 워드들을 생성하는 단계와,
    상기 새로운 데이터 워드들을 암호화하여 암호화된 새로운 데이터 워드들을 얻는 단계와,
    상기 암호화된 새로운 데이터 워드들을 상기 암호화된 데이터 워드들과 비교하는 단계와,
    상기 비교 단계 결과 암호화된 데이터 워드와 암호화된 새로운 데이터 워드의 각 쌍에 대하여 1비트 초과의 편차가 발생하는 경우 공격 알람을 트리거하거나, 상기 비교 단계 결과 암호화된 데이터 워드와 암호화된 새로운 데이터 워드의 한쌍에 대하여 1비트 만큼의 편차가 발생하는 경우 상기 데이터를 활성화하는 단계를 상기 알람 액션에서 수행하도록 구성되는 장치.
  9. 데이터의 무결성을 보호하는 장치로서,
    암호화된 데이터 워드들을 해독하여 해독된 데이터 워드들(60a 내지 60d)을 얻고, 암호화된 제어 비트 벡터를 해독하여 해독된 제어 비트 벡터(60e)를 얻는 해 독 수단(20)과,
    상기 해독된 데이터 워드들(60a 내지 60d)로부터 전체 비트 벡터(56)를 형성하고, 또는 상기 해독된 데이터 워드들(60a 내지 60d)로부터 해독된 제어 비트 벡터(60e)를 얻으며, 이진 제어 행렬을 상기 전체 비트 벡터(56)로 승산함으로써 신드롬 비트 벡터(58)를 얻고, 이에 따라 상기 신드롬 비트 벡터(58)를 이용하여 상기 전체 비트 벡터(56)의 무결성을 검증할 수 있는, 제어 수단(14)
    을 포함하는 장치.
  10. 제 1 항 내지 제 9 항중 어느 한 항에 있어서,
    상기 리던던시 수단(12)은, 상기 신드롬 비트 벡터(58)가 제어 비트 벡터(60e) 플러스 계수들로서 상기 데이터 워드들(60a 내지 60d)의 비트들과 열 벡터들의 선형 조합에 대응하는 방식으로 상기 제어 행렬이 구성되도록 구성되며,
    열 벡터 각각은 홀수의 해밍 가중값을 나타내고, 모든 열 벡터들은 동일한 해밍 가중값을 나타내는 장치.
  11. 데이터의 무결성을 보호하는 장치로서,
    데이터 블록(36)의 복수의 데이터 워드로부터 데이터 비트 벡터(38)를 형성하고, 상기 데이터 비트 벡터(38)를 이진 생성기 행렬로 승산함으로써 제어 비트 벡터(40)를 생성하는 리던던시 수단(12)과,
    상기 데이터 워드 각각을 암호화하여 암호화된 데이터 워드들을 얻고, 상기 제어 비트 벡터를 암호화하여 암호화된 제어 비트 벡터를 얻는 암호화 수단(20)
    을 포함하는 장치.
  12. 제 1 항 내지 제 8 항중 어느 한 항 또는 제 11 항에 있어서,
    상기 리던던시 수단(12)은, 상기 데이터 비트 벡터(38)와 하나의 차이 벡터만큼 다른 후속하는 데이터 비트 벡터에서, 상기 차이 벡터를 상기 생성기 행렬로 승산함으로써 차이 제어 비트 워드를 생성하고 상기 제어 비트 워드(40)와 상기 차이 제어 비트 워드의 합으로부터 후속하는 제어 비트 워드를 형성하도록 구성되는 장치.
  13. 데이터의 무결성을 보호하는 방법으로서,
    암호화된 데이터 워드들을 해독하여 해독된 데이터 워드들(60a 내지 60d)을 얻고, 암호화된 제어 비트 벡터를 해독하여 해독된 제어 비트 벡터(60e)를 얻는 단계와,
    상기 해독된 데이터 워드들(60a 내지 60d) 및 상기 해독된 제어 비트 벡터(60e)로부터 전체 비트 벡터(56)를 형성하는 단계와,
    이진 제어 행렬을 상기 전체 비트 벡터(56)로 승산함으로써 신드롬 비트 벡터(58)를 생성하고, 이에 따라 상기 신드롬 비트 벡터(58)를 이용하여 상기 데이터 워드들(60a 내지 60e)의 무결성을 검증할 수 있는 단계
    를 포함하는 방법.
  14. 데이터의 무결성을 보호하는 방법으로서,
    데이터 블록(36)의 복수의 데이터 워드로부터 데이터 비트 벡터(38)를 형성하는 단계와,
    상기 데이터 비트 벡터(38)를 이진 생성기 행렬로 승산함으로써 제어 비트 벡터(40)를 생성하는 단계와,
    상기 데이터 워드 각각을 암호화하여 암호화된 데이터 워드들을 얻고, 상기 제어 비트 벡터(40)를 암호화하여 암호화된 제어 비트 벡터를 얻는 단계
    를 포함하는 방법.
  15. 제 11 항 또는 제 12 항의 방법을 수행하기 위한 프로그램 코드를 구비하며, 컴퓨터에 의해 실행되는 컴퓨터 프로그램.
KR1020060054913A 2005-06-17 2006-06-19 데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체 KR100887003B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102005028221A DE102005028221B4 (de) 2005-06-17 2005-06-17 Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE102005028221.0 2005-06-17

Publications (2)

Publication Number Publication Date
KR20060132514A true KR20060132514A (ko) 2006-12-21
KR100887003B1 KR100887003B1 (ko) 2009-03-04

Family

ID=37497997

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060054913A KR100887003B1 (ko) 2005-06-17 2006-06-19 데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체

Country Status (4)

Country Link
US (1) US8250659B2 (ko)
KR (1) KR100887003B1 (ko)
DE (1) DE102005028221B4 (ko)
FR (1) FR2887352B1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100836758B1 (ko) * 2006-09-11 2008-06-10 삼성전자주식회사 메모리 카드의 암호화 장치 및 그것에 따른 데이터 기입 및독출 방법
AU2008247310B2 (en) * 2007-05-03 2012-05-17 Curtis, Ivan Mr Large number ID tagging system
FR2916594A1 (fr) * 2007-05-23 2008-11-28 France Telecom Procede d'authentification d'une entite par une entite verificatrice
EP2091256A1 (en) * 2008-02-18 2009-08-19 Nagravision S.A. Method for the removal of artefacts from a transmitted digital audio/video signal
US8612777B2 (en) * 2009-01-09 2013-12-17 Infineon Technologies Ag Apparatus and method for writing data to be stored to a predetermined memory area
US8438344B2 (en) * 2010-03-12 2013-05-07 Texas Instruments Incorporated Low overhead and timing improved architecture for performing error checking and correction for memories and buses in system-on-chips, and other circuits, systems and processes
FR2983597B1 (fr) 2011-12-01 2014-01-24 Viaccess Sa Procede de detection d'une erreur de lecture d'une donnee
DE102013108073B4 (de) * 2013-07-29 2019-12-19 Infineon Technologies Ag Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
CN106130712B (zh) * 2016-06-14 2019-09-06 刘雷波 一种基于ins网络的随机感染抗故障攻击方法
US11093588B2 (en) * 2017-06-26 2021-08-17 Micron Technology, Inc. Memory system including data obfuscation
EP3506548A1 (en) * 2017-12-27 2019-07-03 Secure-IC SAS Quantitative digital sensor
IT201800009905A1 (it) * 2018-10-30 2020-04-30 St Microelectronics Srl Procedimento per la generazione di dati personalizzati di profile package in carte a circuito integrato, corrispondente sistema e prodotto informatico
KR102364047B1 (ko) 2019-11-19 2022-02-16 기초과학연구원 구조화된 행렬들에 기초한 공개키 암호를 위한 방법과 장치
US11829376B2 (en) * 2020-05-06 2023-11-28 Intel Corporation Technologies for refining stochastic similarity search candidates

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569050A (en) * 1983-01-14 1986-02-04 Honeywell Inc. Data communication system with fixed weight error correction and detection code
US5285456A (en) * 1991-05-15 1994-02-08 International Business Machines Corporation System and method for improving the integrity of control information
JPH0520219A (ja) * 1991-07-17 1993-01-29 Nec Corp 入出力制御装置
CN1139879C (zh) * 1995-06-30 2004-02-25 索尼公司 数据纪录方法及装置、数据重现方法及装置
US5757826A (en) * 1995-07-12 1998-05-26 Quantum Corporation Word-wise processing for reed-solomon codes
US5862225A (en) * 1996-12-16 1999-01-19 Ut Automotive Dearborn, Inc. Automatic resynchronization for remote keyless entry systems
US6445797B1 (en) * 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US6717406B2 (en) * 2000-03-14 2004-04-06 Beth Israel Deaconess Medical Center, Inc. Parallel magnetic resonance imaging techniques using radiofrequency coil arrays
WO2003019393A1 (en) * 2001-08-24 2003-03-06 Intel Corporation A general intput/output architecture, protocol and related methods to implement flow control
US6757122B1 (en) * 2002-01-29 2004-06-29 Seagate Technology Llc Method and decoding apparatus using linear code with parity check matrices composed from circulants
JP2003316652A (ja) * 2002-04-25 2003-11-07 Nec Engineering Ltd データファイルストレージサービスシステム及びその動作制御方法
US7370264B2 (en) * 2003-12-19 2008-05-06 Stmicroelectronics, Inc. H-matrix for error correcting circuitry
US6970808B2 (en) * 2004-04-29 2005-11-29 Kingsley E. Abhulimen Realtime computer assisted leak detection/location reporting and inventory loss monitoring system of pipeline network systems
DE102005001953A1 (de) * 2005-01-14 2006-07-27 Infineon Technologies Ag Verfahren und Schaltungsanordnung zur Überprüfung eines Datensatzes mit mehreren Datenworten
TWI341095B (en) * 2007-12-12 2011-04-21 Nat Univ Tsing Hua Light-overhead and flexible wireless sensor message authentication method

Also Published As

Publication number Publication date
US8250659B2 (en) 2012-08-21
FR2887352A1 (fr) 2006-12-22
KR100887003B1 (ko) 2009-03-04
US20070033417A1 (en) 2007-02-08
DE102005028221B4 (de) 2007-10-11
FR2887352B1 (fr) 2012-12-07
DE102005028221A1 (de) 2006-12-28

Similar Documents

Publication Publication Date Title
KR100887003B1 (ko) 데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체
Aghaie et al. Impeccable circuits
Subramanian et al. Reliable hardware architectures for cryptographic block ciphers LED and HIGHT
KR102412616B1 (ko) 대수적 조작으로부터 데이터를 보호하는 방법
Aghaie et al. Fault diagnosis schemes for low-energy block cipher Midori benchmarked on FPGA
US8769373B2 (en) Method of identifying and protecting the integrity of a set of source data
US20070019805A1 (en) System employing systematic robust error detection coding to protect system element against errors with unknown probability distributions
US20110040817A1 (en) Circuit and method for generating a true, circuit-specific and time-invariant random number
Cintas-Canto et al. Reliable architectures for finite field multipliers using cyclic codes on FPGA utilized in classic and post-quantum cryptography
Kermani et al. Error detection reliable architectures of Camellia block cipher applicable to different variants of its substitution boxes
Karpovsky et al. Robust error detection in communication and computational channels
Walters et al. Constant-time BCH error-correcting code
Ge et al. Reliable and secure memories based on algebraic manipulation detection codes and robust error correction
Rabii et al. High rate robust codes with low implementation complexity
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
Wang et al. Design of reliable and secure devices realizing Shamir's secret sharing
Luo et al. Concurrent error detection for reliable SHA-3 design
Karp et al. Detection and Correction of Malicious and Natural Faults in Cryptographic Modules.
US11341217B1 (en) Enhancing obfuscation of digital content through use of linear error correction codes
Richter-Brockmann et al. Concurrent error detection revisited: Hardware protection against fault and side-channel attacks
Kulikowski et al. Robust codes and robust, fault-tolerant architectures of the advanced encryption standard
Poolakkaparambil et al. Low complexity cross parity codes for multiple and random bit error correction
Ge et al. Secure memories resistant to both random errors and fault injection attacks using nonlinear error correction codes
Pircher et al. Key-Recovery Fault Injection Attack on the Classic McEliece KEM
Bousselam et al. Evaluation of concurrent error detection techniques on the advanced encryption standard

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130215

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140214

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160222

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170217

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 10