KR100825461B1 - 소프트웨어를 이용한 fpga 프로그램 데이터 보호 방법 - Google Patents

소프트웨어를 이용한 fpga 프로그램 데이터 보호 방법 Download PDF

Info

Publication number
KR100825461B1
KR100825461B1 KR1020060069711A KR20060069711A KR100825461B1 KR 100825461 B1 KR100825461 B1 KR 100825461B1 KR 1020060069711 A KR1020060069711 A KR 1020060069711A KR 20060069711 A KR20060069711 A KR 20060069711A KR 100825461 B1 KR100825461 B1 KR 100825461B1
Authority
KR
South Korea
Prior art keywords
program data
fpga
software
fpga program
encryption
Prior art date
Application number
KR1020060069711A
Other languages
English (en)
Other versions
KR20070066834A (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 KR20070066834A publication Critical patent/KR20070066834A/ko
Application granted granted Critical
Publication of KR100825461B1 publication Critical patent/KR100825461B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 소프트웨어를 이용한 FPGA(Field Programmable Gate Array, 이하 “FPGA”라 함) 프로그램 데이터 보호 방법에 관한 것으로서, FPGA의 구동에 필요한 프로그램을 암호화하여 비휘발성 메모리에 저장하고 디지털 신호처리기(DSP)를 이용하여 복호화하여 FPGA를 활성화하여 동작시키게 되는데, 이 같은 소프트웨어를 이용한 정보보호 알고리즘에 의해 다양한 암복호 알고리즘의 사용이 가능하여 FPGA의 프로그램 데이터를 비인가자나 탈취자로부터 안전하게 보호할 수 있다.
정보보호 시스템, FPGA 프로그램 데이터 보호, 비활성 메모리, 소프트웨어를 이용한 프로그램 보호

Description

소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법{METHOD FOR PROTECTING FIELD PROGRAMMABLE GATE ARRAY PROGRAM DATA BY SOFTWARE}
도 1은 본 발명의 일실시예에 의한 FPGA 프로그램 데이터 보호 방법을 나타낸 흐름도,
도 2는 본 발명의 일실시예에 의한 FPGA 프로그램 암호화 프로세스를 나타낸 흐름도,
도 3은 본 발명의 일실시예에 의한 FPGA 프로그램 복호화 프로세스를 나타낸 흐름도이다.
본 발명은 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법에 관한 것으로, 더욱 상세하게는 FPGA 프로그램을 소프트웨어를 이용하여 암호화하여 보호하는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법에 관한 것이다.
기존의 FPGA 프로그램 데이터를 비휘발성 메모리에 저장한 경우 FPGA 프로그램 데이터의 비인가자에 의한 접근이나 데이터 변형이 가능하다는 단점이 있다. 또한, FGPA 프로그램 데이터를 암호화하여 비휘발성 메모리에 저장하고, 이를 복호화하는 기존의 방법은, 암복호를 하드웨어를 이용한 방법을 사용하기 때문에, 만약 암복호 알고리즘이 공개된 경우나 키값이 공개된 경우 FPGA 프로그램 데이터의 안전성을 확보하기 위해서는 하드웨어를 수정해야 하는 단점이 있다.
이와 같이, 기존에는 FPGA 프로그램 데이터를 보호하기 위해 하드웨어적인 암복호를 통해서 보호하는 방법을 이용하고 있다.
따라서, 본 발명은 상기한 종래 기술의 문제점을 해결하기 위해 이루어진 것으로서, 본 발명의 목적은 FPGA 프로그램 데이터의 구동에 필요한 프로그램을 암호화하여 비휘발성 메모리에 저장하고 디지털 신호처리기(DSP)를 통해 암호화된 프로그램을 복호화하여 FPGA 프로그램 데이터를 활성화시키는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법은, (a) FPGA(Field Programmable Gate Array) 프로그램 데이터를 소프트웨어를 이용하여 암호화하는 단계; (b) 상기 암호화된 FPGA 프로그 램 데이터를 메모리에 주입하는 단계; (c) 전원인가에 대응하여 상기 암호화된 FPGA 프로그램 데이터를 디지털 신호처리기(DSP)에서 소프트웨어를 이용하여 복호화하는 단계; 및 (d) 상기 복호화된 FPGA 프로그램 데이터를 활성화시키는 단계를 포함하는 것을 특징으로 한다.
이하, 본 발명의 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법에 대하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
먼저, FPGA 프로그램은 FPGA의 논리 블록을 제어하고 논리 블록과 FPGA 입출력간의 데이터 경로 지정 방법을 경로 지정 장치에 알림으로 FPGA가 그 입력 신호를 처리하여 그 출력 신호를 생성하도록 한다. 따라서 FPGA 프로그램 데이터는 단순히 FPGA 프로그래밍 단자에 입력으로 공급된 일련의 경로 데이터일 뿐이다. 사용자는 FPGA 프로그램 장치에 경로 데이터를 포함하는 데이터 파일을 공급함으로써 FPGA를 프로그래밍 한다. 따라서 FPGA 프로그램 데이터가 프로그래밍 되지 않은 FPGA는 단순한 논리블록의 합일 뿐이다. FPGA를 프로그래밍 하기 위해서 전원이 인가되면 비휘발성 메모리에서 FPGA 프로그램을 FPGA로 다운로드하는 프로세스가 필수적이다. 이 때, FPGA 프로그램 데이터를 보호하기 위해서 비활성 메모리에 존재하는 프로그램을 암호화한다면 FPGA 개발자는 자신의 프로그램을 보호할 수 있으므로, 본 발명에서는 FPGA 프로그램 데이터 보호 방법에 대해 다음과 같은 실시예를 제안한다.
도 1은 본 발명의 일실시예에 의한 FPGA 프로그램 데이터 보호 방법을 나타낸 흐름도이다.
도 1에 도시된 바와 같이, 본 발명에서 적용되는 FPGA(Field Programmable Gate Array) 프로그램 데이터의 암복호 및 FPGA 프로그램 데이터 다운로드를 수행하는 방법의 예를 도시하고 있다.
먼저, FPGA 프로그램 데이터(110)는 암호화하는 과정을 거쳐(111) 암호화된 데이터로 생성되어야 한다(112). 이 과정에서 암호화를 위한 알고리즘의 구현과 암호화 알로리즘에 사용되는 암호용 키 발생 등은 PC상에서 구현 가능하다(120). 즉, PC 상에서 구현이 가능한 암호 알고리즘이나 공개키 암호, 비밀키 암호, 공개키 암호와 비밀키 암호를 혼용하는 하이브리드 공개키 암호 등 다양한 방법을 이용하여 암호화할 수 있다.
다음으로, 암호화된 데이터가 비휘발성 메모리에 주입되고(113), 이 과정에서 외부의 포트를 사용하여 비 휘발성 메모리에 프로그램을 전송할 수 있다(121). 이러한 과정을 거친 후 전원인가시(100) 비휘발성 메모리에서 복호화 프로세스를 수행할 수 있는 디지털 신호처리기(Digital Signal Processor, 이하 “DSP”라 함) 내부로 암호화된 데이터가 입력되고, DSP 운영 프로그램 내에 존재하는 복호화 프로세스를 거쳐(114) FPGA 프로그램 데이터는 복호화된다(115).
암호화와 복호화 과정에서 사용되는 복호 알고리즘과 복호용 키 값은 소프트웨어를 통해 구현함으로써, 복호 알고리즘이나 복호용 키 값의 유출시 알고리즘 업데이트와 같은 방법으로 재프로그래밍 가능하다(122). 또한 알고리즘이 변경된 경 우나 키 값이 변경된 경우 암호화된 FPGA 프로그램 데이터는 외부포트(121)를 통하여 비휘발성 메모리로 다운로드가 가능하다. 이와 같이, 비휘발성 메모리에 FPGA 프로그램을 FPGA로 다운로드하여(116) FPGA를 활성화하여 동작시키게 된다(117).
도 2는 본 발명의 일실시예에 의한 FPGA 프로그램 암호화 프로세스를 나타낸 흐름도이다.
도 2에 도시된 바와 같이, 원본 소스 프로그램인 암호화되지 않은 FPGA 프로그램 데이터(200)를 PC 프로그램/DSP을 이용하여 암호화한다(211). 여기서 사용하는 암호화 알고리즘과 암호용 키의 생성은 소프트웨어를 이용하여 구현한다(210). 그리고 암호화 알고리즘을 이용하여 FPGA 프로그램 데이터를 암호화하여(220) 비활성 메모리에 저장한다(221).
여기서 저장된 암호화된 FPGA 프로그램 데이터는 암호화 알고리즘과 암호용 키를 동시에 알고 있는 사용자가 아니면 그 데이터를 복호할 수 없게 된다. 따라서 FPGA 프로그램 데이터는 암호용 알고리즘과 암호용 키를 알 수 없는 공격자나 비인가자로부터 정보를 보호할 수 있게 되는 것이다. 한편 본 발명에서 사용하는 암호 알고리즘은 본 발명에 대상이 아니므로 상세한 설명은 생략하기로 한다.
도 3은 본 발명의 일실시예에 의한 FPGA 프로그램 복호화 프로세스를 나타낸 흐름도이다.
도 3에 도시된 바와 같이, 비휘발성 메모리(300)에 저장된 암호화된 FPGA 프 로그램 데이터는, 접근이 인가된 신호가 들어오면, 복호화 알고리즘과 복호용 키를 가지고 DSP를 이용하여 FPGA 프로그램 데이터를 복호화한다(310∼311). 복호화한 FPGA 프로그램 데이터는 PLD(Programmable Logic Device)를 거쳐 FPGA로 입력되어 FPGA를 활성화한다(320∼321). 본 프로세스 역시 복호화 알고리즘은 본 발명의 대상이 아니므로 상세한 설명은 생략하기로 한다.
한편, 도 3과 같은 프로세스를 통해서 복호화하여 FPGA 프로그램 데이터를 안전하게 다운로드할 수 있게 되는 것이다.
이와 같이, 본 발명에 적용될 수 있는 정보보호 알고리즘은 소프트웨어로 처리가 가능하므로 다양한 암복호 알고리즘의 사용이 가능하며, FPGA의 프로그램 데이터를 비인가자나 탈취자로부터 데이터를 안전하게 보호할 수 있다. 또한, 본 실시예에서는 비휘발성 메모리에 암복호 알고리즘을 저장하는 경우에 대해 설명하고 있으나, 이 암복호 알고리즘을 휘발성 메모리에 저장함으로써 암복호 알고리즘의 탈취 대비를 더욱 효과적으로 수행할 수 있을 것이다.
이상에서 몇 가지 실시예를 들어 본 발명을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것이 아니고 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형실시될 수 있다.
상술한 바와 같이, 본 발명에 따르면, FPGA 프로그램 데이터를 보호하여 비인가자의 사용이나 코드의 변형을 방지할 수 있는 시스템에 적용될 수 있다.
뿐만 아니라, FPGA 프로그램 데이터의 암복호를 소프트웨어를 이용하여 처리함으로써, 다양한 알고리즘이 사용 가능하고 암복호용 알고리즘이나 암복호용 키 값의 탈취시 다른 알고리즘으로의 변경이 용이하다. 즉, FPGA 프로그램 데이터를 암복호 알고리즘이 공개되었거나 암복호용 키가 유출될 경우, 간단한 소프트웨어의 변경만으로도 FPGA 프로그램 데이터를 보호할 수 있다.
그리고, 전원 인가시마다 FPGA 프로그램 데이터를 FPGA로 다운로드하게 되므로 FPGA 프로그램 데이터를 더욱 효과적으로 보호할 수 있다.

Claims (6)

  1. (a) FPGA(Field Programmable Gate Array) 프로그램 데이터를 온라인을 통해 업데이트가 가능한 암호화 알고리즘 및 상기 암호화 알고리즘에 사용되는 암호용 키를 이용하여 암호화하는 단계;
    (b) 상기 암호화된 FPGA 프로그램 데이터를 메모리에 주입하는 단계;
    (c) 상기 암호화된 FPGA 프로그램 데이터를 FPGA로 다운로드할 때, 상기 암호화된 FPGA 프로그램 데이터를 디지털 신호처리기(DSP)에서 온라인을 통해 업데이트가 가능한 복호화 알고리즘 및 상기 복호화 알고리즘에 사용되는 복호용 키를 이용하여 복호화하는 단계; 및
    (d) 상기 복호화된 FPGA 프로그램 데이터를 활성화시키는 단계
    를 포함하는 것을 특징으로 하는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 (b) 단계에서 외부 포트를 사용하여 메모리에 암호화된 FPGA 프로그램 데이터를 전송하는 것을 특징으로 하는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법.
  4. 삭제
  5. 제1항에 있어서, 상기 (d) 단계 이전에,
    상기 복호화된 FPGA 프로그램 데이터가 PLD(Programmable Logic Device)를 거치는 것을 특징으로 하는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법.
  6. 제1항에 있어서, 상기 메모리는 비휘발성 메모리 또는 휘발성 메모리인 것을 특징으로 하는 소프트웨어를 이용한 FPGA 프로그램 데이터 보호 방법.
KR1020060069711A 2005-12-22 2006-07-25 소프트웨어를 이용한 fpga 프로그램 데이터 보호 방법 KR100825461B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050127693 2005-12-22
KR20050127693 2005-12-22

Publications (2)

Publication Number Publication Date
KR20070066834A KR20070066834A (ko) 2007-06-27
KR100825461B1 true KR100825461B1 (ko) 2008-04-28

Family

ID=38365857

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060069711A KR100825461B1 (ko) 2005-12-22 2006-07-25 소프트웨어를 이용한 fpga 프로그램 데이터 보호 방법

Country Status (1)

Country Link
KR (1) KR100825461B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101954863B1 (ko) * 2018-07-09 2019-03-06 서울대학교산학협력단 온라인 월렛 장치 및 이의 생성과 검증 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001008411A1 (en) * 1999-07-21 2001-02-01 Credence Systems Corporation Field programmable gate array with program encryption

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001008411A1 (en) * 1999-07-21 2001-02-01 Credence Systems Corporation Field programmable gate array with program encryption
KR20020021374A (ko) * 1999-07-21 2002-03-20 오쿠모토 리차드 암호화 프로그램이 있는 필드 프로그래머블 게이트 어레이

Also Published As

Publication number Publication date
KR20070066834A (ko) 2007-06-27

Similar Documents

Publication Publication Date Title
US9760737B2 (en) Techniques for integrated circuit data path confidentiality and extensions thereof
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
KR101744748B1 (ko) 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
US7606362B1 (en) FPGA configuration bitstream encryption using modified key
US7835521B1 (en) Secure keyboard
US7571329B2 (en) Method of storing unique constant values
RU2004133759A (ru) Инициализация, поддержание, обновление и восстановление защищенного режима работы интегрированной системы, использующей функцию управления доступом к данным
EP2922235B1 (en) Security module for secure function execution on untrusted platform
US20110051931A1 (en) Encryption method and apparatus using composition of ciphers
CN110298186B (zh) 一种基于动态可重构密码芯片的无密钥数据加解密方法
US9722778B1 (en) Security variable scrambling
KR20130067849A (ko) 비트스트림 보호를 위한 fpga 장치 및 그 방법
KR101458479B1 (ko) 세션상태정보의 암호화 및 복호화 방법
KR20130093557A (ko) 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법
CN107925574B (zh) 秘密数据的安全编程
CN110855433B (zh) 基于加密算法的数据加密方法、装置及计算机设备
Coughlin et al. Breaking the trust dependence on third party processes for reconfigurable secure hardware
US7333613B2 (en) Cyphering of the content of a memory external to a processor
JP2003084853A (ja) プログラム可能なゲートアレイのためのコピー防止方法及びシステム
KR100825461B1 (ko) 소프트웨어를 이용한 fpga 프로그램 데이터 보호 방법
JP4593207B2 (ja) ソフトウェア無線システム
US11698993B2 (en) Integrated circuit configured to perform symmetric encryption operations with secret key protection
WO2020099718A1 (en) Method for providing a secret unique key for a volatile fpga
KR101915808B1 (ko) 난독화를 이용하는 암호문 복호화
JP2008003774A (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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130410

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140326

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160328

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170406

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 11