패딩 오라클 공격
Padding oracle attack암호학에서 패딩 오라클 공격은 암호 메시지의 패딩 검증을 사용하여 암호문을 해독하는 공격입니다.암호학에서 가변 길이의 일반 텍스트 메시지는 기본 암호 프리미티브와 호환되도록 패딩(확장)해야 하는 경우가 많습니다.이 공격은 메시지가 올바르게 패딩되었는지 여부에 대한 쿼리에 자유롭게 응답하는 "패딩 오라클"이 있어야 합니다.패딩 오라클 공격은 대부분 블록 암호 내에서 사용되는 CBC 모드의 복호화와 관련되어 있습니다.OAEP 등의 비대칭 알고리즘 패딩 모드는 패딩 Oracle 공격에 [1]취약할 수도 있습니다.
대칭 암호화
대칭 암호법에서는 패딩 오라클 공격을 CBC 동작 모드에 적용할 수 있습니다.이 모드에서는 암호화된 메시지의 패딩이 올바른지 여부에 대한 데이터가 "oracle"(통상 서버)에 의해 누출됩니다.이러한 데이터를 통해 공격자는 암호화 키를 인식하지 않고 Oracle 키를 사용하여 Oracle을 통해 메시지를 해독(및 때로는 암호화)할 수 있습니다.
CBC 암호화에 대한 Oracle 공격 패딩
블록 암호에서의 CBC 복호화의 표준 실장은 모든 암호문 블록의 복호화, 패딩 검증, PKCS7 패딩 삭제 및 메시지 플레인텍스트 반환입니다.서버가 일반적인 "복호화 실패" 오류 대신 "비활성 패딩" 오류를 반환하는 경우 공격자는 서버를 패딩 오라클로 사용하여 메시지를 해독(경우에 따라 암호화)할 수 있습니다.
CBC 복호화의 계산식은 다음과 같습니다.
위에서 설명한 바와 같이 CBC 복호화 XOR은 각 플레인텍스트 블록과 이전 블록과의 사이에서 이루어집니다.그 결과 에서 싱글바이트를 변경하면 에서 싱글바이트가 변경됩니다.
공격자가 2개의 암호문 를 가지고 있으며 두 번째 블록을 복호화하여 를 얻으려고 한다고 가정합니다.공격자는 작성 "\의 바이트를 변경하여 ( V })을 서버에송신합니다.서버는 마지막으로 복호화된 블록( 의 패딩이 올바른지 여부를 반환합니다(유효한 PKCS#7 패딩).패딩이 올바르면 공격자는 의 바이트(2) C 1 \ ( _ { ) \ C_}가 0 01(\ 、 마지막 2바이트가 0x02, 마지막 3바이트임을 알 수 있습니다.공격자는 마지막 바이트가 0x01이 되도록 두 번째 마지막 바이트(임의의 비트 플립)를 수정할 수 있습니다(또는 이전 바이트를 플립하고 패딩을 식별하는 위치를 이진 검색할 수 있습니다).예를 들어, 세 번째 마지막 바이트의 수정이 올바르고 두 번째 마지막 바이트의 수정이 올바르지 않은 경우 마지막 2바이트는 0x02로 알려져 두 바이트 모두 복호화가 가능합니다). DKC2)의 바이트({ 2})는 C 1 x 과 같습니다.패딩이 올바르지 않으면 는 C 1 {\의 마지막 바이트를 할 수 있습니다는 P2의 바이트를 찾기 위해 최대 256회({ 가능한 모든 바이트에 대해 255회(가능 256회, 비둘기 구멍 원리에 의해 1회 제외)의 시도와 애매한 [2]패딩을 제거하기 위한 추가 시도를 해야 합니다.
는 P2의 바이트({를 확인한 후 동일한 기술을 사용하여 의두 번째에서 마지막 바이트({를 수 있습니다.는 C의 바이트( 2)를 D K2)로하고 의 마지막 (\를 02(\로 설정합니다패딩이 올바를 때까지 두 번째에서 마지막 바이트까지 변경합니다(0x02, 0x02).
블록이 128비트(AES 등)로 구성되어 있는 경우(예를 들어 16바이트), 공격자는 256비트16 = 4096회 이하의 시도에서 를 얻습니다.이는 128비트 키를 강제하기 위해 2보다 훨씬 빠른 속도입니다.
패딩 Oracle 공격(CBC-R)을 사용한 메시지 암호화
CBC-R은[3] 복호화 오라클을 암호화 오라클로 변환하고 주로 패딩 오라클에 대해 시연합니다.
패딩 oracle 공격 CBC-R을 사용하면 모든 플레인텍스트에 대해 초기화 벡터와 암호문 블록을 작성할 수 있습니다.
- 암호문i P = PODecrypt ( Ci ) XORi−1 C,
- 이전 암호 블록x−1 C를 자유롭게 선택합니다.
- 유효한 암호 텍스트/문자 쌍x-1 C = Px XOR PODecrypt(C )를i 생성합니다.
N 블록 길이의 암호문을 생성하려면 공격자는 패딩 오라클 공격을 N회 수행해야 합니다.이러한 공격은 체인으로 연결되어 메시지 끝(CN)에서 시작 메시지(C0, IV)까지 적절한 플레인텍스트가 역순으로 구축됩니다.각 단계에서 패딩 Oracle 공격은 이전에 선택한 암호 텍스트에 IV를 구축하기 위해 사용됩니다.
CBC-R 공격은 암호문을 인증하는 암호화 방식(메시지 인증 코드 등을 사용)에 대해서는 복호화 전에 동작하지 않습니다.
패딩 오라클을 사용한 공격
최초의 공격은 2002년에 Serge Vaudenay에 [4]의해 출판되었다.공격의 구체적인 예는 나중에 SSL과 IPSec에 [6][7]대해[5] 실현되었습니다.또한 JavaServer Faces, Ruby on[8] Rails 및 ASP를 포함한 여러 웹 프레임워크에도 적용되었습니다.NET[9][10][11] 및 기타 소프트웨어(스팀 게임 클라이언트 [12]등)2012년에는 일부 강화된 보안 [13]장치에 대해 효과적인 것으로 나타났습니다.
이러한 초기 공격은 대부분의 TLS 구현자에 의해 발표 후 수정되었지만 2013년에 발표된 새로운 변형인 Lucky Teen 공격은 타이밍 사이드 채널을 사용하여 이전에 수정되었던 구현에서도 취약성을 다시 열었습니다.2014년 초 현재, 특정 종류의 기계에 대한 이론상으로는 여전히 작동 가능하지만, 실제 작동에서 공격은 더 이상 위협으로 간주되지 않습니다(신호 대 잡음 비 참조.2015[업데이트], 개발의 암호화 프로토콜 Logjam[14]및 내보내기 RSA[15]공격,less-secure 암호화 작업 때 보다 안전한 것 소용 있어 유산을 고객들과 호환성을 제공하는으로 고객들을 속인다 많downgrade 공격, 인터넷 트래픽에 사용에 폭탄 공격에 대해 가장 활동적인 지역의.할 수 있는.POODLE이라는[16] 공격(2014년 말)은 SSL 3.0에 대한 다운그레이드 공격과 안전하지 않은 오래된 프로토콜에 대한 패딩 오라클 공격을 결합하여 전송된 데이터를 손상시킵니다.2016년 5월 CVE에서 공개...OpenSSL에서 Lucky Teen에 대한 수정이 또 다른 패딩 [17][18]오라클을 도입한 2016-2107.
레퍼런스
- ^ Manger, James. "A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0" (PDF). Telstra Research Laboratories.
- ^ Is the padding oracle attack deterministic
- ^ Juliano Rizzo; Thai Duong (25 May 2010). Practical Padding Oracle Attacks (PDF). USENIX WOOT 2010.
- ^ Serge Vaudenay (2002). Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS... (PDF). EUROCRYPT 2002.
- ^ 를 클릭합니다Brice Canvel; Alain Hiltgen; Serge Vaudenay; Martin Vuagnoux (2003), Password Interception in a SSL/TLS Channel (PDF).
- ^ 를 클릭합니다Jean Paul Degabriele; Kenneth G. Paterson (2007), Attacking the IPsec Standards in Encryption-only Configurations (PDF), archived from the original on 19 December 2018, retrieved 25 September 2018.
- ^ 를 클릭합니다Jean Paul Degabriele; Kenneth G. Paterson (2010), On the (In)Security of IPsec in MAC-then-Encrypt Configurations, CiteSeerX 10.1.1.185.1534.
- ^ Juliano Rizzo; Thai Duong (25 May 2010). Practical Padding Oracle Attacks (PDF). USENIX WOOT 2010.
- ^ Thai Duong; Juliano Rizzo (2011). Cryptography in the Web: The Case of Cryptographic Design Flaws in ASP.NET (PDF). IEEE Symposium on Security and Privacy 2011.
- ^ Dennis Fisher (13 September 2010). "'Padding Oracle' Crypto Attack Affects Millions of ASP.NET Apps". Threat Post. Archived from the original on 13 October 2010.
- ^ Vlad Azarkhin (19 September 2010). ""Padding Oracle" ASP.NET Vulnerability Explanation". Archived from the original on 23 October 2010. Retrieved 11 October 2010.
- ^ "Breaking Steam Client Cryptography". Steam Database. Retrieved 1 May 2016.
- ^ Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay (2012), Efficient Padding Oracle Attacks on Cryptographic Hardware (PDF)
- ^ 자세한 내용은 https://www.weakdh.org Archived 2019년 12월 22일 Wayback Machine을 참조하십시오Matthew Green; Nadia Heninger; Paul Zimmerman; et al. (2015), Imperfect Forward Secrecy: How Diffie–Hellman Fails in Practice (PDF).
- ^ Matthew Green (3 March 2015). "Attack of the week: FREAK (or 'factoring the NSA for fun and profit')".; 자세한 내용은 https://www.freakattack.com 2015년 3월 5일 Wayback Machine에서 아카이브(archarched at the Wayback Machine
- ^ 자세한 것은, https://www.poodle.io 를 참조해 주세요Matthew Green (14 October 2014). "Attack of the week: POODLE"..
- ^ OpenSSL Security Advisory [3rd May 2016], 3 May 2016
- ^ Yet Another Padding Oracle in OpenSSL CBC Ciphersuites, Cloudflare, 4 May 2016