KR101481402B1 - 공개키 암호화 시스템 및 그 방법 - Google Patents

공개키 암호화 시스템 및 그 방법 Download PDF

Info

Publication number
KR101481402B1
KR101481402B1 KR20120122317A KR20120122317A KR101481402B1 KR 101481402 B1 KR101481402 B1 KR 101481402B1 KR 20120122317 A KR20120122317 A KR 20120122317A KR 20120122317 A KR20120122317 A KR 20120122317A KR 101481402 B1 KR101481402 B1 KR 101481402B1
Authority
KR
South Korea
Prior art keywords
encryption
decryption
algorithm
multiplication operation
value
Prior art date
Application number
KR20120122317A
Other languages
English (en)
Other versions
KR20140055423A (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 고려대학교 산학협력단
Priority to KR20120122317A priority Critical patent/KR101481402B1/ko
Publication of KR20140055423A publication Critical patent/KR20140055423A/ko
Application granted granted Critical
Publication of KR101481402B1 publication Critical patent/KR101481402B1/ko

Links

Images

Classifications

    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 스마트카드에서 요구되는 암/복호화를 하드웨어적인 처리와 소프트웨어적인 처리를 통해 같이 구현함으로써 암/복호화 처리에 소요되는 시간의 감소 및 보안성 확보를 동시에 도모할 수 있는 스마트카드에서의 암호화 방법에 관한 것이다.
개시되는 암호화 방법은 (a)공개키 암호화에 요구되는 키(key) 값의 업데이트와 사용자 고유 정보를 입력하기 위한 외부 인터페이스 및 상기 암호화의 구현을 위한 암/복호화 알고리즘을 소프트웨어적인 처리로 구현하는 단계; 및 (b)상기 암호화 알고리즘에 포함된 모듈로 승산 연산(modulo multiplication operation)은 하드웨어적인 처리로 구현하는 단계를 포함한다.
본 발명은 소프트웨어적인 처리가 요구되며 아울러 소프트웨어적인 처리만으로도 성능(속도)에 지장이 없고 하드웨어적인 처리와는 무관한 키 값의 업데이트(저장) 및 암/복호화 알고리즘은 소프트웨어적인 처리로 구현하고, 성능(속도)과 직접 관련되고 소프트웨어적인 처리와는 무관한 모듈로 승산 연산은 하드웨어적인 처리로 구현하여 두 처리 간 핸드셰이킹(handshaking)을 통해 스마트카드에 있어서의 암/복호화 모듈을 구현하기 때문에 스마트카드에 있어서의 중요한 두 요소인 보안성 확보와 속도(성능)의 향상을 동시에 도모할 수 있는 이점을 갖는다.

Description

공개키 암호화 시스템 및 그 방법{System of encryption/decryption and Method thereof in smart card in public key crypto algorithm}
본 발명은 공개키 암호화 시스템 및 그 방법에 관한 것으로, 보다 상세하게는 공개키 암/복호화를 하드웨어적인 처리와 소프트웨어적인 처리를 통해 같이 구현함으로써 암/복호화 처리에 소요되는 시간의 감소 및 보안성 확보를 동시에 도모할 수 있는 암호화 시스템 및 그 방법에 관한 것이다. 본 발명은 특히 스마트카드에서의 암/복호화 모듈의 구현에 유용하도록 하기 위한 것이다.
오늘날 IT 산업이 급격히 발전하면서 전자기기는 점점 소형화될 뿐만 아니라 유비쿼터스(ubiquitous) 컴퓨팅 환경이 일반화되면서 모바일 스마트 기기의 사용도 일상화되었다. 이러한 환경에 수반하여 금융 거래 등도 개인 단말을 이용하여 인터넷을 통해 이루어지고 있으며, 모바일 어플리케이션을 통한 거래 또한 급격히 늘어나고 있다.
한편 상기한 기능 등이 모바일 기기 등을 통해 이루어지는 것은 상기한 기능 등을 수행가능하게 하기 위한 '스마트카드(smart card)'가 기기에 삽입되어 이루어지고 있다. 그런데 스마트카드의 이용에 있어 특히 개인 정보의 외부 누출이 방지되도록 하는 보안성 확보가 전제되어야 하는데, 보안성 확보를 위한 솔루션(암호화 솔루션)에 관한 인식은 그 중요성에 비하여 많이 미비한 것이 실상이다. 그래서 아직까지는 스마트카드가 삽입되는 모바일 기기 같은 소형 전자 장비를 개발시에는 추가적인 비용이 많이 소요될 수밖에 없는 암호화 솔루션에 대한 신규 개발은 거의 도외시되고 있으며 기능(application) 및 성능(performance) 향상 측면에 더 많은 초점을 맞춰서 개발이 이루어지고 있다.
그러나 이러한 장비의 사용이 증가할수록 스마트카드의 암호화 솔루션에 대한 중요성과 필요성은 점점 늘어날 수밖에 없음을 이미 충분히 경험하였으며(그간 스마트카드를 이용한 여러 응용에서 개인 정보의 누출 사고가 다수 발생), 따라서 스마트카드의 성능을 향상시킬 수 있음과 아울러 보안성의 확보도 동시에 도모할 수 있는 방안이 필요하다.
본 발명은 상기와 같은 상황 및 필요성을 인식하여 창안된 것으로, 본 발명이 해결하고자 하는 과제는 스마트카드를 이용시에 보안성을 확보할 수 있는 암호화 모듈 구현 방안을 제시함과 아울러, 이에 따라 야기될 수 있는 스마트카드의 성능 하락 문제에도 대처할 수 있는 스마트카드에서의 암호화 시스템 및 그 방법을 제시하는 것이다.
상기와 같은 과제를 해결하기 위해 개시되는 암호화 방법은 (a)공개키 암호화에 요구되는 키(key) 값의 업데이트와 사용자 고유 정보를 입력하기 위한 외부 인터페이스 및 상기 암호화의 구현을 위한 암/복호화 알고리즘을 소프트웨어적인 처리로 구현하는 단계; 및 (b)상기 암호화 알고리즘에 포함된 모듈로 승산 연산(modulo multiplication operation)은 하드웨어적인 처리로 구현하는 단계를 포함하여 상기한 과제를 해결한다.
상기와 같은 과제를 해결하기 위해 개시되는 암호화 시스템은 공개키 암호화에 요구되는 키(key) 값의 업데이트와 사용자 고유 정보를 입력하기 위한 외부 인터페이스 및 상기 암호화의 구현을 위한 암/복호화 알고리즘을 소프트웨어적인 처리로 구현하고, 상기 암호화 알고리즘에 포함된 모듈로 승산 연산은 하드웨어적인 처리로 구현하여 상기한 과제를 해결한다.
본 발명은 공개키 암호화 방식으로 암/복호화 모듈이 구현되는 스마트카드에 있어서 소프트웨어적인 처리가 요구되며 아울러 소프트웨어적인 처리만으로도 성능(속도)에 지장이 없고 하드웨어적인 처리와는 무관한 키 값의 업데이트(저장) 및 암/복호화 알고리즘은 소프트웨어적인 처리로 구현하고, 성능(속도)과 직접 관련되고 소프트웨어적인 처리와는 무관한 모듈로 승산 연산은 하드웨어적인 처리로 구현하여 두 처리 간 핸드셰이킹(handshaking)을 통해 스마트카드에 있어서의 암/복호화 모듈을 구현하기 때문에 스마트카드에 있어서의 중요한 두 요소인 보안성 확보와 속도(성능)의 향상을 동시에 도모할 수 있는 이점을 갖는다.
도 1은 본 발명의 개념을 제시한 도면이다.
도 2는 본 발명의 흐름을 제시한 도면이다.
도 3은 본 발명에서의 몽고메리 승산 연산의 흐름을 제시한 도면이다.
본 발명을 실시하기 위한 구체적인 내용의 설명에 앞서 이해의 편의를 위해 본 발명이 해결하려는 과제의 해결 방안의 개요를 우선 제시한다.
스마트카드에서의 암호화에는 여러 가지 이유로 인해 비밀키 암호화 방식이 아닌 공개키 암호화 방식을 적용하는 것이 압도적이며, 공개키 암호화 방식에는 모듈로 승산 연산(modulo multiplication operation)이 반드시 포함된다. 공개키 암호화 방식은 공개키와 개인키에 대해 모듈로 멱승(modulo exponentiation)을 취하여 암호화 및 복호화가 이루어지며, 모듈로 멱승은 모듈로 승산을 기본 연산으로 하여 이루어지기 때문이다. 모듈로 승산 연산은 연속된 덧셈 연산으로부터 수행될 수 있으며, 연산 시에 캐리(carry)의 지연을 고려하지 않아도 되는 장점이 있는 몽고메리 승산 연산(Montgomery multiplication operation)을 주로 사용한다. 몽고메리 승산은 모듈로 승산을 가장 효율적으로 수행하는 알고리즘으로 알려져 있다.
한편 스마트카드에서의 암호화 모듈(복호화 모듈도 병행됨)의 구현을 위한 기존의 방식은 모두 하드웨어적인 처리(하드웨어적인 구현 효율화) 또는 소프트웨어적인 처리(소프트웨어 최적화) 중 어느 한 처리 측면에서만의 구현 내지 개선을 염두하고 있었으며, 각 처리에 관해서는 이미 다수의 기법들이 제안되거나 실시되고 있다.
하드웨어적인 처리의 가장 큰 강점은 특히 암호화/복호화 속도(성능)의 향상을 도모할 수 있고, 이는 스마트카드를 이용한 응용 자체의 실행 속도 향상의 결과까지도 볼 수 있다는 것이다. 한편 암호화/복호화에는 소정의 키들(keys)이 요구되는데 이들 키는 보안성 확보를 위해 지속적으로 업데이트 될 필요가 있다. 그런데 하드웨어적인 처리에 의하면 이러한 업데이트의 융통성(flexibility)을 확보할 수 없어 보안성 확보 측면에서의 문제를 야기할 수 있는 가능성이 존재한다. 즉, 하드웨어적인 처리의 경우 상기한 업데이트를 위해서는 키 값을 저장하는 하드웨어 요소(예를 들어 스마트카드에 삽입되는 칩 셋(chip-set) 등)를 통째로 교환하거나 키 값을 하드웨어적으로 삭제하는 과정을 통해서 할 수밖에 없다. 따라서 이러한 업데이트 과정을 거치지 아니하는 한 키 값의 업데이트는 불가하고, 키 값의 업데이트가 되지 아니한 스마트카드의 지속적 사용에 따라 키 값의 누출(종국적으로는 개인 정보의 누출)이 발생할 수 있는 위험성이 상존한다.
상기한 업데이트의 융통성을 확보하기 위해 소프트웨어적인 처리가 그 대안으로 등장하였다. 소프트웨어적인 처리에 의하면 키 값의 업데이트를 위한 외부 인터페이스를 구현할 수 있어 업데이트가 지속적으로 가능하므로 보안성 확보 측면에서 하드웨어적인 처리보다 매우 우수하며, 아울러 암/복호화 모듈을 모두 소프트웨어(소정의 프로그램 코드)로 구현하기 때문에 암/복호화 모듈의 설계 및 관리가 하드웨어적인 처리에 비해 매우 용이하다. 그러나 소프트웨어적인 처리만에 의해서는 암/복호화 속도(성능)의 적정 보장을 할 수 없는 단점을 가지며, 특히 상기한 모듈로 승산 연산을 소프트웨어적인 처리를 통해 구현하는 경우에는 계산량이 너무 많아 구현의 실효성이 없다. 이처럼 소프트웨어적인 처리는 하드웨어적인 처리와는 반대되는 장단점을 가진다.
스마트카드에서의 암/복호화 모듈의 설계에 있어서의 성능(속도) 향상 및 보안성 확보는 모두 중시되어야 할 요소이며, 따라서 이들 두 요소를 모두 만족시킬 수 있는 방안이 필요한 바, 본 발명은 이에 착안하여 스마트카드에서의 암/복호화 모듈을 하드웨어적인 처리와 소프트웨어적인 처리를 동시에 같이 이용하여 구현하고자 한다.
이하, 본 발명을 실시하기 위한 구체적인 내용을 본 발명의 바람직한 실시예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다. 아울러 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명 그리고 그 이외의 제반 사항이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
위에서 언급한 바와 같이 스마트카드의 암/복호화 모듈은 공개키 암호화 방식에 의해 이루어짐이 압도적이며, 이 암호화 방식에는 모듈로 승산 연산이 반드시 수반된다. 한편 공개키 암호화와 관련된 제반 연산에 있어서 모듈로 승산 연산이 가장 많은 연산량을 차지하기 때문에 공개키 암/복호화 방식의 소요 시간(암/복호화 속도)은 모듈로 승산 연산에 소요되는 시간에 의해 좌우된다.
이러한 소요 시간을 감소시키기 위해서 소프트웨어적인 처리에 의해 모듈로 승산 연산의 효율적 구현을 상정해 볼 수도 있으나(예를 들어 모듈로 승산 연산 알고리즘의 최적화 등을 통해), 소프트웨어적인 처리에 의한 효율적 구현을 이루더라도 연산 속도(성능) 측면에서의 실효성은 없기 때문에 기존의 암/복호화 모듈에서도 압도적으로 하드웨어적인 처리를 통해 모듈로 승산 연산을 수행토록 하고 있다. 아울러 위에서 언급한 바와 같이 기존의 암/복호화 모듈은 두 처리 중 어느 한 처리만을 염두하고 있기 때문에 어느 한 처리에 대한 변경은 다른 처리가 이러한 변경에 대응할 수 있도록(compatible) 다른 처리에 대한 변경도 수반될 수밖에 없는 문제를 유발시킨다.
본 발명은 스마트카드에서의 암/복호화 모듈의 구현을 하드웨어적인 처리와 소프트웨어적인 처리를 동시에 이용하여 실현하되, 성능(속도) 향상과 직접 관련된 측면에서는 하드웨어적인 처리로, 보안성 확보를 위한 측면에서는 소프트웨어적인 처리로 분리하여 암/복호화 모듈을 구현하는 것이다. 아울러 이러한 분리 구현은 어느 한 측면에서의 변경이 발생하여도 나머지 측면에는 전혀 영향을 주지 않도록 구현한다.
이를 위해 본 발명은 공개키 암호화 방식으로 암/복호화 모듈이 구현되는 스마트카드에 있어서 소프트웨어적인 처리가 요구되며 아울러 소프트웨어적인 처리만으로도 성능(속도)에 지장이 없고 하드웨어적인 처리와는 무관한 키 값의 업데이트(저장) 및 암/복호화 알고리즘은 소프트웨어적인 처리로 구현하고, 성능(속도)과 직접 관련되고 소프트웨어적인 처리와는 무관한 모듈로 승산 연산은 하드웨어적인 처리로 구현하여 두 처리 간 핸드셰이킹(handshaking)을 통해 스마트카드에 있어서의 암/복호화 모듈을 구현한다.
암/복호화 알고리즘의 구현 및 설정, 키 값의 업데이트(저장)와 입력값(예를 들어 사용자 ID 등 스마트카드의 사용자와 관련된 고유 정보)의 입력을 위한 외부 인터페이스의 구현은 위에서 언급한 바와 같이 소프트웨어적인 처리에 의해 이루어진다. 외부 인터페이스는 소정의 소프트웨어 모듈로 구현되며 일종의 에뮬레이터를 통해 CPU와 통신한다. 외부 인터페이스를 통해 업데이트된 키 값 또는 입력값도 CPU의 내부 메모리에 또는 CPU를 통해 외부 메모리에 업로드된다.
암/복호화 알고리즘으로는 공개키 암호화 방식을 이용할 수 있으며, 공개키 암호화 방식의 여러 방식 중에 RSA(Rivest, Shamir, Adleman) 암호화 방식을 이용할 수 있다. 암/복호화 알고리즘의 소프트웨어적인 처리에 의한 구현은 효율성을 위해 컴퓨터 프로그래밍 언어의 일종인 어셈블리어(assembly language)에 의하는 것이 바람직하다. 왜냐하면 어셈블리어는 기계어(machine language)에 가장 근접한 프로그래밍 언어로 프로그래밍의 어려움은 다소 있으나, 처리 속도 상승의 효과를 가져올 수 있기 때문이다.
한편 암/복호화 알고리즘의 소프트웨어적인 처리에 의한 구현의 효율성은 알고리즘의 프로그래밍 기법을 통해서도 이룰 수 있는 바, 본 발명은 소위 loop unrolling 기법을 통해 암/복호화 알고리즘의 프로그래밍을 한다. 암/복호화 알고리즘의 경우 암/복호화에 수반되는 소정의 연산을 행함에 있어 통상 루프 알고리즘을 수반하는데(C언어에서는 for문으로 표현됨), 루프 알고리즘은 암/복호화에 수반되는 연산의 소요 시간을 증가시켜 암/복호화 속도를 저하시키는 주된 원인으로 지목되어 왔으며 특히 소프트웨어적인 처리에만 의한 암/복호화 모듈의 구현에 있어서는 더욱 그러했다. 이러한 루프 알고리즘의 문제를 완화하기 위한 프로그래밍 기법이 loop unrolling 기법이며, 이는 반복 처리가 요구되는 연산에 루프 처리가 아닌 순차적 처리(sequential process)를 통해 연산을 수행하는 기법이다. 이 기법은 순차적 처리에 근간을 두므로 프로그램 코드의 크기 상승을 가져오는 단점은 있으나, 처리 속도 향상의 측면에서 루프 처리에 비해 커다란 이점을 가져 빠른 처리 속도가 요구되는 응용에 흔히 사용하는 프로그래밍 기법이다.
공개키 암호화 방식에는 모듈로 승산 연산이 반드시 포함됨을 위에서 언급했는데, 모듈로 승산의 연산량은 공개키 암호화 방식에 의한 암/복호화에 소요되는 연산량의 90% 이상을 차지하며, 연산량 자체가 너무 많아 이를 소프트웨어적인 처리를 통해 구현하는 것은 성능(속도) 향상 측면에서는 아무런 실효성이 없으므로, 본 발명에서는 공개키 암호화 방식(RSA 방식)에 의한 암/복호화 알고리즘 중 모듈로 승산 연산 부분을 하드웨어적인 처리를 통해 구현한다. 하드웨어적인 처리란 일단 구현이 이루어지고 나면 변경이 되지 아니함(또는 변경이 불가능함)을 의미하며, 아울러 소프트웨어적인 처리 측면에서의 변경이 발생하더라도 그 영향을 받지 않는다. 즉, 소프트웨어적인 처리 측면에서의 변경이 발생하더라도 하드웨어적인 처리로 구현된 모듈로 승산 연산을 위한 입력값은 변하지 아니하므로 영향을 받지 아니한다는 의미이다.
한편 모듈로 승산 연산은 여러 방식이 존재하나, 몽고메리 승산 연산을 사용하는 것이 가장 바람직하다. 몽고메리 승산 연산(승산 알고리즘)은 승수(multiplier) A, 피승수(multiplicand) B 및 모듈러스(modulus) M을 입력으로 하여, 최종 합(Sn)을 계산하여 출력한다. 몽고메리 승산 연산의 알고리즘은 다음과 같다.
1. S0 = 0
2. For i = 1 to n
Si = Si-1 + aiB
if s0 = 0 then
Si = Si-1 div 2
else
Si = (Si-1 + M) div 2
3. If Si >= M then Si = Si-1 - m
4. return Sn.
여기서 ai는 A가 n-비트로 표현될 경우의 i번째 비트의 값(0 또는 1)을, s0 는 이전 비트(i-1 번째 비트)에 대한 결과 값(Si-1, 중간 결과 값)의 최하위 비트(Least Significant Bit: LSB)의 값을, div는 쉬프트 라이트(shift right), m은 모듈로(modulo)를 의미한다.
몽고메리 승산 알고리즘은 그 특성상 쉬프트와 덧셈기(adder)를 사용해서 구현되며, 승산 연산시 항상 n-비트 승수의 i번째 비트 값(ai)과 중간 결과 값(Si-1)의 비트 값을 체크한 후 다음 쉬프트(또는 덧셈)를 수행하게 되는 등 승수, 중간 결과 값의 모든 비트에 대해 동일한 연산 과정을 반복 수행한다(상기 과정 2의 전 과정이 어느 경우에나 수행됨). 그러나 이는 승산 연산의 리던던시(redundancy)를 야기하여 속도(성능)의 향상을 저해할 우려가 있는데, 특히 비트 값(ai)이 0이거나 s0가 0인 경우에는 0이 아닌 이전 비트(prior bit)에 대한 연산 과정에서 얻어진 값(이전 루프에서 얻어진 값)을 그대로 사용하여도(일부 연산 과정을 생략(skip)하여도) 몽고메리 승산 연산의 최종 결과(Sn)에는 영향을 미치지 아니함을 위의 알고리즘을 통해 알 수 있다.
따라서 본 발명에서의 몽고메리 승산 연산은 ai와 s0의 값을 미리 체크하여 0인 경우에는 이전 루프에서 얻어진 값들을 그대로 사용하여 몽고메리 승산 연산의 속도를 더욱 향상시킬 수 있도록 한다.
소프트웨어적인 처리와 하드웨어적인 처리에 의한 암/복호화 모듈이 상기와 같이 구현되면 양 처리 파트 간의 핸드셰이킹을 통해 암/복호화가 이루어진다. 핸드셰이킹은 양방향 데이터 교환이 일어나는 컴퓨팅이나 통신 등의 환경에서는 흔히 쓰이는 기법이며, 본 발명에 의한 핸드셰이킹도 기존의 기법에 따를 수 있다.
다만, 통상적인 핸드셰이킹은 소프트웨어적인 처리 파트가 하드웨어적인 처리 파트에 명령을 내리면, 하드웨어적인 처리 파트는 그 명령을 수행하며 그 시간에 소프트웨어적인 처리 파트는 대기한다. 하드웨어적인 처리 파트가 동작을 끝내면, 완료 응답을 소프트웨어적인 처리 파트에 보내고 소프트웨어적인 처리 파트는 다시 다음 명령을 하드웨어적인 처리 파트에 보내는 방식으로 구성되어 '하나의 명령' 단위로 이루어지는데 반해, 본 발명에서는 '두 개 이상의 명령'에 대해 동시에 이루어지도록 한다. 간단한 예를 들면 다음과 같다.
a) 소프트웨어적인 처리 파트가 하드웨어적인 처리 파트에 첫 번째 명령(first que)과 두 번째 명령(Second que)을 같이 전달한다.
b) 하드웨어적인 처리 파트는 전달받은 두 명령을 수행하고 다음 명령을 기다린다.
c) 소프트웨어적인 처리 파트는 하드웨어적인 처리 파트가 이전에 보낸 두 명령을 실행하는 동안 다음 명령을 미리 준비하고 코프로세서에서 완료 응답이 오면 처음 두 명령을 캐쉬에서 삭제하고, 다음 명령을 하드웨어적인 처리 파트에 보낸다.
이렇게 다수의 명령 단위로 양 파트 간 핸드셰이킹을 수행하면 암/복호화에 소요되는 시간을 더욱 줄일 수 있다.
본 방법발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 유무선 네트워크를 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 본 명세서에서는 스마트카드를 중심으로 해서 발명이 개시되어 있지만 공개키 암호화 방식이 활용되는 어떠한 애플리케이션에 대해서도 본 발명의 적용은 가능하다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 균등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (12)

  1. (a)공개키 암호화에 요구되는 키(key) 값의 업데이트와 사용자 고유 정보를 입력하기 위한 외부 인터페이스 및 상기 암호화의 구현을 위한 암/복호화 알고리즘을 소프트웨어적인 처리로 구현하는 단계; 및
    (b)상기 알고리즘에 포함된 모듈로 승산 연산(modulo multiplication operation)은 하드웨어적인 처리로 구현하는 단계를 포함하되,
    상기 소프트웨어적인 처리와 하드웨어적인 처리 간 핸드셰이킹(Handshaking)을 통해 암호화 및 복호화를 구현하는 것을 특징으로 하는 공개키 암호화 방법.
  2. 제 1 항에 있어서,
    상기 암호화는 RSA(Rivest, Shamir, Adleman) 암호화 방식에 의한 것임을 특징으로 하는 공개키 암호화 방법.
  3. 제 1 항에 있어서,
    상기 모듈로 승산 연산은 몽고메리 승산 연산(Montgomery multiplication operation)인 것을 특징으로 하는 공개키 암호화 방법.
  4. 제 1 항에 있어서,
    상기 알고리즘을 상기 소프트웨어적인 처리에 의해 컴퓨터 프로그래밍 언어로 구현하는 경우, 상기 언어는 어셈블리어(assembly language)인 것을 특징으로 하는 공개키 암호화 방법.
  5. 제 1 항에 있어서,
    상기 알고리즘의 소프트웨어적인 처리에 의한 프로그래밍은 loop unrolling 기법을 적용하여 순차적 처리를 수행하는 것을 특징으로 하는 공개키 암호화 방법.
  6. 제 3 항에 있어서, 상기 몽고메리 승산 연산에 의한 최종 결과 값(Sn)을 구하는 것은 n-비트 승수(multiplier)의 i번째 비트의 값(ai) 또는 [i-1] 번째 비트에 대한 중간 결과 값(Si-1)의 최하위 비트(Least Significant Bit: LSB)의 값(s0)이 0일 때에는 0이 아닌 이전 비트(prior bit)에 대한 연산 과정에서 얻어진 값을 그대로 사용하여 이루어지는 것을 특징으로 하는 공개키 암호화 방법.
  7. 공개키 암호화에 요구되는 키(key) 값의 업데이트와 사용자 고유 정보를 입력하기 위한 외부 인터페이스 및 상기 암호화의 구현을 위한 암/복호화 알고리즘을 소프트웨어적인 처리로 구현하고, 상기 암호화 알고리즘에 포함된 모듈로 승산 연산(modulo multiplication operation)은 하드웨어적인 처리로 구현하되,
    상기 소프트웨어적인 처리와 하드웨어적인 처리 간 핸드셰이킹(Handshaking)을 통해 암호화 및 복호화를 구현하는 것을 특징으로 하는 공개키 암호화 시스템.
  8. 제 7 항에 있어서,
    상기 암호화는 RSA(Rivest, Shamir, Adleman) 암호화 방식에 의한 것임을 특징으로 하는 공개키 암호화 시스템.
  9. 제 7 항에 있어서,
    상기 모듈로 승산 연산은 몽고메리 승산 연산(Montgomery multiplication operation)인 것을 특징으로 하는 공개키 암호화 시스템.
  10. 제 7 항에 있어서,
    상기 알고리즘을 상기 소프트웨어적인 처리에 의해 컴퓨터 프로그래밍 언어로 구현하는 경우, 상기 언어는 어셈블리어(assembly language)인 것을 특징으로 하는 공개키 암호화 시스템.
  11. 제 7 항에 있어서,
    상기 알고리즘의 소프트웨어적인 처리에 의한 프로그래밍은 loop unrolling 기법을 적용하여 순차적 처리를 수행하는 것을 특징으로 하는 공개키 암호화 시스템.
  12. 제 9 항에 있어서, 상기 몽고메리 승산 연산에 의한 최종 결과 값(Sn)을 구하는 것은 n-비트 승수(multiplier)의 i번째 비트의 값(ai) 또는 [i-1] 번째 비트에 대한 중간 결과 값(Si-1)의 최하위 비트(Least Significant Bit: LSB)의 값(s0)이 0일 때에는 0이 아닌 이전 비트(prior bit)에 대한 연산 과정에서 얻어진 값을 그대로 사용하여 이루어지는 것을 특징으로 하는 공개키 암호화 시스템.
KR20120122317A 2012-10-31 2012-10-31 공개키 암호화 시스템 및 그 방법 KR101481402B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20120122317A KR101481402B1 (ko) 2012-10-31 2012-10-31 공개키 암호화 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120122317A KR101481402B1 (ko) 2012-10-31 2012-10-31 공개키 암호화 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20140055423A KR20140055423A (ko) 2014-05-09
KR101481402B1 true KR101481402B1 (ko) 2015-01-14

Family

ID=50887080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120122317A KR101481402B1 (ko) 2012-10-31 2012-10-31 공개키 암호화 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR101481402B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230010408A (ko) 2021-07-12 2023-01-19 주식회사 아이디스 사전 인증정보를 이용해 네트워크 응답속도를 개선한 영상 보안 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107994986A (zh) * 2017-12-22 2018-05-04 记忆科技(深圳)有限公司 一种加密算法可更新的tf卡及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040053833A (ko) * 2002-12-16 2004-06-25 한국전자통신연구원 고성능 타원곡선 암호화 장치
KR20060110383A (ko) * 2005-04-19 2006-10-25 엘지전자 주식회사 네트워크 보안 프로세서의 다중모드 암호화 장치
JP3979786B2 (ja) 1998-02-27 2007-09-19 モサイド・テクノロジーズ・インコーポレイテッド 共用メモリ配線を有する暗号化プロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3979786B2 (ja) 1998-02-27 2007-09-19 モサイド・テクノロジーズ・インコーポレイテッド 共用メモリ配線を有する暗号化プロセッサ
KR20040053833A (ko) * 2002-12-16 2004-06-25 한국전자통신연구원 고성능 타원곡선 암호화 장치
KR20060110383A (ko) * 2005-04-19 2006-10-25 엘지전자 주식회사 네트워크 보안 프로세서의 다중모드 암호화 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
류경태, 경북대학교 석사학위논문, CRT와 Radix-4 부스 알고리즘에 기반된 2048 bit RSA의 구현, 2007.08. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230010408A (ko) 2021-07-12 2023-01-19 주식회사 아이디스 사전 인증정보를 이용해 네트워크 응답속도를 개선한 영상 보안 시스템
EP4124030A1 (en) 2021-07-12 2023-01-25 Idis Co., Ltd. Video security system with improved network response time using pre-authentication information

Also Published As

Publication number Publication date
KR20140055423A (ko) 2014-05-09

Similar Documents

Publication Publication Date Title
Düll et al. High-speed Curve25519 on 8-bit, 16-bit, and 32-bit microcontrollers
Gueron et al. Fast prime field elliptic-curve cryptography with 256-bit primes
Fujii et al. Curve25519 for the Cortex-M4 and beyond
Albrecht et al. Implementing RLWE-based schemes using an RSA co-processor
EP1320027B1 (en) Elliptic curve cryptosystem apparatus, method and program
Oliveira et al. How to (pre-) compute a ladder: Improving the performance of X25519 and X448
CN109479003B (zh) 用于安全椭圆曲线密码指令的处理器、系统、方法和设备
JP4682852B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US10235506B2 (en) White-box modular exponentiation
Hutter et al. NaCl’s crypto_box in hardware
US20220182220A1 (en) Crypto processor, method of operating crypto processor, and electronic device including crypto processor
CN115936133A (zh) 利用重新定义的多项式运算的组合后量子安全
KR20120028432A (ko) 타원곡선암호를 위한 연산 장치 및 방법
Bos et al. Dilithium for memory constrained devices
KR101481402B1 (ko) 공개키 암호화 시스템 및 그 방법
Alpirez Bock et al. Increasing the Robustness of the Montgomery kP-Algorithm against SCA by Modifying its Initialization
EP1578054B1 (en) Cryptography-processing method, cryptography-processing apparatus and computer program
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
US20140177823A1 (en) Methods, systems and apparatus to reduce processor demands during encryption
Wiesmaier et al. An efficient mobile PACE implementation
Brumley et al. Batch binary weierstrass
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
CN112887097A (zh) 基于sm2椭圆曲线的签名方法、相关装置、及存储介质
KR101562323B1 (ko) 공개키 암호를 위한 다중 제곱 연산 장치 및 방법
JP6212377B2 (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: 20180102

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 6