본문 바로가기
IT/트렌드&개념공부&TIP

[요약] 암호학-알기쉬운 정보보호개론

by Andante con moto 2021. 1. 25.
728x90
반응형

[시저암호]
 - 줄리어스 시저가 사용하였다는 암호. / 평문으로 사용되는 알파벳을 일정한 문자 수만큼 평행 이동 시킴으로써 암호화를 행한다.
 - 예) 3문자 평행이동 -> abc 암호화 결과는 def
 - a b c d e f g h i j k l .......z
 - ------d e f g h i j k l m n ..........z

[전사공격]
 - 암호해독하기위한 키를 모르는 상황에서 키가 될 수 있는 모든 가능한 후보들을 시도하여 해독하는 작업. / 전수탐색/라운드로빈법/이 잡기법 라고도 불린다.

[단일 치환 암호]
 - 시저암호 방법에서 개선된 방법으로 평문의 알파벳 26문자를 무작위 순서로 나열하여 이 집합과 순서대로 된 알파벳 집합을 일대일 대응 하여 암호화하는 방법
 - 예) abc 암호화 결과는 ehf 가 될 수도 있도 다른 대응된 알파벳이 될 수도 있다.
 - a b c d e f g h i j k l .......z
 - e h f u e s y x n v p i ..... 

[에니그마]
 - 독일의 세르비우스에 의해 20세기 초에 발명된 암호화/복호화를 수행하는 기계. 독일어로 수수께끼를 의미.
 - 에니그마로 암호화/복호화 하기위해서는 코드북이 있어야한다.

[일회용 패드] - 절대 해독 불가능한 암호 / 64비트 암호화
 - 평문과 랜덤한 비트열과의 XOR만을 취하는 단순한 암호
 - XOR은  둘중에 하나라도 1이면 1이고 그 외는 모두 0이다.
 - 예) MIDNIGHT를 ASCII로 부호화했을때의 비트열
 -  01101101 01101001 01100100 01101110 01101001 01100111 01101000 01110100
 -  01101011 11111010 01001000 11011000 01100101 11010101 10101111 00011100  --> 평문의 길이와 같은 64비트의 랜덤한 비트열
 -  00000110 10010011 00101100 10110110 00001100 10110010 11000111 01101000  --> 암호화 결과

[DES : Data Encryption Standard ] 
 - 1977년에 미국의 연방정보처리표준규격으로 채택된 대칭 암호. 전 세계의 정부나 은행등에서 널리 이용되어 왔다.
 - 64비트 평문을 64비트 암호문으로 암호화하는 대칭 암호 알고리즘. 키의 비트 길이는 56비트이다. 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트가 된다.
 - DES의 기본 구조는 페이스텔이 만든 것으로 페이스텔 네트워크, 페이스텔 구조 혹은 페이스텔 암호라 부릴고 있다.
 - 1999년의 DES Challenge III에서 22시간 15분만에 키가 깨졌다.

[트리플 DES] - tripple DES
 - DES보다 강력하도록 DES를 3단으로 겹치게 한 암호 알고리즘이다. 3DES 등으로 불리기도 한다.

[AES : Advanced Encryption Standard] 
 - 지금까지 표준이었던 DES를 대신하여 새로운 표준이 된 대칭 암호 알고리즘이다.
 - AES최종 후보 5개 [MARS (IBM사) , RC6 (RSA사) , Rijndael (Daemen, Rijnmen) - 채택 , Serpent (Anderson, Biham, Knudsen), Twofish (Counterpane사) ]

[Rihndael] 
 - 벨기에의 연구자 Joan Daemen과 Vincent Rijmen가 설계한 블록 암호 알고리즘으로 2000년에 차세대의 표준 암호 알고리즘으로서 선정되었다.

[블록 암호 모드] 
 - DES 와 AES는 블록 암호라서 고정 길이 비트의 평문밖에 암호화할 수 없다. 임의의 길이의 평문을 암호화하기 위해서는 평문을 일정한 길이를 갖는 블록으로 나누고 각 블록에 블록 암호를 반복 적용하여 암호화를 할 필요가 있다.
 - 암호 알고리즘은 블록 암호와 스트림 암호 2개로 나눌 수 있다고 하였다. 
 - 블록암호는 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭한다.
 - 이 집합을 블록이라고 한다. 그리고 블록의 비트 수를 블록길이 라고 한다.
 - DES나 트리플 DES의 블록 길이는 64비트이다. 이들 암호 알고리즘은 64비트의 평문을 하나의 단위로 간주하여 암호화하고 64비트의 암호문을 만들어 출력한다.
 - AES의 블록 길이는 128비트, 192비트, 256비트 중에서 고를 수 있다.
 - 스트림암호는 데이터의 흐름을 순차적으로 처리해가는 암호 알고리즘의 총칭이다. 스트림 암호에서는 1비트, 8비트, 32비트 등의 단위로 암호화와 복호화가 이루어진다.
 - 대표적인게 일회용 패드 암호화이다.

 - 블록암호모드
- ECB모드 : Electric CodeBook mode(전자 부호표 모드)
- CBC모드 : Cipher Block Chaining mode(암호 블록 연쇄 모드)
- CFB모드 : Cipher-FeedBack mode(암호 피드백 모드)
- OFB모드 : Output-FeedBack mode(출력 피드백 모드)
- CTR모드 : Counter mode(카운터 모드)
 - 평문블록이란?
- 블록암호 알고리즘에서 암호화의 대상이 되는 평문을 말한다. 평문 블록의 길이는 블록 암호 알고리즘의 블록 길이와 같다.
 - 암호문 블록이란?
- 블록 암호 알고리즘을 써서 평문 블록을 암호화한 암호문을 말한다.
 - ECB모드
- ECB모드에서는 평문 블록을 암호화한 것이 그대로 암호문 블록이 된다. / 만약 맬로리가 악의를 가지고 암호문 블록을 서로 바꾸었다고 하면 수신자가 잘못 오해할 수 있다.
- 블록1 = 송금자의 은행 계좌 번호 / 블록2 = 송금처의 은행 계좌 번호 / 블록3 = 송금액

 - CBC모드
- 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행한다.
- 만약 평문블록1과 2의 값이 같은 경우라도 암호문 블록1과 2의 값이 같아진다고는 할 수 없다. 따라서 ECB가 갖고 있는 결점이 CBC모드에는 없다.
 - CFB모드
- 1단계 앞의 암호문 블록을 암호 알고리즘의 입력으로 사용한다. ECB모드나 CBC모드에서는 암호 알고리즘을 이용하여 평문 블록을 암호화하였다. 그러나 CFB모드에서는 평문 블록을 암호 알고리즘으로 직접 암호화하고 있지 않는다는 점을 알 수 있다.
- 재전송 공격이 가능하다는 단점이 있다.

 - OFB모드
- 암호 알고리즘의 출력을 암호 알고리즘의 입력으로 피드백한다.
- 평문블록과 암호알고리즘의 출력을 XOR해서 암호문 블록을 만들어내고 있다. / CBC모드나 CFB모드와 마찬가지로 초기화 벡터를 사용한다.
 - CTR모드 
- 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만들어 내는 스트림 암호이다.

[키 배송문제 해결을 위한 4가지 방법] 
 - 암호화/복호화에 사용되는 키를 암호문과 같이 배송할때 도청자에게 캐치될 수 있다는 문제점.
 - 키 사전공유 방법
 -  안전하게 보낼수있는 방법도 없을 뿐더러 대상자가 천명 만명이 된다면 이 또한 문제가 된다.
 - 키 배포센터에 의한 문제 해결
 - 대상자가 많아질수록 센터의 서버 부하가 가중화 된다. / 배포센터가 해킹되면 게임셋이다.
 - Diffie-Hellman 키 교환에 의한 해결
 - 암호 통신을 원하는 두 사람이 있다면 어떤 정보를 교환한다. 이 정보는 도청자가 읽어도 괜찮다.  두 사람은 지금 교환한 정보를 가지고 동일한 키를 각각 만들어 낼 수 있다. 그런데 도청자는 같은 키를 만들 수 없다.
 도청자는 두 사람이 교환한 정보를 도청할 수 있지만, 그것만으로는 통신하고 있는 두 사람과 동일한 키를 만들어 낼 수는 없는 것이다.
 - 공개 키 암호에 의한 해결
 - 수신자는 미리 암호화키를 송신자에게 알려준다. 이 암호화키는 도청자에게 알려져도 괜찮다. 송신자는 그 암호화키를 써서 암호화해서 수신자에게 보낸다. 
  복호화할 수 있는 것은 복호화키를 가지고 있는 수신자 뿐이다.

[공개키 암호 - public-key cryptography] 
 - 암호화키와 복호화키가 분리되어 있다. 
 - 송신자는 암호화 키를 써서 메시지를 암호화하고, 수신자는 복호화키를 써서 암호문을 복호화한다.
 - 이해할 사항
   :  송신자가 피룡한 것은 암호화키 뿐이다.
   :  수신자가 필요한 것은 복호화키 뿐이다.
   :  도청자에게 알려지면 곤란한 것은 복호화키 이다.
   :  암호화키는 도청자에게 알려져도 괜찮다.
 - 암호화키는 일반에게 공개할 수 있다. 공개해도 상관이 없으므로 이 키를 공개키 라 부른다.
 - 복호화키는 절대로 공개해서는 안된다. 이 키는 당신만이 사용하는 것이다. 그래서 개인키 라 부른다.
 - 공개키와 개인키는 둘이 한 쌍이 된다. 이것을 가리켜 키쌍 이라고 부른다. 공개키로 암호화한 암호문은 그 공개키와 쌍이 되는 개인키가 아니면 복호화할 수 없다.
 - 통신흐름 예
   :  밥은 공개키/개인키로 이루어진 한 쌍의 키를 만든다.
   :  밥은 자신의 공개키를 앨리스에게 보낸다.
   :  앨리스는 밥의 공개키를 써서 메시지를 암호화한다.
   :  앨리스는 암호문을 밥에게 보낸다.
   :  밥은 자신의 개인키를 써서 암호문을 복호화한다.
 - 암호화 때는 E(encrypt)와 N(number)이 필요하다. 
 - 복호화 때는 D(decrypt)와 N(Number)이 필요하다.
 - 공개키 암호가 등장했다고 해서 대칭암호가 없어지는 것은 아니다. 공개키 암호의 실행속도는 대칭 암호의 실행속도보다 훨씬 느리기 때문이다.


[다른 공개키 암호] 
 - ElGamal : RSA는 소인수분해가 곤란하다는 것을 이용했지만, ElGamal 방식에서는 mod N으로 이산대수를 구하는 것이 곤란하다는 것을 이용한다.
    암호문의 길이가 평문의 2배가 되어 버린다는 결점이 있다. 암호 소프트웨어 GnuPG에 구현되어 있다. 

 - Rabin : mod N으로 평방근을 구하는 것이 곤란하다는 것을 이용하고 있다. RSA는 큰 수 N을 소인수분해 하지 않아도 해독할 수 있는 가능성이 있지만, Rabin방식에 의한 공개키 암호의 해독은 소인수분해를 행하는 것과 같은 정도로 어렵다는 것이 증명되어 있다. 

 - 타원곡선암호(elliptic curve cryptosystems; ECC) : RSA에 비해 키의 비트 수를 적게 할 수 있는 것이 특징이다. 타원곡선이라 불리는 곡선을 정하고, 그 곡선상에 있는 점에 대하여 특수한 멱제곱을 
   정의한다. 타원곡선 암호에서는 이 멱제곱의 역연산이 어렵다는 것을 이용한다.

[하이브리드 암호시스템] 
 - 대칭암호와 공개키 암호의 장점을 살릴 수 있도록 조합한 방법이다.

[강한 하이브리드 암호시스템] 
 - 하이브리드 암호 시스템에서는 대칭 암호와 공개키 암호 두가지를 모두 사용한다. 어느 쪽인가 한 쪽의 키 길이가 극단적으로 짧으면 공격이 그쪽으로 집중될 가능성이 있으므로,
   대칭 암호와 공개키 암호의 키 길이는 양쪽이 같은 정도의 강도가 되도록 길이를 맞추는 것이 바람직할 것이다. 
   단, 장기간의 운용을 고려한다면 대칭 암호보다도 공개 키 암호쪽을 강하게 해야한다. 왜냐하면 대칭암호의 세션키가 뚫렸을 때 해독되는 것은 해당 통신에 사용하는 통신문뿐이지만,
   공개키 암호가 뚫렸을 때는 과거뿐만 아니라 앞으로 있을 암호통신 전체가 해독되어 버리기 때문이다.

[일방향 해시함수] 
 - 입력과 출력이 각각 1개씩 있다. 입력은 메시지라고 하고, 출력은 해시값이라 한다. 일방향 해시함수는 메시지를 기초로해서 해시값을 계산한다. 
 - 몇백 메가바이트나 되는 파일의 무결성을 확인하고 싶은 때에도, 일방향 해시 함수를 사용하면 짧은 해시 값을 비교하는 것만으로도 충분하다. 
 - 성질
   : 임의의 길이 메시지로부터 고정 길이의 해시 값을 계산한다.
   : 해시 값을 고속으로 계산할 수 있다.
   : 메시지가 다르면 해시 값도 다르다.
   : 일방향성을 갖는다. (복호화를 할 수 없다는 뜻)
 - 종류
   : MD4, MD5 : 128비트 해시값을 갖는다. (MD는 Message Digest)의 약자이다.
   : SHA-1, SHA-256, SHA-384, SHA-512 (SHA-1은 160비트의 해시값을 갖는다. 256, 384등은 비트..)
   : RIPEMD-160 : 150비트의 해시 값을 갖는 일방향해시함수.

[메시지 인증코드 - message authentication code] 
 - 무결성을 확인하고 메시지에 대한 인증을 하는 기술이다. 첫글짜를 따서 MAC라고 부른다.
 - 이용순서
   : 송신자 앨리스와 수신자 A은행은 사전에 키를 공유해둔다.
   : 송신자 앨리스는 송금 의뢰 메시지를 작성한 뒤 이 메시지의 MAC값을 계산한다.
   : 송신자 앨리스는 수신자 A은행에게 송금 의뢰 메시지와 MAC값을 보낸다.
   : 수신자 A은행은 수신한 송금 의뢰 메시지를 기초로 해서 MAC값을 계산한다.
   : 수신자 A은행은 앨리스로부터 수신한 MAC값과 자신이 계산해서 얻은 MAC값을 비교한다.
   : 수신자 A은행은 이 2개의 MAC값이 동일하면 송금의뢰가 틀림없이 앨리스로부터 온 것이라고 판단한다. 동일하지 않다면 앨리스로부터 온 것이 아니라고 판단한다.

[메시지 인증코드 실현방법] 
 - 일발향 해시 함수를 이용한 실현
  : SHA-1이나 MD5와 같은 일방향해시함수를 이용하여 메시지 인증 코드를 실현할 수 있다. 그 중 하나로 HMAC가 있다.
 - 블록 암호를이용한 실현
  : 트리플 DES나 AES와 같은 블록암호를 사용해서 메시지 인증코드를 실현할 수 있다.
 - 그 밖의 방법으로 실현
  : 스트림 암호나 공개키 암호등을 사용해서 메시지 인증코드를 실현할 수 있다.

[HMAC] 
 - 일방향 해시 함수를 이용하여 메시지 인증 코드를 구성하는 방법이다. H는 hash를 의미한다.

[디지털 서명] 
 - 메시지 인증코드는 부인방지에는 도움이 되지 않는다. 이유는 메시지 인증코드를 사용하기 위해서는 송신자 앨리스와 수신자 밥 두 사람이 키를 공유할 필요가 있었기 때문이다.
   키를 공유하고 있기 때문에 메시지 인증 코드를 사용해서 바른 MAC값을 계싼할 수 있는 것은 송신자 앨리스만은 아니다. 수신자 밥도 바른 MAC값을 계산할 수가 있다. 
   앨리스와 밥 양쪽 모두 바른 MAC값을 계산 할 수 있기 때문에 그 메시지는 분명히 앨리스의 것이다. 라는 것을 제 3자에게 증명할 수 없는 것이다.
   앨리스가 사용하는 키는 앨리스만이 알고 있는 개인적인 것이라고 하자. 앨리스는 메시지를 송신할 때 그 개인적인 키를 써서 서명을 작성한다. 한편 수신자 밥은 앨리스의 키와는 다른 키를 써서 서명을 검증한다. 밥의 키를 사용한다고 해도 메시지로부터 서명을 작성하는 것은 할 수 없다. 하지만 밥의 키를 사용하면 앨리스가 계산한 서명은 분명히 앨리스의 키를 써서 계산한 것이라고 알 수 있다. 이런식으로 잘 된다면 조작의 검출, 거짓행세의 검출 그리고 부인방지를 할 수 있는 기술로서 사용이 된다.
이게 디지털 서명이다.

 

 

 

 

 

728x90
반응형

'IT > 트렌드&개념공부&TIP' 카테고리의 다른 글

자료구조 종류 간단한 정리  (0) 2021.02.01
객체지향 5원칙  (0) 2021.01.31
객체지향 방법론. 책 내용 정리  (0) 2021.01.31
리팩토링이란?  (0) 2021.01.24
Head First Design Pattern 정리  (0) 2021.01.24

댓글