학교강의필기장/암호학

Diffie-Hellman Key Exchange 공개값 q = 큰 소수 α = 원시근 비대칭키 생성 Xa = random value (1 < Xa < q-1) Ya = α^Xa mod q 대칭키 생성 K = Yb^Xa mod q ElGamal Cryptography 공개값 q = 큰 소수 α = 원시근 비대칭키 생성 Xa = random value (1 < Xa < q-1) Ya = α^Xa mod q 암호화 k = random value (1 < k < q-1) K = Ya^k mod q C1 = α^k mod q C2 = KM mod q (C1, C2)가 암호문 복호화 K = C1^Xa mod q M = C2*K^-1 mod q RSAES-OAEP 메시지 암호화 DataBlock = Hash(L) ..
사용자 인증은 기본적인 접근 제어와 계정 관리의 기본 보안 구성 요소이다. 시스템 엔티티가 신원을 확인하는 과정으로, 식별과 검증 두 단계로 이뤄진다. 사용자 인증 수단으로는 네 가지가 있다. 1. knows: 비밀번호, 핀 등 2. possesses: 키, 토큰, 스마트카드 등 3. is(신체특성): 지문 망막 등 4. 동적 생체 인식: 음성 동작 등 이 방법들은 개별적으로도 사용될 수 있고 병행해서 사용될 수도 있다. 모든 방법은 사용자 인증을 제공할 수 있지만 모두 문제점을 가지고 있다. Authentication Protocols 상호간의 신원을 서로 확신시키고 세션키를 교환하기 위해 사용된다. 단방향 또는 상호적일 수 있다. 주요 이슈는 세션키를 보호하기 위한 기밀성, 재생 공격을 방지하기 위한..
암호키는 안전하고 생성되고 저장하고 분배하고 파기해야한다. 대칭키 암호화의 경우, 당사자들은 공통의 비밀 키를 공유해야 한다. 이 과정에서 키가 노출되어선 안된다. 공개키 암호화의 경우, 공개키는 모두에게 공개될 수 있지만 개인키는 반드시 비밀로 유지되어야 한다. 또, 공개키가 누구의 것인지 확실하게 알 수 있어야 한다. 전달 방법 1. 물리적으로 전달 2. 믿을만한 사용자가 분배 3. 사용중이던 키로 새로운 키를 분배 4. A가 신뢰할 수 있는 제3자 C와 안전한 통신 채널이 있다면, C가 A와 B 사이에서 키 중계 키 계층 세션키 - 한번 쓰고 버림 (temporary) - 세션마다 새로 생성됨 마스터키 - 비교적 오랫동안 사용함. - 키 분배 센터를 통해서 안전하게 전달 키 분배 센터 KDC는 당사..
Digital Signatures 디지털 서명은 서명자, 서명 날짜 및 시간을 확인할 수 있고 메시지 내용의 인증이 가능하며, 제삼자가 검증할 수 있다. 정리하자면, 추가 기능을 갖춘 인증 기능을 포함한다. 이러한 디지털 서명 방법으로 메시지를 해시한 값을 발신자의 개인키로 암호화한 S를 보내고, 수신자는 받은 메시지를 해시한 값과 S를 발신자의 공개키로 복호화한 값을 비교하여 검증하는 방법을 떠올릴 수 있다. 디지털 서명은 여러 방법으로 공격당할 수 있다. 1. Key only attack: 공격자가 대상의 공개키만을 알고 있을 때 2. Known message attack: 공격자가 일련의 메시지와 그에 대한 서명들을 알고 있을 때 3. Chosen message attack: 공격자가 선택한 메시지..
Message Authentication 메시지 인증의 목적 - 메시지의 무결성 보호 - 발신자의 신원 확인 - 출처 부인 방지 (발신자가 메시지를 보낸 것에 대해 부인 X) 메시지 인증에 사용되는 3가지 대안적 함수 - 해시함수: 메시지의 내용을 바탕으로 고정된 길이의 해시 값 생성해서 무결성 확인 - 메시지 암호화: 개인키/공개키 암호화 사용해서 메시지의 기밀성과 발신자의 신원 모두 보장 - 메시지 인증 코드(MAC): 메시지와 비밀키 결합해서 생성되는 짧은 문자열, 메시지의 무결성과 발신자의 신원 확인 메시지 보안 요구 사항 공개 (Disclosure) 민감한 정보가 무단으로 공개되는 것을 방지 트래픽 분석 (Traffic Analysis) 메시지 흐름을 분석하여 중요한 정보를 추출하는 것을 방지 ..
Hash Functions 해시 함수는 임의의 메시지를 정해진 크기로 응축한다. h = H(M) 해시는 메시지의 변동을 감지하는데 사용된다. 약간의 변화로도 아예 다른 결과가 나오기 때문이다. 단방향 속성을 가졌기에 해시 값에서 원본 데이터를 복구하는 것은 불가능하다. 또 서로 다른 두 메시지가 같은 해시 값을 가질 확률이 매우 낮아야 한다. 데이터 검증 방법으로 송신자가 데이터를 해시한 값을 뒤에 붙이고 수신자가 받은 데이터를 해시한 값과 대비해보는 방법을 생각해볼 수 있지만, 이는 man in the middle attack에 취약하다. Message Authentication Code MAC는 키 해시 함수로도 알려져 있다. 비밀 키와 데이터 블록을 입력으로 받고 해시 값(MAC)을 생성한다. MA..
Diffie-Hellman Key Exchange Diffie-Hellman 키 교환 알고리즘은 안전한 방식으로 공개 네트워크를 통해 비밀 키를 공유할 수 있게 하는 방법이다. 먼저, 큰 소수 q와 mod q에 대한 원시 근 α는 공개적으로 정해져있다. 각 사용자는 먼저 자신의 개인 키 X_a를 선택한다. (1 < X_a < q-1) [여기서 a는 사용자의 이름으로, 반대 편은 X_b이다. 이하 생략] 공개 키 Y_a = α^X_a mod q 이다. 생성된 공개 키 Y_a는 모든 사용자에게 공개된다. A가 B에게 Y_a를 전달하면, B가 A와 통신하기 위해 사용할 비밀 키 K는, K = Y_a^X_b mod q 가 된다. 이는 α^(X_a * X_b) mod q와 같다. 반대로, B가 Y_b를 전달하면,..
GCD, Euclid Algorithm gcd(a, b) = gcd(b, a%b) 를 기반으로 함. Modular Arthmetic a mod b = (a+kb) mod b, k는 임의의 정수 x*y mod b = (x mod b * y mod b) mod b Extended Euclid Algorithm 유클리드 알고리즘으로 나온 최대공약수로부터 역추적하며 gcd(a, b) = ax + by가 되는 x와 y를 찾음. int extended_gcd(int a, int b, int *x, int *y) { if (b == 0) { *x = 1; *y = 0; return a; } int x1 = *x; int y1 = *y; int gcd = extended_gcd(b, a % b, &x1, &y1); *..
푸더기
'학교강의필기장/암호학' 카테고리의 글 목록