패딩 오라클 공격의 실제 결과가 있습니까?

Aug 18 2020

저는 파이썬으로 데이터 를 암호화 하는 프로그램을 작성하고 있고 오라클 공격 패딩 에 대해 들었지만 취약한 이전 구현 (실제로는 무엇을 사용합니까?)에 대해서도 과대 평가 (실제 사용은 무엇입니까?)라고 생각합니다. 패딩은 SSLv3처럼 옳고 그름).

때문에:

  1. 두 개의 암호문 만 있으면 $c(n-1)$, $c(n)$ 마지막 두 개의 암호화 된 메시지 블록이며, 암호가 해독되었는지 여부를 알려주는 서버 $c(n)$서버가 당신이 보낸 모든 것을 해독한다는 것을 의미하지 않습니다 (즉, 당신이 그것을받은 전체 암호화 된 메시지를 보내고 출력을 읽으십시오). 내 말은, 이것은 처음에 키를 취하지 않고 올바른지 확인하는 서버 버그입니다.
  2. 우리가해야 할 일은 마지막 블록 (패딩 블록)을 알고 해독하기 위해이 두 개의 암호 메시지를 보내는 것 뿐이라고 가정 해 보겠습니다. 이것은 패딩 평문이 알려져 있거나 적어도 무작위가 아니거나 이유가 없기 때문에 작동합니다.

그러나 전체 메시지의 중간에있는 c2c3 는 어떻습니까? 우리는 c3와 c2를 알고 있지만 우리는 알지 못하며 p3 또는 p2 (일반 텍스트) 또는 중간 상태 IS3 을 결코 알 수 없습니다 . 즉, 우리는 p3 를 얻기 위해 is3로 c2를 XOR 할 수 없습니다 . 그래서이 공격 은 우리가 실제로 알고있는 유일한 새로운 것은 패딩 블록의 중간 상태 인 패딩 블록을 해독 할 수 있도록 허용 한다고 생각 합니다.

이 공격이 실제 영향과 실제 데이터 복호화 기능 (실제 데이터)이없는 공격인지 알고 싶습니다.

답변

7 MaartenBodewes Aug 18 2020 at 23:14

나는 이것이 처음에 키를 취하지 않고 그것이 올바른지 확인하는 서버 버그라는 것을 의미합니다. :)

그게 무슨 뜻이야? 키는 올바른 키 여야하며 패딩 오라클 공격은 실제로 다른 쪽에서 해당 키로 암호화 된 암호문을 변경 하여 공격을 수행합니다.

그러나 전체 메시지의 중간에있는 c2, c3은 어떻습니까? 우리는 c3과 c2를 알고 있지만 우리는 알지 못하며 p3 (물론 평문)도 중간 상태 IS3도 알 수 없습니다.

아니요, 패딩 오라클 공격은 메시지를 완전히 해독 할 수 있습니다. 이는 XOR이 다음 블록에 영향을 미치기 때문입니다.

패딩 오라클 공격은 일반 텍스트 오라클 공격의 한 형태 일뿐 입니다. 예를 들어, 패딩 자체를 사용하지 않고도 XML-enc에 대한 일반 텍스트 오라클 공격을 수행 할 수도 있습니다.

이 공격이 실제 영향과 실제 데이터 암호 해독 기능 (실제 데이터)이없는 공격인지 알고 싶습니다.

예, 그것은 완전히 그리고 완전히 틀 렸습니다. 패딩 오라클 공격은 바이트 당 128 번의 시도를 사용하여 전체 메시지를 해독 할 수 있으며 다른 일반 텍스트 오라클은 실제로 훨씬 더 효과적 일 수 있습니다.

그 외에도 수신 측이 변경된 일반 텍스트를 수락하도록하는 것은 기밀성을 잃는 것만 큼 위험 할 수 있습니다. 따라서 인증 된 암호화 또는 인증되지 않은 CBC 대신 인증 된 암호화 를 사용 하는 프로토콜을 사용해야합니다 .

5 Gilles'SO-stopbeingevil' Aug 19 2020 at 07:33

이 공격이 실제 영향과 실제 데이터 암호 해독 기능 (실제 데이터)이없는 공격인지 알고 싶습니다.

럭키 13 공격은 TLS에 대한 실제 공격이다. 당시 TLS 프로토콜의 현재 버전에 대한 심각한 공격이었습니다 (당시 TLS 1.0-TLS 1.1 및 1.2가 존재했지만 채택이 거의 없음). 따라서 패딩 오라클 공격은 실제 세계에서 절대적으로 작동합니다.

(sslv3처럼 패딩이 옳고 그른지를 알려주는 것들).

Lucky Thirteen은 오늘날 대부분의 보안 통신에 사용되는 버전 인 TLS 1.2까지의 버전에 영향을 미칩니다. 이 공격으로 인해 더 이상 사용되지 않는 CBC를 사용하는 암호 제품군에만 영향을 미치지 만 대부분의 엔드 포인트는 AEAD 암호 제품군을 선호하더라도 여전히이를 허용합니다. 대부분의 인기있는 TLS 구현에는 Lucky Thirteen 공격을 방지하는 코드가 있습니다 (성능 저하). 따라서 패딩 오라클 공격은 여전히 ​​널리 사용되는 프로토콜과 관련이 있습니다.

파이썬으로 데이터를 암호화하는 프로그램을 작성 중이며 패딩 오라클 공격에 대해 들었지만 과대 평가 된 것 같습니다

음, 패딩 오라클 공격에 대해 걱정할 필요가 없다는 것은 사실입니다. 그러나 걱정할 필요가없는 이유는 그들이 잘 알려져 있기 때문에 우리는 그들을 방어하는 방법을 알고 있기 때문입니다. 패딩을 사용하지 마십시오. 그리고 암호화 현대 모드는 패딩을 사용하지 않습니다. GCM, CCM 또는 ChaCha20 + Poly1305와 같은 일반적인 AEAD 모드를 사용하십시오. 또는 더 나은, 같은 염화나트륨 / libsodium (같은 높은 수준의 라이브러리를 사용 PyNaCl 파이썬) : 글자가 코드에 AES 당신이있는 거 입력하는 경우, 당신은 잘못하고 있어요 .