디지털 라이브러리[ 검색결과 ]
기호 실행의 성능 극대화를 위한 최적의 시드 선택 기법
http://doi.org/10.5626/JOK.2025.52.7.578
기호 실행은 테스트 케이스를 효과적으로 생성하여 프로그램의 실행 경로를 최대한 넓게 탐색하고자 하는 유망한 소프트웨어 테스팅 기술이다. 그러나 경로-조건식 풀이에 사용되는 높은 비용은 기호 실행의 대표적 한계로 지적된다. 이를 극복하기 위한 방안 중 하나는, 이미 생성된 테스트 케이스를 기호 실행 도구의 시드 입력으로 재사용하여 그 도구의 경로-조건식 풀이 횟수를 줄이는 것이다. 이 접근법의 효과성은 어떤 테스트 케이스를 시드 입력으로 사용할지에 따라 결정된다. 본 논문에서는 생성된 테스트 케이스들을 군집화하고 각 군집들의 특성을 기반으로 가장 잠재력이 높은 군집을 골라 그 군집 내 최적의 시드 입력을 선택하는 기법을 통해 기호 실행의 분기 커버리지 성능을 높이는 방법을 제안한다. 그 결과, 제안한 기법은 동일한 테스팅 시간동안 기존 기호 실행 도구보다 평균적으로 42.0%의 더 높은 분기 커버리지를 달성하는 데 성공하였다.
RTL 수준 프로세서 구현으로부터의 ISA 명세 자동 추출 기법
http://doi.org/10.5626/JOK.2023.50.10.827
응용 특화 프로세서들은 목표 도메인에서의 성능 극대화를 위해 자주 쓰이는 연산들을 위한 특화 명령어들을 가진다. 응용 특화 프로세서를 위한 프로그램은 특화 명령어를 사용하기 때문에 이들의 의미명세가 있어야 기호 실행기 등 고급 소프트웨어 분석 도구를 적용하는 것이 가능해진다. 이에 이 연구에서는 프로세서 구현 과정에서 반드시 작성해야 하는 레지스터 전송 레벨(RTL) 수준 프로세서 구현으로 부터 명령어의 의미(semantics)을 자동으로 추출하는 시스템인 SemTracter를 개발하였다. SemTracter는 프로세서의 RTL을 기호 실행해서 각 명령어의 의미명세를 얻고 이를 ISA 명세 작성을 위해 개발된 언어인 Sail로 표현한다. 개발된 SemTracter는 간단한 구현된 5-stage RISC-V 프로세서로부터 몇 가지 명령어의 의미명세를 성공적으로 추출하였으며, 이는 직접 사람이 작성한 명세와 비교하여 일치하는 것을 확인하였다.
고유명사 기호화를 통한 신경망기반 한영 번역
http://doi.org/10.5626/JOK.2021.48.10.1084
신경 기계 번역 분야는 딥러닝의 발전과 함께 성능이 발전하고 있지만, 이름, 신조어, 특정 그룹 내에서만 통용되는 단어 등과 같이 고유명사들이 들어간 문장의 번역이 정확하지 않은 경우들이 있다. 본 논문은 고유명사가 들어간 문장의 번역 성능 개선을 위해 최근 제안된 번역 모델인 Transformer Model에 추가적으로 한영 고유명사 사전과 고유명사 기호화 방식을 사용한다. 제안된 방식은 학습에 사용되는 문장의 단어들 중 일부를 고유명사 사전을 이용하여 기호화하고, 기호화된 단어들을 포함한 문장들로 번역 모델을 학습시킨다. 새로운 문장 번역시에도 고유명사 사전을 이용하여 기호화하고 번역후 복호화 하는 방식으로 번역을 완성한다. 제안된 방식의 성능을 검증하기 위해 고유명사 기호화를 사용하지 않은 모델과 함께 비교 실험하였고, BLEU 점수를 통해 수치적으로 개선되는 경우들도 확인했으며, 몇가지 번역 사례들도 상용서비스 결과들과 함께 제시했다.
콘콜릭 테스팅 기반 스마트 컨트랙트 보안약점 분석기
http://doi.org/10.5626/JOK.2021.48.6.668
이더리움은 대표적인 블록체인 기반 암호화폐 플랫폼으로, 튜링 완전 언어인 솔리디티를 제공하여 다양한 응용을 위한 스마트 컨트랙트를 개발하는데 활용될 수 있다. 본 논문은 콘콜릭 테스팅 기법을 사용하여 스마트 컨트랙트 내의 보안약점을 사전에 찾아내는 분석기를 제시한다. 심볼릭 수행과 테스팅 기법이 합쳐진 콘콜릭 테스팅은 일반적인 정적 분석과 비교하여 오탐이 없는 심볼릭 수행의 장점을 유지하면서, 심볼릭 수행보다 성능 면에서 효율적인 장점이 있다. 또한, 개발된 분석기는 이더리움의 실행 환경인 게스 테스트넷을 사용하여 실제적인 수행상황을 최대한 반영하여 동작한다. 분석기는 정수 넘침과 처리되지 않은 예외 보안약점의 검출을 지원하며, 구현 결과에 대하여 기존 분석기와의 비교를 통해 개발된 분석기의 성능을 분석하였다.
뉴럴-심볼릭 구조 기반의 관계 추출
http://doi.org/10.5626/JOK.2021.48.5.533
딥러닝은 자연어처리 분야에서 우수한 성능을 보이고 있다. 하지만 우수한 성능을 달성하려면 많은 학습 데이터와 긴 학습 시간이 필요하다. 우리는 관계 추출 문제에 대하여 뉴럴-심볼릭 방법을 이용하여 적은 학습 데이터 환경에서 딥러닝의 성능을 능가하는 방법을 제안한다. 규칙 결과와 딥러닝 결과와의 불일치도를 사용하는 구조를 설계하였다. 또한 수렴속도를 향상시키기 위해서 논리 규칙 필터링을 제안하고 규칙의 성능을 높이기 위해 문맥을 추가하였다. 제안 구조는 적은 학습 데이터에 대해서 우수한 성능을 보였으며, 빠른 성능 수렴이 이루어지는 것을 확인하였다.
뉴로 심볼릭 기반 규칙 생성을 통한 지식 완성 기법
http://doi.org/10.5626/JOK.2021.48.4.425
지식 그래프는 실세계의 지식을 다양한 소스로부터 수집하여 구조화된 방식으로 표현한 것이다. 지식 그래프는 데이터들 간의 관계를 표현한 네트워크로서 인공지능 기술에 접목되어 다양하게 활용되고 있지만, 엔티티 또는 엔티티 사이의 링크가 누락되어 지식의 불완전성에 대한 문제가 존재한다. 이러한 문제 해결을 위해 자동 지식 완성 기법 연구가 중요하게 요구되며, 임베딩 기법을 사용하거나 딥러닝을 활용한 연구와 온톨로지를 이용한 심볼릭 규칙 추론을 통한 지식 완성 수행과 같은 다양한 연구들이 진행되었다. 이러한 방식을 통해 효율적으로 자동 지식 완성을 수행하지만 딥러닝 방식은 데이터 기반의 처리방식으로 인해 대량의 학습 데이터가 요구되며, 결과에 대한 설명이 불가능한 문제점이 있다. 그리고 온톨로지 기반의 방식은 전문가에 의해 정의된 온톨로지 및 규칙이 필요하다는 문제가 존재한다. 따라서 본 논문에서는 뉴로 심볼릭 방식을 이용하여 데이터에 내포된 규칙을 명시적으로 추출하여 자동 지식 완성방법을 제안한다. 규칙 추출을 위해 심볼릭 방식의 단일화(unification) 기반의 릴레이션 임베딩 경로를 구현하고, 이에 대한 손실 함수를 정의하여 자동으로 규칙을 생성한다. 기존의 임베딩 기법에 비하여 뉴로 심볼릭 방식은 속도와 성능이 더 우월함을 보여준다. 제안하는 방법의 성능을 측정하기 위해 Nations, UMLS, Kinship 데이터 셋을 대상으로 최신 지식 완성 연구와 비교 실험을 진행하였으며, 학습 시간이 크게 감소했고, 평균적으로 성능이 37.5%p 증가한 것을 확인하였다.
커버리지 달성 성능 향상을 위한 반복 횟수를 제한하는 Concolic 테스팅 경로 탐색 기법
http://doi.org/10.5626/JOK.2021.48.2.201
본 논문은 Concolic 테스팅에서 실행 경로 내에 동일 분기문의 반복 횟수를 제한한 후 점진적으로 제한 횟수를 증가하는 새로운 탐색 전략을 제안하고, 이를 실제 테스트 생성에 적용하여 분기 커버리지 달성을 평가한 결과를 소개한다. 제안하는 탐색 전략인 반복 횟수 제한 탐색은 Concolic 탐색에 있어서 반복 횟수를 늘리는 방향으로의 실행 경로 탐색에 앞서, 반복 횟수가 제한된 상황 아래에서 이전에 탐색하지 않은 실행 경로를 먼저 탐색하게 우선 순위를 조정함으로써, 제한된 Concolic 테스팅 탐색 시간내에 다양한 실행 상황을 방문하도록 유도한다. 본 연구에서는 제안한 탐색 전략을 기존에 개발된 3종의 탐색 전략을 기반으로 적용하여 CREST 도구에 구현하였다. 4개의 오픈소스 C 프로그램을 대상으로 실험한 결과, 본 연구에서 제안하는 반복 횟수 제한 탐색 기법이 기존의 탐색 전략보다 높은 분기 커버리지를, 보다 짧은 시간 내에 달성함을 확인할 수 있었다.
국방 무기 체계 SW 품질 향상을 위해 Concolic 테스팅을 통한 테스트 자동 생성
http://doi.org/10.5626/JOK.2019.46.9.926
국방 무기 체계 SW 품질 향상을 위해 노동집약적 수작업 SW 테스트 관행이 아닌, 테스트 입력을 자동으로 그리고 체계적으로 생성하는 것이 필요하다. 본 연구는 concolic 테스팅을 국방 무기 체계 SW에 적용해 높은 커버리지의 테스트 입력값을 효과적으로 생성하고, 결함을 발견하여 SW의 품질향상에 기여하였다. 프로그램의 복잡성이 크고 전체 실행 경로가 많은 프로그램의 경우, concolic 테스팅의 효율을 높일 수 있는 방법(4개의 탐색 전략, LIA 로직)을 제안하였다. 또한, 실무자들이 concolic 테스팅을 확장 적용할 수 있도록 심볼릭 모델링 방법을 예시로 제안하였다.
난독화된 악성코드 판별을 위한 2차원 배열 기반의 기술 연구
http://doi.org/10.5626/JOK.2018.45.8.769
일평균 20만개 이상의 악성코드가 출현하고 있으며, 대부분의 침해사고는 악성코드를 이용하여 발생한다. 그런데, 공격자의 악성코드 제작기술이 점차 지능화되고 있으며 역 공학 분석을 방지하기 위해 패킹이나 암호화를 하여 악성코드를 제작한다. 정적 분석의 경우 분석 파일이 난독화가 되면 분석을 하는데 한계가 있으며, 이에 대응할 수 있는 방안이 필요하다. 본 논문에서는 난독화 시에도 악성코드를 판별할 수 있는 방안으로 문자열, 심볼, 엔트로피 기반 접근 방법을 제시하였다. 특히, 고정된 feature-set 뿐 아니라, 고정되지 않은 Feature-set 처리를 위해 2차원 배열을 적용하였으며, 15,000개의 악성/정상 샘플을 DNN(Deep Neural Network)를 통해 검증을 진행하였다. 본 연구는 향후 여러 악성코드 탐지기법과 연계되어 동작 시 보완적인 형태로 동작할 것으로 예상하며, 난독화된 악성코드 변종 분석에서 활용 가능할 것으로 기대한다.
안드로이드 커널 모듈 취약점 탐지를 위한 자동화된 유닛 테스트 생성 기법
본 논문에서는 안드로이드 커널 모듈의 취약점을 탐지하기 위한 자동 유닛 테스트 생성 기법을 제안한다. 안드로이드 커널 모듈의 각 함수를 대상으로 테스트 드라이버/스텁 함수를 자동 생성하고 동적 기호 실행 기법을 사용하여 테스트 입력 값을 자동으로 생성한다. 또한 안드로이드 커널 모듈의 함수 포인터와 함수 선행 조건을 고려하지 않은 테스트 생성으로 인한 거짓 경보를 줄이기 위해 정적 분석을 통한 함수 포인터 매칭 기법과 def-use 분석을 사용한 함수 선행 조건 생성 기법을 개발하였다. 자동 유닛 테스트 생성 기법을 안드로이드 커널 3.4 버전의 세 모듈에 적용한 결과 기존에 존재하던 취약점을 모두 탐지할 수 있었으며 제안한 거짓 경보 감소 기법으로 평균 44.9%의 거짓 경보를 제거할 수 있었다.