KR102626974B1 - 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템 - Google Patents

화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102626974B1
KR102626974B1 KR1020230111580A KR20230111580A KR102626974B1 KR 102626974 B1 KR102626974 B1 KR 102626974B1 KR 1020230111580 A KR1020230111580 A KR 1020230111580A KR 20230111580 A KR20230111580 A KR 20230111580A KR 102626974 B1 KR102626974 B1 KR 102626974B1
Authority
KR
South Korea
Prior art keywords
value
encryption
secret key
inverse
encoding
Prior art date
Application number
KR1020230111580A
Other languages
English (en)
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 KR1020230111580A priority Critical patent/KR102626974B1/ko
Application granted granted Critical
Publication of KR102626974B1 publication Critical patent/KR102626974B1/ko

Links

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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/062Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys

Abstract

화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템이 개시된다. 개시되는 일 실시예에 따른 방법은, 암호화 장치에서, 평문 형태의 비밀키를 입력 받고, 상기 비밀키를 제1 암호화 알고리즘에 기초하여 인코딩하는 단계, 암호화 장치에서, 인코딩 값을 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화하는 단계, 및 암호화 장치에서, 암호화 값을 복호화 장치로 전달하는 단계를 포함한다.

Description

화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템{METHOD AND SYSTEM FOR PROTECTING SECRET KEY OF WHITE BOX CRYPTOGRAPHY}
본 발명의 실시예는 화이트박스 암호의 비밀키 보호를 위한 기술과 관련된다.
화이트박스 암호(White-box Cryptography)는 키 정보를 소프트웨어로 구현된 암호화 알고리즘에 섞는 방법으로 공격자가 알고리즘 내부 동작을 분석하더라도 암호화 키를 쉽게 유추할 수 없도록 하는 기술이다. 화이트박스 암호 기술에서는 암호키가 포함되어 있는 참조 테이블을 이용하여 암복호화를 수행하여 암호키를 노출하지 않도록 하는데, 외부 시스템에 동일한 암호키를 전달하기 위해서는 참조 테이블을 전달하거나 참조 테이블을 만들 수 있는 평문키를 전달해야 한다. 그러나, 참조 테이블은 알고리즘에 따라 수 K Byte에서 수 M Byte까지 용량이 커서 전달에 어려움이 있고, 평문키를 전달하게 되면 이를 안전하게 전달하기 위한 다른 방식을 도입해야 하는 문제점이 있다.
한국공개특허공보 제10-2017-0019679호(2017.02.22)
본 발명의 실시예는 화이트박스 암호에서 평문 형태의 비밀키가 노출되지 않도록 하기 위한 방법 및 시스템을 제공하기 위한 것이다.
개시되는 일 실시예에 따른 방법은, 암호화 장치에서, 평문 형태의 비밀키를 입력 받고, 상기 비밀키를 제1 암호화 알고리즘에 기초하여 인코딩하는 단계; 상기 암호화 장치에서, 인코딩 값을 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화하는 단계; 및 상기 암호화 장치에서, 암호화 값을 복호화 장치로 전달하는 단계를 포함한다.
상기 인코딩하는 단계는, 상기 평문 형태의 비밀키를 기 설정된 크기의 바이트로 입력 받는 단계; 상기 바이트의 순서에 따라 오프셋 값을 설정하는 단계; 및 상기 바이트의 순서에 따라 1 바이트 단위씩 비밀키를 인코딩하는 단계를 포함할 수 있다.
상기 제1 암호화 알고리즘은, AES(Advanced Encryption Standard) 알고리즘이고, 상기 제2 암호화 알고리즘은, 화이트박스 암호(White-box Cryptography) 알고리즘일 수 있다.
상기 인코딩하는 단계는, 기 설정된 모듈로(modulo) 연산 및 생성자(generator) 값을 이용하여 T-matrix, S-box(substitution box), Mixcolumn, 및 인버스 S-box를 각각 생성하는 단계; 상기 비밀키의 값을 상기 S-box를 통해 변환하여 제1 변환 값을 생성하는 단계; 상기 비밀키의 오프셋 값을 상기 인버스 S-box를 통해 변환하여 제2 변환 값을 생성하는 단계; 상기 제1 변환 값과 상기 제2 변환 값을 XOR(Exclusive OR) 연산하는 단계; 상기 XOR 연산한 연산 값을 상기 T-matrix와 행렬 곱하여 T-matrix 결과 값을 생성하는 단계; 상기 T-matrix 결과 값을 상기 S-box를 통해 변환하여 제3 변환 값을 생성하는 단계; 상기 제3 변환 값을 상기 Mixcolumn과 행렬 곱하여 Mixcolumn 결과 값을 생성하는 단계; 및 상기 제3 변환 값을 생성하는 단계 및 상기 Mixcolumn 결과 값을 생성하는 단계를 기 설정된 횟수만큼 반복하여 인코딩 값을 생성하는 단계를 포함할 수 있다.
상기 암호화하는 단계는, 상기 인코딩 값을 입력 받고, 상기 인코딩 값을 기 설정된 룩업 테이블 및 마스터 키에 기초하여 1차 치환하는 단계; 상기 1차 치환된 값을 입력 받고, 상기 1차 치환된 값에 기 설정된 연산을 수행하여 2차 치환하는 단계; 및 상기 1차 치환하는 단계 및 상기 2차 치환하는 단계를 기 설정된 횟수만큼 반복하여 암호화 값을 생성하는 단계를 포함할 수 있다.
상기 방법은, 상기 복호화 장치에서, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하는 단계; 및 상기 복호화 장치에서, 상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 단계를 더 포함할 수 있다.
상기 인코딩 값을 추출하는 단계는, 상기 암호화 값을 입력 받고, 상기 암호화 값을 기 설정된 룩업 테이블 및 마스터 키에 기초하여 1차 역치환 하는 단계; 상기 1차 역치환 된 값을 입력 받고, 상기 1차 역치환 된 값에 기 설정된 연산을 수행하여 2차 역치환 하는 단계; 및 상기 1차 역치환 하는 단계 및 상기 2차 역치환 하는 단계를 기 설정된 횟수만큼 반복 수행하여 상기 인코딩 값을 추출하는 단계를 포함할 수 있다.
상기 참조 테이블을 생성하는 단계는, 기 설정된 크기의 제1 입력 및 제2 입력에 대해 기 설정된 연산에 의해 계산된 결과를 저장한 연산 결과 테이블을 생성하는 단계; 상기 추출한 인코딩 값을 복호화 하는 과정에서 상기 비밀키가 노출되지 않도록 중간 값을 추출하는 단계; 및 상기 추출한 중간 값 및 상기 생성된 연산 결과 테이블에 기초하여 상기 참조 테이블을 생성할 수 있다.
상기 중간 값을 추출하는 단계는, 상기 모듈로 연산 및 상기 생성자 값에 기초하여 인버스 S-box, 인버스 Mixcolumn, 및 인버스 T-matrix를 생성하는 단계; 상기 추출한 인코딩 값을 상기 인버스 S-box을 통해 변환하여 제4 변환 값을 생성하는 단계; 상기 제4 변환 값을 상기 인버스 Mixcolumn과 행렬 곱하여 인버스 Mixcolumn 결과 값을 생성하는 단계; 상기 제4 변환 값을 생성하는 단계 및 상기 인버스 Mixcolumn 결과 값을 생성하는 단계를 기 설정된 횟수만큼 반복하는 단계; 상기 기 설정된 횟수만큼 반복한 결과 값을 상기 인버스 T-matrix와 행렬 곱하여 인버스 T-matrix 결과 값을 생성하는 단계; 상기 추출한 인코딩 값의 기 설정된 오프 셋 값을 상기 인버스 S-box을 통해 변환하여 제5 변환 값을 생성하는 단계; 및 상기 제5 변환 값과 상기 인버스 T-matrix 결과 값을 XOR 연산하여 상기 중간 값을 생성하는 단계를 포함할 수 있다.
상기 참조 테이블을 생성하는 단계는, 제1 입력을 입력 받는 단계; 상기 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출하는 단계; 및 상기 인덱스 값을 제2 입력으로 하여 상기 제1 입력 및 상기 제2 입력에 대응하는 상기 연산 결과 테이블의 저장된 값을 참조 테이블의 값으로 추출하는 단계를 포함할 수 있다.
개시되는 다른 실시예에 따른 방법은, 복호화 장치에서, 암호화 장치로부터 평문 형태의 비밀키가 제1 암호화 알고리즘에 기초하여 인코딩 되고, 인코딩 된 값이 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화 된 암호화 값을 수신하는 단계; 상기 복호화 장치에서, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하는 단계; 및 상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 단계를 포함한다.
상기 제1 암호화 알고리즘은, AES(Advanced Encryption Standard) 알고리즘이고, 상기 제2 암호화 알고리즘은, 화이트박스 암호(White-box Cryptography) 알고리즘이며, 상기 참조 테이블은, 상기 화이트박스 암호 알고리즘에 사용되는 참조 테이블일 수 있다.
상기 참조 테이블을 생성하는 단계는, 기 설정된 크기의 제1 입력 및 제2 입력에 대해 기 설정된 연산에 의해 계산된 결과를 저장한 연산 결과 테이블을 생성하는 단계; 상기 추출한 인코딩 값을 복호화 하는 과정에서 상기 비밀키가 노출되지 않도록 중간 값을 추출하는 단계; 및 상기 추출한 중간 값 및 상기 생성된 연산 결과 테이블에 기초하여 상기 참조 테이블을 생성하는 단계를 포함할 수 있다.
상기 참조 테이블을 생성하는 단계는, 제1 입력을 입력 받는 단계; 상기 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출하는 단계; 및 상기 인덱스 값을 제2 입력으로 하여 상기 제1 입력 및 상기 제2 입력에 대응하는 상기 연산 결과 테이블의 저장된 값을 참조 테이블의 값으로 추출하는 단계를 포함할 수 있다.
개시되는 일 실시예에 따른 시스템은, 평문 형태의 비밀키를 입력 받고, 상기 비밀키를 제1 암호화 알고리즘에 기초하여 인코딩하고, 인코딩 값을 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화하며, 암호화 값을 송신하는 암호화 장치; 및 상기 암호화 장치로부터 상기 암호화 값을 수신하고, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하며, 상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 복호화 장치를 포함한다.
개시되는 실시예에 의하면, 암호화 장치에서 평문 형태의 비밀키를 인코딩 하고 이를 암호화 한 후 복호화 장치로 전달하고, 복호화 장치에서 암호화 값을 복호화 하여 인코딩 값을 추출한 후 인코딩 값에 기초하여 참조 테이블을 생성함으로써, 전체 암복호화 과정에서 평문 형태의 비밀키가 노출되지 않도록 할 수 있게 된다.
도 1은 본 발명의 일 실시예에 따른 화이트박스 암호화 시스템의 구성을 나타낸 도면
도 2는 일 실시예에 따른 T-matrix, Mixcolumn, S-box(substitution box), 및 인버스 S-box를 나타낸 도면
도 3은 본 발명의 일 실시예에서 바이트 순서에 따라 오프셋 값을 설정한 상태를 나타낸 도면
도 4는 본 발명의 일 실시예에서 비밀키의 값을 S-box를 이용하여 변환하고 비밀키의 오프셋 값을 인버스 S-box를 이용하여 변환하는 상태를 나타낸 도면
도 5는 개시되는 일 실시예에서 제1 변환 값과 제2 변환 값을 XOR 연산한 연산 값을 기 생성된 T-matrix와 행렬 곱하는 상태를 나타낸 도면
도 6은 개시되는 일 실시예에서 제3 변환 값을 기 생성된 Mixcolumn과 행렬 곱하는 상태를 나타낸 도면
도 7은 본 발명의 일 실시예에서 인코딩 값이 룩업 테이블에 기초하여 1차 치환되는 상태를 개략적으로 나타낸 도면
도 8은 본 발명의 일 실시예에서 제2 치환부가 1차 치환된 값을 2차 치환하는 상태를 개략적으로 나타낸 도면
도 9는 본 발명의 일 실시예에서 연산 결과 테이블(F-Table)을 나타낸 도면
도 10은 본 발명의 일 실시예에서 제4 변환 값 및 인버스 Mixcolumn 결과 값을 생성하는 상태를 나타낸 도면
도 11 및 도 12는 본 발명의 일 실시예에서 복호화의 중간값 및 기 생성된 연산 결과 테이블에 기초하여 참조 테이블을 생성하는 과정을 나타낸 도면
도 13은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
이하의 설명에 있어서, 신호 또는 정보의 "전송", "통신", "송신", "수신" 기타 이와 유사한 의미의 용어는 일 구성요소에서 다른 구성요소로 신호 또는 정보가 직접 전달되는 것뿐만이 아니라 다른 구성요소를 거쳐 전달되는 것도 포함한다. 특히 신호 또는 정보를 일 구성요소로 "전송" 또는 "송신"한다는 것은 그 신호 또는 정보의 최종 목적지를 지시하는 것이고 직접적인 목적지를 의미하는 것이 아니다. 이는 신호 또는 정보의 "수신"에 있어서도 동일하다. 또한 본 명세서에 있어서, 2 이상의 데이터 또는 정보가 "관련"된다는 것은 하나의 데이터(또는 정보)를 획득하면, 그에 기초하여 다른 데이터(또는 정보)의 적어도 일부를 획득할 수 있음을 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
도 1은 본 발명의 일 실시예에 따른 화이트박스 암호화 시스템의 구성을 나타낸 도면이다.
도 1을 참조하면, 화이트박스 암호화 시스템(100)은 암호화 장치(102) 및 복호화 장치(104)를 포함할 수 있다. 일 실시예에서, 암호화 장치(102) 및 복호화 장치(104)는 통신 네트워크를 통해 통신 가능하게 연결될 수 있다.
암호화 장치(102)는 평문 형태의 비밀키를 입력 받고 비밀키를 암호화 하여 복호화 장치(104)로 전달할 수 있다. 암호화 장치(102)는 인코딩 모듈(111) 및 암호화 모듈(113)을 포함할 수 있다.
인코딩 모듈(111)은 평문 형태의 비밀키를 입력 받고 비밀키를 인코딩할 수 있다. 이때, 인코딩 모듈(111)은 AES(Advanced Encryption Standard) 알고리즘을 이용하여 비밀키를 인코딩할 수 있다.
구체적으로, 인코딩 모듈(111)은 기 설정된 모듈로(modulo) 연산 및 생성자(generator) 값을 이용하여 T-matrix, S-box(substitution box), 및 Mixcolumn 등의 테이블을 생성할 수 있다. 또한, 인코딩 모듈(111)은 생성한 S-box를 인버스하여 인버스 S-box를 생성할 수 있다. 도 2는 일 실시예에 따른 T-matrix, Mixcolumn, S-box(substitution box), 및 인버스 S-box를 나타낸 도면이다. 여기서, T-matrix, S-box(substitution box), 및 Mixcolumn 등의 생성은 기 공지된 기술이므로 이에 대한 자세한 설명은 생략하기로 한다.
인코딩 모듈(111)은 평문 형태의 비밀키를 기 설정된 크기(예를 들어, 16 Byte 등)로 입력 받을 수 있다. 예를 들어, 인코딩 모듈(111)은 16 바이트의 비밀키를 입력 받는 경우, 바이트의 순서에 따라 1 바이트씩 비밀키를 인코딩 할 수 있다. 이때, 바이트의 순서는 도 3에 도시된 바와 같이, 오프셋(offset) 값으로 설정할 수 있다. 즉, 16 바이트의 비밀키인 경우, 바이트의 순서에 따라 오프셋 값을 0부터 15까지 설정할 수 있다.
구체적으로, 인코딩 모듈(111)은 비밀키의 값을 기 생성된 S-box를 이용하여 변환할 수 있다. 예를 들어, 비밀키의 첫 번째 바이트의 값이 0×00인 경우, 인코딩 모듈(111)은 도 4의 (a)에 도시된 S-box를 이용하여 0×78로 변환할 수 있다. 비밀키의 첫 번째 바이트의 값에서 상위 4 비트는 S-box의 Row값에 해당하고, 하위 4 비트는 S-box의 Column에 해당하게 된다. 따라서, 0×00은 S-box에서 0×78로 변환(치환)될 수 있다.
인코딩 모듈(111)은 비밀키의 오프셋 값을 기 생성된 인버스 S-box를 이용하여 변환할 수 있다. 예를 들어, 비밀키의 첫 번째 바이트의 오프셋 값이 00인 경우, 인코딩 모듈(111)은 도 4의 (b)에 도시된 인버스 S-box를 이용하여 0×96으로 변환할 수 있다.
인코딩 모듈(111)은 비밀키의 값을 S-box를 이용하여 변환한 제1 변환 값(0×78)과 비밀키의 오프셋 값을 인버스 S-box를 이용하여 변환한 제2 변환 값(0×96)을 XOR(Exclusive OR) 연산할 수 있다. 즉, 제1 변환 값과 제2 변환 값을 XOR 연산을 하면, 0×78 xor 0×96 = 0×EE가 된다.
인코딩 모듈(111)은 제1 변환 값과 제2 변환 값을 XOR 연산한 연산 값을 기 생성된 T-matrix와 행렬 곱하여 T-matrix 결과 값을 생성할 수 있다. 도 5는 개시되는 일 실시예에서 제1 변환 값과 제2 변환 값을 XOR 연산한 연산 값을 기 생성된 T-matrix와 행렬 곱하는 상태를 나타낸 도면이다. 도 5를 참조하면, T-matrix에 연산 값 0×EE을 행렬 곱하면 0×D9가 T-matrix 결과 값으로 나오게 된다.
인코딩 모듈(111)은 T-matrix 결과 값(0×D9)을 기 생성된 S-box를 이용하여 변환할 수 있다. 즉, 인코딩 모듈(111)은 T-matrix 결과 값을 S-box를 이용하여 변환하여 제3 변환 값을 생성할 수 있다. 여기서, T-matrix 결과 값(0×D9)은 S-box에서 0×66(즉, 제3 변환 값)으로 변환될 수 있다.
인코딩 모듈(111)은 제3 변환 값(0×66)에 기 생성된 Mixcolumn과 행렬 곱하여 Mixcolumn 결과 값을 생성할 수 있다. 도 6은 개시되는 일 실시예에서 제3 변환 값을 기 생성된 Mixcolumn과 행렬 곱하는 상태를 나타낸 도면이다.
인코딩 모듈(111)은 T-matrix 결과 값을 S-box를 이용하여 제3 변환 값으로 변환하고, 제3 변환 값에 Mixcolumn을 행렬 곱하여 Mixcolumn 결과 값을 생성하는 과정을 기 설정된 횟수(예를 들어, 30회 등)만큼 반복하여 비밀키의 첫 번째 바이트에 대한 인코딩 과정을 마칠 수 있다. 그리고, 인코딩 모듈(111)은 비밀키의 다른 바이트에 대해서도 순차적으로 이러한 과정을 거쳐 인코딩을 수행할 수 있다.
암호화 모듈(113)은 인코딩 모듈(111)로부터 비밀키에 대한 인코딩 값을 전달 받아 암호화를 수행할 수 있다. 암호화 모듈(113)은 인코딩 모듈(111)과는 다른 방식의 암호화 알고리즘을 통해 인코딩 값을 암호화 할 수 있다. 일 실시예에서, 암호화 모듈(113)은 인코딩 값을 화이트박스 암호(White-box Cryptography) 알고리즘에 기초하여 암호화 할 수 있다. 암호화 모듈(113)은 인코딩 값을 노출하지 않은 상태에서 인코딩 값에 대해 암호화를 수행할 수 있다.
암호화 모듈(113)은 제1 치환부(113-1) 및 제2 치환부(113-2)를 포함할 수 있다. 제1 치환부(113-1)는 인코딩 값을 입력 받고, 기 설정된 룩업 테이블에 기초하여 인코딩 값을 1차 치환할 수 있다. 도 7은 본 발명의 일 실시예에서 인코딩 값이 룩업 테이블에 기초하여 1차 치환되는 상태를 개략적으로 나타낸 도면이다.
도 7을 참조하면, 인코딩 값(x)은 기 생성된 룩업 테이블(113-1a)에 입력될 수 있다. 여기서, 룩업 테이블(113-1a)은 마스터 키(K)가 사용되는 특정 연산이 사전에 테이블로 저장된 것을 의미할 수 있다. 인코딩 값(x)은 na bit로 이루어질 수 있다. 그리고, 대칭키 암호 EK의 n bit 입력을 위해 입력의 상위 nb(nb = n-na) bit에는 제로 패딩(zero padding)을 통해 0의 값이 채워질 수 있다. 제로 패딩된 입력과 마스터 키(K)로 대칭키 암호화가 이루어지고, 최종적으로 상위 nb bit가 룩업 테이블(113-1a)에서 출력(y)(1차 치환된 값)되게 된다. 여기서는, 룩업 테이블(113-1a)을 참조하는 것으로 암호화를 수행하기 때문에 마스터 키(K)가 노출되지 않으면서 인코딩 값(x)을 보호할 수 있게 된다.
제2 치환부(113-2)는 제1 치환부(113-1)에서 출력되는 1차 치환된 값(y)을 입력 받고, 입력된 1차 치환된 값을 2차 치환하여 2차 치환된 값(y')을 생성할 수 있다. 도 8은 본 발명의 일 실시예에서 제2 치환부(113-2)가 1차 치환된 값을 2차 치환하는 상태를 개략적으로 나타낸 도면이다. 도 8을 참조하면, 제2 치환부(113-2)는 입력된 1차 치환된 값(y)과 인코딩 값(x)을 XOR 연산하고, 각 블록의 순서를 바꾸는 순열(permutation) 연산을 수행하여 1차 치환된 값을 2차 치환하여 2차 치환된 값(y')을 출력할 수 있다.
여기서, 암호화 모듈(113)은 제1 치환부(113-1)의 1차 치환 및 제2 치환부(113-2)의 2차 치환을 기 설정된 횟수만큼 반복하여 수행하게 되는데, 1차 치환 및 2차 치환이 1회 수행되는 것을 1라운드라 할 수 있다. 즉, 암호화 모듈(113)은 인코딩 값을 1차 치환 및 2차 치환하는 과정을 기 설정된 복수 라운드만큼 수행할 수 있다. 그리고, 마지막 라운드의 제2 치환부(113-2)에서 출력되는 2차 치환된 값이 암호화 값이 된다.
요약하면, 암호화 장치(102)는 평문 형태의 비밀키를 인코딩 모듈(111)을 통해 인코딩 하고, 인코딩 값을 암호화 모듈(113)을 통해 암호화 하며, 암호화 값을 복호화 장치(104)로 전달할 수 있다. 일 실시예에서, 암호화 장치(102)는 통신 네트워크를 통해 암호화 값을 복호화 장치(104)로 전달할 수 있다. 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wide area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
한편, 암호화 장치(102)는 장치 인증을 위해 인코딩 값 및 기 설정된 장치 정보(예를 들어, 암호화 장치(102)의 MAC(Media Access Control) 어드레스 등)를 기 설정된 암호화 해시 함수에 입력하여 장치 인증 해시 값을 생성하고, 장치 인증 해시 값을 암호화 값과 결합하여 복호화 장치(104)로 전달할 수도 있다. 이때, 인코딩 값은 메시지에 해당하고, 기 설정된 장치 정보는 키(key)에 해당할 수 있다.
복호화 장치(104)는 암호화 장치(102)로부터 비밀키에 대한 암호화 값을 수신할 수 있다. 복호화 장치(104)는 암호화 값을 복호화 하여 인코딩 값을 추출하고, 추출한 인코딩 값에 기초하여 참조 테이블을 생성할 수 있다. 이때, 평문 형태의 비밀키는 인코딩된 상태를 유지하여 그 정보가 노출되지 않은 상태에서 참조 테이블이 생성되게 된다. 복호화 장치(104)는 복호화 모듈(121) 및 참조 테이블 생성 모듈(123)을 포함할 수 있다.
복호화 모듈(121)은 암호화 값을 복호화 하여 인코딩 값을 추출할 수 있다. 복호화 모듈(121)은 암호화 장치(102)의 암호화 모듈(113)에서 사용된 암호 알고리즘에 대응하는 복호 알고리즘을 이용하여 암호화 값을 복호화 할 수 있다. 즉, 암호화 장치(102)의 암호화 모듈(113)에서 화이트박스 암호(White-box Cryptography) 알고리즘에 기초하여 암호화를 수행한 경우, 복호화 모듈(121)은 그에 대응하는 복호 알고리즘을 이용하여 암호화 값을 복호화 할 수 있다.
복호화 모듈(121)은 제1 역치환부(121-1) 및 제2 역치환부(121-2)를 포함할 수 있다. 제1 역치환부(121-1)는 암호화 값을 입력 받고, 기 설정된 룩업 테이블 및 마스터 키에 기초하여 암호화 값을 1차 역치환 할 수 있다. 여기서, 암호화 값을 1차 역치환 하게 되면, 암호화 장치(102)의 암호화 모듈(113)에서 인코딩 값의 1차 치환된 값이 추출되게 된다. 즉, 제1 역치환부(121-1)는 암호화 값(y')을 입력 받고, 기 설정된 룩업 테이블에 기초하여 암호화 값을 1차 역치환함으로써 인코딩 값의 1차 치환된 값(y)을 추출할 수 있다. 제1 역치환부(121-1)는 제1 치환부(113-1)의 1차 치환 과정을 역으로 수행할 수 있다.
제2 역치환부(121-2)는 제1 역치환부(121-1)로부터 암호화 값이 1차 역치환 된 값(즉, 인코딩 값의 1차 치환된 값(y))을 입력 받을 수 있다. 제2 역치환부(121-2)는 인코딩 값의 1차 치환된 값(y)을 2차 역치환 하여 인코딩 값(x)을 추출할 수 있다.
구체적으로, 제2 역치환부(121-2)는 입력된 인코딩 값의 1차 치환된 값(y)과 인코딩 값을 XOR 연산하고, 각 블록의 순서를 바꾸는 역 순열(inverse permutation) 연산을 수행하여 1차 치환된 값을 2차 역치환 할 수 있다. 이때, 역 순열 연산은 제2 치환부(113-2)의 순열 연산과 반대되는 것으로 제2 치환부(113-2)에서와 블록의 순서를 반대로 바꾸는 것을 의미할 수 있다. 제2 역치환부(121-1)는 제2 치환부(113-2)의 2차 치환 과정을 역으로 수행할 수 있다.
복호화 모듈(121)은 제1 역치환부(121-1)의 1차 역치환 및 제2 역치환부(121-2)의 2차 역치환을 기 설정된 횟수(암호화 모듈(113)과 동일한 반복 횟수임)만큼 반복하여 수행할 수 있다. 마지막 라운드의 제2 역치환부(121-2)에서 출력되는 2차 역치환된 값이 인코딩 값이 된다.
한편, 암호화 장치(102)로부터 장치 인증 해시 값이 결합된 암호화 값을 수신한 경우, 복호화 장치(104)는 암호화 값을 복호화 하여 인코딩 값을 추출하였을 때, 추출한 인코딩 값과 기 설정된 장치 정보를 기 설정된 암호화 해시 함수에 입력하여 장치 인증 해시 값을 생성할 수 있다. 이때, 복호화 장치(104)는 복호화 장치(104)가 생성한 장치 인증 해시 값과 암호화 장치(102)로부터 수신한 장치 인증 해시 값이 동일한지를 확인하여 장치 인증을 수행할 수 있다.
복호화 장치(104)는 장치 인증 해시 값이 동일한 경우, 장치 인증이 성공한 것으로 판단하여 참조 테이블 생성 과정을 수행할 수 있다. 반면, 장치 인증 해시 값이 동일하지 않은 경우, 복호화 장치(104)는 장치 인증이 실패한 것으로 판단하여 복호 과정을 종료할 수 있다.
참조 테이블 생성 모듈(123)은 복호화 모듈(121)에서 추출한 인코딩 값에 기초하여 화이트 박스 암복호화에서 연산에 사용되는 참조 테이블을 생성할 수 있다. 참조 테이블 생성 모듈(123)은 연산 결과 테이블을 미리 생성할 수 있다. 연산 결과 테이블은 1 바이트의 모든 경우의 수(0 ~ 255)에 대해 미리 그 결과를 연산하여 저장한 테이블일 수 있다. 즉, 암호화 장치(102)에서 인코딩이 바이트 단위로 이루어지므로, 1 바이트의 모든 경우의 수에 대한 연산 결과를 테이블로 미리 생성해 둘 수 있다.
일 실시예에서, 연산 결과 테이블은 도 9에 도시하는 바와 같이, 16 × 16 크기의 테이블이 256개 존재하는 형태로 생성될 수 있다. 즉, 연산 결과 테이블의 전체 크기는 256 × 256의 크기일 수 있다. 여기서, 제1 입력을 i라 하고, 제2 입력을 j라 하면, i 및 j에는 각각 0부터 255까지의 경우의 수가 입력될 수 있고, i와 j의 기 설정된 연산에 의해 계산된 결과를 저장한 테이블이 연산 결과 테이블이다. 제1 입력은 계산의 대상이 되는 값일 수 있고, 제2 입력은 비밀키와 관련된 값(예를 들어, 복호화의 중간값에 기초한 인덱스 값)일 수 있다. 즉, 비밀키와 관련된 값과 연산하고자 하는 값(제1 입력) 및 비밀키와 관련된 값(제2 입력)이 기 설정된 연산에 의해 계산된 결과를 저장한 것이 연산 결과 테이블이다.
참조 테이블 생성 모듈(123)은 복호화 모듈(121)에서 추출한 인코딩 값을 복호화 하는 과정에서 비밀키가 노출되지 않도록 중간 값을 추출하고, 추출한 중간 값과 기 생성된 연산 결과 테이블에 기초하여 참조 테이블을 생성할 수 있다. 즉, 개시되는 실시예에서는 평문 형태의 비밀키가 노출되지 않은 상태에서 참조 테이블이 생성된다.
참조 테이블 생성 모듈(123)은 인코딩 값을 복호화 하기 위해 인버스 S-box, 인버스 Mixcolumn, 인버스 T-matrix 등의 테이블을 생성할 수 있다. 이는 암호화 장치(102)에서 사용한 동일한 모듈로 연산 및 생성자 값을 이용해서 T-matrix, S-box, 및 Mixcolumn 등을 생성한 후 이를 각각 인버스하여 생성할 수 있다.
구체적으로, 참조 테이블 생성 모듈(123)은 인코딩 값을 바이트 순서에 따라 복호화 할 수 있다. 참조 테이블 생성 모듈(123)은 첫 번째 바이트의 인코딩 값을 가져온 후 인버스 S-box를 이용하여 변환하여 제4 변환 값을 생성할 수 있다. 그리고, 참조 테이블 생성 모듈(123)은 제4 변환 값을 인버스 Mixcolumn과 행렬 곱하여 인버스 Mixcolumn 결과 값을 생성할 수 있다.
도 10은 본 발명의 일 실시예에서 제4 변환 값 및 인버스 Mixcolumn 결과 값을 생성하는 상태를 나타낸 도면이다. 도 10의 (a)를 보면, 첫 번째 바이트의 인코딩 값이 0×00인 경우, 인버스 S-box를 이용하여 0×96으로 변환할 수 있다. 도 10의 (b)를 보면, 제4 변환 값(0×96)에 인버스 Mixcolumn을 행렬 곱하여 인버스 Mixcolumn 결과 값을 생성할 수 있다.
참조 테이블 생성 모듈(123)은 인코딩 값을 인버스 S-box를 이용하여 제4 변환 값으로 변환하고, 제4 변환 값에 인버스 Mixcolumn을 행렬 곱하여 인버스 Mixcolumn 결과 값을 생성하는 과정을 기 설정된 횟수(인코딩 모듈(111)의 반복 횟수와 동일)만큼 반복할 수 있다.
참조 테이블 생성 모듈(123)은 상기 기 설정된 횟수만큼 반복한 결과 값을 인버스 T-matrix와 행렬 곱하여 인버스 T-matrix 결과 값을 생성할 수 있다. 참조 테이블 생성 모듈(123)은 인코딩 값의 첫 번째 바이트의 오프셋 값(예를 들어, 00)을 인버스 S-box를 이용하여 변환한 제5 변환 값과 인버스 T-matrix 결과 값을 XOR 연산하여 복호화의 중간 값을 생성할 수 있다. 예를 들어, 제5 변환 값이 0×96이고, 인버스 T-matrix 결과 값이 0×2E인 경우, 이를 XOR 연산하여 0×B8을 중간 값으로 생성할 수 있다. 여기서, 복호화의 중간 값은 비밀키에 S-box가 적용된 값(즉, 비밀키를 S-box로 변환한 값)일 수 있다.
이때, 참조 테이블 생성 모듈(123)은 복호화의 마지막 과정 즉, 인버스 S-box를 적용하는 과정은 제외함으로써, 비밀키의 노출을 방지할 수 있다. 즉, 인코딩 모듈(111)에서 비밀키의 값을 S-box를 이용하여 변환하여 제1 변환 값을 생성하였는데, 복호화 과정에서는 인버스 S-box를 적용하는 과정을 제외시키고 중간 값만을 추출함으로써 비밀키가 노출되는 것을 방지할 수 있다.
참조 테이블 생성 모듈(123)은 복호화의 중간값 및 기 생성된 연산 결과 테이블에 기초하여 참조 테이블을 생성할 수 있다. 개시되는 실시예에서는 비밀키가 노출되지 않는 관계로 연산 결과 테이블을 미리 생성한 후, 복호화의 중간값과 연산 결과 테이블을 이용하여 참조 테이블을 생성하게 된다.
구체적으로, 참조 테이블 생성 모듈(123)은 복호화의 중간값에 기초하여 연산 결과 테이블에 적용하도록 인덱스 값을 산출할 수 있다. 여기서, 산출되는 인덱스 값이 연산 결과 테이블의 제2 입력(비밀키와 관련된 값)이 될 수 있다. 참조 테이블 생성 모듈(123)은 복호화의 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출할 수 있다.
즉, 제1 입력(비밀키와 관련된 값과 연산하고자 하는 값)이 주어지는 경우, 참조 테이블 생성 모듈(123)은 복호화의 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출하고, 산출된 인덱스 값을 제2 입력으로 하여 제1 입력 및 제2 입력에 대응하는 연산 결과 테이블의 저장된 값을 참조 테이블의 값으로 추출할 수 있다. 참조 테이블 생성 모듈(123)은 하기의 수학식 1을 통해 중간 값으로부터 인덱스 값(즉, 제2 입력)을 산출할 수 있다.
(수학식 1)
j : 인덱스 값
mk : 복호화의 중간 값
AMD : Affine Matrix Decode
ACD : Affine Constants Decode
여기서, AMD 및 ACD는 기 설정된 모듈로 연산 및 생성자 값에 기초하여 S-box를 생성할 때 함께 생성될 수 있다.
도 11 및 도 12는 본 발명의 일 실시예에서 복호화의 중간값 및 기 생성된 연산 결과 테이블에 기초하여 참조 테이블을 생성하는 과정을 나타낸 도면이다. 도 11을 참조하면, 제1 입력으로 0×9A가 주어지고, 복호화의 중간 값이 0×B8인 경우, 참조 테이블 생성 모듈(123)은 도 11에 도시된 과정을 통해 제2 입력에 해당하는 인덱스 값을 산출할 수 있다. 즉, 인덱스 값은 AMD×(0×B8) + ACD = 0×8D 으로 산출할 수 있다.
다음으로, 도 12에 도시된 바와 같이, 참조 테이블 생성 모듈(123)은 제1 입력인 0×9A와 제2 입력인 인덱스 값 0×8D에 기초하여 해당 연산 결과 테이블의 저장된 값을 참조 테이블의 값(0×89)으로 추출할 수 있다. 일 실시예에서, 참조 테이블 생성 모듈(123)은 기 생성된 연산 결과 테이블 중 제1 입력(0×9A)에 대응하는 연산 결과 테이블을 추출한 후, 추출한 연산 결과 테이블에서 인덱스 값(0×8D)에 해당하는 값을 참조 테이블의 값(0×89)으로 추출할 수 있다. 이러한 과정을 인코딩 값의 모든 바이트에 대해 반복 수행하여 참조 테이블을 생성할 수 있다.
개시되는 실시예에 의하면, 암호화 장치(102)에서 평문 형태의 비밀키를 인코딩 하고 이를 암호화 한 후 복호화 장치(104)로 전달하고, 복호화 장치(104)에서 암호화 값을 복호화 하여 인코딩 값을 추출한 후 인코딩 값에 기초하여 참조 테이블을 생성함으로써, 전체 암복호화 과정에서 평문 형태의 비밀키가 노출되지 않도록 할 수 있게 된다.
본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 "모듈"은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아니다.
도 13은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술된 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 암호화 장치(102)일 수 있다. 또한, 컴퓨팅 장치(12)는 복호화 장치(104)일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10 : 컴퓨팅 환경
12 : 컴퓨팅 장치
14 : 프로세서
16 : 컴퓨터 판독 가능 저장 매체
18 : 통신 버스
20 : 프로그램
22 : 입출력 인터페이스
24 : 입출력 장치
26 : 네트워크 통신 인터페이스
100 : 화이트박스 암호화 시스템
102 : 암호화 장치
104 : 복호화 장치
111 : 인코딩 모듈
113 : 암호화 모듈
113-1 : 제1 치환부
113-2 : 제2 치환부
121 : 복호화 모듈
121-1 : 제1 역치환부
121-2 : 제2 역치환부
123 : 참조 테이블 생성 모듈

Claims (15)

  1. 화이트박스 암호의 비밀키 보호를 위한 방법으로서,
    암호화 장치에서, 평문 형태의 비밀키를 입력 받고, 상기 비밀키를 제1 암호화 알고리즘에 기초하여 인코딩하는 단계;
    상기 암호화 장치에서, 인코딩 값을 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화하는 단계; 및
    상기 암호화 장치에서, 암호화 값을 복호화 장치로 전달하는 단계를 포함하고,
    상기 인코딩하는 단계는,
    상기 평문 형태의 비밀키를 기 설정된 크기의 바이트로 입력 받는 단계;
    상기 바이트의 순서에 따라 오프셋 값을 설정하는 단계;
    상기 바이트의 순서에 따라 1 바이트 단위씩 비밀키를 인코딩하는 단계를 포함하는, 방법.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 제1 암호화 알고리즘은, AES(Advanced Encryption Standard) 알고리즘이고
    상기 제2 암호화 알고리즘은, 화이트박스 암호(White-box Cryptography) 알고리즘인, 방법.
  4. 청구항 3에 있어서,
    상기 인코딩하는 단계는,
    기 설정된 모듈로(modulo) 연산 및 생성자(generator) 값을 이용하여 T-matrix, S-box(substitution box), Mixcolumn, 및 인버스 S-box를 각각 생성하는 단계;
    상기 비밀키의 값을 상기 S-box를 통해 변환하여 제1 변환 값을 생성하는 단계;
    상기 비밀키의 오프셋 값을 상기 인버스 S-box를 통해 변환하여 제2 변환 값을 생성하는 단계;
    상기 제1 변환 값과 상기 제2 변환 값을 XOR(Exclusive OR) 연산하는 단계;
    상기 XOR 연산한 연산 값을 상기 T-matrix와 행렬 곱하여 T-matrix 결과 값을 생성하는 단계;
    상기 T-matrix 결과 값을 상기 S-box를 통해 변환하여 제3 변환 값을 생성하는 단계;
    상기 제3 변환 값을 상기 Mixcolumn과 행렬 곱하여 Mixcolumn 결과 값을 생성하는 단계; 및
    상기 제3 변환 값을 생성하는 단계 및 상기 Mixcolumn 결과 값을 생성하는 단계를 기 설정된 횟수만큼 반복하여 인코딩 값을 생성하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서,
    상기 암호화하는 단계는,
    상기 인코딩 값을 입력 받고, 상기 인코딩 값을 기 설정된 룩업 테이블 및 마스터 키에 기초하여 1차 치환하는 단계;
    상기 1차 치환된 값을 입력 받고, 상기 1차 치환된 값에 기 설정된 연산을 수행하여 2차 치환하는 단계; 및
    상기 1차 치환하는 단계 및 상기 2차 치환하는 단계를 기 설정된 횟수만큼 반복하여 암호화 값을 생성하는 단계를 포함하는, 방법.
  6. 청구항 5에 있어서,
    상기 방법은,
    상기 복호화 장치에서, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하는 단계; 및
    상기 복호화 장치에서, 상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 단계를 더 포함하는, 방법.
  7. 청구항 6에 있어서,
    상기 인코딩 값을 추출하는 단계는,
    상기 암호화 값을 입력 받고, 상기 암호화 값을 기 설정된 룩업 테이블 및 마스터 키에 기초하여 1차 역치환 하는 단계;
    상기 1차 역치환 된 값을 입력 받고, 상기 1차 역치환 된 값에 기 설정된 연산을 수행하여 2차 역치환 하는 단계; 및
    상기 1차 역치환 하는 단계 및 상기 2차 역치환 하는 단계를 기 설정된 횟수만큼 반복 수행하여 상기 인코딩 값을 추출하는 단계를 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 참조 테이블을 생성하는 단계는,
    기 설정된 크기의 제1 입력 및 제2 입력에 대해 기 설정된 연산에 의해 계산된 결과를 저장한 연산 결과 테이블을 생성하는 단계;
    상기 추출한 인코딩 값을 복호화 하는 과정에서 상기 비밀키가 노출되지 않도록 중간 값을 추출하는 단계; 및
    상기 추출한 중간 값 및 상기 생성된 연산 결과 테이블에 기초하여 상기 참조 테이블을 생성하는 단계를 포함하는, 방법.
  9. 청구항 8에 있어서,
    상기 중간 값을 추출하는 단계는,
    상기 모듈로 연산 및 상기 생성자 값에 기초하여 인버스 S-box, 인버스 Mixcolumn, 및 인버스 T-matrix를 생성하는 단계;
    상기 추출한 인코딩 값을 상기 인버스 S-box을 통해 변환하여 제4 변환 값을 생성하는 단계;
    상기 제4 변환 값을 상기 인버스 Mixcolumn과 행렬 곱하여 인버스 Mixcolumn 결과 값을 생성하는 단계;
    상기 제4 변환 값을 생성하는 단계 및 상기 인버스 Mixcolumn 결과 값을 생성하는 단계를 기 설정된 횟수만큼 반복하는 단계;
    상기 기 설정된 횟수만큼 반복한 결과 값을 상기 인버스 T-matrix와 행렬 곱하여 인버스 T-matrix 결과 값을 생성하는 단계;
    상기 추출한 인코딩 값의 기 설정된 오프 셋 값을 상기 인버스 S-box을 통해 변환하여 제5 변환 값을 생성하는 단계; 및
    상기 제5 변환 값과 상기 인버스 T-matrix 결과 값을 XOR 연산하여 상기 중간 값을 생성하는 단계를 포함하는, 방법.
  10. 청구항 8에 있어서,
    상기 참조 테이블을 생성하는 단계는,
    제1 입력을 입력 받는 단계;
    상기 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출하는 단계; 및
    상기 인덱스 값을 제2 입력으로 하여 상기 제1 입력 및 상기 제2 입력에 대응하는 상기 연산 결과 테이블의 저장된 값을 참조 테이블의 값으로 추출하는 단계를 포함하는, 방법.
  11. 화이트박스 암호의 비밀키 보호를 위한 방법으로서,
    복호화 장치에서, 암호화 장치로부터 평문 형태의 비밀키가 제1 암호화 알고리즘에 기초하여 인코딩 되고, 인코딩 된 값이 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화 된 암호화 값을 수신하는 단계;
    상기 복호화 장치에서, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하는 단계; 및
    상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 단계를 포함하며,
    상기 제1 암호화 알고리즘은, AES(Advanced Encryption Standard) 알고리즘이고, 상기 제2 암호화 알고리즘은, 화이트박스 암호(White-box Cryptography) 알고리즘이며,
    상기 참조 테이블은, 상기 화이트박스 암호 알고리즘에 사용되는 참조 테이블이고,
    상기 참조 테이블을 생성하는 단계는,
    기 설정된 크기의 제1 입력 및 제2 입력에 대해 기 설정된 연산에 의해 계산된 결과를 저장한 연산 결과 테이블을 생성하는 단계;
    상기 추출한 인코딩 값을 복호화 하는 과정에서 상기 비밀키가 노출되지 않도록 중간 값을 추출하는 단계; 및
    상기 추출한 중간 값 및 상기 생성된 연산 결과 테이블에 기초하여 상기 참조 테이블을 생성하는 단계를 포함하는, 방법.
  12. 삭제
  13. 삭제
  14. 청구항 11에 있어서,
    상기 참조 테이블을 생성하는 단계는,
    제1 입력을 입력 받는 단계;
    상기 중간 값에 기 설정된 연산을 수행하여 인덱스 값을 산출하는 단계; 및
    상기 인덱스 값을 제2 입력으로 하여 상기 제1 입력 및 상기 제2 입력에 대응하는 상기 연산 결과 테이블의 저장된 값을 참조 테이블의 값으로 추출하는 단계를 포함하는, 방법.
  15. 평문 형태의 비밀키를 입력 받고, 상기 비밀키를 제1 암호화 알고리즘에 기초하여 인코딩하고, 인코딩 값을 상기 제1 암호화 알고리즘과는 다른 제2 암호화 알고리즘에 기초하여 암호화하며, 암호화 값을 송신하는 암호화 장치; 및
    상기 암호화 장치로부터 상기 암호화 값을 수신하고, 상기 암호화 값을 복호화 하여 인코딩 값을 추출하며, 상기 추출한 인코딩 값에 기초하여 참조 테이블을 생성하되, 상기 비밀키가 인코딩된 상태를 유지하면서 상기 참조 테이블을 생성하는 복호화 장치를 포함하고,
    상기 암호화 장치는,
    상기 평문 형태의 비밀키를 기 설정된 크기의 바이트로 입력 받고, 상기 바이트의 순서에 따라 오프셋 값을 설정하며, 상기 바이트의 순서에 따라 1 바이트 단위씩 비밀키를 인코딩하는, 시스템.
KR1020230111580A 2023-08-24 2023-08-24 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템 KR102626974B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230111580A KR102626974B1 (ko) 2023-08-24 2023-08-24 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230111580A KR102626974B1 (ko) 2023-08-24 2023-08-24 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR102626974B1 true KR102626974B1 (ko) 2024-01-19

Family

ID=89717464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230111580A KR102626974B1 (ko) 2023-08-24 2023-08-24 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR102626974B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170019679A (ko) 2015-08-12 2017-02-22 장동훈 효율적인 화이트박스 암호 기반 암복호화 방법, 및 인증코드 생성 및 검증 방법
KR102301243B1 (ko) * 2020-06-15 2021-09-13 주식회사 스틸리언 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치
KR20230095750A (ko) * 2021-12-22 2023-06-29 국민대학교산학협력단 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170019679A (ko) 2015-08-12 2017-02-22 장동훈 효율적인 화이트박스 암호 기반 암복호화 방법, 및 인증코드 생성 및 검증 방법
KR102301243B1 (ko) * 2020-06-15 2021-09-13 주식회사 스틸리언 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치
KR20230095750A (ko) * 2021-12-22 2023-06-29 국민대학교산학협력단 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
쿤텍, 당신의 콘텐츠, 얼마나 안전하게 보호되고 있나요?, 네이버 블로그 (2020.04.06.)* *

Similar Documents

Publication Publication Date Title
CN101753292B (zh) 用于链接式加密模式的方法和设备
KR101328618B1 (ko) 보안성을 향상시키는 순열 데이터 변환
JP6519473B2 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
KR102136904B1 (ko) 공유 비밀키 생성 장치, 암호화 장치, 복호화 장치, 공유 비밀키 생성 방법, 암호화 방법, 복호화 방법, 및 프로그램
US20120121083A1 (en) Encryption apparatus and method
CA3051928A1 (en) Equivocation augmentation
JP2016513825A (ja) 安全通信方法および装置
RU2666281C2 (ru) Электронное устройство блочного шифрования, подходящее для обфускации
CN105184115A (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
WO2016067524A1 (ja) 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム
US8122075B2 (en) Pseudorandom number generator and encryption device using the same
JPWO2006019152A1 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
CN105281893A (zh) 用于引入白箱实现对串集合的依赖性的方法
JP2007019789A (ja) 乱数共有システムおよび方法
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
CN112152805A (zh) 一种认证加密方法、验证解密方法和通信方法
CN107493164B (zh) 一种基于混沌系统的des加密方法和系统
KR102626974B1 (ko) 화이트박스 암호의 비밀키 보호를 위한 방법 및 시스템
KR101583285B1 (ko) 확장 키를 이용한 블록 암호화 방법 및 그 방법에 따른 장치
KR101807259B1 (ko) 암호화 장치 및 방법
Jin et al. Low transmission overhead for polar coding physical-layer encryption
Nandan et al. AES security improvement using hybrid approach for S-box design
KR20110031822A (ko) 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant