[새싹X코딩온] 웹 개발자 부트캠프 과정 8주차 | 암호화

Ethan·2023년 9월 4일
0

데이터 보안을 위한 암호화 기술

데이터는 현대 사회에서 가장 중요한 자산 중 하나입니다. 따라서 데이터 보안은 매우 중요합니다.
이를 위해 데이터를 암호화하는 다양한 기술이 개발되어 는데, 이 포스트에서는 암호화의 기초부터 다양한 암호화 종류와 알고리즘에 대해 알아보겠습니다.

암호화의 기초

암호화란 평문(원본 데이터)을 암호문(암호화된 데이터)으로 변환하는 과정을 말합니다. 이 과정을 통해 데이터를 안전하게 보호할 수 있습니다.

암호화 종류

종류 암호화 복호화 암호화 방식 알고리즘 특징
단방향 가능 불가능 Hash MD5, SHA-1, SHA-256 데이터 무결성을 검증하는 데 주로 사용된다.
양방향 가능 가능 대칭키 AES, DES 암호화와 복호화에 동일한 키를 사용합니다.
공개키 RSA, ECC 두 개의 키 쌍을 사용합니다: 공개키와 개인키.

1. 해시 (Hash)와 해시 함수

1.1. 해시의 개념

해시 (Hash)란 해시 함수에 의해 얻어지는 값입니다. 해시 함수(해시 알고리즘)는 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수로, 이 변환된 값은 원본 데이터를 추론하기 어렵게 만듭니다. 해시는 보안, 데이터 무결성 검증, 패스워드 보호 등 다양한 분야에서 사용됩니다.

1.2. 해시 함수 종류

SHA-256 (Secure Hash Algorithm 256-bit): 256 비트 해시 값으로, 충돌 저항성과 보안성이 높아 많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용됩니다.
|
SHA-512 (Secure Hash Algorithm 512-bit): 512 비트 해시 값으로, 더 큰 해시 값을 생성하기 때문에 보안성이 SHA-256보다 높습니다.

  • MD5 (Message Digest Algorithm 5): 128 비트 해시 값으로, 충돌 저항성이 약한 편입니다.
  • SHA-1 (Secure Hash Algorithm 1): 160 비트 해시 값으로, 충돌 저항성이 약한 편입니다.

2. 양방향(대칭키) 암호화

2.1. 양방향 암호화의 개념

양방향 암호화는 동일한 키를 사용하여 암호화와 복호화를 수행하는 알고리즘입니다.

공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리속도를 향상하였습니다.

HTTP와 같은 프로토콜로 클라이언트- 서버 통신을 보호하여 안전한 웹 통신을 제공합니다.

2.2. 대칭키 암호화 알고리즘

대칭키 사용 암호화와 복호화에 동일한 키 를 사용하므로 키 관리가 중요하다

AES(Advanced Encryption Standard)

  • 다양한 키 비밀 값 과 블록 암호화할 데이터 을 제공한다
    (종류 AES 128, AES 192, AES 256)

  • 처리 속도가 빠르고 다양한 플랫폼에서 구현이 용이하다

  • ECB, CBC , CFB, OFB, CTR 등 다양한 운용 모드를 통해 데이터
    블록을 처리할 수 있다

DES (Data Encryption Standard)

  • 초기에 개발된 56 비트 키와 64 비트 블록 크기를 가지는 대칭키이다

  • Triple DES: 3DES 는 DES 를 여러 번 적용하여 암호화하므로 보안성은 높아지지만 , 처리 속도가
    느려짐

2.3. AES 블록 암호화 운용 모드

  • ECB (Electronic Codebook): 각 데이터 블록을 독립적으로 암호화합니다. 같은 입력 블록에 대해 항상 같은 암호문이 생성되기 때문에 패턴이 누출될 수 있으며, 주로 간단한 암호화 작업에서 사용됩니다.
  • CBC (Cipher Block Chaining): 이전 블록의 암호문과 현재 블록의 평문을 XOR 연산하여 암호화합니다. 초기 블록은 초기화 벡터 (IV)로 암호화되며, 같은 평문에 대해 다른 암호문이 생성되어 패턴이 누출되지 않습니다.

2.4. 공개키 암호화 알고리즘

두 개의 키 쌍을 사용합니다: 공개키와 개인키
공개키는 다른사람과 공유되며, 개인키는 오직 소유자만 알고 있어야합니다.

RSA(Rivest-Shamir-Adleman)

  • 대칭키 암호화보다 복잡하지만 효율적이다.

ECC(Elliptic Curve Cryptography)

  • 작은 키 길이로도 강력한 보안성을 제공한다.
profile
코딩하는 알파카

0개의 댓글