I. 서론
암호화(Cryptographic) API는 개발자가 복잡한 암호화 알고리즘과 전자 서명 기능을 구현할 수 있도록 표준화된 접근 방식을 제공한다. 이를 통해 암호화에 대한 깊은 지식이 없어도 안전한 데이터 보호와 통신 채널 구축이 가능하지만, 다양한 설정과 옵션, 문서화의 부족으로 인해 개발자가 혼란을 겪거나 비효율적인 구현을 선택할 위험이 있다. 이러한 오류는 민감한 데이터를 보호하지 못하거나 보안 취약점을 초래할 수 있으므로, 암호화 API의 올바른 사용이 매우 중요하다.
이러한 문제를 해결하기 위해 CDRep[1], CryptoGuard[2], CryptoLint[3], FixDroid[4], BinSight[5]와 같은 다양한 암호화 API 오용 탐지 도구가 제안되었다. 이 도구들은 암호화 API의 취약점을 찾는 데 효과적이라는 점이 입증되었지만, 탐지 모델을 사용하기 위해 소스 코드를 모델 소유자에게 공유해야 한다는 점에서 기밀성 문제가 발생할 수 있다. 소스 코드에는 개발자가 노출시키고 싶지 않은 알고리즘, 보안 자격 증명 등 민감한 정보가 포함되어 있는 경우가 많다. 이러한 정보가 악의적인 내부자에 의해 유출되거나 데이터 유출로 이어질 수 있는 위험이 있어, 조직이 이런 유용한 보안 도구를 사용하는 데 주저할 수 있다.
이를 해결하기 위해, 본 연구에서는 프라이버시를 보호하는 암호화 API 오용 탐지 프레임워크를 제안한다. 이 프레임워크는 탐지 모델에 동형 암호를 사용하여, 소스 코드의 민감한 정보를 노출하지 않고도 오용 여부를 검출할 수 있다. 동형 암호는 데이터를 암호화된 상태로 유지하면서도 연산을 수행할 수 있어, 제3자에게 소스 코드나 입력 데이터를 제공하지 않고도 외부에서 안전하게 분석을 수행할 수 있다. 이러한 접근 방식은 입력 데이터, 소스 코드, 그리고 결과 값까지 보호할 수 있다는 점에서 정보 유출 위험을 최소화한다. 동형 암호 적용으로 인해 계산 비용이 증가할 수 있지만, 기존의 민감한 정보가 유출될 가능성을 최소화하고, 기밀성을 확보할 수 있다는 점에서 중요한 의미가 있다. 특히, 소스 코드와 같은 개인 소유물을 직접 제공할 필요 없이 안전하게 분석을 수행할 수 있으므로, 코드에 대한 분석이 필요한 환경에서 실질적인 대안이 된다. 또한, 일부 환경에서는 데이터셋이 부족하거나 클라이언트 측에서 모델을 운영하기 어려운 경우가 존재하기 때문에, 이러한 경우 동형 암호를 활용한 외부서비스의뢰가 더 적절할 수 있다.
II. 배경 지식
2.1 동형 암호 (Homomorphic encryption)
동형 암호는 암호화된 데이터를 해독하지 않고도 직접 연산할 수 있게 해주는 암호화방식이다. 데이터가 암호화된 상태에서도 덧셈, 곱셈 등 특정 연산을 수행할 수 있어, 민감한 정보를 노출하지 않으면서도 클라우드 컴퓨팅이나 데이터 분석과 같은 작업을 안전하게 처리할 수 있다.
CKKS (Cheon-Kim-Kim-Song) 스킴[6]은 실수나 복소수와 같은 부동소수점 데이터를 효율적으로 처리할 수 있는 동형 암호화 방식 중 하나이다. CKKS 스킴은 데이터 분석이나 머신러닝과 같은 응용 분야에서 자주 사용되며, 특히 프라이버시가 중요한 상황에서 암호화된 상태로 수학적 연산을 수행할 수 있도록 설계되었다. 이 스킴은 덧셈과곱셈 연산을 지원하며, 실수 데이터의 암호화와 동형 연산에 최적화되어 있어, 데이터 보안이 중요한 데이터 분석 및 인공지능 응용 분야에서 널리 사용되고 있다.
2.2 암호화 API 오용 취약점
본 연구에서는 CryptoLLM[7]에 설명된 암호화 API 오용 취약점 5가지에 대한 탐지를 목표로 하며, 오용 취약점은 다음과 같다.
취약점 1 - 약한 대칭 암호화 알고리즘/모드 사용. DES 알고리즘은 56비트 키 길이로 현대 보안 요구에 부적합하며, 브루트 포스(brute-force) 공격에 취약하다. 대신 AES 알고리즘을 사용해야 하며, ECB 모드는 패턴 노출로 인해 사용해서는 안 된다. 안전한 암호화 모드로 CBC, CTR, GCM을 권장한다.
취약점 2 - 예측 가능한 하드코딩된 암호화 키 사용. 예측 가능한 키는 쉽게 추측될 수 있어 보안에 취약하다. 암호화 키는 소스 코드에 하드코딩하지 않고, 별도의 구성 파일이나 키스토어에 안전하게 저장해야 한다.
취약점 3 – 키스토어(keystore)에 예측 가능한 하드코딩된 비밀번호 사용. 예측 가능한 비밀번호는 키스토어 보안을 위협할 수 있다. 안전한 비밀번호를 사용하고 이를 별도의 구성 파일이나 외부 키 관리 시스템을 통해 관리해야 한다.
취약점 4 - RSA에 짧은 키(< 2048 bits) 사용. RSA 알고리즘의 키 길이는 보안 수준에 직접적인 영향을 미치며, 최소 2048비트 이상의 키 길이를 사용해야 한다.
취약점 5 - 블록 암호 모드에서 예측 가능한 초기화 벡터(IV) 사용. 예측 가능한 IV는 암호화 우회를 초래할 수 있다. 각 메시지나 세션마다 고유하고 예측 불가능한 IV를 생성하기 위해 안전한 난수 생성기를 사용해야 한다.
III. 암호화 API 오용 탐지 프레임워크
3.1 프레임워크 개요
본 연구에서 제안하는 프라이버시 보호 암호화 API 오용 탐지 프레임워크는 네 가지 주요 단계로 구성되며, Fig. 1이 이를 나타낸다.
❶ 암호화 키 생성: 클라이언트 측에서 비밀 키(SK), 공개 키(PK), 연산 키(EK)와 같은 암호화 키를 생성한다.
❷ 코드 추출 및 임베딩: 클라이언트 측에서 오용을 탐지하고자 하는 APK 파일로부터 코드를 추출한다. 추출된 코드에 대해 전처리하고 이를 임베딩(embedding) 벡터로 변환한 후, 공개 키로 암호화하여 서버로 전달한다.
❸ 오용 탐지: 서버는 클라이언트로부터 받은 암호화된 임베딩 벡터를 사용하여 암호화 API 오용 탐지 모델을 실행한다. 탐지 모델은 동형 암호를 사용하여 암호화된 상태에서 벡터를 분석하고, 소스 코드의 오용 여부를 식별한다.
❹ 결과 복호화: 서버 측에서 암호화된 분석 결과를 클라이언트에게 전송하면, 클라이언트는 이를 비밀키로 복호화하여 최종 탐지 결과를 확인한다.
Fig. 1. Overview of Cryptographic API Misuse Detection Framework.
이 프레임워크는 동형 암호를 활용하여 클라이언트와 서버 간의 데이터 프라이버시를보장하며, 소스 코드의 보안성을 유지하면서도 효과적으로 암호화 API 오용을 탐지할 수 있는 기능을 제공한다.
3.2 코드 추출 및 임베딩
APK 파일로부터 코드를 추출하는 것은 CryptoLLM으로부터 제안된 방법론을 따른다. APK 파일을 디컴파일하여 소스 코드를 획득한 후, 프로그램 슬라이싱 기법을 통해 암호화 API를 사용하는 코드 라인을 식별한다. 암호화 코드 라인이 감지되면, 소스 코드에서 주석을 제거하고 제어 흐름 그래프(control flow graph)와 데이터 흐름 그래프(data flow graph)를 구축하여 관련된 제어 구조와 데이터 간의 관계를 분석한다. 데이터 흐름 그래프를 기반으로 역방향 슬라이싱을 수행하고, 제어 흐름 그래프에 대해서는 순방향 및 역방향 슬라이싱을 적용하여 코드 샘플을 생성한다. 마지막으로, 추상 구문 트리(abstract syntax tree)를 이용해 불필요한 코드 요소를 제거하고, 사용자 정의함수와 변수를 추상 표현으로 대체하여 코드를 단순화 한다. 이러한 전처리 작업을 통해 코드의 불필요한 복잡성을 줄이고, 핵심 기능적 요소만 남겨, 탐지 모델의 학습 효율성을 높인다.
전처리된 코드는 CodeT5+[8] 임베딩 특화 모델을 사용해 임베딩 벡터로 변환된다. CodeT5+ 임베딩 모델은 소스 코드의 문맥과 구조적 정보를 반영하여, 256차원 임베딩 벡터를 생성한다. 예를 들어, 10줄의 소스 코드가 있다면 이를 2줄 단위로 나누어 각각 임베딩을 수행할 수 있으며, 그 결과로 256차원 벡터 5개가 생성되어 최종적으로 256 * 5 크기의 벡터로 표현된다. 이러한 임베딩은 CNN 기반 탐지 모델이 요구하는 정형화된 입력 형식에 맞춰져 있어, 모델의 학습과 예측 효율성을 극대화할 수 있다. 또한, 이렇게 고정된 차원의 벡터로 임베딩하는 것은 CKKS 스킴이 지원하는 슬롯 수(number of slots) 제한을 효율적으로 활용하기 위함이다. CKKS 스킴은 데이터가 암호화된 상태에서도 연산을 가능하게 하지만, 동시에 제한된 슬롯 수 내에서만 연산이 가능하다. 만약 암호화하고자 하는 벡터의 크기가 슬롯 수를 넘어가게 되면, 암호문이두 개 이상으로 늘어나게 된다. 이는 연산량이 약 2배로 늘어나게 되며, 연산의 처리 속도가 2배 이상 느려지는 것을 의미한다.
3.3 동형암호 활용 CNN 모델
본 연구에서는 암호화 API 오용 탐지를 위해 동형 암호와 호환되는 CNN 모델을 제안한다. 일반적인 CNN 모델은 입력층, 여러 개의 은닉층, 출력층로 구성된다. 입력층은 데이터를 받아들이고, 은닉층에서는 합성곱(convolution)과 활성화(activation), 풀링(pooling) 등을 통해 특징을 추출하며, 출력층에서 최종 예측이나 분류가 이루어진다.
본 연구에서 제안하는 CNN 모델 구조는 하나의 합성곱층(convolutional layer), 하나의 깊이별 합성곱층(depthwise convolutional layer), 하나의 완전연결층(fully connected layer)으로 구성되어 있으며, 동형 암호로 암호화된 환경에서도 효율적으로 작동하도록 설계되었다. 특히, 동형 암호 환경에서는 계산 비용이 높은 풀링 연산을 대신해 깊이별 합성곱층을 사용한다. 이 방식은 각 입력 채널을 독립적으로 처리하여 계산 복잡도를 줄이고, 동형 암호가 지원하는 덧셈, 곱셈, 회전 연산을 활용해 효율적인 연산을 가능하게 한다.
제안된 모델은 암호화된 데이터 추론을 지원하며, 입력 데이터는 CKKS 스킴을 사용해 암호화된다. 임베딩 벡터는 CodeT5+ 모델을 사용하여 256차원으로 임베딩된 후, 일련으로 연결되어 암호화된다. 이처럼 고정된 차원의 벡터를 사용함으로써, CKKS 스킴이 가진 number of slots 제한을 효율적으로 활용할 수 있다. CNN 계층은 암호화된 입력 데이터를 처리하여 암호화된 출력 데이터를 생성하며, 클라이언트는 이를 복호화해 최종 결과를 얻는다.
기본 동형 암호 적용 CNN 모델의 구현은 UniHENN[14]에 기반하여 구현하였으며, 이는 CNN 모델이 CKKS 스킴으로 암호화된 상태에서 효율적이면서도 일반화된 구현이다.
합성곱층은 입력 데이터의 특징을 추출하는 역할을 한다. 암호화된 상태에서 효율적으로 합성곱 연산을 수행하기 위해, 다차원 커널을 벡터화하고, 덧셈, 곱셈, 회전 연산과 결합해 최적화된 암호화된 데이터 처리를 제공한다.
UniHENN은 CNN에 대한 일반화된 구현을 장점으로 갖고 있으나 깊이별 합성곱층은 구현되어 있지 않다. 이에 본 연구에서는 각 입력 채널에 대해 별도의 커널을 적용하고 CKKS 스킴의 효율성을 고려하여 깊이별 합성곱층을 새롭게 설계하였다. 깊이별 합성곱층은 각 입력 채널에 개별적으로 커널 연산을 수행함으로써 계산 복잡도를 줄이고, 제한된 동형 암호 연산 환경에서도 차원 축소를 효과적으로 수행할 수 있도록 구성된다. Fig. 2는 CKKS 스킴으로 암호화된 상태에서의 깊이별 합성곱층의 알고리즘을 나타낸다. 각 입력 채널에 대해 커널과의 곱셈, 회전 및 덧셈을 반복하여 출력을 생성하며, 마지막으로 편향값과 앞서 얻은 결과를 더해 최종 암호문을 반환한다. 이러한 구조는 max pooling과 같은 연산을 대체하여 입력 암호문의 특징을 추출하고, 출력 차원을 줄이는 역할을 수행한다.
Fig. 2. Depthwise Convolution Algorithm
완전연결층은 모든 뉴런이 서로 연결된 층으로, 입력 데이터를 처리해 최종 출력을 생성한다. 제안된 모델에서는 깊이별 합성곱층의 출력을 입력으로 받으며, 동형 암호 환경에서 효율적인 연산을 위해 요소별 연산을 사용해 간단하게 구현된다.
활성화 함수로는 세제곱 함수, f(x) = x3을 사용한다. 이는 ReLU와 같은 기존 활성화 함수가 CKKS 스킴에서 높은 곱셈 비용을 요구하는 반면, 세제곱 함수는 단 두 번의 곱셈만으로도 비선형성을 도입할 수 있어, 암호화된 상태의 연산 효율성을 크게 향상시키기 떄문이다.
이와 같은 구조를 가진 제안된 CNN 모델은 암호화 API 오용을 효율적으로 탐지하며, 민감한 정보의 기밀성을 유지하는 동시에 보안 분석의 정확도를 보장한다.
IV. 성능 평가
4.1 실험 세팅
4.1.1 데이터셋
본 연구에서는 CryptoLLM 연구에서 제공하는 데이터셋을 활용한다. 이 데이터셋은 AndroZoo[9]로부터 수집된 80000개의 APK 파일을 기반으로 구성되어 있으며, CryptoGuard[2], CogniCrypt[10], SpotBugs[11]를 사용하여 초기 레이블링이 이루어졌다. 레이블이 지정된 데이터는 코드 슬라이싱과 중복 제거 과정을 거치고, 추가적으로 MASC[12] 프레임워크를 사용해 다양한 변형이 적용되었다. 최종 데이터셋은 총 97962개의 코드 샘플로 구성되어 있으며, 17661개의 원본 코드 샘플(8689개의 정상, 8972개의 오용)과 80301개의 변형된 샘플(32329개의 정상, 47972개의 오용)로 이루어져 있다. 전체 코드 샘플의 96.88%가 64줄 이하, 99.45%가 128줄 이하의 코드 샘플이다.
데이터셋은 무작위로 학습, 검증, 테스트 셋으로 각각 80%, 10%, 10%의 비율로 나누었고 모델의 탐지 정확도를 평가하였다.
4.1.2 모델 구조
CNN 기본 구조는 Fig. 3과 같으며, 16개의 필터와 높이가 5인 단일 커널을 갖춘 합성곱 층을 포함한다. 다음 층으로 깊이별 합성곱 층이고, 두 개의 합성곱 층 사이에 활성화 함수로는 f(x) = x3을 사용한다. 마지막 층은 완전연결 층으로 이루어져 있다. Adam 옵티마이저를 사용하며, 학습률은 0.001, 배치 크기는 32로, 100 epoch 동안 학습한다. 손실 함수로는 교차 엔트로피 손실을 채택하였다.
Fig. 3. Model architecture.
4.1.3 동형 암호 세팅
동형 암호화된 CNN을 구현하기 위해 SEAL-Python[13] 라이브러리를 사용하였다. CKKS 스킴을 활용하였으며, 동형 암호 파라미터는 Table 1과 같고 이는 128 bits 보안을 만족한다.
Table 1. CKKS scheme settings.
앞서 설명했듯이 CodeT5+임베딩 모델의 출력 차원은 256이고, 데이터셋의 99.45%가 128줄 이하이다. 이를 고려하여 각 코드 샘플을 2줄 단위로 임베딩하였고, 이를 일렬로 이어 붙인 후 암호화하여 모델의 입력 데이터로 활용하였다.
4.1.4 실험 환경
실험은 64비트 Ubuntu 18.04 시스템에서 수행되었으며, 두 개의 Intel Xeon E5-2687W v3 @3.10GHz CPU와 256GB RAM, 네 개의 NVIDIA V100 GPU를 갖추고 있다.
4.2 실험 결과
4.2.1 Pooling vs Depthwise Convolution
Table 2의 결과에 따르면, Max Pooling을 사용했을 때 모델의 성능이 가장 높은 것으로 나타난다. Max pooling 설정에서 TPR은 0.981, TNR은 0.979, F1 스코어는 0.980, 정확도는 0.980으로, 모든 성능 지표에서 가장 우수한 결과를 보여준다. 반면, 깊이별 합성곱을 사용하는 Default 모델에서 TPR 0.982, TNR 0.974, F1 스코어 0.978, 정확도 0.978로, Max pooling에 비해 약간 낮은 성능을 보인다. 그러나 이 차이는 크지 않아, Default 모델도 여전히 높은 성능을 유지하고 있다. Avg Pooling을 사용한 경우에는 TPR 0.967, TNR 0.973, F1 스코어 0.969, 정확도 0.970으로, 다른 설정들에 비해상대적으로 낮은 성능을 보인다.
Table 2. Model performance in various settings. Avg: Average pooling, Max: Max pooling, No act: No activation, TPR: True positive rate, TNR: True negative rate, Acc: Accuracy.
이 결과는 Max Pooling이 성능 면에서 가장 우수하지만, 깊이별 합성곱을 사용한 Default 모델도 거의 비슷한 성능을 제공한다는 점에서 주목할 만하다. 성능 차이가 크지 않기 때문에, 모델의 구조와 목표에 따라 깊이별 합성곱을 사용해도 좋은 결과를 얻을 수 있다. 특히, 동형 암호화 환경에서는 Max 연산의 구현이 어려워 깊이별 합성곱을 사용하는 것이 더 실용적일 수 있다.
4.2.2 Activation Function
ReLU 활성화 함수를 사용한 모델은 Table 2에서 TPR 0.978, TNR 0.980, F1 스코어 0.979, 정확도 0.979로 가장 높은 성능을 기록하였다. 이는 ReLU가 비선형성을 효과적으로 반영하여 모델의 학습 능력을 향상시킨 결과로 볼 수 있다. 반면, Default 설정은 세제곱 함수를 활성화 함수로 사용하여 TPR 0.982, TNR 0.974, F1 스코어 0.978, 정확도 0.978로 나타났다. ReLU에 비해 성능이 약간 낮지만, 큰 차이가 없음을 알 수 있다. 특히, 동형 암호화된 환경에서는 세제곱 함수가 계산 효율성 면에서 유리하여, ReLU와 유사한 성능을 제공하면서도 계산 비용이 덜 든다. 활성화 함수를 사용하지 않은 No act의 경우는 다른 두 설정에 비해 성능이 떨어졌다. TPR 0.938, TNR 0.890, F1 스코어 0.915, 정확도 0.917로 모든 지표에서 낮은 결과를 보였다. 이는 활성화 함수가 없을 때 모델이 복잡한 패턴을 학습하는 데 한계가 있음을 보여준다.
결론적으로, ReLU가 가장 높은 성능을 제공하지만, 동형 암호화 상태에서 ReLU의 구현은 계산 비용이 매우 높다. 또한 Default 세팅의 TPR이 가장 높다. 따라서, 계산 비용과 탐지의 정확성을 고려할 때 세제곱 함수를 사용하는 Default 설정이 적절한 대안이 될 수 있다.
4.2.3 Filter and Kernel
Fig. 4는 필터 개수와 커널 높이에 따른 F1 스코어의 변화를 보여준다. 두 가지 필터 개수 설정(8개와 16개)에 대해 커널 높이를 1부터 10까지 변화시키며 F1 스코어를 측정한 결과, 필터 개수가 증가함에 따라 성능이 개선되는 경향을 확인할 수 있다. 특히, 필터의 개수가 16개이고 커널 높이가 5일때 가장 높은 F1 스코어를 기록하며 최적의 성능을 보여준다. 필터가 8개일 때는 커널 높이가 증가함에 따라 성능이 꾸준히 향상되지만, 필터가16개인 경우 전반적으로 더 높은 성능을 유지한다. 따라서, 커널 높이와 필터 개수는 모델의 성능에 중요한 영향을 미치며, 필터 개수를 16개로 설정하고 커널 높이를 5로 설정하는 것이 최적의 조합임을 알 수 있다.
Fig. 4. Impact of filter size and kernel height.
4.2.4 Performance Comparison with SOTA Model
CryptoLLM은 SOTA (state-of-the-art) 암호화 API 오용 탐지 모델이며, 오용 탐지를 위해 LLM을 이용한 논문이다. CryptoLLM은 실험에서 높은 성능을 보여었으며, 특히기존의 모델들과 비교하여 더 우수한 정확도를 기록함으로써 성능 측면에서 경쟁력을 입증하였다. CryptoLLM은 앞서 언급된 데이터셋에서 F1 스코어 0.988을 달성하였고,반면 Table 2에 나와 있는 깊이별 합성곱을 사용하는 Default 모델은 0.978을 기록하였다. Default 모델은 동형 암호를 적용한 모델로, 성능은 다소 떨어지지만 데이터가 암호화된 상태에서 연산이 가능하여 프라이버시가 보장된다. 따라서, Default 모델은동형 암호를 사용함으로써 개인정보 보호를 중시하는 환경에서 유용하며, 비록 F1 스코어에서 소폭의 성능 저하가 있지만 이는 프라이버시 보장을 위한 합리적인 선택이라고 할 수 있다.
4.2.5 Processing Time
Table 3은 동형 암호로 암호화된 모델의 신경망 각 층에서 소요되는 계산 시간을 초 단위로 나타내고 있다. 성능 측정 모델의 구조는 합성곱층, 활성함수, 깊이별 합성곱층, 완전연결층으로 구성되어 있으며, 앞선 실험에서 가장 성능이 좋았던 필터 16개, 커널 높이가 5인 모델이다. 표에서 Conv는 합성곱층, Cubic은 활성화 함수로 사용된 f(x) = x3, Depthwise conv는 깊이별 합성곱층, 그리고 FC는 완전연결층을 의미한다. 각 층의 계산 시간은 해당 연산이 수행되는 데 걸리는 평균 시간과 그 표준편차를 함께 보여준다. Total은 모델이 한 번의 전방향 추론을 완료하는 데 걸리는 총 시간을 나타낸다.
Table 3. Computation times (in seconds).
합성곱층이 6.43초(표준편차 0.07)로 가장 많은 시간을 소비하는 것으로 나타났으며, 이는 전체 계산 시간에서 가장 큰 비중을 차지한다. 이는 합성곱층이 필터를 사용해 입력 데이터로부터 특징을 추출하는 과정에서 연산이 집중되기 때문이다. 반면, 활성화 함수로 사용된 세제곱 함수는 1.46초(표준편차 0.02)로, 상대적으로 적은 계산 시간을 요구한다. 깊이별 합성곱층은 2.95초(표준편차 0.11)로, 일반 합성곱층보다 효율적인 연산을 수행하면서도 중요한 특징을 추출한다. 완전연결층의 계산 시간은 0.37초(표준편차 0.01)로 가장 짧았으며, 이는 이 층이 입력 노드와 출력 노드 간의 단순한 가중치 연산으로 이루어져 있기 때문이다. 이 결과는, 동형 암호화로 인한 추가적인 계산 비용에도 불구하고, 모델이 효율적으로 설계되어 있어 전반적인 처리 시간이 비교적 짧다는 것을 보여준다. 특히, 동형 암호 환경에서도 모델이 실시간 처리가 가능한 수준의 속도를 유지하고 있다는 점은 매우 긍정적이다. 이는 모델이 암호화된 데이터를 안전하게 처리하면서도 성능 저하를 최소화할 수 있도록 최적화되었음을 보여준다.
V. 결론
본 연구에서는 프라이버시 보호를 고려한 암호화 API 오용 탐지 프레임워크를 제안하고, 동형 암호화를 활용하여 민감한 정보를 노출하지 않고도 효과적으로 보안 취약점을 탐지할 수 있음을 입증하였다. 실험 결과, 제안된 CNN 모델은 다양한 설정에서도 높은 탐지 정확도를 유지하며, 특히 동형 암호환경에서의 효율성을 극대화하는 구조적 최적화를 통해 실시간 처리가 가능함을 보여주었다. 이러한 연구는 민감한 정보를 보호하면서도 안전한 소프트웨어 개발을 위한 유용한 도구로 활용될 수 있다.
참고문헌
- S. Ma, D. Lo, T. Li, and R. H. Deng, "Cdrep: Automatic Repair of Cryptographic Misuses in Android Applications," Proceedings of the 11thACMon Asia conference on computer and communications security, pp. 711-722, May. 2016.
- S. Rahaman, Y. Xiao, S. Afrose, F. Shaon, K. Tian, M. Frantz, M. Kantarcioglu, D. Yao, "Cryptoguard: High Precision Detection of Cryptographic Vulnerabilities in Massive-Sized Java Projects," Proceedings of the2019 ACM SIGSAC Conference on Computer and Communications Security, pp. 2455-2472, Nov. 2019.
- M. Egele, D. Brumley, Y. Fratantonio, C. Kruegel, "An Empirical Study of Cryptographic Misuse in Android Applications," Proceedings of the 2013 ACMSIGSAC Conference on Computer &Communications Security, pp. 73-84, Nov. 2013.
- D.C. Nguyen, D. Wermke, Y. Acar, M. Backes, C. Weir, S. Fahl, "A Stitch in Time: Supporting Android Developers in Writing Secure Code," Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, pp. 1065-1077. Oct. 2017.
- I. Muslukhov, Y. Boshmaf, K. Beznosov, "Source Attribution of Cryptographic API Misuse in Android Applications," Proceedings of the 2018 on Asia Conference on Computer and Communications Security, pp. 133-146. May. 2018.
- J. H. Cheon, A. Kim, M. Kim, and Y. Song, "Homomorphic Encryption for Arithmetic of Approximate Numbers," Proceedings of ASIACRYPT 2017: 23rd International Conference on the Theory and Applications of Cryptology and Information Security, pp. 409-437, Dec. 2017.
- H. Baek, M. Lee, H. Kim, "Crypto-LLM: Harnessing the Power of LLMs to Detect Cryptographic API Misuse," European Symposium on Research in Computer Security, pp. 353-373, Sep. 2024.
- Y. Wang, H. Le, A.D. Gotmare, N.D. Bui, J. Li, S.C. Hoi, "CodeT5+: Open Code Large Language Models for Code Understanding and Generation," ArXiv Preprint, 2023.
- K. Allix, T.F. Bissyande, J. Klein, Y. Le Traon, "Androzoo: Collecting Millions of Android Apps for the Research Community," Proceedings of the 13th International Conference on Mining Software Repositories, pp.468-471, May. 2016.
- S. Kruger, S. Nadi, M. Reif, K. Ali, M. Mezini, E. Bodden, F. Gopfert, F.Gunther, C. Weinert, D. Demmler, others, "Cognicrypt: Supporting Developers in Using Cryptography," in:2017 32nd IEEE/ACM International Conference on Automated Software Engineering, pp. 931-936, Oct. 2017.
- Github, "SpotBugs" https://spotbugs.github.io/, Oct. 2024.
- A.S. Ami, S.Y. Ahmed, R.M. Redoy, N. Cooper, K. Kafle, K. Moran, D. Poshyvanyk, A. Nadkarni, "MASC: A Tool for Mutation-Based Evaluation of Static Crypto-API Misuse Detectors," Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 2162-2166, Nov. 2023.
- Github, "SEAL-Python" https://github.com/Huelse/SEAL-Python, Oct. 2024.
- H. Choi, J. Kim, S. Kim, S. Park, J. Park, W. Choi, H. Kim, "UniHENN: Designing Faster and More Versatile Homomorphic Encryption-based CNNs without im2col," IEEE Access, vol. 12, pp. 109323-109341, 2024.