Core Concepts
양자 컴퓨터를 활용하여 고전 프로그램의 형식적 검증을 가속화하는 방법을 탐구한다.
Abstract
이 논문은 양자 컴퓨터를 사용하여 고전 프로그램의 형식적 검증을 가속화하는 방법을 탐구한다.
프로그래밍 오류, 예를 들어 메모리 누수, 널 포인터 역참조, 0으로 나누기 등은 보안 취약점의 주요 원인이 된다. 이러한 오류를 발견하기 위해 코드에 결함이 없음을 검증하고자 한다.
제안하는 접근 방식에서는 코드 스니펫과 원치 않는 동작에 대해 SAT 인스턴스를 생성한다. 이 인스턴스는 해당 동작이 코드에 존재할 경우에만 만족된다. 이를 다시 최적화 문제로 변환하여 양자 컴퓨터에서 해결한다. 이 접근 방식은 비대칭적으로 다항식 속도 향상 잠재력을 가지고 있다.
메모리 접근 위반, 오버플로우 등의 일반적인 오류와 특수한 속성, 솔루션 수, 구조를 가진 합성 인스턴스를 다양한 솔버로 테스트하고 양자 장치에서 시도한다.
양자 근사 최적화 알고리즘(QAOA), 그로버 알고리즘의 응용인 양자 단일값 변환(QSVT)을 사용하여 최적의 솔루션, 즉 만족스러운 할당을 찾는다.
Stats
메모리 접근 위반, 오버플로우 등의 일반적인 오류는 17개의 변수를 가진 문제에서 너무 크기 때문에 QSVT 구현으로는 해결할 수 없었다.
14개의 변수를 가진 덧셈 문제도 QSVT로는 해결할 수 없었지만, 다른 솔버로는 성공했다.
10개의 변수를 가진 프로그램 흐름과 지표 문제는 QSVT로 해결할 수 있었다.
4개의 변수를 가진 OR(3) 문제는 QSVT로 해결할 수 없었지만, 다른 솔버로는 성공했다.
2개의 변수를 가진 XOR(2) 문제와 7개의 변수를 가진 XOR(3) 문제, 6개의 변수를 가진 Unique 문제, 8개의 변수를 가진 Semi-Unique 문제는 모든 솔버로 해결할 수 있었다.
Quotes
"프로그래밍 오류, 예를 들어 메모리 누수, 널 포인터 역참조, 0으로 나누기 등은 보안 취약점의 주요 원인이 된다."
"제안하는 접근 방식에서는 코드 스니펫과 원치 않는 동작에 대해 SAT 인스턴스를 생성한다. 이 인스턴스는 해당 동작이 코드에 존재할 경우에만 만족된다."
"이 접근 방식은 비대칭적으로 다항식 속도 향상 잠재력을 가지고 있다."