패스트터틀

소프트웨어 최적화(블록 암호 구현) 본문

Cyber Security(undergraduate)/cryptography

소프트웨어 최적화(블록 암호 구현)

SudekY 2019. 4. 18. 14:25

일반적인 코드

 

1. 성능 최적화 기법

  • 함수 사용 최소화(인라인 함수사용, 매크로사용)
  • Loop unrolling
  • 인라인 어셈블리

 

2. 코드 크기 최적화 기법

  • 중복 코드 최소화(함수구현)

 

블록암호 코드 구현

 

1. 성능 최적화 기법

  • 라운드 키 미리 생성
  • 함수 구현 지양(인라인 함수 구현, 매크로 구현)
  • 테이블 참조 구현(AES S-Box, MixColumns)
  • Loop unrolling(모든 라운드를 풀어서 구현)
  • 인라인 어셈블리 사용(레지스터 효율적 사용, Rotation 연상 등 최적화)

 

2. 코드 크기 최적화 기법

  • 라운드 키 on-the-fly 생성
  • 함수 구현 지향(1라운드 단위 구현, 전체 라운드 수만큼 반복, 공통 사용 모듈 함수 구현)

 

라운드 키 생성 방식

 

  • 전체 라운드 키 미리생성

  : 전체 라운드 키를 저장할 메모리 공간 필요

암호화/복호화 시 라운드 키 생성과정이 생략되어 빠른 수행 가능

메모리 공간이 충분하고 대용량의 데이터를 고속으로 처리하기 위한 PC, 서버 환경에 적합

 

  • 라운드별 on the fly 생성

  : 한 라운드에 사용할 라운드 키를 저장할 메모리 공간만 필요

암호화/복호화 과정에서 라운드 키를 생성

 

 

프로그래밍 언어 수준 선택

 

  • 고수준언어는 코드 작성과 이해가 쉽지만 컴파일러 및 컴파일 옵션에 의해 성능이 좌우되지만 높은이식성이있다
  • 저수준언어는 코드 장석과 이해가 어렵지만 컴파일러로 생성된 코드보다 크기 및 실행 속도 면에서 이점이 있다고수준언어와 반대로 하지만 이식성이 낮다.

함수구현

 

inline 함수,매크로

  • 컴파일러에 의해 함수 호출 부분이 함수 구현부로 치환됨
  • 함수 호출 오버헤드가 없어 속도가 빠름
  • 같은 코드가 반복되게 되므로 코드 크기는 증가함

함수

  • 함수를 호출하면 program counter가 함수 구현부로 이동
  • 함수 호출 오버헤드가 발생하여 속도 저하가 있음
  • 중복된 코드를 최소화하여 코드 크기를 감소시킬 수 있음

 

저비용 연산자 선택

 

%, /, *   -->   &, >>, << 로 바꿔서 사용하면 더 빨리 가볍게 가능함

 

Loop unrolling

 

인라인 어셈블리

 

AVR 레지스터 맵

 

 

 

 

 

 

 

 

'Cyber Security(undergraduate) > cryptography' 카테고리의 다른 글

아두이노와 암호화  (0) 2019.04.17
Comments