1 |
1
FPGA의 논리회로를 역공학하는 방법으로,FPGA의 비트스트림을 추출하는 단계;상기 비트스트림을 이용하여 PLP(Programmable Logic Points) 정보를 추출하는 단계;상기 PLP 정보를 이용하여 상기 FPGA에 포함된 복수의 CLB(configurable logic block) 섹션과 복수의 INT(interconnect) 섹션을 매칭하여 2차원 형태의 구조테이블을 생성하는 단계;상기 복수의 INT(interconnect) 섹션에 포함된 복수의 PIP(Programmable Interconnect Points) 정보를 추출하는 단계;상기 복수의 PIP 정보를 이용하여 역공학로직을 생성하는 단계; 및상기 역공학로직을 이용하여 입력식을 출력식으로 변환하는 단계를 포함하며,상기 PLP 정보는 FPGA의 CLB(configurable logic block) 섹션의 LUT(LookUp Table)에 대한 정보를 포함하고,상기 PIP 정보는 복수의 상기 LUT 사이의 연결 구조를 나타내는 복수의 연결정보를 포함하는 것을 특징으로 하는 역공학 방법
|
2 |
2
제1항에 있어서,상기 비트스트림을 추출하는 단계는,상기 비트스트림을 추출하는 단계;상기 비트스트림을 통해 상기 FPGA 유형을 식별하는 단계; 및상기 FPGA 유형에 따라 복수의 역공학 알고리즘 중 어느 하나를 선택하는 단계를 포함하는 것을 특징으로 하는 역공학 방법
|
3 |
3
제2항에 있어서,상기 PLP 정보를 추출하는 단계는,상기 복수의 CLB 섹션 중 어느 하나를 선택하는 단계;선택된 상기 CLB 섹션에 포함된 LUT(Look-Up Table)만을 사용하는 샘플 비트스트림을 생성하는 단계;상기 샘플 비트스트림에 의해 활성화되는 복수의 비트를 파악하는 단계; 및활성화된 상기 복수의 비트를 이용하여 상기 CLB 섹션을 구성하는 복수의 프레임에 할당된 주소정보 및 LUT 정보를 포함하는 상기 PLP 정보를 추출하는 단계를 포함하는 것을 특징으로 하는 역공학 방법
|
4 |
4
제3항에 있어서,상기 샘플 비트스트림을 생성하는 단계는,두 개의 32x1 MUX(MUltipleXer)와 한 개의 2x1 MUX에 대응되는 비트스트림을 생성하는 것을 특징으로 하는 역공학 방법
|
5 |
5
제3항에 있어서,상기 2차원 형태의 구조테이블을 생성하는 단계는,상기 PLP 정보를 이용하여 상기 복수의 CLB 섹션 각각에 대한 주소정보를 획득하는 단계;상기 복수의 CLB 섹션에 대한 주소정보를 이용하여 복수의 INT 섹션의 주소정보를 획득하는 단계;상기 복수의 CLB 섹션과 상기 복수의 INT 섹션 중 동일한 주소정보를 가지는 섹션끼리 매칭하는 단계; 및상기 복수의 CLB 섹션과 상기 복수의 INT 섹션에 대한 상기 구조테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 역공학 방법
|
6 |
6
제5항에 있어서,상기 복수의 PIP 정보를 추출하는 단계는,상기 복수의 PIP 정보를 구성하는 복수의 조각이 분산된 패턴을 파악하는 단계; 및상기 복수의 PIP 정보 각각에 대한 상기 복수의 조각을 수집하여 상기 복수의 PIP 정보를 추출하는 단계를 포함하는 것을 특징으로 하는 역공학 방법
|
7 |
7
제6항에 있어서,상기 복수의 조각이 분산된 패턴을 파악하는 단계는,상기 복수의 조각에 설정된 식별정보를 이용하여 동일한 상기 식별정보를 가지는 상기 복수의 조각을 통해 상기 패턴을 파악하는 것을 특징으로 하는 역공학 방법
|
8 |
8
제3항에 있어서,상기 역공학로직을 생성하는 단계는,상기 복수의 PIP 정보를 이용하여 상기 복수의 CLB 섹션의 LUT 사이의 연결구조를 파악하는 단계;상기 복수의 PLP 정보를 이용하여 상기 복수의 CLB 섹션 각각의 상기 LUT를 논리식으로 변환하는 단계; 및상기 복수의 PIP 정보에 포함된 상기 연결정보에 따라 상기 복수의 논리식을 배열하여 상기 역공학로직을 생성하는 단계를 포함하는 것을 특징으로 하는 역공학 방법
|