2017-11-09 18 views
2

내가 Botan document, 을 읽고 있던 나는 다음 주에 걸쳐 온 다음 MAC 유효성을 검사하지 않는 경우 해독하는 동안AEAD 모드 보안

이 마무리 Integrity_Failure의 인스턴스를 throw합니다. 이 경우 이전에 업데이트 호출을 통해 출력 된 모든 일반 텍스트를 파괴해야하며 공격자가 그 영향을 관찰 할 수있는 방식으로 사용되지 않아야합니다.

결코 일어나지 않을 수있는 유일한 방법은 업데이트를 호출하지 말고 전체 메시지를 단일 버퍼로 마샬링하고 해독 할 때 끝내기 위해 호출하는 것입니다. 공격자가 파일에 액세스 할 수있는 경우

이 상황은 암호 해독에 나타납니다 때문에, 는 그 AEAD 모드를 의미 하는가는 안전하지?

내가 잘못 이해 한 부분이 있습니까?

미리 감사드립니다.

+0

"이 상황이 암호 해독에 나타납니다"라는 의미는 무엇입니까? 어떤 상황이 불확실합니까? –

+0

@MaartenBodewes 문서에 의하면 공격자가 해독 중에 이전에 출력 된 일반 텍스트를 관찰하지 못하게해야합니다. 따라서 공격자는이 암호 해독 프로세스를 시뮬레이션하고 정보를 얻을 수 있습니까? –

+0

아니, 그 말은하지 않았다. 유효성 검사가 실패하면 일반 텍스트는 "어떤 방법으로도 공격자가 그 효과를 관찰 할 수 없도록"사용해야합니다. 즉, 조작 된 데이터에 대해 조치를 취한 경우 공격자는 결과적으로 무언가를 배울 수 있습니다. 즉, 공격자가 상황에서 완전히 벗어나는 것은 애플리케이션에 따라 다릅니다. 해독 된 데이터를보기 전에 무결성이 유지되는지 확인하십시오. 무결성 검사 이전에 API가 데이터를 산출한다는 사실은 처음부터 걱정 스럽지만, 때때로 스트리밍 용도로 사용해야합니다. –

답변

2

이 경고의 요점은 유효성을 검사하기 전에 정보를 신뢰할 수 없다는 점입니다. AEAD 암호의 기본 모드는 일반적으로 CTR 모드입니다 (다른 모드도 마찬가지로 영향을받습니다). 따라서 공격자는 동일한 위치의 일반 텍스트에서 오류로 변환되는 암호문에 오류를 도입 할 수 있습니다. 대부분의 AEAD 암호는 CTR 모드를 사용하므로 공격자는 이렇게 일반 텍스트의 특정 비트를 넘길 수 있습니다.

예를 들어 공격자는 - now invalid - 데이터가 처리 될 때 발생하는 특정 오류를 관찰하여 일반 텍스트를 알 수 있습니다. 이것이 경고에 관한 것입니다. 먼저 처리하기 전에 해독 된 데이터의 무결성과 신뢰성을 확인해야합니다.

물론 이것은 일반적으로 유효성이 검사 될 때까지 데이터 캐싱을 의미합니다. 이런 이유 때문에 먼저 버퍼를 만들고이를 암호문으로로드하는 것이 더 합리적입니다. 좋은 API를 가지고 있다면 일반 텍스트로 덮어 쓸 수 있으므로 저장 공간을 두 번 할당 할 필요가 없습니다.

태그가 유효하지 않은 경우 데이터에 대한 액세스를 제거해야합니다. 물론 평문을 디스크에 저장할 수도 있습니다. 예를 들어, 임시 파일에 데이터를 저장 한 다음 태그를 확인한 후 올바른 파일 이름 의 이름을 바꿀 수 있습니다. 당신이 메시지 무결성 및 신뢰성을 확인할 수있는 모든 말했다


은, 아니, AEAD 모드는 동작의 다른 비 인증 모드보다더 안전합니다. 하지만 암호를 잘못 사용할 수도 있습니다. 이것이 바로이게 전부입니다.