2013-10-26 1 views
3

.NET에서 Microsoft 타원 곡선 지원의 제한 사항은 무엇입니까? System.Cryptography 네임 스페이스로 가능한 것만 언급하고 있습니다..NET에서 타원 곡선 지원은 무엇입니까? 내 곡선을 정의하거나 SEC 표준을 복제 할 수 있습니까?

해당 네임 스페이스를 사용하면 사용자 정의 커브를 구현할 수 있습니까? 아니면 프레임 워크에 하드 코딩 된 고유 한 하위 집합으로 제한 할 수 있습니까?

내가 특히 관심을 갖고있는 한 가지 커브는 secp256k1이지만, 내 자신을 제한하고 싶지는 않습니다.

왜 나는 Bouncy Castle을 사용하지 않고 Microsoft에만 중점을 둡니까? 그 이유는 Hash 함수의 Microsoft 구현이 Bouncy Castle보다 몇 배 빠르기 때문에 사용자 정의 타원 곡선 기반 암호화라고 생각합니다.

추가 커브에 대한 지원을 추가하거나 저수준 클래스를 작성하려면 레지스트리 또는 ini 파일을 업데이트해야합니까? 나는 단지 가능성과 한계가 무엇인지 알고 싶다.

+0

도움이 되셨습니까? http://bitcoin.stackexchange.com/questions/3875/which-programming-languages-support-secp256k1 – weston

+0

@weston 그 링크와이 링크가 참조하는 C# 코드를 보았습니다. 아니요, Bouncy Castle 구현 만 보여줍니다 ... EC- – LamonteCristo

+2

@ makerofthings7을 구현하기 위해 Microsoft 전용 라이브러리를 사용하는 데 관심이 있습니다. MS 전용 자료가 정말 가치가있는 경우 왜 그렇게 찾기 어려울까요? 제 3 자 라이브러리를 중심으로 * 다루지 않는 예가 있습니까? – cHao

답변

2

.NET에서 지원되는 유일한 곡선은 Suite B의 NIST에서 정의한 P-xxx 곡선입니다. 다른 곡선은 지원되지 않습니다. 따라서 CNG가 지원하지 않는 특정 NIST 비 프라임 곡선 (Koblitz 곡선)을 정의했습니다.

보다 정확하게는 ECDSA 및 ECDH 키의 경우 CNG only supports the following domain parameters입니다. 그들은 너무 "라는 곡선"에 사용하는 경우 이러한 매개 변수 만 지원됩니다

P-256, P-384, P-521

참고 : 나는이없는 등의 NDA 또는 Microsoft와 비슷하지만이 값이 하드 코딩되어 있는지 확인할 수는 없지만 그럴 가능성은 매우 높습니다.

+1

NSA는 모든 권장 곡선을 '백도어'했습니다. . 사용하지 마십시오. – RedHotScalability

+0

@RedHotScalability FUD를 확산시키지 마십시오. 아무도 현재 매개 변수가 어떻게 악용 될 수 있는지를 알 수있는 방법을 찾지 못했습니다. 난수 생성은 다소 의심 스럽기 때문에 [안전 곡선] (http://safecurves.cr.yp.to)을 사용하는 것이 좋습니다. 우리가 backdoor'ed 될 확신이있는 유일한 것은 이중 EC * 난수 생성기 *입니다. –

관련 문제