Background 공개 키 관련 문제이다. download시 1811ca69474cf7dce163acd43dc99520d94c98de9fab1da5285c53795bcc77451af202566bb90aad9921448ce1eec7b26e1b67d0c6b89a26ccc87f925d19db825f36d4cbc9077eaa2b17219ed24260d02f6af94a56f7c14980e27cfa38e3710dcfcbd1944ed7370032432504347c82ce9e9d ciphertext와 pub.pem파일이 주어진다. 이를 가지고 ciphertext를 복호화한다. 풀이 이 문제를 올리는 이유로는 RSA를 거의 풀어보지 않기도 했고 이런 방식을 사용할 수 있다는 점에서 올린다. https://xerxes-..
문제 설명 여기서는 CBC로 암호화할 수 있지만 ECB로만 해독할 수 있습니다. 서로 다른 모드이기 때문에 약점이 될 수는..없겠죠..? Play at https://aes.cryptohack.org/ecbcbcwtf/ ECB CBC WTF Hex Encoder/Decoder This is a convenient encoder designed for ASCII Hex translations. It won't work for decoding hex to byte streams and will just show [unprintable] in that case. aes.cryptohack.org 문제 풀이 from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route..
개념 설명 ECB is the most simple mode, with each plaintext block encrypted entirely independently. In this case, your input is prepended to the secret flag and encrypted and that's it. We don't even provide a decrypt function. Perhaps you don't need a padding oracle when you have an "ECB oracle"? ECB는 가장 간단한 모드로, 각 일반 텍스트 블록이 완전히 독립적으로 암호화된다. 이 경우 입력 내용이 비밀 플래그 앞에 추가되고 암호화되며, 그게 전부이다. 암호 해독 기능도 제공하지..
개념 설명 대칭 키 알고리즘의 키는 비밀번호나 기타 예측 가능한 데이터가 아닌 무작위 바이트여야 한다. 무작위 바이트는 암호학적으로 안전한 의사 난수 생성기(CSPRNG)를 사용하여 생성해야 한다. 어떤 식으로든 키를 예측할 수 있는 경우 암호의 보안 수준이 낮아지고 암호 텍스트에 엑세스한 공격자가 암호를 해독할 수 있다. ! PRNG는 Pseudo RandomNumber Generator이고 CSPRNG는 앞에 Cryptography Secure가 붙는다. 난수 생성에 대해서는 다른 글에서 다뤄보자. 키가 무작위 바이트처럼 보인다고 해서 반드시 그게 무작위라는 것은 아니다. 이 경우에 키는 해싱 함수를 사용하여 비밀번호에서 파생된 것이므로 암호문 해독이 가능하다. 이 챌린지의 경우, 엔드포인트*에 대한..
개념 설명(?) 이전 과제에서는 AES가 데이터 블록에서 키 순열을 수행하는 방법을 보여주었다. 실제로는 단일 블록보다 더 긴 메시지를 암호화해야한다. 작동 모드는 더 긴 메시지에 AES와 같은 암호를 사용하는 방법을 설명한다. 모든 모드에는 잘못 사용할 경우 심각한 약점이 있다. 이 카테고리의 도전 과제는 API와 상호작용하고 이러한 약점을 악용할 수 있는 웹 사이트의 다른 다른 섹션으로 이동한다. 인터페이스에 익숙해져서 다음 플래그에 도전해보자. https://aes.cryptohack.org/block_cipher_starter/ Modes of Operation Starter Description The previous set of challenges showed how AES performs a..
이 문제는 OTP와 관련된 문제이다. OTP는 인터넷 뱅킹에서 주로 쓰이는 One-Time Password라는 말도 있고.. 암호학 책을 읽다보면 One-Time Pad라는 말도 있는데 One Time Password는 TOTP(Timebased) HOTP(HMAC based)로 나뉜다. TOTP는 시간을 기반으로 일회용 비밀번호를 생성하고 HOTP는 해시 함수를 이용하여 생성하는데 One Time Pad는 그냥 평문의 길이와 키의 길이가 같고 일회용으로 키가 사용되며 xor챕터에서 주로 나왔던 걸로 기억한다. 정의상 이번 문제에서는 One Time Password 같긴 한데 cryptohack에서는 OneTime Pad라고 말하니까 이것도 맞나보다. 분석 #!/usr/bin/env python3 imp..
개념 설명 키 확장 단계 외에도 모든 단계를 스케치했다. SubBytes가 혼동을 제공하고 ShiftRows와 MixColumns가 확산을 제공하는 방법과 이 두 속성이 어떻게 함께 작동하여 상태 행렬에 비선형 변환을 반복적으로 순환시키는지 살펴보았다. 마지막으로 AddRoundKey는 이 substitution-permutation 네트워크에 key를 시드로 하여 암호를 keyed permutation으로 만든다. 복호화에는 "Structure of AES" 챌린지에 설명된 단계를 역으로 수행하여 역연산을 적용하는 것이 포함된다. 여전히 KeyExpansion(키 확장) 을 먼저 실행해야 하며 라운드 키는 역순으로 사용된다는 점에 유의해야 한다. XOR에는 self-inverse(자기 반전) 속성이 있..
개념 설명 순열(Permutation)을 통한 확산. 우리는 S-box 치환이 어떻게 혼란(confusion)을 일으키는지 보았다. Shannon(섀넌)이 설명한 다른 중요한 속성은 "확산(Diffusion)"이다. 이것은 암호 입력의 모든 부분이 어떻게 출력의 모든 부분으로 퍼져야 하는지와 관련이 있다. 치환(Substitution)은 그 자체로 비 선형성을 생성하지만 전체 상태에 걸쳐 비선형성을 분산시키지는 않는다. 확산이 없으면 같은 위치에 있는 같은 바이트는 각 라운드에 동일한 변환이 적용된다. 이를 통해 암호 분석가는 상태 행렬의 각 바이트 위치를 개별적으로 공격할 수 있다. 한 바이트에 적용된 치환이 다른 모든 바이트에 영향을 미치도록 상태 행렬을 스크램블링(scrambling)하여 (가역적인..