(해석)
"블록"은 모든 종류의 데이터를 나타낼 수 있는 고정된 수의 비트 또는 바이트를 나타냅니다. AES는 블록을 처리하고 다른 블록을 출력합니다. 우리는 AES-128로 알려진 128비트(16바이트) 블록과 128비트 키에서 작동하는 AES의 변형에 대해 구체적으로 이야기할 것입니다.
동일한 키를 사용하여 순열을 반대로 수행하여 출력 블록을 원래 입력 블록으로 다시 매핑할 수 있습니다. 입력 블록과 출력 블록 사이에 일대일 대응이 있다는 것이 중요합니다. 그렇지 않으면 암호문에 의존하여 우리가 시작한 것과 동일한 평문으로 다시 복호화할 수 없을 것입니다.
일대일 대응의 수학 용어는 무엇입니까?
Flag : crypto{bijection}
(해석)
128비트 키스페이스를 무차별 대입하는 것이 얼마나 어렵습니까? 누군가 AES-128 키에 대해 전체 비트코인 마이닝 네트워크의 힘을 돌리면 키를 해독하는 데 우주 나이의 100배 이상이 걸릴 것이라고 추정했습니다.
AES에 대한 공격 이 무차별 대입 공격 보다 낫지만 약간만 - AES-128의 보안 수준을 126.1비트로 낮추고 8년 이상 개선되지 않은 것으로 나타났습니다. 128비트가 제공하는 큰 "보안 마진"과 광범위한 연구에도 불구하고 개선되지 않은 점을 감안할 때 AES 보안에 대한 신뢰할 수 있는 위험으로 간주되지 않습니다. 그러나 매우 좁은 의미에서 AES를 "중단"합니다.
마지막으로, 양자 컴퓨터는 쇼어의 알고리즘을 통해 RSA와 같은 인기 있는 공개 키 암호 시스템을 완전히 깨뜨릴 수 있는 잠재력을 가지고 있지만 그로버의 알고리즘 을 통해 대칭 암호 시스템의 보안 수준을 절반으로 줄이는 것으로 생각됩니다. 이것이 AES-256이 양자 미래에 여전히 매우 적절한 128비트 보안을 제공할 것이기 때문에 성능은 떨어지지만 AES-256 사용을 권장하는 이유 중 하나입니다.
AES에 대한 최고의 단일 키 공격의 이름은 무엇입니까?
Flag : crypto{biclique}
(풀이 실패)
(해석)
각 변환 단계는 1940년대에 Claude Shannon이 확립한 보안 암호의 이론적 속성을 기반으로 정의된 목적을 가지고 있습니다. 다음 챌린지에서 각각에 대해 자세히 살펴보겠습니다.
1. KeyExpansion 또는 키 일정
128비트 키에서 11개의 개별 128비트 "라운드 키"가 파생됩니다. 하나는 각 AddRoundKey 단계에서 사용됩니다.
2. 초기 키 추가
AddRoundKey - 첫 번째 라운드 키의 바이트는 상태의 바이트와 XOR됩니다.
3. 라운드 - 이 단계는 9개의 메인 라운드와 1개의 "최종 라운드"에 대해 10번 반복됩니다.
a) SubBytes - 상태의 각 바이트는 룩업 테이블("S-box")에 따라 다른 바이트로 대체됩니다.
b) ShiftRows - 상태 행렬의 마지막 세 행이 전치됩니다. 열 또는 두 개 또는 세 개로 이동합니다.
MixColumns - 상태의 열에서 행렬 곱셈이 수행되어 각 열의 4바이트를 결합합니다. 이것은 최종 라운드에서 건너뜁니다.
d) AddRoundKey - 현재 라운드 키의 바이트는 상태의 바이트와 XOR됩니다. 초기 일반 텍스트 블록을 상태 행렬로 변환하는 함수가 포함되어 있습니다.
해당 행렬을 다시 바이트로 변환 bytes2matrix하는 함수를 작성하고 결과 일반 텍스트를 플래그로 제출합니다. 챌린지 파일:matrix.py
리소스:YouTube: Flash 애니메이션으로 설명된 AES Rijndael Ciphermatrix2bytes
Flag : ??
(해석)
이전 과제 세트는 AES가 데이터 블록에서 키 순열을 수행하는 방법을 보여주었습니다. 실제로는 단일 블록보다 훨씬 긴 메시지를 암호화해야 합니다. 작동 모드는 더 긴 메시지에 AES와 같은 암호를 사용하는 방법을 설명합니다.
모든 모드는 잘못 사용하면 심각한 약점이 있습니다. 이 범주의 과제는 API와 상호 작용하고 이러한 약점을 악용할 수 있는 웹 사이트의 다른 섹션으로 안내합니다. 인터페이스에 익숙해지고 다음 플래그를 사용하는 데 사용하십시오!
http://aes.cryptohack.org/block_cipher_starter
encrypt_flag() 요청하고,
{"ciphertext":"64cede86f533b58fe197a0c9aca6f8d5a7b4389c629cef1c9e90f4e5fe7629a4"}
암호문 값을 암호 해독한 후에
{"plaintext":"63727970746f7b626c30636b5f633170683372355f3472335f663435375f217d"}
16진수 디코더에 변환하면 Flag를 얻을 수 있다.
Flag : crypto{bl0ckc1ph3r5_4r3_f457!}
(풀이 실패)
(해석)
대칭 키 알고리즘의 키는 암호나 기타 예측 가능한 데이터 대신 임의의 바이트여야 합니다. 임의 바이트는 CSPRNG(암호화 보안 의사 난수 생성기)를 사용하여 생성해야 합니다. 어떤 식으로든 키를 예측할 수 있는 경우 암호의 보안 수준이 감소하고 암호문에 액세스한 공격자가 암호를 해독할 수 있습니다.
키가 임의의 바이트로 구성된 것처럼 보인다고 해서 반드시 그런 것은 아닙니다. 이 경우 키가 해싱 기능을 사용하여 간단한 암호에서 파생되어 암호문을 해독할 수 있습니다.
이 문제의 경우 엔드포인트에 대한 HTTP 요청을 스크립팅하거나 오프라인에서 암호문을 공격할 수 있습니다. 행운을 빕니다!
http://aes.cryptohack.org/passwords_as_keys
Flag : ??