From: Arnd Bergmann <arnd@arndb.de>
To: John Calixto <john.calixto@modsystems.com>
Cc: linux-mmc@vger.kernel.org, cjb@laptop.org
Subject: Re: [PATCH resend] mmc: Added ioctl to let userspace apps send ACMD
Date: Sat, 19 Mar 2011 12:52:49 +0100 [thread overview]
Message-ID: <201103191252.49490.arnd@arndb.de> (raw)
In-Reply-To: <alpine.DEB.2.00.1103181332310.6084@peruna>
On Friday 18 March 2011, John Calixto wrote:
> On Fri, 18 Mar 2011, Arnd Bergmann wrote:
> > On Friday 18 March 2011 18:32:41 John Calixto wrote:
> > > I started down that route, but part of the problem with putting any more
> > > than a simple passthrough in kernel space is that the CPRM algorithms
> > > live in the next highest logic layer, and 4C licensees are not allowed
> > > to reveal those algorithms. If you have access to the SD Specification,
> > > you will see that it documents all of the individual security commands.
> > > However, the sequence of commands is documented in the 4C CPRM
> > > Specification.
> >
> > Implementing this without revealing the algorithm is hardly possible:
> > As soon as there is an implementation in binary form, someone can
> > reverse-engineer and document it, and then we can write a proper
> > implementation in the kernel. The question is whether we can skip
> > this detour and get the correct implementation right-away ;-)
> >
>
> Certainly, physical access to any device makes reverse engineering of
> any of these 'security' techniques possible to anyone with time and
> patience. That said, I am not in a position to help with this - Sorry!
I understand your problem.
> > Since you have already signed an NDA, you can obviously not
> > send the implementation for this, but someone else could
> > fill in the blanks.
> >
> > > Installing this passthrough also has the added benefit of allowing
> > > other, non-security-related, application specific commands to be sent.
> >
> > Yes, I understand that part, and I think that's good, although
> > it would still be better to do the CPRM stuff in the kernel,
> > as I said.
> >
>
> This is a matter to take up with the 4C. Looking at the rest of the
> MMC/SD code in the kernel, it appears that somebody with access to the
> SD specs got permission to implement what we have now. Perhaps they
> could help with filling in the blanks? IANAL, so the patch I am
> submitting does not include proprietary elements. However, it does
> allow anyone with access to the specs a way to use what they know.
Many of the SD specifications have redacted versions that allow
us to write OS drivers. For instance there is
http://www.sdcard.org/developers//tech/sdcard/pls/simplified_specs/Part_A1_ASSD_Extension_Simplified_Specification_Ver2.00_Final_100518.pdf
that describes some of the "advanced security SD" card
> > I guess that would be better. You cannot really stop the kernel
> > from issuing block commands on a mounted file system from user
> > space, which appears to be required here.
> >
>
> Actually, I got ahead of myself in my initial response. I believe I
> already protected against concurrent access with mmc_claim_host().
Ok, so is the protocol designed in a way that you don't need to
mmc_claim_host() across multiple ACMDs to do CPRM?
> > You may get into a situation where the card is owned by the
> > program that needs to complete talking to it before the kernel
> > can do more block commands, but the program cannot continue until
> > the block driver reads back the program .text section from the
> > card.
> >
>
> Having used mmc_claim_host() (see my previous comment above), the ioctl
> should complete before the kernel gets a chance to page the program out
> shouldn't it?
Right. But is that enough? The qeustion is whether the card may be
in a state where it's expecting another ACMD after the first ioctl
and cannot deal with regular block commands.
> The patch is only for ACMDs for now. When calling the ioctl with
> cmd=SD_IOC_ACMD, it implies you expect CMD55 to be sent *before* sending
> your command. There are specs that describe the values and behaviours
> of ACMDs. You'll find that the SD card's state machine is pretty
> resilient, and that apps that are messing with tossing garbage ACMDs in
> should expect garbage back out.
>
> I expect for more general purposes, like your qemu passthrough case, you
> would want to add a handler for cmd=SD_IOC_CMD?
Yes, but I suspect that would mean blocking all other activity on the
same device, possibly with an ioctl for claiming the host for an
extended period of time.
Arnd
next prev parent reply other threads:[~2011-03-19 11:52 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-17 18:28 [PATCH resend] mmc: Added ioctl to let userspace apps send ACMDs John Calixto
2011-03-17 18:35 ` Ben Dooks
2011-03-17 21:55 ` Arnd Bergmann
2011-03-18 17:32 ` John Calixto
2011-03-18 17:56 ` Michał Mirosław
2011-03-18 19:26 ` Arnd Bergmann
2011-03-19 17:36 ` Michał Mirosław
2011-03-19 19:00 ` Arnd Bergmann
2011-03-21 18:37 ` John Calixto
2011-03-21 23:16 ` Michał Mirosław
2011-03-22 22:31 ` John Calixto
2011-03-23 0:18 ` Michał Mirosław
2011-03-23 0:44 ` John Calixto
2011-03-23 7:57 ` Arnd Bergmann
2011-03-18 19:25 ` Arnd Bergmann
2011-03-18 22:06 ` [PATCH resend] mmc: Added ioctl to let userspace apps send ACMD John Calixto
2011-03-19 11:52 ` Arnd Bergmann [this message]
2011-03-20 2:12 ` John Calixto
2011-03-20 5:11 ` Michał Mirosław
2011-03-21 12:25 ` Arnd Bergmann
2011-03-21 14:26 ` Andrei Warkentin
2011-03-21 18:22 ` John Calixto
2011-03-19 0:24 ` [PATCH resend] mmc: Added ioctl to let userspace apps send ACMDs John Calixto
2011-03-19 9:42 ` Arnd Bergmann
2011-03-19 16:09 ` Chris Ball
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201103191252.49490.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=cjb@laptop.org \
--cc=john.calixto@modsystems.com \
--cc=linux-mmc@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox