암호화 대신 인증 된 암호화를 사용해야하는 이유는 무엇입니까?

블록 암호 사용을위한 다양한 작동 모드 가 있으며, 그중 일부는 “encryption”및 일부는 인증 된 암호화 를 제공합니다.

왜 사용해야합니까? 암호화 모드가 아닌 인증 된 암호화 모드입니까?

이 질문은 그렇지 않습니다. 인증 된 암호화 vrs 암호화 모드의 다양한 모드에 대해 논의하는 것을 목표로합니다 (좋은 대답이 선택 될 수 있음). 목표는 AE가 “일반”암호화보다 나은 이유 /시기를 정당화하는 것입니다.

댓글

답변

일반 암호화와 인증 된 암호화 (AE)의 중요한 차이점 AE가 추가로 제공하는 일반 암호화는 기밀성 만 제공합니다. 이 두 가지 개념을 자세히 조사해 보겠습니다.

추가 텍스트에서는 $ K $ 가 알려진 비밀 키라고 가정합니다. 승인 된 당사자에게 전달되지만 공격자에게는 알려지지 않았습니다.

목표

기밀성 (개인 정보 보호) 은 공격자가 암호문 pan class = “math-container”에서 일반 텍스트 $ P $ 에 대한 정보를 얻을 수 없음을 의미합니다. 길이를 제외하고> $ E_K (P) $ . 즉, 암호문은 $ K $ (일회성 패드에서 Enigma에 이르기까지) 모든 민속 암호화 방법은 (일부 가정하에) 기밀성을 제공하며 그에 대한 정보 만 제공합니다.

데이터 진위성 (무결성) $ K $ 를 소유 한 승인 된 당사자 (수신자)가 수신 여부를 확인할 수 있음을 의미합니다. Ved 데이터 $ D $ 는 진짜입니다. 즉, $ K $ 를 아는 발신자 만 생성했습니다. . 데이터는 일반 텍스트 또는 암호문 일 수 있으며 각 경우에 인증 된 데이터에는 미묘한 차이가 있습니다. 암호문이 인증 된 경우 키 소유자가 암호문을 승인했지만 반드시 일반 텍스트는 아닙니다. 정통성을 확보하는 전통적인 방법은 메시지 인증 코드 (MAC)를 사용하는 것입니다. $$ H_K (D) = T, $$ 여기서 $ T $ 태그 라고합니다. 공개 키 암호화의 세계에서 동일한 목표가 디지털 서명으로 달성됩니다.

필요한 것

사용자는 일반적으로 원하는 속성을 결정할 수 있습니다. 예를 들어, 공격자가 데이터를 수정할 수 없다는 것을 알고 있으면 인증 할 필요가 없습니다. 그러나 둘 다 필요한 경우 두 가지 유형의 체계를 결합하는 안전하고 안전하지 않은 방법이 있습니다. 예를 들어 두 스키마에서 동일한 키 $ K $ 를 사용하는 순진한 접근 방식은 대부분의 인스턴스화에서 위험 할 정도로 안전하지 않습니다. 따라서 결합 된 체계가 권장됩니다.

인증 된 암호화

인증 된 암호화 (AE)는 기밀성과 데이터 신뢰성을 동시에 제공합니다. AE 체계는 일반적으로 기밀성 또는 진위성 체계보다 더 복잡합니다. 그러나 일반적으로 하나의 키만 필요하고 사용자가 잘못된 작업을 수행 할 자유가 적기 때문에 더 강력하기 때문에 사용하기가 더 쉽습니다 ( 참조). 보다 정교한 답변 ).

인증 된 암호화 체계는 별도의 기능으로 관련 데이터 라고하는 입력의 일부를 인증 할 수 있지만 암호화 할 수는 없습니다. . 예를 들어, 인터넷 패킷의 내용을 암호화하고 싶지만 헤더는 암호화되지 않은 채로 두어야하지만 내부 데이터에 묶여 있어야합니다.

보안

보안 체계가 의미하는 바를 아직 지정하지 않았습니다. 분명히 몇 가지 보안 개념이 있으며 사용자는 공격자에게 기대하는 기능에 따라 그중 하나를 선택해야합니다.

기밀 유지 전용 모드의 경우 가장 인기있는 작업입니다. 보안 개념은 선택된 일반 텍스트 공격 을 처리합니다. $ E $ 를 암호화 체계로 지정합니다. 우리는 공격자가 일부 평문 $ P $ 을 알고있을뿐만 아니라 암호화를 위해 일부 평문을 선택할 수도 있다고 가정합니다 (이것은 매우 실용적인 상황입니다).따라서 우리는 공격자가 암호화를 위해 일반 텍스트를 선택할 수 있도록 허용합니다. 보안 체계에서 여전히 필요한 것은 각 경우에 무작위로 보이는 암호문을 출력한다는 것입니다. $$ E_K (P_1), E_K (P_2), \ ldots, E_K (P_n) \ sim RandomString (| P_1 | + | P_2 | + \ cdots + | P_n |) $$

적은 자신이 얻은 진정한 랜덤 비트 생성기의 출력에서 얻은 전체 암호문 집합을 구별 할 수 없습니다. 비록 적이 평문을 반복하더라도 동일한 길이입니다. 후자의 요구 사항은 계획이 비 결정적이어야 함을 의미하며, 실제로 이러한 요구 사항을 충족하는 기밀성 전용 모드는 확률 적이거나 논스 기반입니다.

관련된 민속 보안 개념이 있습니다. 키 $ K $ 자체를 복구 할 수있는 기능이있는 체계의 보안. 이것은 키가 다른 곳에서 사용될 수있을 때 관련이 있었지만 지금은 훨씬 덜 일반적이며 위에서 설명한 보안 개념이 널리 퍼져 있습니다.

인증 모드 의 보안은 다음에서 정의됩니다. 다른 방법입니다. 비밀 키 $ K $ 를 사용하여 $ H_K $ 가 그러한 체계가되도록합니다. 공격자가 아직 인증되지 않은 데이터 $ D $ 를 선택하면 $ 태그를 추측 할 기회가 필요합니다. T $ ( $$ H_K (D) = T $$ )는 무시할 수 있습니다. $ (D, T) $ 쌍을 검증 자에게 제출하면 $ \ perp $ (오류).

우리는 기밀성 전용 모드에 대한 선택된 암호문 공격 에 대해 이야기하지 않았습니다. 공격자가 해독을 위해 자신의 암호문을 보낼 수도있는 공격입니다. 이 설정은 실제에도 나타나지만 (선택된 일반 텍스트 공격보다 덜 자주 발생하더라도) 기밀성 전용 체계는 이러한 공격에 저항 할 수 없습니다. 이러한 종류의 보안을 설정하려면 사용자는 다시 인증 된 암호화 로 전환해야합니다.

인증 된 암호화 체계의 보안은 두 부분으로 정의됩니다. 첫째, 기밀성 전용 모드와 유사하게 공격자는 암호문과 임의의 문자열을 구별 할 수 없어야합니다. 둘째, 해독을 위해 보낸 가짜 ( $ K $ 에 생성되지 않은) 암호문이 무엇이든간에 $ \ perp를받을 가능성이 높습니다. $ 에 응답합니다.

따라서 인증 된 암호화 모드는 필요한 경우 선택한 암호문 공격에 대한 보안도 제공합니다.

작동 방식

CCM, GCM, OCB, EAX 등 다양한 통합 인증 암호화 체계가 있습니다. , 기밀성과 신뢰성을 설정하는 메커니즘이 밀접하게 결합되어 있습니다. 이러한 계획의 설계는 주제를 훨씬 뛰어 넘습니다. 그러나 다음과 같이 작동하는 Encrypt-then-MAC로 잘 알려진 간단한 구성 체계가 있습니다. $ K_1, K_2 $ 를 비밀 키로, $ P $ 를 일반 텍스트로, $ E $ 는 일부 암호화 모드이고 $ H $ 는 일부 MAC입니다. 그런 다음 계획은 $$ \ Pi_ {K_1, K_2} : M \ rightarrow E_ {K_1} (M) || H_ {K_2} (E_ {K_1} (M)) $$ $ E $ 가 보안 기밀 모드이고 $ H $ 는 보안 인증 모드입니다.

인증 된 암호화 체계의 추가 기능

인증 된 암호화 체계에는 기밀성과 신뢰성을 모두 제공하는 것 외에도 여러 가지 추가 기능이있을 수 있습니다. 모든 체계가없는 체계는 없으므로 사용자 설정에 따라 최선의 선택이 결정됩니다.

  • 보안 수준 . 체계는 기밀성과 데이터 신뢰성을 보장합니다. 암호화 된 데이터 또는 복호화 요청의 양에 제한이 있습니다.이 제한은 일반적으로 키 공간보다 훨씬 낮으며 AES 기반 모드의 경우 일반적으로 $ 2 ^ {64} $를 초과하지 않습니다. .

  • Parallelism 많은 리소스를 사용할 수있는 경우 암호화, 암호 해독 또는 확인을 병렬로 실행할 수 있습니다. 연결을 사용하는 모드 (예 : CBC 암호화 또는 스폰지 구성에서 파생 된 모드)는 병렬화가 어렵습니다.

  • 온라인 암호화 . 길이에 대한 지식없이 데이터를 사용할 수있을 때 즉시 암호화 할 수있는 체계가 온라인 상태임을 나타냅니다.

  • 특허 사용 . 가장 흥미로운 AE 체계 중 하나 인 OCB 모드는 특허를 받았으며 빈도가 낮습니다. 이 속성 때문에 사용 및 분석되었습니다.이 제도는 특허가없는 것이 바람직합니다.

  • 태그 업데이트 . GCM과 같은 몇 가지 예외를 제외하고 대부분의 체계는 일반 텍스트의 작은 부분이 수정되면 거의 전체 암호문을 다시 계산해야합니다. 암호문을 빠르게 업데이트 할 수 있다면 하드 드라이브 암호화와 같은 대량의 암호화 된 데이터를 훨씬 빠르게 처리 할 수 있습니다.

  • 논스 또는 임의의 사용 IV . 논 스와 랜덤 IV는 종종 호환되지 않는 별개의 보안 모델로 이어집니다 (스킴은 논 스로 안전 할 수 있지만 동일한 길이의 랜덤 IV로는 안전하지 않거나 그 반대의 경우도 마찬가지 임). nonce 고유성을 보장하기가 더 어려울 수 있지만 임의 IV에는 별도의 난수 생성 메커니즘이 필요하며 암호문 확장으로 이어집니다.

  • Variable key, nonce, 또는 태그 길이 . 일반적으로 세 가지 매개 변수는 모두 AE 체계를 사용하는 응용 프로그램에 의해 제한됩니다. 차례로, AE 체계에는 자체적으로 때로는 호환되지 않는 제한이 있습니다. 체계의 가변성이 높을수록 더 많은 애플리케이션에 적합합니다.

  • 관련 데이터 처리 . 모든 최신 체계는 암호화되지 않은 관련 데이터의 인증을 허용합니다. 그러나 이들 중 일부는 일반 텍스트가 끝나기 전에 AD를 전처리 할 수 없으므로 성능이 저하 될 수 있습니다.

추가 자료

Rogaway의 기술 보고서 는 기밀성에 대한 포괄적 인 설문 조사입니다. -전용 모드, MAC 및 일부 인증 된 암호화 모드. 또한 보안 개념에 대한 모든 공식적인 세부 정보가 포함되어 있습니다.

설명

  • 많은 실제 상황에서 인증 된 암호화 체계의 선택이 대부분 결정된다는 점을 덧붙일 수 있습니다. 적절한 규약이나 프로토콜에 따라. 사람들이 인증 된 암호화에 눈살을 찌푸리는 것은 매우 흔한 일이지만, 실제로는 ‘ MAC-then-encrypt 및 encrypt-then-MAC의 사용자 지정 구현이 사용보다 결함이있는 것을 보았습니다. 인증 된 암호화의. 이는 조합을 올바르게 구현하기 위해 세부 사항에 많은주의가 필요하기 때문입니다.
  • 추가 속성 측면에서 보안 평가에있어 부 채널 (특히 타이밍 부 채널) 생성을 피하는 것이 중요했습니다. AE (AD) 암호 제품군의. 실제적으로 이것은 키 또는 입력 평문의 영향을받지 않는 시간에 실행되도록 암호를 구현할 수 있음을 의미합니다.

Answer

안전하지 않은 채널을 통해 정보를 전송할 때 데이터가 안전하기를 바랍니다.

그게 무슨 뜻일까요? 이것들을 논의하기 위해 우리는 Alice와 Bob의 표준 암호화 상황을 사용할 것입니다. Alice는 안전하지 않은 채널 (이것에 대해 논의 할 것입니다)을 통해 무언가 ( 일반 텍스트 )를 Bob에게 보내려고합니다.이 채널은 Eve (도청 자)와 Mallory (악의적으로 간섭하려고 함)의 말을 듣게됩니다. 이것이 의미하는 바는 당연히 논의 될 것입니다.

기밀성 : Alice가 Bob에게 메시지를 보낼 때, 우리는 그들의 의사 소통을 듣는 도청 자 Eve가 그들의 메시지 내용에 대해 아무것도 알 수 없도록 요구합니다.

사유 : 그렇지 않으면 Eve는 Alice / Bob이 공유하고 싶지 않은 것을 배울 수 있습니다.

해결 방법 : 우리는 평문을 암호문으로 변환하는 암호화 를 사용합니다 (정보 이론적 의미에서 )에는 추출 할 수없는 일반 텍스트에 대한 정보 만 포함되어 있습니다. 즉, Goldwasser 를 패러 프레이징) ing Eve는 암호문을 알고 있으면 일반 텍스트에 대해 배울 수 있으며 암호문없이 추론 할 수도 있습니다.

이 경우에도 우리는주의해야합니다. 스킴이 수동적 공격자 (메시지 스트림을 수신하는 사람)에 맞서기 때문에 적극적인 공격자에 대해 강력하게 만들지는 않습니다. 예를 들어 CBC를 고려하십시오. 모드가 사용됩니다. IND CPA 게임에서 안전합니다. 안전하다고 느낄 수 있습니다. 그러나 CCA 게임에서는 공격자가 메시지 복호화를 요청할 수 있습니다 (암호문의 복호화는 아님). . 암호문 $ c = {\ small IV} \ mathbin \ | c_1 \ mathbin \ | \ dots \ mathbin \ | c_n $에서 그가 할 수있는 일은 $ c “=의 암호 해독을 요청하는 것입니다. a \ mathbin \ | c $, 여기서 $ a $는 비어 있지 않은 메시지입니다. 이것은 암호문과 같지 않으므로 게임에서 허용되며 마지막 $ n $ 블록 만 가져옴으로써 암호문의 복호화를 추출 할 수 있습니다.

이러한 예는 여러분이 생각하는 것만 큼 인위적이지 않습니다. 왜냐하면 우리가 해독 오라클로 모델링 한 것은 공격자가 문자열을 해독 할 수 있지만 요청할 수있는 데이터라는 점에서 존재할 수 있기 때문입니다. 복호화는 특정 문자열로 시작해야 할 수 있습니다 (SQL 인젝션 개념과 유사).

진정성 : Bob이 메시지를 받으면 확실히 Alice가 보낸 메시지임을 알 수 있습니다.

사유 : 그렇지 않으면 Mallory는 Bob이 알지 못하는 상태에서 Alice가 보낸 메시지라고 Bob에게 메시지를 보낼 수 있습니다. 입증 가능한 보안에서 우리는 “Mallory가 가짜 메시지를 만드는 것이 의미하는 바에 대해 매우 관대합니다. Bob이 수락하는 모든 메시지를 생성 할 수 있으면 이깁니다 (Alice가 이미 보낸 메시지와 거의 동일하더라도). 이를 수행하는 방법에는 재생, 재정렬 또는 비트 플립 공격과 같은 다양한 방법이 있습니다.

해결 방법 : 인증 만 수행하려면 를 사용할 수 있습니다. MAC .

진정성 및 기밀성 : Alice와 Bob은 기밀로 통신하며 각 메시지는 사실입니다.

사유 : 스트림이 기밀 일 경우 (예 : 암호화는되지만 인증 된 암호화는 아님) 도청자는 이것이 무엇인지 알지 못하더라도 전송중인 메시지를 수정할 수 있습니다. 예를 들어 Alice & Bob이 완벽한 보안 One Time Pad ( OTP ) 비밀 키 $ k $ 및 메시지 $ m $ :

$$ A \ text {sends} c = m \ oplus k \ to B \\ \ prec M \ text {가로 채기} c \ succ \\ M \ text {전송} c “= c \ oplus h \ to B \ text {(일부 값에 대해} h) \\ B \ text {수신} c”\ text {M에서 보낸 것임} c \ text {보낸 사람} A \\ B \ text {해독} m “= c”\ oplus k = c \ oplus h $$ 이것은 $ B $가 $ 메시지를 수신했음을 의미합니다. m “$이지만 $ m $라고 생각합니다.

그러므로 프로토콜이 인증되지 않았고 Mallory가 Alice가 Bob을 보낼 메시지가”I agree to send £ ??? “라는 것을 알고 있다고 가정합니다. 계정 # ???? “의 일부 값은 ???. 계정이 정확히 무엇인지 알 수 없어서 자신의 계정으로 지불금을 보낼 수없는 경우에도 계정을 변경할 수 있습니다. 더 이상 Alice의 계정이 아닙니다.

솔루션 : 인증 된 암호화!


AE의 필요성을 설명하는 좋은 기사는 이 블로그 게시물 . 작동 모드에 대한 더 기술적 인 소개는 Rogaway의 이 문서 입니다.

코멘트

  • 정보 이론적 보안을 보장하는 유일한 암호화 체계는 일회성 패드입니다. IND-CPA 암호화 체계는 정보를 추출 할 수 없음을 보장합니다. 확률 론적 다중 시간 적의 암호문에서.
  • 예, 명확하지 않은 (/ 잘못 작성되었습니다!) 작성되었습니다. 수정 해 주셔서 감사합니다. ‘ 추출 할 수있는 < 정보가 없습니다. > ‘
  • 실제로 많은 ” 기밀 유지 전용 ” 모드는 실제로 활성 공격자 (메시지를 수정하거나 선택한 일반 텍스트 또는 선택한 암호문 공격을 마운트 할 수 있음)의 공격을받을 때 좋은 기밀성을 제공하지 않습니다. ‘ . 따라서 실제로 이러한 모드 (통신 채널 용)는 기밀 부분을 얻기 위해 일부 MAC과 함께 사용해야합니다. AE 모드는 이들을 하나로 결합합니다.
  • @ PaŭloEbermann / 그 외 모든 사용자 : 저는 정말 ‘ 제가 ‘ 여기에 좋은 답변을 썼습니다 (결국 금요일 밤입니다!).하지만 저는 단지 몇 가지 첫 번째 생각을 적고 싶었습니다. 자신의 답변을 추가하거나 수정하거나 직접 작성하십시오. 사람들이 내 답변이 ” 충분히 ” 좋은 답변에 가깝다고 생각한다면 (다시 읽습니다. ‘ t) 그러면 ‘ 그냥 편집하거나 내 단어를 재사용 할 수 있습니다.
  • AE는 또한 무결성을 제공한다고 생각합니다 ( en.wikipedia.org/wiki/Authenticated_encryption )도 추가하는 것이 좋습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다