대칭 암호화 알고리즘 : AES-128 (CBC and ECB)
AES(Advanced Encryption Standard) 는 대칭 암호화 알고리즘 중 블록 암호화 방식에 해당
대칭 알고리즘은 암호화와 복호화에 동일한 키를 사용하는 방식
즉, 발신자가 메시지를 보내고자 할 때, 암호화 메커니즘을 사용하며 동일한 키로 복호화를 수행하여 수신자가 원래의 메시지를 복원하는 방식
AES는 대칭 알고리즘 중에서 가장 널리 사용되는 방식
AES는 128비트의 고정 데이터 블록을 암호화하고, 가변 키 크기에 따라 분류
AES-128 (10round) : 가장 많이 사용, 속도와 보안 사이의 균형
AES-192 (12round) : 보안성⬆️, 성능⬇️, 전력소비⬆️
AES-256 (14round)
AES의 ECB, CBC 모드
ECB 모드에서는 데이터를 일정 크기의 블록(예: 16B)으로 나누고, 각 블록을 동일한 키로 독립적으로 암호화
즉, 각 블록은 별개로 암호화되며, 암호화된 각 블록은 연결되어 최종 암호문 생성
동일한 데이터 블록이 동일한 암호문으로 암호화되므로, 패턴을 통해 원본 데이터를 추론할 수 있는 위험 존재
CBC 모드에서는 첫 번째 블록에 초기화 벡터(IV) 라는 임의의 값을 XOR 연산하여 암호화
이후 각 블록은 이전 블록의 암호문을 XOR 연산한 후 암호화
즉, 각 블록이 이전 블록에 의존하여 암호화되므로, 암호문에서 패턴을 찾는 것이 더 어려움
-> ECB 모드에 비해 훨씬 더 안전
(SSL/TLS와 같은 보안 프로토콜에 사용)
결론적으로, CBC 모드는 보안이 중요한 곳에서 더 널리 사용되며, ECB 모드는 성능이 중요한 환경에서 간단하게 사용할 수 있지만 보안에 취약할 수 있음
비대칭 암호화 알고리즘 : Asymmentric algorithm
암호화와 복호화에 서로 다른 두 개의 키 사용
공개 키(public key) : 데이터 암호화에 사용되며 공개적으로 공유
개인 키(private key) : 데이터 복호화에 사용되며 사용자에게만 비공개로 유지

사용자 A가 사용자 B에게 데이터를 보내고자 할 때, A는 이미 B의 공개 키를 가지고 있음
하지만 B의 개인 키는 오직 B만이 알고 있음
따라서 A는 B의 공개 키를 사용해 메시지를 암호화하고, 암호화된 데이터는 B에게 전달
그 후 B는 자신의 개인 키를 사용하여 메시지를 복호화
RSA (Ron Rivest, Adi Shamir and Leonard Adleman)
- RSA는 소수인 p와 q를 기반 이 두 소수를 이용해 모듈러 연산(modulus)을 계산하고, 이를 사용하여 공개 키와 개인 키를 생성
- 공개 키는 e라는 작은 수를 사용하고, 개인 키는 e와 d를 계산하여 생성
암호화: C = M^e mod n
복호화: M = C^d mod n
한마디로 요약하면, RSA의 보안성은 소인수분해의 어려움에 기반
즉, 공개 키를 알고 있어도 이를 두 개의 소수로 분해하는 것은 매우 어려움
ECC (Elliptic curve cryptography)
ECC(타원 곡선 암호화)는 유한 필드에서 타원 곡선의 수학적 특성 기반
유한 필드에서의 타원 곡선의 일반적인 방정식 : y² = x³ + ax + b
- G (생성자) : 타원곡선 상의 임의의 점 (공개된 값)
- x (개인키) : 임의의 정수로, 주로 소수 값으로 선택 (비밀값)
- Q (공개키) : 공개키는 Q = xG로 계. 즉, 개인키 x와 생성자 점 G를 이용하여 공개키 Q를 얻을 수 있음
Q = xG: 공개키 Q는 개인키 x와 생성자 G를 이용한 스칼라 곱셈을 통해 구할 수 있음
이때, x번 덧셈 Q = G + G + ... + G (x번)으로 표현할 수 있음
이산대수 문제는 Q = xG와 같은 관계에서 x 값을 구하는 문제
Q = xG 관계에서, 공개키 Q는 개인키 x와 생성자 G의 스칼라 곱으로 쉽게 구해지지만, 이로부터 x를 계산하는 것은 이산대수 문제로, 풀기 매우 어려움
-> 작은 키 크기에도 높은 보안성을 제공
ECC는 RSA보다 더 작은 비트의 키로 동일한 보안 수준을 제공할 수 있음 (최고장점!)
즉, ECC는 더 적은 계산 자원으로 더 빠른 속도를 보장하면서도 높은 보안성을 유지
반면, RSA는 더 큰 비트 값을 사용하여 보안을 강화하지만 계산 성능이 더 많이 소모
대칭 알고리즘 vs. 비대칭 알고리즘
- 대칭 알고리즘
- 👍🏻 속도 : 속도가 빠르고 큰 데이터에 대해 더 효율적
- 👍🏻 효율성 : 키가 동일하므로 계산 자원을 적게 사용
- 👍🏻 단순함
- 👎🏻 키 분배 : 비대칭 알고리즘에서는 공개 키를 쉽게 공유할 수 있지만, 대칭 알고리즘에서 키가 분실되면 전체 시스템이 쉽게 손상될 수 있음. 또한, 대칭 알고리즘은 단일 키를 사용하기 때문에 그 키가 유출되면 시스템이 취약해질 수 있음
- 👎🏻 인증 미보장 : 송신자의 신원을 보장하지 않음
- 비대칭 알고리즘
- 👍🏻 안전한 키 교환 : 공개 키가 공개적으로 공유될 수 있기 때문에 안전한 키 교환이 중요한 요소. 개인 키는 공개 키를 통해 생성할 수 있기 때문에 공개 키를 공유하는 것만으로는 위험이 발생하지 않음
- 👍🏻 인증과 기밀성 보장 : 인증은 디지털 서명을 통해 신원을 확인할 수 있고, 기밀성은 민감한 데이터를 강력하게 암호화함으로써 보장
- 👎🏻 속도 : 더 많은 계산 자원을 요구하고, 복잡한 계산이 필요하기 때문에 속도가 느려짐
- 👎🏻 복잡성 : 구현이 복잡하고 개인 키는 하드웨어에 저장되어야 하므로 더 많은 처리 능력과 저장 공간이 필요
해싱 (Hashing)
해싱은 일방향 프로세스로, 메시지를 해시로 변환하는 과정
암호화 해시 함수는 데이터 무결성 및 메시지 다이제스트를 위해 사용 SHA-3 는 해시 함수 중 가장 발전된 유형
MD5는 128비트, SHA-1은 160비트, SHA-2는 256비트 또는 512비트를 사용하는데, 현재는 SHA-2의 256비트와 512비트가 가장 널리 사용되며, SHA-3는 그 이상을 지원
MD5는 압축 함수(Compression Function)를 사용하고, SHA-2는 IT 구조(Mechanism of IT structure)
- 해시 크기 : 해싱을 거친 결과값의 크기. 즉, 해시 계산 후 출력되는 크기
- 블록 크기 : 처리할 때 한 번에 처리되는 데이터 크기. 예를 들어, MD5는 한 번에 512비트씩 처리
- Rounds : 데이터를 해싱하는 과정에서 일어나는 일련의 연산 횟수. 예를 들어, MD5는 4라운드, SHA-1은 8라운드, SHA-2는 64~80라운드를 거침.
MD5는 체크섬 계산, SHA-2는 주로 디지털 서명 및 인증서에 주로 사용
암호화 및 해싱 알고리즘 정리
구분 | 정의 | 특징 | 대표 알고리즘 |
대칭키 알고리즘 (Symmetric Algorithm) |
동일한 키로 암호화 및 복호화 | - 속도가 빠름 - 대량의 데이터 암호화에 적합 |
AES, DES(취약), 3DES(보안 강화) |
비대칭키 알고리즘 (Asymmetric Algorithm) |
공개키로 암호화, 개인키로 복호화 |
- 보안성이 높음 - 속도가 느림 |
RSA(키 교환, 디지털 서명), ECC(경량 보안), Diffie-Hellman(키 교환), DSA(디지털 서명) |
해싱 (Hashing) |
데이터를 고정된 크기의 해시 값으로 변환 | - 단방향 암호화 (복원 불가) - 데이터 무결성 검증 |
MD5(취약), SHA-1(취약), SHA-2(SHA-256, SHA-512), SHA-3(최신), HMAC(메시지 인증) |
'ComputerScience & Embedded > Automotive & Cybersecurity' 카테고리의 다른 글
Key Management, Key Loading (M1 to M5 계산) - SHE (0) | 2025.02.27 |
---|---|
HSM (Hardware Security Module), SHE (Secure Hardware Engine) (0) | 2025.02.27 |
공개 키 인프라 : PKI (Public Key Infrastructure) / 디지털 인증서 (Digital Certificate) (0) | 2025.02.27 |
디지털 서명 (Digital Signature) (0) | 2025.02.27 |
보안 3원칙 : 기밀성, 무결성, 가용성 (Confidentiality, Integrity, Availability) / 위협 모델링 : STRIDE (0) | 2025.02.27 |