맨위로가기

Poly1305

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Poly1305는 16바이트 비밀 키와 메시지를 입력으로 받아 16바이트 해시를 반환하는 메시지 인증 코드 알고리즘이다. 이 알고리즘은 소수 2130-5를 모듈로로 사용하여 다항식을 평가하고, 결과를 2128을 모듈로로 축소하여 해시를 생성한다. Poly1305는 ChaCha20 스트림 암호와 결합하여 ChaCha20-Poly1305로 사용되며, Google Chrome 및 TLS/SSL 통신에서 사용된다. 또한 OpenSSH에도 채택되어 OpenSSL에 대한 의존성을 줄였다. Poly1305는 보편 해시 패밀리로서의 유계 차이 확률에 기반한 위조 방지 보안을 제공하며, 다양한 암호화 라이브러리에서 구현되어 고속으로 계산될 수 있도록 최적화되었다.

더 읽어볼만한 페이지

  • 고급 암호화 표준 - AES-NI
    AES-NI는 AES 암호화 및 복호화 성능 향상을 위해 설계된 x86 명령어 집합 아키텍처 확장으로, 인텔과 AMD 마이크로프로세서에 적용되었으며 AES 암호화 및 복호화 라운드, 키 생성 등을 가속화하는 명령어들을 포함한다.
  • 메시지 인증 코드 - HMAC
    HMAC(Keyed-Hash Message Authentication Code)는 공유된 비밀 키와 암호화 해시 함수를 사용하여 메시지의 무결성을 검증하는 메시지 인증 코드로서, IPsec, SSH, TLS, JSON 웹 토큰 등 다양한 보안 프로토콜에서 활용된다.
  • 메시지 인증 코드 - 갈루와/카운터 모드
    갈루아/카운터 모드(GCM)는 유한체 산술을 이용해 인증 태그를 생성하는 블록 암호 운용 모드로, 카운터 모드 기반 암호화 방식과 유한체 연산을 결합하여 데이터 기밀성과 변조 방지를 제공하며 GHASH 함수로 인증 태그를 생성하고 하드웨어 가속이 가능하지만, 특정 환경에서 성능 저하나 보안 취약점 문제가 발생할 수 있다.
  • 인터넷 표준 - DNSSEC
    DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다.
  • 인터넷 표준 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
Poly1305
개요
종류메시지 인증 코드 (MAC)
설계자다니엘 J. 번스타인
최초 발표2005년
상세 정보
기반유니버설 해시 함수
보안키 유출 공격에 취약함

2. 역사

Poly1305-AES는 128비트 AES 키, 106비트 추가 키, 128비트 일회용 값(nonce)을 사용하여 가변 길이 메시지로부터 128비트(16바이트) 인증자를 생성한다. 이름은 소수인 2130−5와 AES을 사용하기 때문에 붙여졌다.

NaCl에서는 AES 대신 Salsa20이, TLS 및 SSH에서는 ChaCha20이 사용된다.

구글은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안했으며, 구글 크롬 및 구글의 웹 서비스에서 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있다[13]。 TLS/SSL에서의 ChaCha20/Poly1305의 사용은 로 표준화되었다.

구글의 TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com으로 OpenSSH에 채택되었다[14][15]。이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다[16]

2. 1. 개발 배경

Poly1305-AES는 128비트 AES 키, 106비트 추가 키, 128비트 일회용 값(nonce)을 사용하여 가변 길이 메시지로부터 128비트(16바이트) 인증자를 생성한다. 소수인 2130−5와 AES을 사용하기 때문에 이 이름이 붙었다.

NaCl에서는 AES 대신 Salsa20이, TLS 및 SSH에서는 ChaCha20이 사용된다.

구글은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안했으며, 구글 크롬 및 구글의 웹 서비스에서 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있다[13]。 IETF RFC 7905로 TLS/SSL에서의 ChaCha20/Poly1305의 사용이 표준화되었다.

구글의 TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com으로 OpenSSH에 채택되었다[14][15]。이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다[16]

2. 2. 주요 개선 사항

NaCl에서는 AES 대신 Salsa20이, TLS 및 SSH에서는 ChaCha20이 사용된다.

구글(Google)은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안했으며, 구글 크롬(Google Chrome) 및 구글의 웹 서비스에서 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있다[13]。TLS/SSL에서의 ChaCha20/Poly1305의 사용은 표준화되었다.

구글의 TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com 으로 OpenSSH에 채택되었다[14][15]。이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다[16]

3. 작동 원리

Poly1305-AES는 128비트 AES 키, 106비트 추가 키, 128비트 일회용 값을 사용하여 가변 길이 메시지로부터 128비트(16바이트) 인증자를 생성한다. 이름은 소수인 2130−5와 고급 암호화 표준 (AES)을 사용하기 때문에 붙여졌다.[13]

NaCl에서는 AES 대신 Salsa20이 사용되며, TLS 및 SSH에서는 ChaCha20이 사용된다.

구글은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안 스트림 암호로 제안했다. 구글 크롬 및 구글 웹 서비스의 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있으며, IETF RFC 7905로 표준화되었다.

ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com으로 OpenSSH에 채택되어[14][15] OpenSSL 의존성을 없앴다.[16]

3. 1. Poly1305 알고리즘

Poly1305는 16바이트 비밀 키 rL바이트 메시지 m을 입력으로 받아 16바이트 해시 \operatorname{Poly1305}_r(m)를 반환한다.[2][1]

Poly1305 알고리즘은 다음 단계를 거친다.

1. r을 리틀 엔디안 16바이트 정수로 해석한다.

2. 메시지 m = (m[0], m[1], m[2], \dotsc, m[L - 1])을 16바이트씩 자른다.

3. 각 16바이트 덩어리에 1바이트를 추가하여 17바이트 리틀 엔디안 정수로 해석하고, 이를 다항식의 계수로 사용한다.

4. 소수 2^{130} - 5를 모듈로 하여 점 r에서 다항식을 평가한다.

5. 리틀 엔디안으로 인코딩된 2^{128}을 모듈로 하여 결과를 축소해 16바이트 해시를 얻는다.

다항식 c_1 r^q + c_2 r^{q - 1} + \cdots + c_q r의 계수 c_i (여기서 q = \lceil L/16\rceil)는 다음과 같이 계산된다.



c_i = m[16i - 16] + 2^8 m[16i - 15] + 2^{16} m[16i - 14] + \cdots + 2^{120} m[16i - 1] + 2^{128},



만약 L \not\equiv 0 \pmod{16}이면, 다음 식을 사용한다.



c_q = m[16q - 16] + 2^8 m[16q - 15] + \cdots + 2^{8(L \bmod 16) - 8} m[L - 1] + 2^{8 (L \bmod 16)}.



비밀 키 r = (r[0], r[1], r[2], \dotsc, r[15])는 다음과 같이 제한된다. 바이트 r[3], r[7], r[11], r[15]\{0,1,2,\dotsc,15\}에 속해야 하고 (상위 4비트가 0), 바이트 r[4], r[8], r[12]\{0,4,8,\dotsc,252\}에 속해야 한다 (하위 2비트가 0). 따라서 r2^{106}가지의 가능한 값을 가질 수 있다.

'''Poly1305-AES'''는 128비트 AES 키, 106비트 추가 키, 그리고 128비트 일회용값(nonce)을 사용하여 가변 길이 메시지로부터 128비트(16바이트) 인증자를 생성한다. 이 알고리즘은 소수인 2130−5와 고급 암호화 표준 (AES)을 사용하기 때문에 이러한 이름이 붙었다.

NaCl에서는 AES 대신 Salsa20을 사용하며, TLS 및 SSH에서는 ChaCha20을 사용한다.

3. 2. 일회용 인증자 (One-Time Authenticator)

만약 s가 리틀 엔디안 정수로 해석되는 비밀 16바이트 문자열이라면,



a := \bigl(\operatorname{Poly1305}_r(m) + s\bigr) \bmod 2^{128}



는 메시지 m에 대한 '''인증자'''라고 불린다. 보내는 사람과 받는 사람이 균등하게 무작위로 선택된 32바이트 비밀 키 (r, s)를 미리 공유한다면, 보내는 사람은 인증된 메시지 (a, m)을 전송할 수 있다. 받는 사람이 ''주장된'' 인증된 메시지 (a', m') (공격자에 의해 전송 중에 수정되었을 수 있음)을 받으면, 다음을 테스트하여 진위 여부를 확인할 수 있다.



a' \mathrel{\stackrel?=} \bigl(\operatorname{Poly1305}_r(m') + s\bigr) \bmod 2^{128}.



(r, s)에 대한 지식 없이, 공격자가 검증을 통과할 (a', m') \ne (a, m)을 찾을 확률은 8\lceil L/16\rceil/2^{106}이다.

그러나 동일한 키 (r, s)는 두 메시지에 대해 재사용해서는 안 된다. 만약 공격자가



\begin{align}

a_1 &= \bigl(\operatorname{Poly1305}_r(m_1) + s\bigr) \bmod 2^{128}, \\

a_2 &= \bigl(\operatorname{Poly1305}_r(m_2) + s\bigr) \bmod 2^{128},

\end{align}



for m_1 \ne m_2를 알게 되면, 빼기를 수행하여



a_1 - a_2 \equiv \operatorname{Poly1305}_r(m_1) - \operatorname{Poly1305}_r(m_2) \pmod{2^{128}}



결과로 나오는 다항식의 근을 찾아 비밀 평가 지점 r의 작은 후보 목록을 복구하고, 그로부터 비밀 패드 s를 복구할 수 있다. 그런 다음 공격자는 이를 사용하여 높은 확률로 추가 메시지를 위조할 수 있다.

3. 3. ChaCha20-Poly1305

NaCl 암호화는 메시지 번호 i와 XSalsa20 스트림 암호를 사용하여 메시지별 키 스트림을 생성하며, 이 키 스트림의 처음 32바이트는 일회용 Poly1305 키 (r_i, s_i)로 사용되고 나머지는 메시지 암호화에 사용된다. 그런 다음 Poly1305를 메시지의 암호문에 대한 일회용 인증자로 사용한다.[6] ChaCha20-Poly1305는 XSalsa20 대신 ChaCha를 사용하여 동일한 작업을 수행한다.[8]

구글(Google)은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안했으며, 구글 크롬(Google Chrome) 및 구글의 웹 서비스에서 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있다.[13] TLS/SSL에서의 ChaCha20/Poly1305의 사용은 IETF RFC 7905로 표준화되었다.

구글의 TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com으로 OpenSSH에 채택되었다.[14][15] 이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다.[16]

4. 보안

Poly1305와 그 파생형의 위조 방지 보안은 보편 해시 패밀리로서의 '''유계 차이 확률'''에 기인한다. 이 속성은 때때로 \mathbb Z/2^{128}\mathbb Z 상에서 '''\epsilon-거의-Δ-보편성''' 또는 '''\epsilon-AΔU'''라고 불린다.

Poly1305-AES의 보안은 기반이 되는 AES와 유사하다. 따라서 Poly1305-AES를 깨기 위해서는 AES를 깨야 한다.[17] AES에 문제가 발생하더라도 다른 암호화 알고리즘으로 대체하여 보안을 유지할 수 있다.

4. 1. 위조 방지 보안

Poly1305와 그 파생형의 위조 방지 보안은 보편 해시 패밀리로서의 '''유계 차이 확률'''에 기인한다.[2] 만약 m_1m_2가 각각 최대 L 바이트의 메시지이고, d가 리틀 엔디안 정수로 해석되는 16바이트 문자열이라면, 다음과 같다.



\Pr[\operatorname{Poly1305}_r(m_1) - \operatorname{Poly1305}_r(m_2) \equiv d \pmod{2^{128}}]

\leq \frac{8\lceil L/16\rceil}{2^{106}},



여기서 r은 균일한 랜덤 Poly1305 키이다.[2]

이 속성은 때때로 \mathbb Z/2^{128}\mathbb Z 상에서 '''\epsilon-거의-Δ-보편성''' 또는 '''\epsilon-AΔU'''라고 불리며,[10] 이 경우 \epsilon = 8\lceil L/16\rceil/2^{106}이다.

일회용 인증자 a = \bigl(\operatorname{Poly1305}_r(m) + s\bigr) \bmod 2^{128}를 사용하면, 최대 L바이트 메시지 m'에 대한 위조 시도 (a', m')의 성공 확률은 다음과 같다.



\begin{align}

\Pr[&a' = \operatorname{Poly1305}_r(m') + s

\mathrel\mid a = \operatorname{Poly1305}_r(m) + s] \\

&= \Pr[a' = \operatorname{Poly1305}_r(m') + a - \operatorname{Poly1305}_r(m)] \\

&= \Pr[\operatorname{Poly1305}_r(m') - \operatorname{Poly1305}_r(m) = a' - a] \\

&\leq 8\lceil L/16\rceil/2^{106}.

\end{align}



여기서 \Pr[\cdots] 내부의 산술 연산은 편의상 \mathbb Z/2^{128}\mathbb Z에서 수행된다.

NaCl의 crypto_secretbox_xsalsa20poly1305 및 ChaCha20-Poly1305의 경우, 위조에 대한 적의 성공 확률은 일회용 인증자와 마찬가지로 각 메시지에 대해 독립적으로 적용되며, 메시지별 키를 생성하는 데 사용되는 의사 난수 함수로서 XSalsa20 또는 ChaCha에 대한 적의 구별 이점 \delta를 더한 값이다. 다시 말해, 최대 L 바이트까지의 메시지에 대해 D번의 시도 후에 적이 단일 위조에 성공할 확률은 다음과 같다.



\delta + \frac{8D \lceil L/16\rceil}{2^{106}}.



Poly1305-AES의 위조 방지 보안은 각 메시지별 패드를 생성하기 위해 순열을 사용하여 카터-웨그만 인증자를 인스턴스화하는 카터-웨그만-쇼프 구조를 따른다.[11] 만약 적이 C개의 인증된 메시지를 보고 최대 L 바이트의 메시지 D개를 위조하려고 시도하며, 적이 의사 난수 순열로서 AES-128에 대해 최대 \delta의 구별 이점을 가진다면, 적이 D개의 위조 중 하나에 성공할 확률은 최대 다음과 같다:[2]



\delta + \frac{(1 - C/2^{128})^{-(C + 1)/2} \cdot 8 D \lceil L/16\rceil}{2^{106}}.


4. 2. Poly1305-AES의 보안

Poly1305-AES는 카터-웨그만 구조를[4][5] 사용하여 여러 메시지를 인증한다. ''i''번째 메시지 m_i에 대한 인증자 a_ia_i := H_r(m_i) + p_i로 계산된다. 여기서 H_r은 유니버설 해시 패밀리이고, p_i는 일회용 패드로 사용되는 독립적인 균일한 임의 해시 값이다.[2]

Poly1305-AES는 AES-128을 사용하여 p_i := \operatorname{AES}_k(i)를 생성한다. 여기서 i는 16바이트 리틀 엔디안 정수로 인코딩된다. Poly1305-AES 키는 16바이트 평가점 r과 16바이트 AES 키 k로 구성된 32바이트 쌍 (r, k)이다. 메시지 m_i에 대한 Poly1305-AES 인증자는 다음과 같이 계산된다.[2]

:

a_i := \bigl(\operatorname{Poly1305}_r(m_i) + \operatorname{AES}_k(i)\bigr) \bmod 2^{128},



여기서 16바이트 문자열과 정수는 리틀 엔디안 인코딩으로 식별된다. r은 메시지 간에 재사용된다.[2]

(r, k)를 모르는 경우, 적은 수신자가 정품으로 받아들일 인증된 메시지를 위조할 확률은 낮다. 적대자가 C개의 인증된 메시지를 보고 D개의 위조를 시도하며, 균일한 임의 순열로부터 \operatorname{AES}_k를 구별할 수 있는 이점은 최대 \delta이다. (AES가 깨지지 않는 한, \delta는 매우 작다.) 적대자가 단일 위조에 성공할 확률은 최대 다음과 같다.[2]

:

\delta + \frac{(1 - C/2^{128})^{-(C + 1)/2} \cdot 8 D \lceil L/16\rceil}{2^{106}}.



동일한 키 (r, k)로 메시지 번호 i를 반복해서는 안 된다. 반복되는 경우, 적대자는 일회용 인증자와 마찬가지로 r\operatorname{AES}_k(i)에 대한 작은 후보 목록을 복구하고 이를 사용하여 메시지를 위조할 수 있다.[2]

Poly1305-AES의 보안은 기반이 되는 AES와 유사하다. 따라서 Poly1305-AES를 깨기 위해서는 AES를 깨야 한다.[17] AES에 문제가 발생하더라도 다른 암호화 알고리즘으로 대체하여 보안을 유지할 수 있다.

5. 응용

Poly1305는 구글RC4를 대체하기 위해 제안한 ChaCha20-Poly1305 조합의 일부로 사용된다. 구글 크롬 및 구글 웹 서비스에서 TLS/SSL 통신(https)에 사용되고 있으며, IETF RFC 7905로 표준화되었다.[13] OpenSSH에도 `chacha20-poly1305@openssh.com`으로 채택되어 OpenSSL 의존성을 줄였다.[14][15][16] NaCl 암호화에서는 메시지별 키 스트림을 생성하고, Poly1305를 일회용 인증자로 사용한다.[6]

5. 1. 전송 계층 보안 (TLS)

구글(Google)은 대칭키 암호로 ChaCha20, 메시지 인증 코드로 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안했으며, 구글 크롬(Google Chrome) 및 구글의 웹 서비스에서 TLS/SSL 통신(https)에 ChaCha20-Poly1305가 구현되어 있다[13]。TLS/SSL에서의 ChaCha20/Poly1305의 사용은 IETF RFC 7905로 표준화되었다.

구글의 TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 chacha20-poly1305@openssh.com으로 OpenSSH에 채택되었다[14][15]。이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다[16]

5. 2. Secure Shell (SSH)

구글TLS 채용에 이어 ChaCha20과 Poly1305의 조합은 `chacha20-poly1305@openssh.com`으로 OpenSSH에 채택되었다.[14][15] 이에 따라 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다.[16]

5. 3. NaCl

NaCl 암호화는 메시지 번호 i와 XSalsa20 스트림 암호를 사용하여 메시지별 키 스트림을 생성하며, 이 키 스트림의 처음 32바이트는 일회용 Poly1305 키 (r_i, s_i)로 사용되고 나머지는 메시지 암호화에 사용된다. 그런 다음 Poly1305를 메시지의 암호문에 대한 일회용 인증자로 사용한다.[6]

NaCl에서는 AES 대신 Salsa20이 사용된다.

6. 구현체

Poly1305를 지원하는 암호화 라이브러리는 다음과 같다.

라이브러리
보탄
바운시 캐슬
크립토++
Libgcrypt
libsodium
네틀
OpenSSL
LibreSSL
wolfCrypt
GnuTLS
mbed TLS
MatrixSSL


7. 성능

Poly1305-AES는 다양한 CPU에서 빠르게 계산할 수 있다. 설계자는 C 언어 및 C++(C++)에서의 참조 구현뿐만 아니라, 애슬론(Athlon), 펜티엄(Pentium), 파워PC(PowerPC), 울트라스파크(UltraSPARC)용 최적화 구현도 공개했다.

7. 1. 최적화 구현

Poly1305-AES는 다양한 CPU에서 빠르게 계산할 수 있다. 예를 들어 ''n'' 바이트 메시지의 경우, Athlon에서 3.1''n'' + 780 사이클 이하가 필요하다.[2]

저자는 애슬론(Athlon), 펜티엄 Pro/II/III/M, 파워PC(PowerPC), 울트라SPARC(UltraSPARC)에 대해 최적화된 소스 코드를 배포했으며, CC++(C++)로 작성된 최적화되지 않은 참조 구현퍼블릭 도메인 소프트웨어로 제공한다.[12]

참조

[1] 서적 Serious Cryptography: A Practical Introduction to Modern Encryption No Starch Press
[2] 학회 The Poly1305-AES message-authentication code https://cr.yp.to/pap[...] Springer 2005-03-29
[3] 서적 Algorithmic number theory: lattices, number fields, curves and cryptography https://cr.yp.to/pap[...] Cambridge University Press 2008-05-01
[4] 학술지 New Hash Functions and Their Use in Authentication and Set Equality
[5] 서적 A Graduate Course in Applied Cryptography https://crypto.stanf[...] 2020-01
[6] 기술 보고서 Cryptography in NaCl https://cr.yp.to/pap[...] 2009-03-10
[7] IETF ChaCha20 and Poly1305 for IETF Protocols 2015-05
[8] IETF ChaCha20 and Poly1305 for IETF Protocols 2018-06
[9] IETF ChaCha20-Poly1305 Cipher Suites for Transport Layer Security (TLS) 2016-06
[10] 학회 MMH: Software Message Authentication in the Gbit/Second Rates Springer
[11] 학회 Stronger security bounds for Wegman-Carter-Shoup authenticators https://cr.yp.to/pap[...] Springer 2005-02-27
[12] 웹사이트 A state-of-the-art message-authentication code https://cr.yp.to/mac[...]
[13] 뉴스 Google Swaps Out Crypto Ciphers in OpenSSL http://www.infosecur[...] InfoSecurity 2014-04-24
[14] 웹사이트 ssh/PROTOCOL.chacha20poly1305 http://bxr.su/OpenBS[...] 2013-12-02
[15] 웹사이트 OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein http://it.slashdot.o[...] Slashdot 2013-12-11
[16] 웹사이트 OpenSSH No Longer Has To Depend On OpenSSL http://it.slashdot.o[...] Slashdot 2014-04-30
[17] 웹사이트 The Poly1305-AES message-authentication code http://cr.yp.to/mac/[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com