KR20080031925A - 보안 패치 시스템 - Google Patents

보안 패치 시스템 Download PDF

Info

Publication number
KR20080031925A
KR20080031925A KR1020087002580A KR20087002580A KR20080031925A KR 20080031925 A KR20080031925 A KR 20080031925A KR 1020087002580 A KR1020087002580 A KR 1020087002580A KR 20087002580 A KR20087002580 A KR 20087002580A KR 20080031925 A KR20080031925 A KR 20080031925A
Authority
KR
South Korea
Prior art keywords
patch
key
hash
private
keys
Prior art date
Application number
KR1020087002580A
Other languages
English (en)
Other versions
KR101290818B1 (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
Priority claimed from DE102005030590A external-priority patent/DE102005030590B4/de
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20080031925A publication Critical patent/KR20080031925A/ko
Application granted granted Critical
Publication of KR101290818B1 publication Critical patent/KR101290818B1/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

기밀 보호 및 키 분실 tolerance를 향상시킬 수 있는 패치서버, 패치 클라이언트 및 해당 방법들을 제공한다. 패치서버는 제 1 키 생성 플랫폼 및 상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼을 포함한다. 상기 제 1 혹은 2 키 생성 플랫폼을 이용하여 각각 다수의 제 1 혹은 제 2 개인키들을 포함하는 제 1 및 2 개인키 그룹이 생성된다. 상기 제 1 개인키들 중 하나는 상기 제 1 개인키 그룹에서 선택되고, 상기 제 2 개인키들 중 하나는 상기 제 2 개인키 그룹에서 선택된다. 상기 패치 및 상기 선택된 제 1 개인키를 바탕으로 제 1 디지털 서명을 생성하고, 상기 패치 및 상기 선택된 제 2 개인키를 바탕으로 제 2 디지털 서명을 생성한다. 상기 패치는 상기 제 1 및 2 디지털 서명들과 함께 상기 패치 클라이언트로 전송된다.
Figure P1020087002580
패치 클라이언트, 디지털 서명, 공개키, 개인키, 해시합

Description

보안 패치 시스템{SECURE PATCH SYSTEM}
본 발명은 소프트웨어 업데이트에 관한 것으로, 보다 상세하게는, 분산 시스템에서의 소프트웨어 업데이트의 안전한 분산(distribution)에 관한 것이다.
많은 컴퓨터 미디어 혹은 통신 시스템들은 미인가 데이터 접속 혹은 웜(worm) 보급을 허용하는 보안상의 결점들로부터 시달리고 있다. 이로 인해, 상당한 손상이 유발될 수 있다. 일반적으로, 그러한 보안상의 결점들은 패치라고도 일컬어지는 보안 관련 소프트웨어 업데이트들을 통해 치유된다. 분산 시스템에서 패치들은 패치 서버에 의해 생성되어 예를 들어 통신 시스템의 모바일 유닛들 혹은 내장형 프로세서를 갖는 소비자 장치들과 같은 수많은 패치 클라이언트들에게 분산될 것이다.
그러나, 미보안 시스템으로부터 로드된 패치들은 여전히 악성 변조로부터 보호될 필요가 있다. 그렇지 않으면, 바이러스나 웜이 더욱 더 효과적인 공격을 하게 될 것이다. 예를 들면, GSM(Global System for Mobile Communication) 네트에 대한 DoS(Denial of Service) 공격이 수행될 수 있는데, 이에 대해 무선 셀당 단지 하나의 감염된 액티브 장치만이 전 시스템을 블록킹하는데 만족하고 있다.
종래의 시스템에서는, 비대칭 암호화(asymmetric cryptography)라고도 하는 공개키 암호화법(Public Key Cryptography, PKC)을 자주 이용하여 미보안 네트워크상으로의 비밀키 전송을 방지하여 패키지 분산을 보호한다. 이것의 기본적인 개념은 두 개의 키; 암호화(encryption)만을 위해 적용가능하며 공개적으로 알려진 공개키(Public Key, PK) 및 메시지들을 복호화(decryption)하기 위해 알아야만 하는 비밀키(Secret Key, SK)라고도 불리우는 개인키(private key)가 있다는 것이다. 이러한 보안법은 개인키를 공개키로부터 도출해야 하는 어려움과 상기 개인키를 모르는 상태에서 암호화된 메시지를 해독해야 하는 어려움이 있다.
PKC를 특별히 적용한 것에는 디지털 서명이 있다. 여기서, 일부 서류의 암호 해시 총합(hash checksum)을 계산한 후 이 해시 총합을 생성자(creator)의 개인키로 암호화하여 디지털 서명을 생성한다. 이러한 서명은 상기 서류에 일정 형태로 첨부된다. 상기 생성자의 개인키를 알고 있는 사람은 누구든 상기 서류의 해시 총합을 계산하고, 상기 첨부된 서명을 공개키로 복호화하여 그 결과를 해시된 서류와 비교할 수 있다. 또는, 상기 디지털 서명은 상기 해시 총합을 생성자의 개인키를 이용하여 복호화함으로써 생성될 수 있다. 검증을 위해, 서류의 수신자는 다시 해시 총합을 계산한 후 개인키로 암호화하여 그 결과를 상기 제공된 서명과 비교한다.
올바른 디지털 서명은, 그 서명의 생성자가 개인키를 알고 있으며(신빙성 : authenticity) 상기 서류가 상기 서명 생성 이후로 콘텐츠의 추가, 삭제 혹은 수정 혹은 상기 서류의 일부분의 재정리에 의해 수정되지 않았다는 것(완전성 : integrity)을 증명한다. 후자는, 예를 들어, MD5(Message Digest Algorithm 5), SHA-1(Secure Hash Algorithm 1) 혹은 RIPEMD-160(Race Integrity Primitives Evaluation Message Digest 160)과 같은 채택된 암호 해시 기능들의 특성들에 의해 제공된다. 그러나, 예를 들어, 서명 생성중에 상기 개인키를 도난당하였는지 여부는 알 수가 없다.
비밀에 대한 지식이 없는 신뢰할 수 없는 자들이 상기 디지털 서명을 확인할 수 있기 때문에 비대칭 암호화가 종종 디지털 서명에 이용된다. 그러나, PKC는 민감하고 느리다는 단점을 갖고 있다. 또한, PKC 시스템에서의 보안상 결점은 위장공격(man-in-the-middle attacks)의 가능성 때문이다. 이것은 공개키들의 신빙성이 어떤 식으로든 증명될 수 있다면 막을 수 있다. 몇 가지 시나리오에서, 지문이라고도 지칭되는 공개키를 통한 암호검사합(cryptographic checksum)을 계산하고, 이를 전화 등을 통해 수신자에게 직접 말해줌으로써 충분히 막을 수 있다. 그러나, 복잡하고 유동적으로 변하는 환경에서, 이는 불가능하다. 따라서, 이러한 목적을 위해 공개키들이 믿을 수 있는 자들의 계층관계를 통해 디지털로 서명되는 공개키 기반구조(Public Key Infrastructures, PKI)가 이용된다. 그러나, PKI 기반구조의 구현 및 유지에는 비용이 많이 든다.
또한, PKC에서 유발되는 더 많은 위험 및 문제점들이 있다, 예를 들면, RSA(Rivest-Shamir-Adleman) 암호화가 이용되는 경우를 들 수 있다. PKC가 느릴 경우에는 평문(plaintext) 부분들이 랜덤 비트들로 패딩(padding)된다. 그렇지 않으면 여러 공격들이 가능하기 때문이다. 따라서, 평문들은 일반적으로 공개키들을 이용하여 직접적으로 암호화되지는 않는다. 그 대신, 랜덤 세션 키가 생성되어 AES(Adevanced Encryption Standard) 혹은 투피쉬(two-fish)와 같은 알고리즘들을 이용하는 전통적인 대칭 암호화에 이용된다. 하이브리드 프로토콜이라 하는 이러한 프로토콜들에서, 상기 세션키만이 공개키로 암호화되어 암호문에 추가된다.
그러나, 하이브리드 프로토콜을 이용하는 경우라도, 상기 세션키는 여전히, 예를 들어, 512 혹은 1024 비트 길이로 랜덤하게 패딩되어야 한다. 불충분한 패딩은 보안을 약화시킨다.
게다가, 개인 RSA 키에서 비트가 하드웨어나 공격자에 의해 플립되어(flipped) 이 개인키가 메시지를 정의하는데 이용되면, 공개키는 인수분해될 수 있어서 보안은 완전히 깨진다. 이로 인해 PKC 시스템들에 상당한 위험이 초래된다.
또한, 트랩도어들이 공개키 생성에서 구현될 수 있다. 생성 알고리즘의 수정에 관해 알고 있는 공격자는 상기 공개키로부터 개인키를 쉽게 추론해 낼 수 있을 것이다. 이로 인해, 보안이 다시 완벽히 깨지게 된다.
따라서, 많은 종래의 패치 시스템들은 PKC를 피하려고 노력한다. 믿을 수 있는 서버들과 (예를 들어, GSM 전화의) 내장형 프로세서들과 같은 클라이언트 간에 다이얼로그가 있는 시스템들에서는, (스마트 카드의) 직렬화된 키 및 시도-응답 프로토콜(Challenge Response Protocol)을 통해 단순하면서 확고한 해결책을 제공할 수 있을 것이다. 그러나, 많은 시스템들의 경우, 이것을 적용할 수 없다. 예를 들어, 수신자가 부팅 중에 고정되어 있고 수동적일 때, 어떠한 직렬화도 불가능하다.
또 다른 경우, 여럿이 공통 비밀들을 공유하는 종래 시스템에서는 HMAC(Keyed-Haching for MEsssage Authentication)와 같은 암호검사합을 이용한다. 따라서, 일 예로는 키들이 SIM(Subscriber Identification Module) 카드에 의해 분산되는 GSM/UMTS(Global System for Mobile Communications/Universal Mobile Telecommuniations System) 이동전화에서의 인증 및 키 핸들링이 있다. 이 해결방안은 PKC보다는 더 단순하고, 더 신속하며 더 확실하다. 그러나, HMAC 암호검사합이 완전성을 증명할 수 있더라도, 해당 비밀키는 EP(Embedded Processor : 내장 프로세서) 수신기의 펌웨어에 고정되어 있을 것이다. 따라서, 이러한 비밀 HMAC 키를 누설시키는 것은 모든 검사합을 가치없게 만들 것이다.
그러므로, 많은 종래의 패치 시스템들에서 디지털 서명들을 사용하지만, 완전성을 확신하기에는 충분하지 않다. 만약 패치들이 역으로 설계되는 경우(reverse engineered), 보안상의 결점들이 발견될 수 있다. 서명된 패치는 단지 자신의 진실성(trueness)만을 증명할 뿐 자신의 보안을 증명하진 못한다. 보안은 단지 저자에 대한 믿음만으로 제공된다. 또한, 모든 패치 클라이언트들이 동일한 공개키를 사용하여 패치에 서명하는 것은 상당히 불안하다는 단점을 유발한다. 만약 개인키가 새어나가는 경우 모든 보안은 상실된다. 이보다 더욱 가능한 시나리오로는 개인키를 분실하는 경우이다. 이 경우, 어떠한 패치들도 더 이상 릴리즈될 수 없으며 모든 패치 클라이언트들은 점점 더 불안해질 것이다.
따라서, 종래 기술의 단점들을 극복할 수 있는 개선된 패치 서버, 패치 클라이언트 및 해당 방법들이 제공된다. 실시예들에서는 비밀 보호 및 키 분실 허용한계를 증가시킬 것이며, 이를 통해 투자보호를 증가시킬 것이다. 또한, 키 노출 보호를 향상시킬 것이다. 그 밖의 실시예들에서는 키 생성에 여전히 보안상의 결점이 있는 경우에 취약 키들의 위험을 감소시킬 것이다.
일 측면에 따른, 패치 서버는 패치 클라이언트와 연결되어 상기 패치 클라이언트에 패치를 제공한다. 상기 패치 서버는 제 1 키 생성 플랫폼, 상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼, 제 1 키 선택기, 제 2 키 선택기, 제 1 서명 생성기, 제 2 서명 생성기 및 송신기를 포함한다. 상기 제 1 키 생성 플랫폼은 다수의 제 1 개인키들을 포함하는 제 1 개인키 그룹을 생성하기 위하여 구성된다. 상기 제 2 키 생성 플랫폼은 다수의 제 2 개인키들을 포함하는 제 2 개인키 그룹을 생성하기 위하여 구성된다. 상기 제 1 및 2 키 선택기들은 상기 제 1 및 2 개인키 그룹들로부터 상기 제 1 및 2 개인키들 중 하나씩을 선택하기 위하여 구성된다. 상기 제 1 서명 생성기는 상기 패치 및 상기 선택된 제 1 개인키를 바탕으로 제 1 디지털 서명을 생성하기 위하여 구성된다. 상기 제 2 서명 생성기는 상기 패치 및 상기 선택된 제 2 개인키를 바탕으로 제 2 디지털 서명을 생성하기 위하여 구성된다. 상기 송신기는 상기 패치를 상기 제 1 및 2 디지털 서명들과 함께 상기 패치 클라이언트로 전송하기 위하여 구성된다.
다른 실시예에서, 상기 패치 서버는 랜덤 세션 키를 생성하기 위한 세션 키 생성기와, 대칭 암호화 알고리즘을 이용하여 상기 랜덤 세션 키로 상기 패치를 암호화하기 위한 제 1 암호화부와, 상기 랜덤 세션 키를 마스터키로 암호화하기 위한 제 2 암호화부를 더 포함한다.
다른 실시예에서, 상기 패치 서버의 상기 제 1 암호화부는 또한 상기 제 1 및 2 디지털 서명들을 상기 대칭 암호화 알고리즘을 이용하여 상기 랜덤 세션 키로 암호화하기 위하여 구성되며, 상기 송신기는 또한 상기 암호화된 형태의 패치를 상기 암호화된 형태의 제 1 및 2 디지털 서명들과 상기 암호화된 랜덤 세션 키와 함께 상기 패치 클라이언트로 전송하기 위하여 구성된다.
다른 측면에 따라, 패치 클라이언트로의 패치 제공 방법이 제공된다. 제 1 키 생성 플랫폼을 이용하여 다수의 제 1 개인키들을 포함하는 제 1 개인키 그룹을 생성한다. 상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼을 이용하여 다수의 제 2 개인키들을 포함하는 제 2 개인키 그룹을 생성한다. 상기 제 1 개인키 그룹으로부터 상기 제 1 개인키들 중 하나를 선택하고, 상기 제 2 개인키 그룹으로부터 상기 제 2 개인키들 중 하나를 선택한다. 상기 패치 및 상기 선택된 제 1 개인키를 바탕으로 제 1 디지털 서명을 생성한다. 상기 패치 및 상기 선택된 제 2 개인키를 바탕으로 제 2 디지털 서명을 생성한다. 상기 패치를 상기 제 1 및 2 디지털 서명들과 함께 상기 패치 클라이언트로 전송한다.
다른 실시예에서, 상기 방법은 상기 패치를 바탕으로 제 1 해시합을 산출하는 과정과, 상기 제 1 해시합을 바탕으로 제 2 해시합을 산출하는 과정을 더 포함하며,
상기 제 1 디지털 서명을 생성하는 과정은 상기 제 2 해시합 및 상기 선택된 제 1 개인키를 바탕으로 상기 제 1 디지털 서명을 생성하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 제 2 해시합을 바탕으로 제 3 해시합을 산출하는 과정을 더 포함하며,
상기 제 2 디지털 서명을 생성하는 과정은 상기 제 3 해시합과 상기 선택된 제 2 개인키를 근거로 상기 제 2 디지털 서명을 생성하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 다수의 해시합들을 산출하는 과정을 더 포함하며,
상기 패치는 다수의 기록(record)를 포함하며,
상기 다수의 해시합들을 산출하는 과정은 상기 패치에 포함된 마지막 기록을 근거로 상기 다수의 해시합들의 제 1 해시합을 산출하는 과정을 포함하며,
상기 다수의 해시합들을 산출하는 과정은 상기 패치에 포함된 각각의 마지막 기록의 이전 기록 및 상기 산출된 다수의 해시합들의 각 마지막 해시합을 근거로 상기 다수의 해시합들의 각각의 해시합을 산출하는 과정을 더 포함한다.
다른 실시예에서, 상기 제 1 디지털 서명을 생성하는 과정은 상기 산출된 다수의 해시합들의 마지막 해시합을 근거로 상기 제 1 디지털 서명을 생성하는 과정을 포함하며,
상기 패치를 전송하는 과정은 상기 패치를 상기 제 1 및 제 2 디지털 서명들 및 상기 다수의 해시합들과 함께 상기 패치 클라이언트로 전송하는 과정을 포함한다.
다른 실시예에서, 상기 제 2 디지털 서명을 생성하는 과정은 상기 산출된 다수의 해시합들의 마지막 해시합을 근거로 상기 제 2 디지털 서명을 생성하는 과정을 포함하며,
상기 패치를 전송하는 과정은 상기 패치를 상기 제 1 및 2 디지털 서명들 및 상기 다수의 해시합들과 함께 상기 패치 클라이언트로 전송하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 제 1 개인키가 상기 제 1 개인키 그룹으로부터 선택되었다는 것을 나타내는 제 1 키 지시자 및 제 2 개인키가 상기 제 2 개인키 그룹으로부터 선택되었다는 것을 나타내는 제 2 키 지시자를 포함하는 키 지시자를 생성하는 과정을 더 포함하며,
상기 패치를 전송하는 과정은 상기 패치를 상기 제 1 및 2 디지털 서명 및 상기 키 지시자와 함께 상기 패치 클라이언트로 전송하는 과정을 포함한다.
다른 실시예에서, 상기 키 지시자를 생성하는 과정은 상기 제 1 및 2 디지털 서명들 중 하나를 더미 서명으로 식별하는 더미 지시자를 더 포함하는 상기 키 지시자를 생성하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 랜덤 세션키를 생성하는 과정과, 상기 패치를 대칭 암호화 알고리즘을 이용하여 상기 랜덤 세션키로 암호화하는 과정과, 상기 랜덤 세션키를 마스터 키로 암호화하는 과정을 더 포함하며,
상기 패치를 전송하는 과정은 상기 암호화된 형태의 패치를 상기 제 1 및 2 디지털 서명들 및 상기 암호화된 랜덤 세션키와 함께 상기 패치 클라이언트로 전송하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 제 1 및 2 디지털 서명들을 상기 대칭 암호화 알고리즘을 이용하여 상기 랜덤 세션키로 암호화하는 과정을 더 포함하며,
상기 패치를 전송하는 과정은 상기 암호화된 형태의 패치를 상기 암호화된 형태의 제 1 및 2 디지털 서명들 및 상기 암호화된 랜덤 세션키와 함께 상기 패치 클라이언트로 전송하는 과정을 포함한다.
다른 측면은 패치 서버와 연결되어 상기 패치서버로부터 패치를 수신하는 패치 클라이언트에 관한 것이다. 상기 패치 클라이언트는 제 1 및 2 저장수단들, 제 1 및 2 키 선택기들, 및 제 1 및 2 서명 검증 요소들로 구성된다. 상기 제 1 저장수단은 제 1 키 생성 플랫폼에서 생성된 다수의 제 1 공개키들을 포함하는 제 1 공개키 그룹을 저장한다. 상기 제 2 저장수단은 상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼에서 생성된 다수의 제 2 공개키들을 포함하는 제 2 공개키 그룹을 저장한다. 상기 제 1 및 2 키 선택기들은 상기 제 1 및 2 공개키 그룹들로부터 상기 제 1 및 2 공개키들 중 하나씩을 각각 선택하기 위하여 구성된다. 상기 제 1 서명 검증 요소는 상기 선택된 제 1 공개키를 이용하여 상기 패치와 함께 상기 패치 서버로부터 수신된 제 1 디지털 서명을 검증하기 위하여 구성된다. 상기 제 2 서명 검증 요소는 상기 선택된 제 2 공개키를 이용하여 상기 패치와 함께 상기 패치 서버로부터 수신된 제 2 디지털 서명을 검증하기 위하여 구성된다. 상기 패치 클라이언트는 상기 제 1 및 2 디지털 서명들에 대한 검증 결과들이 각각의 제 1 및 2 디지털 서명들의 신빙성(authenticity) 및 완전성(integrity)을 나타내는 경우에만 상기 패치를 설치하도록 구성된다.
다른 실시예에서, 상기 패치 클라이언트는 상기 패치를 바탕으로 제 1 해시합을 산출하기 위한 제 1
기와, 상기 제 1 해시합을 바탕으로 제 2 해시합을 산출하기 위한 제 2 해시기를 더 포함하며,
상기 제 1 서명 검증 요소는 또한 상기 제 2 해시합을 바탕으로 상기 제 1 디지털 서명을 검증하기 위하여 구성된다.
다른 실시예에서, 상기 패치 클라이언트는 상기 제 2 해시합을 바탕으로 제 3 해시합을 산출하기 위한 제 3 해시기를 더 포함하며,
상기 제 2 서명 검증 요소는 또한 상기 제 3 해시합을 바탕으로 상기 제2 디지털 서명을 검증하기 위하여 구성된다.
다른 실시예에서, 상기 제 1 서명 검증 요소는 또한 상기 패치와 함께 상기 패치 서버로부터 수신된 제 1 해시합을 바탕으로 상기 제 1 디지털 서명을 검증하기 위하여 구성되며,
상기 제 2 서명 검증 요소는 또한 상기 제 1 해시합을 바탕으로 상기 제 2 디지털 서명을 검증하기 위하여 구성된다.
다른 실시예에서, 상기 제 1 키 선택기는 또한 상기 패치와 함께 상기 패치서버로부터 수신된 제 1 키 지시자에 따라 상기 제 1 공개키들 중 하나를 선택하기 위하여 구성되며,
상기 제 2 키 선택기는 상기 패치와 함께 상기 패치 서버로부터 수신된 제 2 키 지시자에 따라 상기 제 2 공개키들 중 하나를 선택하기 위하여 구성된다.
다른 실시예에서, 상기 패치 클라이언트는 또한 상기 패치와 함께 상기 패치 서버로부터 수신된 더미(dummy) 지시자가 상기 제 1 혹은 2 디지털 서명을 더미 서명으로 식별할 경우 상기 제 1 혹은 2 디지털 서명의 검증 결과를 무시하도록 구성된다.
다른 실시예에서, 상기 패치 클라이언트는 마스터키를 저장하기 위한 제 3 저장수단과, 상기 마스터키를 이용하여 상기 패치와 함께 상기 패치 서버로부터 수신된 암호화된 랜덤 세션키를 복호화하여 상기 랜덤 세션키를 얻기 위한 제 1 복호화부와, 상기 랜덤 세션키를 이용하여 대칭 복호화 알고리즘을 적용하여 상기 패치를 복호화하기 위한 제 2 복호화부를 더 포함한다.
다른 실시예에서, 상기 제 2 복호화부는 또한 상기 대칭 복호화 알고리즘을 적용하여 상기 랜덤 세션키로 상기 제 1 및 2 디지털 서명들을 복호화하기 위하여 구성된다.
다른 실시예에서, 상기 마스터키는 상기 제 3 저장수단에 저장되어 있는 다른 정보들 사이에 숨겨진 채로 상기 제 3 저장수단에 저장된다.
다른 실시예에서, 상기 마스터키는 상기 패치 클라이언트의 제작 과정 중에 상기 제 3 저장수단에 입력된다.
다른 실시예에서, 상기 제 1 공개키 그룹 및 제 2 공개키 그룹은 상기 패치 클라이언트의 제작 과정 중에 상기 제 1 및 2 저장수단들에 각각 입력된다.
또 다른 측면에 따라 패치 클라이언트에 패치를 설치하는 방법을 제공한다. 상기 패치는 상기 패치 클라이언트와 연결된 패치 서버로부터 제 1 및 2 디지털 서명과 함께 수신된다. 다수의 제 1 공개키를 포함한 제 1 공개키 그룹은 상기 패치 클라이언트에 저장되며, 상기 제 1 공개키들은 제 1 키 생성 플랫폼에 의해 이미 생성되어 있다. 또한, 다수의 제 2 공개키들을 포함한 제 2 공개키 그룹은 상기 패치 클라이언트에 저장되며, 상기 제 2 공개키들은 상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼에 의해 이미 생성되어 있다. 상기 제 1 공개키들 중 하나와 상기 제 2 공개키들 중 하나는 상기 제 1 및 2 공개키 그룹들로부터 각각 선택된다. 상기 제 1 디지털 서명은 상기 선택된 제 1 공개키를 이용하여 검증되며, 상기 제 2 디지털 서명은 상기 선택된 제 2 공개키들을 이용하여 검증된다. 상기 패치는 상기 제 1 및 2 디지털 서명들에 대한 검증 결과들이 각각의 제 1 및 2 디지털 서명들의 신빙성(authenticity) 및 완전성(integrity)을 나타내는 경우에만 상기 패치 클라이언트에 설치된다.
다른 실시예에서, 상기 방법은 상기 패치를 바탕으로 제 1 해시합을 산출하는 과정과, 상기 제 1 해시합을 바탕으로 제 2 해시합을 산출하는 과정을 더 포함하며,
상기 제 1 디지털 서명을 검증하는 과정은 상기 제 2 해시합을 바탕으로 상기 제 1 디지털 서명을 검증하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 제 2 해시합을 근거로 제 3 해시합을 산출하는 과정을 더 포함하며,
상기 제 2 디지털 서명을 검증하는 과정은 상기 제 3 해시합을 근거로 상기 제 2 디지털 서명을 검증하는 과정을 포함한다.
다른 실시예에서,상기 방법은 상기 패치와 함께 상기 패치 서버로부터 제 1 해시합을 수신하는 과정을 더 포함하며,
상기 제 1 디지털 서명을 검증하는 과정은 상기 제 1 해시합을 바탕으로 상기 제 1 디지털 서명을 검증하는 과정을 포함하며,
상기 제 2 디지털 서명을 검증하는 과정은 상기 제 1 해시합을 근거로 상기 제 2 디지털 서명을 검증하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 패치와 함께 상기 패치 서버로부터 제 1 키 지시자 및 제 2 키 지시자를 수신하는 과정을 더 포함하며,
상기 제 1 공개키들 중 하나를 선택하는 과정은 상기 제 1 키 지시자에 따라 상기 제 1 공개키들 중 하나를 선택하는 과정을 포함하며,
상기 제 2 공개키들 중 하나를 선택하는 과정은 상기 제 2 키 지시자에 따라 상기 제 2 공개키들 중 하나를 선택하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 패치와 함께 상기 패치 서버로부터 더미 지시자를 수신하는 과정과, 상기 더미 지시자가 상기 제 1 혹은 제 2 디지털 서명을 더미 서명으로 식별하는 경우 상기 제 1 혹은 제 2 디지털 서명의 검증 결과를 무시하는 과정을 더 포함한다.
다른 실시예에서, 상기 방법은 상기 패치와 함께 상기 패치 서버로부터 암호화된 랜덤 세션키를 수신하는 과정과, 상기 패치 클라이언트에 마스터키를 저장하는 과정과, 상기 마스터키를 이용하여 상기 암호화된 랜덤 세션키를 복호화하여 상기 랜던 세션키를 얻는 과정과, 대칭 복호화 알고리즘을 적용하여 상기 랜덤 세션키로 상기 패치를 복호화하는 과정을 더 포함한다.
다른 실시예에서, 상기 방법은 상기 제 1 및 2 디지털 서명들을 상기 대칭 복호화 알고리즘을 적용하여 상기 랜덤 세션키로 복호화하는 과정을 더 포함한다.
다른 실시예에서, 상기 패치 클라이언트에 상기 마스터키를 저장하는 과정은 상기 마스터키를 상기 패치 클라이언트에 저장되어 있는 다른 정보들 사이에 숨겨서 저장하는 과정을 포함한다.
다른 실시예에서, 상기 방법은 상기 마스터키를 상기 패치 클라이언트의 제작 과정 중에 상기 패치 클라이언트에 입력하는 과정을 더 포함한다.
다른 실시예에서, 상기 방법은 상기 제 1 공개키 그룹 및 상기 제 2 공개키 그룹을 상기 패치 클라이언트의 제작 과정 중에 상기 패치 클라이언트에 입력하는 과정을 더 포함한다.
첨부된 도면들은 본 발명의 원리를 설명하기 위하여 본 명세서와 통합되며 본 명세서의 일부를 형성한다. 상기 도면들은 본 발명의 구성 및 사용 방법을 기술 및 설명하는 예시들에 본 발명을 한정하는 것으로 해석되어져서는 안된다. 그 밖의 특성 및 장점들은 첨부된 도면에 나타낸 바와 같이 하기의 보다 상세한 설명으로부터 명확해질 것이다:
도 1은 일 실시예에 따른 패치 시스템의 구성요소들을 도시한 블록도;
도 2는 일 실시예에 따른 비밀키 관리를 도시한 블록도;
도 3은 일 실시예에 따른 공개키 관리를 도시한 블록도;
도 4는 일 실시예에 따른 패치 전송을 도시한 흐름도;
도 5는 일 실시예에 따른 해시 체인의 단계를 도시한 도면;
도 6은 일 실시예에 따른 개인키 선택을 도시한 흐름도;
도 7은 서명 생성을 도시한 흐름도;
도 8은 일 실시예에 따른 KEK 암호화의 단계를 도시한 도면;
도 9는 다른 실시예에 따른 해시 체인의 단계를 도시한 흐름도;
도 10은 다른 실시예에 따른 서명 생성을 도시한 흐름도;
도 11은 일 실시예에 따른 패치 블록의 구성을 도시한 도면;
도 12는 상기 실시예에 따른 키 지시자의 구성을 도시한 블록도;
도 13은 다른 실시예에 따른 패치 블록의 배열을 도시한 블록도;
도 14는 일 실시예에 따른 전송 블록을 도시한 블록도;
도 15는 일 실시예에 따른 패치 설치 과정을 도시한 흐름도;
도 16은 일 실시예에 따른 공개키 선택을 도시한 흐름도;
도 17은 일 실시예에 따른 서명 검증을 설명하는 흐름도;
도 18은 다른 실시예에 따른 패치 설치를 도시한 흐름도;
도 19는 다른 실시예에 따른 서명 검증을 도시한 도면;
도 20은 다른 실시예에 따른 기록당 패치 복호화(recordwise patch decryption)를 도시한 흐름도이다.
이하, 도면을 참조하여 도시된 본 발명의 실시예들을 설명할 것이다. 어떤 장치의 내장형 프로세서와 같은 패치 클라이언트의 소프트웨어는 보안되지 않은(insecure) 시스템들로부터 패치를 얻을 것이다. 상기 실시예들은 이러한 패치들이 적용될 때 수정되지 않는 것을 보장한다. 예를 들어, 악성 패치들은 몇몇 바이러스 혹은 웜에 의해 수행될 수도 있다. 또한, 상기 소프트웨어 내에서나 패치 자 체내에서 미발견된 보안상의 결점이 동일한 결과를 만들어낼 가능성이 있다. 상기 실시예들에서는 이러한 시나리오의 부정적인 영향으로부터 패치 클라이언트를 보호할 것이다.
도 1에서는 일 실시예에 따른 패치 시스템의 구성요소를 도시하고 있다. 패치서버(100)는 다수의 패치 클라이언트들(140)에 연결되어 상기 패치 클라이언트들에 보안 관련 소프트웨어 업데이트들, 즉, 패치들을 제공한다. 상기 패치 클라이언트는 예를 들면 내장 시스템들, 개인 컴퓨터들 혹은 미디어/통신 장치들일 수 있다. 상기 패치 클라이언트들은 적합한 종류의 연결, 예를 들어, 무선 혹은 유선 연결을 통해 상기 패치 서버(100)에 연결될 것이다. 상기 패치서버(100)는 컴퓨터 혹은 분산 컴퓨터 시스템일 수 있다.
도시된 실시예에 따르면, 상기 패치 서버(100)는 3개의 키 생성 플랫폼들(110, 120, 130)을 포함한다. 상기 플랫폼들(110, 120, 130)은 서로 별개이며, 키 생성 및 관리의 역할을 할 것이다.일반적으로, 플랫폼은 하드웨어나 소프트웨어 혹은 양쪽 모두에서 일종의 프레임웍(framework)을 설명하는 것으로 소프트웨어의 구동을 가능하게 하는 것이다. 본 실시예에서의 상기 키 생성 플랫폼들(110, 120, 130)은 서로 다른 어플리케이션 및 하드웨어를 바탕으로 하며 병렬식으로 이용될 것이다. 이는 키 생성 장치에 구현된 트랩도어(trapdoor)에 대한 보안을 향상시킬 것이다. 그러나, HSM(Hardware Security Modules)들이 유일한 베이스로서 허용가능한 실시예에서, 키 생성을 위해 서로 다른 소프트웨어 및 하드웨어를 사용하는 것은 중요한 문제가 아닐 수도 있다.
상기 실시예에 따르면, 상기 제 1 키 생성 플랫폼(110)은 nCipher의 일정 nShield HSM의 도움으로 키들을 생성하여 저장한다. 상기 제 2 키 생성 플랫폼(120)은 Knoppix Linux 하에서 키들을 생성하여 이용할 것이다. RAM(Random Access Memory)에서만 동작하므로, Knoppix Linux는 하드디스크상에 어떠한 흔적도 남기지 않는다. 상기 생성된 키들은 암호화된 형태로 외부에 저장될 것이다. 상기 제 2 키 생성 플랫폼(120)에서의 키 관리는 OpenSSL에 의해 이루어질 것이다. 또한, 긴 패스프레이즈(long pass phrase)는, 개인키들을 해제하여 사용하기 위하여, 두 사람이 차례로 타이핑해야 하도록 분리될 것이다. 상기 제 3 키 생성 플랫폼(130)은 종래와 같이 OpenSSL에 의해 키를 관리하지만, SELinux(Security Enhanced Linux) 시스템 혹은 어떤 동등한 높은 보안 동작 시스템 하에서 키 관리가 이루어질 것이다. 다른 측면에서, 암호카드(cryptocards)가 상기 제 3 키 생성 플랫폼(130)에 의해 이용될 수 있다.
개인키의 유출을 방지하는 신뢰성을 높이기 위하여, nShield에서는 비밀 공유("n개의 오퍼레이터 카드 중 k 개(k of n operator cards"))를 이용할 것이다. 독립적인 부분들(independent parties)은 서명 과정에 포함될 것이며 키들은 상기 제 1 키 생성 플랫폼(110)의 두 관리자들 혹은 관리자 그룹들 사이에 나눠질 것이다.
본 실시예의 패치 시스템은 상기 키 생성 플랫폼(110, 120, 130)에서 생성 및 관리된 비밀키들의 서브세트들을 변경하여 다수의 서명으로 패치에 서명한다. 해당 공개키들 또한 상기 키 생성 플랫폼들(110, 120, 130)에 의해 각각 생성되며 상기 패치 클라이언트(140)의 생산 과정중에 상기 패치 클라이언트(140)에 입력된다. 상기 공개키들은 상기 패치 클라이언트들(140), 즉, 공개키 매트릭스(150) 내에 저장될 것이다.
패치들은 상기 패치 클라이언트들(140)로 전송되기 전에, 램덤 세션키를 이용하여 대칭적으로 암호화된다. 이에 따라 상기 랜덤 세션키는 모든 패치 클라이언트들(140)에 대해 공통으로 사용될 수 있으며 키 암호화키(Key Encryption Key, KEK)(160)라고도 불리우는 비밀 마스터키를 이용하여 암호화될 것이다. 이를 통해 종래 기술의 PKC 시스템들에 대하여 향상된 속도 및 간편함을 제공할 것이다. 또한, 암호화 알고리즘의 알려지지 않은 취약성으로부터 보다 더 보호받을 수 있게 된다. 평문의 더 작은 부분들을 동일한 키로 암호화하기 때문에 공격자가 이러한 취약성들을 쉽게 활용하지는 못할 것이다. 상기 KEK 키(160)는 상기 패치서버(100)에 의해 안전하게 저장될 것이다.
상기 패치 클라이언트(140)에서, 상기 KEK 키(160)는 보안 증진을 위하여 숨은 형태로 저장될 것이다. 이를 위하여, 하드웨어 및 소프트웨어 값들을 조합하는데, 예를 들면, 128 비트의 키가 여러 개의 128 비트 부분들로부터 XOR(Exclusive OR) 게이트를 통해 만들어질 것이다(비밀 분할(secret splitting). 상기 데이터는 프로그램상으로 퍼져서 발견하기 어려워진다. 또한, 프로그램내의 매우 다른 여러 곳에서 매크로들(macros)에 의해 수행된 무분별 계산(crazy computation)을 통하여 동적으로 할당된 기능 포인터들(function pointers)의 사용은, 역설계(reverse engineering)에 대한 대응책(countermeasure)을 제공할 수 있을 뿐만 아니라, 디버 거의 사용을 무력화시킬 것이다. 이러한 비밀 분할(secret splitting)은, 실질적으로는 그 누구도 상기 키를 알지 못하며 런타임 중의 프로그램만이 상기 키를 일시적으로 생성할 수 있는 방식으로, 암호화(encryption) 동안에 사용될 것이다.
상기 공개키 매트릭스(150)와 상기 키 암호화키(160)는 각각의 패치 클라이언트(140)가 사용자에게 판매되기 전에 판매자에 의해 상기 패치 클라이언트(140)내에 플러그될 것이다. 해당 비밀키들은 안전한 곳에 판매자에게 남아있을 것이다. 본 실시예에서와 같이, 공개키들은 고정되어 있으며, 개인키들의 변경은 불가능하며 단지 폐기만이 가능하다. 따라서, 상기 개인키들은 상기 패치서버(100)내에 숨겨지게 된다.
각 패치 클라이언트(140)는, 가장 마지막으로 수신된 패치의 일련번호를 저장하는 리셋불가 카운터를 포함할 것인바, 이는 리플레이 공격(replay attack)을 피하기 위함이다. 이를 통해 보안상의 결점들이 잘 알려진 낡은 패치들의 적용을 방지할 수 있다. 이를 위하여, 예를 들면, 상기 패치 클라이언트들(140)은 무선 수신 시간(radio-received time)에 대하여 상기 패치와 함께 수신된 타임 스탬프를 체크한다.
각 패치는 많은 패치 기록들을 포함한다. 오버플로우를 이용한 공격을 피하기 위하여, 패치 기록의 개수 및 크기가 소프트웨어에 의해 제한될 것이다. 상기 패치 기록들은 패칭이 수행되고 있는 중에는 활성화되지 않을 것이다. 따라서, 단일 패치 기록들의 검사합(checksum)을 구하는 것은 불필요하다.
본 실시예에 따라, 12쌍의 키들이 패치에 사인하기 위하여 이용된다. 하기에 보다 상세히 기술되는 바와 같이, 각 패치는 3개의 서명을 포함하고, 각 서명은 4 개의 키 중 하나의 키를 근거로 한다. 하기의 원리는 도 2 및 3에 도시되어 있다.
도 2는 패치서버(100)에 의해 생성 관리되는 개인키들(200-255)의 세트를 도시하고 있다. 제 1 개인키 그룹(260)은 4개의 개인키들(200-215)을 포함한다. 마찬가지로, 제 2 개인키 그룹(270)은 다른 4 개의 개인키들(220-235)을 포함하고, 제 3 개인키 그룹(280)은 또 다른 4 개의 개인키들(240-255)을 포함한다. 상기 제 1, 2 및 3 개인키 그룹들(260, 270, 280)은 상기 제 1, 2 및 3 키 생성 플랫폼들(110, 120, 130)에 의해 각각 생성 및 관리될 것이다. 일 실시예에 따르면, 상기 3 개의 개인키 그룹들(260, 270, 280)은 서로 다른 신용등급(trust level)을 갖는다.
상기 키 생성 플랫폼들(110, 120, 130)에서는 개인키들(200-255)의 불법 추출을 방지하기 위하여 HSM들을 사용한다. 또는, 예를 들어, HSM 및 Knoppix/OpenSSL을 근거로 하는 "혼합키들(mixed keys)"을 사용하여 완벽한 신용 뿐만 아니라 안전한 저장의 이점을 제공할 것이다. 게다가, 이는 다른 HSM 장치 없이도 키 생성 및 키 회복의 제어가 가능하도록 한다. 상기 비밀키들(200-255)로의 접근권한은 비협력 그룹들(non-cooperating groups) 사이에 분산될 것이다. 또한, 비밀 공유의 원리들(HSM들의 경우 "5 개의 오퍼레이터 카드 중 3개")이 이용될 수도 있다.
해당 공개키들은 상기 패치 클라이언트(140)내에, 도 3에 보다 상세히 도시되어 있는 매트릭스(150)내에 저장될 것이다.
제 1 공개키 그룹(360)은 상기 제 1 개인키 그룹(260)의 개인키들(200-215) 에 각각 대응하는 4 개의 공개키들(300-315)을 포함한다. 상기 제 1 공개키 그룹(360)은 상기 제 1 키 생성 플랫폼(110)에서 생성되어 제작 중에 패치 클라이언트(140)에 입력된다. 상기 제 2 키 생성 플랫폼(120)에 의해 생성되어 판매자에 의해 패치 클라이언트(140)에 입력된 제 2 공개키 그룹(370)은, 상기 제 2 개인키 그룹(270)의 개인키들에 각각 대응하는 4 개의 공개키들(320-335)을 포함한다. 마지막으로, 제 3 공개키 그룹(380)은 상기 제 3 개인키 그룹(280)의 4 개의 개인키들(240-255)에 대응하는 4 개의 공개키들(340-355)을 포함한다. 상기 제 3 공개키 그룹(380)은 상기 제 3 키 생성 플랫폼(380)에 의해 생성되어 판매전에 상기 패치 클라이언트(140)에 저장된다.
상기 개인키들(200-255)은 표준화된 포맷으로 생성될 것이다. 이를 통해 키 백업 및 재해 복구가 가능해진다. 또한, 상기 키 생성은 어떤 보안 제공자에게도 의존적이지 않다. RSA 암호화를 적용하는 실시예들에서, 상기 공개키들(300-355)은, 모듈러스(즉, 비밀 프라임의 부산물 p*q(the product p*q of secret primes)) 및 공개 지수(public exponent)를 통해 C 헤더(header)들로써 직접 핸들링될 것이다. 상기 서명들은 HSM 장치들과 연동하는 OpenSSL 뿐만 아니라 RSA의 CryptoCME 및 BSAFE 라이브러리에서 지원하는 PKCS#1(Public Key Cryptography Standard #1)의 포맷으로 생성될 것이다.
일 실시예에서, 상기 공개키들(300-355)은 길이가 1024 비트이다. 그러나, 다른 실시예들에서는 다른 키 길이가 이용될 수 있다. 예를 들어, 512 비트의 RSA 혹은 DSA(Digital Signature Algorithm) 키들은 서명 검사의 저장 및 계산 시간을 줄이기 위하여 이용될 수 있다. 상기 KEK 키(160)과는 반대로, 상기 공개키들(300-355)은 상기 패치 클라이언트들(140) 내에 숨겨지진 않을 것이다. 본 실시예에 따르면, 상기 KEK 키(160)는 모든 패치 클라이언트(140)에 대한 마스터키이며 128 비트의 비트 길이를 갖는다. 예를 들면, 상기 KEK 키(160)는 128 비트의 AES 키일 수 있다. 또는, 128 비트의 투피쉬 키 혹은 256 비트의 AES 키 혹은 그 밖의 적합한 키 역시 상기 KEK 키(160)로 이용될 수 있을 것이다.
패치에 서명하기 위하여 12쌍의 키들을 사용하는 것은 특정 예시일 뿐임을 인지해야 할 것이다. 다른 측면에서, 더 적거나 많은 키 그룹들이 채택될 수도 있으며(이에 따라 패치 서버(100)는 더 적거나 많은 키 생성 플랫폼들을 각각 포함하게 된다), 각 공개/개인 키 그룹은 4 보다 적거나 많은 공개/개인 키들을 포함할 수도 있다. 또한, 매트릭스 형태의 키 배열은 설명을 위한 목적으로 선택된 것이다. 이 밖의 다양한 형태들을 이용하여 상기 공개 및 개인키들을 저장할 수 있다. 특히, 상기 3 개의 개인키 그룹들(260, 270, 280)은 상기 3 개의 키 생성 플랫폼들(110, 120, 130)을 이용하여 개별적으로 저장될 수 있다. 보안상의 이유로, 각 개인키 그룹(260, 270, 280)의 개별적인 개인키들(200-255)은 각각 따로따로 저장될 수도 있다.
도 4 내지 8, 11, 12 및 14를 참조하여, 제 1 실시예에 따른 상기 패치 서버(100)의 동작을 설명할 것이다. 이 실시예에서, 상기 패치 클라이언트들(140)은 전체 패치를 판독한 후에 상기 패치와 함께 패치서버(100)로부터 제공된 서명들을 검증할 수 있을 것이다.
도 4는 상기 실시예에 따른 패치서버(100)의 전체적인 동작을 도시하고 있다. 단계 400에서 해시 체인이 수행된다. 상기 해시 체인 단계(400)는 도 5에 도시된 바와 같이 5 단계로 이루어진다.
먼저, 단계 510에서 상기 패치를 해싱하여 기본 해시합(H)을 산출한다. 이어서, 단계 520에서 상기 기본 해시합(H)과 값이 0인 바이트의 접합(concatenation)(H│'0')을 해싱하여 제 1 해시합(H1)을 산출한다("│"는 접합을 의미하고, '0'은 값이 0인 바이트를 의미한다). 단계 530에서는, 단계 520에서 산출된 제 1 해시합(H1)과 값이 1인 바이트'1'의 접합(H│'1')을 해싱하여 제 2 해시합(H2)을 산출한다. 마지막으로, 단계 530에서 구한 제 2 해시합(H2)과 값이 2인 바이트'2'의 접합(H2│'2')을 해싱하여 제 3 해시합(H3)을 산출한다(단계 540).
본 실시예에 따르면 각 패치에는 상기 3 개의 해시합들(H1, H2, H3)을 바탕으로 단계 420(아래 참조)에서 산출될 3 개의 서명들이 포함된다는 것을 주목해야 할 것이다. 다른 실시예들에서는, 상기 패치들이 그보다 더 적거나 많은 서명들을 포함할 수 있다. 그러므로, 이러한 실시예들에서, 상기 해시 체인(400)은 더 짧거나 더 길어질 수 있다.
도 4를 참조하면, 단계 410에서 개인키들을 선택하여 단계 420에서 상기 서명들을 생성한다. 본 실시예에 따른 상기 개인키 선택 단계들(단계 410) 각각에 대해서는 도 6에 도시되어 있다.
단계 610에서 상기 제 1 개인키 그룹(260)에서 제 1 개인키를 선택한다. 단계 620에서 상기 제 2 개인키 그룹(270)에서 제 2 개인키를 선택한다. 마찬가지로, 단계 630에서 상기 제 3 개인키 그룹(280)에서 제 3 개인키를 선택한다.
상기 도시된 단계들의 순서는 설명을 목적으로 선택된 것임을 이해해야 할 것이다. 물론, 상기 개인키들은 다른 순서에 따라 선택되어질 수도 있다. 다른 측면에서는, 일부 혹은 모든 개인키들이 단계 400에서 상기 해시 체인을 수행하기 전에 선택될 수도 있다. 또한, 서로 다른 개수의 개인키 그룹들(260-280)이 이용되는 실시예들에서는, 상기 개인키 선택단계(410)가 도 6에 도시된 3 단계(600-630)보다 더 적거나 많은 선택 단계들로 이루어질 수도 있다.
상기 개인키 선택(410)에 이어, 차후에 패치에 추가되어 신빙성 및 확실성을 검사할 수 있도록 패치 클라이언트(140)로 전송될 3개의 디지털 서명들 D1 내지 D3가 단계 420에서 생성된다. 이러한 서명 생성 단계(420)는 도 7에 상세히 도시되어 있다.
단계 710에서, 단계 610에서 선택된 제 1 개인키를 이용하여 단계 520에서 산출된 제 1 해시합(H1)에 서명하여 제 1 디지털 서명(D1)을 산출한다. 단계 720에서, 단계 620에서 상기 제 2 개인키 그룹(270)으로부터 선택된 제 2 개인키를 이용하여 단계 530에서 구한 제 2 해시합(H2)에 서명하여 제 2 디지털 서명(D2)을 산출한다. 마지막으로, 단계 730에서, 단계 630에서 선택된 제 3 개인키를 이용하여 단 계 540에서 산출된 제 3 해시합(H3)에 서명하여 제 3 디지털 서명(D3)을 산출한다. 따라서, 이러한 실시예는 각각의 유형의 각각의 키에 근거한 3중 서명을 적용한다.
각각의 해시합들(H1, H2, H3)에 서명하는 동작들은, 각각의 선택된 개인키들을 이용하는 암호화(혹은 적용된 서명 알고리즘에 따라, 복호화)가 뒤이어 수행되는 또 다른 해시 동작을 포함할 수도 있다. 또한, 상기 디지털 서명들(D1, D2, D3)은, 선택된 해당 개인키를 이용하여 상기 각각의 해시합(H1~H3)를 단순히 암호화 혹은 복호화하여 산출될 수 있다. 상기 키 생성 플랫폼들(110, 120, 130)이 어떤 식으로 구현되는지에 따라, 다른 알고리즘들을 이용하여 상기 디지털 서명들(D1, D2, D3)를 생성할 수 있다.
또한, 도 7에 도시된 특정 단계들의 순서는 단지 예시적인 특징만을 갖는 것이다. 다른 실시예들에서, 상기 디지털 서명들(D1, D2, D3)은 다른 순서에 따라 생성될 수도 있고 혹은 상기 서명 생성 단계들(420)에는 상기 해시 체인 수행단계(400) 및/또는 개인키 선택단계(410)이 포함될 수 있다. 예를 들어, 제 1 디지털 서명(D1)을 산출하는 단계 710은 상기 제 1 해시합(H1)이 산출되고(단계 520) 상기 제 1 개인키가 선택되자마자(단계 610) 수행될 수 있다. 상기 제 2 디지털 서명(D2)의 산출 단계(720)도 비슷한 방식으로 앞당겨질 수 있다. 또한, 더 많거나 적은 디지털 서명들이 상기 패치에 추가되는 실시예들에서는, 상기 서명 생성 단계(420)에 는 더 많거나 적은 산출 단계들이 포함될 수 있다.
상기 서명들이 단계 420에서 생성된 후에, 단계 430에서 상기 서명들 중 하나가 더미 서명일 수 있는지 여부를 판단한다. 더미 서명들의 사용은 손상되었거나 분실된 키들을 안전하게 스킵할 수 있도록 한다. 예를 들어, 단계 610 내지 630 중 하나에서 손상된 것으로 알려진 개인키가 선택되었다면, 단계 430에서는 해당 디지털 서명이 더미 서명일 것으로 판단한다. 이러한 목적을 위하여, 상기 패치서버(100)는 상기 개인키들(200-255) 중에서 도난당했거나 분실된 개인키들, 즉, 더 이상 사용할 수 없는 키들을 적당한 형태로 저장한다. 예를 들어, 이것은 해당 룩업 테이블을 유지함으로써 수행될 수 있다. 따라서, 본 실시예에 따르면 분실 혹은 도난당한 키들을 안전하게 스킵할 수 있다. 이들은 폐기 및 대체할 필요는 없을 것이다.
더미 서명이 사용될 경우, 단계 420에서 생성된 각각의 디지털 서명들은 단계 440에서 더미로 대체될 것이다. 다른 측면에서는, 서명이 더미 서명일지 여부를 결정하는 단계(430)가 상기 서명 생성 단계보다 앞당겨져 수행될 수 있으며, 서명이 더미 서명일 경우, 해당 서명 생성 단계들(710, 720, 730)은 각각의 서명에 대해서 더미를 직접 이용하여 스킵될 수 있다.
단계 450에서, 키 지시자가 생성된다. 상기 키 지시자는 단계 410에서 상기 3 개의 개인키 그룹들(260, 270, 280)로부터 키들이 선택되었음을 나타낸다. 상기 키 지시자의 구성에 대한 일 예는 도 12에 도시되어 있다.
본 실시예에 따르면, 상기 키 지시자는 8 비트의 정수값을 갖는다. 맨 앞 2 비트는 상기 제 1 개인키 그룹(260)의 4개의 개인키들(200-215) 중 어떤 것이 선택되어 상기 제 1 디지털 사인(D1)이 생성되었는지를 나타내는 제 1 키 지시자(1210)을 나타낸다. 예를 들면, 이러한 처음 2 비트의 값이 3일 경우, 이는 단계 610에서 제 3 개인키(210)가 선택되어 단계 710에 적용되었음을 나타낸다. 다음의 2 비트는 상기 제 2 개인키 그룹(270)의 4 개의 개인키들(220-235) 중 어떤 것이 선택되어(단계 620) 상기 제 2 디지털 서명을 생성하였는지(단계 720)를 나타내는 제 2 키 지시자(1220)를 형성한다. 마찬가지로, 제 5, 6번째 비트들은 단계 630에서 4 개의 개인키들(240-255) 중 어떤 것이 선택되어 단계 730에서 제 3 디지털 서명을 생성하였는지를 나타내는 제 3 키 지시자(1230)에 이용된다.
이에 따라, 더 많거나 적은 개인키 그룹들을 이용하는 실시예들에서, 상기 키 지시자는 더 많거나 적은 개별적인 키 지시자들(1210-1230)을 포함할 것이다. 또한, 상기 개인키 그룹들(260, 270, 280) 각각이 4 개 보다 더 많거나 적은 개인키들을 포함하는 실시예들도 있을 수 있다. 따라서, 상기 제 1 내지 3 키 지시자들(1210-1230)은 각각 더 길거나 더 짧아질 수 있다. 또한, 상기 개별적인 키 지시자들(1210-1230)은 다르게 배열될 수도 있다.
상기 키 지시자는 더미 서명이 사용되었는지 및 사용되었을 경우 상기 서명들 중 어떤 것이 더미 서명인지를 나타낼 것이다. 이를 위하여, 도 12에 도시된 상기 키 지시자의 마지막 2 비트는 더미 지시자(1240)를 나타낸다. 본 실시예에 따르면, 상기 더미 지시자(1240)는 상기 2 비트의 값이 0인 경우 3 개의 서명(D1~D3) 모두가 유효한 서명임을 나타낸다. 1,2 혹은 3의 값으로 각각의 제 1 , 2 혹은 3 서명이 더미 서명임을 나타낼 수 있다. 다른 방식으로는, 더미 지시자의 값들은 이와는 다르게 지정될 수 있다.
다른 실시예들에서, 3개보다 더 많거나 적은 서명들이 패치에 서명하기 위하여 이용될 수 있다. 따라서, 상기 더미 지시자(1240)는 2비트보다 길거나 짧을 것이다. 또한, 하나 이상의 서명이 더미 서명일 수 있는데, 이러한 실시예들에서, 상기 더미 지시자(1240)는 2 비트보다 길 것이다.
상기 키 지시자가 생성되면, 단계 460에서 패치블록이 어셈블링된다. 본 실시예에 따르면, 상기 패치블록은 도 11에 도시된 포맷을 갖는다.
도 11에 도시된 바와 같이, 상기 패치블록(1100)은 단계 710에서 생성된 제 1 디지털 서명(1110)으로 시작하고 그 뒤로 단계 720 및 단계 730에서 생성된 제 2 디지털 서명(1120) 및 제 3 디지털 서명(1130)이 각각 배열된다. 상기 패치블록(1100)은 상기 서명들(1110-1130) 다음으로 단계 450에서 만들어진 키 지시자(1140)를 포함한다. 마지막으로, 상기 패치(1150) 자체가 상기 패치블록(1100)에 포함된다. 상기 도 11에 도시된 패치블록(1100)의 특정 구성은 본 발명을 한정하는 것으로 해석되어져서는 안된다. 다른 실시예에서는, 상기 패치블록(1100)이 다른 방식으로 배열될 것이다.
패치블록 어셈블링 단계(460) 이후에, KEK 암호화가 단계 470에서 수행된다. 본 실시예에 따른 상기 KEK 암호화 단계(470)는 도 8에 보다 상세히 도시되어 있다.
단계 810에서, 하기에서 대칭키 라고도 불리는 랜덤 세션키가 생성된다. 상 기 세션키 생성은, 패스 프레이즈들(pass phrases)의 분산된 부분들에 의해서 보안유지될 수도 있는바, 예를 들면 nCipher HSM 장치의 오퍼레이터 카드 상의 공유된 비밀들에 의한 것처럼 보안유지될 것이다. 다른 실시예들에서, 상기 대칭키는 상기 패치 전송 처리중에 생성되는 것이 아니라 이미 생성되어 상기 패치서버(100)에 저장되어 있을 것이다. 이러한 실시예들에서,상기 대칭키는 하드웨어에 숨겨져 있을 것이다. 이는 다양한 방식으로 달성될 수 있다. 예를 들면, 일반적으로 많은 사람들이 코드를 보게 되므로, 분산 소스들(distributed sources)로부터의 키 생성이 이러한 목적을 충족시킬 것이다. 이에 따라, 어떤 사람도 상기 키가 어떻게 생성되었는지에 대한 세부사항을 알지 못하게 된다. 그러나, 필요할 경우, 모든 정보는 재생성될 수 있다. 다른 방식에서는, 상기 대칭키가 일정 HSM 내부에 숨겨질 것이다. 또한, 이러한 실시예들의 패치서버(100)는, 상기 대칭키를 분실했을 경우 이를 재생성하기 위한 몇몇 하드한 방법(hard method)을 포함할 것이다.
단계 820에서, 상기 랜덤 세션키는 단계 460에서 어셈블링된 패치블록(1100)을 암호화하기 위해 이용된다. 이것은 AES 암호화를 이용하여 달성될 수 있다. 마지막으로, 단계 830에서 상기 랜덤 세션키는 KEK 키(160)를 이용하여 암호화된다. 다른 실시예들에서는, 단계 820 및 830이 반대의 순서로 수행될 수 있다.
KEK 암호화 과정(470) 중에, (몇 가지 이유로 평문(plaintext)이어야 하는 헤더 부분들을 제외한) 모든 정보는 출력 피드백 모드(output feedback mode, OFB)에서 암호화될 것이다. 이를 통해 상기 패치가 상기 패치 클라이언트(140)에서 나중에 스트림으로 복호화될 수 있게 된다. 패딩은 수행할 필요가 없을 것이며, 기록 당 복호화(recordwise decryption)는 아무 문제 없이 가능할 것이다. 다른 실시예들에서는 암호 피드백 모드(cipher feedback mode, CFB)가 스트림 암호화를 위하여 이용될 것이다. 상기 CFB 모드는 종속적인 평문이며, 적어도 하나의 블록에 에러가 확산된다. 그러나, 상기 OFB 모드를 이용할 경우, 어떤 공격자에 의해 플립되거나 또는 추가된 단 하나의 비트라도, 파괴된 블록과 같은 치명적인 영향을 미치게 되며, 패치 클라이언트(140)에서의 디지털 서명 검증이 두 경우에서 모두 실패하게 될 것이다. 그래서, OFB 모드를 이용할 경우 보안이 증진된다.
또한, 상기 KEK 암호화 단계(470)이 수행되기 전에 상기 디지털 서명들(D1~D3)을 상기 패치블록(1100)에 포함시켰으므로(단계 460), 상기 디지털 서명들이 본 실시예에 따른 암호화에 의해 보호받게 된다. 이로써 공격자가 보안상의 결점을 발견하게 되는 위험을 감소시킨다.
상기 대칭 KEK 암호화 과정(470)에 대한 보안을 좀더 강화하기 위하여, 상기 OFB 모드에서 사용되는 초기화 벡터는 유니크하게 선택될 수 있는바, 즉, 초기화 벡터가 모든 패치들에서 반복될 수 없도록 유니크하게 선택될 수 있다. 예를 들어, 이것은 상기 초기화 벡터의 고정된 부분에 일련번호를 추가함으로써 달성될 수 있거나, 이러한 목적을 위하여 타임 스탬프를 사용할 수도 있다.
도 4를 참조하면, 단계 480에서 전송블록이 어셈블링된다. 본 실시예에서 상기 전송블록의 구성은 도 14에 도시되어 있다.
특히, 상기 전송블록(1400)은 단계 830 및 820을 통해 얻어진 상기 암호화된 세션키(1410)와 그 뒤를 이은 상기 암호화된 패치(1420)로 구성된다. 본 실시예에 따르면, 상기 암호화된 세션키의 길이는 128 비트이다. 그 밖의 길이의 세션키들도 다른 실시예들에서 이용될 수 있다.
마지막으로, 단계 490에서, 상기 전송블록은 상기 패치 클라이언트(140)로 전송된다.
앞에서 언급하였듯이, 서명하는 도중의(during singing) 하드웨어 실패는 개인키를 노출시킬 수 있다. 이러한 위험을 피하기 위하여, 단계 420에서 생성된 서명들은 상기 패치 클라이언트(140)로 전송되기 전에 검사될 것이다(단계 490). 여기서, 각 서명(D1~D3)은 다른 프로그램에 의해 검사될 것이다. 예를 들면, (아직 판매되지 않은) 패치 클라이언트가 검사될 서명을 포함한 실제 패치로 부팅하는지를 판매자가 검증할 수 있다.
상기 기술한 실시예에 따르면, 패치 클라이언트(140) 내의 상기 디지털 서명들(D1~D3)은 전체 패치(1150)의 판독 후에만 검증될 수도 있다. 그러나, 다른 실시예들에서, 패치를 복호화한 후 바로 상기 패치의 모든 기록에 대한 신빙성 및 확실성을 검사하는 것이 바람직할 것이다. 이는 이하 도 9, 10 및 13을 참조하여 기술될 제 2 실시예에서 가능해질 것이다.
이 실시예에서, 패치서버(100)의 전체 동작은 도 4에 도시된 것과 대응하며, 개인키 선택단계(410), 더미 관리단계(430, 440), 키 지시자 생성단계(450), KEK 암호화 단계(470) 및 전송블록 어셈블링 및 전송 단계(480, 490)는 상기 언급된 바와 동일할 것이다. 그러나, 수정된 해시 체인 수행단계(400) 및 서명 생성단 계(420)가 채택될 것이다. 또한, 패치블록 어셈블링 단계(460)는 상기 기술된 것과는 다른 구성을 갖는 패치블록을 야기할 수도 있다.
먼저 상기 패치블록을 설명하면, 본 실시예에 따른 그 구성은 도 13에 도시되어 있다.
상기 제 1 실시예의 패치블록(1100)과 마찬가지로, 상기 패치블록(1300)은 3 개의 디지털 서명들(D1~D3)(1310, 1320, 1330)로 시작되고 그 뒤로 키 지시자(1340)가 배열된다. 상기 키 지시자(1340)는 도 11 및 12를 참조하여 앞서 설명한 키 지시자(1140)에 해당한다. 그러나, 상기 디지털 서명들(1310, 1320, 1330)은, 도 10을 참조로 하기에 설명되는 바와 같이, 상기 제 1 실시예의 디지털 서명들과는 다른 방식으로 산출될 것이다. 또한, 패치의 각 기록(R1~Rn)(1355, 1365, 1375, 1385)은 암호 해시합(H1~Hn)(1350,1360, 1370, 1380)보다 선행(preceding)한다.
본 실시예에 따른 상기 해시합들(1350,1360, 1370, 1380)의 산출은 도 4의 단계 400에서 수행되며 도 9에 보다 상세히 도시되어 있다.
먼저, 단계 910에서는, 전송될 패치의 n번째 기록 Rn(1385)과 0 비트로 구성된 해시합 값 "0"의 접합(Rn0)을 해싱하여 해시합(Hn)(1380)을 산출한다. 다른 실시예에서는, 기록(Rn)만이 단계 910에서 해싱될 것이다. 이후, 단계 920에서, n-1번째 기록(Rn-1)(1375)과 이전 산출된 해시합(Hn)(1380)의 접합(Rn-1│Hn)을 해싱하여 해시합(Hn-1)(1370)를 산출한다. 다음으로, 단계 930 및 940에서, 아날로그 방식으 로 해시합들(Hn-2 ~ H1)을 산출한다. 다른 실시예들에서는, 상기 마지막 단계 940은 스킵될 수 있으며, 상기 제 1 기록(R1)은 이후의 단계들에서 단계 940에서 구한 해시합(H1)을 대신하여 이용될 수 있다. 그러나, 도 9에 도시된 이러한 실시예는 더 단순하고 확고한 프로그래밍을 가능하게 할 수 있다.
본 실시예에 따른 수정된 서명 생성단계(420)는 도 10에 도시되어 있다.
단계 1010에서는, 도 6의 단계 610에서 선택된 제 1 개인키를 이용하여 상기 제 1 해시합(H1)(1350)에 서명하여(즉, 도 7을 참조하여 기술된 바와 같이, 해싱 및 복호화/암호화를 수행하여 혹은 단순히 복호화/암호화만을 수행하여) 제 1 디지털 서명(D1)(1310)을 산출한다. 이에 따라, 단계 1020에서는, 단계 620에서 선택된 제 2 개인키를 이용하여 상기 제 1 해시합(H1)(1350)에 서명하여 제 2 디지털 서명(D2)(1320)을 산출한다. 마지막으로, 단계 1030에서는, 단계 630으로부터 얻은 제 3 개인키를 이용하여 상기 제 1 해시합(H1)(1350)에 서명하여 제 3 디지털 서명(D3)을 생성한다.
상기 기술한 단계들의 순서가 본 발명을 한정하도록 해석되어서는 안된다. 예를 들면, 상기 디지털 서명들(D1~D3)은 다른 순서에 따라 산출될 수도 있다. 또한, 상기 산출 단계들(1010~1030)에는 도 6에 도시된 개인키 선택단계들 및/또는 도 9에 도시된 해시 체인 단계가 넣어질(interleaved) 수 있다. 예를 들면, 상기 디지털 서명들(D1~D3)은 상기 제 1 해시합(H1)을 산출한 후 해당 개인키들을 선택하자마자 산출될 수 있다.
상기 패치서버(100)가 상기 패치 클라이언트(140)로 암호화된 패치를 포함한 전송블록(1400)을 전송하면, 상기 패치는 상기 공개키 매트릭스(150) 및 KEK 키(160)를 이용하여 상기 패치 클라이언트(140)에 안전하게 설치될 것이다. 이하, 본 실시예에 따른 상기 패치 클라이언트(140)에 의해 수행되는 보안 패치 설치 과정은 도 15 내지 17을 참조하여 설명될 것이다. 이러한 패치 설치 과정은 상기 디지털 서명들(D1~D3)(1110, 1120, 1130)이 전체 패치의 복호화 후에만 검증되는 실시예에서 적용될 것이다.
먼저, 도 15를 참조하면, 상기 전송블록(1400)은 단계 1500에서 상기 패치 클라이언트(140)에서 수신된다. 상기 암호화된 랜덤 세션키(1410)는 단계 1510에서 KEK 키(160)를 이용하여 복호화된다. 단계 1520에서, 상기 암호화된 패치블록(1420)은 단계 1510 전에 구한 랜덤 세션키를 이용하여 AES 알고리즘하에서 복호화된다. 상기 단계 1510 및 1520에서의 복호화는 도 8에 대하여 상기 기술한 OFB 모드를 이용하여 달성될 수 있다.
단계 1530에서는, 서명들을 검증하는데 이용될 공개키들이 선택된다. 이는 도 16에 보다 상세히 도시되어 있다.
먼저, 단계 1610에서, 단계 1520 전에 복호화된 제 1 키 지시자(1210)를 이용하여 상기 제 1 공개키 그룹(360)에서 제 1 공개키를 선택한다. 특히, 상기 공개 키들(300-315) 중에서 상기 제 1 키 지시자(1210)가 나타내는 키가 상기 제 1 공개키로 선택될 것이다. 상기 선택된 제 1 공개키는 단계 610에서 상기 패치서버(100)에 의해 선택된 제 1 개인키에 대응할 수 있다(도 6 참조). 따라서, 단계 1620 및 1630은, 상기 제 2 및 3 키 지시자들(1220, 1230)을 각각 이용하여 상기 제 2 및 3 공개키 그룹들(370, 380)로부터 제 2 및 3 공개키를 각각 선택하는 단계를 포함한다. 상기 제 2 및 3 공개키들은 단계 620 및 630에서 패치서버(100)에 의해 각각 선택된 제 2 및 3 개인키들에 대응한다.
물론, 상기 공개키 선택 단계들(1610~1630)은 다른 순서로도 수행될 수 있다. 또한, 3 개의 공개키 그룹들(360-380) 보다 많거나 적은 그룹들 (및 이에 따라 3 개보다 더 많거나 적은 개인키 그룹들(260-280)이 이용되는 실시예들에서는, 상기 공개키 선택단계(1530)에 더 많거나 적은 선택단계들이 포함될 수 있다.
상기 공개키들을 선택한 후, 단계 1540에서 상기 서명들(1110-1130)이 검증된다. 본 실시예에 따른 서명 검증의 부 단계들(substeps)은 도 17에 도시되어 있다.
먼저, 단계 1700에서 해시체인이 수행된다. 본 실시예에 따르면, 패치 클라이언트(140)에 의해 수행되는 상기 해시 체인(1700)은 도 5를 참조하여 상기에 기술된 패치서버(100)에 의해 수행되는 해시체인에 해당한다.
이후, 단계 1710에서, 단계 520, 530, 540에서 구한 해시합들(H1, H2, H3) 각각을 다시 해싱한다. 단계 710-730 에서와 같이 패치서버(100)에 의해 서명이 수행 되는 실시예들에서는, 추가 해싱을 포함하지 않고 단지 복호화/암호화만을 포함할 것인바, 이 경우에는 상기 단계 1710 가 스킵될 수 있다.
단계 1710에 이어, 단계 1520에서 상기 암호화된 패치블록(1420)을 복호화할 때 얻어지는 상기 디지털 서명들(D1~D3)(1110, 1120, 1130)은 상기 제 1, 2 및 3 공개키들을 이용하여 각각 복호화된다.
이후, 단계 1750-1770에서, 단계 1720-1740으로부터 구한 상기 복호화된 디지털 서명들이 단계 1710에서 구한 재해싱된 해시합들(H1~H3)와 각각 비교된다. 단계 1710이 스킵되는 실시예들에서는, 상기 복호화된 디지털 서명들 각각은 상기 해싱된 합들(H1~H3)과 직접 비교된다.
단계 1780에서, 상기 디지털 서명들(D1~D3)(1110, 1120, 1130) 중에 더미 서명들이 있는지를 판단한다. 이 단계는 상기 키 지시자(1140)의 더미 지시자(1240)를 검사하는 것으로 달성될 수 있다.
더미 서명들이 있는 경우, 단계 1790에서는, 상기 더미 지시자(1240)에 의해 더미 서명으로 식별된 디지털 서명을 보안 패치 설치 과정의 잔여 시간 중에 무시하기로 결정한다. 다른 실시예들에서는, 논의된 바와 같이 하나 이상의 서명들이 더미 서명일 수 있다. 이러한 실시예들에서는, 모든 더미 서명들은 이후 패치 설치 과정 중에 무시될 것이다.
단계 1780에서 상기 더미 지시자(1240)가 모든 디지털 서명들(1110-1130)이 유효한 서명들, 즉, 더미 서명들이 없는 것을 나타내는 것으로 드러나면, 단계 1790은 수행되지 않을 것이며, 이어지는 보안 패치 설치 단계 수행 동안 모든 디지털 서명들(1110, 1120, 1130)을 고려할 것이다.
상기 서명들이 단계 1540에서 검증되면, 단계 1550에서는, 모든 디지털 서명들(1110, 1120, 1130)이 순서대로 있는지를 판단한다. 본 실시예에 따르면, 이것은 상기 비교단계들(1750~1770)에서 신원(identity)이 확인되는 경우이다. 그럴경우, 상기 패치는 단계 1560에서 상기 패치 클라이언트(140)에 설치될 것이다. 단계 1560은 상기 패치 클라이언트(140)의 사용자에게 성공적인 패치 설치에 대한 보고를 제공하는 단계 및/또는 이에 대하여 상기 패치서버(100)에 알리는 단계를 포함할 것이다.
그러나, 상기 단계들(1750-1770) 중 적어도 하나에서 복호화된 디지털 서명이 해당 (해싱된) 해시합과 일치하지 않는 것으로 드러나는 경우, 단계 1570에서는, 상기 수신된 패치를 상기 패치 클라이언트(140)에 설치하지 않는 것으로 판단한다. 이 단계에서는, 예를 들어, 상기 사용자에게 에러 메시지를 제공하는 단계 및/또는 상기 패치 설치가 실패하였음을 상기 패치서버(100) 알리는 단계가 포함될 것이다.
도 15 내지 17에 도시된 소정 단계들의 순서는 예시를 목적으로 선택되었음을 이해해야 한다. 다른 실시예들에서는, 개별적인 부 단계들이 다른 순서에 따라 배열될 수 있다. 예를 들어, 상기 복호화 단계들(1720-1740)에 상기 비교 단계들(1750-1770)을 넣을 수도(interleaved) 있다. 또한, 상기 해싱단계(1710)는 3 개의 개별적인 하위단계들로 나뉠 수 있으며 이 또한 상기 비교 단계들내의 복호 화(1720-1770)에 추가될 수 있다. 또한, 상기 해시체인(1700)의 개별적인 단계들(510-540)은 상기 해싱 복호화 및 비교 단계들(1710-1770)에 걸쳐 퍼져있을 수도 있다.
게다가, 더 많거나 적은 개인 및 공개키 그룹들이 이용되는 실시예들에서는, 상기 서명 검증단계(1540)에 더 적거나 많은 해싱, 복호화 및 비교 단계들(1710~1770)이 포함될 수 있다.
또한, 단계 1780 및 1790에서의 더미 관리는 상기 제 1 복호화 단계(1720) 이전, 상기 서명 검증단계(1540)의 시작시, 혹은 상기 공개키 선택단계(530) 이전으로 앞당겨질 수 있다. 이러한 실시예들의 단계 1780에서 특정 서명(1110, 1120, 1130)이 더미 서명으로 판단되는 경우, 상기 공개키 선택단계(1530) 및 서명 검증단계(1700-1770)의 해당 단계들은 모두 스킵된다. 예를 들면, 상기 제 3 디지털 서명(D3)가 더미 서명일 경우, 단계 540에서의 상기 제 3 해시합(H3) 산출, 단계 1630에서의 제 3 공개키 선택, 단계 1710에서의 제 3 해시합(H3) 해싱, 단계 1740에서의 제 3 디지털 서명 복호화 및/또는 단계 1770의 비교 동작들이 수행될 필요가 없게 된다.
앞서 언급한 바와 같이, 본 실시예의 패치 설치 방법은 상기 서명들이 암호화된 패치블록(1420) 전체가 복호화된 후에만 검증될 수 있게 한다. 그러나, 상기 패치가 이 패치의 개별적인 기록들을 복호화한 후에 바로 설치될 수 있는지를 검증하는것이 바람직한 실시예들이 있을 수 있다. 그러한 실시예에서의 상기 패치서 버(100)의 동작은 도 9, 10 및 13을 참조하여 앞서 설명되었다. 이하, 상기 패치 클라이언트(140)에 의해 수행될 해당 보안 패치 설치는 도 18 내지 20을 통해 설명될 것이다.
도 18의 단계 1800에서, 상기 패치 클라이언트(140)에서 전송블록(1400)을 수신한다. 단계 1810에서는, 상기 전송블록(1400)에 포함된 암호화된 랜덤 세션키(1410)가 KEK 키(160)을 이용하여 복호화된다. 이 단계는 도 15의 단계 1510에 해당한다.
이어서, 단계 1820에서는, 단계 1810에서 구한 랜덤 세션키를 이용하여 암호화된 패치블록(1420)에 포함되어 있는 정보를 복호화한다. 상기 단계 1820에서 수행되는 복호화는 단계 1520에서 수행된 복호화와 동일한 방식으로 달성될 수 있다. 그러나, 본 실시예에 따르면, 단계 1820에서는 암호화된 서명들 및 암호화된 키 지시자만이 복호화될 것이다. 나머지 암호화된 패치블록(1420)에 대한 기록당 복호화(recordwise decryption)가 이후 단계 1840 및 1850에서 실행될 것이다.
단계 1830에서는, 단계 1820에서 검색된 키 지시자(1340)를 근거로 공개키들이 선택된다. 이 단계는 도 15를 참조하여 상기 기술된 공개키 선택단계(1530)에 대응된다. 이후, 단계 1840에서는, 단계 1820에서 구한 디지털 서명들(D1~D3)(1310, 1320, 1330)을 검증한다. 이는 도 19에 보다 상세히 도시되어 있다.
먼저, 단계 1900에서는, 전송블록(1400)을 통해 수신된 패치의 암호화된 제 1 해시합 및 암호화된 제 1 기록을 단계 1810에서 구한 랜덤 세션키를 이용하여 복 호화한다. 이는 도 15에 대하여 상기 기술한 단계 1520에서의 복호화와 동일한 방식으로 달성될 것이다. 이어서, 단계 1910에서는, 단계 1900에서 복구된 제 1 해시합(H1)(1350)을 해싱한다. 다른 실시예들에서는, 특히, 단계 1010~1030에서 패치서버(100)에 의해 수행되는 서명에 어떠한 해싱도 포함되어 있지 않은 실시예들에서는, 단계 1910이 스킵된다.
이어, 단계 1920 내지 1940에서는, 단계 1820로부터의 디지털 서명들(D1~D3)(1310-1330)을 단계 1830에서 선택된 제 1, 2 및 3 공개키들을 이용하여 각각 복호화한다. 단계 1950~1970에서는, 단계 1920~1940의 결과들을 단계 1910의 결과와 각각 비교한다. 단계 1910이 스킵되는 실시예들에서는, 대신에 단계 1920~1940으로부터 복호화된 서명들을 단계 1900에서 구한 해시합(H1)과 비교한다.
마지막으로, 단계 1980 및 1990에서는, 더미 시그널 관리가 수행된다. 이는 도 17의 단계 1780 및 1790에 대하여 상기 기술된 더미 서명 관리에 대응된다.
다시, 도 18 및 19에 도시된 단계들의 소정 순서는 단지 예시적인 것이므로 본 발명을 한정하는 것으로 해석되어서는 안된다. 다른 실시예들에서는, 상기 각각의 단계들이 다르게 순서가 정해질 수 있으며, 예를 들어, 서로 끼워넣어질 수도 있다. 또한, 단계 1980 및 1990에서의 더미 서명 관리는 예를 들면 상기 서명 검증단계(1840) 시작시나 상기 공개키 선택단계(1830)이전에 수행될 수 있다. 이러한 실시예들에서는, 상기 더미 지시자(1240)에 의해 더미 서명으로 식별된 디지털 서명과 관련된 상기 공개키 선택(1830) 및 서명 검증(1900-1970)의 모든 단계들이 스 킵될 것이다.
도 18을 참조하면, 암호화된 패치블록(1420)의 나머지에 대한 기록당 복호화가 단계 1850에서 실행된다. 본 실시예에 따른 기록당 패치 복호화(recordwise patch decryption) 방법은 도 20에 도시되어 있다.
먼저, 단계 2000에서는, 모든 서명들(D1~D3)이 순서대로 있는지를 검사한다. 단계 2000은 모든 비교 단계들(1950~1970)에서 신원이 드러나는지를 판단하는 단계를 포함한다. 상기 논의된 바와 같이, 최종 더미 서명들은 이러한 판단시 고려되지 않을 것이다.
이러한 경우가 아닐 경우, 즉, 상기 복호화된 디지털 서명들(D1~D3) 중 적어도 하나는 (해싱된) 해시합(H1)과 일치하지 않을 경우, 단계 2050에서는 본 패치가 설치될 수 없는 것으로 결정한다. 이것은 도 15의 단계 1570에 해당한다.
그러나, 모든 서명들이 순서대로 있는 경우, 상기 암호화된 패치블록(1420)에 포함된 암호화된 제 2 해시합 및 암호화된 제 2 패치 기록은 단계 1810에서 구한 랜덤 세션키를 이용하여 복호화된다. 단계 2005의 복호화는 상기 논의된 단계 1820의 복호화와 동일한 방식으로 수행된다. 이후, 단계 2010에서는, (이미 단계 1900에서 구한) 제 1 기록(R1)(1355)과 단계 2005에서 구한 제 2 해시합(H2)(1360)의 접합(R1│H2)이 단계 2010에서 해싱된다.
상기 결과는 (상기 복호화 단계 1900에서) 미리 획득된 해시합(H1)(1350)과 비교될 것이다. 단계 2020에서는, 이러한 두 해시합들이 일치하지 않는 것으로 판단되는 경우, 상기 패치 복호화 방식은 단계 2050으로 진행하여 상기 패치를 설치할 수 없는 것으로 판단한다. 그 밖의 경우, 단계 2005~2020은 암호화된 패치블록(1420) 내의 제 3 내지 마지막 해시합들 및 기록들에 대하여 각각 반복적으로 수행된다.
단계 2020에서의 비교에서 모든 복호화된 해시합들 및 기록들에 대하여 긍정적으로 응답해질 경우, 단계 2030에서는, 마지막 패치기록(Rn)(1385)과 0 비트들로 구성된 해시값 "0"의 접합(Rn0)이 산출된다. 이 값은 단계 2035에서 패치블록(1300)의 마지막 해시합(Hn)(1380)과 비교된다.
단계 2040에서 두 값이 일치하는 것으로 판단되면, 상기 패치는 단계 2045에서 설치되고 상기 성공적인 패치 설치에 대하여 사용자 및/또는 패치서버(100)에 통지한다. 그렇지 않으면, 단계 2040에서 상기 패치가 설치될 수 없는 것으로 판단할 것이다.
도 18 내지 20에 도시된 실시예에 따르면, 수신된 패치는 단계 2045에서 전부 설치되거나, 혹은 하나의 패치 기록이라도 손상된 경우 설치되지 않을 것이다. 이러한 실시예에서, 상기 패치에서 하나의 플립된 비트 혹은 삭제/삽입된 바이트가 패치 클라이언트(140)의 부팅을 방지할 수 있다. 이를 통해 증진된 보안, 예를 들면, 사용자가 잘못 형성된 패치만을 수신하였다는 느낌을 갖게 되는 방식으로 패치를 수정하는 웜들로부터의 보호가 가능해진다.
그러나, 보안이 어느 정도 요구되지 않는 다른 실시예들에서,단계 2000, 2020 혹은 2040에서 각각 긍정적으로 응답하는 패치의 기록들(1355, 1365, 1375, 1385)이 설치될 것이다. 따라서, 단계 2000, 2020 혹은 2040에 대한 부정적인 응답으로 인해 단계 2050에서 전체 패치가 무시되는 것이 아니라 단지 현재 검사된 기록들(1355, 1365, 1375, 1385)만이 무시될 것이다. 이러한 시스템들에서, 보안은 사용자가 패치 수신시 MD5 합을 검사하도록 하거나 몇 가지 예비 검사를 상기 패치 설치 과정에 포함시킴으로서 향상될 수 있다. OFB 모드가 에러를 국부화시키므로, OFB 암호화 모드를 사용하여 패치의 개별적인 기록들(1355, 1365, 1375, 1385)만 고려하도록 만들 수 있다.
상기 도시된 실시예들에 따라, 보안 패치 설치 과정은 자동적으로 패치 클라이언트(140)에 의해 달성되며, 사용자는 진행중에 어떠한 영향도 받지 않는다. 또한, 사용자는 상기 패치 클라이언트(140) 내에 무엇이 발생하는지를 볼 가능성이 없다. 그러나, 사용자는 단계 1570 혹은 2050에서 에러 메시지를 제공받을 수 있거나 단계 1560 혹은 2045에서 패치가 올바르게 설치되었다는 보고를 받을 수 있다.
또한, 본 발명의 일실시예에 따르면, 상기 기술된 보안 기능들을 턴오프시킬 수 있는 그 어떤 가능성도 없다. 이러한 점은, 보안 디스에이블 핀의 상태에 관해 보고하는 "셰도우(shadow)" 변수들로 인한 공격을 방지할 수 있다. 성능상의 이유로 상기 보안 기능의 턴오프가 요구되는 실시예에서는, 상기 변수가 그 어떤 소프트웨어에 의해서도 수정될 수 없음이 보장될 것이다. 이는, 상기 변수를 설정하는 소프트웨어 역시 공격받을 수 있기 때문이다.
상기 실시예들에 대한 기술로부터 명백해지는 바와 같이, 비밀 보호 및 키 분실 허용 한계를 높일 수 이는 소프트웨어 업데이트 방법 및 업데이트 시스템이 제공된다. 특히, 보안은 서로 다른 키 생성 플랫폼들(110, 120, 130)의 이용으로 현저히 향상될 수 있다.
서로 다른 생성 플랫폼들(110, 120, 130)로부터의 키들을 병합(combine)함으로써, 키 생성에 이용되는 플랫폼들(110, 120, 130)이 보안상의 결점을 가지고 있는 경우에 발생할 수 있는 취약한 서명키들로 인한 리스크를 감소시킬 수 있다. 일반적으로, 이러한 리스크는 새로운 키들을 내장하기 위해서 하드웨어를 변경해야 하는 문제를 유발하고 있는바, 이러한 문제해결 방법은 매우 비싸다. 따라서, 상기 제안된 다른 플랫폼들(110, 120, 130)에서 생성된 키들의 병합은 제작 및 유지 비용을 감소시킨다.
키 분실, 즉, 키들을 더 이상 사용할 수 없게 되는 경우로부터의 보호는 키들이 매트릭스(150)로부터 선택되었음을 나타내는 비트 지시자(1140, 1340)를 이용하여 달성될 것이다. 따라서, 하드웨어를 변경해야 하거나 키 분실의 경우 폐기 목록을 사용하여야 할 필요가 없게 된다.
또한, 3 개의 디지털 서명들(D1~D3)에 대하여, 12개의 키들을 포함하는 매트릭스로부터 3 개의 키들을 사용하는 제안된 방법은, 키가 공개되어버렸거나/도난당한 경우에 보다 더 보안성을 강화시키고 있으므로, 일반인들이 사용할 수 있다. 이는 공격자들이 가짜 패치들을 삽입하는 것을 더 어렵게 만들 것이다. 상기 키 매트 릭스의 3개의 열(260, 270, 280) 모두로부터 키 세트를 형성하는 3개의 비밀 키들의 적어도 하나의 완벽한 세트(이는, 다른 방법들이나 엔티티들에 의해 보호될 수 있다)를 훔쳐내야지만 공격을 할 수 있게 된다. 이러한 경우에도, 비밀누설(indiscretion)이 알려지지 않았다고 가정하면, 모든 패치 클라이언트들(140)의 1/64 정도만이 위조에 의해 감염될 수 있을 뿐이다. 비밀누설이 알려진 경우, 이론상으로는 최대 10개의 키들이 보안을 해치지 않으면서 손상될 수 있다: 상기 언급한 키 지시자(1140, 1340)의 2 비트를 포함하고 있는 더미 지시자(1240)는 상기 개인키 그룹(260, 270, 280)의 모두 4 개의 키들의 손상을 허용할 것이다. 4 개의 서명이 이용되고 어떠한 더미 서명도 허용하지 않는 실시예들에서는, 이러한 가능성이 1/64에서 1/256으로 감소한다(여기서 적어도 4 개의 개인키들이 노출되야 한다). 그러나, 이러한 실시예들에서, 보안 유지를 위해서는 적어도 하나의 유효한 키가 각 개인키 그룹에 있어야 한다.
도 5 및 9에 대하여 상기 기술한 해시체인은 서로 다른 대상들이 그들 중 누구도 그들이 동일한 패치 패키지에 서명했는지를 언급할 수 없는 상기 서명 과정에 포함될 수 있도록 한다. 이는 비용을 동일한 수준으로 유지하면서 몇 가지 시나리오에서 추가적인 보안을 제공할 것이다.
또한, 도 5 및 9의 해시체인은 중요한 보안 성과를 제공한다. 가장 새로운 결과들은 MD5 및 SHA-0(Secure Hash Algorithm 0)과 같은 암호 해시 기능들의 치명적인 결점에 대한 힌트를 제공한다. SHA-1이 깨질 수 있는지(broken) 및 사용가능한 방식으로 깨질 수 있는 지는 명확하지 않다. 그러나, 동일한 SHA-1 해시값을 갖 는 의미있는 상이한 텍스트들이 설사 구성될 수 있을지라도, 이것이 두개 이상의 체인된 해시들에 대하여 가능하다는 것은 완전히 비현실적인바, 이는 도 5 및 9에 도시된 해시체인에 의해 제공된 바와 같다.
상기 제안된 개념은 주의깊은 키관리와 결합된 혼성 공개키들을 이용하는 여러 개의 디지털 서명들(D1~D3)을 통해 패치의 확실성을 크게 보장한다. 단지 HSM 키들만이 이용되는 실시예들에서도 보안 수준은 여전히 높을 것이다. 상기 패치 개념들은 패치 클라이언트의 펌웨어에 숨겨져 있는 KEK 키를 통한 암호화에 의해 보호될 것이다.
TTP(Trusted Third Party)가 보안 과정에 포함되는 실시예들에서는, 단지 해시값들만이 서명되어야 할 것이다. 이로써, 패치 소스가 보여질 위험을 피할 수 있으므로 보안이 더욱 강화될 것이다. 제안된 해결책의 비용은 이익에 비하면 저렴한 것이다. 패치 개발 및 분배는 몇 가지 단계들이 이 과정에 포함되는 실시예들에서도 키 관리, 백업, 디지털 서명 및 암호화보다 비용이 명백히 더 많이 든다. 패치 클라이언트(140)의 생산비용은 거의 고정적이어서 상기 기술된 보안 패치 기능성을 추가하더라도 약간 변경될 뿐일 것이다. 복호화 및 서명 검사는 패치 클라이언트(140)의 부팅 중 최소 시간만을 필요로 할 것이다. 그러나, 종래의 보통 패치 시스템에서의 보안 성과는 상당하다. 따라서, 본 실시예들은 해당 비용의 과도한 증가 없이 패치 시스템의 안전성, 신뢰성 및 효율을 현저히 증가시킬 것이다.
본 발명은 본 발명에 따라 구성된 물리적 실시예들에 대하여 기술되었지만, 본 발명의 범위에서 벗어나지 않고 첨부된 특허청구범위의 영역 내에서 상기 내용 에 맞추어 본 발명의 다양한 수정, 변형 및 개선이 가능하다는 것이 당업자들에게는 명백할 것이다. 또한, 통상의 기술을 가진 자들이 익숙하다고 믿는 영역들은 상기 기술된 본 발명의 요지를 불필요하게 흐리지 않기 위하여 기술하지 않았다. 따라서, 본 발명은 특정 예시된 실시예들에 의해 한정되는 것이 아니라 첨부된 특허청구범위에 의해서만 한정되는 것을 이해하여야 한다.
본 발명의 실시예들은 컴퓨터 기술 영역에 적용가능하므로 산업현장에서도 이용할 수 있을 것이다.

Claims (10)

  1. 패치 클라이언트(140)에 연결되어 상기 패치 클라이언트(140)로 패치(1150, 1355, 1365, 1375, 1385)를 제공하기 위한 패치서버(100)에 있어서,
    다수의 제 1 개인키들(200-215)를 포함하는 제 1 개인키 그룹(260)을 생성하기 위한 제 1 키 생성 플랫폼(110)과;
    상기 제 1 개인키 그룹(260)과는 다르며, 다수의 제 2 개인키들(220-235)을 포함하는 제 2 개인키 그룹(270)을 생성하기 위한 제 2 키 생성 플랫폼(120)과;
    상기 제 1 개인키 그룹으로부터 상기 제 1 개인키들 중 하나를 선택(410, 610)하기 위한 제 1 키 선택기와;
    상기 제 2 개인키 그룹으로부터 상기 제 2 개인키들 중 하나를 선택(410, 620)하기 위한 제 2 키 선택기와;
    상기 패치 및 상기 선택된 제 1 개인키를 근거로 제 1 디지털 서명(1110, 1310)을 생성(420, 720, 1010)하기 위한 제 1 서명 생성기와;
    상기 패치 및 상기 선택된 제 2 개인키를 근거로 제 2 디지털 서명(1120, 1320)을 생성(420, 720, 1020)하기 위한 제 2 서명 생성기와;
    상기 패치를 상기 제 1 및 2 디지털 서명들과 함께 패치 클라이언트로 전송(490)하기 위한 송신기를 포함하는 것을 특징으로 하는 패치서버.
  2. 제 1 항에 있어서,
    상기 패치를 근거로 제 1 해시합을 산출(400, 510)하기 위한 제 1 해시기(hasher); 및
    상기 제 1 해시합을 근거로 제 2 해시합을 산출(400, 520)하기 위한 제 2 해시기를 더 포함하며,
    상기 제 1 서명 생성기는 또한 상기 제 2 해시합을 근거로 상기 제 1 디지털 서명을 생성(420, 710)하기 위하여 구성되는 것을 특징으로 하는 패치서버.
  3. 제 2 항에 있어서,
    상기 제 2 해시합을 근거로 제 3 해시합을 산출(400, 530)하기 위한 제 3 해시기를 더 포함하며,
    상기 제 2 서명 생성기는 또한 상기 제 3 해시합을 근거로 상기 제 2 디지털 서명을 생성(420, 720)하기 위하여 구성되는 것을 특징으로 하는 패치서버.
  4. 제 1 항에 있어서,
    다수의 해시합을 산출(400, 910-940)하기 위한 해시기를 더 포함하며;
    상기 패치는 다수의 기록들(1355, 1365, 1375, 1385)를 포함하며;
    상기 해시기는 또한 상기 패치에 포함된 마지막 기록(1385)을 근거로 상기 다수의 해시합의 제 1 해시합을 산출(400, 910)하도록 더 구성되며; 그리고
    상기 해시기는 상기 패치에 포함된 각각의 마지막 기록의 이전 기록 및 상기다수의 해시합의 마지막으로 계산된 해시합 각각을 근거로 상기 다수의 해시합의 추가 해시합 각각을 산출(400, 920-940)하기 위하여 더 구성되는 것을 특징으로 하는 패치서버.
  5. 제 4 항에 있어서,
    상기 제 1 서명 생성기는 또한 상기 계산된 다수의 해시합들의 마지막 해시합을 근거로 상기 제 1 디지털 서명을 생성(420, 1010)하기 위하여 구성되며;
    상기 송신기는 상기 패치를 상기 제 1 및 2 디지털 서명들 및 상기 다수의 해시합들과 함께 상기 패치 클라이언트로 전송하기 위하여 구성되는 것을 특징으로 하는 패치서버.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 제 2 서명 생성기는 또한 상기 계산된 다수의 해시합들의 마지막 해시합을 근거로 상기 제 2 디지털 서명을 생성(420, 1020)하기 위하여 구성되며;
    상기 송신기는 상기 패치를 상기 제 1 및 2 디지털 서명들 및 상기 다수의 해시합들과 함께 상기 패치 클라이언트로 전송하기 위하여 구성되는 것을 특징으로 하는 패치서버.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    제 1 개인키가 상기 제 1 개인키 그룹에서 선택되었음을 나타내는 제 1 키 지시자(1210) 및 제 2 개인키가 상기 제 2 개인키 그룹에서 선택되었음을 나타내는 제 2 키 지시자(1220)를 포함하는 키 지시자(1140, 1340)를 생성하기 위한 키 지시자 생성기를 더 포함하며;
    상기 송신기는 상기 패치를 상기 제 1 및 2 디지털 서명들 및 상기 키 지시지와 함께 상기 패치 클라이언트로 전송하기 위하여 구성되는 것을 특징으로 하는 패치서버.
  8. 제 7 항에 있어서,
    상기 키 지시자 생성기는
    또한 상기 제 1 및 2 디지털 서명들 중 하나를 더미 서명으로 식별하는 더미 지시자(1240)을 더 포함하는 상기 키 지시자를 생성하기 위하여 구성되는 것을 특징으로 하는 특징으로 하는 패치서버.
  9. 제 1 키 생성 플랫폼(110)을 이용하여 다수의 제 1 개인키들(200-215)을 포함하는 제 1 개인키 그룹(260)을 생성하는 단계와;
    상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼(120)을 이용하여 다수의 제 2 개인키들(220-235)을 포함하는 제 2 개인키 그룹(270)을 생성하는 단계와;
    상기 제 1 개인키 그룹으로부터 상기 제 1 개인키들 중 하나를 선택(410, 610)하는 단계와;
    상기 제 2 개인키 그룹으로부터 상기 제 2 개인키들 중 하나를 선택(410, 620)하는 단계와;
    상기 패치 및 상기 선택된 제 1 개인키를 근거로 제 1 디지털 서명(1110, 1310)을 생성(420, 710, 1010)하는 단계와;
    상기 패치 및 상기 선택된 제 2 개인키를 근거로 제 2 디지털 서명(1120, 1320)을 생성(420, 720, 1020)하는 단계와;
    상기 패치를 상기 제 1 및 2 디지털 서명들과 함께 상기 패치 클라이언트로 전송하는 단계를 포함하는 것을 특징으로 하는 패치(1150, 1355, 1365, 1375, 1385)를 패치 클라이언트(140)에 제공하는 방법.
  10. 패치서버(100)와 연결되어 상기 패치서버(100)로부터 패치(1150, 1355, 1365, 1375, 1385)를 수신(1500, 1800)하는 패치 클라이언트(140)에 있어서,
    제 1 키 생성 플랫폼(110)에 의해 생성된 다수의 제 1 공개키들(300-315)을 포함하는 제 1 공개키 그룹(360)을 저장하기 위한 제 1 저장수단과;
    상기 제 1 키 생성 플랫폼과는 다른 제 2 키 생성 플랫폼(120)에 의해 생성된 다수의 제 2 공개키들(320-335)를 포함하는 제 2 공개키 그룹(370)을 저장하기 위한 제 2 저장수단과;
    상기 제 1 공개키 그룹으로부터 상기 제 1 공개키들 중 하나를 선택(1530, 1610, 1830)하기 위한 제 1 키 선택기와;
    상기 제 2 공개키 그룹으로부터 상기 제 2 공개키들 중 하나를 선택(1530, 1620, 1830)하기 위한 제 2 키 선택기와;
    상기 선택된 제 1 공개키를 이용하여 상기 패치와 함께 상기 패치서버로부터 수신된 제 1 디지털 서명(1110, 1310)을 검증(1540, 1720, 1750, 1840, 1920, 1950)하기 위한 제 1 서명 검증요소와;
    상기 선택된 제 2 공개키를 이용하여 상기 패치와 함께 상기 패치서버로부터 수신된 제 2 디지털 서명(1120, 1320)을 검증(1540, 1730, 1760, 1840, 1930, 1960)하기 위한 제 2 디지털 서명 검증요소를 포함하며;
    상기 패치 클라이언트는 상기 제 1 및 2 디지털 서명들의 검증 결과가 각각 상기 제 1 및 2 디지털 서명들의 신빙성 및 완전성을 나타내는 경우에만 상기 패치를 설치하도록 구성되는 것을 특징으로 하는 패치 클라이언트.
KR1020087002580A 2005-06-30 2006-05-23 보안 패치 시스템 KR101290818B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
DE102005030590A DE102005030590B4 (de) 2005-06-30 2005-06-30 Sicheres Patchsystem
DE102005030590.3 2005-06-30
US11/219,260 US7127067B1 (en) 2005-06-30 2005-09-02 Secure patch system
US11/219,260 2005-09-02
PCT/US2006/019941 WO2007005140A1 (en) 2005-06-30 2006-05-23 Secure patch system

Publications (2)

Publication Number Publication Date
KR20080031925A true KR20080031925A (ko) 2008-04-11
KR101290818B1 KR101290818B1 (ko) 2013-07-30

Family

ID=37067622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087002580A KR101290818B1 (ko) 2005-06-30 2006-05-23 보안 패치 시스템

Country Status (3)

Country Link
KR (1) KR101290818B1 (ko)
GB (1) GB2442895B (ko)
WO (1) WO2007005140A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10420862B2 (en) 2009-08-24 2019-09-24 Aresenal AAA, LLC. In-situ forming foams for treatment of aneurysms
KR101893518B1 (ko) 2016-10-28 2018-10-04 한국전자통신연구원 제어 시스템의 업데이트 관리 장치, 업데이트 검증 장치 및 그 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
CN101694688B (zh) * 2000-09-21 2014-07-16 黑莓有限公司 代码签字系统及方法

Also Published As

Publication number Publication date
GB2442895A (en) 2008-04-16
GB0800881D0 (en) 2008-02-27
WO2007005140A1 (en) 2007-01-11
KR101290818B1 (ko) 2013-07-30
GB2442895B (en) 2010-05-05

Similar Documents

Publication Publication Date Title
US7127067B1 (en) Secure patch system
CN109194466B (zh) 一种基于区块链的云端数据完整性检测方法及系统
US9311487B2 (en) Tampering monitoring system, management device, protection control module, and detection module
Barker et al. NIST special publication 800-57
JP3872107B2 (ja) 暗号キー回復システム
US10097342B2 (en) Encoding values by pseudo-random mask
US20060005046A1 (en) Secure firmware update procedure for programmable security devices
US20080025515A1 (en) Systems and Methods for Digitally-Signed Updates
US8744078B2 (en) System and method for securing multiple data segments having different lengths using pattern keys having multiple different strengths
EP3035585B1 (en) S-box selection in white-box cryptographic implementation
US10924282B2 (en) System and method for measuring and reporting IoT boot integrity
JP2004280284A (ja) 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
US10700849B2 (en) Balanced encoding of intermediate values within a white-box implementation
JP2007522739A (ja) 一方向性認証
US10223511B2 (en) Watermarking input and output of a white-box implementation
US9641337B2 (en) Interface compatible approach for gluing white-box implementation to surrounding program
US20120054499A1 (en) System and method for executing encrypted binaries in a cryptographic processor
EP3068067B1 (en) Implementing padding in a white-box implementation
US11720693B2 (en) System and method for securely transferring data
Yao et al. Cryptography
US20090279696A1 (en) System and method of performing authentication
KR101290818B1 (ko) 보안 패치 시스템
CN109784072B (zh) 一种安全文件管理方法和系统
CN117692134A (zh) 密钥更新管理系统和密钥更新管理方法
CN108242997B (zh) 安全通信的方法与设备

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: 20160616

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6