# 가역적 (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 입니다.

---
출처: https://achivx.kr/glossary/invertible-%EC%97%AD%EC%A0%84-%EA%B0%80%EB%8A%A5%ED%95%9C/ · ACHIVX 용어 사전 · 수정일 2026-10-20
