2011년 6월 13일 월요일

자바을 이용한 암호학(자바보안 개정판:인증) - 9

PLT 4.3 MAC
클래스는 메시지 인증 코드(MAC)에 대한 API를 정의한다. MAC은 비밀키를 공유하는 집단 사이에서 전송되는 정보의 무결성을 검사할 있다. MAC은 공개키/개인키가 아니라 비밀키와 함께 생성된다는 점을 제외하면 디지털 서명과 비슷하다. MAC 클래스는 알고리즘과 무관하며 제공자-기반이다. 정적 getInstance() 팩토리 메소드 하나를 호출하여 희망하는 MAC 알고리즘의 이름을 지정하여 MAC 객체를 얻는다.

“SunJCE"제공자는 ”HmacMD5", "HmacSHA1"이라는 개의 알고리즘을 구현한다.
  • Mac 객체를 얻은 후에는 init() 메소드를 호출하여 SecretKey를 지정하여 Mac 객체를 초기화 한다.
  • Mac 객체를 얻고 초기화 후에는, Mac이 계산될 데이터를 지정한다. 단순히 단일 바이트 배열을 처리 할때는 doFinal()에 전달하고, 스트리밍이나 다양한 위치에 저장된다면 update()를 여러번 호출하여 처리한다.
SecureRandom sr = new SecureRandom();
byte[] keyBytes = new byte[20];
sr.nextBytes(keyBytes);
SecretKey key = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac m = Mac.getInstance("HmacSHA1");
m.init(key);
m.update(inputData);
byte[] mac = m.doFinal();

PLT 4.4 서명
java.security.Signature
서명은 두 가지 보안 서비스(인증과 무결성) 즉, 메시지가 변조되어 오지 않는 것과 메시지가 어떤 사람으로부터 보내졌는지를 보장해준다. 서명은 서명한 사람의 개인키를 가지고 암호화한 메시지 축약이다. 서명한 사람의 공개키만이 서명을 복호화 할 수 있으며, 이것이 인증을 제공한다. 메시지 축약이 서명으로부터 복호화한 메시지 축약과 같다면, 무결성 역시 보장되는 것이다.
  • Signature 객체는 정적 팩토리 메소드인 getInstance()중의 하나를 원하는 전자 서명 알고리즘과 선택적으로 알고리즘의 제공자를 지정하면서 호출하여 얻을 수있다.
  • 전자 서명은 본질적으로 공개키 암호화 알고리즘으로 암호화된 메시지 축약이다. 따라서 전자 서명 알고리즘을 지정하려면, 축약 알고리즘과, 암호화 알고리즘을 모두 지정해야한다.
  • 기본 “SUN"제공자에서 지원되는 유일한 알고리즘은 ”SHA1WwithDSA"이다.
  • 전자 서명의 생성을 위한 초기화를 하려면 initSign()을 호출하고 서명 생성을 위한 개인키를 지정해야한다.
  • 서명의 검증을 위한 초기화를 하려면 initVerify()를 호출하고 사인자(signer)의 공개키를 지정해야 한다.
  • Signature 객체가 초기화 되었으면 update()를 한번 이상 호출하여 사인되거나 검증될 바이트를 지정한다.
  • 마지막으로 전자 서명을 생성하기 위해 sign()을 호출하면서 사인이 저장될 바이트 배열을 넘겨준다.

PLT 4.5 암호화
암호화의 종류
  • 대칭 또는 개인키 : 암복호화에 하나의 개인키를 사용한다.
  • 비대칭 또는 공개키 : 개인키로 암호화하고 공개키로 검증한다.
  • 하이브리드(hybrid) : 비대칭 암호는 소위 개인키를 교환하기 위해 사용된다. 개인키는 데이터 암호화 및 복호화를 위해 대칭 암호화와 함께 사용된다.

대칭암호의 종류
  • 블록 암호 : 고정된 크기의 데이터 블록을 암호화 하고 복호화한다.
  • 스트림 암호 : 비트나 바이트의 스트림상에 작동한다.(블록암호화의 CFB모드 사용)
암호 모드
모 드
설 명
비 고
ECB
가장 단순 모든 동일한 평문은 동일한 암호문이 된다.
CBC
ECB의 단점보안 가장 일반적임
PCBC
CBC와 유사
CFBn
블록암호가 스트림처럼 동작하도록한다.
OFBn
CFB모드와 유사

사용예)
Cipher cipher = Cipher.getInstance(“DES/ECB/PKCS5Padding”);
//알고리즘-블록암호화 알고리즘 – 패딩기법

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...