1. 개요
암호기술은 중요한 정보를 읽기 어려운 값으로 변환하여 제 3자가 볼 수 없도록 하는 기술입니다. 암호기술의 안전성은 수학적인 원리에 기반하며, 보안에 있어서 중요한 정보를 직접적으로 보호하는 원천기술 입니다.
암호기술을 통해 보호하고자 하는 원본 데이터를 평문(plaintext)라고 하며, 평문에 암호기술을 적용한 것을 암호문(ciphertext)라고 합니다. 이렇게, 평문에 암호기술을 적용하여 암호문으로 변환하는 과정을 암호화라고 하며, 다시 평문으로 복원하는 과정을 복호화라고 합니다. 암호화하기 위해서는 암호 키(key)가 필요하며, 키가 있어야만 암호문을 복호화할 수 있습니다. 그렇게 때문에 암호 키는 비밀(secret)로 유지되어야 하며 제3자가 알 수 없어야 합니다.
암호기술을 이용하여 데이터 기밀성, 데이터 무결성, 인증 및 부인 방지 등의 기능을 제공할 수 있습니다.
ㆍ기밀성(Confidentiality) : 허락되지 않은 사용자 또는 객체가 정보의 내용을
알 수 없도록 하는 성질
ㆍ무결성(Integrity) : 허락되지 않은 사용자 또는 객체가 정보를 함부로 수정할 수
없도록 하는 성질
ㆍ인증(Authentication) : 사용자 또는 객체의 디지털 정체성을 식별
ㆍ부인방지(Non-repudiation) : 정보를 보낸 사람이 나중에 정보를 보냈다는 것을
부인하지 못하도록 함
2. 암호기술의 종류
1) 대칭키 암호
대칭키 암호(Symmetric-key Cryptography)는 암ㆍ복호화에 같은 암호 키를 사용하는 알고리즘이며, 송신자와 수신자는 암호 키가 노출되지 않도록 비밀로 관리해야 합니다. 대칭키 암호는 내부 구조가 간단한 치환과 전치의 조합으로 되어 있어 연산 속도가 빠르다는 장점이 있습니다. 하지만, 송ㆍ수신자 간에 동일한 키를 공유해야 하므로 많은 사람들과의 정보 교환 시 많은 키를 관리해야 하는 어려움이 있습니다.
블록암호 | 블록 암호(Block Cipher)는 평문을 고정된 크기의 블록단위로 암ㆍ복호화를 수행하며, 각 블록마다 동일한 키가 사용됩니다. 블록 암호는 고정된 크기로 평문을 나누기 때문에, 원하는 길이를 맞추기 위하여 패딩(padding)이라는 기법을 이용합니다. 또한, 하나의 키로 여러 블록을 안전하게 처리하기 위하여 운용 방식(mode of operation)이라는 절차를 이용합니다. Shannon의 암호 이론에 의하면 전치와 환자를 반복시켜 평문의 통계적 성질이나 암호 키와의 관계가 나타나지 않아 안전한 암호를 구성할 수 있습니다. 대표적인 블록 암호 알고리즘으로는 국산 알고리즘인 SEED, HIGHT, ARIA, LEA와 외산 알고리즘인 DES, AES 등이 있습니다 |
스트림 암호 | 스트림 암호(Stream Cipher)는 평문과 동일한 길이의 키스트림(key stream) 수열을 생성하여, 평문과의 XOR연산을 통하여 암ㆍ복호화를 수행합니다. 키스트림 수열을 생성할 때, 평문과 독립적으로 생성하는 경우를 동기식 스트림 암호라고 하며, 반대로 평문이 키스트림 수열에 영향을 미치는 경우를 비동기식(혹은 자기동기) 스트림 암호라고 합니다. 구현 여건이 제약되는 환경에서 구현이 용이하며, 무선 통신 등의 환경에 주로 사용된다. 대표적인 스트림 암호 알고리즘으로 RC4, A5/1, A5/2 등이 있습니다. |
2) 비대칭키 암호
비대칭형 암호는 이름 그대로 암호화 키와 복호화 키가 다르다. 공개키 암호와 전자서명 등이 있다.
공개키 암호 | 비대칭키 암호는 공개키 암호(Public-key Encryption)라고도 하며, 대칭키 암호와 달리 암·복호화에 서로 다른 키를 사용하는 알고리즘입니다. 송신자는 수신자의 공개키를 이용하여 암호화하며, 수신자는 자신의 공개키로 암호화된 암호문을 자신의 개인키로 복호화할 수 있습니다. 공개키 암호는 수학적인 난제를 기반으로 설계되어 있고 암복호화에 복잡한 수학 연산을 사용하기 때문에, 대칭키 암호에 비해 효율성이 떨어질 수 있습니다. 하지만, 여러 송신자가 하나의 공개키로 암호화를 수행하기 때문에 사용자가 많더라도 키를 관리하는 데에 유리합니다. 대표적인 알고리즘으로 RSA, ElGamal, ECC 등이 있습니다. |
전자 서명 | 전자 서명(Digital Signature)은 인터넷 상에서 본인임을 증명하기 위해 서명을 하는 수단으로, 공개키 암호를 거꾸로 활용하는 방식입니다. 송·수신자의 역할이 반대로 되어, 개인키를 소유한 사람만이 전자 서명 알고리즘을 통해 평문에 대한 서명 값을 생성할 수 있습니다. 생성된 서명 값에 대하여 공개키를 이용하면 평문을 검증할 수 있기 때문에, 누구나 그 서명을 검증할 수 있게 됩니다. 대표적인 전자 서명 알고리즘으로 DSA, RSA SIgnature, ECDSA 등이 있습니다 |
3) 해시함수
해시 함수(Hash Function)는 임의의 길이의 메시지를 입력으로 받아 고정된 길이의 해시 값을 출력하는 함수입니다. 해시 함수에는 암호 키가 사용되지 않기 때문에, 같은 입력에 대해서 항상 같은 해시 값을 얻을 수 있습니다. 이러한 성질로 인해 입력 메시지에 대한 변경할 수 없는 증거 값을 만들어냄으로서, 주로 무결성을 제공하는 목적으로 사용됩니다.
안전한 해시 함수는 역상 저항성, 제 2 역상 저항성, 충돌 저항성을 가져야 합니다.
역상 저항성 | 어떤 해시 값에 대하여, 원래 입력 값을 찾는 것이 어려워야 하며, 이를 일방향성(One-wayness)이라고도 합니다. |
제 2 역상 저항성 | 어떤 입력 값에 대하여, 그 입력값의 해시 값과 같은 해시 값을 같은 또다른 입력값을 찾는 것이 어려워야 합니다. |
충돌 저항성 | 같은 해시 값을 갖는 두 입력 값을 찾는 것이 어려워야 합니다. |
해시 함수는 데이터가 통신 중 변조되지 않았다는 무결성 검증이 필요할 때, 메시지인증코드(MAC, Message Authentication Code)의 형태로 사용될 수 있습니다. 또한, 해시 함수는 전자서명에도 활용될 수 있습니다. 전체 메시지가 아닌 짧은 해시 값에 전자 서명을 계산하면 효율적으로 서명 값을 생성할 수 있습니다. 원래 메시지가 아닌 해시 값에 대해 서명을 하였지만 같은 해시 값을 갖는 다른 메시지를 찾는 것이 어렵기 때문에, 이 서명은 메시지에 대한 서명이라고 인정됩니다. 대표적인 해시 함수로는 MD5, HAS-160, SHA-1, SHA-2, SHA-3 등이 있습니다.
출처]
한국인터넷진흥원(KISA) : 암호화 기술
위키 백과 : 해시 함수 이미지
참고 문제]
대칭키 암호)
Python 287제] 두근두근 파이썬(개정판) CHAPTER 8 도전문제 p256
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > 알고리즘' 카테고리의 다른 글
백트래킹(Backtracking, 되추적) (0) | 2024.12.03 |
---|---|
유클리드 호제법 (2) | 2024.11.27 |
DP(Dynamic Programming, 동적 계획법) (0) | 2024.11.22 |
분할 및 정복(Divide and Conquer) 전략 알고리즘 (0) | 2024.11.21 |
보간 검색(Interpolation Search) (1) | 2024.11.20 |
댓글