본문 바로가기
프로그래밍/c#

[c#] 암호화 알고리즘 종류 및 설명

by 그래도동 2019. 10. 2.
728x90
반응형

암호화 알고리즘은 총 3가지 

 

1. 대칭형 암호(비밀키)

2. 비대칭형 암호(공개키)

3. 단방향 암호

 

1. 대칭형 암호

암호화 키 = 복호화 키 

미국 표준 방식(AES)을 가장 보편적으로 사용 (DES 암호화 알고리즘을 대체하는 알고리즘)

그 외 RC4, Twofish, Serpent, Blowfish, CAST5, 3DES, IDEA 등 알고리즘이 존재

국내에서 개발된 SEED, ARIA라는 알고리즘도 있다.

 

AES는 보안성이 뛰어남

AES의 키는 알고리즘에서 요구되는 128비트 또는 256비트 길이를 사용해야 하므로 16바이트 또는 32바이트를 사용

 

2. 비대칭형 암호

암호화 키  복호화 키 다름

대칭형 암호는 키를 어떻게 수신 측에 전달할 것인가에 대한 문제가 있음. 이 키를 털리면 평문(암호화되지 않은)이 바로 알 수 있게 되어버림. 이 '키 배송'문제를 해결한 것이 비대칭형 암호

비대칭형 암호화를 하면 하나의 키 쌍이 생김.(수학적 밀접한 관계를 가진다.) 두 개의 키 중 비밀로 보호하면 '비밀키', '개인키'라 하고 다른 하나는 공개해도 상관없는 키라 하여 '공개키'라 함

하지만 대칭형암호에 비해 암/복호화가 현저하게 느림 따라서 비대칭형 암호를 이용하여 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호보완적으로 이용

Diffie-Hellman 키 교환, DSS, EIGamI, ECC, RSA 암호화 등이 있다.

 

3. 단방향 암호

암호화는 가능하나 복호화는 안 되는 암호화 기법 

주로 패스워드 같은 부분은 단방향으로 암호화. 검증할 때는 입력받은 값을 암호화하여 비교.

주로 해시 기법을 사용하며 최소한 SHA-256, 가능하면 SHA-3을 쓰는 것이 좋다.

나머지는 취약점이 발견된 상태.

 

4. 암호화 분류

 

5. 암호 알고리즘 종류

블록 암호
국내에서 개발된 암호 알고리즘은 KISA에서 명세서와 소스코드를 모두 무료로 다운로드하여 사용할 수 있다.

  • DES: 구 미국 표준. 56비트 키를 사용한다.

  • 3DES: DES를 3번 반복한다. DES로 키를 바꿔가며 암호화→복호화→암호화를 해서 키 길이를 늘리는 기법이다. 2 키를 사용하는 경우 112비트, 3 키를 사용하는 경우 168비트의 키 길이를 가지기 때문에 현재도 제법 안전성은 있다고는 하지만, 느리다는 문제가 있다.

  • AES: 현재 표준 대칭키 암호화 기법. 128/192/256비트 키를 사용한다.

  • SEED: 대한민국의 국가 암호 표준. 128비트 키를 사용하며 2005년에 ISO/IEC 국제 표준으로 제정.

  • HIGHT: 저전력, 경량 환경에서 사용할 수 있도록 개발된 64비트 블록암호 알고 리즘. 코드 사이즈가 작고 AES보다도 속도가 빠르다. 2010년 12월 ISO/IEC 국제 표준으로 제정.

  • ARIA: SEED 이후로 나온 대한민국의 국가 암호 표준. 128/192/256비트 키를 사용한다. (AES와 동일)

  • LEA: 빅데이터, 클라우드, 모바일 등의 환경에 맞게 2013년에 국내 개발된 128비트 경량 암호 알고리즘. AES의 1.5~2배의 속도를 낼 수 있다.

  • 블로피시(Blowfish)

  • 공개키 암호

    • RSA: 공개키 암호화 기법의 사실상 표준. 매우 큰 수의 소인수분해가 수학적으로 어렵다는 이론에 기반한다.

    • ECC: RSA의 키 길이가 너무 긴 결점을 보완하기 위해 타원곡선함수를 이용한 암호화 기법. 비교적 최신 기법이다.

  • 암호학적 해시 함수

    • MD5: 현재는 안전하지 않다.

    • SHA

    • bcrypt: 블로피시(Blowfish)라는 블록 암호 알고리즘을 해시 함수로 변형한 것이다.

    • PBKDF2: 미국 정부기관에서 승인할 정도로 검증된 암호학적 해시 알고리즘이다.

    • scrypt: PBKDF2의 강화판. 굼벵이 같은 해싱 속도로 유명하다(...)

  •  

 

 

참고

https://jusungpark.tistory.com/34

https://namu.wiki/w/%EC%95%94%ED%98%B8%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#fn-2

728x90
반응형

댓글