Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
power_analysis — 취약한 RSA 구현(Arduino Atmega328P)에 대한 전력 분석 부채널 공격을 시연하는 개념 증명과 상세한 하드웨어 설정 및 측정 방법론. | Kitploit
도구/GitHubGitHub/lord-feistel/power_analysis
Embedded Systems SecurityCryptographyHardware SecurityPapers & ResearchLearning & Education
GitHublord-feistel/power_analysis

power_analysis

취약한 RSA 구현(Arduino Atmega328P)에 대한 전력 분석 부채널 공격을 시연하는 개념 증명과 상세한 하드웨어 설정 및 측정 방법론.

저장소 보기
324672년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

RSA에 대한 전력 분석 공격

색인

  • 소개
  • 전력 분석 공격
  • RSA: 간단한 소개
  • RSA 예제
  • 장비
  • 전력 측정: 간단한 소개
    • 옴의 법칙
    • 키르히호프의 전압 법칙 (KVL)
    • 전압 분배기
    • 션트 저항
  • 전력 측정 예제
  • 빠른 거듭제곱
  • Arduino (Atmega328P)에서의 빠른 거듭제곱
  • 결과
  • 결론
  • 참고문헌

소개

최근에 저는 사람들이 Arduino를 위해 직접 암호화를 구현하는 것을 관찰했습니다. 예를 들어 stackoverflow의 이 주제에서 언급된 것과 같습니다:

https://stackoverflow.com/questions/39189065/rsa-encryption-decryption-functions-for-arduino

그 중 몇 가지는 인터넷에서 찾을 수 있으며, 일부는 잘 알려진 라이브러리에 있습니다.

저는 왜 자신만의 암호화 알고리즘을 발명하지 말아야 하는지, 그리고 그러한 알고리즘의 강력한 구현을 사용하는 것이 중요한지 보여주기 위해 이 작은 PoC (개념 증명)를 수행하기로 결정했습니다.

이 PoC는 RSA 구현에 사용되는 보조 루틴 (빠른 거듭제곱)의 잘못된 구현에 대해 부채널 공격 (전력 분석 공격)을 수행합니다.

부채널 공격은 암호화 알고리즘 또는 프로토콜 자체를 직접 공격하는 대신 간접적인 정보 누출을 이용하여 암호 시스템을 손상시키는 방법입니다.

이러한 누출은 타이밍 정보, 전력 소비, 전자기 방출 또는 소리와 같은 다양한 출처에서 발생할 수 있습니다.

이러한 공격은 RSA와 같은 암호 시스템을 손상시키는 데 매우 효과적일 수 있으며, 공격자가 암호 체계의 보안을 보장하는 기반이 되는 수학적 문제를 해결할 필요가 없습니다 (Kocher, Jaffe, & Jun, 1999).

이 논문은 Arduino (Atmega328P)용 펌웨어에서 RSA 알고리즘 구현의 잘 알려진 취약점에 대한 전력 분석 공격을 수행할 것입니다.

참고: 급하게 작성했기 때문에 발견될 수 있는 맞춤법/문법 오류는 양해 부탁드립니다.

전력 분석 공격

전력 분석 공격은 암호화 작업 중 장치의 전력 소비를 측정하는 것을 포함합니다.

차등 전력 분석 (DPA)은 여러 암호화 작업에 걸친 전력 소비 패턴에 대한 통계적 분석을 통해 비밀을 추출하는 방법으로, 전력 변동을 특정 암호화 작업과 직접적으로 연관시켜 비밀을 추론하는 단순 전력 분석 (SPA)보다 더 정교합니다.

차등 전력 분석 (DPA)과 단순 전력 분석 (SPA)은 RSA 계산 중 전력 소비 패턴을 분석하여 개인 키를 추출하는 데 사용될 수 있습니다.

이러한 공격은 서로 다른 키 비트와 관련된 뚜렷한 전력 사용 패턴을 식별하여 개인 키를 드러낼 수 있습니다 (Kocher, Jaffe, & Jun, 1999).

RSA: 간단한 소개

RSA (Rivest-Shamir-Adleman)는 1977년에 발명자인 Ron Rivest, Adi Shamir, Leonard Adleman의 이름을 딴 널리 사용되는 공개 키 암호화 알고리즘입니다 (Paar & Pelzl, 2010).

이는 인터넷을 통해 데이터를 안전하게 전송하는 가장 안전한 방법 중 하나로 남아 있습니다.

RSA 보안의 기초 중 하나는 큰 합성수를 소인수분해하는 어려움에 있습니다 (Menezes, van Oorschot, & Vanstone, 1996).

이 문제는 인수분해 문제로 알려져 있으며, 주어진 큰 수를 곱하여 형성하는 소수를 찾는 것을 포함합니다.

RSA 암호화는 이 인수분해 문제가 모듈러스를 소인수로 분해하여 암호화를 깨는 것을 실용적으로 불가능하게 만들 만큼 계산적으로 어렵다는 가정에 의존합니다 (Menezes, van Oorschot, & Vanstone, 1996).

RSA 예제

그림 1은 간단한 예제를 사용하여 RSA 암호화 및 복호화 과정을 보여줍니다.

RSA 예제

그림 1 - RSA 예제.

이 경우 3과 33은 공개되어 있습니다. 예제에서 숫자 7은 개인 키입니다.

Phi (N) 함수, 오일러의 토션 함수는 1에서 33까지의 구간에서 모든 서로소를 계산합니다.

값 33은 P와 Q의 곱셈에서 얻어집니다. 이 경우 11에 3을 곱한 것입니다.

Phi 함수의 결과는 (P - 1)에 (Q - 1)을 곱하여 얻어집니다. 이 경우 10에 2를 곱한 것입니다.

연산 e<sup>-1</sup> mod 20은 모듈러 역원 연산을 나타냅니다 (Menezes, van Oorschot, & Vanstone, 1996).

참고: 이 논문을 이해하는 데 필요하지는 않지만 RSA에 대해 더 깊이 알고 싶다면, 이 저장소의 number_theory.md 파일에서 이러한 기본 수론 연산에 대한 간단한 소개가 있습니다. 설명은 RSA 연산에 대한 이해를 높일 수 있습니다.

장비

실험에는 Rigol에서 제조한 오실로스코프 DS1102 (그림 2에 제시)를 사용했습니다.

오실로스코프의 매뉴얼은 참고문헌에서 찾을 수 있습니다 (RIGOL Technologies, Inc., 2017).

일반 전원 공급 장치도 사용되었습니다 (그림 3에 제시).

오실로스코프

그림 2 - 실험에 사용된 오실로스코프.

전원 공급 장치

그림 3 - 실험에 사용된 전원 공급 장치.

전력 측정: 간단한 소개

옴의 법칙

옴의 법칙은 전기 공학 및 물리학 분야의 기본 원리입니다.

이는 두 점 사이의 도체를 통해 흐르는 전류가 두 점 사이의 전압에 정비례하고 그 사이의 저항에 반비례한다는 것을 나타냅니다 (Boylestad, 2015).

그림 4는 회로와 옴의 법칙을 보여줍니다.

옴의 법칙

그림 4 - 옴의 법칙 설명.

옴의 법칙은 저항이 일정하게 유지된다면 도체 양단의 전압을 증가시키면 전류도 증가한다는 것을 의미합니다 (Johnson & Hilburn, 2013). 그림 5는 회로의 전류를 찾는 것이 목표인 옴의 법칙 적용 예를 보여줍니다.

옴의 법칙 예제

그림 5 - 옴의 법칙 예제.

키르히호프의 전압 법칙

키르히호프의 전압 법칙 (KVL)은 전기 공학 및 물리학의 기본 원리입니다 (Boylestad, 2015).

이는 모든 폐쇄 네트워크 또는 루프에서 모든 전위차(전압)의 합이 0임을 나타냅니다 (Boylestad, 2015).

그림 6은 키르히호프의 전압 법칙을 설명합니다.

키르히호프 법칙

그림 6 - 키르히호프 법칙 설명.

그림 7에는 저항 R1과 R2에 흐르는 전류를 찾기 위한 키르히호프 법칙의 적용 예가 있습니다.

키르히호프 예제

그림 7 - 키르히호프 법칙 예제.

전압 분배기

전압 분배기는 키르히호프의 전압 법칙 (KVL)의 결과로, 저항 R1과 R2 사이의 전압인 Vout을 계산하는 방법을 제시합니다.

전압 분배기의 공식은 그림 8에 제시되어 있습니다.

전압 분배기 적용 예는 그림 9에 제시되어 있습니다.

전압 분배기

그림 8 - 전압 분배기 설명.

전압 분배기 예제

그림 9 - 전압 분배기 예제.

션트 저항

션트 저항은 회로의 전원 공급 장치와 직렬로 연결된 낮은 값의 저항으로, 회로를 통해 흐르는 전류를 측정하는 데 사용됩니다.

션트를 사용하여 전류를 측정하는 것은 현대 멀티미터에서 사용되는 기술 중 하나입니다 (Boylestad, 2015).

션트 저항 양단의 전압 강하를 측정하고 저항 값을 알면 옴의 법칙을 사용하여 전류를 계산할 수 있습니다.

Arduino 장치의 전류 소비를 측정하려면 VCC (양극)와 직렬로 션트 저항을 배치해야 합니다.

연결 방식은 그림 10에 제시되어 있습니다.

참고 1: PoC에서는 Arduino Uno 보드 대신 타겟(마이크로컨트롤러 atmega328p)을 별도의 브레드보드로 옮겼습니다 (그림 11에 제시). 이를 통해 납땜 없이 마이크로컨트롤러의 핀 배치를 더 쉽게 조작할 수 있습니다.

참고 2: 이를 수행하는 방법을 모른다면, 글리칭 작동 방식을 보여주는 이전 기사에서 그 방법을 설명하며, 다음에서 찾을 수 있습니다. https://github.com/lord-feistel/hardware_hacking_lab)

Arduino 션트

그림 10 - Arduino와 션트.

브레드보드 션트

그림 11 - 브레드보드의 션트 회로.

전력 측정 예제

션트 저항을 사용하여 전류 소비 측정을 시연하기 위해, LED (Sedra & Smith, 2014)를 마이크로컨트롤러의 GPIO에 연결하고 (그림 12), 오실로스코프를 사용하여 LED가 켜지거나 꺼진 상황에서 션트 저항의 전력 소비에 미치는 영향을 관찰합니다.

키를 추출하거나 전력 소비에 대한 충전 효과를 관찰하기 위해 전류를 얻기 위해 옴의 법칙을 사용할 필요는 없으며, 전압 강하만으로도 충분합니다 (Johnson & Hilburn, 2013).

전력 소비 LED

그림 12 - 전력 측정.

자세히 관찰하려면 LED가 켜졌을 때 전압 강하가 어떻게 되는지 보여주는 비디오 1을 확인하십시오.

비디오 1: 전력 소비

비디오 1 - LED 소비로 인한 전압 강하.

LED를 깜박이기 위해 다음 코드가 사용되었습니다. 이 코드는 이 저장소에서도 찾을 수 있습니다.```C const int PIN_CHARGE = 9 ; void setup() { pinMode(PIN_CHARGE, OUTPUT);

}

void loop() { digitalWrite(PIN_CHARGE, HIGH); delay(10);
digitalWrite(PIN_CHARGE, LOW);
delay(10);

}

복잡한 계산이 이루어질 때에도 이러한 전압 강하가 발생한다는 점을 명시하는 것이 중요합니다 (Kocher, Jaffe, & Jun, 1999).
도구 다운로드