5 분 소요

들어가며

홈페이지를 제작하다 암호화를 적용해야 하는 문제가 생겼는데 암호화라 해봤자 학부 시절에 배운 게 전부라 내가 실질적으로 적용할 수는 없다고 판단해서 암호화를 좀 깊게 그리고 실무와 연결해 보려고 기초부터 다시 공부해 보기로 해서 다시 블로그에 포스팅을 해본다. 사실 어떠한 보안 시스템에 있어도 암호화는 정말 중요하다고 생각한다. 또한 암호화는 엄청 깊은 학문이고 너무 다양해서 적용하는 게 쉽지 않다.

암호? 암호화?

암호 (Cipher):

  • 의미: 암호는 정보를 보호하기 위해 사용되는 특정한 방법이나 시스템을 의미한다. 이것은 원래의 정보를 알아볼 수 없는 형태로 변환시키는 데 사용되는 코드나 알고리즘을 포함한다.
  • 사용: 예를 들어, 시저 암호는 알파벳을 일정한 수만큼 이동시켜 암호화하는 방식이다. 여기서 시저 암호 자체가 암호 방식을 의미한다.

암호화 (Encryption):

  • 의미: 암호화는 정보를 암호로 변환하는 과정을 의미한다. 이것은 원본 데이터를 암호 알고리즘을 사용하여 읽을 수 없는 형태로 만드는 과정이다.
  • 사용: 예를 들어, 메시지를 ‘시저 암호’ 방식으로 암호화하는 것은, 그 메시지를 시저 암호의 규칙에 따라 변환하는 행위를 말한다.

즉 간단히 말해, ‘암호’는 암호화를 수행하는 데 사용되는 방법이나 시스템을 의미하고, ‘암호화’는 실제로 그 방법을 적용하여 데이터를 보호 형태로 변환하는 과정을 말한다.

암호 기술이란?

비밀번호 = 암호 이렇게 생각 할 수도 있지만 사실 이러한 정의는 정말 다양하다. 여러 곳에서 다양한 정의를 내리고 있지만 필자는 한국 최고의 인터넷 정부 기관인 KISA에서 참고 했다. KISA 암호이용활성화 사이트에 가면 암호와 관련된 정보가 정말 많다.

그래서 암호화가 뭔데? 라고 물어본다면 암호 기술은 중요한 정보를 읽기 어려운 값으로 변환하여 제3 자가 볼 수 없도록 하는 기술이라고 한다. 또한 암호 기술의 안전성은 수학적인 원리에 기반하여 보안에 있어서 매우 중요한 정보를 직접 보호 하는 원천 기술이라고 한다.

암호기술을 통해 보호하고자 하는 원본 데이터를 평문(plaintext)라고 하고 평문에 암호기술을 적용한 것을 암호문(ciphertext)라고 한다. 이렇게 평문에 암호기술을 적용하여 암호문으로 변환하는 과정을 암호화라고 하며, 다시 평문으로 복원하는 과정을 복호화라고 한다.

암호화하기 위해서는 암호 키(key)가 필요하며, 키가 있어야만 암호문을 복호화할 수 있다. 그렇게 때문에 암호 키는 비밀(secret)로 유지되어야 하며 제3자가 알 수 없어야 한다. 암호기술을 이용하여 데이터 기밀성, 데이터 무결성, 인증 및 부인 방지 등의 기능을 제공할 수 있다.

쉬운설명 더 보기 [클릭]

암호 기술은 중요한 정보를 비밀 코드로 바꾸는 기술이다. 이 기술을 사용하면 다른 사람들이 중요한 정보를 읽을 수 없게 한다. 이런 비밀 코드는 특별한 수학 규칙을 이용해 만들어져서, 정보를 안전하게 지켜준다.

우리가 지키고 싶은 정보를 '평문'이라고 하고, 그걸 비밀 코드로 바꾼 걸 '암호문'이라고 한다. 평문을 암호문으로 바꾸는 걸 '암호화'라고 하고, 암호문을 다시 평문으로 돌리는 걸 '복호화'라고 한다.

암호화하려면 '암호 키'라는 특별한 비밀번호가 필요하다. 이 키가 있어야만 암호문을 다시 원래대로 돌릴 수 있다. 그래서 이 암호 키는 아무도 모르게 비밀로 지켜야 한다. 암호 기술은 중요한 정보를 지키고, 누가 그 정보를 보냈는지 확인하며, 누군가 정보를 건드리지 못하게 하는데 도움을 준다.

보안 개념 설명
기밀성 (Confidentiality) 허락되지 않은 사용자 또는 객체가 정보의 내용을 알 수 없도록 하는 성질
무결성 (Integrity) 허락되지 않은 사용자 또는 객체가 정보를 함부로 수정할 수 없도록 하는 성질
인증 (Authentication) 사용자 또는 객체의 디지털 정체성을 식별
부인방지 (Non-repudiation) 정보를 보낸 사람이 나중에 정보를 보냈다는 것을 부인하지 못하도록 한다.

암호기술의 종류

대칭키 암호

대칭키 암호(Symmetric-key Cryptography)는 암ㆍ복호화에 같은 암호 키를 사용하는 알고리즘이며, 송신자와 수신자는 암호 키가 노출되지 않도록 비밀로 관리해야 한다. 대칭키 암호는 내부 구조가 간단한 치환과 전치의 조합으로 되어 있어 연산 속도가 빠르다는 장점이 있다. 하지만, 송ㆍ수신자 간에 동일한 키를 공유해야 하므로 많은 사람들과의 정보 교환 시 많은 키를 관리해야 하는 어려움이 있다.

암호 유형 설명 대표적인 알고리즘
블록 암호 블록 암호는 평문을 고정된 크기의 블록 단위로 암호화 및 복호화하는 기술이다. 이 과정에서 각 블록은 동일한 키를 사용한다. 평문이 고정된 크기로 분할되기 때문에, 필요한 길이에 맞추기 위해 패딩이라는 기법이 활용된다. 또한, 하나의 키로 여러 블록을 안전하게 처리하기 위해 운용 방식이라 불리는 절차가 적용된다. 셰넌의 암호 이론에 따르면, 전치와 치환을 반복함으로써 평문의 통계적 특성이나 암호 키와의 관계가 드러나지 않아, 보다 안전한 암호 체계를 구축할 수 있다. 대표적인 블록 암호 알고리즘으로는 국산 알고리즘인 SEED, HIGHT, ARIA, LEA와 외산 알고리즘인 DES, AES 등이 있다. SEED, HIGHT, ARIA, LEA, DES, AES
스트림 암호 스트림 암호는 평문과 같은 길이의 키스트림 수열을 생성해, 평문과 XOR 연산을 통해 암호화 및 복호화를 수행한다. 이때, 평문과 독립적으로 키스트림을 생성하는 방식을 ‘동기식 스트림 암호’라고 하며, 평문이 키스트림에 영향을 미치는 경우를 ‘비동기식 스트림 암호’(또는 자기동기 스트림 암호)라고 한다. 이러한 방식은 구현 환경에 제약이 많은 경우에도 구현이 용이하여, 주로 무선 통신 등에서 사용된다. 대표적인 스트림 암호 알고리즘으로는 RC4, A5/1, A5/2 등이 있다. RC4, A5/1, A5/2

비대칭키 암호

암호화/보안 기술 설명 대표적인 알고리즘
공개키 암호 비대칭키 암호 방식으로, 암호화와 복호화에 서로 다른 키 사용. 송신자는 수신자의 공개키로 암호화하고, 수신자는 자신의 개인키로 복호화. RSA, ElGamal, ECC
전자 서명 개인키로 평문에 서명하여 생성된 서명 값을 공개키로 검증하는 방식. 인터넷 상에서 본인 확인이나 문서 인증에 사용. DSA, RSA Signature, ECDSA

해시 함수

해시 함수는 임의의 길이의 메시지를 입력 받아, 고정된 길이의 해시 값을 출력하는 함수다. 이 함수는 암호 키를 사용하지 않기 때문에, 동일한 입력에 대해 항상 같은 해시 값을 생성한다. 이러한 특성 덕분에, 입력 메시지에 대한 변경 불가능한 증거 값을 만들어내며, 이는 주로 데이터의 무결성을 보장하는 데 사용된다.

안전한 해시 함수는 역상 저항성, 제 2 역상 저항성, 충돌 저항성을 가져야 한다.

해시 함수의 특성 설명
역상 저항성 (One-wayness) 어떤 해시 값에 대해 원래의 입력 값을 찾는 것이 매우 어렵다는 특성. 해시 함수의 기본적인 일방향성을
제2 역상 저항성 특정 입력 값에 대해, 그 입력값과 같은 해시 값을 가지는 다른 입력값을 찾기 어렵다는 특성
충돌 저항성 서로 다른 두 입력 값이 같은 해시 값을 가지게 되는 상황, 즉 ‘충돌’을 찾기 어렵게 하는 특성

해시 함수는 데이터의 무결성을 검증하는 데 중요한 역할을 한다. 이것은 데이터가 통신 과정에서 변조되지 않았음을 확인하는 수단으로 사용될 수 있다. 특히, 메시지인증코드(Message Authentication Code, MAC)의 형태로 활용되며, 전자서명에도 적용될 수 있다. 전체 메시지 대신 해시 값에 전자 서명을 적용함으로써, 서명 값을 효율적으로 생성할 수 있는 장점이 있다. 해시 함수의 특성상 같은 해시 값을 갖는 다른 메시지를 찾기 어렵기 때문에, 해시 값에 대한 서명도 메시지에 대한 서명으로 인정된다. 대표적인 해시 함수로는 MD5, HAS-160, SHA-1, SHA-2, SHA-3 등이 있다. 이러한 해시 함수들은 데이터 보안과 무결성을 확보하는 데 필수적인 요소로 자리 잡았다.

마치며

다음 포스팅에서는 좀더 세부적으로 들어가 보려고 한다. 예를 들어 대칭키 암호화의 정의와 기본 원리 소개, 일상생활에서의 대칭키 암호화 사용 예시 (예: Wi-Fi 암호화), 암호화와 복호화 과정에서 동일한 키 사용, 치환과 전치를 기반으로 한 내부 구조 설명, 빠른 연산 속도의 장점 강조, 키 관리의 중요성: 송신자와 수신자만이 키를 알아야 함, 키 노출 시 발생할 수 있는 보안 문제 언급, 다수의 사용자와 키 공유 시 발생하는 관리 문제 해결 방안 제시 (예: 키 관리 시스템, 정기적인 키 변경), 많은 수의 사용자와의 정보 교환 시 발생하는 한계 언급, 비대칭키 암호화와의 비교: 각각의 장단점 설명, 하이브리드 암호 시스템의 소개 (대칭키와 비대칭키의 결합 사용), 대칭키 암호화의 중요성 및 적절한 사용 상황 요약, 암호화 기술의 발전과 미래 전망등이 있을거 같다.

혹시 더 좋은 내용이나 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 사실 암호화가 너무 방대한 내용이라 분명 빠진 부분도 있을거 같다.

맨 위로 이동하기

저의 글을 읽어 주셔서 감사합니다. 문제가 있으면 저의 메일로 연락 주시면 감사하겠습니다. 댓글과 피드백 또한 감사합니다.
Thank you for visiting my blog. If you have any problems, please contact me by e-mail. Thanks also for the comments and feedback.

태그: ,

카테고리:

업데이트:

댓글남기기