728x90
728x90
암호화 알고리즘
암호를 만드는 알고리즘이다.
용어
- 평문(Plaintext) : 해독 가능한 형태의 메시지(암호화 전 메시지)
- 암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지)
- 암호화(Encryption) : 평문을 암호문으로 변환하는 과정
- 복호화(Decryption) : 암호문을 평문으로 변환하는 과정
- 전자서명
- 송신자의 Private Key로 메시지를 서명하여 전달
- 수신자측에서는 송신자의 Public Key를 이용하여 서명값을 검증
- 양방향 암호화
- 암호화와 복호화과정을 통해 송,수신간 주고받는 메시지를 안전하게 암,복호화하는 과정
- 단방향 암호화
- 해싱(Hashing)을 이용한 암호화 방식으로 양방향과는 다른 개념이다.
- 평문을 암호문으로 암호화는 가능하지만 암호문을 평문으로 복호화 하는 것은 불가능하다.
혼돈(Confusion)과 확산(Diffusion)의 원칙
혼돈(Confusion)
- 평문의 작은 변화가 암호문에 어떤 변화를 줄 지 예측할 수 없어야 한다.
- 평문의 1bit 변화가 암호문에 어떠한 영향을 가져올 지 예측 불가능해야한다.
확산(Diffusion)
- 평문을 구성하는 비트들이 여러 개의 암호문 비트들에 분산되어야 한다.
- 평문의 특정 자리를 바꾸었을 때, 암호문의 특정 자리가 바뀌면 안된다.
양방향 암호화
대칭 키
- 같은 키를 이용하여 메세지를 암,복호화 하는 것
블록 기반 암호화
- 블록 단위로 암호화를 수행하는 방식
- 문자열 단어 하나하나를 블록으로 나누어 암호화하는 과정
- DES, AES, IDEA, SEED 등의 블록기반 암호화 알고리즘
스트림 기반 암호화
- 비트 단위로 암호화하는 방식
- LFFSR, MUX generator 등의 스트림기반 암호화 알고리즘
- 속도가 빠르고 오류 전파 현상이 없다는 장점
- 주로 오디오/비디오 스트리밍 시 사용
비대칭 키
- 메세지를 암호화 하는 키와 복호화 하는 키가 다르다.
- 종류 : DSA(전자서명), RSA(메시지 암,복호화)
- 대칭키에 비해서는 느리다는 단점이 있음
- 키생성시 Private Key와 Public Key 2개의 키가 도출되며, Public Key는 공개해도 문제가 되지 않는다.
- 인수분해, 이산대수, 타원곡선 암호화로 나뉨
RSA(Rivest-Shamir-Adleman) 암호화
- 세계적으로 사실상 표준이다.
- 전자서명의 용도로 사용
- 두 개의 키를 사용하는데, 모두에게 공개하는 공개키와 공개해선 안되는 개인키로 구성된다.
- 공개키는 메세지를 암호화할 때 사용하고, 개인키는 복호화할 때 사용한다.
ECC(Elliptic Curve Cryptography) 기반 암호화
- 타원곡선 암호화로써 RSA에 비해 짧은 길이의 키를 사용하면서도 비슷한 수준의 안정성을 제공
- 비트코인 및 이더리움에서 ECC알고리즘을 이용
- ECDSA(Elliptic Curve Digital Signature Algorithm): 전자서명(ECC 암호화 알고리즘을 전자서명에 사용한 것)
- ECDH(Elliptic Curve Diff-Hellman): 키교환 알고리즘(자신의 Private Key와 상대방의 Public Key를 사용하여 공통된 Secret 키를 도출)
- ECIES(Elliptic Curve Integreated Encryption Scheme): 통합 암호화 방식(Public Key로 암호화하고 Private Key로 복호화)
단방향 암호화
해시 함수
- Hash를 이용하여 암호화하는 과정
- 해시 함수는 입력값을 문자와 숫자를 임의로 나열한 일정한 길이의 다이제스트(Digest)형태로 변환시켜준다.
- 패스워드를 바로 데이터베이스에 저장하지 않고 단방향 암호화된 다이제스트를 저장하는 것이 보편화되었다.
- 평문을 암호화할순 있지만, 복호화는 불가능하다
- 데이터의 진위여부는 확인하고 싶으나, 본 데이터의 Privacy를 지키고 싶은 경우 사용한다.
728x90
728x90
'Computer Science > Algorithm' 카테고리의 다른 글
MST(Minimum Spanning Tree, 최소 신장 트리) (0) | 2023.03.09 |
---|---|
재귀함수(Recursion) (0) | 2023.03.09 |
그리디 알고리즘(Greedy Algorithm) & 동적 계획법(Dynamic Programming) (0) | 2023.03.09 |
Binary Search(이진탐색) (2) | 2023.03.09 |