[암호학] Tiny Encryption Algorithm(TEA), XTEA

암호학에서, Tiny Encryption Algorithm은 구현과 설명이 매우 쉬운 블록 암호이다.

TEA는 두 개의 32비트 부호없는 정수에서 작동하며, 128bit(16 바이트)의 키를 사용한다.

이것은 Feistel 구조와 함께 64 라운드를 사용하며, 일반적으로 cycles로 명칭된 쌍에서 구현된다.

매우 간편한 키 스케쥴을 가지고 있으며, 핵심 재료를 섞는 것은 각 사이클마다 모두 동일하다.

*파이스탈 구조는 다른 포스팅에서 다루도록 한다.

서로 다른 여러 매직 상수들은 symmetry 라운드에 기반한 간단한 공격을 방지하기 위해 사용된다.

매직 상수는 2654435769, 0x9E3779B9이다.

이 숫자는 2 ^ 32 / Golden ratio에서 선택되었다.

TEA는 가역적으로, 암호화를 하면 다시 복호화가 가능하다.

아래는 각각 TEA와 XTEA의 암호화, 복호화에 대한 코드이다.

TEA

더보기

decrypt의 sum값은 0xC6EF3720인 이유는 0x9E3779B9의 값을 32번 더할 때를 기준으로, 원래는 sum의 값이 0x13c6ef3720이지만 uint32_t 자료형에 따라 값의 범위가 부호없는 32비트 정수로 바뀌기 때문에, sum을 0x13C6EF3720으로 정해둔 것이다. 아래 XTEA에서는 sum의 값을 num_rounds에 따라 바뀌도록 delta*num_rounds로 계산식이 적혀있다.

XTEA (eXtended TEA)

더보기


게시됨

카테고리

작성자

태그:

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다