양자 보안 알고리즘

ClassBinu·2024년 5월 28일
0

양자 컴퓨팅

목록 보기
14/17

oqs-provider

기존 보안 관련해서 OpenSSL이 다양한 보안 알고리즘을 제공해 주는 오픈소스로 사용됐다.
그런데 양자 컴퓨터가 등장하고 말았고, OpenSSL에서 제공하는 전통적인 보안 알고리즘(특히 RSA와 같은 소수 기반)은 양자 공격에 취약하다.

그래서 새로운 양자 내성 암호화 알고리즘이 필요하다.
그 중 oqs-provider는 양자 내성 암호화 알고리즘을 제공한다.

oqs-provider에서 제공하는 양자 내성 암호화 알고리즘은 크게 두 가지 종류이다.

KEM(키 교환 메커니즘) 알고리즘

TLS 1.3에서 사용가능하다.
BIKE, CRYSTALS-Kyber, FrodoKEM 등이 있다.

서명 알고리즘

데이터의 무결성과 인증을 보장하는 데 사용된다.
CRYSTALS-Dilithium, SPHINCS, Falcon 등이 있다.

양자 보안 알고리즘을 어떻게 씀?

OpenSSL의 프로바이더 인터페이스를 통해 통합됨!
그래서 기존 암호 방식과 함께 쓸 수도 있고, 양자 내성 알고리즘만 따로 쓸 수도 있음.
즉, 개발자는 기존 OpenSSL API를 사용해서 양자 보안 기능을 쉽게 사용할 수 있는 것!
(쉽게 말하면 의존성 주입처럼 컨트롤러는 동일한테 내부 서비스 로직만 새로 주입되는 것?)

OpenSSL의 프로바이더 인터페이스

OpenSSL의 프로바이더 인터페이스는 암호화 알고리즘과 관련 기능을 동적으로 OpenSSL 라이브러리에 추가할 수 있도록 하는 구조

  • 확장성: 프로바이더 인터페이스 덕분에 개발자들은 OpenSSL에 새로운 암호화 알고리즘을 쉽게 추가할 수 있습니다. 이는 기존의 암호화 방식뿐만 아니라 새로운 양자 내성 암호화 알고리즘 같은 혁신적인 기술도 쉽게 통합할 수 있게 해줍니다.

  • 표준화된 API 사용: 프로바이더 인터페이스를 통해 통합된 알고리즘은 OpenSSL의 표준 API를 통해 접근할 수 있습니다. 이는 개발자가 특정 알고리즘의 복잡한 내부 구현을 신경 쓰지 않고도 쉽게 사용할 수 있게 합니다.

두 종류 중 뭐 써야 함?

결론: 둘 다 씀ㅋ

키 교환 메커니즘(KEM, 이거 용어 익숙해지자..)는 통신 세션 키 교환할 때 씀. TLS는 키 교환 하잖아? 그때 양자 컴퓨터 공격에 내성을 가지고 교환이 이루어짐.

서명 알고리즘은 메시지가 변경되지 않고 특정 개체에 의해 서명되었음을 보정함. 기존 서명 방법은 양자 공격에 취약하니까 이걸로 써야 함.

만약 TLS 1.3 세션을 양자 보안적으로 구성한다고 한다면 먼저 KEM으로 양자 보안적으로 세션 키를 교환하고, 양자 안전 서명 알고리즘을 사용해서 통신의 무결성과 인증을 보장할 수 있음!
(이거 기존 공개키-비밀키 방식으로 키 교환하고 서명 인증하는 거랑 똑같은 방식 아닌가?)

도커 실행

docker run -e KEM_ALG=kyber768 -it openquantumsafe/oqs-ossl3
Test server started for KEM kyber768 at port 4433
  • docker run
    도커 이미지로 컨테이너를 실행한다

  • -e KEM_ALG=kyber768
    환경변수 KEM_ALG를 kyber768로 설정한다.

  • -it
    i는 --interactive: 컨테이너와 상호 작용을 가능하게 하는 컨테이너 표준 입력 열기
    t는 --tty: 가상 터미널 할당, 컨테이너 내부에서 CLI 상호작용 가능하게

  • openquantumsafe/oqs-ossl3
    실행할 Docker 이미지

SSL/TLS 연결 시도

/ # openssl s_client -connect localhost -groups kyber768
  • s_client: OpenSSL의 s_client 모듈 호출. 이 모듈은 SSL/TLS 클라이언트 역할을 함.
  • -connect localhost: s_client가 연결을 시도할 호스트와 포트를 지정. 현재 포트 지정 안 했으므로 기본적으로 443으로 접속.
  • -groups kyber768: TLS 1.3에서 사용할 키 교환 그룹 지정

pqc-safe-provider 도커 개발 환경

볼륨 마운트 함!

 docker run -it --name pqc-dev -v $(pwd)/pqc-safe-provider-main:/workspace ubuntu:22.04 /bin/bash

0개의 댓글

관련 채용 정보