암호는 온라인 뱅킹, 이메일 통신, 의료 기록 시스템, 메신저 앱(SNS), 온라인 게임 계정 및 아이템 거래 등등에서 필요함.
암호화?
정보를 읽을 수 없는 형태로 변환하여 허가받지 않은 사용자가 접근하는 것을 방지하는 보안 기술
암호의 필요성
1. 기밀성(Confidentiality)=>다른 사람이 내용을 보지 않았을까?
2. 무결성(Integrity) => 누군가 내용을 훼손시키지는 않았을까?
3. 가용성(Availabilty) => 메시지 내용을 다음에도 확인 가능할까?
4. 인증(Authentication) => A가 보낸 것이 맞을까?
5. 부인 방지(Non-Repudiation) => A가 보낸사실을 부인하지 않을까?
암호의 추적성(Traceability)
암호화된 정보를 누가, 언제, 어떻게 사용했는지 식별하고 기록하는 기능
암호 기술을 사용한 시스템 안에서, 발생한 행위나 변경사항을 식별하고 기록하며, 그 책임 주체를 추적할 수 있도록 만드는 능력.
그래서 추적성은 암호 기술만으로 완성되는 것이 아니라, 암호 + 로그 + 인증 + 무결성이 함께 작동해야 함.
암호 기술(Cryptographic Technology)이란?
암호 기술이란, 정보의 기밀성,무결성,인증,부인방지를보장하기 위해 수학적 원리를 기반을 정보를 변형하고 보호하는 기술
크립토그래피 vs 스테가노그래피
스테가노그래피 : 정보의 내용을 숨김
크립토그래피 : 정보의 존재 자체를 숨김
스테가노그래피
이미지, 오디오, 동영상 등에 정보를 은닉하는 방식
정보가 숨어 있어 눈에 잘 띄지 않음
은닉 정보를 꺼낼 수 있는 알고리즘/도구가 필요함
ex) 이미지에 텍스트 숨기기, 오디오에 데이터 삽입
암호화된 메시지를 은닉하면 추적과 해독 모두 어렵게 됨.
크립토그래피
암호 알고리즘을 사용해 정보 자체를 암호화
암호화된 데이터가 눈에 띔 (누군가가 보호된 정보라고 인식함)
암호를 복호화할 키가 필요함
ex) AES, RSA, SHA, TLS, 디지털 서명, 공개키 암호화
암호화 후 스테가노그래피로 숨기면 이중 보호 가능
암호학의 분류
암호기법 : 메시지를 공격자로부터 안전하게 보호하기 위하여 메시지를 변화하는 과학이나 수학적 기법
암호학에서 사용하는 이름
엘리스와 밥(Alice and Bob)
일반적으로 앨리스는 메시지를 전송하고 밥이 수신하는 모델에 사용됨
해당 이름은 공개키 암호 시스템(비대칭암호 시스템)인 RSA를 만든 사람 중의 하나인 Ron Rivest가 1979년에 처음으로 사용함.
**앨리스와 밥은 정상적인 사용자고, 공격자(attacker)가 이 둘 사이의 이용에 공격함.
암호와 관련된 기본 용어
Plaintext(평문) : 암호화되기 전의 메시지를 의미함 (P, m, M)
ciphertext(암호문) : 암호화 된 후의 메시지를 의미함 (c, C)
Encryption(암호화) : 평문을 암호문으로 바꾸는 것 (E)
Decryption(복호화): 암호문을 평문으로 바꾸는 것 (D)
Key(키) : 암호화와 복호화의 알고리즘에서 사용되는 정보 (k)
케르크호프스의 원리
암호체계는 암호 알고리즘의 모든 내용이 공개되어도 키가 노출되지 않으면 안전해야 한다.
즉, 암호 체계의 안전성은 키의 안전성에 바탕을 둔다.
(그래서 RSA 에서도 key를 들키지 않기 위해 매우 큰 소수를 이용하나보다. RSA는 공개되어 있고)
케르크호프스의 원리 해석
- 암호 알고리즘 전체를 안전하게 보관하는 것 vs 짧은 길이의 키를 안전하게 보관하는 것
> 암호 시스템은 역공학 등으로 노출될 수 있지만 키는 보통 난수이어서 역공학에 안전
- 비밀 노출 시, 새로운 암호 시스템을 설계 vs 키를 변경
- 국가(사람)마다 다른 암호시스템을 사용 vs 동일한 암호시스템을 사용 (키만 다르게 설정)
> 암호 시스템의 표준화
mod 연산
$Z_{n}$ (Set of Residues, 잉여 집합)
어떤 자연수 n에 대해, 서로 다른 나머지들로 나뉘는 동치류(congruence class)들의 집합을 정수 잉여집합이라고 함.
여기서 각 원소는 n으로 나눈 나머지를 대표하는 값
즉, 어떤 정수든 n으로 나눈 나머지가 같으면 같은 잉여 클래스에 속한다.
덧셈에서 Z_5 의 1의 항등원은 0이지만, 역원(항등원을 만드는 수)은 4임.
곱셈에서의 항등원은 1이고, 역원은 마찬가지로 항등원 1을 만드는 수임. 이에 따라 정리하면
{0, 2, 4}의 역원은 존재하지 않음
{1, 3}은 역원이 존재함 >> 1은 1 자신이, 3은 2가 역원임
정의: $ \mathbb{Z}_{n}^{*}= \left\{ x \in Z_{n} \mid {gcd}\left (x,n \right )= 1 \right\}
암호를 설계하는 가장 중요한 두 가지 원리
치환
- 평문의 문자를 다른 문자로 바꾸어 암호화하는 방식(대치라고도 불림)
- ex) ABC -> XYZ
전치
- 평문의 문자들의 위치를 바꾸어 암호화하는 방식
- ex) ABC -> BCA
공격 유형
전사적 공격 (부르트포스 어택)
- 모든 키 범위에 대해 탐색하는 공격하는 방법
- - 현대 암호는 키의 길이가 길기 때문에 전사적 공격은 사실상 불가능
빈도수 분석
- 평문의 통계학적 특성이 암호문에 나타나는 성질을 이용하여 공격하는 방법
암호 단위
고전암호 : 문자-> 현대 암호 : 비트
고전 암호
단일 문자 치환 암호
평문의 한 문자와 암호문의 한 문자는 언제나 일대일 관계
다중 문자 치환 암호
평문의 한 문자가 암호문의 여러 개의 문자로 치환되는 일대다 관계
시저 암호(caesar cipher) = 키가 3인 덧셈 암호(additive cipher)
- BC 50년에 로마 시대의 줄리아스 시저가 사용했다는 암호
- 평문의 한 문자를 오른쪽 세 자리 뒤에 위치한 문자로 치환
곱셈 암호
- 역원을 곱해야 함. 그래서 곱셈 잉여 집합의 원소 중 하나로 key를 둬야 함. 그러지 않으면 평문으로 돌아가지 않음
아핀 암호(Affine Cipher)
- 간단하지만 강력한 암호화 방법, 기본적인 수학적 원리에 기반을 둠
- 아핀 변환의 원리를 사용함.
덧셈, 곱셈, 아핀 암호는 key로 설정할 수 있는 정의역이 작기 때문에 부르트포스에 취약함
이를 보완하기 위해서 치환 암호를 적용함
당장 알파벳만 적용해도 모든 경우의 수가 26! 개임
1초에 1개 -> 4*10^{26} 초 -> 부르트포스로는 시간안에 절대 못찾음
그러나 빈도수 분석을 해버려서 어느정도 해결할 수 있음.
문장에서 각 문자의 빈도수를 파악하고, 일상에서 실제로 많이 사용되는 문자와 매핑하며 풀어나감.
최초의 전치 암호
스키테일 암호
나무 봉의 굵기가 key임
현대 암호
대칭키 & 공개키 암호화
대칭키 암호(Symmetric key cryptosystem)
암호와는 복호화를 위해 사용된 키가 동일한 암호 시스템(K_A = K_B)
앨리스와 밥이 서로 같은 키를 가져야 복호화를 할 수 있음.
그래서 키는 안전하게 관리해야 함.
근데 그러면 여러 이용자와 통신해야 하면? 한팀 한팀 새로 만들어? 그리고 그 키는 어떻게 합의할 건데?
그래서 나온게
공개키 암호(Asymmetric key cryptosystem)
암호화와 복호화를 위해 사용된 키가 다른 암호시스템
두 키 중 하나는 다른 사용자 (공개된 서버 이용)에세 저장됨
수학적인 난제에 기반한 암호 시스템
하이브리드 암호
Trapdoor One-way Function (TOWF)
소인수분해 문제
현재까지는 모든 수를 하나하나 나눠보는 것 말고는 방법이 없다고 함.
RSA 암호 (클리포드 칵스)
가장 많이 사용되고 있는 공개키 암호시스템
양자 컴퓨팅은 확률적으로 빠르게 찾기 때문에 세상의 RSA 공개키는 대부분 깨짐
양자 컴퓨팅이 나왔다? 그러면 양자 컴퓨팅의 알고리즘을 이용한 대칭키를 사용하면 괜찮다고 함.
해쉬 함수 & 전자서명
마무리
암호학은 보안시스템의 가장 중요한 부분이지만 단독으로 사용되는 경우는 없음
더 큰 시스템(예: 주택, 성)의 일부분으로 암호(예: 자물쇠, 문지기) 사용
웹의 취약점을 차즌 공격자는 암호를 공격하지 않고도 버퍼 오버플로우 등을 이용하여 공격 가능
서버 관리자를 타겟으로 사회공학적 공격을 시도하여 비밀번호 횓득 가능
안전한 암호란?
공격자가 암호시스템에서의 비밀키를 얻을 수 있다면, 그 암호시스템은 완전히 파괴되었다고 말할 수 있음
하지만 공격자가 키를 알아낼 수는 없지만 암호문의 일부분, 혹은 한 비트만 알수 있는 경우, 안전하다고 할수 있을까?
안전한 암호: 공격자가 암호문으로부터 평문의 어떠한 함수도 계산할 수 없다면 암호는 안전하다고 할 수 잇음
> 즉, 암호문인지 랜덤인지 구별할 수 없아야 한다.
'활동 > 2025 co-week' 카테고리의 다른 글
시큐어 코딩 (1) | 2025.07.07 |
---|---|
LangChain (0) | 2025.07.07 |
댓글