Life style/TIL

암호화와 보안의 기본 개념과 iOS 앱 보안을 위한 방안

jaewpark 2024. 5. 9. 11:59

암호화는 정보를 인코딩하는 프로세스이다.

암호화에 사용되는 키가 있으며, 키를 통해서 암호문을 생성한다. 암호화된 정보를 사용하기 위해서는 키를 이용하여 암호문을 복호화한다.

 

암호화는 보안 분야에서 사용되며, 대표적으로는 아래와 같다.

  • 데이터 전송 보안: 인터넷 통신
  • 데이터 저장 보안
  • 인증 및 접근 제어: 인증서, 보안 토큰
  • 전자서명
  • 블록체인

 

대칭키 암호화와 비대칭키 암호화의 차이

암호화에서 사용되는 키는 두 가지 유형의 키가 사용된다.

  • 대칭키
  • 비대칭키(공개키)

Symmentic-key

암호화와 복호화에 사용되는 키, 두 키 사이에는 동일할 수도 있고 간단한 변환이 있을 수도 있다.

둘 이상의 당사자 간의 공유하는 키로 양 당사자가 비밀 키에 접근할 수 있어야 한다는 요구 사항은 public-key에 비해 주요 단점이다.

그러나 대량 암호화에 더 좋다. OTP를 제외하면 크기가 더 작아서 저장 공간이 적고 전송 속도가 더 빠르다.

 

대칭키의 암호화는 stream ciphers(암호) 또는 block ciphers 를 사용한다.

stream ciphers는 byte 또는 문자를 한 번에 하나씩 암호화한다.

block ciphers는 여러 비트를 가져와 단일 단위로 암호화한다.

symmentric-key

Public-key

public key 그리고 private key 두 개로 구성된다.

public key를 가진 사람은 정보를 암호화하여 암호문을 생성할 수 있지만, 해당 private key를 아는 사람만 암호문을 해독할 수 있다.

여기에 사용되는 알고리즘은 TLS와 SSH 같은 네트워크 보안 프로토콜에 사용된다.

 

잘못된 알고리즘을 선택하거나 키 길이가 너무 짧은 것 그리고 private key가 알려지는 것 등 보안에 취약할 수 있는 문제가 있다.

public-key

 

웹 API에서 공개 키 암호화를 사용하여 JWT를 서명하는 부분도 예시를 들 수 있다.

그리고 보안을 강화하기 위해 토큰 값이 일정 기간마다 변경되도록 설정하는 경우도 있다.

 

해시 함수의 개념과 활용 사례

해시 테이블도 사용되지만 해시 함수의 종류에는 암호학적 해시 함수와 비암호학적 해시 함수로 나뉜다.

암호학적 해시 함수는 세 가지 성질을 갖는다.

  • 역상 저항성(preimage resistance)
    : 주어진 해시 값에 대해 해시 값을 생성하는 입력 값을 찾는 게 어려움. 데이터를 단방향으로 처리
    : 해시 값을 통해 원본 데이터를 복원할 수 없다는 말
  • 제 2 역상 저항성(second preimage resistance)
    : 입력 값에 대해 그 입력의 해시 값을 바꾸지 않으면서 입력을 변경하는 게 어려움. 변경 감지
    : 원본 데이터가 변경되면 해시값도 반드시 변경
  • 충동 저항성(collision resistance)
    : 해시 충돌에 안전해야 함

이러한 성질을 가지는 해시 값은 원래 입력값을 의도적으로 손상시키지 않았는지에 대한 검증 장치로 사용할 수 있다.

해시 함수는 보안 관련 작업에서 사용된다.

  • 데이터 무결성 검사
  • 비밀번호 보안
  • 암호화 키 생성
  • 데이터 저장 및 검색

iOS에서도 해시 함수 활용하는 것은 아래와 같다.

  • Touch ID 및 Face ID
    : 지문이나 얼굴을 해시 값으로 저장하여 사용자를 인증
  • 앱 서명
    : 앱이 변조되지 않았는지 앱에 디지털 서명을 생성
  • 키체인
  • SSL/TLS
    : 웹 사이트와의 연결을 안전하게 보호하기 위해 프로토콜에서 해시 함수를 사용