본문 바로가기

Crypto

(9)
RSA 대표적인 공개키 알고리즘 큰 소수의 소인수 분해가 어려운 부분을 이용 공개키는 n, e 개인키는 n, d로 정의한다 n은 임의의 두 소수 p, q를 이용해 만듬 n = p * q ϕ(n) = (p-1)(q-1) ϕ는 오일러 파이함수 오일러 파이 함수는 ϕ(n)이라고 했을 때 1~n중에 n과 서로소인 수의 개수를 반환한다 서로소란 두 수의 공약수가 1이외에 존재하지 않는 수을 의미 4와 12는 4 -> {1, 2, 4} 12 -> {1, 2, 3, 4, 6, 12} 1이외에 2, 4 공약수가 존재함으로 서로소가 아님 3과 8 3 -> {1, 3} 8 -> {1, 2, 4, 8} 1 이외에는 공약수가 존재하지 않음으로 3과 8은 서로소 오일러파이 함수 예시 ex) ϕ(6) 1~6중에 6과 서로소인 자연수의 ..
Side Channel Attack(부채널 공격) SPA(Simple Power Analysis) 스마트카드에서 연산되는 암호 프로세서의 전력 소비를 직접 관찰하여 카드에 저장되어 있는 비밀키를 직접 공격하는 방법 스마트카드 외부에서 관측 -> 키 또는 순간 작동 중인 operation에 대한 정보를 추론 DPA(Differential Power Analysis) 평문 입력-> 암호문 출력: 순간 전력 샘플 데이터 수집 -> 평균 차분 CPA(Correlation Power Analysis)
블록 암호 운용 모드 ECB(Electronic Code Book) 가장 간단한 구조이며 암호화하려는 메시지를 여러 블록으로 나누어 각각 암호화하는 방식 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약 만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값을 가진다면 암호화한 결과 역시 같음 공격자가 비슷한 메시지를 반복적으로 암호화 하는 반복 공격에 취약한 성질 한 개의 블록이 해독되면 나머지 블록도 해독됨 각 블록이 독립적으로 동작하므로 한 블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않음 CBC(Cipher Block Chaining) 각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며 첫 블록의 경우에는 초기화 벡터가 사용됨 초기화 벡터가 같은 경우 출력 결과가 항상 같기 ..
블록 암호의 원리 두 개 이상의 기본 암호 연속적 수행(치환, 순열 번갈아 수행,S-P 생성원리) 치환(S-Box, 혼돈) 평문의 각 원소 또는 원소의 그룹을 다른 원소에 사상 암호문의 통계적 구조와 암호 키 값 사이의 관계 복잡 키를 이용한 암호문 생성 방법 복잡(키 추론 어려움) s-box는 비선형 구조 순열(P-Box, 환산) 평문원소의 순서는 순열의 순서대로 재배치 평문의 통계적 구조가 암호문에 광범위하게 분산 평문과 암호문 관계 복잡 각 평문 숫자가 다수의 암호문 숫자 값에 영향 p-box는 선형 구조 Feistal 암호 구조 처리구조 길이 2word 비트인 평문 블록(L, R)분할 처리 k로부터 유도된 n개의 서브키 사용 n회의 동일한 반복 구조 실행(n라운드) 오른 쪽 반(R)에 반복 함수(F) 적용 왼쪽 반..
블록암호 VS 스트림 암호 블록암호 스트림 암호 암호화 적용 데이터를 블록크기로 나누어 암호 데이터를 비트 스트림으로 암호 속도 소프트웨어 적용시 간편, 저속 하드웨어 적용시 고속 소프트웨어, 하드웨어 간편 고속 안전성 상대적으로 안전 key 길이>80비트 이상 상대적으로 안전성 낮음 key 길이>80비트 이상 추가로 init, value 필요 채널에러 채널에러가 블록 전체로 확산되어 불리하며 OFB와 같은 스트림 방식으로 적용 채널에러에 대한 확산이 없어 채널 오류가 많은 회선에 유리(무선통신 구간등) 비트 스트리밍 서비스 블록을 비트로 전환시킨 후에 적용 (OFB 모드) 간편하고 쉡게 적용 (기본적으로 비트 처리)
의사 난수 생성의 원리 난수 특정한 배열 순서나 규칙을 가지지 않는 연속적인 임의의 수 의사난수 컴퓨터에 의해서 만들어지는 난수 아주 긴 주기를 가지고 있는 숫자 열 임의성 균일분포: 수열의 비트 분포가 균일, 0과 1의 출현빈도가 거의 동일해야함 독립성: 수열의 어느 부분 수열도 다른 부분 수열로부터 추정될 수 없음 비예측성 수열의 잇따른 다음 수의 순서에 대해 예측이 불가능해야함 TRING(True Random Number Generator, 진 난수 생성기) 실제적으로 랜덤한 소스를 입력으로 사용 키보드 입력 타이밍 패턴 및 마우스 움직임 디스크의 전기적 활동, 시스템 클럭의 순간 값 PRING(Pseudo Random Number Generator, 의사 난수 생성기) 고정값 seed를 입력받아 결정적 알고리즘을 사용하..
스트림 암호 스트림 암호 대칭키 암호의 구조로 의사난수를 연속적(스트림)으로 생성하여 평문을 암호화하는구조 스트림 암호 특징 비트단위로 난수를 생성하기 때문에 에러 확산이 없음 -> 무선 통신에 적합 비도수준에 대한 수학적 정령화 가능 하드웨어 구현 용이 통신 지연이 없음, 고속통신 가능 장, 단점 동일한 크기의 키를 사용하는 블록 암호만큼 안전함 블록 암호에 비해 간단하고 빠른 처리 속도 동일한 키를 가지고 두개 이상의 평문을 암호화 할 경우 해독이 가능할 수도있음 스트림 암호 설계시 고려사항 키수열 생성기에 대한 암호학적 안정성 통신 채널 환경에 적합한 키수열 동기 방식 성능(통신 신뢰성) 암호화 속도 등에 대한 성능 분석 스트림암호에 대한 안전성은 여러 종류의 암호공격에 대하여 얼마나 강한 키 수열을 발생시키느..
AES AES(Advanced Encryption Standard) DES와 마찬가지로 대칭키를 쓰는 블럭 암호 높은 안전성과 속도 블럭의 크기가 128비트이며 암호화 키의 길이가 128, 192, 256비트인 세 가지 종류가 AES 표준으로 지정 암호화 키의 길이에 따라 실행하는 라운드의 수가 다른데, 각각 10, 12, 14 라운드를 실행 AES 알고리즘 단계 KeyExpansion : key schedule(키 스케줄)이라고도 부른다. 128, 192 또는 256비트 길이인 하나의 주 암호화 키를 받아서 아래 라운드들에서 사용할 여러 개의 128비트 라운드 키를 생성 0 라운드 : 위의 단계에서 생성한 라운드 키 중 첫번째 키를 사용, AddRoundKey를 한 번 실행한다. 1~(9, 11, 13) 라운..