← 최신 논문
💻 computer science

Protecting Cryptographic Libraries against Side-Channel and Code-Reuse Attacks

본 논문은 사이드채널 공격 및 메모리 손상 공격에 대한 대중적인 암호화 라이브러리의 보안 취약점을 분석하고, 현재 방어 체계를 평가하며 개발 프로세스 개선을 제안한다.

원저자: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

게시일 2026-05-21
📖 4 분 읽기☕ 가벼운 읽기

원저자: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

암호화 라이브러리를 인터넷의 첨단 금고로 상상해 보세요. 이 라이브러리는 비밀번호를 잠그고, 메시지를 암호화하며, 신원을 확인하는 소프트웨어 도구들입니다. 이들이 없다면 우리의 디지털 세계는 완전히 열려 있을 것입니다. 그러나 이 논문은 최고의 금고조차 약점이 있으며, 이를 구축하는 사람들 (개발자) 과 그들이 사용하는 도구들 (컴파일러) 이 항상 이를 충분히 보호하지는 못한다고 주장합니다.

다음은 이 논문의 주요 내용을 간단한 비유로 정리한 것입니다.

1. 두 종류의 도둑

이 논문은 공격자들이 이러한 디지털 금고에 침입하려는 두 가지 주요 방식을 식별합니다.

  • 스톱워치 도둑 (사이드 채널 공격):
    자물쇠를 따려고 시도하지 않는 도둑을 상상해 보세요. 대신 그들은 금고 밖에서 기다리며 귀를 기울입니다. 경비원이 특정 열쇠를 시도할 때 금고 문이 잘못된 열쇠를 시도할 때보다 약간 더 오래 잠기는 소리를 듣는 것입니다. 이러한 미세한 시간 차이를 재는 방식으로 도둑은 자물쇠를 건드리지 않고도 비밀 코드를 알아낼 수 있습니다.

    • 논문의 주장: 암호화 코드에는 종종 '비밀에 의존하는' 단계가 포함되어 있습니다. 만약 코드가 비밀 비밀번호에 따라 실행되는 데 걸리는 시간이 다르다면, 해커는 스톱워치를 이용해 그 비밀번호를 탈취할 수 있습니다.
  • 복사 - 붙여넣기 하이재커 (코드 재사용 공격):
    책들이 지저분하고 안전하지 않은 언어로 쓰여진 도서관을 상상해 보세요. 도둑이 바닥에 구멍 (메모리 오류) 을 발견하고 폭탄을 던져 바닥 판자를 부숩니다. 바닥이 깨진 후, 도둑은 새로운 무기를 만들 필요가 없습니다. 도서관 보관실에 이미 놓여 있던 망치, 톱, 사다리를 그냥 가져와서 '이음새'를 붙여 건물 밖으로 올라가 건물을 장악하는 것입니다.

    • 논문의 주장: 많은 라이브러리는 메모리 오류를 허용하는 C 나 C++ 같은 언어로 작성됩니다. 해커들은 이러한 오류를 이용해 프로그램의 흐름을 하이재킹하며, 라이브러리 내부에 이미 존재하는 작고 해롭지 않은 코드 조각들을 이용해 대규모 공격을 시작합니다.

2. 금고의 현재 상태

저자들은 수백만 개의 웹사이트에서 사용되는 OpenSSL 과 같은 11 개의 인기 있는 암호화 라이브러리를 조사하여 얼마나 잘 보호되고 있는지 확인했습니다.

  • "스톱워치" 문제: 대부분의 개발자는 타이밍 공격을 알고 있으며, 어떤 경우든 실행 시간이 정확히 동일하도록 코드를 작성하여 이를 수정하려고 노력합니다. 그러나 논문은 11 개 라이브러리 중 단 2 개만이 최종 제품이 '스톱워치' 트릭이 작동하지 않는지 테스트한다는 사실을 발견했습니다. 마치 요리사가 요리를 서빙하기 전에 수프를 맛보는 것은 하지만, 소금이 실제로 녹았는지 확인하는 것을 잊어버린 것과 같습니다.
  • "복사 - 붙여넣기" 문제: 개발자들은 메모리 오류를 막기 위해 '스택 캐나리'와 같은 표준 안전 도구 (지뢰와 같은 것) 를 사용합니다. 이러한 도구들은 도움이 되지만 완벽하지는 않습니다. 논문은 대부분의 라이브러리가 사용 가능한 가장 강력한 안전 설정을 사용하지 않아 정교한 하이재킹에 취약하다고 발견했습니다.

3. 깨진 설계도 (컴파일러 문제)

이것이 논문의 주장의 핵심입니다. 개발자는 코드 (설계도) 를 작성하지만, 컴파일러는 그 설계도를 실제 작동하는 기계 코드로 번역하는 기계입니다.

  • 갈등: 컴파일러는 코드를 빠르고 효율적으로 만들기 위해 설계되었습니다. 그들은 이야기를 더 짧게 만들기 위해 어떤 '불필요한 내용'이라도 잘라내고 싶어 하는 매우 열성적인 편집자와 같습니다.
  • 실수: 때로는 컴파일러가 잘라내는 '불필요한 내용'이 실제로는 보안 조치입니다. 예를 들어, 개발자가 프로세스가 동일한 시간을 걸리도록 (스톱워치 도둑을 막기 위해) 추가 코드를 작성할 수 있습니다. 컴파일러는 이 추가 코드가 쓸모없는 낭비라고 생각하여 이를 삭제합니다. 결과는 무엇일까요? 코드는 다시 빨라지지만, 보안 구멍은 다시 생깁니다.

4. 작업을 위한 새로운 도구 (보안 컴파일)

이 논문은 속도와 마찬가지로 보안도 이해하는 새로운 종류의 '편집자'나 컴파일러가 필요하다고 제안합니다. 그들은 네 가지 다른 실험적 도구를 테스트했습니다.

  1. "수호자" (SecComp): 이 도구는 개발자가 코드의 특정 부분을 "손대지 마라"라고 표시할 수 있게 합니다. 이는 컴파일러가 보안 조치를 유지하도록 강제합니다. 단점: 아직 무료로 사용할 수 없습니다.
  2. "셔플러" (Multicompiler/MCR): 이 도구는 코드를 가져와 프로그램을 빌드할 때마다 가구를 재배치합니다. 매일 망치와 톱을 다른 방으로 옮기는 것과 같습니다. 도둑이 침입하더라도 레이아웃이 변경되었기 때문에 필요한 도구를 찾을 수 없습니다. 단점: '스톱워치 도둑'을 막기 위해 사용할 경우 프로그램 속도가 현저히 느려집니다.
  3. "건축가" (SecDivCon): 이 도구는 처음부터 보안 규칙이 내장된 코드를 구축하여 최종 제품이 빠르고 안전하도록 보장합니다. 단점: 빌드하는 데 매우 오랜 시간이 걸리며 작고 구체적인 작업에만 잘 작동합니다.
  4. "선형화기" (PCFL): 이 도구는 지저분한 코드를 자동으로 다시 작성하여 시간을 재는 것이 불가능한 직선적이고 예측 가능한 줄로 만듭니다. 단점: '복사 - 붙여넣기 하이재커' 공격은 막지 못합니다.

5. 최종 판결

이 논문은 우리가 현재 속도안전 사이의 간극에 갇혀 있다고 결론 내립니다.

  • 개발자는 수동으로 안전한 코드를 작성하려고 노력하지만, 종종 목표를 빗나갑니다.
  • 컴파일러는 속도에 너무 집중하여 실수로 보안 기능을 삭제합니다.
  • 현재의 도구들은 너무 느리거나, 너무 복잡하거나, 모든 유형의 공격을 커버하지 못합니다.

해결책: 저자들은 세 가지 노력이 필요하다고 호소합니다.

  1. 컴파일러 제작자는 개발자들에게 더 많은 통제권을 부여해야 합니다. 그래야 개발자들은 "이 보안 기능이 느려 보일지라도 삭제하지 마라"라고 말할 수 있습니다.
  2. 보안 컴파일러 제작자는 하나 또는 다른 것만이 아니라 타이밍과 하이재킹 공격을 동시에 처리하는 도구를 구축해야 합니다.
  3. 라이브러리 개발자는 희망에 의존하는 것을 멈추고 이러한 새로운, 더 안전한 컴파일 도구를 사용하여 그들의 금고가 실제로 잠겨 있는지 확인해야 합니다.

요약하자면: 우리는 안전한 금고의 설계도를 가지고 있지만, 이를 구축하는 기계들은 모서리를 자르는 데 너무 열성적입니다. 우리는 기계들이 속도와 마찬가지로 안전을 최우선으로 하도록 가르쳐야 합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →