-
운영모드 - 2Cryptography - Security/Dreamhack - Basic 2023. 5. 8. 17:49
ECB 모드
블록 암호로 평문을 암호화할 때 평문은 패딩을 거친 뒤 여러 블록으로 나뉘며 각각 운영모드에 맞추어 암호화된다
ECB모드에서 블록들은 모두 같은 키로 암호화된다
Dreamhack - Cryptography 각 블록이 독립적으로 암호화되므로 여러 블록을 병렬적으로 암호화할 수 있다는 장점이 있지만 안전성이 부족한 단점이 있다
ECB 모드의 취약점
같은 블록은 같은 암호문으로 암호화되는 특징을 이용하여 암호문에서 평문의 정보를 습득하거나 리플레이 공격이 가능해지고 약한 혼돈 성질을 가지게 된다
재전송 공격
데이터를 재전송하여 시스템이 의도치 않은 행동을 하게 하는 것
1. Chamero 가 Nelly 에게 10,000만 원을 보내려고 은행에 암호문을 전달하였다
2. 은행은 이 암호문을 해석하여 10,000만원을 송금하였다
3. Nelly가 1번에 이용된 Chamero계좌에서 10,000만원을 보내는 암호문을 습득한 뒤 0000의 숫자가 'k5g6'임을 알고서 암호문에 'k5g6'를 추가하여 은행으로 전달한다
4. 은행은 암호문을 해석하고 Chamero 의 계좌에서 Nelly 에게 10,000,000만 원을 보낸다
CBC모드
어떤 블록을 암호화하기 전에, 이 블록을 직전 블록의 암호문과 XOR 한다
평문의 첫 번째 블록은 이전 블록이 존재하지 않으므로, 초기 벡터라고 불리는 임의의 데이터와 XOR 한다
Dreamhack - Cryptography 각 블록이 서로의 암호화에 영향을 주므로 같은 블록도 전체 평문 및 IV에 따라 암호화 결과가 달라진다
초기 벡터는 일반적으로 논스라는 무작위 값을 사용하며, 이는 공격자가 알아도 안전성에 영향을 끼치지 않는다
만약 공격자가 암호문을 중간에 가로채서 이를 조작할 수 있으면, 복호화 결과의 첫 번째 블록을 조작할 수 있다
따라서 CBC 모드를 사용할 때는 초기 벡터의 무결성을 함께 보장해야 한다한 블록을 암호화할 때 직전 블록의 암호화 결과를 사용하므로 여러 블록을 병렬적으로 암호화할 수 없다
그러나 복호화의 경우, 모든 암호문 블록을 알고 있으므로 병렬적으로 처리할 수 있다CBC모드는 재전송 공격에 강인하며, 높은 혼돈성을 가지고 있어서 블록 암호의 운영 모드로 널리 사용되고 있다
CBC Bit-Flipping Attack
공격자가 초기 벡터를 원하는 값으로 조작하여 복호화된 평문의 첫 번째 블록을 조작하는 공격을 CBC Bit-Flipping Attack이라고 한다
첫 번째 암호문 블록의 복호화 과정을 수식으로 표현하면 아래와 같다
P1=Dk(C1)⨁IV초기 벡터를 로 조작하면 아래와 같이 전혀 다른 값이 나오게 된다
이 결과는 재전송 공격의 상황과 비슷하게 조작된 결과를 얻게 된다
CTR 모드
블록 암호에 nonce와 평문 블록의 인덱스를 결합한 값을 입력한다
암호문은 블록 암호의 출력과 평문 블록을 XOR 하여 생성한다
Dreamhack - Cryptography 는 두 바이트 배열을 결합하는 기호이며 아래는 수학적으로 나타낸 식이다
암호화 :
복호화 :
CTR 모드는 블록을 순서대로 암복호화하지 않아도 되므로 병렬로 암복호화할 수 있으며, 구현이 간단하다는 장점
Dreamhack - Cryptography 공부내용 정리
관련된 문제는 사이트에 수록되어 있습니다
728x90'Cryptography - Security > Dreamhack - Basic' 카테고리의 다른 글
운영모드 - 1 (0) 2023.05.08 DES - 3 (0) 2023.05.08 DES - 2 (0) 2023.05.08 DES - 1 (1) 2023.05.08 AES - 2 (0) 2023.05.02