달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

http://suite.tistory.com 2013.06 fs

 

그동안 인코딩 관련해서 base64, urlencode, md5 나 경험하다가 

 

암호화 Algorithm (알고리즘? 알고리듬?) 개발은 아니고 

openssl 라이브러리를 사용해보기 위해  학습해 보았다.

구글링을 문서가 참 많은데 쭉~해오던게 아니니 생소한 용어를 많이 봄.

 그냥 개인적으로 양파 까듯이 개념 정리해봄(블로그/구글링 웹문서 참고)

 

1.  대칭형 암복호화 (AES,DES,SEED... 방식)

     암호화/복호화시 key가 동일한 형태  


 

2. 비대칭형 암복호화 (RSA...방식)

    암호화/복호화시 서로 다른 key를 사용한 형태

 

3. RSA (Ron Rivest, Adi Shamir,Leonard Adleman ) 1977년 만든 3사람 이름 약자

     소수를 이용하여 만든 Algorithm 공개되어 있지만  취약성이 아주 많이 없어 아주 많이 사용됨

      설명은 아래 링크 참고 :

http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=11080102&docId=49010517&qb=cnNhIOqzteqwnCDtgqQg7JWU7Zi4IOuwqeyLnQ==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0

 

4. DES(Data Encryption Standard)

    미국에서 예전에 표준으로 쓰던 암호화로 현재는 AES로 대체되어 사용 안한다고 함

 

5. AES (Advanced Encryption Standard)    1997년 9월 공모 2001년12월부터 AES 표준화 완료

   미국에서 DES 대체 방식으로 공모함 

   그중에 벨기에 수학자(Daemen과 Rijndael)이 만든  Rijndael 이 채택되어 구현됨

   * Rijndael 정확한 발음 모르겠음 (레인달, 라인댈,라인달...)

 

   KEY는 128bit, 192bit, 256bit 사용 가능하고 이론적으로는 key 길이는 무제한 이라고함

    KEY크기가 128bit(16byte) 면 Algorithm에 따라 라운드?를 9회 , 192bit(24byte) 11회 , 256bit(32byte) 13회 한다고하니

    키가 길면 좀더 암호화가 되고 시간?도 좀더 걸리는것 으로 예상됨    

 

6. SEED , ARIA

    한국에서 만든 암호화 암고리듬 , ARIA경우 우리나라 공공기관 및 산하기관 거의 표준으로 들어가야 하는데

   최소 한 1년정도 검증기간이 소요예상(카더라통신) ,  프로젝트 상황에 따라 국내 상용제품을 구매가 나을 듯

 

7. 블럭암호화

    AES 알아 보다 보면 블럭암호화가 나오고 ECB , CBC... 모드가 나온다.

    블럭암호화: 임의의 평문을 암호화하기 위해서 일정한 길이로 나눠서 하는거 

    ex)  기본 데이터 블럭은 16byte

 

   ECB (Electric CodeBook mode)  : 모든 글들이 비추천 사용하지 말라는 모드임 

   16byte 블럭단위가 동일키로 암호화 하는구조

    -> 평문이 같다면 암호화 블럭도 일정해진다.

    * 스트림 암호화 방식도 있다 1byte씩

 

 

    CBC(Cipher Block Chaining mode)  : 모든 글들이 권장모드 , 적극 사용 하라는 모드임

    ECB와 달리 IV를 활용하여 처음블럭이 다음 암호화 블럭에 영향을준다.
   -> 평문이 같아도 암호화 블럭이 달라진다.

   ECB vs CBC 비교 좋은 링크 : http://blog.naver.com/PostView.nhn?blogId=taketime62&logNo=90043063571 

   이외 좀 더 있다 (CFB,OFB,CTR)

 

8. IV (initialization vector) : 초기화백터?

   CBC 모드 알아 보다 보면 16byte 크기가 IV가 있다

   KEY와는 다르고 CBC 모드에서 체인형식으로 앞블럭 뒤에 블럭 영향을 주도록 하는것 같다.

   IV값은 처음 시작할때 값과 암호화후 값을 보면 달라진다.

 

  주의할점은 IV 값을 복호화시에 반드시 최초값과 동일하게 해야함

   ex) IV 값을 0으로 암호화 시작했다면 , 복호화시에 IV 값을 0으로 해야한다.

  -> 어떻게 보면 기본 key 값에 또 하나의 2중 key 값이라고도 할수 있다고 개인적으로 생각

 

9. 패딩 (padding)

   블럭단위로 암호화시 분명 소스 데이타가 블럭길이가 딱 맞지 않을 수 있다.

   그걸경우 마지막 블럭도 단위에 맞게 패딩(추가Byte)을 해서 블럭을 맞게 해준다.

   openssl - AES_cbc_encrypt() 에서 패딩도 해주면 좋았을텐데 안해줘서

   구글링해서 좋은 글을 찾았다.

   http://wiki.dgoon.net/doku.php?id=ssl:pkcs_5

   패딩글을 보다보면 PKCS5 PKCS7 나온다.  

 

10. 메시지 다이제스트(Message Digest)

   원문에서 일정한 길이로 문자열을 변환해주는거(해쉬함수) 

   복호화는 없다고 봐야하는데~ MD5 경우 텍스트경우 좀 됨 (인터넷에 변환사이트 많음)

   보통 사용자 암호저장시 활용

   MD5 , SHA 요즘은 MD5 보완취약하다고 SHA-1 이상 방식 권장 한다고함  

 

11. KMS(Key Management Server)

   KMS 용어 참많다!  암호화에서는 full name 그대로 암호화 key를  관리하는 서버

 

12. openssl (http://www.openssl.org/)

   오픈소스로 여러가지 암호화(인코딩)/복호화(디코딩) Algorithm을 착한분들이  c 라이브로로 만들어줌

   다음 포스트에 openssl - libcrypto.a 활용한

   AES  256 CBC모드 함수 AES_cbc_encrypt()  샘플

-> http://suite.tistory.com/entry/AES-암호화-crypto-cbc-모드-샘플-by-openssl


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* 관련해서 많이본 포스팅  작성자분에게 감사합니다.  (펌글이라면 출처를 넣어주는 센스가...)

http://www.parkjonghyuk.net/lecture/modernCrypto/lecturenote/chap04.pdf 

http://blog.daum.net/thermidor/8933157

http://linuxforge.tistory.com/191

http://www.cyworld.com/duetys/14268419

https://www.google.co.kr/search?newwindow=1&noj=1&q=PKCS5Padding&spell=1&sa=X&ei=0EOrUervBYqXkQX87IHwBw&ved=0CCoQBSgA&biw=1440&bih=766

http://thenine.egloos.com/321704

http://www.di-mgt.com.au/cryptopad.html

http://blog.naver.com/PostView.nhn?blogId=hyoguri81&logNo=150098915801

http://blog.naver.com/PostView.nhn?blogId=taketime62&logNo=90043063571 

http://wiki.dgoon.net/doku.php?id=ssl:pkcs_5

http://www.eglobalsys.co.kr/sub2/06.php

http://blog.naver.com/imchan123?Redirect=Log&logNo=10168165622

http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=11080102&docId=49010517&qb=cnNhIOqzteqwnCDtgqQg7JWU7Zi4IOuwqeyLnQ==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0

http://blog.naver.com/typeofb?Redirect=Log&logNo=166253556

http://andstory.com/zb41/zboard.php?id=tip_board&page=18&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=desc&no=490

 

 

 

:
Posted by mastar