가역적 (Invertible)
가역적(invertible)이란 함수나 변환에 역함수가 존재해, 출력으로부터 원래 입력을 유일하게 되돌려 얻을 수 있다는 뜻입니다. 수학적으로 함수가 가역이려면 전단사(bijection), 즉 서로 다른 입력이 서로 다른 출력으로 가고(단사) 모든 출력이 어떤 입력에 대응해야(전사) 합니다.
자세히 알아보기
함수 f에 대해 f⁻¹(f(x)) = x 를 만족하는 함수 f⁻¹가 있으면 f는 가역입니다. 유한 집합에서 자기 자신으로 가는 가역 함수는 원소를 재배열하는 순열(permutation)과 같습니다. 행렬의 경우 행렬식이 0이 아니면 가역이며, 모듈러 연산에서는 a와 n이 서로소일 때 a의 곱셈 역원이 존재합니다.
암호학에서 가역성은 핵심 성질입니다. 블록 암호는 키가 정해지면 평문 블록 집합에서 암호문 블록 집합으로 가는 가역 변환(순열)이어야 하며, 그래야 같은 키로 복호화할 수 있습니다. 페이스텔 구조는 라운드 함수 자체가 가역이 아니어도 전체 변환이 가역이 되도록 설계된 대표적인 방식입니다.
'가역'과 '되돌리기 쉽다'는 다른 문제입니다. 공개 키 암호에 쓰이는 트랩도어 함수는 가역이지만, 비밀 정보 없이 역을 계산하는 것은 사실상 불가능합니다. 반면 해시 함수는 임의 길이 입력을 고정 길이로 줄이므로 수학적으로 가역이 아니며, 일방향 함수로 설계됩니다.
블록체인·암호화폐에서는
비트코인·이더리움의 개인 키에서 공개 키를 계산하는 타원곡선 스칼라 곱은 일대일 대응이지만 역방향(이산 로그) 계산이 매우 어렵다는 점에 보안이 기대고 있습니다. 주소 생성에 쓰이는 해시(SHA-256, Keccak-256, RIPEMD-160)는 비가역이므로 주소에서 공개 키를 복원할 수 없습니다.
가역성과 암호 설계
블록 암호의 S-박스(치환 상자)는 대개 가역이 되도록 설계되지만, DES의 S-박스처럼 6비트를 4비트로 줄이는 비가역 구성도 있습니다. DES는 이를 페이스텔 구조 안에서 써서 전체 변환을 가역으로 만듭니다. AES는 각 라운드의 연산(SubBytes, ShiftRows, MixColumns, AddRoundKey)이 모두 가역이며, 복호화 시 각 연산의 역을 반대 순서로 적용합니다.
자기 자신이 곧 역함수인 함수(f(f(x)) = x)는 대합(involution)이라고 하며, XOR로 키를 더하는 연산이 대표적입니다.
쉽게 말하면
되감기가 가능한 변환입니다. 카이사르 암호처럼 글자를 세 칸 밀었다면 세 칸 되돌려 평문을 얻을 수 있습니다.
예시
mod 26에서 f(x) = 3x + 5 는 3과 26이 서로소이므로 가역이며, 3의 역원이 9이므로 역함수는 f⁻¹(y) = 9(y − 5) mod 26 입니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.