본문 바로가기

728x90

Backend/정보보안

(17)
[정보보안] 공개키 암호화인 RSA에 대해서 RSA - 공개키 암호시스템, 암호화 뿐 아니라 전자서명이 가능한 최초의 알고리즘 - 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 의미론적으로 아전한 암호화 시스템을 보장하도록 디자인됨. - 공인인증서 비밀번호 : 개인키를 푸는 암호화키 1. Key-pair generation (키 생성법) 1) p, q : 굉장히 큰 소수 (p != Q), 2) N = P X Q , N 을 modulus 3) (p-1)(q-1)과 서로소에 있는 정수 e를 찾는다. 4) e X d = 1 mod (p-1)(q-1) , e의 곱셈상의 역원인 d를 계산 N,e 를 공개키로 사용 d를 개인키로 사용한다. 예제) 1) 굉장히 큰소수 p, q를 정한다. p = 11, q = 3 2) N을 계산 , N = pq ..
[정보보안] 공개키 암호화의 특징 및 용도 대칭키 암호화 vs 공개키 암호화 1) 대칭키 암호화 : 암호화키 = 복호화키 / permutation, substtiuation [DES, AES, TripleDES ... ] 2) 공개키 암호화 (비대칭키) : 암호화키 != 복호화키 / 수학에 대한 이해가 필요 (ex mod연산) [RSA ...] - 인터넷, 뱅킹, 인터넷 주식 거래 등이 가능 (공인인증서) ~ 이런 것들이 가능하게 된 것이 공개키 암호화 덕이다! - 공인인증서 파일을 들어가보면 공개키, 개인키 이렇게 두개가 있는걸 알 수 있다. - One Way function 단방향 함수 사용 ( ex. 소인수분해 factoring) - 두개의 소수 p, q 가 있을때 N구하는 건 쉽지만, N 이 주어졌을떄 p,q를 찾는건 어렵다. 공개키의 용..
[정보보안] Java를 활용하여 CBC 모드에서 AES 암복호화 실습 package kr.ac.zerco; import java.util.Base64; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AES { private static final String key = "aesEncryptionKey"; //16Byte == 128bit private static final String initVector = "encryptionIntVec"; //16Byte //인코더 생성 private static final Base64.Encoder enc = Base64.getEncoder(); //디코더 생성..
[정보보안] Block cipher Modes(ECB, CBC, CTR) 이란? Plain text는 여러개의 블럭으로 나누어져있다. 블럭이 128비트라고 하면 각각의 블럭으로 암호화 하는 방식에 대해서는 DES, TripleDES, AES를 통해 알 수 있다. 블럭을 독립적으로 암호화 한다면, 보안에 취약하기 때문에 해결하는 방식이 필요하다. 각각의 블럭마다 새로운 key를 사용하면 key가 너무 많아진다. (좋은 방식이 아님) 각각의 블럭을 같은 key로 독립적으로 암호화하는 방식은 보안상으로 취약하다. => 암호화를 이전 블록에 의존하도록 만드는 방식은 좀더 안전한 방식이 될 수 있다. (Chain을 형성) - CBC방식 => 크기가 블럭보다 작아서 잘린 블럭은 128비트로 인위적으로 채워서 만든다. 1. Electronic Codebook (ECB) Mode - 각각의 블럭을..
[정보보안] DES를 대체하는 AES란? 기존 알고리즘의 불안전함 기존의 DES의 안전하지 못함. Triple DES는 DES와 호환성을 유지하며 키의 길이를 늘림 AES는 DES를 대체하는 암호화 알고리즘이다. AES 특징 실제로 사용하는 암호화 방식이다. 대칭키 블럭 암호화 알고리즘 128, 192, 256비트로 key size가 커졌다. 각각 AES-128, AES-192, AES-256으로 불린다. 애플리케이션 유형에 따라 세가지 종류중에 정한다. DES, Triple DES보다 안전함 Feistel cipher이 아니다. Block Size와 독립적이다. Block size: 128, 192 or 256 bits Key length: 128, 192 or 256 bits round가 10 ~ 14 (키의 길이에 따라 달라짐) # 각각의..
[정보보안] TripleDES, 3DES란? Block Cipher Notation P = plaintext block C = ciphertext block C = E(P, K) //P를 K를 사용해서 Encrpt하면, C가 나온다는 뜻. P = D(C, K) //C를 K를 사용해서 Decrypt하면, P가 나온다는 뜻. P = D(E(P, K), K) and C = E(D(C, K), K) // 대칭키의 의미 Triple DES [기존 DES의 문제점 ] 기존의 DES는 56 bit key이다. DES의 key를 exhaustive key search를 하면 2^56를 하면 key값을 검출 할 수 있다. 분산시스템으로 여러대의 컴퓨터로 key값을 찾으면 금방 찾아낼 수 있다. 따라서 DES는 안전하지 못한 암호화 알고리즘으로 대체될 방식이 필요하..
[정보보안] Feistel Cipher를 사용하는 DES의 동작 방식 DES에 대해서 알아보기 전에 먼저 Feistel Cipher에 대해서 알아보자. 파이스텔 암호(Feistel cipher) 파이스텔 암호화란? 파이스텔 암호(Feistel cipher)는 블록암호(Block Cipher)의 일종 암호화 방식이 특정 계산 함수의 반복으로 이루어진다. 이 때, 각 과정에 사용되는 함수는 라운드 함수(round function)이라고 부른다. Feistel Cipher는 Block Ciphers를 사용하는 설계 방식, 전반적인 설계 디자인 패턴이라고 보면된다. 파이스텔 암호화 동작 방식 1. F를 라운드 함수로 하고 K0, K1, ... , Kn을 각각 라운드 0, 1, ..., n의 하위 키로 한다. 2. 평문 블록을 두 개의 동일한 조각으로 분할(L0, R0) 3. 각 ..
[정보보안] 암호의 기초 암호의 기초 목적 : 기밀성 제공 대표적인 암호알고리즘 1) Symmetric key - 대칭키 암호 : 암호화할때 쓰는키, 풀때 쓰는 키가 같다. 2) Public Key - 공개키 암호 (비대칭키 암호) : 암호화할때 쓰는키, 풀때 쓰는 키가 다르다. ex) 공인인증서 public key와 private key가 pc에 저장되는 방식 송신자가 데이터를 보낼때 plainntext, key 가 들어와서 이것을 바탕으로 해서 encrypt(암호화하여) ciphertext(암호문)으로 네트워크로 전달 하면 수신자는 key를 통해 decrpty(복호화) 하여 plaintext로 만든다. 이렇게 키를 사용하는 방식이 대칭키 암호화 방식과 공개키 암호화 방식이 있다. 암호화 가정 : Kerckhoffs Princ..

728x90