You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
첫번째는 코드를 통해서 바로 확인할 수 있지만 두번째 representation의 종류는 서버나 이미 구현된 곳과 형태를 맞춰서 사용해야 한다.
처음 구현할 때 이부분에서 애를 좀 먹었는데 간단하게 종류와 특성을 확인해보자
/// Creates a P-256 private key for signing from a collection of bytes.////// - Parameters:/// - rawRepresentation: A raw representation of the key as a collection of/// contiguous bytes.publicinit<Bytes>(rawRepresentation:Bytes)throwswhere Bytes :ContiguousBytes/// Creates a P-256 private key for signing from a Privacy-Enhanced Mail/// PEM) representation.////// - Parameters:/// - pemRepresentation: A PEM representation of the key.@available(iOS 14.0, macOS 11.0, watchOS 7.0, tvOS 14.0,*)publicinit(pemRepresentation:String)throws/// Creates a P-256 private key for signing from a Distinguished Encoding/// Rules (DER) encoded representation.////// - Parameters:/// - derRepresentation: A DER-encoded representation of the key.@available(iOS 14.0, macOS 11.0, watchOS 7.0, tvOS 14.0,*)publicinit<Bytes>(derRepresentation:Bytes)throwswhere Bytes :RandomAccessCollection, Bytes.Element ==UInt8/// - Parameters:/// - x963Representation: An ANSI x9.63 representation of the key.publicinit<Bytes>(x963Representation:Bytes)throwswhere Bytes :ContiguousBytes
우선 종류만 보면 4가지의 Representation이 존재하고 pemRepresentation을 제외하고 나머지는 Data Type임을 알 수 있다.
1) rawRepresentation
의미 그대로 별다른 규칙없이 단순히 Data Type으로 생성하는 것을 의미한다.
서버에서 다른 Representation을 사용하고 있더라도 raw에서 변환이 가능하기 때문에 클라이언트에서 Private Key를 생성하고 저장할 때는 rawRepresentation 을 사용하는 것을 추천한다
2) pemRepresentation
pem은 텍스트 기반의 암호화 형식으로 Base64로 인코딩된 데이터를 시작과 끝에 특정한 태그를 붙여 표현한다.
pem 형식으로 public key를 생성하면 String Type으로 키가 생성되고 키의 처음과 끝에 - - -Private Key - - -와 같은 태그가 생성되는 것을 확인할 수 있다.
3) derRepresentation
Creates a P-256 private key for signing from a Distinguished Encoding
특정한 태그 및 길이정보를 포함해서 데이터를 직렬화 해서 저장한다 (사실 정확한 의미는 모르겠습니다)
사실 derRepresentation과 x963Representation이 어떤 의미를 가지는지는 모르지만 Data Type을 base64String 이나 hexString으로 변환해서 이미 구현된 부분과 길이를 비교하면 어떤 Representation을 사용하고 있는지 확인해 볼 수 있다.
ECDSA 키 생성 및 저장에 대해서 정리해보면,
Private Key, Public Key는 pair로 생성되며 Private Key를 통해서 Public Key를 생성할 수 있다.
키 생성시 다양한 종류의 Representation이 있는데 base64String, hexString 등으로 변환해 이미 구현된 곳과 길이를 비교해서 찾을 수 있다.
Private Key는 보통 KeyChain을 통해서 저장하게 되는데 rawRepresentation을 통해서 다른 타입으로 변환이 가능하므로 저장은 rawRepresentation으로 한다
The text was updated successfully, but these errors were encountered:
ECDSA
ECDSA 알고리즘이 어떤 방식으로 구현되어서 암호화를 하는지에 대해서는 정확히 모른다. 목표는 ECDSA를 Swift를 통해서 구현해서 이용하는데 중점을 두고 정리해보고자 한다
비대칭키 암호화, 디지털 서명 알고리즘
ECDSA 설명에서 다른 부분은 정확히 모르더라도 2개의 키워드를 통해서 어떤 메서드들이 필요한지 유추할 수 있다.
대칭키와 비대칭키에 대해 정리하면서 다뤘던 부분들입니다
순차적으로 하나씩 구현해보면서 간단하게 정리해보자
1) Key Pair 생성
ECDSA가 어떤 알고리즘인지 모르는데 어떻게 만드나요?
아주 다행히도 애플은 암호화를 위해 CryptoKit 프레임워크를 제공해주고 있고 사용하는 스펙에 맞게 P256, P348, P521, Curve25519를 선택하면 된다.
(각 숫자가 의미하는건 Key Size로 이미 구현된곳과 맞춰줘야 한다. ECDSA256은 P256을 사용하면 된다)
코드에서 확인해야 될 부분은
첫번째는 코드를 통해서 바로 확인할 수 있지만 두번째 representation의 종류는 서버나 이미 구현된 곳과 형태를 맞춰서 사용해야 한다.
처음 구현할 때 이부분에서 애를 좀 먹었는데 간단하게 종류와 특성을 확인해보자
우선 종류만 보면 4가지의 Representation이 존재하고 pemRepresentation을 제외하고 나머지는 Data Type임을 알 수 있다.
1) rawRepresentation
의미 그대로 별다른 규칙없이 단순히 Data Type으로 생성하는 것을 의미한다.
서버에서 다른 Representation을 사용하고 있더라도 raw에서 변환이 가능하기 때문에 클라이언트에서 Private Key를 생성하고 저장할 때는 rawRepresentation 을 사용하는 것을 추천한다
2) pemRepresentation
pem은 텍스트 기반의 암호화 형식으로 Base64로 인코딩된 데이터를 시작과 끝에 특정한 태그를 붙여 표현한다.
pem 형식으로 public key를 생성하면 String Type으로 키가 생성되고 키의 처음과 끝에 - - -Private Key - - -와 같은 태그가 생성되는 것을 확인할 수 있다.
3) derRepresentation
Creates a P-256 private key for signing from a Distinguished Encoding
특정한 태그 및 길이정보를 포함해서 데이터를 직렬화 해서 저장한다 (사실 정확한 의미는 모르겠습니다)
사실 derRepresentation과 x963Representation이 어떤 의미를 가지는지는 모르지만 Data Type을 base64String 이나 hexString으로 변환해서 이미 구현된 부분과 길이를 비교하면 어떤 Representation을 사용하고 있는지 확인해 볼 수 있다.
ECDSA 키 생성 및 저장에 대해서 정리해보면,
The text was updated successfully, but these errors were encountered: